Skip to content

Commit d9904a6

Browse files
authored
Merge 9f4168c into f572e38
2 parents f572e38 + 9f4168c commit d9904a6

File tree

2 files changed

+35
-11
lines changed

2 files changed

+35
-11
lines changed

cms/cms_toolbars.py

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from cms.api import can_change_page
1515
from cms.constants import TEMPLATE_INHERITANCE_MAGIC
16-
from cms.models import Page, PageType, Placeholder
16+
from cms.models import Page, PageContent, PageType, Placeholder
1717
from cms.toolbar.items import REFRESH_PAGE, ButtonList, TemplateItem
1818
from 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,

cms/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,8 @@ def render_object_structure(request, content_type_id, object_id):
256256
'object': content_type_obj,
257257
'cms_toolbar': request.toolbar,
258258
}
259+
if isinstance(content_type_obj, PageContent):
260+
request.current_page = content_type_obj.page
259261
toolbar = get_toolbar_from_request(request)
260262
toolbar.set_object(content_type_obj)
261263
return render(request, 'cms/toolbar/structure.html', context)

0 commit comments

Comments
 (0)