// TEST
// 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.ucfirst = function() {
// if (typeof this !== 'string') return '';
return this[0].toUpperCase() + this.substring(1);
};
// 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",progress:"#progress",cache: false,messages: { } }, options);
$(settings.loading).show();
$(settings.progress).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( response,textStatus, jqXHR ) {
$(settings.loading).hide();
$(settings.Progress).hide();
if (settings.target!=null)
{
$(settings.target).html(response);
if (jQuery.isFunction(settings.success))
{
settings.success.call(this,response);
}
}
else
{
if (typeof response =='undefined')
{
if (jQuery.isFunction(settings.success))
{
settings.success.call(this,response);
}
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();
$(settings.progress).hide();
}
});
return false;
},
sendWithFiles: function (options)
{
var settings=$.extend($.extend( { errorTarget:".errors",loading:"img#loading" ,progress:"#progress" }, 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();
$(settings.progress).show();
if (jQuery.isFunction(options.send))
return options.send.call(this);
},
success: function (data)
{
try
{
response = $.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;
}
if (jQuery.isFunction(options.success))
options.success.call(this,response);
},
complete: function ()
{
$(settings.loading).hide();
$(settings.progress).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('