123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- (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);
|