--- a/src/ztfy/myams/resources/js/myams.js Mon Jun 04 12:33:03 2018 +0200
+++ b/src/ztfy/myams/resources/js/myams.js Fri Jun 29 15:09:46 2018 +0200
@@ -37,6 +37,16 @@
return (this.substr(slen-dlen) === str);
};
+ String.prototype.unserialize = function(str) {
+ var str = decodeURIComponent(this);
+ var chunks = str.split('&'),
+ obj = {};
+ for (var c = 0; c < chunks.length; c++) {
+ var split = chunks[c].split('=', 2);
+ obj[split[0]] = split[1];
+ }
+ return obj;
+ };
/**
* Array prototype extensions
@@ -822,7 +832,7 @@
if (response.contentType === 'json') {
ams.ajax.handleJSON(response.data);
} else {
- var title = event.statusText || event.type;
+ var title = error || event.statusText || event.type;
var message = response.responseText;
ams.skin.messageBox('error', {
title: ams.i18n.ERROR_OCCURED,
@@ -970,6 +980,19 @@
},
/**
+ * Post data to given URL and handle result as JSON
+ */
+ getJSON: function() {
+ return function(options) {
+ var url = options.url;
+ delete options.url;
+ ams.ajax.post(url, options, function(result, status, request) {
+ ams.ajax.handleJSON(result);
+ });
+ }
+ },
+
+ /**
* Post data to given URL
*/
post: function(url, data, options, callback) {
@@ -2624,7 +2647,10 @@
} else {
target.empty();
}
- });
+ })
+ .fail(function() {
+ target.empty();
+ });
break;
case 'json-rpc':
target.html('<div class="text-center"><i class="fa fa-2x fa-gear fa-spin"></i></div>');
@@ -2702,6 +2728,15 @@
$('.datepicker, .timepicker, .datetimepicker', this).datetimepicker('destroy');
},
+ /** Clear search form target when query is empty */
+ clearSearchTarget: function() {
+ var input = $(this);
+ if (!input.val()) {
+ var form = $(input).parents('form').first();
+ $(form.data('ams-form-submit-target')).empty();
+ }
+ },
+
/** Set SEO status */
setSEOStatus: function() {
var input = $(this);
@@ -3001,6 +3036,22 @@
enabled: {
/**
+ * SVG containers
+ */
+ svg: function(element) {
+ var svgs = $('.svg-container', element);
+ if (svgs.length > 0) {
+ svgs.each(function() {
+ var container = $(this);
+ var svg = $('svg', container);
+ svg.get(0).setAttribute('viewBox', '0 0 ' + Math.round(svg.attr('width')) + ' ' + Math.round(svg.attr('height')));
+ svg.attr('width', '100%')
+ .attr('height', 'auto');
+ })
+ }
+ },
+
+ /**
* Label hints
*/
hint: function(element) {
@@ -5259,6 +5310,33 @@
}
},
+ switchCellContent: function(element) {
+ var source = $(this);
+ var switcher = $('i.switch', source);
+ var td = source.parents('td');
+ var innerdiv = $(source.data('ams-switch-target') || '.inner-table-form', td);
+ var datatype = source.parents('tr');
+ if (switcher.hasClass('fa-plus-square-o')) {
+ var container = datatype.parents('table');
+ innerdiv.html('<h1 class="loading"><i class="fa fa-gear fa-spin"></i></h1>');
+ MyAMS.ajax.post(container.data('ams-location') + '/' + source.data('ams-switch-handler'),
+ {object_name: datatype.data('ams-element-name')},
+ function(result) {
+ innerdiv.html(result);
+ if (result) {
+ MyAMS.initContent(innerdiv);
+ switcher.removeClass('fa-plus-square-o')
+ .addClass('fa-minus-square-o');
+ }
+ });
+ } else {
+ MyAMS.skin.cleanContainer(innerdiv);
+ innerdiv.empty();
+ switcher.removeClass('fa-minus-square-o')
+ .addClass('fa-plus-square-o');
+ }
+ },
+
/**
* Initialize desktop and mobile widgets
*/
@@ -5921,13 +5999,25 @@
}
e.preventDefault();
e.stopPropagation();
- var hrefGetter = ams.getFunctionByName(href);
+
+ var url,
+ target,
+ params;
+ if (href.indexOf('?') >= 0) {
+ url = href.split('?');
+ target = url[0];
+ params = url[1].unserialize();
+ } else {
+ target = href;
+ params = undefined;
+ }
+ var hrefGetter = ams.getFunctionByName(target);
if (typeof(hrefGetter) === 'function') {
- href = hrefGetter.call(link);
+ href = hrefGetter.call(link, params);
}
if (typeof(href) === 'function') {
// Javascript function call
- href.call(link);
+ href.call(link, params);
} else {
// Standard AJAX or browser URL call
// Convert %23 chars to #
@@ -6027,9 +6117,12 @@
if (data.amsClickKeepDefault !== true) {
event.preventDefault();
}
- var callback = ams.getFunctionByName(data.amsClickHandler);
- if (callback !== undefined) {
- callback.call(source, event, data.amsClickHandlerOptions);
+ var clickHandlers = data.amsClickHandler.split(/\s+/);
+ for (var index=0; index < clickHandlers.length; index++) {
+ var callback = ams.getFunctionByName(clickHandlers[index]);
+ if (callback !== undefined) {
+ callback.call(source, event, data.amsClickHandlerOptions);
+ }
}
}
});
@@ -6054,9 +6147,12 @@
if (data.amsChangeKeepDefault !== true) {
event.preventDefault();
}
- var callback = ams.getFunctionByName(data.amsChangeHandler);
- if (callback !== undefined) {
- callback.call(source, event, data.amsChangeHandlerOptions);
+ var changeHandlers = data.amsChangeHandler.split(/\s+/);
+ for (var index=0; index < changeHandlers.length; index++) {
+ var callback = ams.getFunctionByName(changeHandlers[index]);
+ if (callback !== undefined) {
+ callback.call(source, event, data.amsChangeHandlerOptions);
+ }
}
}
});
@@ -6169,7 +6265,7 @@
link = $('a[href]', link);
}
var data = link.data();
- if (data.amsUrl) {
+ if (data && data.amsUrl) {
if (data.amsTabLoaded) {
return;
}