def page_listing_preview_buttons(page,
                                 page_perms,
                                 is_parent=False,
                                 next_url=None):
    if page.live and page.url:
        yield Button(_('Polish'),
                     to_i18n_url(page.full_url, 'pl') + '?lang=pl',
                     attrs={
                         'aria-label':
                         _("View live version of '%(title)s'") % {
                             'title': page.get_admin_display_title()
                         },
                         'target': '_blank',
                         'rel': 'noopener noreferrer'
                     },
                     priority=20)
        yield Button(_('English'),
                     to_i18n_url(page.full_url, 'en') + '?lang=en',
                     attrs={
                         'aria-label':
                         _("View live version of '%(title)s'") % {
                             'title': page.get_admin_display_title()
                         },
                         'target': '_blank',
                         'rel': 'noopener noreferrer'
                     },
                     priority=30)
Exemple #2
0
def page_header_buttons(page, page_perms, next_url=None):
    if page_perms.can_move():
        yield Button(
            _("Move"),
            reverse("wagtailadmin_pages:move", args=[page.id]),
            attrs={
                "title": _("Move page '%(title)s'")
                % {"title": page.get_admin_display_title()}
            },
            priority=10,
        )
    if page_perms.can_copy():
        url = reverse("wagtailadmin_pages:copy", args=[page.id])
        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Copy"),
            url,
            attrs={
                "title": _("Copy page '%(title)s'")
                % {"title": page.get_admin_display_title()}
            },
            priority=20,
        )
    if page_perms.can_add_subpage():
        yield Button(
            _("Add child page"),
            reverse("wagtailadmin_pages:add_subpage", args=[page.id]),
            attrs={
                "aria-label": _("Add a child page to '%(title)s' ")
                % {"title": page.get_admin_display_title()},
            },
            priority=30,
        )
def page_listing_preview_draft_buttons(page,
                                       page_perms,
                                       is_parent=False,
                                       next_url=None):
    if page.has_unpublished_changes:
        if not page.url:
            rev = page.revisions.order_by('id').first()
            page = rev.as_page_object()

        if page.url:
            yield Button(
                _('Polish'),
                to_i18n_url(page.full_url, 'pl') + '?rev=latest&lang=pl',
                attrs={
                    'aria-label': _("Preview draft version of '%(title)s'") % {
                        'title': page.get_admin_display_title()
                    },
                    'target': '_blank',
                    'rel': 'noopener noreferrer'
                },
                priority=20)
            yield Button(
                _('English'),
                to_i18n_url(page.full_url, 'en') + '?rev=latest&lang=en',
                attrs={
                    'aria-label': _("Preview draft version of '%(title)s'") % {
                        'title': page.get_admin_display_title()
                    },
                    'target': '_blank',
                    'rel': 'noopener noreferrer'
                },
                priority=30)
def page_listing_more_buttons(page, page_perms, is_parent=False):
    """Adds a 'more' button to personalisable pages allowing users to quickly
    create a new variant for the selected segment.

    """
    if not isinstance(page, models.PersonalisablePageMixin):
        return

    metadata = page.personalisation_metadata

    for vm in metadata.variants_metadata:
        yield Button('%s variant' % (vm.segment.name),
                     reverse('wagtailadmin_pages:edit', args=[vm.variant_id]),
                     attrs={"title": _('Edit this variant')},
                     classes=("icon", "icon-fa-pencil"),
                     priority=0)

    for segment in metadata.get_unused_segments():
        yield Button('%s variant' % (segment.name),
                     reverse('segment:copy_page', args=[page.pk, segment.pk]),
                     attrs={"title": _('Create this variant')},
                     classes=("icon", "icon-fa-plus"),
                     priority=100)

    yield Button(_('Create a new segment'),
                 reverse('wagtail_personalisation_segment_modeladmin_create'),
                 attrs={"title": _('Create a new segment')},
                 classes=("icon", "icon-fa-snowflake-o"),
                 priority=200)
Exemple #5
0
def page_header_buttons(page, page_perms, next_url=None):
    if page_perms.can_move():
        yield Button(
            _('Move'),
            reverse('wagtailadmin_pages:move', args=[page.id]),
            attrs={"title": _("Move page '%(title)s'") % {'title': page.get_admin_display_title()}},
            priority=10
        )
    if page_perms.can_copy():
        url = reverse('wagtailadmin_pages:copy', args=[page.id])
        if next_url:
            url += '?' + urlencode({'next': next_url})

        yield Button(
            _('Copy'),
            url,
            attrs={'title': _("Copy page '%(title)s'") % {'title': page.get_admin_display_title()}},
            priority=20
        )
    if page_perms.can_add_subpage():
        yield Button(
            _('Add child page'),
            reverse('wagtailadmin_pages:add_subpage', args=[page.id]),
            attrs={
                'aria-label': _("Add a child page to '%(title)s' ") % {'title': page.get_admin_display_title()},
            },
            priority=30
        )
