def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        if user_can_change_page(self.request.user, page=self.page):
            try:
                mytitleextension = MyTitleExtension.objects.get(
                    extended_object_id=self.page.id)
            except MyTitleExtension.DoesNotExist:
                mytitleextension = None
            try:
                if mytitleextension:
                    url = admin_reverse('extensionapp_mytitleextension_change',
                                        args=(mytitleextension.pk, ))
                else:
                    url = admin_reverse(
                        'extensionapp_mytitleextension_add'
                    ) + '?extended_object=%s' % self.page.pk
            except NoReverseMatch:
                # not in urls
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode
                current_page_menu = self.toolbar.get_or_create_menu('page')
                current_page_menu.add_modal_item(_('Title Extension'),
                                                 url=url,
                                                 disabled=not_edit_mode)
Exemple #2
0
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        if user_can_change_page(self.request.user, page=self.page):
            try:
                mypageextension = MyPageExtension.objects.get(extended_object_id=self.page.id)
            except MyPageExtension.DoesNotExist:
                mypageextension = None
            try:
                if mypageextension:
                    url = admin_reverse('extensionapp_mypageextension_change', args=(mypageextension.pk,))
                else:
                    url = admin_reverse('extensionapp_mypageextension_add') + '?extended_object=%s' % self.page.pk
            except NoReverseMatch:
                # not in urls
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode
                current_page_menu = self.toolbar.get_or_create_menu('page')
                current_page_menu.add_modal_item(_('Page Extension'), url=url, disabled=not_edit_mode)
Exemple #3
0
    def populate(self):
        self.current_site = Site.objects.get_current()
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)
        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting('PERMISSION'):
            has_global_current_page_change_permission = has_page_change_permission(self.request)
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        can_change = self.request.current_page and self.request.current_page.has_change_permission(self.request)
        if has_global_current_page_change_permission or can_change:
            self.change_admin_menu()
            if self.page:
                self.add_page_menu()

                if self.toolbar.edit_mode:
                    # history menu
                    self.add_history_menu()
                    self.change_language_menu()
                    # publish button
                    if self.page.has_publish_permission(self.request):
                        classes = ["cms_btn-action", "cms_btn-publish"]
                        if self.page.is_dirty():
                            classes.append("cms_btn-publish-active")
                        if self.page.published:
                            title = _("Publish Changes")
                        else:
                            title = _("Publish Page now")
                        publish_url = reverse('admin:cms_page_publish_page', args=(self.page.pk,))
                        self.toolbar.add_button(title, url=publish_url, extra_classes=classes, side=self.toolbar.RIGHT,
                                                disabled=not self.page.is_dirty())
                self.add_draft_live()
    def populate(self):
        page = get_page_draft(self.request.current_page)

        if not page or not user_can_change_page(self.request.user, page=page):
            return

        current_page_menu = self.toolbar.get_or_create_menu('page')
        position = self.get_position(current_page_menu)

        file_formats = FILE_FORMATS.values()

        if len(file_formats) == 1:
            menu = current_page_menu
        else:
            menu = current_page_menu.get_or_create_menu(
                'export-page', _('Export'), position=position)

        for file_format in file_formats:
            label = _('Export to {ext}').format(ext='.' + file_format.ext)
            url = reverse('export-page:cms_page', kwargs={
                'page_pk': page.pk,
                'file_format': file_format.name})
            menu.add_link_item(label, url=url, position=position)

        current_page_menu.add_break('export-page-break', position=position)
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting("PERMISSION"):
            has_global_current_page_change_permission = has_page_change_permission(self.request)
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        can_change = self.request.current_page and self.request.current_page.has_change_permission(self.request)
        if has_global_current_page_change_permission or can_change:
            try:
                extension = CSSExtension.objects.get(extended_object_id=self.page.id)
            except CSSExtension.DoesNotExist:
                extension = None
            try:
                if extension:
                    url = reverse("admin:cms_extensions_cssextension_change", args=(extension.pk,))
                else:
                    url = reverse("admin:cms_extensions_cssextension_add") + "?extended_object=%s" % self.page.pk
            except NoReverseMatch:
                # not in urls
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode
                current_page_menu = self.toolbar.get_or_create_menu("page")
                current_page_menu.add_modal_item(_("CSS"), url=url, disabled=not_edit_mode)
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting('PERMISSION'):
            has_global_current_page_change_permission = has_page_change_permission(self.request)
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        can_change = self.request.current_page and self.request.current_page.has_change_permission(self.request)
        if has_global_current_page_change_permission or can_change:
            try:
                mypageextension = MyPageExtension.objects.get(extended_object_id=self.page.id)
            except MyPageExtension.DoesNotExist:
                mypageextension = None
            try:
                if mypageextension:
                    url = admin_reverse('extensionapp_mypageextension_change', args=(mypageextension.pk,))
                else:
                    url = admin_reverse('extensionapp_mypageextension_add') + '?extended_object=%s' % self.page.pk
            except NoReverseMatch:
                # not in urls
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode
                current_page_menu = self.toolbar.get_or_create_menu('page')
                current_page_menu.add_modal_item(_('Page Extension'), url=url, disabled=not_edit_mode)
