// String methods
String.prototype.format = function () {
var formatted = this;
for (var i = 0; i < arguments.length; i++)
formatted = formatted.replace(new RegExp('\\#' + i + '\\#', 'gi'), arguments[i]);
return formatted;
};
String.prototype.format_choice = function () {
var format=this.split("|");
var params = arguments.length==1?arguments[0]:arguments[1];
for (var i=0;i < format.length;i++)
{
var motif= new RegExp('\\[([0-9\\#])?\\]', 'gi');
var r= motif.exec( format[i]);
if (r===null)
return this;
if (arguments[0]==r[1])
return format[i].replace(r[0],"").replace('#?#', params);
if (arguments[0] > 1 && r[1]=='#')
return format[i].replace("[#]",'').replace('#?#', params);
}
return "";
};
// Array methods
(function ($) {
$.array_intersect = function (a, b) {
return $.grep(a, function (i) {
return $.inArray(i, b) > -1;
});
}
})(jQuery);
// getFilter => {lastlogin: { from : { fr1 : {fr2 : "toto"} } } }
(function ($) {
$.fn.getFilter = function () {
var params = {};
function _arraytoObject(a, params, value) {
index = a[0];
if (index) {
a.shift();
params[index] = _arraytoObject(a, {}, value);
return params;
}
else {
return params = value;
}
}
$.each(this, function () {
params = $.extend(true, _arraytoObject(this.name.replace(/\[(\w+)\]/g, function (str, occ) {
return "." + occ;
}).split('.'), {}, this.value), params);
});
return params;
};
})(jQuery);
// Plugin Error Messages Manager
(function ($) {
function displayMessages(type, selector, messages) {
if (typeof(messages) == 'string')
messages = new Array(messages);
$.each(messages, function (id, value) {
$("." + selector + " td#" + type).append("" + value + "
");
});
$("." + selector + " div#" + type).show();
}
var methods = {
init: function (options) {
},
show: function () {
},
hide: function () {
$(this).hide();
},
error: function (messages) {
displayMessages('error', $(this).attr('class'), messages);
},
info: function (messages) {
displayMessages('info', $(this).attr('class'), messages);
},
warning: function (messages) {
displayMessages('warning', $(this).attr('class'), messages);
},
clear: function () {
selector = "." + $(this).attr('class');
$.each(['error', 'warning', 'info'], function (id, elm) {
$.each(this, function () {
$(selector + " td#" + elm).html("");
});
$(selector + " div#" + elm).hide();
});
}
};
$.fn.messagesManager = function (method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.messagesManager');
}
};
})(jQuery);
// AJAX function + upload
(function ($) {
var messages = {
401: "you don't have permission to do this action.",
402: "AJAX server failure",
404: "Error 404 : url=#0#",
500: "Internal server error"
};
var methods = {
init: function (options) {
messages = $.extend({}, options);
},
setMessages: function (msgs) {
messages = $.extend(messages, msgs);
return messages;
},
getMessages: function () {
return messages;
},
getMessage: function (num) {
return messages[num];
},
send: function (options) {
var settings = $.extend({
data: {},
errorTarget: ".errors",
loading: "img#loading",
cache: false,
messages: {}
}, options);
$(settings.loading).show();
$(settings.errorTarget).messagesManager('clear');
if (settings.messages.info)
$(settings.errorTarget).messagesManager('info', settings.messages.info);
$.ajax({
type: "POST",
url: settings.url,
data: settings.data,
cache: settings.cache,
contentType: settings.contentType,
processData: settings.processData,
error: function (xhr, ajaxOptions, thrownError) {
if (jQuery.isFunction(settings.error)) {
return settings.error.call(this, xhr, ajaxOptions, thrownError);
}
$(settings.errorTarget).messagesManager('clear');
if (xhr.status == 0)
$(settings.errorTarget).messagesManager("error", messages[402]);
},
success: function (data, textStatus, jqXHR) {
$(settings.loading).hide();
if (settings.target != null) {
$(settings.target).html(data);
if (jQuery.isFunction(settings.success)) {
settings.success.call(this, data);
}
}
else {
/* try
{
var response = $.parseJSON(data);
}
catch (e)
{
if (jQuery.isFunction(settings.error))
{
settings.error.call(this,e,data);
}
} */
var response = data;
if (typeof response == 'undefined') {
if (jQuery.isFunction(settings.success)) {
settings.success.call(this, data);
}
return;
}
if (jQuery.isFunction(settings.error) && (response.alert || response.error || response.info || response.warning))
settings.error.call(this, response);
if (response.alert)
alert(response.alert);
if (response.error)
return $(settings.errorTarget).messagesManager('error', response.error);
if (response.info)
$(settings.errorTarget).messagesManager('info', response.info);
if (response.warning)
$(settings.errorTarget).messagesManager('warning', response.warning);
if (jQuery.isFunction(settings.success))
settings.success.call(this, response);
}
},
statusCode: {
401: function () {
$(settings.errorTarget).messagesManager('error', messages[401]);
},
403: function () {
document.location = window.location.pathname;
}, // Redirection to Login
404: function () {
$(settings.errorTarget).messagesManager('error', messages[404].format(this.url));
},
500: function () {
$(settings.errorTarget).messagesManager('error', messages[500].format(this.url));
}
},
complete: function (resp) {
$(settings.loading).hide();
}
});
return false;
},
sendWithFiles: function (options) {
var settings = $.extend($.extend({errorTarget: ".errors", loading: "img#loading"}, options), {
statusCode: {
401: function () {
$(settings.errorTarget).messagesManager('error', messages[401]);
},
403: function () {
document.location = window.location.pathname;
},
404: function () {
$(settings.errorTarget).messagesManager('error', messages[404].format(settings.url));
}
},
send: function () {
$(settings.loading).show();
if (jQuery.isFunction(options.send))
return options.send.call(this);
},
success: function (data) {
/* try
{
response = data;//$.parseJSON(data);
if (response.error)
$(settings.errorTarget).messagesManager('error',response.error);
if (response.info)
$(settings.errorTarget).messagesManager('info',response.info);
if (response.warning)
$(settings.errorTarget).messagesManager('warning',response.warning);
}
catch (e)
{
$(settings.target).html(data);
response=data;
}*/
response = data;
if (jQuery.isFunction(options.success))
options.success.call(this, response);
},
complete: function () {
$(settings.loading).hide();
if (jQuery.isFunction(options.complete))
return options.complete.call(this);
}
});
return $.ajax2Settings('iFrameTransport', settings);
},
iFrameTransport: function (options) {
function dataToForm(data, name) {
if (data == null) return;
jQuery.each(data, function (i, v) {
nameValue = (name == null) ? i : name + "[" + i + "]";
if (typeof v === "object")
dataToForm(v, nameValue);
else
$("").attr({value: v, name: nameValue}).appendTo($('form#uploadform'));
});
}
function removeIFrame() {
$("#uploadform,#iframe_upload_id").remove();
}
var settings = $.extend({
url: "/",
send: function () {
},
statusCode: {},
complete: function () {
},
error: function () {
},
success: function () {
}
}, options);
$(settings.errorTarget).messagesManager('clear');
$(settings.files).last().after('