Exemple #6
0
def page_listing_more_buttons(page,
                              page_perms,
                              is_parent=False,
                              next_url=None):
    if page_perms.can_move():
        yield Button(_('Move'),
                     reverse('wagtailadmin_pages:move', args=[page.id]),
                     attrs={
                         "title": _("Move page '%(title)s'") % {
                             'title': page.get_admin_display_title()
                         }
                     },
                     priority=10)
    if page_perms.can_copy():
        yield Button(_('Copy'),
                     append_querystring(
                         reverse('wagtailadmin_pages:copy', args=[page.id]),
                         next_url),
                     attrs={
                         'title': _("Copy page '%(title)s'") % {
                             'title': page.get_admin_display_title()
                         }
                     },
                     priority=20)
    if page_perms.can_delete():
        yield Button(_('Delete'),
                     append_querystring(
                         reverse('wagtailadmin_pages:delete', args=[page.id]),
                         next_url),
                     attrs={
                         'title': _("Delete page '%(title)s'") % {
                             'title': page.get_admin_display_title()
                         }
                     },
                     priority=30)
    if page_perms.can_unpublish():
        yield Button(_('Unpublish'),
                     append_querystring(
                         reverse('wagtailadmin_pages:unpublish',
                                 args=[page.id]), next_url),
                     attrs={
                         'title': _("Unpublish page '%(title)s'") % {
                             'title': page.get_admin_display_title()
                         }
                     },
                     priority=40)
    if page_perms.can_view_revisions():
        yield Button(_('Revisions'),
                     reverse('wagtailadmin_pages:revisions_index',
                             args=[page.id]),
                     attrs={
                         'title':
                         _("View revision history for '%(title)s'") % {
                             'title': page.get_admin_display_title()
                         }
                     },
                     priority=50)
Exemple #7
0
def joplin_page_listing_more_buttons(page, page_perms, is_parent=False):
    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 not page.live:
    #     yield Button(
    #         _('Archive'),
    #         "#TODO-archive",
    #         attrs={'title': _("Archive 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 page_perms.can_publish() and page.has_unpublished_changes:
        yield Button(_('Publish'),
                     reverse('publish', args=[page.id]),
                     attrs={
                         'title':
                         _("Publish page '{title}'").format(
                             title=page.get_admin_display_title())
                     },
                     priority=50)
    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=60)
    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())
            },
        )
def add_copy_button(page, page_perms, is_parent=False):
    if isinstance(page, models.BasePage):
        yield Button('Copy upstream',
                     reverse('copy-upstream', kwargs={'pk': page.id}),
                     attrs={'title': "Copy this page to another environment"},
                     priority=80)
        yield Button(
            'Update upstream',
            reverse('update-upstream', kwargs={'pk': page.id}),
            attrs={'title': "Update this page on another environment"},
            priority=80)
Exemple #9
0
def page_listing_more_buttons(page, page_perms, is_parent=False, next_url=None):
    if page_perms.can_move():
        yield Button(
            _('Move'),
            reverse('wagtailadmin_pages:move', args=[page.id]),
            attrs={"title": _("Move page '%(title)s'") % {'title': page.get_admin_display_title()}},
            priority=10
        )
    if page_perms.can_copy():
        url = reverse('wagtailadmin_pages:copy', args=[page.id])
        if next_url:
            url += '?' + urlencode({'next': next_url})

        yield Button(
            _('Copy'),
            url,
            attrs={'title': _("Copy page '%(title)s'") % {'title': page.get_admin_display_title()}},
            priority=20
        )
    if page_perms.can_delete():
        url = reverse('wagtailadmin_pages:delete', args=[page.id])

        # After deleting the page, it is impossible to redirect to it.
        if next_url == reverse('wagtailadmin_explore', args=[page.id]):
            next_url = None

        if next_url:
            url += '?' + urlencode({'next': next_url})

        yield Button(
            _('Delete'),
            url,
            attrs={'title': _("Delete page '%(title)s'") % {'title': page.get_admin_display_title()}},
            priority=30
        )
    if page_perms.can_unpublish():
        url = reverse('wagtailadmin_pages:unpublish', args=[page.id])
        if next_url:
            url += '?' + urlencode({'next': next_url})

        yield Button(
            _('Unpublish'),
            url,
            attrs={'title': _("Unpublish page '%(title)s'") % {'title': page.get_admin_display_title()}},
            priority=40
        )
    if page_perms.can_view_revisions():
        yield Button(
            _('History'),
            reverse('wagtailadmin_pages:history', args=[page.id]),
            attrs={'title': _("View page history for '%(title)s'") % {'title': page.get_admin_display_title()}},
            priority=50
        )