Exemple #7
0
 def populate(self):
     self.page = get_page_draft(self.request.current_page)
     self.title = self.get_title()
     self.permissions_activated = get_cms_setting('PERMISSION')
     self.change_admin_menu()
     self.add_page_menu()
     self.change_language_menu()
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        # check if user has page edit permission
        if user_can_change_page(user=self.request.user, page=self.page):
            try:
                extension = CSSExtension.objects.get(
                    extended_object_id=self.page.id)
            except CSSExtension.DoesNotExist:
                extension = None

            try:
                if extension:
                    url = reverse("admin:cms_extensions_cssextension_change",
                                  args=(extension.pk, ))
                else:
                    url = reverse("admin:cms_extensions_cssextension_add")
                    url = f"{url}?extended_object={self.page.pk}"
            except NoReverseMatch:
                # not in urls
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode_active
                current_page_menu = self.toolbar.\
                    get_or_create_menu("page")
                current_page_menu.add_modal_item(_("CSS"),
                                                 url=url,
                                                 disabled=not_edit_mode)
 def populate(self):
     # always use draft if we have a page
     self.page = get_page_draft(self.request.current_page)
     try:
         self.title = Title.objects.get(page=self.page,
                                        language=self.current_lang,
                                        publisher_is_draft=True)
     except Title.DoesNotExist:
         self.title = None
         # check global permissions if CMS_PERMISSIONS is active
     if get_cms_setting('PERMISSION'):
         has_global_current_page_change_permission = has_page_change_permission(
             self.request)
     else:
         has_global_current_page_change_permission = False
         # check if user has page edit permission
     can_change = self.request.current_page and self.request.current_page.has_change_permission(
         self.request)
     if has_global_current_page_change_permission or can_change:
         self.change_admin_menu()
         if self.page:
             self.add_page_menu()
             # history menu
     if self.page and self.toolbar.edit_mode:
         self.add_history_menu()
         self.change_language_menu()
Exemple #10
0
    def populate(self):
        """
        When visiting a page that is linked to a page extension, show an item in the toolbar only
        to users who have the permission to update the page.

        Clicking on this menu item will open the admin page of the page extension.

        Note: We don't want to show a link to create a new page extension on a page that does not
        have it yet. For clarity, we choose to only create page extensions transparently via the
        page creation wizard.
        """
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)
        if not self.page:
            # Nothing to do
            return

        if user_can_change_page(user=self.request.user, page=self.page):
            page_extension, admin_url = self.get_page_extension_admin()
            if page_extension:
                edit_mode_inactive = not self.toolbar.edit_mode_active
                page_menu = self.toolbar.get_or_create_menu("page")
                # Create the new menu item as a modal
                page_menu.add_modal_item(
                    _("{:s} settings").format(self.model.__name__),
                    url=admin_url,
                    disabled=edit_mode_inactive,
                    position=PAGE_EXTENSION_TOOLBAR_ITEM_POSITION,
                )
Exemple #11
0
    def get_node_by_id(self, id, nodes, namespace=None):

        final_node = None

        try:
            for node in nodes:

                if node.id == id:
                    if namespace:
                        if node.namespace == namespace:
                            final_node = node
                            break
                    else:
                        final_node = node
                        break

            if final_node is None:
                """ If we're editing a page, we need to find
                    the draft version of the page and turn it
                    into a navigation node """

                page = get_page_draft(Page.objects.get(id=id))

                final_node = page_to_node(page, page, 0)

            final_node.children = []
            final_node.parent = []
        except:
            logger.exception('Failed to find node')

        return final_node
    def get_node_by_id(self, id, nodes, namespace=None):

        final_node = None

        try:
            for node in nodes:
                
                if node.id == id:
                    if namespace:
                        if node.namespace == namespace:
                            final_node = node
                            break
                    else:
                        final_node = node
                        break
    
            if final_node is None:

                """ If we're editing a page, we need to find
                    the draft version of the page and turn it
                    into a navigation node """

                page = get_page_draft(Page.objects.get(id=id))

                final_node = page_to_node(page, page, 0)

            final_node.children = []
            final_node.parent = []
        except:
            logger.exception('Failed to find node')

        return final_node
Exemple #13
0
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)
        if not self.page:
            # Nothing to do
            return

        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting('PERMISSION'):
            has_global_current_page_change_permission = has_page_change_permission(self.request)
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        can_change = self.request.current_page and self.request.current_page.has_change_permission(self.request)

        if has_global_current_page_change_permission or can_change:
            try:
                icon_extension = MenuExtension.objects.get(extended_object_id=self.page.id)
            except MenuExtension.DoesNotExist:
                icon_extension = None
            try:
                if icon_extension:
                    url = reverse('admin:app_menuextension_change', args=(icon_extension.pk,))
                else:
                    url = reverse('admin:app_menuextension_add') + '?extended_object=%s' % self.page.pk
            except NoReverseMatch:
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode
                current_page_menu = self.toolbar.get_or_create_menu('page')
                current_page_menu.add_modal_item(_('Menu Settings'), url=url, disabled=not_edit_mode)
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        if user_can_change_page(user=self.request.user, page=self.page):
            try:
                page_extension = PageDetailExtension.objects.get(
                    extended_object_id=self.page.id)
            except PageDetailExtension.DoesNotExist:
                page_extension = None
            try:
                if page_extension:
                    url = reverse('admin:api_pagedetailextension_change',
                                  args=(page_extension.pk, ))
                else:
                    url = reverse('admin:api_pagedetailextension_add'
                                  ) + '?extended_object=%s' % self.page.pk

                test = url
            except NoReverseMatch:
                # not in urls
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode_active
                current_page_menu = self.toolbar.get_or_create_menu('page')
                current_page_menu.add_modal_item(_('Page Extention'),
                                                 url=url,
                                                 disabled=not_edit_mode)
Exemple #15
0
 def _get_page(self):
     """
     A utility method that caches the current page and make sure to use the draft version of the page.
     """
     # always use draft if we have a page
     if not self.page:
         self.page = get_page_draft(self.request.current_page)
     return self.page
Exemple #16
0
 def _get_page(self):
     """
     A utility method that caches the current page and make sure to use the draft version of the page.
     """
     # always use draft if we have a page
     if not self.page:
         self.page = get_page_draft(self.request.current_page)
     return self.page
