123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- (function ($) {
- Drupal.behaviors.dashboard = {
- attach: function (context, settings) {
- $('#dashboard', context).once(function () {
- $(this).prepend('<div class="customize clearfix"><ul class="action-links"><li><a href="#">' + Drupal.t('Customize dashboard') + '</a></li></ul><div class="canvas"></div></div>');
- $('.customize .action-links a', this).click(Drupal.behaviors.dashboard.enterCustomizeMode);
- });
- Drupal.behaviors.dashboard.addPlaceholders();
- if (Drupal.settings.dashboard.launchCustomize) {
- Drupal.behaviors.dashboard.enterCustomizeMode();
- }
- },
- addPlaceholders: function() {
- $('#dashboard .dashboard-region .region').each(function () {
- var empty_text = "";
-
- if ($('.block', this).length == 0) {
-
- if ($('#dashboard').hasClass('customize-mode')) {
- empty_text = Drupal.settings.dashboard.emptyRegionTextActive;
- } else {
- empty_text = Drupal.settings.dashboard.emptyRegionTextInactive;
- }
-
- if ($('.dashboard-placeholder', this).length == 0) {
- $(this).append('<div class="dashboard-placeholder"></div>');
- }
- $('.dashboard-placeholder', this).html(empty_text);
- }
- else {
- $('.dashboard-placeholder', this).remove();
- }
- });
- },
-
- enterCustomizeMode: function () {
- $('#dashboard').addClass('customize-mode customize-inactive');
- Drupal.behaviors.dashboard.addPlaceholders();
-
- $('#dashboard .customize .action-links').hide();
-
- $('div.customize .canvas').load(Drupal.settings.dashboard.drawer, Drupal.behaviors.dashboard.setupDrawer);
- },
-
- exitCustomizeMode: function () {
- $('#dashboard').removeClass('customize-mode customize-inactive');
- Drupal.behaviors.dashboard.addPlaceholders();
- location.href = Drupal.settings.dashboard.dashboard;
- },
-
- setupDrawer: function () {
- $('div.customize .canvas-content input').click(Drupal.behaviors.dashboard.exitCustomizeMode);
- $('div.customize .canvas-content').append('<a class="button" href="' + Drupal.settings.dashboard.dashboard + '">' + Drupal.t('Done') + '</a>');
-
- var regions = $('#dashboard div.region');
- regions.sortable({
- connectWith: regions,
- cursor: 'move',
- cursorAt: {top:0},
- dropOnEmpty: true,
- items: '> div.block, > div.disabled-block',
- placeholder: 'block-placeholder clearfix',
- tolerance: 'pointer',
- start: Drupal.behaviors.dashboard.start,
- over: Drupal.behaviors.dashboard.over,
- sort: Drupal.behaviors.dashboard.sort,
- update: Drupal.behaviors.dashboard.update
- });
- },
-
- start: function (event, ui) {
- $('#dashboard').removeClass('customize-inactive');
- var item = $(ui.item);
-
- if (!item.hasClass('disabled-block')) {
- item.css({height: 'auto'});
- }
- },
-
- over: function (event, ui) {
- var item = $(ui.item);
-
- if ($(this).closest('#disabled-blocks').length) {
- item.css('width', '');
- }
- else {
- item.css('width', $(this).width());
- }
- },
-
- sort: function (event, ui) {
- var item = $(ui.item);
- if (event.pageX > ui.offset.left + item.width()) {
- item.css('left', event.pageX);
- }
- },
-
- update: function (event, ui) {
- $('#dashboard').addClass('customize-inactive');
- var item = $(ui.item);
-
- if (item.hasClass('disabled-block')) {
- var module, delta, itemClass;
- itemClass = item.attr('class');
-
- module = itemClass.match(/\bmodule-(\S+)\b/)[1];
- delta = itemClass.match(/\bdelta-(\S+)\b/)[1];
-
- $.get(Drupal.settings.dashboard.blockContent + '/' + module + '/' + delta, {},
- function (block) {
- if (block) {
- item.html(block);
- }
- if (item.find('div.content').is(':empty')) {
- item.find('div.content').html(Drupal.settings.dashboard.emptyBlockText);
- }
- Drupal.attachBehaviors(item);
- },
- 'html'
- );
-
-
- item.removeClass("disabled-block");
- }
- Drupal.behaviors.dashboard.addPlaceholders();
-
- $.post(Drupal.settings.dashboard.updatePath, {
- 'form_token': Drupal.settings.dashboard.formToken,
- 'regions': Drupal.behaviors.dashboard.getOrder
- }
- );
- },
-
- getOrder: function () {
- var order = [];
- $('#dashboard div.region').each(function () {
- var region = $(this).parent().attr('id').replace(/-/g, '_');
- var blocks = $(this).sortable('toArray');
- $.each(blocks, function() {
- order.push(region + '[]=' + this);
- });
- });
- order = order.join('&');
- return order;
- }
- };
- })(jQuery);
|