X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=inline;f=htdocs%2Fjavascript%2Fxorg.js;h=185e8fb3e662dcd4a06f49679f22b0244891f773;hb=ce38195f530cf39b8f760aa6ed29ef74d82910ed;hp=d804403d8b0876ae66b4a10562dfc43a1bd9910d;hpb=b0e935d6af8eb37e423b8bb862e477d9e09af0f5;p=platal.git diff --git a/htdocs/javascript/xorg.js b/htdocs/javascript/xorg.js index d804403..185e8fb 100644 --- a/htdocs/javascript/xorg.js +++ b/htdocs/javascript/xorg.js @@ -361,74 +361,113 @@ function checkPassword(box, okLabel) { // {{{ jQuery object extension (function($) { - $.xget = function(source, type, onSuccess, onError) { - function ajaxHandler(data, textStatus) { - if (textStatus == 'success') { - if (onSuccess) { - onSuccess(data); - } - } else if (textStatus == 'error') { - if (onError) { - onError(data); - } else { - alert("Une error s'est produite lors du traitement de la requête.\n" - + "Ta session a peut-être expiré"); - } + /* Add new functions to jQuery namesapce */ + $.extend({ + xajax: function(source, method, data, onSuccess, onError, type) { + /* Shift argument */ + if ($.isFunction(data)) { + type = type || onError; + onError = onSuccess; + onSuccess = data; + data = null; + } + if (onError != null && !$.isFunction(onError)) { + type = type || onError; + onError = null; } - } - $.get(source, ajaxHandler, type); - return false; - } - - $.fn.tmpMessage = function(message, success) { - if (success) { - this.html(" " + message) - .css('color', 'green'); - } else { - this.html(" " + message) - .css('color', 'red'); - } - return this.css('fontWeight', 'bold') - .show() - .delay(1000) - .fadeOut(500); - } - $.fn.updateHtml = function(source, callback) { - var elements = this; - function handler(data) { - elements.html(data); - if (callback) { - callback(data); + function ajaxHandler(data, textStatus, xhr) { + if (textStatus == 'success') { + if (onSuccess) { + onSuccess(data, textStatus, xhr); + } + } else if (textStatus == 'error') { + if (onError) { + onError(data, textStatus, xhr); + } else { + alert("Une error s'est produite lors du traitement de la requête.\n" + + "Ta session a peut-être expiré"); + } + } } + return $.ajax({ + url: source, + type: method, + success: ajaxHandler, + data : data, + dataType: type + }); + }, + + xget: function(source, data, onSuccess, onError, type) { + return $.xajax(source, 'GET', data, onSuccess, onError, type); + }, + + xgetJSON: function(source, data, onSuccess, onError) { + return $.xget(source, data, onSuccess, onError, 'json'); + }, + + xgetScript: function(source, onSuccess, onError) { + return $.xget(source, null, onSuccess, onError, 'script'); + }, + + xpost: function(source, data, onSuccess, onError, type) { + return $.xajax(source, 'POST', data, onSuccess, onError, type); } - $.xget(source, 'text', handler); - return this; - } - - $.fn.successMessage = function(source, message) { - var elements = this; - $.xget(source, 'text', function() { - elements.tmpMessage(message, true); - }); - return this; - } + }); - $.fn.wiki = function(text, withTitle) { - if (text == '') { - return this.html(''); - } - var url = 'wiki_preview'; - if (!withTitle) { - url += '/notitile'; + /* Add new functions to jQuery objects */ + $.fn.extend({ + tmpMessage: function(message, success) { + if (success) { + this.html(" " + message) + .css('color', 'green'); + } else { + this.html(" " + message) + .css('color', 'red'); + } + return this.css('fontWeight', 'bold') + .show() + .delay(1000) + .fadeOut(500); + }, + + updateHtml: function(source, callback) { + var elements = this; + function handler(data) { + elements.html(data); + if (callback) { + callback(data); + } + } + $.xget(source, handler, 'text'); + return this; + }, + + successMessage: function(source, message) { + var elements = this; + $.xget(source, function() { + elements.tmpMessage(message, true); + }); + return this; + }, + + wiki: function(text, withTitle) { + if (text == '') { + return this.html(''); + } + var url = 'wiki_preview'; + if (!withTitle) { + url += '/notitile'; + } + var $this = this; + $.post(url, { text: text }, + function (data) { + $this.html(data); + }, 'text'); + return this; } - var $this = this; - $.post(url, { text: text }, - function (data) { - $this.html(data); - }, 'text'); - return this; - } + }); })(jQuery); // }}}