Example #1
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()},
                '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
    )
Example #2
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
    )
Example #3
0
def page_listing_variant_buttons(page, page_perms, is_parent=False):
    """Adds page listing buttons to personalisable pages. Shows variants for
    the page (if any) and a 'Create a new variant' button.

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

    metadata = page.personalisation_metadata
    if metadata.is_canonical:
        yield ButtonWithDropdownFromHook(
            _('Variants'),
            hook_name='register_page_listing_variant_buttons',
            page=page,
            page_perms=page_perms,
            is_parent=is_parent,
            attrs={'target': '_blank', 'title': _('Create or edit a variant')},
            priority=100)
Example #4
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,
    )
Example #5
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)