Как повесить выполнение выполнения скрипта после успешной отправки сообщения?

Главные вкладки

Аватар пользователя St.Cremer St.Cremer 2 декабря 2014 в 0:33

Доброго всем времени суток!
Нужно сделать так, чтобы после успешной отправки сообщения выполнялся скрипт.
Если подробнее
Есть форма созданная с помощью модуля webform. При помощи hook_form_alter отправляется через ajax.
Нужно, чтобы после удачной отправки закрывалось окно colorbox и выводилось сообщение об успешной отправке.

P.S. С API drupal знакомство только начал, поэтому просьба расписать по подробнее.

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 2 декабря 2014 в 8:27

Подробней с ui.dialog

(function ($) {
    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);