var Tools = { serialize: function(sFormId) { var asForm = {}; $.each($('#'+sFormId).serializeArray(), function(key, item){ asForm[item.name] = item.value; }); return asForm; }, ajax: function(sAction, fOnSuccess, oData, fOnFail, $Loader, sType, sDataType, bBeacon) { sType = sType || 'GET'; sDataType = sDataType || 'json'; bBeacon = bBeacon || false; oData = oData || {}; var asData = {}; if($.type(oData)=='string') { asData = this.serialize(oData); } else asData = oData; asData['a'] = sAction; if($Loader) { $Loader .data('load_html', $Loader.html()) .data('load_class', $Loader.attr('class')) .removeClassPrefix('fa-') .addClass('loader') .html($('', {'class':'onlyimg', src: Config.paths.dir.theme_image+"ajax.svg"})); } if(bBeacon) { var oFD = new FormData(); $.each(asData, function(sKey, sValue){ if($.type(sValue) != 'string') sValue = JSON.stringify(sValue); oFD.append(sKey, sValue); }); return navigator.sendBeacon(oCATC.consts.context.process_page, oFD); } else { return $.ajax({ url: oCATC.consts.context.process_page, type: sType, data: asData, dataType: sDataType }) .done(function(oData) { if(oData.result==oCATC.consts.error) { if(!fOnFail) Tools.feedback('error', oData.desc); else fOnFail(oData.desc); } else fOnSuccess(oData.data, oData.desc); if($Loader) { $Loader .removeClass() .addClass($Loader.data('load_class')) .html($Loader.data('load_html')); } }) .fail(function(jqXHR, textStatus, errorThrown) { if(!fOnFail) Tools.feedback('error', textStatus+' '+errorThrown); else fOnFail(textStatus); }); } }, getIcon: function(sIcon, bFull){ bFull = bFull || false; return $('', {'class': bFull?sIcon:('fa-'+sIcon)}); }, feedback: function(sClass, sMsg, $Box) { $Box = $Box || $('#feedback'); sMsg = sMsg || ''; switch(sClass) { case 'notice': sClass = 'primary'; break; case 'error': sClass = 'danger'; break; } if(sClass=='danger' && sMsg=='') sMsg = 'Oops ! An unknown error occured'; if($.type(sMsg)=='string') sMsg = addPunctuation(sMsg); $('
', {'class':'alert shadow alert-dismissible fade show alert-'+sClass, role:'alert'}) .append($('', {'class':'fa-inline fa-'+sClass})) .append(sMsg) .append($('