Exemple #17
0
    def populate(self):
        if not self.toolbar.edit_mode:
            return

        cms_page = get_page_draft(self.request.current_page)

        if not cms_page or user_can_change_page(self.request.user, cms_page):
            self.active_operation = self.get_active_operation()
            self.add_buttons()
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)
        if not self.page:
            # Nothing to do
            return

        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting("PERMISSION"):
            has_global_current_page_change_permission = has_page_change_permission(self.request)
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        can_change = self.request.current_page and self.request.current_page.has_change_permission(self.request)
        if has_global_current_page_change_permission or can_change:
            not_edit_mode = not self.toolbar.edit_mode
            current_page_menu = self.toolbar.get_or_create_menu("page")
            super_item = current_page_menu.find_first(Break, identifier=PAGE_MENU_SECOND_BREAK) + 1
            meta_menu = current_page_menu.get_or_create_menu("pagemeta", PAGE_META_MENU_TITLE, position=super_item)
            position = 0
            # Page tags
            try:
                page_extension = PageMeta.objects.get(extended_object_id=self.page.pk)
            except PageMeta.DoesNotExist:
                page_extension = None
            try:
                if page_extension:
                    url = reverse("admin:djangocms_page_meta_pagemeta_change", args=(page_extension.pk,))
                else:
                    url = "%s?extended_object=%s" % (reverse("admin:djangocms_page_meta_pagemeta_add"), self.page.pk)
            except NoReverseMatch:
                # not in urls
                pass
            else:
                meta_menu.add_modal_item(PAGE_META_ITEM_TITLE, url=url, disabled=not_edit_mode, position=position)
            # Title tags
            for title in self.page.title_set.all():
                try:
                    title_extension = TitleMeta.objects.get(extended_object_id=title.pk)
                except TitleMeta.DoesNotExist:
                    title_extension = None
                try:
                    if title_extension:
                        url = reverse("admin:djangocms_page_meta_titlemeta_change", args=(title_extension.pk,))
                    else:
                        url = "%s?extended_object=%s" % (reverse("admin:djangocms_page_meta_titlemeta_add"), title.pk)
                except NoReverseMatch:
                    # not in urls
                    pass
                else:
                    position += 1
                    language = get_language_object(title.language)
                    meta_menu.add_modal_item(language["name"], url=url, disabled=not_edit_mode, position=position)
    def request_hook(self):
        """
        redirect to "?edit_off" if request is pending
        """
        response = super(PublisherPageToolbar, self).request_hook()

        self.current_request = None

        user = self.request.user
        if user.is_superuser:
            log.debug("Don't modify cms toolbar for superusers")
            return response

        can_publish_page = user.has_perm("cms.publish_page")
        can_change_page = user.has_perm("cms.change_page")
        log.debug("User %r can publish: %r - can change: %r", user,
                  can_publish_page, can_change_page)
        if not (can_publish_page or can_change_page):
            # e.g.: anonymous user should not see any messages
            log.debug("Don't modify cms toolbar for current user %s",
                      self.request.user)
            return response

        page = get_page_draft(self.request.current_page)
        if page is None:
            log.warning("No current page.")
            return response

        open_requests = PublisherStateModel.objects.get_open_requests(
            publisher_instance=page)
        if open_requests.count() == 0:
            log.debug("Current page has no open publishing requests.")
            # self.is_dirty = self.page.is_dirty(language=self.current_lang)
            # if not self.is_dirty:
            #     log.debug("Current page is dirty")
            #     return response
            # else:
            #     log.debug("Current page is not dirty")
            return response

        self.current_request = open_requests.latest()

        if self.toolbar.edit_mode:
            # The page has pending request: The User should not be able to edit it.
            # But we need the "edit mode": The user should raise into 404
            # if current page is not published yet!
            # see also:
            #    https://github.com/wearehoods/django-ya-model-publisher/issues/9
            log.debug("Turn off edit mode, because page as pending requests")
            self.toolbar.edit_mode = False

        return response
    def populate(self):
        # django CMS >= 3.6
        if CMS_GTE_36 and not self.toolbar.edit_mode_active:
            return
        # django CMS <= 3.5
        if not CMS_GTE_36 and not self.toolbar.edit_mode:
            return

        cms_page = get_page_draft(self.request.current_page)

        if not cms_page or user_can_change_page(self.request.user, cms_page):
            self.active_operation = self.get_active_operation()
            self.add_buttons()
Exemple #21
0
def create_dummy_page(title, template, placeholder, parent=None):
    page = create_page(
        title, template,
        language=settings.LANGUAGE_CODE,
        parent=parent,
        in_navigation=True,
    )
    page.placeholders.add(placeholder)
    page = get_page_draft(page)
    page.publish(settings.LANGUAGE_CODE)

    print("\t%s" % page.get_absolute_url(language=settings.LANGUAGE_CODE))
    return page
Exemple #22
0
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)
        if not self.page:
            # Nothing to do
            return

        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting('PERMISSION'):
            if not has_page_change_permission:
                has_global_current_page_change_permission = has_page_permission(
                    self.request.user, self.request.current_page, 'change'
                )
            else:
                has_global_current_page_change_permission = has_page_change_permission(
                    self.request
                )
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        if not has_page_change_permission:
            can_change = (self.request.current_page and
                          self.request.current_page.has_change_permission(self.request.user))
        else:
            can_change = (self.request.current_page and
                          self.request.current_page.has_change_permission(self.request))
        if has_global_current_page_change_permission or can_change:
            not_edit_mode = not self.toolbar.edit_mode
            current_page_menu = self.toolbar.get_or_create_menu('page')
            position = current_page_menu.find_first(
                Break, identifier=PAGE_MENU_THIRD_BREAK) - 1
            # Page tags
            try:
                page_extension = PageSitemapProperties.objects.get(extended_object_id=self.page.pk)
            except PageSitemapProperties.DoesNotExist:
                page_extension = None
            try:
                if page_extension:
                    url = reverse('admin:djangocms_page_sitemap_pagesitemapproperties_change',
                                  args=(page_extension.pk,))
                else:
                    url = "%s?extended_object=%s" % (
                        reverse('admin:djangocms_page_sitemap_pagesitemapproperties_add'),
                        self.page.pk)
            except NoReverseMatch:  # pragma: no cover
                # not in urls
                pass
            else:
                current_page_menu.add_modal_item(PAGE_SITEMAP_MENU_TITLE,
                                                 url=url, disabled=not_edit_mode,
                                                 position=position)
