From 82dc0ab2f6928be28502434c1ddc19d113403f60 Mon Sep 17 00:00:00 2001 From: Dave Cranwell Date: Thu, 19 Feb 2015 17:25:33 +0000 Subject: [PATCH] adding ability to link user to chosen page --- .../static/wagtailadmin/js/page-chooser.js | 2 ++ .../static/wagtailadmin/scss/components/forms.scss | 10 ++++++++++ .../templates/wagtailadmin/pages/list.html | 4 ++-- .../templates/wagtailadmin/widgets/chooser.html | 9 +++++---- wagtail/wagtailadmin/widgets.py | 13 +++++++++++++ 5 files changed, 32 insertions(+), 6 deletions(-) diff --git a/wagtail/wagtailadmin/static/wagtailadmin/js/page-chooser.js b/wagtail/wagtailadmin/static/wagtailadmin/js/page-chooser.js index b1e4b849f5..b3488e05ad 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/js/page-chooser.js +++ b/wagtail/wagtailadmin/static/wagtailadmin/js/page-chooser.js @@ -2,6 +2,7 @@ function createPageChooser(id, pageType, openAtParentId) { var chooserElement = $('#' + id + '-chooser'); var pageTitle = chooserElement.find('.title'); var input = $('#' + id); + var editLink = chooserElement.find('.edit-link'); $('.action-choose', chooserElement).click(function() { var initialUrl = window.chooserUrls.pageChooser; @@ -17,6 +18,7 @@ function createPageChooser(id, pageType, openAtParentId) { openAtParentId = pageData.parentId; pageTitle.text(pageData.title); chooserElement.removeClass('blank'); + editLink.attr('href', pageData.editUrl); } } }); diff --git a/wagtail/wagtailadmin/static/wagtailadmin/scss/components/forms.scss b/wagtail/wagtailadmin/static/wagtailadmin/scss/components/forms.scss index 2639eb2446..dea39c69ba 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/scss/components/forms.scss +++ b/wagtail/wagtailadmin/static/wagtailadmin/scss/components/forms.scss @@ -655,6 +655,16 @@ ul.inline li:first-child, li.inline:first-child{ display: none; } + .actions{ + overflow:hidden; + @include clearfix; + + li{ + float:left; + margin:0.3em; + } + } + /* ...unless the .page-chooser has the 'blank' class set */ &.blank { .chosen { display: none; } diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/pages/list.html b/wagtail/wagtailadmin/templates/wagtailadmin/pages/list.html index 367e2dd2de..8c620ae238 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/pages/list.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/pages/list.html @@ -48,7 +48,7 @@ {% elif choosing %}

{% if parent_page.can_choose %} - {{ parent_page.title }} + {{ parent_page.title }} {% else %} {{ parent_page.title }} {% endif %} @@ -183,7 +183,7 @@ {% endif %} {% elif choosing %} {% if page.can_choose %} - {{ page.title }} + {{ page.title }} {% else %} {{ page.title }} {% endif %} diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/widgets/chooser.html b/wagtail/wagtailadmin/templates/wagtailadmin/widgets/chooser.html index cc5e9218f0..aff5c34481 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/widgets/chooser.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/widgets/chooser.html @@ -12,12 +12,13 @@
{% block chosen_state_view %}{% endblock %} -
+
    {% if not widget.is_required %} - +
  • {% endif %} - -
+
  • +
  • {{ widget.link_to_chosen_text }}
  • +
    diff --git a/wagtail/wagtailadmin/widgets.py b/wagtail/wagtailadmin/widgets.py index ae127f2bb5..2031821f42 100644 --- a/wagtail/wagtailadmin/widgets.py +++ b/wagtail/wagtailadmin/widgets.py @@ -41,6 +41,8 @@ class AdminChooser(WidgetWithScript, widgets.Input): choose_one_text = _("Choose an item") choose_another_text = _("Choose another item") clear_choice_text = _("Clear choice") + link_to_chosen_url = "#" + link_to_chosen_text = _("Edit this item") def get_instance(self, model_class, value): # helper method for cleanly turning 'value' into an instance object @@ -68,6 +70,10 @@ class AdminChooser(WidgetWithScript, widgets.Input): self.choose_another_text = kwargs.pop('choose_another_text') if 'clear_choice_text' in kwargs: self.clear_choice_text = kwargs.pop('clear_choice_text') + if 'link_to_chosen_text' in kwargs: + self.link_to_chosen_text = kwargs.pop('link_to_chosen_text') + if 'link_to_chosen_url' in kwargs: + self.link_to_chosen_url = kwargs.pop('link_to_chosen_url') super(AdminChooser, self).__init__(**kwargs) @@ -75,6 +81,8 @@ class AdminPageChooser(AdminChooser): target_content_type = None choose_one_text = _('Choose a page') choose_another_text = _('Choose another page') + link_to_chosen_url = "" + link_to_chosen_text = _('Edit this page') def __init__(self, content_type=None, **kwargs): super(AdminPageChooser, self).__init__(**kwargs) @@ -86,6 +94,11 @@ class AdminPageChooser(AdminChooser): model_class = self.target_content_type.model_class() instance = self.get_instance(model_class, value) + try: + self.link_to_chosen_url = reverse('wagtailadmin_pages_edit', args=(instance.id,)) + except AttributeError: + pass + return render_to_string("wagtailadmin/widgets/page_chooser.html", { 'widget': self, 'original_field_html': original_field_html,