1313
1414from cms .api import can_change_page
1515from cms .constants import TEMPLATE_INHERITANCE_MAGIC
16- from cms .models import Page , PageType , Placeholder
16+ from cms .models import Page , PageContent , PageType , Placeholder
1717from cms .toolbar .items import REFRESH_PAGE , ButtonList , TemplateItem
1818from cms .toolbar .utils import (
1919 get_object_edit_url ,
@@ -383,6 +383,11 @@ class PageToolbar(CMSToolbar):
383383 watch_models = [Page , PageType ]
384384
385385 def get_page_content (self ):
386+ if not getattr (self , "page" , None ):
387+ return None
388+ if hasattr (self , "obj" ) and isinstance (self .obj , PageContent ):
389+ # Toolbar object already set (e.g., in edit or preview mode)
390+ return self .obj
386391 page_content = self .page .get_content_obj (language = self .current_lang , fallback = False )
387392 return page_content or None
388393
@@ -428,11 +433,28 @@ def get_on_delete_redirect_url(self):
428433 # page, if DEBUG == False this could cause a 404
429434 return reverse ('pages-root' )
430435
431- # Populate
436+ @property
437+ def title (self ):
438+ import warnings
439+
440+ warnings .warn (
441+ "Title property of PageToolbar will be removed. Use page_content property instead." ,
442+ DeprecationWarning , stacklevel = 2 )
443+ return self .page_content
444+
445+ @title .setter
446+ def title (self , page_content ):
447+ import warnings
432448
449+ warnings .warn (
450+ "Title property of PageToolbar will be removed. Use page_content property instead." ,
451+ DeprecationWarning , stacklevel = 2 )
452+ self .page_content = page_content
453+
454+ # Populate
433455 def populate (self ):
434456 self .page = self .request .current_page
435- self .title = self .get_page_content () if self . page else None
457+ self .page_content = self .get_page_content ()
436458 self .permissions_activated = get_cms_setting ('PERMISSION' )
437459 self .change_admin_menu ()
438460 self .add_page_menu ()
@@ -526,7 +548,7 @@ def change_admin_menu(self):
526548 self ._changed_admin_menu = True
527549
528550 def add_page_menu (self ):
529- if self .page and self .title :
551+ if self .page and self .page_content :
530552 edit_mode = self .toolbar .edit_mode_active
531553 refresh = self .toolbar .REFRESH_PAGE
532554 can_change = user_can_change_page (
@@ -548,8 +570,8 @@ def add_page_menu(self):
548570
549571 add_page_url = admin_reverse ('cms_pagecontent_add' )
550572 advanced_url = admin_reverse ('cms_page_advanced' , args = (self .page .pk ,))
551- page_settings_url = admin_reverse ('cms_pagecontent_change' , args = (self .title .pk ,))
552- duplicate_page_url = admin_reverse ('cms_pagecontent_duplicate' , args = [self .title .pk ])
573+ page_settings_url = admin_reverse ('cms_pagecontent_change' , args = (self .page_content .pk ,))
574+ duplicate_page_url = admin_reverse ('cms_pagecontent_duplicate' , args = [self .page_content .pk ])
553575
554576 can_add_root_page = page_permissions .user_can_add_page (
555577 user = self .request .user ,
@@ -600,7 +622,7 @@ def add_page_menu(self):
600622
601623 # page edit
602624 with force_language (self .current_lang ):
603- page_edit_url = get_object_edit_url (self .title ) if self .title else ''
625+ page_edit_url = get_object_edit_url (self .page_content ) if self .page_content else ''
604626 current_page_menu .add_link_item (_ ('Edit this Page' ), disabled = edit_mode , url = page_edit_url )
605627
606628 # page settings
@@ -617,7 +639,7 @@ def add_page_menu(self):
617639
618640 # templates menu
619641 if edit_mode :
620- action = admin_reverse ('cms_pagecontent_change_template' , args = (self .title .pk ,))
642+ action = admin_reverse ('cms_pagecontent_change_template' , args = (self .page_content .pk ,))
621643
622644 if can_change_advanced :
623645 templates_menu = current_page_menu .get_or_create_menu (
@@ -627,16 +649,16 @@ def add_page_menu(self):
627649 )
628650
629651 for path , name in get_cms_setting ('TEMPLATES' ):
630- active = self .page .template == path
652+ active = self .page_content .template == path
631653 if path == TEMPLATE_INHERITANCE_MAGIC :
632654 templates_menu .add_break (TEMPLATE_MENU_BREAK )
633655 templates_menu .add_ajax_item (name , action = action , data = {'template' : path }, active = active ,
634656 on_success = refresh )
635657
636658 # navigation toggle
637- in_navigation = self .title .in_navigation
659+ in_navigation = self .page_content .in_navigation
638660 nav_title = _ ('Hide in navigation' ) if in_navigation else _ ('Display in navigation' )
639- nav_action = admin_reverse ('cms_pagecontent_change_innavigation' , args = (self .title .pk ,))
661+ nav_action = admin_reverse ('cms_pagecontent_change_innavigation' , args = (self .page_content .pk ,))
640662 current_page_menu .add_ajax_item (
641663 nav_title ,
642664 action = nav_action ,
0 commit comments