123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- from django.contrib.auth.models import Permission
- from django.urls import reverse
- from django.utils.translation import ugettext_lazy as _
- from wagtail.admin.menu import MenuItem, SubmenuMenuItem, settings_menu
- from wagtail.admin.navigation import get_explorable_root_page
- from wagtail.admin.rich_text import (
- HalloFormatPlugin, HalloHeadingPlugin, HalloListPlugin, HalloPlugin)
- from wagtail.admin.search import SearchArea
- from wagtail.admin.utils import user_has_any_page_permission
- from wagtail.admin.viewsets import viewsets
- from wagtail.admin.widgets import Button, ButtonWithDropdownFromHook, PageListingButton
- from wagtail.core import hooks
- from wagtail.core.permissions import collection_permission_policy
- class ExplorerMenuItem(MenuItem):
- template = 'wagtailadmin/shared/explorer_menu_item.html'
- def is_shown(self, request):
- return user_has_any_page_permission(request.user)
- def get_context(self, request):
- context = super(ExplorerMenuItem, self).get_context(request)
- start_page = get_explorable_root_page(request.user)
- if start_page:
- context['start_page_id'] = start_page.id
- return context
- @hooks.register('register_admin_menu_item')
- def register_explorer_menu_item():
- return ExplorerMenuItem(
- _('Pages'), reverse('wagtailadmin_explore_root'),
- name='explorer',
- classnames='icon icon-folder-open-inverse',
- order=100)
- class SettingsMenuItem(SubmenuMenuItem):
- template = 'wagtailadmin/shared/menu_settings_menu_item.html'
- @hooks.register('register_admin_menu_item')
- def register_settings_menu():
- return SettingsMenuItem(
- _('Settings'), settings_menu, classnames='icon icon-cogs', order=10000)
- @hooks.register('register_permissions')
- def register_permissions():
- return Permission.objects.filter(content_type__app_label='wagtailadmin', codename='access_admin')
- class PageSearchArea(SearchArea):
- def __init__(self):
- super(PageSearchArea, self).__init__(
- _('Pages'), reverse('wagtailadmin_pages:search'),
- name='pages',
- classnames='icon icon-folder-open-inverse',
- order=100)
- def is_shown(self, request):
- return user_has_any_page_permission(request.user)
- @hooks.register('register_admin_search_area')
- def register_pages_search_area():
- return PageSearchArea()
- class CollectionsMenuItem(MenuItem):
- def is_shown(self, request):
- return collection_permission_policy.user_has_any_permission(
- request.user, ['add', 'change', 'delete']
- )
- @hooks.register('register_settings_menu_item')
- def register_collections_menu_item():
- return CollectionsMenuItem(_('Collections'), reverse('wagtailadmin_collections:index'), classnames='icon icon-folder-open-1', order=700)
- @hooks.register('register_page_listing_buttons')
- def page_listing_buttons(page, page_perms, is_parent=False):
- if page_perms.can_edit():
- yield PageListingButton(
- _('Edit'),
- reverse('wagtailadmin_pages:edit', args=[page.id]),
- attrs={'title': _("Edit '{title}'").format(title=page.get_admin_display_title())},
- priority=10
- )
- if page.has_unpublished_changes:
- yield PageListingButton(
- _('View draft'),
- reverse('wagtailadmin_pages:view_draft', args=[page.id]),
- attrs={'title': _("Preview draft version of '{title}'").format(title=page.get_admin_display_title()), 'target': '_blank'},
- priority=20
- )
- if page.live and page.url:
- yield PageListingButton(
- _('View live'),
- page.url,
- attrs={'target': "_blank", 'title': _("View live version of '{title}'").format(title=page.get_admin_display_title())},
- priority=30
- )
- if page_perms.can_add_subpage():
- if is_parent:
- yield Button(
- _('Add child page'),
- reverse('wagtailadmin_pages:add_subpage', args=[page.id]),
- attrs={'title': _("Add a child page to '{title}' ").format(title=page.get_admin_display_title())},
- classes={'button', 'button-small', 'bicolor', 'icon', 'white', 'icon-plus'},
- priority=40
- )
- else:
- yield PageListingButton(
- _('Add child page'),
- reverse('wagtailadmin_pages:add_subpage', args=[page.id]),
- attrs={'title': _("Add a child page to '{title}' ").format(title=page.get_admin_display_title())},
- priority=40
- )
- yield ButtonWithDropdownFromHook(
- _('More'),
- hook_name='register_page_listing_more_buttons',
- page=page,
- page_perms=page_perms,
- is_parent=is_parent,
- attrs={'target': '_blank', 'title': _("View more options for '{title}'").format(title=page.get_admin_display_title())},
- priority=50
- )
- @hooks.register('register_page_listing_more_buttons')
- def page_listing_more_buttons(page, page_perms, is_parent=False):
- if page_perms.can_move():
- yield Button(
- _('Move'),
- reverse('wagtailadmin_pages:move', args=[page.id]),
- attrs={"title": _("Move page '{title}'").format(title=page.get_admin_display_title())},
- priority=10
- )
- if not page.is_root():
- yield Button(
- _('Copy'),
- reverse('wagtailadmin_pages:copy', args=[page.id]),
- attrs={'title': _("Copy page '{title}'").format(title=page.get_admin_display_title())},
- priority=20
- )
- if page_perms.can_delete():
- yield Button(
- _('Delete'),
- reverse('wagtailadmin_pages:delete', args=[page.id]),
- attrs={'title': _("Delete page '{title}'").format(title=page.get_admin_display_title())},
- priority=30
- )
- if page_perms.can_unpublish():
- yield Button(
- _('Unpublish'),
- reverse('wagtailadmin_pages:unpublish', args=[page.id]),
- attrs={'title': _("Unpublish page '{title}'").format(title=page.get_admin_display_title())},
- priority=40
- )
- if not page.is_root():
- yield Button(
- _('Revisions'),
- reverse('wagtailadmin_pages:revisions_index', args=[page.id]),
- attrs={'title': _("View revision history for '{title}'").format(title=page.get_admin_display_title())},
- priority=50
- )
- @hooks.register('register_admin_urls')
- def register_viewsets_urls():
- viewsets.populate()
- return viewsets.get_urlpatterns()
- @hooks.register('register_rich_text_features')
- def register_core_features(features):
- features.register_editor_plugin(
- 'hallo', 'hr',
- HalloPlugin(
- name='hallohr',
- js=['wagtailadmin/js/hallo-plugins/hallo-hr.js'],
- order=45,
- )
- )
- features.default_features.append('hr')
- features.register_editor_plugin(
- 'hallo', 'link',
- HalloPlugin(
- name='hallowagtaillink',
- js=['wagtailadmin/js/hallo-plugins/hallo-wagtaillink.js'],
- )
- )
- features.default_features.append('link')
- features.register_editor_plugin(
- 'hallo', 'bold', HalloFormatPlugin(format_name='bold')
- )
- features.default_features.append('bold')
- features.register_editor_plugin(
- 'hallo', 'italic', HalloFormatPlugin(format_name='italic')
- )
- features.default_features.append('italic')
- for element in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']:
- features.register_editor_plugin(
- 'hallo', element, HalloHeadingPlugin(element=element)
- )
- features.default_features.extend(['h2', 'h3', 'h4'])
- features.register_editor_plugin(
- 'hallo', 'ol', HalloListPlugin(list_type='ordered')
- )
- features.default_features.append('ol')
- features.register_editor_plugin(
- 'hallo', 'ul', HalloListPlugin(list_type='unordered')
- )
- features.default_features.append('ul')
|