Exemple #23
0
 def populate(self):
     self.page = get_page_draft(self.request.current_page)
     menu = self.toolbar.get_or_create_menu('core-app', _('Popups'))
     url = reverse('cms_popup')
     menu.add_link_item(_('Edit'), url=url)
     history_menu = self.toolbar.get_or_create_menu(HISTORY_MENU_IDENTIFIER, _('History'), position=2)
     if self.page and self.toolbar.edit_mode:
         delete_action = reverse('cms_delete_widgets', kwargs=(dict(page=self.page.pk)))
         delete_question = _('Are you sure you want to delete all widgets on current page?')
         history_menu.add_ajax_item(_('Delete All widgets on page'), action=delete_action, question=delete_question,
                                    on_success=self.toolbar.REFRESH_PAGE)
     delete_action = reverse('cms_delete_static_widgets')
     delete_question = _('Are you sure you want to delete all widgets from all static placeholders?')
     history_menu.add_ajax_item(_('Delete All static widgets'), action=delete_action, question=delete_question,
                                on_success=self.toolbar.REFRESH_PAGE)
Exemple #24
0
def create_dummy_page(title, template, placeholders, parent=None):
    page = create_page(title,
                       template,
                       language=settings.LANGUAGE_CODE,
                       parent=parent,
                       in_navigation=True,
                       with_revision=True)
    for placeholder in placeholders:
        page.placeholders.add(placeholder)

    page = get_page_draft(page)
    page.publish(settings.LANGUAGE_CODE)

    print("\t%s" % page.get_absolute_url(language=settings.LANGUAGE_CODE))
    return page
    def populate(self):
        user = self.request.user
        if not PublisherStateModel.has_change_permission(
                user, raise_exception=False):
            return

        menu = self.toolbar.get_or_create_menu(
            key="publisher-state",
            verbose_name=_("open requests"),
        )

        state_qs = PublisherStateModel.objects.all().filter_open(
        )  # All open entries
        for state in state_qs:
            url = state.admin_reply_url()
            publisher_instance = state.publisher_instance
            menu.add_link_item(
                name="%s: %s" % (state.action_name, publisher_instance),
                url=url,
            )

        menu.add_break()

        menu.add_sideframe_item(
            name=_("Publisher State list"),
            url=admin_reverse("publisher_publisherstatemodel_changelist"),
        )

        menu.add_break()

        # Add history link:
        page = get_page_draft(self.request.current_page)
        if page is not None:
            states = PublisherStateModel.objects.filter_by_instance(
                publisher_instance=page)
            state = states.first()
            name = _("Current page history")
            if state is None:
                # No history -> disabled entry
                menu.add_link_item(
                    name=name,
                    url="",
                    disabled=True,
                )
            else:
                # Has history -> add link to it:
                url = state.admin_history_url()
                menu.add_sideframe_item(name=name, url=url)
    def populate(self):
        """ Adds Moderation link to Page Toolbar Menu
        """
        # always use draft if we have a page
        page = get_page_draft(self.request.current_page)

        if page:
            can_change = page_permissions.user_can_change_page(
                self.request.user, page)
        else:
            can_change = False

        if not can_change:
            return

        page_menu = self.toolbar.get_menu('page')

        if not page_menu or page_menu.disabled:
            return

        try:
            extension = PageModeration.objects.get(extended_object_id=page.pk)
        except PageModeration.DoesNotExist:
            extension = None

        opts = PageModeration._meta

        url_args = []

        if extension:
            url_name = '{}_{}_{}'.format(opts.app_label, opts.model_name,
                                         'change')
            url_args.append(extension.pk)
        else:
            url_name = '{}_{}_{}'.format(opts.app_label, opts.model_name,
                                         'add')

        url = get_admin_url(url_name, self.current_lang, args=url_args)

        if not extension:
            url += '?extended_object=%s' % page.pk
        not_edit_mode = not self.toolbar.edit_mode_active
        page_menu.add_modal_item(_('Moderation'),
                                 url=url,
                                 disabled=not_edit_mode)
Exemple #27
0
def user_can_view_page(user, page, site=None):
    if site is None:
        site = get_current_site()

    if user.is_superuser:
        return True

    public_for = get_cms_setting('PUBLIC_FOR')
    can_see_unrestricted = public_for == 'all' or (public_for == 'staff'
                                                   and user.is_staff)

    page = get_page_draft(page)

    # inherited and direct view permissions
    is_restricted = page.has_view_restrictions(site)

    if not is_restricted and can_see_unrestricted:
        # Page has no restrictions and project is configured
        # to allow everyone to see unrestricted pages.
        return True
    elif not user.is_authenticated():
        # Page has restrictions or project is configured
        # to require staff user status to see pages.
        return False

    if user_can_view_all_pages(user, site=site):
        return True

    if not is_restricted:
        # Page has no restrictions but user can't see unrestricted pages
        return False

    if user_can_change_page(user, page):
        # If user has change permissions on a page
        # then he can automatically view it.
        return True

    has_perm = has_generic_permission(
        page=page,
        user=user,
        action='view_page',
        check_global=False,
    )
    return has_perm
Exemple #28
0
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        self.toolbar.add_item(
            TemplateItem(
                "cms/toolbar/items/on_off.html",
                extra_context={
                    'request': self.request,
                    'diazo_enabled': check_themes_enabled(self.request),
                },
                side=RIGHT,
            ),
            len(self.toolbar.right_items),
        )
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            return  # Nothing to do

        page_tag = PageExtend.objects.filter(extended_object_id=self.page.id).first()

        try:
            if page_tag:
                url = reverse('admin:page_extend_pageextend_change', args=(page_tag.pk,))
            else:
                url = reverse('admin:page_extend_pageextend_add') + '?extended_object=%s' % self.page.pk
        except NoReverseMatch:
            pass
        else:
            not_edit_mode = not self.toolbar.edit_mode
            current_page_menu = self.toolbar.get_or_create_menu('page')
            current_page_menu.add_modal_item(_('Extend options...'), url=url, disabled=not_edit_mode)
