Bachir Soussi Chiadmi 1bc61b12ad first import
2015-04-08 11:40:19 +02:00

141 lines
5.6 KiB
JavaScript

(function ($) {
//create ajax commands to be used from the drupal ajax api
Drupal.ajax.prototype.commands['getBlock'] = function(ajax, response, status) {
var box = $(this).parents('.boxes-box');
data = response;
$.ajax({
type: "GET",
url: data.url,
data: { 'boxes_delta': data.delta },
global: true,
success: function(response, status) {
if($('#boxes-box-form').dialog('isOpen')){
$('#boxes-box-form').dialog('close');
}
$('.hasPopup').removeClass('hasPopup');
box.removeClass('boxes-box-editing').find('.box-editor').remove().end().find('.boxes-box-content').show();
ajax.success(response, status);
},
error: Drupal.ajax.error,
dataType: 'json'
});
};
Drupal.ajax.prototype.commands['showBoxForm'] = function(ajax, response, status) {
if(!$('#boxes-box-form').size() || !$('#boxes-box-form').dialog('isOpen')){
Drupal.ajax.prototype.commands.insert(ajax, response, status);
$(response.selector).addClass('hasPopup');
$('#boxes-box-form')
.dialog({
modal : true,
close: function(e){
//handle someone closing the box without clicking any buttons
if (Drupal.wysiwygDetach && $('.wysiwyg', this).val()) {
var item = $('.wysiwyg', this)[0];
var params = Drupal.settings.wysiwyg.triggers[item.id];
Drupal.wysiwygDetach(this, params['format'+$(item).val()])
}
$(response.selector).removeClass('hasPopup').html(Drupal.t('Loading...'));
$('.boxes-ajax.use-ajax-submit.form-submit[value="Cancel"]').click();
$(this).dialog('destroy').remove();
},
open: function(ui, event){
$(this).siblings('.ui-dialog-titlebar').children('.ui-dialog-titlebar-close').click(function(e){
$('.boxes-ajax.use-ajax-submit.form-submit[value="Cancel"]').click();
});
},
width: Math.min($(window).width() * .75, 750),
height: Math.min($(window).height() * .75, 750),
title : Drupal.t('Edit Box')
});
} else {
//change the selector to just update the current form - in place (in the popup)
response.selector = '#boxes-box-form';
Drupal.ajax.prototype.commands.insert(ajax, response, status);
}
};
Drupal.behaviors.boxes = {
attach: function(context, settings) {
$('div.boxes-box-controls a:not(.boxes-processed)')
.addClass('boxes-processed')
.click(function() {
// If we are not using edit-in-place, bail.
if (this.href.indexOf('/admin/structure/block/manage/boxes/') != -1) {
return;
}
var box = $(this).parents('.boxes-box');
if (box.is('.boxes-box-editing')) {
box.removeClass('boxes-box-editing').find('.box-editor').remove().end().find('.boxes-box-content').show();
}
else {
// Show editing form - the form itself gets loaded via ajax..
box.find('.boxes-box-content').hide().end().addClass('boxes-box-editing').prepend('<div class="box-editor"><div class="swirly"></div></div>');
}
return false;
});
Drupal.ajax.prototype.commands['preReplaceContextBlock'] = function(ajax, response, status) {
data = response
Drupal.settings.boxes = Drupal.settings.boxes || {};
var e = $('#' + data.id + ' a.context-block:first').clone();
Drupal.settings.boxes[data.id] = e;
};
Drupal.ajax.prototype.commands['postReplaceContextBlock'] = function(ajax, response, status) {
data = response
$('#' + data.id).append(Drupal.settings.boxes[data.id]);
$('form.context-editor.context-editing').each(function() {
var id = $(this).attr('id');
if (Drupal.contextBlockEditor[id]) {
Drupal.contextBlockEditor[id].initBlocks($('#' + data.id));
}
});
};
//If we have a contextual link to configure the block lets get rid of that and move our edit link
//to the contextual dropdown
$('.boxes-box-controls', context).each(function () {
// See if we are within a panel.
if ($(this).parent().parent().hasClass("pane-content")) {
$(this).hide();
}
if($(this).parents(".block").find(".block-configure").length > 0) {
$(this).parents(".block").find(".block-configure").after($(this).find("li.edit"));
$(this).parents(".block").find(".block-configure").detach();
}
});
// Submit box form if Enter is pressed
$('#boxes-box-form input').keydown(function (e) {
if (!e) {
e = window.event;
}
// Enter
if (e.keyCode == 13) {
e.preventDefault();
// Save is always the first button (see boxes.module)
$('.boxes-ajax.use-ajax-submit.form-submit:first').click();
}
});
//apply the popup form to 'add boxes' also
$('.boxes-box-editing .box-editor #boxes-box-form').not('.processed').addClass('processed').dialog({
modal : true,
close: function(e){
//handle someone closing the box without clicking any buttons
$(this).remove();
},
open: function(event, ui) {
//hide the close button on add on the popup to prevent various annoying errors
$(this).siblings('.ui-dialog-titlebar').children('.ui-dialog-titlebar-close').hide();
},
width: Math.min($(window).width() * .75, 750),
height: Math.min($(window).height() * .75, 750),
title : Drupal.t('Configure Box')
});
}
};
})(jQuery);