@@ -338,12 +338,12 @@ def override_language_menu(self):
338338 language_menu .add_link_item (name , url = url , active = self .current_lang == code )
339339
340340 def change_language_menu (self ):
341- if self .toolbar .edit_mode_active and self .page :
342- can_change = page_permissions .user_can_change_page (
341+ can_change = (
342+ self .page
343+ and page_permissions .user_can_change_page (
343344 user = self .request .user , page = self .page , site = self .current_site
344345 )
345- else :
346- can_change = False
346+ )
347347
348348 language_menu = self .toolbar .get_menu (LANGUAGE_MENU_IDENTIFIER )
349349 if not language_menu :
@@ -355,7 +355,9 @@ def change_language_menu(self):
355355 copy = [
356356 (code , name ) for code , name in languages .items () if code != self .current_lang and (code , name ) in remove
357357 ]
358- if add :
358+
359+ # ADD TRANSLATION — only if user has change permission
360+ if can_change and add :
359361 language_menu .add_break (ADD_PAGE_LANGUAGE_BREAK )
360362
361363 add_plugins_menu = language_menu .get_or_create_menu (f"{ LANGUAGE_MENU_IDENTIFIER } -add" , _ ("Add Translation" ))
@@ -365,7 +367,9 @@ def change_language_menu(self):
365367 for code , name in add :
366368 url = add_url_parameters (page_add_url , cms_page = self .page .pk , language = code )
367369 add_plugins_menu .add_modal_item (name , url = url )
368- if remove and ALLOW_DELETING_VERSIONS and CMS_SUPPORTS_DELETING_TRANSLATIONS : # fabian why?
370+
371+ # DELETE TRANSLATION — only if user has change permission
372+ if can_change and remove and ALLOW_DELETING_VERSIONS and CMS_SUPPORTS_DELETING_TRANSLATIONS : # fabian why?
369373 remove_plugins_menu = language_menu .get_or_create_menu (
370374 f"{ LANGUAGE_MENU_IDENTIFIER } -del" , _ ("Delete Translation" )
371375 )
@@ -386,8 +390,9 @@ def change_language_menu(self):
386390 None ,
387391 )
388392 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 :
393+ remove_plugins_menu .add_modal_item (name , url = url , disabled = disabled , on_close = on_close )
394+ # COPY ALL PLUGINS — only if user can change AND in edit mode
395+ if can_change and self .toolbar .edit_mode_active and copy :
391396 copy_plugins_menu = language_menu .get_or_create_menu (
392397 f"{ LANGUAGE_MENU_IDENTIFIER } -copy" , _ ("Copy all plugins" )
393398 )
0 commit comments