Exemple #10
0
def register_page_listing_button_item(buttons, page, page_perms, context=None):
    item = Button(
        label="Dummy Button",
        url="/dummy-button",
        priority=10,
    )
    buttons.append(item)
def page_listing_buttons(page, page_perms, is_parent=False, next_url=None):
    if page_perms.can_edit():
        yield PageListingButton(
            _('Edit'),
            reverse('wagtailadmin_pages:edit', args=[page.id]),
            attrs={'aria-label': _("Edit '%(title)s'") % {'title': page.get_admin_display_title()}},
            priority=10
        )
    if page.has_unpublished_changes and page.is_previewable():
        yield PageListingButton(
            _('View draft'),
            reverse('wagtailadmin_pages:view_draft', args=[page.id]),
            attrs={
                'aria-label': _("Preview draft version of '%(title)s'") % {'title': page.get_admin_display_title()},
                'target': '_blank', 'rel': 'noopener noreferrer'
            },
            priority=20
        )
    if page.live and page.url:
        yield PageListingButton(
            _('View live'),
            page.url,
            attrs={
                'target': "_blank", 'rel': 'noopener noreferrer',
                'aria-label': _("View live version of '%(title)s'") % {'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={
                    'aria-label': _("Add a child page to '%(title)s' ") % {'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={'aria-label': _("Add a child page to '%(title)s' ") % {'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,
        next_url=next_url,
        attrs={
            'target': '_blank', 'rel': 'noopener noreferrer',
            'title': _("View more options for '%(title)s'") % {'title': page.get_admin_display_title()}
        },
        priority=50
    )
Exemple #12
0
def register_snippet_listing_button_item(buttons, snippet, user, context=None):
    item = Button(
        label="Dummy Button",
        url="/dummy-button",
        priority=10,
    )
    buttons.append(item)
Exemple #13
0
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)
Exemple #14
0
def page_listing_more_buttons(page,
                              page_perms,
                              is_parent=False,
                              next_url=None):
    if page_perms.can_publish():
        yield Button('Publish with children',
                     reverse('publish-with-children', args=(page.id, )),
                     priority=60)
def page_listing_some_more_buttons(page, page_perms, is_parent=False):
    yield Button(_('Copy to All Countries'),
                 reverse('copy-to-all-confirm', args=(page.id, )),
                 attrs={
                     'copy_to_all_confirm':
                     _("Copy page '{title}'").format(
                         title=page.get_admin_display_title())
                 },
                 priority=40)
Exemple #16
0
def joplin_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:
        try:
            yield PageListingButton(
                _('View draft'),
                page.janis_preview_url(),
                attrs={'title': _("Preview draft version of '{title}'").format(
                    title=page.get_admin_display_title()), 'target': '_blank'},
                priority=20
            )
        except Exception as e:
            raise e
    if page.live and page.url and hasattr(page, 'janis_url'):
        yield PageListingButton(
            _('View live'),
            page.janis_url(),
            attrs={'target': "_blank", 'title': _("View live version of '{title}'").format(
                title=page.get_admin_display_title())},
            priority=30
        )

    # make the author notes icon appear if latest revision has notes
    latest_revision_as_page = page.get_latest_revision_as_page()
    if hasattr(latest_revision_as_page, 'author_notes') and latest_revision_as_page.author_notes:
        yield Button(
            _('📝'),
            'javascript:null;',
            attrs={'title': _("Notes for authors entered"),
                   'class': 'has-author-notes'},
            priority=70
        )

    yield ButtonWithDropdownFromHook(
        _('More'),
        hook_name='register_joplin_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
    )
Exemple #17
0
def page_listing_more_buttons(page,
                              page_perms,
                              is_parent=False,
                              next_url=None):
    if page_perms.can_move():
        yield Button(
            _("Move"),
            reverse("wagtailadmin_pages:move", args=[page.id]),
            attrs={
                "title": _("Move page '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=10,
        )
    if page_perms.can_copy():
        url = reverse("wagtailadmin_pages:copy", args=[page.id])
        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Copy"),
            url,
            attrs={
                "title": _("Copy page '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=20,
        )
    if page_perms.can_delete():
        url = reverse("wagtailadmin_pages:delete", args=[page.id])

        # After deleting the page, it is impossible to redirect to it.
        if next_url == reverse("wagtailadmin_explore", args=[page.id]):
            next_url = None

        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Delete"),
            url,
            attrs={
                "title": _("Delete page '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=30,
        )
    if page_perms.can_unpublish():
        url = reverse("wagtailadmin_pages:unpublish", args=[page.id])
        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Unpublish"),
            url,
            attrs={
                "title": _("Unpublish page '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=40,
        )
    if page_perms.can_view_revisions():
        yield Button(
            _("History"),
            reverse("wagtailadmin_pages:history", args=[page.id]),
            attrs={
                "title": _("View page history for '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=50,
        )

    if is_parent:
        yield Button(
            _("Sort menu order"),
            "?ordering=ord",
            attrs={
                "title": _("Change ordering of child pages of '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=60,
        )
Exemple #18
0
def page_listing_buttons(page, page_perms, is_parent=False, next_url=None):
    if page_perms.can_edit():
        yield PageListingButton(
            _("Edit"),
            reverse("wagtailadmin_pages:edit", args=[page.id]),
            attrs={
                "aria-label": _("Edit '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=10,
        )
    if page.has_unpublished_changes and page.is_previewable():
        yield PageListingButton(
            _("View draft"),
            reverse("wagtailadmin_pages:view_draft", args=[page.id]),
            attrs={
                "aria-label": _("Preview draft version of '%(title)s'") % {
                    "title": page.get_admin_display_title()
                },
                "rel": "noreferrer",
            },
            priority=20,
        )
    if page.live and page.url:
        yield PageListingButton(
            _("View live"),
            page.url,
            attrs={
                "rel": "noreferrer",
                "aria-label": _("View live version of '%(title)s'") % {
                    "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={
                    "aria-label": _("Add a child page to '%(title)s' ") % {
                        "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={
                    "aria-label": _("Add a child page to '%(title)s' ") % {
                        "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,
        next_url=next_url,
        attrs={
            "target": "_blank",
            "rel": "noreferrer",
            "title": _("View more options for '%(title)s'") % {
                "title": page.get_admin_display_title()
            },
        },
        priority=50,
    )
Exemple #19
0
def joplin_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'),
            page.janis_preview_url(),
            attrs={
                'title':
                _("Preview draft version of '{title}'").format(
                    title=page.get_admin_display_title()),
                'target':
                '_blank'
            },
            priority=20)
    if page.live and page.url and hasattr(page, 'janis_url'):
        yield PageListingButton(_('View live'),
                                page.janis_url(),
                                attrs={
                                    'target':
                                    "_blank",
                                    'title':
                                    _("View live version of '{title}'").format(
                                        title=page.get_admin_display_title())
                                },
                                priority=30)

    # This is kinda hacky but it should let us know when we have notes on a revision
    latest_revision = None
    all_revisions = PageRevision.objects.filter(page_id=page.id)
    for revision in all_revisions:
        if revision.is_latest_revision():
            latest_revision = revision

    if latest_revision:
        author_notes = latest_revision.as_page_object().author_notes

        # Following this: https://docs.python.org/3/library/html.parser.html#examples
        parser = CheckForDataInHTMLParser()
        parser.feed(author_notes)

        if parser.has_data:
            yield Button(
                _('📝'),
                'javascript:alert("Wouldn\'t it be cool if this linked to the notes?");',
                attrs={
                    'title': _("Notes for authors entered"),
                    'class': 'has-author-notes'
                },
                priority=70)

    yield ButtonWithDropdownFromHook(
        _('More'),
        hook_name='register_joplin_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)
Exemple #20
0
def page_header_buttons(page, page_perms, is_parent=False, next_url=None):
    if page_perms.can_edit():
        yield Button(
            _("Edit"),
            reverse("wagtailadmin_pages:edit", args=[page.id]),
            icon_name="edit",
            attrs={
                "title": _("Edit '%(title)s'")
                % {"title": page.get_admin_display_title()}
            },
            priority=10,
        )
    if page_perms.can_move():
        yield Button(
            _("Move"),
            reverse("wagtailadmin_pages:move", args=[page.id]),
            icon_name="arrow-right-full",
            attrs={
                "title": _("Move page '%(title)s'")
                % {"title": page.get_admin_display_title()}
            },
            priority=20,
        )
    if page_perms.can_copy():
        url = reverse("wagtailadmin_pages:copy", args=[page.id])
        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Copy"),
            url,
            icon_name="copy",
            attrs={
                "title": _("Copy page '%(title)s'")
                % {"title": page.get_admin_display_title()}
            },
            priority=30,
        )
    if page_perms.can_add_subpage():
        yield Button(
            _("Add child page"),
            reverse("wagtailadmin_pages:add_subpage", args=[page.id]),
            icon_name="circle-plus",
            attrs={
                "aria-label": _("Add a child page to '%(title)s' ")
                % {"title": page.get_admin_display_title()},
            },
            priority=40,
        )
    if page_perms.can_delete():
        url = reverse("wagtailadmin_pages:delete", args=[page.id])

        # After deleting the page, it is impossible to redirect to it.
        if next_url == reverse("wagtailadmin_explore", args=[page.id]):
            next_url = None

        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Delete"),
            url,
            icon_name="bin",
            attrs={
                "title": _("Delete page '%(title)s'")
                % {"title": page.get_admin_display_title()}
            },
            priority=50,
        )
    if page_perms.can_unpublish():
        url = reverse("wagtailadmin_pages:unpublish", args=[page.id])
        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Unpublish"),
            url,
            icon_name="download-alt",
            attrs={
                "title": _("Unpublish page '%(title)s'")
                % {"title": page.get_admin_display_title()}
            },
            priority=60,
        )
    if is_parent and page_perms.can_reorder_children():
        url = reverse("wagtailadmin_explore", args=[page.id])
        url += "?ordering=ord"
        yield Button(
            _("Sort menu order"),
            url,
            icon_name="list-ul",
            attrs={
                "title": _("Change ordering of child pages of '%(title)s'")
                % {"title": page.get_admin_display_title()}
            },
            priority=70,
        )
Exemple #21
0
def page_header_buttons(page, page_perms, next_url=None):
    if page_perms.can_edit():
        yield Button(
            _("Edit"),
            reverse("wagtailadmin_pages:edit", args=[page.id]),
            icon_name="edit",
            attrs={
                "title": _("Edit '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=10,
        )
    if page_perms.can_move():
        yield Button(
            _("Move"),
            reverse("wagtailadmin_pages:move", args=[page.id]),
            icon_name="arrow-right-full",
            attrs={
                "title": _("Move page '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=20,
        )
    if page_perms.can_copy():
        url = reverse("wagtailadmin_pages:copy", args=[page.id])
        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Copy"),
            url,
            icon_name="copy",
            attrs={
                "title": _("Copy page '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=30,
        )
    if page_perms.can_add_subpage():
        yield Button(
            _("Add child page"),
            reverse("wagtailadmin_pages:add_subpage", args=[page.id]),
            icon_name="circle-plus",
            attrs={
                "aria-label": _("Add a child page to '%(title)s' ") % {
                    "title": page.get_admin_display_title()
                },
            },
            priority=40,
        )
    if page_perms.can_delete():
        url = reverse("wagtailadmin_pages:delete", args=[page.id])

        # After deleting the page, it is impossible to redirect to it.
        if next_url == reverse("wagtailadmin_explore", args=[page.id]):
            next_url = None

        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Delete"),
            url,
            icon_name="bin",
            attrs={
                "title": _("Delete page '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=50,
        )
    if page_perms.can_unpublish():
        url = reverse("wagtailadmin_pages:unpublish", args=[page.id])
        if next_url:
            url += "?" + urlencode({"next": next_url})

        yield Button(
            _("Unpublish"),
            url,
            icon_name="download-alt",
            attrs={
                "title": _("Unpublish page '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=60,
        )
    if page_perms.can_reorder_children():
        url = reverse("wagtailadmin_explore", args=[page.id])
        url += "?ordering=ord"
        yield Button(
            _("Sort menu order"),
            url,
            icon_name="list-ul",
            attrs={
                "title": _("Change ordering of child pages of '%(title)s'") % {
                    "title": page.get_admin_display_title()
                }
            },
            priority=70,
        )
    if Permission.objects.filter(content_type__app_label="simple_translation",
                                 codename="submit_translation"):
        if (page_perms.user.has_perm("simple_translation.submit_translation")
                and not page.is_root()):
            # If there's at least one locale that we haven't translated into yet, show "Translate this page" button
            has_locale_to_translate_to = Locale.objects.exclude(
                id__in=page.get_translations(inclusive=True).values_list(
                    "locale_id", flat=True)).exists()

            if has_locale_to_translate_to:
                url = reverse("simple_translation:submit_page_translation",
                              args=[page.id])
                yield Button(
                    _("Translate"),
                    url,
                    icon_name="globe",
                    attrs={
                        "title": _("Translate this page") % {
                            "title": page.get_admin_display_title()
                        }
                    },
                    priority=80,
                )