kopia lustrzana https://github.com/wagtail/wagtail
Remove Javascript from explorer menu item
rodzic
761b19be96
commit
59f2a5953b
|
@ -1,52 +0,0 @@
|
|||
$(function() {
|
||||
var $explorer = $('#explorer');
|
||||
var $body = $('body');
|
||||
|
||||
// Dynamically load menu on request.
|
||||
$(document).on('click', '.dl-trigger--unused', function() {
|
||||
var $this = $(this);
|
||||
|
||||
// Close all submenus
|
||||
$('.nav-main .submenu-active, .nav-wrapper').removeClass('submenu-active');
|
||||
|
||||
if ($explorer.data('dlmenu') && $explorer.dlmenu('isOpen')) {
|
||||
// if it's already open, allow the menu plugin to close it
|
||||
return false;
|
||||
} else {
|
||||
if (!$explorer.children().length) {
|
||||
$this.addClass('icon-spinner');
|
||||
$explorer.load($this.data('explorer-menu-url'), function() {
|
||||
$this.removeClass('icon-spinner');
|
||||
|
||||
if ($explorer.find('.dl-menu li').length === 0) {
|
||||
/*
|
||||
AJAX fetch returned an empty dl-menu UL, i.e. no pages exist whatsoever.
|
||||
Take the user directly to the page explorer view, since we aren't giving
|
||||
them anything to click on to get there...
|
||||
*/
|
||||
document.location.href = $this.attr('href');
|
||||
}
|
||||
|
||||
$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;
|
||||
});
|
||||
|
||||
// Close menu on ESC key
|
||||
$(document).on('keydown click', function(e) {
|
||||
if ($explorer.data('dlmenu') && $explorer.dlmenu('isOpen') && (e.keyCode == 27 || !e.keyCode)) {
|
||||
$explorer.dlmenu('closeMenu');
|
||||
}
|
||||
});
|
||||
});
|
|
@ -4,11 +4,6 @@ $(function() {
|
|||
$('.nav-main .submenu-trigger').on('click', function() {
|
||||
if ($(this).closest('li').find('.nav-submenu').length) {
|
||||
|
||||
// Close explorer menu, although it may not be instantiated yet
|
||||
if ($explorer.data('dlmenu') && $explorer.dlmenu('isOpen')) {
|
||||
$explorer.dlmenu('closeMenu');
|
||||
}
|
||||
|
||||
// Close other active submenus first, if any
|
||||
if ($('.nav-wrapper.submenu-active').length && !$(this).closest('li').hasClass('submenu-active')) {
|
||||
$('.nav-main .submenu-active, .nav-wrapper').removeClass('submenu-active');
|
||||
|
@ -16,7 +11,7 @@ $(function() {
|
|||
|
||||
$(this).closest('li').toggleClass('submenu-active');
|
||||
$('.nav-wrapper').toggleClass('submenu-active');
|
||||
return false
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1,260 +0,0 @@
|
|||
/**
|
||||
* jquery.dlmenu.js v1.0.1
|
||||
* http://www.codrops.com
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* Copyright 2013, Codrops
|
||||
* http://www.codrops.com
|
||||
*/
|
||||
;( function( $, window, undefined ) {
|
||||
|
||||
'use strict';
|
||||
|
||||
// global
|
||||
var Modernizr = window.Modernizr, $body = $( 'body' );
|
||||
|
||||
$.DLMenu = function( options, element ) {
|
||||
this.$el = $( element );
|
||||
this._init( options );
|
||||
};
|
||||
|
||||
// the options
|
||||
$.DLMenu.defaults = {
|
||||
// classes for the animation effects
|
||||
animationClasses : { classin : 'dl-animate-in-1', classout : 'dl-animate-out-1' },
|
||||
// callback: click a link that has a sub menu
|
||||
// el is the link element (li); name is the level name
|
||||
onLevelClick : function( el, name ) { return false; },
|
||||
// callback: click a link that does not have a sub menu
|
||||
// el is the link element (li); ev is the event obj
|
||||
onLinkClick : function( el, ev ) { return false; }
|
||||
};
|
||||
|
||||
$.DLMenu.prototype = {
|
||||
_init : function( options ) {
|
||||
|
||||
// options
|
||||
this.options = $.extend( true, {}, $.DLMenu.defaults, options );
|
||||
// cache some elements and initialize some variables
|
||||
this._config();
|
||||
|
||||
var animEndEventNames = {
|
||||
'WebkitAnimation' : 'webkitAnimationEnd',
|
||||
'OAnimation' : 'oAnimationEnd',
|
||||
'msAnimation' : 'MSAnimationEnd',
|
||||
'animation' : 'animationend'
|
||||
},
|
||||
transEndEventNames = {
|
||||
'WebkitTransition' : 'webkitTransitionEnd',
|
||||
'MozTransition' : 'transitionend',
|
||||
'OTransition' : 'oTransitionEnd',
|
||||
'msTransition' : 'MSTransitionEnd',
|
||||
'transition' : 'transitionend'
|
||||
};
|
||||
// animation end event name
|
||||
this.animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ] + '.dlmenu';
|
||||
// transition end event name
|
||||
this.transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ] + '.dlmenu',
|
||||
// support for css animations and css transitions
|
||||
this.supportAnimations = Modernizr.cssanimations,
|
||||
this.supportTransitions = Modernizr.csstransitions;
|
||||
|
||||
this._initEvents();
|
||||
|
||||
},
|
||||
_config : function() {
|
||||
this.open = false;
|
||||
this.$trigger = $( '.dl-trigger' );
|
||||
this.$menu = this.$el.children( 'ul.dl-menu' );
|
||||
this.$menuitems = this.$menu.find( 'li:not(.dl-back) .children' );
|
||||
this.$el.find( 'ul.dl-submenu' ).prepend( '<li class="dl-back"><a href="#" class="icon icon-arrow-left">back</a></li>' );
|
||||
this.$back = this.$menu.find( 'li.dl-back' );
|
||||
},
|
||||
_initEvents : function() {
|
||||
|
||||
var self = this;
|
||||
|
||||
this.$trigger.on( 'click.dlmenu', function() {
|
||||
|
||||
if( self.open ) {
|
||||
self._closeMenu();
|
||||
}
|
||||
else {
|
||||
self._openMenu();
|
||||
}
|
||||
return true;
|
||||
|
||||
} );
|
||||
|
||||
this.$menuitems.on( 'click.dlmenu', function( event ) {
|
||||
|
||||
event.stopPropagation();
|
||||
|
||||
var $item = $(this).parent(),
|
||||
$submenu = $item.children( 'ul.dl-submenu' );
|
||||
|
||||
if( $submenu.length > 0 ) {
|
||||
|
||||
var $flyin = $submenu.clone().css( 'opacity', 0 ).insertAfter( self.$menu ),
|
||||
onAnimationEndFn = function() {
|
||||
self.$menu.off( self.animEndEventName ).removeClass( self.options.animationClasses.classout ).addClass( 'dl-subview' );
|
||||
$item.addClass( 'dl-subviewopen' ).parents( '.dl-subviewopen:first' ).removeClass( 'dl-subviewopen' ).addClass( 'dl-subview' );
|
||||
$flyin.remove();
|
||||
};
|
||||
|
||||
setTimeout( function() {
|
||||
$flyin.addClass( self.options.animationClasses.classin );
|
||||
self.$menu.addClass( self.options.animationClasses.classout );
|
||||
if( self.supportAnimations ) {
|
||||
self.$menu.on( self.animEndEventName, onAnimationEndFn );
|
||||
}
|
||||
else {
|
||||
onAnimationEndFn.call();
|
||||
}
|
||||
|
||||
self.options.onLevelClick( $item, $item.children( 'a:first' ).text() );
|
||||
} );
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
else {
|
||||
self.options.onLinkClick( $item, event );
|
||||
}
|
||||
|
||||
} );
|
||||
|
||||
this.$back.on( 'click.dlmenu', function( event ) {
|
||||
|
||||
var $this = $( this ),
|
||||
$submenu = $this.parents( 'ul.dl-submenu:first' ),
|
||||
$item = $submenu.parent(),
|
||||
|
||||
$flyin = $submenu.clone().insertAfter( self.$menu );
|
||||
|
||||
var onAnimationEndFn = function() {
|
||||
self.$menu.off( self.animEndEventName ).removeClass( self.options.animationClasses.classin );
|
||||
$flyin.remove();
|
||||
};
|
||||
|
||||
setTimeout( function() {
|
||||
$flyin.addClass( self.options.animationClasses.classout );
|
||||
self.$menu.addClass( self.options.animationClasses.classin );
|
||||
if( self.supportAnimations ) {
|
||||
self.$menu.on( self.animEndEventName, onAnimationEndFn );
|
||||
}
|
||||
else {
|
||||
onAnimationEndFn.call();
|
||||
}
|
||||
|
||||
$item.removeClass( 'dl-subviewopen' );
|
||||
|
||||
var $subview = $this.parents( '.dl-subview:first' );
|
||||
if( $subview.is( 'li' ) ) {
|
||||
$subview.addClass( 'dl-subviewopen' );
|
||||
}
|
||||
$subview.removeClass( 'dl-subview' );
|
||||
} );
|
||||
|
||||
return false;
|
||||
|
||||
} );
|
||||
|
||||
},
|
||||
|
||||
isOpen: function(){
|
||||
return this.open
|
||||
},
|
||||
|
||||
closeMenu : function() {
|
||||
if( this.open ) {
|
||||
this._closeMenu();
|
||||
}
|
||||
},
|
||||
_closeMenu : function() {
|
||||
var self = this,
|
||||
onTransitionEndFn = function() {
|
||||
self.$menu.off( self.transEndEventName );
|
||||
self._resetMenu();
|
||||
$body.removeClass('explorer-open');
|
||||
};
|
||||
|
||||
this.$menu.removeClass( 'dl-menuopen' );
|
||||
this.$menu.addClass( 'dl-menu-toggle' );
|
||||
this.$trigger.removeClass( 'dl-active' );
|
||||
|
||||
if( this.supportTransitions ) {
|
||||
this.$menu.on( this.transEndEventName, onTransitionEndFn );
|
||||
}
|
||||
else {
|
||||
onTransitionEndFn.call();
|
||||
}
|
||||
|
||||
this.open = false;
|
||||
},
|
||||
openMenu : function() {
|
||||
if( !this.open ) {
|
||||
this._openMenu();
|
||||
}
|
||||
},
|
||||
_openMenu : function() {
|
||||
var self = this;
|
||||
// clicking somewhere else makes the menu close
|
||||
// $body.off( 'click' ).on( 'click.dlmenu', function() {
|
||||
// self._closeMenu() ;
|
||||
// } );
|
||||
this.$menu.addClass( 'dl-menuopen dl-menu-toggle' ).on( this.transEndEventName, function() {
|
||||
$( this ).removeClass( 'dl-menu-toggle' );
|
||||
} );
|
||||
this.$trigger.addClass( 'dl-active' );
|
||||
$body.addClass('explorer-open');
|
||||
$('.explorer').css('top', $(document).scrollTop());
|
||||
this.open = true;
|
||||
},
|
||||
// resets the menu to its original state (first level of options)
|
||||
_resetMenu : function() {
|
||||
this.$menu.removeClass( 'dl-subview' );
|
||||
this.$menuitems.parent().removeClass( 'dl-subview dl-subviewopen' );
|
||||
}
|
||||
};
|
||||
|
||||
var logError = function( message ) {
|
||||
if ( window.console ) {
|
||||
window.console.error( message );
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.dlmenu = function( options ) {
|
||||
if ( typeof options === 'string' ) {
|
||||
var args = Array.prototype.slice.call( arguments, 1 );
|
||||
this.each(function() {
|
||||
var instance = $.data( this, 'dlmenu' );
|
||||
if ( !instance ) {
|
||||
logError( "cannot call methods on dlmenu prior to initialization; " +
|
||||
"attempted to call method '" + options + "'" );
|
||||
return;
|
||||
}
|
||||
if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
|
||||
logError( "no such method '" + options + "' for dlmenu instance" );
|
||||
return;
|
||||
}
|
||||
instance[ options ].apply( instance, args );
|
||||
});
|
||||
}
|
||||
else {
|
||||
this.each(function() {
|
||||
var instance = $.data( this, 'dlmenu' );
|
||||
if ( instance ) {
|
||||
instance._init();
|
||||
}
|
||||
else {
|
||||
instance = $.data( this, 'dlmenu', new $.DLMenu( options, this ) );
|
||||
}
|
||||
});
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
} )( jQuery, window );
|
|
@ -52,7 +52,6 @@
|
|||
<script src="{% static 'wagtailadmin/js/vendor/bootstrap-transition.js' %}"></script>
|
||||
<script src="{% static 'wagtailadmin/js/vendor/bootstrap-modal.js' %}"></script>
|
||||
<script src="{% static 'wagtailadmin/js/vendor/bootstrap-tab.js' %}"></script>
|
||||
<script src="{% static 'wagtailadmin/js/vendor/jquery.dlmenu.js' %}"></script>
|
||||
<script src="{% static 'wagtailadmin/js/vendor/tag-it.js' %}"></script>
|
||||
<script src="{% static 'wagtailadmin/js/core.js' %}"></script>
|
||||
<script src="{% static 'wagtailadmin/js/vendor.js' %}"></script>
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django import forms
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.contrib.staticfiles.templatetags.staticfiles import static
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
@ -18,10 +16,6 @@ from wagtail.wagtailcore.permissions import collection_permission_policy
|
|||
class ExplorerMenuItem(MenuItem):
|
||||
template = 'wagtailadmin/shared/explorer_menu_item.html'
|
||||
|
||||
@property
|
||||
def media(self):
|
||||
return forms.Media(js=[static('wagtailadmin/js/explorer-menu.js')])
|
||||
|
||||
def is_shown(self, request):
|
||||
return user_has_any_page_permission(request.user)
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue