Доброго всем времени суток!
Нужно сделать так, чтобы после успешной отправки сообщения выполнялся скрипт.
Если подробнее
Есть форма созданная с помощью модуля webform. При помощи hook_form_alter отправляется через ajax.
Нужно, чтобы после удачной отправки закрывалось окно colorbox и выводилось сообщение об успешной отправке.
P.S. С API drupal знакомство только начал, поэтому просьба расписать по подробнее.
Комментарии
Подробней с ui.dialog
Drupal.behaviors.blockUiDialog = {
attach: function (context, settings) {
var processMessage = $('<div class="block-ui-dialog-process-message" title="Confirmation">' + Drupal.t("Process ...") + '</div>');
var throbber = '<div class="sas-qform-throbber">' + Drupal.t("Please, wait ...") + '</div>';
processMessage.dialog({
autoOpen: false,
modal: true,
resizable: false,
draggable: false,
hide: "explode",
dialogClass: 'block-ui-dialog-ui-dialog-confirm'
});
function processMessageShow(txt, time, ajaxReloadPageLocal) {
processMessage.html(txt);
setTimeout(function () {
processMessage.dialog('close');
if (ajaxReloadPageLocal) {
window.location = window.location.href;
}
}, time);
};
$('.block-ui-dialog-wr').once().each(function () {
var dialogObj = $(this);
var dialogId = dialogObj.attr('id');
var dialogSwitchObj = $('.block-title', dialogObj);
var dialogWindowInner = $('.content:first', dialogObj);
var dialogSet = settings.blockUiDialog[dialogId];
var customPositionType = settings.blockUiDialog[dialogId].positionType;
var confirm = settings.blockUiDialog[dialogId].ajaxConfirm ? settings.blockUiDialog[dialogId].ajaxConfirm : Drupal.t('Thank you, you will be contacted');
var ajaxReloadPage = settings.blockUiDialog[dialogId].ajaxReloadPage;
dialogSwitchObj.addClass('block-ui-dialog-manager');
// form prevent submit if exists empty input required data
$('form', dialogObj).each(function () {
var thisForm = $(this);
thisForm.addClass('block-ui-dialog-valid-process');
$('.form-submit[type="submit"]', dialogObj).each(function () {
$(this).live('click', function (e) {
var thisSubmit = $(this);
var valid = true;
$('.required', thisForm).each(function () {
if ($(this).val() == '') {
$(this).addClass('error');
valid = false;
} else {
$(this).removeClass('error');
}
});
if (!valid) {
e.preventDefault();
}
});
});
thisForm.ajaxForm({
beforeSubmit: function (data, form, options) {
dialogSwitchObj.trigger('click');
processMessage.html(throbber).dialog('open');
return true;
},
success: function () {
//clear input
$('input.form-text', thisForm).val('');
// show confirm message
processMessageShow(confirm, 1500, ajaxReloadPage);
},
error: function () {
processMessageShow(Drupal.t("Bad Response form submission"), 1500, ajaxReloadPage);
}
});
});
var dialogWin = $('<div class="block-ui-dialog-win-wr"></div>').html(dialogWindowInner).dialog({
autoOpen: dialogSet.autoOpen == 1 ? true : false,
modal: dialogSet.modal == 1 ? true : false,
title: dialogSet.title,
resizable: dialogSet.resizable == 1 ? true : false,
draggable: dialogSet.draggable == 1 ? true : false,
dialogClass: dialogSet.dialogClass,
beforeClose: function (event, ui) {
dialogSwitchObj.removeClass('block-ui-dialog-win-has-open');
}
});
// close dialog on window resize
$(window).resize(function () {
dialogWin.dialog("close");
});
// close dialog on click out
$('.ui-widget-overlay').live('click', function () {
if (dialogSwitchObj.hasClass('block-ui-dialog-win-has-open')) {
dialogSwitchObj.trigger('click');
}
});
dialogSwitchObj.click(function () {
if (!dialogSwitchObj.hasClass('block-ui-dialog-win-has-open')) {
dialogSwitchObj.addClass('block-ui-dialog-win-has-open');
if (customPositionType == 'inplace') {
var elOffset = $(this).offset();
var outerWidth = $(this).outerWidth();
var outerHeight = $(this).outerHeight();
dialogWin.dialog("option", "position", [elOffset.left - $(document).scrollLeft(), elOffset.top - $(document).scrollTop() + outerHeight + 13]).dialog('open');
$('.block-ui-dialog-ui-dialog').append('<span class="block-ui-dialog-arrow-top">');
$('.block-ui-dialog-ui-dialog').css('overflow', 'visible');
} else {
dialogWin.dialog("open");
}
} else {
dialogSwitchObj.removeClass('block-ui-dialog-win-has-open');
dialogWin.dialog('close');
}
});
});
}
}
})(jQuery);
Спасибо, буду разбираться и пробовать!)