@@ -345,80 +345,74 @@ def change_language_menu(self):
345345 else :
346346 can_change = False
347347
348- if can_change :
349- language_menu = self .toolbar .get_menu (LANGUAGE_MENU_IDENTIFIER )
350- if not language_menu :
351- return None
352-
353- languages = get_language_dict (self .current_site .pk )
354- remove = [(code , languages .get (code , code )) for code in self .page .get_languages () if code in languages ]
355- add = [code for code in languages .items () if code not in remove ]
356- copy = [
357- (code , name ) for code , name in languages .items () if code != self .current_lang and (code , name ) in remove
358- ]
359-
360- if add :
361- language_menu .add_break (ADD_PAGE_LANGUAGE_BREAK )
362-
363- add_plugins_menu = language_menu .get_or_create_menu (
364- f"{ LANGUAGE_MENU_IDENTIFIER } -add" , _ ("Add Translation" )
365- )
366-
367- page_add_url = admin_reverse ("cms_pagecontent_add" )
368-
369- for code , name in add :
370- url = add_url_parameters (page_add_url , cms_page = self .page .pk , language = code )
371- add_plugins_menu .add_modal_item (name , url = url )
372-
373- if remove and ALLOW_DELETING_VERSIONS and CMS_SUPPORTS_DELETING_TRANSLATIONS :
374- remove_plugins_menu = language_menu .get_or_create_menu (
375- f"{ LANGUAGE_MENU_IDENTIFIER } -del" , _ ("Delete Translation" )
376- )
377- disabled = len (remove ) == 1
378- for code , name in remove :
379- pagecontent = self .page .get_admin_content (language = code )
380- if pagecontent :
381- translation_delete_url = admin_reverse ("cms_pagecontent_delete" , args = (pagecontent .pk ,))
382- url = add_url_parameters (translation_delete_url , language = code )
383- on_close = REFRESH_PAGE
384- if self .toolbar .get_object () == pagecontent and not disabled :
385- other_content = next (
386- (
387- self .page .get_admin_content (lang )
388- for lang in self .page .get_languages ()
389- if lang != pagecontent .language and lang in languages
390- ),
391- None ,
392- )
393- on_close = get_object_preview_url (other_content )
394- remove_plugins_menu .add_modal_item (name , url = url , disabled = disabled , on_close = on_close )
395-
396- if copy :
397- copy_plugins_menu = language_menu .get_or_create_menu (
398- f"{ LANGUAGE_MENU_IDENTIFIER } -copy" , _ ("Copy all plugins" )
399- )
400- title = _ ("from %s" )
401- question = _ ("Are you sure you want to copy all plugins from %s?" )
402- item_added = False
403- for code , name in copy :
404- # Get the Draft or Published PageContent.
405- page_content = self .page .get_admin_content (language = code )
406- if page_content : # Only offer to copy if content for source language exists
407- page_copy_url = admin_reverse ("cms_pagecontent_copy_language" , args = (page_content .pk ,))
408- copy_plugins_menu .add_ajax_item (
409- title % name ,
410- action = page_copy_url ,
411- data = {"source_language" : code , "target_language" : self .current_lang },
412- question = question % name ,
413- on_success = self .toolbar .REFRESH_PAGE ,
414- )
415- item_added = True
416- if not item_added : # pragma: no cover
417- copy_plugins_menu .add_link_item (
418- _ ("No other language available" ),
419- url = "#" ,
420- disabled = True ,
348+ language_menu = self .toolbar .get_menu (LANGUAGE_MENU_IDENTIFIER )
349+ if not language_menu :
350+ return None
351+
352+ languages = get_language_dict (self .current_site .pk )
353+ remove = [(code , languages .get (code , code )) for code in self .page .get_languages () if code in languages ]
354+ add = [code for code in languages .items () if code not in remove ]
355+ copy = [
356+ (code , name ) for code , name in languages .items () if code != self .current_lang and (code , name ) in remove
357+ ]
358+ if add :
359+ language_menu .add_break (ADD_PAGE_LANGUAGE_BREAK )
360+
361+ add_plugins_menu = language_menu .get_or_create_menu (f"{ LANGUAGE_MENU_IDENTIFIER } -add" , _ ("Add Translation" ))
362+
363+ page_add_url = admin_reverse ("cms_pagecontent_add" )
364+
365+ for code , name in add :
366+ url = add_url_parameters (page_add_url , cms_page = self .page .pk , language = code )
367+ add_plugins_menu .add_modal_item (name , url = url )
368+ if remove and ALLOW_DELETING_VERSIONS and CMS_SUPPORTS_DELETING_TRANSLATIONS : # fabian why?
369+ remove_plugins_menu = language_menu .get_or_create_menu (
370+ f"{ LANGUAGE_MENU_IDENTIFIER } -del" , _ ("Delete Translation" )
371+ )
372+ disabled = len (remove ) == 1
373+ for code , name in remove :
374+ pagecontent = self .page .get_admin_content (language = code )
375+ if pagecontent :
376+ translation_delete_url = admin_reverse ("cms_pagecontent_delete" , args = (pagecontent .pk ,))
377+ url = add_url_parameters (translation_delete_url , language = code )
378+ on_close = REFRESH_PAGE
379+ if self .toolbar .get_object () == pagecontent and not disabled :
380+ other_content = next (
381+ (
382+ self .page .get_admin_content (lang )
383+ for lang in self .page .get_languages ()
384+ if lang != pagecontent .language and lang in languages
385+ ),
386+ None ,
421387 )
388+ on_close = get_object_preview_url (other_content )
389+ remove_plugins_menu .add_modal_item (name , url = url , disabled = disabled , on_close = on_close )
390+ if can_change and copy :
391+ copy_plugins_menu = language_menu .get_or_create_menu (
392+ f"{ LANGUAGE_MENU_IDENTIFIER } -copy" , _ ("Copy all plugins" )
393+ )
394+ title = _ ("from %s" )
395+ question = _ ("Are you sure you want to copy all plugins from %s?" )
396+ item_added = False
397+ for code , name in copy :
398+ # Get the Draft or Published PageContent.
399+ page_content = self .page .get_admin_content (language = code )
400+ if page_content : # Only offer to copy if content for source language exists
401+ page_copy_url = admin_reverse ("cms_pagecontent_copy_language" , args = (page_content .pk ,))
402+ copy_plugins_menu .add_ajax_item (
403+ title % name ,
404+ action = page_copy_url ,
405+ data = {"source_language" : code , "target_language" : self .current_lang },
406+ question = question % name ,
407+ on_success = self .toolbar .REFRESH_PAGE ,
408+ )
409+ item_added = True
410+ if not item_added : # pragma: no cover
411+ copy_plugins_menu .add_link_item (
412+ _ ("No other language available" ),
413+ url = "#" ,
414+ disabled = True ,
415+ )
422416
423417
424418class VersioningBasicToolbar (BasicToolbar ):
@@ -434,13 +428,9 @@ def add_language_menu(self):
434428 return
435429
436430 languages = get_language_tuple (self .current_site .pk )
437- page_languages = self .request .current_page .get_languages ()
438431 if len (languages ) < 2 :
439432 return # No need to show the language menu if there is only one language
440433
441- if len (page_languages ) < 2 :
442- return # No need to show language menu if current page has one language
443-
444434 language_menu = self .toolbar .get_or_create_menu (LANGUAGE_MENU_IDENTIFIER , _ ("Languages" ), position = - 1 )
445435 for code , name in languages :
446436 # Get the page content, it could be draft too!
0 commit comments