Вход Регистрация
Файл: Arhmobi_esdcms/sys/themes/.common/dcmsApi.js
Строк: 63
<?php
(function ($) {
    if (
typeof $ == "undefined")
        return;
    var 
api = $.fn.dcmsApi = {
        
_timeoutnull,
        
_queue: [],
        
/**
         * Постановка запроса в очередь
         * @param {string} module Модуль, к которому обращаемся (php class в [/sys/plugins/classes/*] Должен быть реализацией интерфейса api_controller )
         * @param {string} method Метод, который будет вызываться у модуля (статичный метод класса)
         * @param {*} params Параметры, с которыми будет вызван метод
         * @param {function} callback Обработчик успешно выполненного запроса
         * @param {function} [callbackE] Обработчик ошибки при выполнении запроса
         */
        
request: function (modulemethodparamscallbackcallbackE) {
            if (
api._timeout)
                
clearTimeout(api._timeout);
            
api._queue.push({
                
modulemodule,
                
methodmethod,
                
pparams,
                
ccallback,
                
cecallbackE
            
});
            
api._timeout setTimeout(api.start20);
        },
        
/**
         * Отправка очереди запросов на сервер
         */
        
start: function () {
            var 
requests = [];
            var 
queue api._queue;
            
api._queue = [];
            for (var 
0queue.lengthi++) {
                var 
req queue[i];
                
requests.push({
                    
modulereq.module,
                    
methodreq.method,
                    
datareq.p
                
});
            }
            $.
post('/sys/api.php', {
                
requestsJSON.stringify(requests)
            }).
                
done($.proxy(api._donethisqueue)).
                
fail($.proxy(api._failthisqueue));
        },
        
/**
         * Обработка ответа сервера и выполнение отдельных c`ов из очереди
         * @param queue
         * @param response
         * @private
         */
        
_done: function (queueresponse) {
            for (var 
0queue.lengthi++) {
                try {
                    if (
response[i].error)
                        
queue[i].ce.call(this);
                    else
                        
queue[i].c.call(thisresponse[i].data);
                } catch (
e) {

                }
            }
        },
        
_fail: function (queue) {
            for (var 
0queue.lengthi++) {
                try {
                    
queue[i].ce.call(this);
                } catch (
e) {

                }
            }
        }
    };
})(
jQuery);

// создаем модуль для AngularJs, который проксирует запросы через jQuery
if (window.angular){
    (function (
angular) {
        if (
typeof angular == "undefined")
            return;
        
angular.module('dcmsApi', [])
            .
factory('dcmsApi', function ($q) {
                var 
api = $().dcmsApi;
                return {
                    
/**
                     * Запрос к API DCMS
                     * @param {string} module
                     * @param {string} method
                     * @param {*} params
                     * @returns {Function|promise}
                     */
                    
request: function (modulemethodparams) {
                        var 
deferred $q.defer();
                        
api.request.call(thismodulemethodparams,
                            function (
data) {
                                
deferred.resolve(data);
                            }, function () {
                                
deferred.reject();
                            });
                        return 
deferred.promise;
                    }
                };
            });
    })(
window.angular);
}
?>
Онлайн: 0
Реклама