From 725c5edff697784c22a9873d8af53780f1ad0ca2 Mon Sep 17 00:00:00 2001 From: Dave Cranwell Date: Mon, 7 Jul 2014 15:11:52 +0100 Subject: [PATCH 1/3] Changed explorer menu to be loaded only on request, to prevent bloating of html --- .../static/wagtailadmin/js/core.js | 49 +++++++++---------- .../static/wagtailadmin/scss/core.scss | 10 +++- .../templates/wagtailadmin/admin_base.html | 3 ++ .../templates/wagtailadmin/base.html | 6 +-- .../wagtailadmin/shared/explorer_nav.html | 14 ++---- .../shared/explorer_nav_child.html | 13 +++++ .../templatetags/wagtailadmin_tags.py | 6 +-- wagtail/wagtailadmin/urls.py | 2 + wagtail/wagtailadmin/views/pages.py | 8 ++- 9 files changed, 65 insertions(+), 46 deletions(-) create mode 100644 wagtail/wagtailadmin/templates/wagtailadmin/shared/explorer_nav_child.html diff --git a/wagtail/wagtailadmin/static/wagtailadmin/js/core.js b/wagtail/wagtailadmin/static/wagtailadmin/js/core.js index 85c4ca31e0..3929356add 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/js/core.js +++ b/wagtail/wagtailadmin/static/wagtailadmin/js/core.js @@ -12,7 +12,7 @@ $(function(){ $('body').addClass('ready'); // Enable toggle to open/close nav - $('#nav-toggle').click(function(){ + $(document).on('click', '#nav-toggle', function(){ $('body').toggleClass('nav-open'); if(!$('body').hasClass('nav-open')){ $('body').addClass('nav-closed'); @@ -21,12 +21,30 @@ $(function(){ } }); - // Enable swishy section navigation menu - $('.explorer').addClass('dl-menuwrapper').dlmenu({ - animationClasses : { - classin : 'dl-animate-in-2', - classout : 'dl-animate-out-2' + // Dynamically load menu on request. + $(document).on('click', '.dl-trigger', function(){ + var $this = $(this); + var $explorer = $('#explorer'); + + $this.addClass('icon-spinner'); + + if(!$explorer.children().length){ + $explorer.load(window.explorer_menu_url, function() { + $this.removeClass('icon-spinner'); + + $explorer.addClass('dl-menuwrapper').dlmenu({ + animationClasses : { + classin : 'dl-animate-in-2', + classout : 'dl-animate-out-2' + } + }); + $explorer.dlmenu('openMenu'); + }); + }else{ + $explorer.dlmenu('openMenu'); } + + return false; }); // Resize nav to fit height of window. This is an unimportant bell/whistle to make it look nice @@ -35,9 +53,6 @@ $(function(){ $('.nav-main').each(function(){ var thisHeight = $(this).height(); var footerHeight = $('.footer', $(this)).height(); - - // $(this).css({'height':thisHeight - footerHeight, 'overflow-y':'scroll'}); - // $('> ul', $(this)).height(thisHeight) }); }; fitNav(); @@ -86,22 +101,6 @@ $(function(){ } }); - /* Bulk-selection */ - $(document).on('click', 'thead .bulk', function(){ - $(this).closest('table').find('tbody .bulk input').each(function(){ - $(this).prop('checked', !$(this).prop('checked')); - }); - }); - - $('#menu-search input').bind('focus', function(){ - $('#menu-search').addClass('focussed'); - }).bind('blur', function(){ - $('#menu-search').removeClass('focussed'); - }); - $('#menu-search').bind('focus click', function(){ - $(this).addClass('focussed'); - }); - /* Header search behaviour */ if(window.headerSearch){ var search_current_index = 0; diff --git a/wagtail/wagtailadmin/static/wagtailadmin/scss/core.scss b/wagtail/wagtailadmin/static/wagtailadmin/scss/core.scss index 55e27b067e..44349f1161 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/scss/core.scss +++ b/wagtail/wagtailadmin/static/wagtailadmin/scss/core.scss @@ -163,7 +163,6 @@ img{ } .nav-main{ - top: 43px; bottom: 0px; overflow: auto; @@ -226,6 +225,15 @@ img{ &:hover{ color:white; } + + /* only really used for spinners */ + &:after{ + font-size:1.5em; + margin:0; + position:absolute; + right:0.5em; + margin-top:0.15em; + } } .avatar{ diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/admin_base.html b/wagtail/wagtailadmin/templates/wagtailadmin/admin_base.html index 0cae459a23..1c26a8d145 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/admin_base.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/admin_base.html @@ -22,6 +22,9 @@ + {% endcompress %} {% block extra_js %}{% endblock %} diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/base.html b/wagtail/wagtailadmin/templates/wagtailadmin/base.html index ef6f9d57ad..c7a89def7a 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/base.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/base.html @@ -8,11 +8,7 @@ {% main_nav %} - +
diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/shared/explorer_nav.html b/wagtail/wagtailadmin/templates/wagtailadmin/shared/explorer_nav.html index 4d2cce7125..5c46f217c2 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/shared/explorer_nav.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/shared/explorer_nav.html @@ -1,13 +1,5 @@ {% load wagtailadmin_tags %} -{% for page, children in nodes %} -
  • - {{ page.title }} - {% if children %} -
    -
      - {% explorer_subnav children %} -
    - {% endif %} -
  • -{% endfor %} + \ No newline at end of file diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/shared/explorer_nav_child.html b/wagtail/wagtailadmin/templates/wagtailadmin/shared/explorer_nav_child.html new file mode 100644 index 0000000000..c2d0115409 --- /dev/null +++ b/wagtail/wagtailadmin/templates/wagtailadmin/shared/explorer_nav_child.html @@ -0,0 +1,13 @@ +{% load wagtailadmin_tags %} + +{% for page, children in nodes %} +
  • + {{ page.title }} + {% if children %} +
    +
      + {% explorer_subnav children %} +
    + {% endif %} +
  • +{% endfor %} \ No newline at end of file diff --git a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py index f3c871507a..9aa4783ffb 100644 --- a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py +++ b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py @@ -7,7 +7,7 @@ from django.utils.translation import ugettext_lazy as _ from wagtail.wagtailadmin.menu import MenuItem from wagtail.wagtailcore import hooks -from wagtail.wagtailcore.models import get_navigation_menu_items, UserPagePermissionsProxy +from wagtail.wagtailcore.models import UserPagePermissionsProxy from wagtail.wagtailcore.utils import camelcase_to_underscore @@ -21,7 +21,7 @@ def explorer_nav(): } -@register.inclusion_tag('wagtailadmin/shared/explorer_nav.html') +@register.inclusion_tag('wagtailadmin/shared/explorer_nav_child.html') def explorer_subnav(nodes): return { 'nodes': nodes @@ -31,7 +31,7 @@ def explorer_subnav(nodes): @register.inclusion_tag('wagtailadmin/shared/main_nav.html', takes_context=True) def main_nav(context): menu_items = [ - MenuItem(_('Explorer'), '#', classnames='icon icon-folder-open-inverse dl-trigger', order=100), + MenuItem(_('Explorer'), urlresolvers.reverse('wagtailadmin_explore_root'), classnames='icon icon-folder-open-inverse dl-trigger', order=100), MenuItem(_('Search'), urlresolvers.reverse('wagtailadmin_pages_search'), classnames='icon icon-search', order=200), ] diff --git a/wagtail/wagtailadmin/urls.py b/wagtail/wagtailadmin/urls.py index 89be5cf171..6d124efc36 100644 --- a/wagtail/wagtailadmin/urls.py +++ b/wagtail/wagtailadmin/urls.py @@ -38,6 +38,8 @@ urlpatterns += [ url(r'^failwhale/$', home.error_test, name='wagtailadmin_error_test'), + url(r'^explorer-nav/$', pages.explorer_nav, name='wagtailadmin_explorer_nav'), + url(r'^pages/$', pages.index, name='wagtailadmin_explore_root'), url(r'^pages/(\d+)/$', pages.index, name='wagtailadmin_explore'), diff --git a/wagtail/wagtailadmin/views/pages.py b/wagtail/wagtailadmin/views/pages.py index 013ce40c00..900da5ab9e 100644 --- a/wagtail/wagtailadmin/views/pages.py +++ b/wagtail/wagtailadmin/views/pages.py @@ -17,9 +17,15 @@ from wagtail.wagtailadmin.forms import SearchForm from wagtail.wagtailadmin import tasks, signals from wagtail.wagtailcore import hooks -from wagtail.wagtailcore.models import Page, PageRevision +from wagtail.wagtailcore.models import Page, PageRevision, get_navigation_menu_items from wagtail.wagtailcore.signals import page_published +@permission_required('wagtailadmin.access_admin') +def explorer_nav(request): + return render(request, 'wagtailadmin/shared/explorer_nav.html', { + 'nodes': get_navigation_menu_items(), + }) + @permission_required('wagtailadmin.access_admin') def index(request, parent_page_id=None): From 5cd83f0216e96ffc026a2789d54eeaf3ee7e18ef Mon Sep 17 00:00:00 2001 From: Dave Cranwell Date: Mon, 7 Jul 2014 15:14:33 +0100 Subject: [PATCH 2/3] put back missing import --- wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py index 9aa4783ffb..92f2d141ae 100644 --- a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py +++ b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py @@ -7,7 +7,7 @@ from django.utils.translation import ugettext_lazy as _ from wagtail.wagtailadmin.menu import MenuItem from wagtail.wagtailcore import hooks -from wagtail.wagtailcore.models import UserPagePermissionsProxy +from wagtail.wagtailcore.models import get_navigation_menu_items, UserPagePermissionsProxy from wagtail.wagtailcore.utils import camelcase_to_underscore From bdc13c9ca821fee5e9ea8952c1da286f257ad4b6 Mon Sep 17 00:00:00 2001 From: Dave Cranwell Date: Mon, 7 Jul 2014 15:21:26 +0100 Subject: [PATCH 3/3] pep8 fix --- wagtail/wagtailadmin/views/pages.py | 1 + 1 file changed, 1 insertion(+) diff --git a/wagtail/wagtailadmin/views/pages.py b/wagtail/wagtailadmin/views/pages.py index 900da5ab9e..cfcedc7570 100644 --- a/wagtail/wagtailadmin/views/pages.py +++ b/wagtail/wagtailadmin/views/pages.py @@ -20,6 +20,7 @@ from wagtail.wagtailcore import hooks from wagtail.wagtailcore.models import Page, PageRevision, get_navigation_menu_items from wagtail.wagtailcore.signals import page_published + @permission_required('wagtailadmin.access_admin') def explorer_nav(request): return render(request, 'wagtailadmin/shared/explorer_nav.html', {