5 * $Tag$ |
5 * $Tag$ |
6 * A bootstrap based application/administration skin |
6 * A bootstrap based application/administration skin |
7 * |
7 * |
8 * Custom administration and application skin tools |
8 * Custom administration and application skin tools |
9 * Released under Zope Public License ZPL 1.1 |
9 * Released under Zope Public License ZPL 1.1 |
10 * ©2014-2015 Thierry Florac <tflorac@ulthar.net> |
10 * ©2014-2016 Thierry Florac <tflorac@ulthar.net> |
11 */ |
11 */ |
12 |
12 |
13 (function($, globals) { |
13 (function($, globals) { |
14 |
14 |
15 "use strict"; |
15 "use strict"; |
2310 src: new_plugin.src, |
2310 src: new_plugin.src, |
2311 css: new_plugin.css, |
2311 css: new_plugin.css, |
2312 callbacks: new_plugin.callback ? [new_plugin.callback] : [], |
2312 callbacks: new_plugin.callback ? [new_plugin.callback] : [], |
2313 register: new_plugin.register, |
2313 register: new_plugin.register, |
2314 async: new_plugin.async |
2314 async: new_plugin.async |
2315 } |
2315 }; |
2316 } |
2316 } |
2317 } |
2317 } |
2318 |
2318 |
2319 var source = $(this); |
2319 var source = $(this); |
2320 var ams_plugins = source.data('ams-plugins'); |
2320 var ams_plugins = source.data('ams-plugins'); |
3032 }); |
3032 }); |
3033 } |
3033 } |
3034 }, |
3034 }, |
3035 |
3035 |
3036 /** |
3036 /** |
|
3037 * JQuery input-mask plug-in |
|
3038 * |
|
3039 * Mask value can be set in a "data-input-mask" attribute defined: |
|
3040 * - as a simple string containing mask |
|
3041 * - as a JSON object defining all mask attributes, for example: |
|
3042 * data-input-mask='{"alias": "integer", "allowPlus": false, "allowMinus": false}' |
|
3043 */ |
|
3044 inputmask: function(element) { |
|
3045 var masks = $('[data-input-mask]', element); |
|
3046 if (masks.length > 0) { |
|
3047 ams.ajax.check($.fn.inputmask, |
|
3048 ams.baseURL + 'ext/jquery-inputmask-bundle-3.2.8' + ams.devext + '.js', |
|
3049 function() { |
|
3050 masks.each(function() { |
|
3051 var input = $(this); |
|
3052 var data = input.data(); |
|
3053 var data_options; |
|
3054 if (typeof(data.inputMask) === 'object') { |
|
3055 data_options = data.inputMask; |
|
3056 } else { |
|
3057 data_options = { |
|
3058 mask: data.inputMask.toString() |
|
3059 }; |
|
3060 } |
|
3061 var settings = $.extend({}, data_options, data.amsInputmaskOptions); |
|
3062 settings = ams.executeFunctionByName(data.amsInputmaskInitCallback, input, settings) || settings; |
|
3063 var plugin = input.inputmask(settings); |
|
3064 ams.executeFunctionByName(data.amsInputmaskAfterInitCallback, input, plugin, settings); |
|
3065 }); |
|
3066 }); |
|
3067 } |
|
3068 }, |
|
3069 |
|
3070 /** |
3037 * JQuery date picker |
3071 * JQuery date picker |
3038 */ |
3072 */ |
3039 datepicker: function(element) { |
3073 datepicker: function(element) { |
3040 var datepickers = $('.datepicker', element); |
3074 var datepickers = $('.datepicker', element); |
3041 if (datepickers.length > 0) { |
3075 if (datepickers.length > 0) { |
3233 } |
3267 } |
3234 } |
3268 } |
3235 : ams.getFunctionByName(data.amsFormInvalidHandler) |
3269 : ams.getFunctionByName(data.amsFormInvalidHandler) |
3236 : undefined |
3270 : undefined |
3237 }; |
3271 }; |
|
3272 $('[data-ams-validate-rules]', form).each(function() { |
|
3273 if (index === 0) { |
|
3274 data_options.rules = {}; |
|
3275 } |
|
3276 data_options.rules[$(this).attr('name')] = $(this).data('ams-validate-rules'); |
|
3277 }); |
3238 var settings = $.extend({}, data_options, data.amsValidateOptions); |
3278 var settings = $.extend({}, data_options, data.amsValidateOptions); |
3239 settings = ams.executeFunctionByName(data.amsValidateInitCallback, form, settings) || settings; |
3279 settings = ams.executeFunctionByName(data.amsValidateInitCallback, form, settings) || settings; |
3240 var plugin = form.validate(settings); |
3280 var plugin = form.validate(settings); |
3241 ams.executeFunctionByName(data.amsValidateAfterInitCallback, form, plugin, settings); |
3281 ams.executeFunctionByName(data.amsValidateAfterInitCallback, form, plugin, settings); |
3242 }); |
3282 }); |
3299 } |
3339 } |
3300 } |
3340 } |
3301 // Set options |
3341 // Set options |
3302 var data_options = { |
3342 var data_options = { |
3303 bJQueryUI: false, |
3343 bJQueryUI: false, |
3304 bFilter: data.amsDatatableGlobalFilter !== false, |
3344 bFilter: data.amsDatatableGlobalFilter !== false || extensions.indexOf('columnfilter') >= 0, |
3305 bPaginate: data.amsDatatablePagination !== false, |
3345 bPaginate: data.amsDatatablePagination !== false, |
3306 bInfo: data.amsDatatableInfo !== false, |
3346 bInfo: data.amsDatatableInfo !== false, |
3307 bSort: data.amsDatatableSort !== false, |
3347 bSort: data.amsDatatableSort !== false, |
3308 aaSorting: sorting, |
3348 aaSorting: sorting, |
3309 aoColumns: columns.length > 0 ? columns : undefined, |
3349 aoColumns: columns.length > 0 ? columns : undefined, |