Exemple #30
0
    def populate(self):
        self.current_site = Site.objects.get_current()
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)
        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting('PERMISSION'):
            has_global_current_page_change_permission = has_page_change_permission(
                self.request)
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        can_change = self.request.current_page and self.request.current_page.has_change_permission(
            self.request)
        if has_global_current_page_change_permission or can_change:
            self.change_admin_menu()
            if self.page:
                self.add_page_menu()

                if self.toolbar.edit_mode:
                    # history menu
                    self.add_history_menu()
                    self.change_language_menu()
                    # publish button
                    if self.page.has_publish_permission(self.request):
                        classes = ["cms_btn-action", "cms_btn-publish"]
                        if self.page.is_dirty():
                            classes.append("cms_btn-publish-active")
                        if self.page.published:
                            title = _("Publish Changes")
                        else:
                            title = _("Publish Page now")
                        # PATCH: publish_url = reverse('admin:cms_page_publish_page', args=(self.page.pk,))
                        publish_url = reverse('admin:cms_page_publish_page',
                                              args=(self.page.pk, ))[3:]
                        self.toolbar.add_button(
                            title,
                            url=publish_url,
                            extra_classes=classes,
                            side=self.toolbar.RIGHT,
                            disabled=not self.page.is_dirty())
                self.add_draft_live()
def get_tags(context, limit=None):
    """
    @brief  Fetches Tag objects
    """
    tagged_items = None
    # get all available tags
    tags = Tag.objects.all()

    if 'page' == limit:
        # just return tags of the current page...
        # get the ID of the current page's draft version (all changes are made
        # to the draft version in DjangoCMS)
        current_page = get_page_draft(context['request'].current_page).id
        try:
            # find the matching PageTags object's id
            pagetags_id = PageTags.objects.get(extended_object_id=current_page).id
            # get all TaggedItems associated with this PageTags object
            tagged_items = TaggedItem.objects.filter(object_id=pagetags_id)
        except PageTags.DoesNotExist:
            # obviously this page is not tagged, so there are no tagged items
            tagged_items = None

    if not tagged_items:
        # just return the tags in use
        # @todo: Make this configurable?!
        tagged_items = TaggedItem.objects.all()
    
    tagged_items = tagged_items.values_list('tag_id', flat=True)

    tags = tags.filter(id__in=tagged_items)

    # add the URL to the tag, if the cms app is used
    try:
        for t in tags:
            t.url = reverse('tag_detail', args=[t.slug])
    except NoReverseMatch:
        # fail silently
        pass

    return tags
Exemple #32
0
def user_can_view_page(user, page):
    if user.is_superuser:
        return True

    public_for = get_cms_setting('PUBLIC_FOR')
    can_see_unrestricted = public_for == 'all' or (public_for == 'staff' and user.is_staff)

    page = get_page_draft(page)

    # inherited and direct view permissions
    is_restricted = page.has_view_restrictions()

    if not is_restricted and can_see_unrestricted:
        # Page has no restrictions and project is configured
        # to allow everyone to see unrestricted pages.
        return True
    elif not user.is_authenticated():
        # Page has restrictions or project is configured
        # to require staff user status to see pages.
        return False

    if user_can_view_all_pages(user, site=page.site):
        return True

    if not is_restricted:
        # Page has no restrictions but user can't see unrestricted pages
        return False

    if user_can_change_page(user, page):
        # If user has change permissions on a page
        # then he can automatically view it.
        return True

    has_perm = has_generic_permission(
        page=page,
        user=user,
        action='view_page',
        check_global=False,
    )
    return has_perm
Exemple #33
0
 def post_template_populate(self):
     self.page = get_page_draft(self.request.current_page)
     statics = getattr(self.request, 'static_placeholders', [])
     placeholders = getattr(self.request, 'placeholders', [])
     if self.page:
         if self.page.has_change_permission(self.request):
             self.add_structure_mode()
         elif statics:
             for static_placeholder in statics:
                 if static_placeholder.has_change_permission(self.request):
                     self.add_structure_mode()
                     break
     else:
         added = False
         if statics:
             for static_placeholder in statics:
                 if static_placeholder.has_change_permission(self.request):
                     self.add_structure_mode()
                     added = True
                     break
         if not added and placeholders:
             self.add_structure_mode()
Exemple #34
0
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting("PERMISSION"):
            has_global_current_page_change_permission = has_page_change_permission(
                self.request)
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        can_change = self.request.current_page and self.request.current_page.has_change_permission(
            self.request)
        if has_global_current_page_change_permission or can_change:
            try:
                extension = CSSExtension.objects.get(
                    extended_object_id=self.page.id)
            except CSSExtension.DoesNotExist:
                extension = None
            try:
                if extension:
                    url = reverse("admin:cms_extensions_cssextension_change",
                                  args=(extension.pk, ))
                else:
                    url = reverse("admin:cms_extensions_cssextension_add"
                                  ) + "?extended_object=%s" % self.page.pk
            except NoReverseMatch:
                # not in urls
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode
                current_page_menu = self.toolbar.get_or_create_menu("page")
                current_page_menu.add_modal_item(_("CSS"),
                                                 url=url,
                                                 disabled=not_edit_mode)
 def post_template_populate(self):
     self.page = get_page_draft(self.request.current_page)
     statics = getattr(self.request, 'static_placeholders', [])
     placeholders = getattr(self.request, 'placeholders', [])
     if self.page:
         if self.page.has_change_permission(self.request):
             self.add_structure_mode()
         elif statics:
             for static_placeholder in statics:
                 if static_placeholder.has_change_permission(self.request):
                     self.add_structure_mode()
                     break
     else:
         added = False
         if statics:
             for static_placeholder in statics:
                 if static_placeholder.has_change_permission(self.request):
                     self.add_structure_mode()
                     added = True
                     break
         if not added and placeholders:
             self.add_structure_mode()
 def populate(self):
     # always use draft if we have a page
     self.page = get_page_draft(self.request.current_page)
     try:
         self.title = Title.objects.get(page=self.page, language=self.current_lang, publisher_is_draft=True)
     except Title.DoesNotExist:
         self.title = None
         # check global permissions if CMS_PERMISSIONS is active
     if get_cms_setting('PERMISSION'):
         has_global_current_page_change_permission = has_page_change_permission(self.request)
     else:
         has_global_current_page_change_permission = False
         # check if user has page edit permission
     can_change = self.request.current_page and self.request.current_page.has_change_permission(self.request)
     if has_global_current_page_change_permission or can_change:
         self.change_admin_menu()
         if self.page:
             self.add_page_menu()
             # history menu
     if self.page and self.toolbar.edit_mode:
         self.add_history_menu()
         self.change_language_menu()
    def populate(self):
        """
        @brief  This method actually makes the modifications to the toolbar
        """
        # all changes will be made on the draft version of the page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # if there is no page, there is nothing to do...
            return

        try:
            # fetch existing PageTags-object
            page_tags = PageTags.objects.get(extended_object_id=self.page.id)
        except PageTags.DoesNotExist:
            # this page has not been tagged yet!
            page_tags = None

        try:
            if page_tags:
                # if we have existing tags, use modification dialogue
                url = reverse('admin:djangocms_tagpage_pagetags_change',
                    args=(page_tags.pk,))
            else:
                # use initial creation dialogue
                url = reverse(
                    'admin:djangocms_tagpage_pagetags_add'
                    ) + '?extended_object={0}'.format(self.page.pk)
        except NoReverseMatch:
            # if no URL could be fetched, fail silently
            pas
        else:
            # Add our own menu entry to the toolbar (as child of 'page')
            not_edit_mode = not self.toolbar.edit_mode
            current_page_menu = self.toolbar.get_or_create_menu('page')
            current_page_menu.add_modal_item(_('Tags'),
                url=url,
                disabled=not_edit_mode)
