--- a/src/ztfy/myams/resources/js/myams.js Mon May 12 00:35:54 2014 +0200
+++ b/src/ztfy/myams/resources/js/myams.js Mon May 12 16:59:41 2014 +0200
@@ -60,7 +60,7 @@
* JQuery 'econtains' expression
* Case insensitive contains expression
*/
- $.expr[":"].econtains = function(obj, index, meta, stack) {
+ $.expr[":"].econtains = function(obj, index, meta /*, stack*/) {
return (obj.textContent || obj.innerText || $(obj).text() || "").toLowerCase() == meta[3].toLowerCase();
};
@@ -69,7 +69,7 @@
* JQuery 'withtext' expression
* Case sensitive exact search expression
*/
- $.expr[":"].withtext = function(obj, index, meta, stack) {
+ $.expr[":"].withtext = function(obj, index, meta /*, stack*/) {
return (obj.textContent || obj.innerText || $(obj).text() || "") == meta[3];
};
@@ -77,7 +77,7 @@
/**
* JQuery filter on parents class
*/
- $.expr[':'].parents = function(obj, index, meta, stack) {
+ $.expr[':'].parents = function(obj, index, meta /*, stack*/) {
return $(obj).parents(meta[3]).length > 0;
};
@@ -283,8 +283,10 @@
// public method for url decoding
decode : function (utftext) {
var string = "";
- var i = 0;
- var c = c1 = c2 = 0;
+ var i = 0,
+ c = 0,
+ c2 = 0,
+ c3 = 0;
while ( i < utftext.length ) {
@@ -315,7 +317,7 @@
* MyAMS extensions to JQuery
*/
if (window.MyAMS === undefined) {
- MyAMS = {
+ window.MyAMS = {
devmode: true,
throttle_delay: 350,
menu_speed: 235,
@@ -369,6 +371,19 @@
/**
+ * Generate a random ID
+ *
+ * @param length
+ */
+ MyAMS.generateId = function() {
+ function s4() {
+ return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
+ }
+ return s4() + s4() + s4() + s4();
+ };
+
+
+ /**
* Get and execute a function given by name
* Small piece of code by Jason Bunting
*/
@@ -379,7 +394,7 @@
return functionName;
var namespaces = functionName.split(".");
var func = namespaces.pop();
- var context = (context === undefined || context === null) ? window : context;
+ context = (context === undefined || context === null) ? window : context;
for (var i=0; i < namespaces.length; i++) {
try {
context = context[namespaces[i]];
@@ -409,10 +424,9 @@
* {MyAMS.baseURL}
*/
MyAMS.getSource = function(url) {
- var src = url.replace(/{[^{}]*}/g, function(match) {
+ return url.replace(/{[^{}]*}/g, function(match) {
return ams.getFunctionByName(match.substr(1, match.length-2));
});
- return src;
};
MyAMS.getScript = function(url, callback, options) {
@@ -448,7 +462,7 @@
stop: function(event) {
if (!event) {
- var event = window.event;
+ event = window.event;
}
if (event) {
if (event.stopPropagation) {
@@ -513,7 +527,7 @@
/**
* Default JQuery AJAX error handler
*/
- ajax: function(event, request, settings) {
+ ajax: function(event, request /*, settings*/) {
if (request.statusText == 'OK')
return;
ams.skin.messageBox('error', {
@@ -565,8 +579,8 @@
*/
check: function(checker, source, callback, options) {
if (typeof(callback) == 'object') {
- var options = callback;
- var callback = undefined;
+ options = callback;
+ callback = undefined;
}
var defaults = {
async: typeof(callback) == 'function'
@@ -611,7 +625,7 @@
callback = ams.getFunctionByName(callback);
delete options.callback;
- var result;
+ var result = undefined;
var defaults = {
url: addr,
type: 'post',
@@ -619,7 +633,7 @@
async: typeof(callback) == 'function',
data: $.param(data, true),
dataType: 'json',
- success: callback || function(data, status) {
+ success: callback || function(data /*, status*/) {
result = data.result;
},
error: ams.error.show
@@ -633,7 +647,9 @@
* Extract data type and result from response
*/
getResponse: function(request) {
- var content_type = request.getResponseHeader('content-type');
+ var content_type = request.getResponseHeader('content-type'),
+ data_type,
+ result;
if (content_type.startsWith('application/javascript')) {
data_type = 'script';
result = request.responseText;
@@ -683,6 +699,7 @@
*/
handleJSON: function(result, form) {
var status = result.status;
+ var url;
switch (status) {
case 'error':
ams.form.showErrors(form, result);
@@ -705,14 +722,14 @@
case 'reload':
if (result.close_form != false)
ams.dialog.close(form);
- var url = result.location;
+ url = result.location;
if (url.startsWith('#'))
ams.skin.loadURL(url.substr(1), result.target || '#content');
else
ams.skin.loadURL(url, result.target || '#content');
break;
case 'redirect':
- var url = result.location;
+ url = result.location;
if (result.window) {
window.open(url, result.window, result.options);
} else {
@@ -889,7 +906,7 @@
*/
submit: function(form, handler, submit_options) {
// Check params
- var form = $(form);
+ form = $(form);
if (!form.exists())
return false;
if (typeof(handler) == 'object') {
@@ -974,11 +991,11 @@
cache: false,
data: form_data,
dataType: data.amsFormDatatype,
- beforeSerialize: function(form, options) {
+ beforeSerialize: function(/*form, options*/) {
if (typeof(tinyMCE) != 'undefined')
tinyMCE.triggerSave();
},
- beforeSubmit: function(data, form, options) {
+ beforeSubmit: function(data, form /*, options*/) {
form.data('submitted', true);
},
error: function(request, status, error) {
@@ -1221,10 +1238,11 @@
} else {
header = errors.widgets && (errors.widgets.length > 1) ? ams.i18n.ERRORS_OCCURED : ams.i18n.ERROR_OCCURED;
var message = new Array();
- for (var index in errors.messages) {
+ var index;
+ for (index in errors.messages) {
if (!$.isNumeric(index))
continue;
- message.push(errors.messages[index])
+ message.push(errors.messages[index].message || errors.messages[index]);
}
for (index in errors.widgets) {
if (!$.isNumeric(index))
@@ -1493,13 +1511,14 @@
}
// Load, run and register new plug-ins
+ var name;
$('[data-ams-plugins]', element).each(function() {
var source = $(this);
var plugins = {}
if (typeof(source.data('ams-plugins')) === 'string') {
var names = source.data('ams-plugins').split(/\s+/);
for (var index in names) {
- var name = names[index];
+ name = names[index];
var plugin_options = {
src: source.data('ams-plugin-' + name + '-src'),
css: source.data('ams-plugin-' + name + '-css'),
@@ -1512,7 +1531,7 @@
} else {
plugins = source.data('ams-plugins');
}
- for (var name in plugins) {
+ for (name in plugins) {
if (ams.plugins.enabled[name] === undefined) {
var plugin = plugins[name];
ams.getScript(plugin.src, function() {
@@ -1653,19 +1672,26 @@
var checker = $('<label class="checkbox"></label>');
var input = $('<input type="checkbox">').attr('name', data.amsCheckerFieldname)
.attr('id', (data.amsCheckerFieldname ||
- ('checker_'+(+new Date()).toString())).replace(/\./, '_'))
+ ('checker_'+ams.generateId())).replace(/\./, '_'))
.val(data.amsCheckerState == 'on')
.on('change', function(e) {
+ e.preventDefault();
+ var veto = {};
+ legend.trigger('ams.checker.before-switch', [legend, veto]);
+ if (veto.veto)
+ return;
if ($(this).is(':checked')) {
if (data.amsCheckerMode == 'disable')
fieldset.removeAttr('disabled')
else
- fieldset.removeClass('switched')
+ fieldset.removeClass('switched');
+ legend.trigger('ams.checker.opened', [legend]);
} else {
if (data.amsCheckerMode == 'disable')
fieldset.attr('disabled', 'disabled');
else
fieldset.addClass('switched');
+ legend.trigger('ams.checker.closed', [legend]);
}
})
.appendTo(checker);
@@ -2064,8 +2090,9 @@
}
};
var settings = $.extend({}, data_options, data.amsDatatableOptions);
+ var index;
if (extensions.length > 0) {
- for (var index in extensions) {
+ for (index in extensions) {
switch (extensions[index]) {
case 'autofill':
ams.ajax.check($.fn.dataTable.AutoFill,
@@ -2125,7 +2152,7 @@
var plugin = table.dataTable(settings);
ams.executeFunctionByName(data.amsDatatableAfterInitCallback, table, plugin, settings);
if (extensions.length > 0) {
- for (var index in extensions) {
+ for (index in extensions) {
switch(extensions[index]) {
case 'autofill':
var af_settings = $.extend({}, data.amsDatatableAutofillOptions, settings.autofill);
@@ -2492,7 +2519,7 @@
alert: function(parent, status, header, message, subtitle, margin) {
$('.alert', parent).remove();
if (status == 'error')
- var status = 'danger';
+ status = 'danger';
var content = '<div class="' + (margin ? 'margin-10' : '') + ' alert alert-block alert-' + status + ' fade in">' +
'<a class="close" data-dismiss="alert"><i class="fa fa-check"></i></a>' +
'<h4 class="alert-heading">' +
@@ -2536,9 +2563,9 @@
*/
messageBox: function(status, options, callback) {
if (typeof(status) == 'object') {
- var callback = options;
- var options = status || {};
- var status = 'info';
+ callback = options;
+ options = status || {};
+ status = 'info';
}
ams.ajax.check(ams.notify,
ams.baseURL + 'myams-notify' + (ams.devmode ? '.js' : '.min.js'),
@@ -2567,9 +2594,9 @@
*/
smallBox: function(status, options, callback) {
if (typeof(status) == 'object') {
- var callback = options;
- var options = status || {};
- var status = 'info';
+ callback = options;
+ options = status || {};
+ status = 'info';
}
ams.ajax.check(ams.notify,
ams.baseURL + 'myams-notify' + (ams.devmode ? '.js' : '.min.js'),
@@ -2674,7 +2701,7 @@
callback = options;
options = {};
}
- var container = $(container);
+ container = $(container);
var defaults = {
type: 'GET',
url: url,