first import
This commit is contained in:
257
sites/all/modules/admin/includes/admin.toolbar.js
Normal file
257
sites/all/modules/admin/includes/admin.toolbar.js
Normal file
@@ -0,0 +1,257 @@
|
||||
(function($) {
|
||||
|
||||
Drupal.behaviors.adminToolbar = {};
|
||||
Drupal.behaviors.adminToolbar.attach = function(context) {
|
||||
$('#admin-toolbar:not(.processed)').each(function() {
|
||||
var toolbar = $(this);
|
||||
toolbar.addClass('processed');
|
||||
|
||||
// Set initial toolbar state.
|
||||
Drupal.adminToolbar.init(toolbar);
|
||||
|
||||
// Admin toggle.
|
||||
$('.admin-toggle', this).click(function() { Drupal.adminToolbar.toggle(toolbar); });
|
||||
|
||||
// Admin tabs.
|
||||
$('div.admin-tab', this).click(function() { Drupal.adminToolbar.tab(toolbar, $(this), true); });
|
||||
|
||||
$(document).bind('drupalOverlayLoad', {adminToolbar: Drupal.adminToolbar, toolbar: toolbar}, function(event) {
|
||||
var body = $(document.body);
|
||||
var adminToolbar = event.data.adminToolbar;
|
||||
var expand = parseInt(adminToolbar.getState('expanded'));
|
||||
if (!expand) {
|
||||
return;
|
||||
}
|
||||
var toolbar = event.data.toolbar;
|
||||
var size = adminToolbar.SIZE + 'px';
|
||||
adminToolbar.setOverlayState(toolbar, toolbar.is('.vertical'), expand);
|
||||
});
|
||||
});
|
||||
$('div.admin-panes:not(.processed)').each(function() {
|
||||
var panes = $(this);
|
||||
panes.addClass('processed');
|
||||
|
||||
$('h2.admin-pane-title a').click(function() {
|
||||
var target = $(this).attr('href').split('#')[1];
|
||||
var panes = $(this).parents('div.admin-panes')[0];
|
||||
$('.admin-pane-active', panes).removeClass('admin-pane-active');
|
||||
$('div.admin-pane.' + target, panes).addClass('admin-pane-active');
|
||||
$(this).addClass('admin-pane-active');
|
||||
return false;
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Admin toolbar methods.
|
||||
*/
|
||||
Drupal.adminToolbar = {};
|
||||
|
||||
/**
|
||||
* The width or height of the toolbar, depending on orientation.
|
||||
*/
|
||||
Drupal.adminToolbar.SIZE = 260;
|
||||
|
||||
/**
|
||||
* Set the initial state of the toolbar.
|
||||
*/
|
||||
Drupal.adminToolbar.init = function (toolbar) {
|
||||
// Set expanded state.
|
||||
var expanded = this.getState('expanded');
|
||||
if (!$(document.body).hasClass('admin-ah')) {
|
||||
if (expanded == 1) {
|
||||
$(document.body).addClass('admin-expanded');
|
||||
}
|
||||
}
|
||||
|
||||
// Set default tab state.
|
||||
var target = this.getState('activeTab');
|
||||
if (target) {
|
||||
if ($('div.admin-tab.'+target).size() > 0) {
|
||||
var tab = $('div.admin-tab.'+target);
|
||||
this.tab(toolbar, tab, false);
|
||||
}
|
||||
}
|
||||
|
||||
// Add layout class to body.
|
||||
var classes = toolbar.attr('class').split(' ');
|
||||
if (classes[0] === 'nw' || classes[0] === 'ne' || classes[0] === 'se' || classes[0] === 'sw' ) {
|
||||
$(document.body).addClass('admin-'+classes[0]);
|
||||
}
|
||||
if (classes[1] === 'horizontal' || classes[1] === 'vertical') {
|
||||
$(document.body).addClass('admin-'+classes[1]);
|
||||
}
|
||||
if (classes[2] === 'df' || classes[2] === 'ah') {
|
||||
$(document.body).addClass('admin-'+classes[2]);
|
||||
}
|
||||
|
||||
var vertical = true;
|
||||
if(classes[1] === 'horizontal') {
|
||||
vertical = false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the active tab.
|
||||
*/
|
||||
Drupal.adminToolbar.tab = function(toolbar, tab, animate) {
|
||||
if (!tab.is('.admin-tab-active')) {
|
||||
var target = $('span', tab).attr('id').split('admin-tab-')[1];
|
||||
|
||||
// Vertical
|
||||
// Use animations to make the vertical tab transition a bit smoother.
|
||||
if (toolbar.is('.vertical') && animate) {
|
||||
$('.admin-tab-active', toolbar).fadeOut('fast');
|
||||
$(tab).fadeOut('fast', function() {
|
||||
$('.admin-tab-active', toolbar).fadeIn('fast').removeClass('admin-tab-active');
|
||||
$(tab).slideDown('fast').addClass('admin-tab-active');
|
||||
Drupal.adminToolbar.setState('activeTab', target);
|
||||
});
|
||||
}
|
||||
// Horizontal
|
||||
// Tabs don't need animation assistance.
|
||||
else {
|
||||
$('div.admin-tab', toolbar).removeClass('admin-tab-active');
|
||||
$(tab, toolbar).addClass('admin-tab-active');
|
||||
Drupal.adminToolbar.setState('activeTab', target);
|
||||
}
|
||||
|
||||
// Blocks
|
||||
$('div.admin-block.admin-active', toolbar).removeClass('admin-active');
|
||||
$('#block-'+target, toolbar).addClass('admin-active');
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the width/height of the of the overlay body based on the state admin toolbar.
|
||||
*
|
||||
* @param vertical
|
||||
* A boolean indicating if the toolbar is vertical.
|
||||
* @param expanded
|
||||
* A boolean indicating if the toolbar is expanded.
|
||||
*/
|
||||
Drupal.adminToolbar.setOverlayState = function(toolbar, vertical, expanded) {
|
||||
var margin,
|
||||
size = this.SIZE + 65;
|
||||
if (!expanded) {
|
||||
size = 0;
|
||||
}
|
||||
|
||||
margin = {marginLeft: size+'px'};
|
||||
if (vertical) {
|
||||
if (toolbar.is('.ne') || toolbar.is('.se')) {
|
||||
margin = {marginRight: size+'px'}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (toolbar.is('.ne') || toolbar.is('.nw')) {
|
||||
margin = {marginTop: size+'px'};
|
||||
}
|
||||
else {
|
||||
margin = {marginBottom: size+'px'};
|
||||
}
|
||||
}
|
||||
$('iframe.overlay-element').contents().find('body').animate(margin, 'fast');
|
||||
};
|
||||
|
||||
/**
|
||||
* Toggle the toolbar open or closed.
|
||||
*/
|
||||
Drupal.adminToolbar.toggle = function (toolbar) {
|
||||
var size = '0px';
|
||||
if ($(document.body).is('.admin-expanded')) {
|
||||
if ($(toolbar).is('.vertical')) {
|
||||
$('div.admin-blocks', toolbar).animate({width:size}, 'fast');
|
||||
if ($(toolbar).is('.nw') || $(toolbar).is('.sw')) {
|
||||
$(document.body).animate({marginLeft:size}, 'fast', function() { $(this).toggleClass('admin-expanded'); });
|
||||
}
|
||||
else {
|
||||
$(document.body).animate({marginRight:size}, 'fast', function() { $(this).toggleClass('admin-expanded'); });
|
||||
}
|
||||
this.setOverlayState(toolbar, true, false);
|
||||
}
|
||||
else {
|
||||
$('div.admin-blocks', toolbar).animate({height:size}, 'fast');
|
||||
if ($(toolbar).is('.nw') || $(toolbar).is('.ne')) {
|
||||
$(document.body).animate({marginTop:size}, 'fast', function() { $(this).toggleClass('admin-expanded'); });
|
||||
}
|
||||
else {
|
||||
$(document.body).animate({marginBottom:size}, 'fast', function() { $(this).toggleClass('admin-expanded'); });
|
||||
}
|
||||
this.setOverlayState(toolbar, false, false);
|
||||
}
|
||||
this.setState('expanded', 0);
|
||||
}
|
||||
else {
|
||||
size = this.SIZE + 'px';
|
||||
if ($(toolbar).is('.vertical')) {
|
||||
$('div.admin-blocks', toolbar).animate({width:size}, 'fast');
|
||||
if ($(toolbar).is('.nw') || $(toolbar).is('.sw')) {
|
||||
$(document.body).animate({marginLeft:size}, 'fast', function() { $(this).toggleClass('admin-expanded'); });
|
||||
}
|
||||
else {
|
||||
$(document.body).animate({marginRight:size}, 'fast', function() { $(this).toggleClass('admin-expanded'); });
|
||||
}
|
||||
this.setOverlayState(toolbar, true, true);
|
||||
}
|
||||
else {
|
||||
$('div.admin-blocks', toolbar).animate({height:size}, 'fast');
|
||||
if ($(toolbar).is('.nw') || $(toolbar).is('.ne')) {
|
||||
$(document.body).animate({marginTop:size}, 'fast', function() { $(this).toggleClass('admin-expanded'); });
|
||||
}
|
||||
else {
|
||||
$(document.body).animate({marginBottom:size}, 'fast', function() { $(this).toggleClass('admin-expanded'); });
|
||||
}
|
||||
this.setOverlayState(toolbar, false, true);
|
||||
}
|
||||
if ($(document.body).hasClass('admin-ah')) {
|
||||
this.setState('expanded', 0);
|
||||
}
|
||||
else {
|
||||
this.setState('expanded', 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the value of a cookie variable.
|
||||
*/
|
||||
Drupal.adminToolbar.getState = function(key) {
|
||||
if (!Drupal.adminToolbar.state) {
|
||||
Drupal.adminToolbar.state = {};
|
||||
var cookie = $.cookie('DrupalAdminToolbar');
|
||||
var query = cookie ? cookie.split('&') : [];
|
||||
if (query) {
|
||||
for (var i in query) {
|
||||
// Extra check to avoid js errors in Chrome, IE and Safari when
|
||||
// combined with JS like twitter's widget.js.
|
||||
// See http://drupal.org/node/798764.
|
||||
if (typeof(query[i]) == 'string' && query[i].indexOf('=') != -1) {
|
||||
var values = query[i].split('=');
|
||||
if (values.length === 2) {
|
||||
Drupal.adminToolbar.state[values[0]] = values[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Drupal.adminToolbar.state[key] ? Drupal.adminToolbar.state[key] : false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the value of a cookie variable.
|
||||
*/
|
||||
Drupal.adminToolbar.setState = function(key, value) {
|
||||
var existing = Drupal.adminToolbar.getState(key);
|
||||
if (existing != value) {
|
||||
Drupal.adminToolbar.state[key] = value;
|
||||
var query = [];
|
||||
for (var i in Drupal.adminToolbar.state) {
|
||||
query.push(i + '=' + Drupal.adminToolbar.state[i]);
|
||||
}
|
||||
$.cookie('DrupalAdminToolbar', query.join('&'), {expires: 7, path: '/'});
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user