Exemple #38
0
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        if user_can_change_page(user=self.request.user, page=self.page):
            try:
                icon_extension = HeaderBackgroundExtension.objects.get(extended_object_id=self.page.id)
            except HeaderBackgroundExtension.DoesNotExist:
                icon_extension = None
            try:
                if icon_extension:
                    url = reverse('admin:website_headerbackgroundextension_change', args=(icon_extension.pk,))
                else:
                    url = reverse('admin:website_headerbackgroundextension_add') + '?extended_object=%s' % self.page.pk
            except NoReverseMatch:
                pass
            else:
                not_edit_mode = not self.toolbar.edit_mode
                current_page_menu = self.toolbar.get_or_create_menu('page')
                current_page_menu.add_modal_item("Page background", url=url, disabled=not_edit_mode)
Exemple #39
0
    def get_node_by_id(self, id, nodes):

        final_node = None

        for node in nodes:

            if node.id == id:
                final_node = node
                break

        if final_node is None:

            """ If we're editing a page, we need to find
                the draft version of the page and turn it
                into a navigation node """

            page = get_page_draft(Page.objects.get(id=id))

            final_node = page_to_node(page, page, 0)

        final_node.children = []
        final_node.parent = []

        return final_node
Exemple #40
0
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)
        if not self.page:
            # Nothing to do
            return

        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting('PERMISSION'):
            if not has_page_change_permission:
                has_global_current_page_change_permission = has_page_permission(
                    self.request.user, self.request.current_page, 'change')
            else:
                has_global_current_page_change_permission = has_page_change_permission(
                    self.request)
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        if not has_page_change_permission:
            can_change = (self.request.current_page
                          and self.request.current_page.has_change_permission(
                              self.request.user))
        else:
            can_change = (self.request.current_page
                          and self.request.current_page.has_change_permission(
                              self.request))
        if has_global_current_page_change_permission or can_change:
            not_edit_mode = not self.toolbar.edit_mode
            current_page_menu = self.toolbar.get_or_create_menu('page')
            super_item = current_page_menu.find_first(
                Break, identifier=PAGE_MENU_SECOND_BREAK) + 1
            meta_menu = current_page_menu.get_or_create_menu(
                'pagemeta', PAGE_META_MENU_TITLE, position=super_item)
            position = 0
            # Page tags
            try:
                page_extension = PageMeta.objects.get(
                    extended_object_id=self.page.pk)
            except PageMeta.DoesNotExist:
                page_extension = None
            try:
                if page_extension:
                    url = reverse('admin:djangocms_page_meta_pagemeta_change',
                                  args=(page_extension.pk, ))
                else:
                    url = '%s?extended_object=%s' % (
                        reverse('admin:djangocms_page_meta_pagemeta_add'),
                        self.page.pk)
            except NoReverseMatch:
                # not in urls
                pass
            else:
                meta_menu.add_modal_item(PAGE_META_ITEM_TITLE,
                                         url=url,
                                         disabled=not_edit_mode,
                                         position=position)
            # Title tags
            for title in self.page.title_set.filter(
                    language__in=get_language_list(self.page.site_id)):
                try:
                    title_extension = TitleMeta.objects.get(
                        extended_object_id=title.pk)
                except TitleMeta.DoesNotExist:
                    title_extension = None
                try:
                    if title_extension:
                        url = reverse(
                            'admin:djangocms_page_meta_titlemeta_change',
                            args=(title_extension.pk, ))
                    else:
                        url = '%s?extended_object=%s' % (
                            reverse('admin:djangocms_page_meta_titlemeta_add'),
                            title.pk)
                except NoReverseMatch:
                    # not in urls
                    pass
                else:
                    position += 1
                    language = get_language_object(title.language)
                    meta_menu.add_modal_item(language['name'],
                                             url=url,
                                             disabled=not_edit_mode,
                                             position=position)
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        # check global permissions if CMS_PERMISSIONS is active
        if get_cms_setting('PERMISSION'):
            has_global_current_page_change_permission = has_page_permission(
                self.request.user, self.request.current_page, 'change'
            )
        else:
            has_global_current_page_change_permission = False
            # check if user has page edit permission
        has_change_permission = self.request.current_page.has_change_permission(self.request.user)
        can_change = (self.request.current_page and has_change_permission)
        if has_global_current_page_change_permission or can_change:
            try:
                not_edit_mode = not self.toolbar.edit_mode
            except AttributeError:
                not_edit_mode = not self.toolbar.edit_mode_active

            tags_menu = self.toolbar.get_or_create_menu('page')
            super_item = tags_menu.find_first(Break, identifier=PAGE_MENU_SECOND_BREAK) + 1
            tags_menu = tags_menu.get_or_create_menu(
                'pagetags', PAGE_TAGS_MENU_TITLE, position=super_item
            )
            position = 0
            # Page tags
            try:
                page_extension = PageTags.objects.get(extended_object_id=self.page.pk)
            except PageTags.DoesNotExist:
                page_extension = None
            try:
                if page_extension:
                    url = reverse('admin:djangocms_page_tags_pagetags_change',
                                  args=(page_extension.pk,))
                else:
                    url = '%s?extended_object=%s' % (
                        reverse('admin:djangocms_page_tags_pagetags_add'),
                        self.page.pk
                    )
            except NoReverseMatch:  # pragma: no cover
                # not in urls
                pass
            else:
                tags_menu.add_modal_item(PAGE_TAGS_ITEM_TITLE, url=url, disabled=not_edit_mode,
                                         position=position)
            # Title tags
            try:
                site_id = self.page.node.site_id
            except AttributeError:  # CMS_3_4
                site_id = self.page.site_id
            for title in self.page.title_set.filter(
                language__in=get_language_list(site_id)
            ):
                try:
                    title_extension = TitleTags.objects.get(extended_object_id=title.pk)
                except TitleTags.DoesNotExist:
                    title_extension = None
                try:
                    if title_extension:
                        url = reverse('admin:djangocms_page_tags_titletags_change',
                                      args=(title_extension.pk,))
                    else:
                        url = '%s?extended_object=%s' % (
                            reverse('admin:djangocms_page_tags_titletags_add'),
                            title.pk)
                except NoReverseMatch:  # pragma: no cover
                    # not in urls
                    pass
                else:
                    position += 1
                    language = get_language_object(title.language)
                    tags_menu.add_modal_item(language['name'], url=url, disabled=not_edit_mode,
                                             position=position)
