8000 Remove Publish button from the toolbar by Aiky30 · Pull Request #6414 · django-cms/django-cms · GitHub
[go: up one dir, main page]

Skip to content

Remove Publish button from the toolbar #6414

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 14, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 1 addition & 43 deletions cms/cms_toolbars.py
10000
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from cms.api import get_page_draft, can_change_page
from cms.constants import TEMPLATE_INHERITANCE_MAGIC, PUBLISHER_STATE_PENDING
from cms.models import Placeholder, Title, Page, PageType, StaticPlaceholder
from cms.toolbar.items import ButtonList, TemplateItem, REFRESH_PAGE
from cms.toolbar.items import TemplateItem, REFRESH_PAGE
from cms.toolbar_base import CMSToolbar
from cms.toolbar_pool import toolbar_pool
from cms.utils import get_language_from_request, page_permissions
Expand Down Expand Up @@ -355,7 +355,6 @@ def populate(self):
def post_template_populate(self):
self.init_placeholders()
self.add_draft_live()
self.add_publish_button()
self.add_structure_mode()

def has_dirty_objects(self):
Expand All @@ -375,11 +374,6 @@ def has_dirty_objects(self):

# Buttons

def add_publish_button(self, classes=('cms-btn-action', 'cms-btn-publish',)):
if self.user_can_publish():
button = self.get_publish_button(classes=classes)
self.toolbar.add_item(button)

def user_can_publish(self):
if self.page and self.page.is_page_type:
# By design, page-types are not publishable.
Expand All @@ -389,42 +383,6 @@ def user_can_publish(self):
return False
return self.has_publish_permission() and self.has_dirty_objects()

def get_publish_button(self, classes=None):
dirty = self.has_dirty_objects()
classes = list(classes or [])

if dirty and 'cms-btn-publish-active' not in classes:
classes.append('cms-btn-publish-active')

if self.dirty_statics or (self.page and self.page.is_published(self.current_lang)):
title = _('Publish page changes')
else:
title = _('Publish page now')
classes.append('cms-publish-page')

item = ButtonList(side=self.toolbar.RIGHT)
item.add_button(
title,
url=self.get_publish_url(),
disabled=not dirty,
extra_classes=classes,
)
return item

def get_publish_url(self):
pk = self.page.pk if self.page else 0
params = {}

if self.dirty_statics:
params['statics'] = ','.join(str(sp.pk) for sp in self.dirty_statics)

if self.in_apphook():
params['redirect'] = self.toolbar.request_path

with force_language(self.current_lang):
url = admin_reverse('cms_page_publish_page', args=(pk, self.current_lang))
return add_url_parameters(url, params)

def add_draft_live(self):
if self.page:
if self.toolbar.edit_mode_active and not self.title:
Expand Down
40 changes: 0 additions & 40 deletions cms/tests/test_toolbar.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
from cms.cms_toolbars import (ADMIN_MENU_IDENTIFIER, ADMINISTRATION_BREAK, get_user_model,
LANGUAGE_MENU_IDENTIFIER)
from cms.middleware.toolbar import ToolbarMiddleware
from cms.constants import PUBLISHER_STATE_DIRTY
from cms.models import Page, UserSettings, PagePermission
from cms.test_utils.project.placeholderapp.models import (Example1, CharPksExample,
MultilingualExample1)
Expand Down Expand Up @@ -644,45 +643,6 @@ def test_show_toolbar_without_edit(self):
toolbar = CMSToolbar(request)
self.assertFalse(toolbar.show_toolbar)

def test_publish_button(self):
page = create_page('test', 'nav_playground.html', 'en', published=True)
# Needed because publish button only shows if the page is dirty
page.set_publisher_state('en', state=PUBLISHER_STATE_DIRTY)

request = self.get_page_request(page, self.get_superuser(), edit=True)
toolbar = CMSToolbar(request)
toolbar.populate()
toolbar.post_template_populate()
self.assertTrue(toolbar.edit_mode_active)
items = toolbar.get_left_items() + toolbar.get_right_items()
self.assertEqual(len(items), 7)

def test_no_publish_button(self):
page = create_page('test', 'nav_playground.html', 'en', published=True)
user = self.get_staff()
request = self.get_page_request(page, user, edit=True)
toolbar = CMSToolbar(request)
toolbar.populate()
toolbar.post_template_populate()
self.assertTrue(page.has_change_permission(request.user))
self.assertFalse(page.has_publish_permission(request.user))
self.assertTrue(toolbar.edit_mode_active)
items = toolbar.get_left_items() + toolbar.get_right_items()
# Logo + templates + page-menu + admin-menu + logout
self.assertEqual(len(items), 5)

# adding back structure mode permission
permission = Permission.objects.get(codename='use_structure')
user.user_permissions.add(permission)

request.user = get_user_model().objects.get(pk=user.pk)
toolbar = CMSToolbar(request)
toolbar.populate()
toolbar.post_template_populate()
items = toolbar.get_left_items() + toolbar.get_right_items()
# Logo + edit mode + templates + page-menu + admin-menu + logout
self.assertEqual(len(items), 6)

def test_no_change_button(self):
page = create_page('test', 'nav_playground.html', 'en', published=True)
user = self.get_staff()
Expand Down
0