Exemple #42
0
 def init_from_request(self):
     self.page = get_page_draft(self.request.current_page)
Exemple #43
0
 def init_from_request(self):
     self.page = get_page_draft(self.request.current_page)
     self.title = self.get_title()
     self.permissions_activated = get_cms_setting('PERMISSION')
Exemple #44
0
 def site_language(self):
     cms_page = get_page_draft(self.request.current_page)
     site_id = cms_page.node.site_id if cms_page else None
     return get_site_language_from_request(self.request, site_id)
    def populate(self):
        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if self.page and has_page_change_permission(self.request):
            return
Exemple #46
0
 def populate(self):
     self.page = get_page_draft(self.request.current_page)
Exemple #47
0
 def init_from_request(self):
     self.page = get_page_draft(self.request.current_page)
    def populate(self):

        # always use draft if we have a page
        self.page = get_page_draft(self.request.current_page)

        if not self.page:
            # Nothing to do
            return

        self.lang = get_language_from_request(self.request)

        try:
            self.title_page = self.page.title_set.get(language=self.lang)
        except:
            # Nothing to do
            return

        #
        # Remove default menu
        #
        #self.page_menu = self.toolbar.get_or_create_menu('page')
        #self.toolbar.remove_item(self.page_menu)

        #
        # check global permissions
        #
        if get_cms_setting('PERMISSION'):
            has_global_current_page_change_permission = has_page_change_permission(self.request)
        else:
            has_global_current_page_change_permission = False

        can_change = self.request.current_page and self.request.current_page.has_change_permission(self.request)

        if has_global_current_page_change_permission or can_change:
            # Page urls
            page_url = reverse(PAGE_MENU_ADD)
            delete_page_url = reverse(PAGE_MENU_DELETE, args=(self.page.pk,))
            sub_page_params = {'edit': 1, 'position': 'last-child', 'target': self.page.pk}

            # Rich page urls
            rich_page_add_url = reverse(RICHPAGE_MENU_ADD) + '?extended_object=%s' % self.title_page.pk
            
            # Rich Slideshow
            rich_slideshow_add_url = reverse(RICHSLIDESHOW_MENU_ADD) + '?extended_object=%s' % self.page.pk

            
            #
            # build the Pages menu
            #

            menu = self.toolbar.get_or_create_menu('rich-page-new', _('Pages'), position=1)
            menu.add_modal_item(_('New Page'), url=page_url)
            menu.add_modal_item(_('New Sub Page'), url=add_url_parameters(page_url, sub_page_params))
            menu.add_modal_item(_('Delete page'), url=delete_page_url)

            try:
                rich_page = RichPage.objects.get(extended_object_id=self.title_page.pk)
            except RichPage.DoesNotExist:
                rich_page = None


            try:
                rich_slideshow = RichSlideshow.objects.get(extended_object_id=self.page.id)
            except RichSlideshow.DoesNotExist:
                rich_slideshow = None

            if not rich_page:
                menu.add_break(PAGE_MENU_BREAK)
                menu.add_modal_item(_('Add article'), url=rich_page_add_url)

            #
            # Check if the page has rich content or rich collection
            #
            if rich_page:
                menu.add_break(PAGE_MENU_BREAK)
                
                #
                # Rich page urls
                #
                rich_page_change_url = reverse(RICHPAGE_MENU_CHANGE, args=(self.title_page.pk,)) + '?extended_object=%s' % self.title_page.pk
                rich_page_delete_url = reverse(RICHPAGE_MENU_DELETE, args=(self.title_page.pk,)) + '?extended_object=%s' % self.title_page.pk

                menu.add_modal_item(_('Edit article'), url=rich_page_change_url)
                menu.add_modal_item(_('Delete article'), url=rich_page_delete_url)

                menu.add_break(PAGE_MENU_BREAK)

                if rich_slideshow:
                    rich_slideshow_change_url = reverse(RICHSLIDESHOW_MENU_CHANGE, args=(rich_slideshow.pk,)) + '?extended_object=%s' % self.page.pk
                    menu.add_modal_item(_('Delete slideshow'), url=rich_slideshow_change_url)
                else:
                    menu.add_modal_item(_('Add slideshow'), url=rich_slideshow_add_url)
    def populate(self):
        self.page = get_page_draft(self.request.current_page)
        config = self.__get_services_config()
        if not config:
            # Do nothing if there is no services app_config to work with
            return

        user = getattr(self.request, 'user', None)
        try:
            view_name = self.request.resolver_match.view_name
        except AttributeError:
            view_name = None

        if user and view_name:
            language = get_language_from_request(self.request, check_path=True)

            # get existing admin menu
            admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER)

            # add new Services item
            admin_menu.add_sideframe_item(_('Services'),
                                          url='/admin/js_services/service/',
                                          position=0)

            # If we're on an Service detail page, then get the service
            if view_name == '{0}:service-detail'.format(config.namespace):
                obj = get_object_from_request(Service, self.request)
            else:
                obj = None

            menu = self.toolbar.get_or_create_menu('services-app',
                                                   config.get_app_title())

            change_config_perm = user.has_perm(
                'js_services.change_servicesconfig')
            add_config_perm = user.has_perm('js_services.add_servicesconfig')
            config_perms = [change_config_perm, add_config_perm]

            change_service_perm = user.has_perm('js_services.change_service')
            delete_service_perm = user.has_perm('js_services.delete_service')
            add_service_perm = user.has_perm('js_services.add_service')
            service_perms = [
                change_service_perm,
                add_service_perm,
                delete_service_perm,
            ]

            if change_config_perm:
                url_args = {}
                if language:
                    url_args = {
                        'language': language,
                    }
                url = get_admin_url('js_services_servicesconfig_change', [
                    config.pk,
                ], **url_args)
                menu.add_modal_item(_('Configure addon'), url=url)

            if any(config_perms) and any(service_perms):
                menu.add_break()

            if change_service_perm:
                url_args = {}
                if config:
                    url_args = {'sections__id__exact': config.pk}
                url = get_admin_url('js_services_service_changelist',
                                    **url_args)
                menu.add_sideframe_item(_('Service list'), url=url)

            if add_service_perm:
                url_args = {
                    'sections': config.pk,
                    'owner': user.pk,
                }
                if language:
                    url_args.update({
                        'language': language,
                    })
                url = get_admin_url('js_services_service_add', **url_args)
                menu.add_modal_item(_('Add new service'), url=url)

            if change_service_perm and obj:
                url_args = {}
                if language:
                    url_args = {
                        'language': language,
                    }
                url = get_admin_url('js_services_service_change', [
                    obj.pk,
                ], **url_args)
                menu.add_modal_item(_('Edit this service'),
                                    url=url,
                                    active=True)

            if delete_service_perm and obj:
                redirect_url = self.get_on_delete_redirect_url(
                    obj, language=language)
                url = get_admin_url('js_services_service_delete', [
                    obj.pk,
                ])
                menu.add_modal_item(_('Delete this service'),
                                    url=url,
                                    on_close=redirect_url)

        if settings.USE_I18N:  # and not self._language_menu:
            if obj:
                self._language_menu = self.toolbar.get_or_create_menu(
                    LANGUAGE_MENU_IDENTIFIER, _('Language'), position=-1)
                self._language_menu.items = []
                languages = get_language_dict(self.current_site.pk)
                page_languages = self.page.get_languages()
                remove = []

                for code, name in get_language_tuple():
                    if code in obj.get_available_languages():
                        remove.append((code, name))
                        try:
                            url = obj.get_absolute_url(code)
                        except NoReverseMatch:
                            url = None
                        if url and code in page_languages:
                            self._language_menu.add_link_item(
                                name,
                                url=url,
                                active=self.current_lang == code)

                if self.toolbar.edit_mode_active:
                    add = [l for l in languages.items() if l not in remove]
                    copy = [
                        (code, name) for code, name in languages.items()
                        if code != self.current_lang and (code, name) in remove
                    ]

                    if (add or len(remove) > 1
                            or copy) and change_service_perm:
                        self._language_menu.add_break(ADD_OBJ_LANGUAGE_BREAK)

                        if add:
                            add_plugins_menu = self._language_menu.get_or_create_menu(
                                '{0}-add-trans'.format(
                                    LANGUAGE_MENU_IDENTIFIER),
                                _('Add Translation'))
                            for code, name in add:
                                url_args = {}
                                url = '%s?language=%s' % (get_admin_url(
                                    'js_services_service_change', [obj.pk], **
                                    url_args), code)
                                add_plugins_menu.add_modal_item(name, url=url)

                        if len(remove) > 1:
                            remove_plugins_menu = self._language_menu.get_or_create_menu(
                                '{0}-del-trans'.format(
                                    LANGUAGE_MENU_IDENTIFIER),
                                _('Delete Translation'))
                            for code, name in remove:
                                url = get_admin_url(
                                    'js_services_service_delete_translation',
                                    [obj.pk, code])
                                remove_plugins_menu.add_modal_item(name,
                                                                   url=url)

                        if copy:
                            copy_plugins_menu = self._language_menu.get_or_create_menu(
                                '{0}-copy-trans'.format(
                                    LANGUAGE_MENU_IDENTIFIER),
                                _('Copy all plugins'))
                            title = _('from %s')
                            question = _(
                                'Are you sure you want to copy all plugins from %s?'
                            )
                            url = get_admin_url(
                                'js_services_service_copy_language', [obj.pk])
                            for code, name in copy:
                                copy_plugins_menu.add_ajax_item(
                                    title % name,
                                    action=url,
                                    data={
                                        'source_language': code,
                                        'target_language': self.current_lang
                                    },
                                    question=question % name,
                                    on_success=self.toolbar.REFRESH_PAGE)
Exemple #50
0
 def init_from_request(self):
     self.page = get_page_draft(self.request.current_page)
     self.title = self.get_title()
     self.permissions_activated = get_cms_setting('PERMISSION')