changeset 69 | a361355b55c7 |
parent 64 | 3fe1d315747c |
child 72 | 13f5fdd06484 |
68:fd8fb93e1b6a | 69:a361355b55c7 |
---|---|
398 /** |
398 /** |
399 * Get MyAMS base URL |
399 * Get MyAMS base URL |
400 * Copyright Andrew Davy: https://forrst.com/posts/Get_the_URL_of_the_current_javascript_file-Dst |
400 * Copyright Andrew Davy: https://forrst.com/posts/Get_the_URL_of_the_current_javascript_file-Dst |
401 */ |
401 */ |
402 MyAMS.baseURL = (function () { |
402 MyAMS.baseURL = (function () { |
403 var script = $('script[src$="/myams.js"], script[src$="/myams.min.js"]'); |
403 var script = $('script[src*="/myams.js"], script[src*="/myams.min.js"]'); |
404 var src = script.attr("src"); |
404 var src = script.attr("src"); |
405 ams.devmode = !src.endsWith('.min.js'); |
405 ams.devmode = src.indexOf('.min.js') < 0; |
406 ams.devext = ams.devmode ? '' : '.min'; |
406 ams.devext = ams.devmode ? '' : '.min'; |
407 return src.substring(0, src.lastIndexOf('/') + 1); |
407 return src.substring(0, src.lastIndexOf('/') + 1); |
408 })(); |
408 })(); |
409 |
409 |
410 |
410 |
978 * - @options: additional JSON-RPC procedure parameters |
978 * - @options: additional JSON-RPC procedure parameters |
979 * - @callback: name of a callback which will be called on server response |
979 * - @callback: name of a callback which will be called on server response |
980 */ |
980 */ |
981 query: function(query, method, options, callback) { |
981 query: function(query, method, options, callback) { |
982 ams.ajax.check($.jsonRpc, |
982 ams.ajax.check($.jsonRpc, |
983 ams.baseURL + 'ext/jquery-jsonrpc' + (ams.devmode ? '.js' : '.min.js'), |
983 ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js', |
984 function() { |
984 function() { |
985 var result; |
985 var result; |
986 if (typeof(options) == 'function') { |
986 if (typeof(options) == 'function') { |
987 callback = options; |
987 callback = options; |
988 options = {}; |
988 options = {}; |
1027 * - @options: additional JSON-RPC method call parameters |
1027 * - @options: additional JSON-RPC method call parameters |
1028 * - @callback: name of a callback which will be called on server response |
1028 * - @callback: name of a callback which will be called on server response |
1029 */ |
1029 */ |
1030 post: function(method, data, options, callback) { |
1030 post: function(method, data, options, callback) { |
1031 ams.ajax.check($.jsonRPC, |
1031 ams.ajax.check($.jsonRPC, |
1032 ams.baseURL + 'ext/jquery-jsonrpc' + (ams.devmode ? '.js' : '.min.js'), |
1032 ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js', |
1033 function() { |
1033 function() { |
1034 var result; |
1034 var result; |
1035 if (typeof(options) == 'function') { |
1035 if (typeof(options) == 'function') { |
1036 callback = options; |
1036 callback = options; |
1037 options = {}; |
1037 options = {}; |
1090 * - @options: additional JSON-RPC procedure parameters |
1090 * - @options: additional JSON-RPC procedure parameters |
1091 * - @callback: name of a callback which will be called on server response |
1091 * - @callback: name of a callback which will be called on server response |
1092 */ |
1092 */ |
1093 post: function(url, method, data, options, callback) { |
1093 post: function(url, method, data, options, callback) { |
1094 ams.ajax.check($.xmlrpc, |
1094 ams.ajax.check($.xmlrpc, |
1095 ams.baseURL + 'ext/jquery-xmlrpc' + (ams.devmode ? '.js' : '.min.js'), |
1095 ams.baseURL + 'ext/jquery-xmlrpc' + ams.devext + '.js', |
1096 function() { |
1096 function() { |
1097 var result; |
1097 var result; |
1098 if (typeof(options) == 'function') { |
1098 if (typeof(options) == 'function') { |
1099 callback = options; |
1099 callback = options; |
1100 options = {}; |
1100 options = {}; |
1225 // Remove remaining status messages |
1225 // Remove remaining status messages |
1226 $('.alert, SPAN.state-error', form).remove(); |
1226 $('.alert, SPAN.state-error', form).remove(); |
1227 $('.state-error', form).removeClassPrefix('state-'); |
1227 $('.state-error', form).removeClassPrefix('state-'); |
1228 // Check submit button |
1228 // Check submit button |
1229 var button = $(form.data('ams-submit-button')); |
1229 var button = $(form.data('ams-submit-button')); |
1230 if (button) |
1230 if (button && !button.data('ams-form-hide-loading')) |
1231 button.button('loading'); |
1231 button.button('loading'); |
1232 ams.ajax.check($.fn.ajaxSubmit, |
1232 ams.ajax.check($.fn.ajaxSubmit, |
1233 ams.baseURL + 'ext/jquery-form-3.49' + (ams.devmode ? '.js' : '.min.js'), |
1233 ams.baseURL + 'ext/jquery-form-3.49' + ams.devext + '.js', |
1234 function() { |
1234 function() { |
1235 |
1235 |
1236 function _submitAjaxForm(form, options) { |
1236 function _submitAjaxForm(form, options) { |
1237 |
1237 |
1238 var button; |
1238 var button; |
1407 // JQuery-progressbar plug-in must be loaded synchronously!! |
1407 // JQuery-progressbar plug-in must be loaded synchronously!! |
1408 // Otherwise, hidden input fields created by jquery-validate plug-in |
1408 // Otherwise, hidden input fields created by jquery-validate plug-in |
1409 // and matching named buttons will be deleted (on first form submit) |
1409 // and matching named buttons will be deleted (on first form submit) |
1410 // before JQuery-form plug-in can get them when submitting the form... |
1410 // before JQuery-form plug-in can get them when submitting the form... |
1411 ams.ajax.check($.progressBar, |
1411 ams.ajax.check($.progressBar, |
1412 ams.baseURL + 'ext/jquery-progressbar' + (ams.devmode ? '.js' : '.min.js')); |
1412 ams.baseURL + 'ext/jquery-progressbar' + ams.devext + '.js'); |
1413 var settings = $.extend({}, { |
1413 var settings = $.extend({}, { |
1414 uuid: $.progressBar.submit(form) |
1414 uuid: $.progressBar.submit(form) |
1415 }); |
1415 }); |
1416 _submitAjaxForm(form, settings); |
1416 _submitAjaxForm(form, settings); |
1417 } else |
1417 } else |
1622 } else if (errors instanceof Array) { |
1622 } else if (errors instanceof Array) { |
1623 var header = errors.length == 1 ? ams.i18n.ERROR_OCCURED : ams.i18n.ERRORS_OCCURED; |
1623 var header = errors.length == 1 ? ams.i18n.ERROR_OCCURED : ams.i18n.ERRORS_OCCURED; |
1624 ams.skin.alert(form, 'error', header, errors); |
1624 ams.skin.alert(form, 'error', header, errors); |
1625 } else { |
1625 } else { |
1626 $('.state-error', form).removeClass('state-error'); |
1626 $('.state-error', form).removeClass('state-error'); |
1627 header = errors.widgets && (errors.widgets.length > 1) ? ams.i18n.ERRORS_OCCURED : ams.i18n.ERROR_OCCURED; |
1627 header = errors.error_header || |
1628 (errors.widgets && (errors.widgets.length > 1) ? ams.i18n.ERRORS_OCCURED : ams.i18n.ERROR_OCCURED); |
|
1628 var message = new Array(); |
1629 var message = new Array(); |
1629 var index; |
1630 var index; |
1630 for (index in errors.messages) { |
1631 for (index in errors.messages) { |
1631 if (!$.isNumeric(index)) |
1632 if (!$.isNumeric(index)) |
1632 continue; |
1633 continue; |
1633 message.push(errors.messages[index].message || errors.messages[index]); |
1634 if (errors.messages[index].header) { |
1635 message.push('<strong>' + errors.messages[index].header + '</strong><br />' + errors.messages[index].message); |
|
1636 } else { |
|
1637 message.push(errors.messages[index].message || errors.messages[index]); |
|
1638 } |
|
1634 } |
1639 } |
1635 for (index in errors.widgets) { |
1640 for (index in errors.widgets) { |
1636 if (!$.isNumeric(index)) |
1641 if (!$.isNumeric(index)) |
1637 continue; |
1642 continue; |
1638 // set widget status message |
1643 // set widget status message |
1653 $('li:nth-child(' + tab_index + ')', nav_tabs).removeClassPrefix('state-') |
1658 $('li:nth-child(' + tab_index + ')', nav_tabs).removeClassPrefix('state-') |
1654 .addClass('state-error'); |
1659 .addClass('state-error'); |
1655 $('li.state-error:first a', form).click(); |
1660 $('li.state-error:first a', form).click(); |
1656 } |
1661 } |
1657 } |
1662 } |
1658 ams.skin.alert(form, 'error', header, message, errors.error_message); |
1663 ams.skin.alert(form, errors.error_level || 'error', header, message, errors.error_message); |
1659 } |
1664 } |
1660 } |
1665 } |
1661 }; |
1666 }; |
1662 |
1667 |
1663 |
1668 |
1683 /** |
1688 /** |
1684 * Modal dialog opener |
1689 * Modal dialog opener |
1685 */ |
1690 */ |
1686 open: function(source, options) { |
1691 open: function(source, options) { |
1687 ams.ajax.check($.fn.modalmanager, |
1692 ams.ajax.check($.fn.modalmanager, |
1688 ams.baseURL + 'ext/bootstrap-modalmanager' + (ams.devmode ? '.js' : '.min.js'), |
1693 ams.baseURL + 'ext/bootstrap-modalmanager' + ams.devext + '.js', |
1689 function() { |
1694 function() { |
1690 ams.ajax.check($.fn.modal.defaults, |
1695 ams.ajax.check($.fn.modal.defaults, |
1691 ams.baseURL + 'ext/bootstrap-modal' + (ams.devmode ? '.js' : '.min.js'), |
1696 ams.baseURL + 'ext/bootstrap-modal' + ams.devext + '.js', |
1692 function(first_load) { |
1697 function(first_load) { |
1693 if (first_load) { |
1698 if (first_load) { |
1694 $(document).off('click.modal'); |
1699 $(document).off('click.modal'); |
1695 $.fn.modal.defaults.spinner = $.fn.modalmanager.defaults.spinner = |
1700 $.fn.modal.defaults.spinner = $.fn.modalmanager.defaults.spinner = |
1696 '<div class="loading-spinner" style="width: 200px; margin-left: -100px;">' + |
1701 '<div class="loading-spinner" style="width: 200px; margin-left: -100px;">' + |
1830 * Modals hidden callback |
1835 * Modals hidden callback |
1831 * This callback can be used to clean contents added by plug-ins |
1836 * This callback can be used to clean contents added by plug-ins |
1832 */ |
1837 */ |
1833 hidden: function(e) { |
1838 hidden: function(e) { |
1834 var modal = e.target; |
1839 var modal = e.target; |
1840 // Call registered cleaning callbacks |
|
1841 ams.skin.cleanContainer(modal); |
|
1842 // Call registered hide callbacks |
|
1835 var callbacks = ams.dialog._hide_callbacks; |
1843 var callbacks = ams.dialog._hide_callbacks; |
1836 for (var index in callbacks) { |
1844 for (var index in callbacks) { |
1837 callbacks[index].call(modal); |
1845 callbacks[index].call(modal); |
1838 } |
1846 } |
1839 } |
1847 } |
2011 for (var name in plugins) { |
2019 for (var name in plugins) { |
2012 disabled.push(plugins[name]); |
2020 disabled.push(plugins[name]); |
2013 } |
2021 } |
2014 }); |
2022 }); |
2015 |
2023 |
2016 // Run already enabled plug-ins |
2024 // Load and register new plug-ins |
2017 for (var index in ams.plugins.enabled) { |
|
2018 if (disabled.indexOf(index) >= 0) |
|
2019 continue; |
|
2020 var plugin = ams.plugins.enabled[index]; |
|
2021 if (typeof(plugin) == 'function') |
|
2022 plugin(element); |
|
2023 } |
|
2024 |
|
2025 // Load, run and register new plug-ins |
|
2026 var name; |
2025 var name; |
2027 $('[data-ams-plugins]', element).each(function() { |
2026 $('[data-ams-plugins]', element).each(function() { |
2028 var source = $(this); |
2027 var source = $(this); |
2029 var plugins = {} |
2028 var plugins = {} |
2030 if (typeof(source.data('ams-plugins')) === 'string') { |
2029 if (typeof(source.data('ams-plugins')) === 'string') { |
2048 var plugin = plugins[name]; |
2047 var plugin = plugins[name]; |
2049 ams.getScript(plugin.src, function() { |
2048 ams.getScript(plugin.src, function() { |
2050 var callback = plugin.callback; |
2049 var callback = plugin.callback; |
2051 if (callback) { |
2050 if (callback) { |
2052 var called = ams.getFunctionByName(callback); |
2051 var called = ams.getFunctionByName(callback); |
2053 if (typeof(called) == 'function') |
|
2054 called.apply(source); |
|
2055 if (plugin.register !== false) |
2052 if (plugin.register !== false) |
2056 ams.plugins.enabled[name] = called; |
2053 ams.plugins.enabled[name] = called; |
2057 } else { |
2054 } else { |
2058 if (plugin.register !== false) |
2055 if (plugin.register !== false) |
2059 ams.plugins.enabled[name] = null; |
2056 ams.plugins.enabled[name] = null; |
2066 async: plugin.async === undefined ? true : plugin.async |
2063 async: plugin.async === undefined ? true : plugin.async |
2067 }); |
2064 }); |
2068 } |
2065 } |
2069 } |
2066 } |
2070 }); |
2067 }); |
2068 |
|
2069 // Run all enabled plug-ins |
|
2070 for (var index in ams.plugins.enabled) { |
|
2071 if (disabled.indexOf(index) >= 0) |
|
2072 continue; |
|
2073 var plugin = ams.plugins.enabled[index]; |
|
2074 if (typeof(plugin) == 'function') |
|
2075 plugin(element); |
|
2076 } |
|
2071 }, |
2077 }, |
2072 |
2078 |
2073 /** |
2079 /** |
2074 * Data initializer |
2080 * Data initializer |
2075 * This plug-in converts a single JSON "data-ams-data" attribute into a set of several equivalent "data-" attributes. |
2081 * This plug-in converts a single JSON "data-ams-data" attribute into a set of several equivalent "data-" attributes. |
2155 */ |
2161 */ |
2156 hint: function(element) { |
2162 hint: function(element) { |
2157 var hints = $('.hint:not(:parents(.nohints))', element); |
2163 var hints = $('.hint:not(:parents(.nohints))', element); |
2158 if (hints.length > 0) |
2164 if (hints.length > 0) |
2159 ams.ajax.check($.fn.tipsy, |
2165 ams.ajax.check($.fn.tipsy, |
2160 ams.baseURL + 'ext/jquery-tipsy' + (ams.devmode ? '.js' : '.min.js'), |
2166 ams.baseURL + 'ext/jquery-tipsy' + ams.devext + '.js', |
2161 function() { |
2167 function() { |
2162 ams.getCSS(ams.baseURL + '../css/ext/jquery-tipsy' + (ams.devmode ? '.css' : '.min.css'), |
2168 ams.getCSS(ams.baseURL + '../css/ext/jquery-tipsy' + ams.devext + '.css', |
2163 'jquery-tipsy'); |
2169 'jquery-tipsy'); |
2164 hints.each(function() { |
2170 hints.each(function() { |
2165 var hint = $(this); |
2171 var hint = $(this); |
2166 var data = hint.data(); |
2172 var data = hint.data(); |
2167 var data_options = { |
2173 var data_options = { |
2170 var hint = $(this); |
2176 var hint = $(this); |
2171 return hint.attr('original-title') || |
2177 return hint.attr('original-title') || |
2172 hint.attr(data.amsHintTitleAttr || 'title') || |
2178 hint.attr(data.amsHintTitleAttr || 'title') || |
2173 (data.amsHintHtml ? hint.html() : hint.text()); |
2179 (data.amsHintHtml ? hint.html() : hint.text()); |
2174 }, |
2180 }, |
2175 opacity: data.amsHintOpacity, |
2181 opacity: data.amsHintOpacity || 0.95, |
2176 gravity: data.amsHintGravity || 'sw', |
2182 gravity: data.amsHintGravity || 'sw', |
2177 offset: data.amsHintOffset || 0 |
2183 offset: data.amsHintOffset || 0 |
2178 }; |
2184 }; |
2179 var settings = $.extend({}, data_options, data.amsHintOptions); |
2185 var settings = $.extend({}, data_options, data.amsHintOptions); |
2180 settings = ams.executeFunctionByName(data.amsHintInitCallback, hint, settings) || settings; |
2186 settings = ams.executeFunctionByName(data.amsHintInitCallback, hint, settings) || settings; |
2181 var plugin = hint.tipsy(settings); |
2187 var plugin = hint.tipsy(settings); |
2182 ams.executeFunctionByName(data.amsHintAfterInitCallback, hint, plugin, settings); |
2188 ams.executeFunctionByName(data.amsHintAfterInitCallback, hint, plugin, settings); |
2183 }); |
2189 }); |
2184 }); |
2190 }); |
2191 }, |
|
2192 |
|
2193 /** |
|
2194 * Context menu plug-in |
|
2195 */ |
|
2196 contextMenu: function(element) { |
|
2197 var menus = $('.context-menu', element); |
|
2198 if (menus.length > 0) { |
|
2199 menus.each(function() { |
|
2200 var menu = $(this); |
|
2201 var data = menu.data(); |
|
2202 var data_options = { |
|
2203 menuSelector: data.amsContextmenuSelector, |
|
2204 menuSelected: ams.helpers.contextMenuHandler |
|
2205 }; |
|
2206 var settings = $.extend({}, data_options, data.amsContextmenuOptions); |
|
2207 settings = ams.executeFunctionByName(data.amsContextmenuInitCallback, menu, settings) || settings; |
|
2208 var plugin = menu.contextMenu(settings); |
|
2209 ams.executeFunctionByName(data.amsContextmenuAfterInitCallback, menu, plugin, settings); |
|
2210 }); |
|
2211 } |
|
2185 }, |
2212 }, |
2186 |
2213 |
2187 /** |
2214 /** |
2188 * Fieldset legend switcher |
2215 * Fieldset legend switcher |
2189 */ |
2216 */ |
2267 input.attr('disabled', 'disabled'); |
2294 input.attr('disabled', 'disabled'); |
2268 } else { |
2295 } else { |
2269 input.on('change', function(e) { |
2296 input.on('change', function(e) { |
2270 e.preventDefault(); |
2297 e.preventDefault(); |
2271 var veto = {}; |
2298 var veto = {}; |
2299 var isChecked = $(this).is(':checked'); |
|
2272 legend.trigger('ams.checker.before-switch', [legend, veto]); |
2300 legend.trigger('ams.checker.before-switch', [legend, veto]); |
2273 if (veto.veto) |
2301 if (veto.veto) { |
2302 // reset checked status because event is fired after change... |
|
2303 $(this).prop('checked', !isChecked); |
|
2274 return; |
2304 return; |
2275 var isChecked = $(this).is(':checked'); |
2305 } |
2276 ams.executeFunctionByName(data.amsCheckerChangeHandler, legend, isChecked); |
2306 ams.executeFunctionByName(data.amsCheckerChangeHandler, legend, isChecked); |
2277 if (!data.amsCheckerCancelDefault) { |
2307 if (!data.amsCheckerCancelDefault) { |
2278 var hidden = input.data('ams-checker-hidden-input'); |
2308 var hidden = input.data('ams-checker-hidden-input'); |
2279 if (isChecked) { |
2309 if (isChecked) { |
2280 if (data.amsCheckerMode == 'disable') |
2310 if (data.amsCheckerMode == 'disable') |
2285 hidden.val(checkedValue); |
2315 hidden.val(checkedValue); |
2286 $('[data-required]', fieldset).attr('required', 'required'); |
2316 $('[data-required]', fieldset).attr('required', 'required'); |
2287 legend.trigger('ams.checker.opened', [legend]); |
2317 legend.trigger('ams.checker.opened', [legend]); |
2288 } else { |
2318 } else { |
2289 if (data.amsCheckerMode == 'disable') |
2319 if (data.amsCheckerMode == 'disable') |
2290 fieldset.attr('disabled', 'disabled'); |
2320 fieldset.prop('disabled', 'disabled'); |
2291 else |
2321 else |
2292 fieldset.addClass('switched'); |
2322 fieldset.addClass('switched'); |
2293 if (hidden) |
2323 if (hidden) |
2294 hidden.val(uncheckedValue); |
2324 hidden.val(uncheckedValue); |
2295 $('[data-required]', fieldset).removeAttr('required'); |
2325 $('[data-required]', fieldset).removeAttr('required'); |
2417 }); |
2447 }); |
2418 } |
2448 } |
2419 }, |
2449 }, |
2420 |
2450 |
2421 /** |
2451 /** |
2422 * Context menu plug-in |
2452 * JQuery typeahead plug-in |
2423 */ |
2453 */ |
2424 contextMenu: function(element) { |
2454 typeahead: function(element) { |
2425 var menus = $('.context-menu', element); |
2455 var typeaheads = $('.typeahead', element); |
2426 if (menus.length > 0) { |
2456 if (typeaheads.length > 0) { |
2427 menus.each(function() { |
2457 ams.ajax.check($.fn.typeahead, |
2428 var menu = $(this); |
2458 ams.baseURL + 'ext/jquery-typeahead' + ams.devext + '.js', |
2429 var data = menu.data(); |
2459 function() { |
2430 var data_options = { |
2460 typeaheads.each(function() { |
2431 menuSelector: data.amsContextmenuSelector, |
2461 var input = $(this); |
2432 menuSelected: ams.helpers.contextMenuHandler |
2462 var data = input.data(); |
2433 }; |
2463 var data_options = {}; |
2434 var settings = $.extend({}, data_options, data.amsContextmenuOptions); |
2464 var settings = $.extend({}, data_options, data.amsTypeaheadOptions); |
2435 settings = ams.executeFunctionByName(data.amsContextmenuInitCallback, menu, settings) || settings; |
2465 settings = ams.executeFunctionByName(data.amsTypeaheadInitCallback, input, settings) || settings; |
2436 var plugin = menu.contextMenu(settings); |
2466 var plugin = input.typeahead(settings); |
2437 ams.executeFunctionByName(data.amsContextmenuAfterInitCallback, menu, plugin, settings); |
2467 ams.executeFunctionByName(data.amsTypeaheadAfterInitCallback, input, plugin, settings); |
2438 }); |
2468 }); |
2469 }); |
|
2439 } |
2470 } |
2440 }, |
2471 }, |
2441 |
2472 |
2442 /** |
2473 /** |
2443 * Select2 plug-in |
2474 * Select2 plug-in |
2444 */ |
2475 */ |
2445 select2: function(element) { |
2476 select2: function(element) { |
2446 var selects = $('.select2', element); |
2477 var selects = $('.select2', element); |
2447 if (selects.length > 0) { |
2478 if (selects.length > 0) { |
2448 ams.ajax.check($.fn.select2, |
2479 ams.ajax.check($.fn.select2, |
2449 ams.baseURL + 'ext/jquery-select2-3.5.2' + (ams.devmode ? '.js' : '.min.js'), |
2480 ams.baseURL + 'ext/jquery-select2-3.5.2' + ams.devext + '.js', |
2450 function() { |
2481 function() { |
2451 selects.each(function() { |
2482 selects.each(function() { |
2452 var select = $(this); |
2483 var select = $(this); |
2453 var data = select.data(); |
2484 var data = select.data(); |
2454 var data_options = { |
2485 var data_options = { |
2535 default: |
2566 default: |
2536 break; |
2567 break; |
2537 } |
2568 } |
2538 |
2569 |
2539 if (select.attr('readonly')) { |
2570 if (select.attr('readonly')) { |
2540 data_options.query = function() { |
2571 if (select.attr('type') == 'hidden') { |
2541 return []; |
2572 data_options.query = function () { |
2542 }; |
2573 return []; |
2574 }; |
|
2575 } |
|
2543 } else if (data.amsSelect2Query) { |
2576 } else if (data.amsSelect2Query) { |
2544 // Custom query method |
2577 // Custom query method |
2545 data_options.query = ams.getFunctionByName(data.amsSelect2Query); |
2578 data_options.query = ams.getFunctionByName(data.amsSelect2Query); |
2546 data_options.minimumInputLength = data.amsSelect2MinimumInputLength || 1; |
2579 data_options.minimumInputLength = data.amsSelect2MinimumInputLength || 1; |
2547 } else if (data.amsSelect2QueryUrl) { |
2580 } else if (data.amsSelect2QueryUrl) { |
2576 settings.params[data.amsSelect2PageParamName || 'page'] = options.page; |
2609 settings.params[data.amsSelect2PageParamName || 'page'] = options.page; |
2577 settings.params[data.amsSelect2ContextParamName || 'context'] = options.context; |
2610 settings.params[data.amsSelect2ContextParamName || 'context'] = options.context; |
2578 settings = $.extend({}, settings, data.amsSelect2QueryOptions); |
2611 settings = $.extend({}, settings, data.amsSelect2QueryOptions); |
2579 settings = ams.executeFunctionByName(data.amsSelect2QueryInitCallback, select, settings) || settings; |
2612 settings = ams.executeFunctionByName(data.amsSelect2QueryInitCallback, select, settings) || settings; |
2580 ams.ajax.check($.jsonRPC, |
2613 ams.ajax.check($.jsonRPC, |
2581 ams.baseURL + 'ext/jquery-jsonrpc' + (ams.devmode ? '.js' : '.min.js'), |
2614 ams.baseURL + 'ext/jquery-jsonrpc' + ams.devext + '.js', |
2582 function() { |
2615 function() { |
2583 $.jsonRPC.withOptions({ |
2616 $.jsonRPC.withOptions({ |
2584 endPoint: data.amsSelect2MethodTarget || ams.jsonrpc.getAddr(), |
2617 endPoint: data.amsSelect2MethodTarget || ams.jsonrpc.getAddr(), |
2585 namespace: data.amsSelect2MethodNamespace, |
2618 namespace: data.amsSelect2MethodNamespace, |
2586 cache: false |
2619 cache: false |
2608 var settings = $.extend({}, data_options, data.amsSelect2Options); |
2641 var settings = $.extend({}, data_options, data.amsSelect2Options); |
2609 settings = ams.executeFunctionByName(data.amsSelect2InitCallback, select, settings) || settings; |
2642 settings = ams.executeFunctionByName(data.amsSelect2InitCallback, select, settings) || settings; |
2610 var plugin = select.select2(settings); |
2643 var plugin = select.select2(settings); |
2611 ams.executeFunctionByName(data.amsSelect2AfterInitCallback, select, plugin, settings); |
2644 ams.executeFunctionByName(data.amsSelect2AfterInitCallback, select, plugin, settings); |
2612 if (select.hasClass('ordered')) { |
2645 if (select.hasClass('ordered')) { |
2613 select.addClass('nofloat'); |
|
2614 ams.ajax.check($.fn.select2Sortable, |
2646 ams.ajax.check($.fn.select2Sortable, |
2615 ams.baseURL + 'ext/jquery-select2-sortable' + (ams.devmode ? '.js' : '.min.js'), |
2647 ams.baseURL + 'ext/jquery-select2-sortable' + ams.devext + '.js', |
2616 function() { |
2648 function() { |
2617 select.select2Sortable({ |
2649 select.select2Sortable({ |
2618 bindOrder: 'sortableStop' |
2650 bindOrder: 'sortableStop' |
2619 }); |
2651 }); |
2620 }); |
2652 }); |
2659 */ |
2691 */ |
2660 datepicker: function(element) { |
2692 datepicker: function(element) { |
2661 var datepickers = $('.datepicker', element); |
2693 var datepickers = $('.datepicker', element); |
2662 if (datepickers.length > 0) { |
2694 if (datepickers.length > 0) { |
2663 ams.ajax.check($.fn.datetimepicker, |
2695 ams.ajax.check($.fn.datetimepicker, |
2664 ams.baseURL + 'ext/jquery-datetimepicker' + (ams.devmode ? '.js': '.min.js'), |
2696 ams.baseURL + 'ext/jquery-datetimepicker' + ams.devext + '.js', |
2665 function(first_load) { |
2697 function(first_load) { |
2666 if (first_load) { |
2698 if (first_load) { |
2667 ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker'); |
2699 ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + ams.devext + '.css', 'jquery-datetimepicker'); |
2668 ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback); |
2700 ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback); |
2669 } |
2701 } |
2670 datepickers.each(function() { |
2702 datepickers.each(function() { |
2671 var input = $(this); |
2703 var input = $(this); |
2672 var data = input.data(); |
2704 var data = input.data(); |
2691 */ |
2723 */ |
2692 datetimepicker: function(element) { |
2724 datetimepicker: function(element) { |
2693 var datetimepickers = $('.datetimepicker', element); |
2725 var datetimepickers = $('.datetimepicker', element); |
2694 if (datetimepickers.length > 0) { |
2726 if (datetimepickers.length > 0) { |
2695 ams.ajax.check($.fn.datetimepicker, |
2727 ams.ajax.check($.fn.datetimepicker, |
2696 ams.baseURL + 'ext/jquery-datetimepicker' + (ams.devmode ? '.js': '.min.js'), |
2728 ams.baseURL + 'ext/jquery-datetimepicker' + ams.devext + '.js', |
2697 function(first_load) { |
2729 function(first_load) { |
2698 if (first_load) { |
2730 if (first_load) { |
2699 ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker'); |
2731 ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + ams.devext + '.css', 'jquery-datetimepicker'); |
2700 ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback); |
2732 ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback); |
2701 } |
2733 } |
2702 datetimepickers.each(function() { |
2734 datetimepickers.each(function() { |
2703 var input = $(this); |
2735 var input = $(this); |
2704 var data = input.data(); |
2736 var data = input.data(); |
2723 */ |
2755 */ |
2724 timepicker: function(element) { |
2756 timepicker: function(element) { |
2725 var timepickers = $('.timepicker', element); |
2757 var timepickers = $('.timepicker', element); |
2726 if (timepickers.length > 0) { |
2758 if (timepickers.length > 0) { |
2727 ams.ajax.check($.fn.datetimepicker, |
2759 ams.ajax.check($.fn.datetimepicker, |
2728 ams.baseURL + 'ext/jquery-datetimepicker' + (ams.devmode ? '.js': '.min.js'), |
2760 ams.baseURL + 'ext/jquery-datetimepicker' + ams.devext + '.js', |
2729 function(first_load) { |
2761 function(first_load) { |
2730 if (first_load) { |
2762 if (first_load) { |
2731 ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + (ams.devmode ? '.css' : '.min.css'), 'jquery-datetimepicker'); |
2763 ams.getCSS(ams.baseURL + '../css/ext/jquery-datetimepicker' + ams.devext + '.css', 'jquery-datetimepicker'); |
2732 ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback); |
2764 ams.dialog.registerHideCallback(ams.helpers.datetimepickerDialogHiddenCallback); |
2733 } |
2765 } |
2734 timepickers.each(function() { |
2766 timepickers.each(function() { |
2735 var input = $(this); |
2767 var input = $(this); |
2736 var data = input.data(); |
2768 var data = input.data(); |
2754 */ |
2786 */ |
2755 colorpicker: function(element) { |
2787 colorpicker: function(element) { |
2756 var colorpickers = $('.colorpicker', element); |
2788 var colorpickers = $('.colorpicker', element); |
2757 if (colorpickers.length > 0) { |
2789 if (colorpickers.length > 0) { |
2758 ams.ajax.check($.fn.minicolors, |
2790 ams.ajax.check($.fn.minicolors, |
2759 ams.baseURL + 'ext/jquery-minicolors' + (ams.devmode ? '.js' : '.min.js'), |
2791 ams.baseURL + 'ext/jquery-minicolors' + ams.devext + '.js', |
2760 function(first_load) { |
2792 function(first_load) { |
2761 if (first_load) { |
2793 if (first_load) { |
2762 ams.getCSS(ams.baseURL + '../css/ext/jquery-minicolors' + (ams.devmode ? '.css' : '.min.css'), 'jquery-minicolors'); |
2794 ams.getCSS(ams.baseURL + '../css/ext/jquery-minicolors' + ams.devext + '.css', 'jquery-minicolors'); |
2763 } |
2795 } |
2764 colorpickers.each(function() { |
2796 colorpickers.each(function() { |
2765 var input = $(this); |
2797 var input = $(this); |
2766 var data = input.data(); |
2798 var data = input.data(); |
2767 var data_options = { |
2799 var data_options = { |
2775 }); |
2807 }); |
2776 } |
2808 } |
2777 }, |
2809 }, |
2778 |
2810 |
2779 /** |
2811 /** |
2780 * JQuery typeahead plug-in |
|
2781 */ |
|
2782 typeahead: function(element) { |
|
2783 var typeaheads = $('.typeahead', element); |
|
2784 if (typeaheads.length > 0) { |
|
2785 ams.ajax.check($.fn.typeahead, |
|
2786 ams.baseURL + 'ext/jquery-typeahead' + (ams.devmode ? '.js' : '.min.js'), |
|
2787 function() { |
|
2788 typeaheads.each(function() { |
|
2789 var input = $(this); |
|
2790 var data = input.data(); |
|
2791 var data_options = {}; |
|
2792 var settings = $.extend({}, data_options, data.amsTypeaheadOptions); |
|
2793 settings = ams.executeFunctionByName(data.amsTypeaheadInitCallback, input, settings) || settings; |
|
2794 var plugin = input.typeahead(settings); |
|
2795 ams.executeFunctionByName(data.amsTypeaheadAfterInitCallback, input, plugin, settings); |
|
2796 }); |
|
2797 }); |
|
2798 } |
|
2799 }, |
|
2800 |
|
2801 /** |
|
2802 * JQuery validation plug-in |
2812 * JQuery validation plug-in |
2803 */ |
2813 */ |
2804 validate: function(element) { |
2814 validate: function(element) { |
2805 var forms = $('FORM:not([novalidate])', element); |
2815 var forms = $('FORM:not([novalidate])', element); |
2806 if (forms.length > 0) { |
2816 if (forms.length > 0) { |
2807 ams.ajax.check($.fn.validate, |
2817 ams.ajax.check($.fn.validate, |
2808 ams.baseURL + 'ext/jquery-validate-1.11.1' + (ams.devmode ? '.js' : '.min.js'), |
2818 ams.baseURL + 'ext/jquery-validate-1.11.1' + ams.devext + '.js', |
2809 function(first_load) { |
2819 function(first_load) { |
2810 if (first_load) { |
2820 if (first_load) { |
2811 $.validator.setDefaults({ |
2821 $.validator.setDefaults({ |
2812 highlight: function(element) { |
2822 highlight: function(element) { |
2813 $(element).closest('.form-group, label:not(:parents(.form-group))').addClass('state-error'); |
2823 $(element).closest('.form-group, label:not(:parents(.form-group))').addClass('state-error'); |
2847 // Otherwise, hidden input fields created by jquery-validate plug-in |
2857 // Otherwise, hidden input fields created by jquery-validate plug-in |
2848 // and matching named buttons will be deleted (on first form submit) |
2858 // and matching named buttons will be deleted (on first form submit) |
2849 // before JQuery-form plug-in can get them when submitting the form... |
2859 // before JQuery-form plug-in can get them when submitting the form... |
2850 $('.state-error', form).removeClass('state-error'); |
2860 $('.state-error', form).removeClass('state-error'); |
2851 ams.ajax.check($.fn.ajaxSubmit, |
2861 ams.ajax.check($.fn.ajaxSubmit, |
2852 ams.baseURL + 'ext/jquery-form-3.49' + (ams.devmode ? '.js' : '.min.js')); |
2862 ams.baseURL + 'ext/jquery-form-3.49' + ams.devext + '.js'); |
2853 return ams.form.submit(form); |
2863 return ams.form.submit(form); |
2854 } |
2864 } |
2855 : ams.getFunctionByName(data.amsFormSubmitHandler) |
2865 : ams.getFunctionByName(data.amsFormSubmitHandler) |
2856 : undefined, |
2866 : undefined, |
2857 invalidHandler: form.attr('data-async') !== undefined |
2867 invalidHandler: form.attr('data-async') !== undefined |
2887 */ |
2897 */ |
2888 datatable: function(element) { |
2898 datatable: function(element) { |
2889 var tables = $('.datatable', element); |
2899 var tables = $('.datatable', element); |
2890 if (tables.length > 0) { |
2900 if (tables.length > 0) { |
2891 ams.ajax.check($.fn.dataTable, |
2901 ams.ajax.check($.fn.dataTable, |
2892 ams.baseURL + 'ext/jquery-dataTables-1.9.4' + (ams.devmode ? '.js' : '.min.js'), |
2902 ams.baseURL + 'ext/jquery-dataTables-1.9.4' + ams.devext + '.js', |
2893 function(first_load) { |
2903 function(first_load) { |
2894 if (first_load) { |
2904 if (first_load) { |
2895 $.fn.dataTableExt.oSort['numeric-comma-asc'] = function(a, b) { |
2905 $.fn.dataTableExt.oSort['numeric-comma-asc'] = function(a, b) { |
2896 var x = a.replace(/,/, ".").replace(/ /g, ''); |
2906 var x = a.replace(/,/, ".").replace(/ /g, ''); |
2897 var y = b.replace(/,/, ".").replace(/ /g, ''); |
2907 var y = b.replace(/,/, ".").replace(/ /g, ''); |
2907 return ((x < y) ? 1 : ((x > y) ? -1 : 0)); |
2917 return ((x < y) ? 1 : ((x > y) ? -1 : 0)); |
2908 }; |
2918 }; |
2909 } |
2919 } |
2910 $(tables).each(function() { |
2920 $(tables).each(function() { |
2911 ams.ajax.check($.fn.dataTableExt.oPagination['bootstrap_full'], |
2921 ams.ajax.check($.fn.dataTableExt.oPagination['bootstrap_full'], |
2912 ams.baseURL + 'myams-dataTables' + (ams.devmode ? '.js' : '.min.js')); |
2922 ams.baseURL + 'myams-dataTables' + ams.devext + '.js'); |
2913 var table = $(this); |
2923 var table = $(this); |
2914 var data = table.data(); |
2924 var data = table.data(); |
2915 var extensions = (data.amsDatatableExtensions || '').split(/\s+/); |
2925 var extensions = (data.amsDatatableExtensions || '').split(/\s+/); |
2916 var sDom = data.amsDatatableSdom || |
2926 var sDom = data.amsDatatableSdom || |
2917 "W" + |
2927 "W" + |
2931 bJQueryUI: false, |
2941 bJQueryUI: false, |
2932 bFilter: data.amsDatatableGlobalFilter !== false, |
2942 bFilter: data.amsDatatableGlobalFilter !== false, |
2933 bPaginate: data.amsDatatablePagination !== false, |
2943 bPaginate: data.amsDatatablePagination !== false, |
2934 bInfo: data.amsDatatableInfo !== false, |
2944 bInfo: data.amsDatatableInfo !== false, |
2935 bSort: data.amsDatatableSort !== false, |
2945 bSort: data.amsDatatableSort !== false, |
2946 aaSorting: data.amsDatatableSorting, |
|
2936 bDeferRender: true, |
2947 bDeferRender: true, |
2937 bAutoWidth: false, |
2948 bAutoWidth: false, |
2938 iDisplayLength: data.amsDatatableDisplayLength || 25, |
2949 iDisplayLength: data.amsDatatableDisplayLength || 25, |
2939 sPaginationType: data.amsDatatablePaginationType || 'bootstrap_full', |
2950 sPaginationType: data.amsDatatablePaginationType || 'bootstrap_full', |
2940 sDom: sDom, |
2951 sDom: sDom, |
2949 if (extensions.length > 0) { |
2960 if (extensions.length > 0) { |
2950 for (index in extensions) { |
2961 for (index in extensions) { |
2951 switch (extensions[index]) { |
2962 switch (extensions[index]) { |
2952 case 'autofill': |
2963 case 'autofill': |
2953 ams.ajax.check($.fn.dataTable.AutoFill, |
2964 ams.ajax.check($.fn.dataTable.AutoFill, |
2954 ams.baseURL + 'ext/jquery-dataTables-autoFill' + (ams.devmode ? '.js' : '.min.js')); |
2965 ams.baseURL + 'ext/jquery-dataTables-autoFill' + ams.devext + '.js'); |
2955 break; |
2966 break; |
2956 case 'columnfilter': |
2967 case 'columnfilter': |
2957 ams.ajax.check($.fn.columnFilter, |
2968 ams.ajax.check($.fn.columnFilter, |
2958 ams.baseURL + 'ext/jquery-dataTables-columnFilter' + (ams.devmode ? '.js' : '.min.js')); |
2969 ams.baseURL + 'ext/jquery-dataTables-columnFilter' + ams.devext + '.js'); |
2959 break; |
2970 break; |
2960 case 'colreorder': |
2971 case 'colreorder': |
2961 ams.ajax.check($.fn.dataTable.ColReorder, |
2972 ams.ajax.check($.fn.dataTable.ColReorder, |
2962 ams.baseURL + 'ext/jquery-dataTables-colReorder' + (ams.devmode ? '.js' : '.min.js')); |
2973 ams.baseURL + 'ext/jquery-dataTables-colReorder' + ams.devext + '.js'); |
2963 break; |
2974 break; |
2964 case 'colreorderwithresize': |
2975 case 'colreorderwithresize': |
2965 ams.ajax.check($.fn.dataTable.ColReorder, |
2976 ams.ajax.check($.fn.dataTable.ColReorder, |
2966 ams.baseURL + 'ext/jquery-dataTables-colReorderWithResize' + (ams.devmode ? '.js' : '.min.js')); |
2977 ams.baseURL + 'ext/jquery-dataTables-colReorderWithResize' + ams.devext + '.js'); |
2967 break; |
2978 break; |
2968 case 'colvis': |
2979 case 'colvis': |
2969 ams.ajax.check($.fn.dataTable.ColVis, |
2980 ams.ajax.check($.fn.dataTable.ColVis, |
2970 ams.baseURL + 'ext/jquery-dataTables-colVis' + (ams.devmode ? '.js' : '.min.js')); |
2981 ams.baseURL + 'ext/jquery-dataTables-colVis' + ams.devext + '.js'); |
2971 var cv_default = { |
2982 var cv_default = { |
2972 activate: 'click', |
2983 activate: 'click', |
2973 sAlign: 'right' |
2984 sAlign: 'right' |
2974 }; |
2985 }; |
2975 settings.oColVis = $.extend({}, cv_default, data.amsDatatableColvisOptions); |
2986 settings.oColVis = $.extend({}, cv_default, data.amsDatatableColvisOptions); |
2976 break; |
2987 break; |
2977 case 'editable': |
2988 case 'editable': |
2978 ams.ajax.check($.fn.editable, |
2989 ams.ajax.check($.fn.editable, |
2979 ams.baseURL + 'ext/jquery-jeditable' + (ams.devmode ? '.js' : '.min.js')); |
2990 ams.baseURL + 'ext/jquery-jeditable' + ams.devext + '.js'); |
2980 ams.ajax.check($.fn.makeEditable, |
2991 ams.ajax.check($.fn.makeEditable, |
2981 ams.baseURL + 'ext/jquery-dataTables-editable' + (ams.devmode ? '.js' : '.min.js')); |
2992 ams.baseURL + 'ext/jquery-dataTables-editable' + ams.devext + '.js'); |
2982 break; |
2993 break; |
2983 case 'fixedcolumns': |
2994 case 'fixedcolumns': |
2984 ams.ajax.check($.fn.dataTable.FixedColumns, |
2995 ams.ajax.check($.fn.dataTable.FixedColumns, |
2985 ams.baseURL + 'ext/jquery-dataTables-fixedColumns' + (ams.devmode ? '.js' : '.min.js')); |
2996 ams.baseURL + 'ext/jquery-dataTables-fixedColumns' + ams.devext + '.js'); |
2986 break; |
2997 break; |
2987 case 'fixedheader': |
2998 case 'fixedheader': |
2988 ams.ajax.check($.fn.dataTable.FixedHeader, |
2999 ams.ajax.check($.fn.dataTable.FixedHeader, |
2989 ams.baseURL + 'ext/jquery-dataTables-fixedHeader' + (ams.devmode ? '.js' : '.min.js')); |
3000 ams.baseURL + 'ext/jquery-dataTables-fixedHeader' + ams.devext + '.js'); |
2990 break; |
3001 break; |
2991 case 'keytable': |
3002 case 'keytable': |
2992 ams.ajax.check(window.KeyTable, |
3003 ams.ajax.check(window.KeyTable, |
2993 ams.baseURL + 'ext/jquery-dataTables-keyTable' + (ams.devmode ? '.js' : '.min.js')); |
3004 ams.baseURL + 'ext/jquery-dataTables-keyTable' + ams.devext + '.js'); |
2994 break; |
3005 break; |
2995 case 'rowgrouping': |
3006 case 'rowgrouping': |
2996 ams.ajax.check($.fn.rowGrouping, |
3007 ams.ajax.check($.fn.rowGrouping, |
2997 ams.baseURL + 'ext/jquery-dataTables-rowGrouping' + (ams.devmode ? '.js' : '.min.js')); |
3008 ams.baseURL + 'ext/jquery-dataTables-rowGrouping' + ams.devext + '.js'); |
2998 break; |
3009 break; |
2999 case 'rowreordering': |
3010 case 'rowreordering': |
3000 ams.ajax.check($.fn.rowReordering, |
3011 ams.ajax.check($.fn.rowReordering, |
3001 ams.baseURL + 'ext/jquery-dataTables-rowReordering' + (ams.devmode ? '.js' : '.min.js')); |
3012 ams.baseURL + 'ext/jquery-dataTables-rowReordering' + ams.devext + '.js'); |
3002 break; |
3013 break; |
3003 case 'scroller': |
3014 case 'scroller': |
3004 ams.ajax.check($.fn.dataTable.Scroller, |
3015 ams.ajax.check($.fn.dataTable.Scroller, |
3005 ams.baseURL + 'ext/jquery-dataTables-scroller' + (ams.devmode ? '.js' : '.min.js')); |
3016 ams.baseURL + 'ext/jquery-dataTables-scroller' + ams.devext + '.js'); |
3006 break; |
3017 break; |
3007 default: |
3018 default: |
3008 break; |
3019 break; |
3009 } |
3020 } |
3010 } |
3021 } |
3099 */ |
3110 */ |
3100 tablednd: function(element) { |
3111 tablednd: function(element) { |
3101 var tables = $('.table-dnd', element); |
3112 var tables = $('.table-dnd', element); |
3102 if (tables.length > 0) { |
3113 if (tables.length > 0) { |
3103 ams.ajax.check($.fn.tableDnD, |
3114 ams.ajax.check($.fn.tableDnD, |
3104 ams.baseURL + 'ext/jquery-tablednd' + (ams.devmode ? '.js' : '.min.js'), |
3115 ams.baseURL + 'ext/jquery-tablednd' + ams.devext + '.js', |
3105 function(first_load) { |
3116 function(first_load) { |
3106 tables.each(function() { |
3117 tables.each(function() { |
3107 var table = $(this); |
3118 var table = $(this); |
3108 $(table).on('mouseover', 'tr', function() { |
3119 $(table).on('mouseover', 'tr', function() { |
3109 $(this.cells[0]).addClass('drag-handle'); |
3120 $(this.cells[0]).addClass('drag-handle'); |
3128 }); |
3139 }); |
3129 var local_target = ams.getFunctionByName(target); |
3140 var local_target = ams.getFunctionByName(target); |
3130 if (typeof(local_target) == 'function') { |
3141 if (typeof(local_target) == 'function') { |
3131 local_target.call(table, dnd_table, rows); |
3142 local_target.call(table, dnd_table, rows); |
3132 } else { |
3143 } else { |
3133 ams.ajax.post(target, {names: rows}); |
3144 ams.ajax.post(target, {names: JSON.stringify(rows)}); |
3134 } |
3145 } |
3135 } |
3146 } |
3147 return false; |
|
3136 } |
3148 } |
3137 }; |
3149 }; |
3138 var settings = $.extend({}, data_options, data.amsTabledndOptions); |
3150 var settings = $.extend({}, data_options, data.amsTabledndOptions); |
3139 settings = ams.executeFunctionByName(data.amsTabledndInitCallback, table, settings) || settings; |
3151 settings = ams.executeFunctionByName(data.amsTabledndInitCallback, table, settings) || settings; |
3140 var plugin = table.tableDnD(settings); |
3152 var plugin = table.tableDnD(settings); |
3143 }); |
3155 }); |
3144 } |
3156 } |
3145 }, |
3157 }, |
3146 |
3158 |
3147 /** |
3159 /** |
3160 * TinyMCE plug-in |
|
3161 */ |
|
3162 tinymce: function(element) { |
|
3163 |
|
3164 function cleanEditors() { |
|
3165 $('.tinymce', $(this)).each(function() { |
|
3166 var editor = tinymce.get($(this).attr('id')); |
|
3167 if (editor) { |
|
3168 editor.remove(); |
|
3169 } |
|
3170 }); |
|
3171 } |
|
3172 |
|
3173 var editors = $('.tinymce', element); |
|
3174 if (editors.length > 0) { |
|
3175 var baseURL = ams.baseURL + 'ext/tinymce' + (ams.devmode ? '/dev' : ''); |
|
3176 ams.ajax.check(window.tinymce, |
|
3177 baseURL + '/tinymce' + ams.devext + '.js', |
|
3178 function(first_load) { |
|
3179 if (first_load) { |
|
3180 ams.getScript(baseURL + '/jquery.tinymce' + ams.devext + '.js'); |
|
3181 tinymce.baseURL = baseURL; |
|
3182 tinymce.suffix = ams.devext; |
|
3183 ams.skin.registerCleanCallback(cleanEditors); |
|
3184 } |
|
3185 editors.each(function() { |
|
3186 var editor = $(this); |
|
3187 var data = editor.data(); |
|
3188 var data_options = { |
|
3189 theme: "modern", |
|
3190 language: ams.lang, |
|
3191 plugins: [ |
|
3192 "advlist autosave autolink lists link image charmap print preview hr anchor pagebreak", |
|
3193 "searchreplace wordcount visualblocks visualchars code fullscreen", |
|
3194 "insertdatetime media nonbreaking save table contextmenu directionality", |
|
3195 "emoticons paste textcolor colorpicker textpattern" |
|
3196 ], |
|
3197 toolbar1: "newdocument undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image", |
|
3198 toolbar2: "print preview media | forecolor backcolor emoticons | code fullscreen", |
|
3199 content_css: data.amsTinymceContentCss, |
|
3200 formats: data.amsTinymceFormats, |
|
3201 style_formats: data.amsTinymceStyleFormats, |
|
3202 block_formats: data.amsTinymceBlockFormats, |
|
3203 valid_classes: data.amsTinymceValidClasses, |
|
3204 image_advtab: true, |
|
3205 image_list: ams.getFunctionByName(data.amsTinymceImageList) || data.amsTinymceImageList, |
|
3206 image_class_list: data.amsTinymceImageClassList, |
|
3207 link_list: ams.getFunctionByName(data.amsTinymceLinkList) || data.amsTinymceLinkList, |
|
3208 link_class_list: data.amsTinymceLinkClassList, |
|
3209 resize: true |
|
3210 }; |
|
3211 if (data.amsTinymceExternalPlugins) { |
|
3212 var names = data.amsTinymceExternalPlugins.split(/\s+/); |
|
3213 for (var index in names) { |
|
3214 var plugin_src = editor.data('ams-tinymce-plugin-' + names[index]); |
|
3215 tinymce.PluginManager.load(names[index], ams.getSource(plugin_src)); |
|
3216 } |
|
3217 } |
|
3218 var settings = $.extend({}, data_options, data.amsTinymceOptions); |
|
3219 settings = ams.executeFunctionByName(data.amsTinymceInitCallback, editor, settings) || settings; |
|
3220 var plugin = editor.tinymce(settings); |
|
3221 ams.executeFunctionByName(data.amsTinymceAfterInitCallback, editor, plugin, settings); |
|
3222 }); |
|
3223 }); |
|
3224 } |
|
3225 }, |
|
3226 |
|
3227 /** |
|
3228 * Image area select plug-in |
|
3229 */ |
|
3230 imgareaselect: function(element) { |
|
3231 var images = $('.imgareaselect', element); |
|
3232 if (images.length > 0) { |
|
3233 ams.ajax.check($.fn.imgAreaSelect, |
|
3234 ams.baseURL + 'ext/jquery-imgareaselect-0.9.10' + ams.devext + '.js', |
|
3235 function(first_load) { |
|
3236 if (first_load) |
|
3237 ams.getCSS(ams.baseURL + '../css/ext/jquery-imgareaselect' + ams.devext + '.css'); |
|
3238 images.each(function() { |
|
3239 var image = $(this); |
|
3240 var data = image.data(); |
|
3241 var parent = data.amsImgareaselectParent ? image.parents(data.amsImgareaselectParent) : 'body'; |
|
3242 var data_options = { |
|
3243 instance: true, |
|
3244 handles: true, |
|
3245 parent: parent, |
|
3246 x1: data.amsImgareaselectX1 || 0, |
|
3247 y1: data.amsImgareaselectY1 || 0, |
|
3248 x2: data.amsImgareaselectX2 || data.amsImgareaselectImageWidth, |
|
3249 y2: data.amsImgareaselectY2 || data.amsImgareaselectImageHeight, |
|
3250 imageWidth: data.amsImgareaselectImageWidth, |
|
3251 imageHeight: data.amsImgareaselectImageHeight, |
|
3252 minWidth: 128, |
|
3253 minHeight: 128, |
|
3254 aspectRatio: data.amsImgareaselectRatio, |
|
3255 onSelectEnd: ams.getFunctionByName(data.amsImgareaselectSelectEnd) || function(img, selection) { |
|
3256 var target = data.amsImgareaselectTargetField || 'image_'; |
|
3257 $('input[name="' + target + 'x1"]', parent).val(selection.x1); |
|
3258 $('input[name="' + target + 'y1"]', parent).val(selection.y1); |
|
3259 $('input[name="' + target + 'x2"]', parent).val(selection.x2); |
|
3260 $('input[name="' + target + 'y2"]', parent).val(selection.y2); |
|
3261 } |
|
3262 }; |
|
3263 var settings = $.extend({}, data_options, data.amsImgareaselectOptions); |
|
3264 settings = ams.executeFunctionByName(data.amsImgareaselectInitCallback, image, settings) || settings; |
|
3265 var plugin = image.imgAreaSelect(settings); |
|
3266 ams.executeFunctionByName(data.amsImgareaselectAfterInitCallback, image, plugin, settings); |
|
3267 // Add update timeout when plug-in is displayed into a modal dialog |
|
3268 setTimeout(function() { |
|
3269 plugin.update(); |
|
3270 }, 250); |
|
3271 }); |
|
3272 }) |
|
3273 } |
|
3274 }, |
|
3275 |
|
3276 /** |
|
3148 * FancyBox plug-in |
3277 * FancyBox plug-in |
3149 */ |
3278 */ |
3150 fancybox: function(element) { |
3279 fancybox: function(element) { |
3151 var fancyboxes = $('.fancybox', element); |
3280 var fancyboxes = $('.fancybox', element); |
3152 if (fancyboxes.length > 0) { |
3281 if (fancyboxes.length > 0) { |
3153 ams.ajax.check($.fn.fancybox, |
3282 ams.ajax.check($.fn.fancybox, |
3154 ams.baseURL + 'ext/jquery-fancybox-2.1.5' + (ams.devmode ? '.js' : '.min.js'), |
3283 ams.baseURL + 'ext/jquery-fancybox-2.1.5' + ams.devext + '.js', |
3155 function(first_load) { |
3284 function(first_load) { |
3156 if (first_load) |
3285 if (first_load) |
3157 ams.getCSS(ams.baseURL + '../css/ext/jquery-fancybox-2.1.5' + (ams.devmode ? '.css' : '.min.css')); |
3286 ams.getCSS(ams.baseURL + '../css/ext/jquery-fancybox-2.1.5' + ams.devext + '.css'); |
3158 fancyboxes.each(function() { |
3287 fancyboxes.each(function() { |
3159 var fancybox = $(this); |
3288 var fancybox = $(this); |
3160 var data = fancybox.data(); |
3289 var data = fancybox.data(); |
3161 var helpers = (data.amsFancyboxHelpers || '').split(/\s+/); |
3290 var helpers = (data.amsFancyboxHelpers || '').split(/\s+/); |
3162 if (helpers.length > 0) { |
3291 if (helpers.length > 0) { |
3163 for (var index in helpers) { |
3292 for (var index in helpers) { |
3164 var helper = helpers[index]; |
3293 var helper = helpers[index]; |
3165 switch (helper) { |
3294 switch (helper) { |
3166 case 'buttons': |
3295 case 'buttons': |
3167 ams.ajax.check($.fancybox.helpers.buttons, |
3296 ams.ajax.check($.fancybox.helpers.buttons, |
3168 ams.baseURL + 'ext/fancybox-helpers/fancybox-buttons.js' + (ams.devmode ? '.js' : '.min.js')); |
3297 ams.baseURL + 'ext/fancybox-helpers/fancybox-buttons' + ams.devext + '.js'); |
3169 break; |
3298 break; |
3170 case 'thumbs': |
3299 case 'thumbs': |
3171 ams.ajax.check($.fancybox.helpers.thumbs, |
3300 ams.ajax.check($.fancybox.helpers.thumbs, |
3172 ams.baseURL + 'ext/fancybox-helpers/fancybox-thumbs.js' + (ams.devmode ? '.js' : '.min.js')); |
3301 ams.baseURL + 'ext/fancybox-helpers/fancybox-thumbs' + ams.devext + '.js'); |
3173 break; |
3302 break; |
3174 case 'media': |
3303 case 'media': |
3175 ams.ajax.check($.fancybox.helpers.media, |
3304 ams.ajax.check($.fancybox.helpers.media, |
3176 ams.baseURL + 'ext/fancybox-helpers/fancybox-media.js' + (ams.devmode ? '.js' : '.min.js')); |
3305 ams.baseURL + 'ext/fancybox-helpers/fancybox-media' + ams.devext + '.js'); |
3177 break; |
3306 break; |
3178 default: |
3307 default: |
3179 break; |
3308 break; |
3180 } |
3309 } |
3181 } |
3310 } |
3201 }); |
3330 }); |
3202 } |
3331 } |
3203 }, |
3332 }, |
3204 |
3333 |
3205 /** |
3334 /** |
3206 * Image area select plug-in |
|
3207 */ |
|
3208 imgareaselect: function(element) { |
|
3209 var images = $('.imgareaselect', element); |
|
3210 if (images.length > 0) { |
|
3211 ams.ajax.check($.fn.imgAreaSelect, |
|
3212 ams.baseURL + 'ext/jquery-imgareaselect-0.9.10' + (ams.devmode ? '.js' : '.min.js'), |
|
3213 function(first_load) { |
|
3214 if (first_load) |
|
3215 ams.getCSS(ams.baseURL + '../css/ext/jquery-imgareaselect' + (ams.devmode ? '.css' : '.min.css')); |
|
3216 images.each(function() { |
|
3217 var image = $(this); |
|
3218 var data = image.data(); |
|
3219 var parent = data.amsImgareaselectParent ? image.parents(data.amsImgareaselectParent) : 'body'; |
|
3220 var data_options = { |
|
3221 instance: true, |
|
3222 handles: true, |
|
3223 parent: parent, |
|
3224 x1: data.amsImgareaselectX1 || 0, |
|
3225 y1: data.amsImgareaselectY1 || 0, |
|
3226 x2: data.amsImgareaselectX2 || data.amsImgareaselectImageWidth, |
|
3227 y2: data.amsImgareaselectY2 || data.amsImgareaselectImageHeight, |
|
3228 imageWidth: data.amsImgareaselectImageWidth, |
|
3229 imageHeight: data.amsImgareaselectImageHeight, |
|
3230 minWidth: 128, |
|
3231 minHeight: 128, |
|
3232 aspectRatio: data.amsImgareaselectRatio, |
|
3233 onSelectEnd: ams.getFunctionByName(data.amsImgareaselectSelectEnd) || function(img, selection) { |
|
3234 var target = data.amsImgareaselectTargetField || 'image_'; |
|
3235 $('input[name="' + target + 'x1"]', parent).val(selection.x1); |
|
3236 $('input[name="' + target + 'y1"]', parent).val(selection.y1); |
|
3237 $('input[name="' + target + 'x2"]', parent).val(selection.x2); |
|
3238 $('input[name="' + target + 'y2"]', parent).val(selection.y2); |
|
3239 } |
|
3240 }; |
|
3241 var settings = $.extend({}, data_options, data.amsImgareaselectOptions); |
|
3242 settings = ams.executeFunctionByName(data.amsImgareaselectInitCallback, image, settings) || settings; |
|
3243 var plugin = image.imgAreaSelect(settings); |
|
3244 ams.executeFunctionByName(data.amsImgareaselectAfterInitCallback, image, plugin, settings); |
|
3245 // Add update timeout when plug-in is displayed into a modal dialog |
|
3246 setTimeout(function() { |
|
3247 plugin.update(); |
|
3248 }, 250); |
|
3249 }); |
|
3250 }) |
|
3251 } |
|
3252 }, |
|
3253 |
|
3254 /** |
|
3255 * Sparkline graphs |
3335 * Sparkline graphs |
3256 */ |
3336 */ |
3257 graphs: function(element) { |
3337 graphs: function(element) { |
3258 var graphs = $('.sparkline', element); |
3338 var graphs = $('.sparkline', element); |
3259 if (graphs.length > 0) { |
3339 if (graphs.length > 0) { |
3260 ams.ajax.check(ams.graphs, |
3340 ams.ajax.check(ams.graphs, |
3261 ams.baseURL + 'myams-graphs' + (ams.devmode ? '.js' : '.min.js'), |
3341 ams.baseURL + 'myams-graphs' + ams.devext + '.js', |
3262 function() { |
3342 function() { |
3263 ams.graphs.init(graphs); |
3343 ams.graphs.init(graphs); |
3264 }); |
3344 }); |
3265 } |
3345 } |
3266 }, |
3346 }, |
3273 if (scrollbars.length > 0) { |
3353 if (scrollbars.length > 0) { |
3274 ams.ajax.check($.event.special.mousewheel, |
3354 ams.ajax.check($.event.special.mousewheel, |
3275 ams.baseURL + 'ext/jquery-mousewheel.min.js', |
3355 ams.baseURL + 'ext/jquery-mousewheel.min.js', |
3276 function() { |
3356 function() { |
3277 ams.ajax.check($.fn.mCustomScrollbar, |
3357 ams.ajax.check($.fn.mCustomScrollbar, |
3278 ams.baseURL + 'ext/jquery-mCustomScrollbar' + (ams.devmode ? '.js' : '.min.js'), |
3358 ams.baseURL + 'ext/jquery-mCustomScrollbar' + ams.devext + '.js', |
3279 function(first_load) { |
3359 function(first_load) { |
3280 if (first_load) |
3360 if (first_load) |
3281 ams.getCSS(ams.baseURL + '../css/ext/jquery-mCustomScrollbar.css', |
3361 ams.getCSS(ams.baseURL + '../css/ext/jquery-mCustomScrollbar.css', |
3282 'jquery-mCustomScrollbar'); |
3362 'jquery-mCustomScrollbar'); |
3283 scrollbars.each(function() { |
3363 scrollbars.each(function() { |
3566 _initDesktopWidgets: function(element) { |
3646 _initDesktopWidgets: function(element) { |
3567 if (ams.enable_widgets) { |
3647 if (ams.enable_widgets) { |
3568 var widgets = $('.ams-widget', element); |
3648 var widgets = $('.ams-widget', element); |
3569 if (widgets.length > 0) |
3649 if (widgets.length > 0) |
3570 ams.ajax.check($.fn.MyAMSWidget, |
3650 ams.ajax.check($.fn.MyAMSWidget, |
3571 ams.baseURL + 'myams-widgets' + (ams.devmode ? '.js' : '.min.js'), |
3651 ams.baseURL + 'myams-widgets' + ams.devext + '.js', |
3572 function() { |
3652 function() { |
3573 widgets.each(function() { |
3653 widgets.each(function() { |
3574 var widget = $(this); |
3654 var widget = $(this); |
3575 var data = widget.data(); |
3655 var data = widget.data(); |
3576 var data_options = { |
3656 var data_options = { |
3636 /** |
3716 /** |
3637 * Big message box |
3717 * Big message box |
3638 */ |
3718 */ |
3639 bigBox: function(options, callback) { |
3719 bigBox: function(options, callback) { |
3640 ams.ajax.check(ams.notify, |
3720 ams.ajax.check(ams.notify, |
3641 ams.baseURL + 'myams-notify' + (ams.devmode ? '.js' : '.min.js'), |
3721 ams.baseURL + 'myams-notify' + ams.devext + '.js', |
3642 function() { |
3722 function() { |
3643 ams.notify.messageBox(options, callback); |
3723 ams.notify.messageBox(options, callback); |
3644 }); |
3724 }); |
3645 }, |
3725 }, |
3646 |
3726 |
3652 callback = options; |
3732 callback = options; |
3653 options = status || {}; |
3733 options = status || {}; |
3654 status = 'info'; |
3734 status = 'info'; |
3655 } |
3735 } |
3656 ams.ajax.check(ams.notify, |
3736 ams.ajax.check(ams.notify, |
3657 ams.baseURL + 'myams-notify' + (ams.devmode ? '.js' : '.min.js'), |
3737 ams.baseURL + 'myams-notify' + ams.devext + '.js', |
3658 function() { |
3738 function() { |
3659 switch (status) { |
3739 switch (status) { |
3660 case 'error': |
3740 case 'error': |
3661 case 'danger': |
3741 case 'danger': |
3662 options.color = '#C46A69'; |
3742 options.color = '#C46A69'; |
3683 callback = options; |
3763 callback = options; |
3684 options = status || {}; |
3764 options = status || {}; |
3685 status = 'info'; |
3765 status = 'info'; |
3686 } |
3766 } |
3687 ams.ajax.check(ams.notify, |
3767 ams.ajax.check(ams.notify, |
3688 ams.baseURL + 'myams-notify' + (ams.devmode ? '.js' : '.min.js'), |
3768 ams.baseURL + 'myams-notify' + ams.devext + '.js', |
3689 function() { |
3769 function() { |
3690 switch (status) { |
3770 switch (status) { |
3691 case 'error': |
3771 case 'error': |
3692 case 'danger': |
3772 case 'danger': |
3693 options.color = '#C46A69'; |
3773 options.color = '#C46A69'; |
3775 } |
3855 } |
3776 } |
3856 } |
3777 }, |
3857 }, |
3778 |
3858 |
3779 /** |
3859 /** |
3860 * List of registered 'cleaning' callbacks |
|
3861 * These callbacks are called before loading a new URL into a given container |
|
3862 * to clean required elements from memory before the DOM elements are removed |
|
3863 */ |
|
3864 _clean_callbacks: [], |
|
3865 |
|
3866 /** |
|
3867 * Register a callback which should be called before a container is replaced |
|
3868 */ |
|
3869 registerCleanCallback: function(callback) { |
|
3870 var callbacks = ams.skin._clean_callbacks; |
|
3871 if (callbacks.indexOf(callback) < 0) |
|
3872 callbacks.push(callback); |
|
3873 }, |
|
3874 |
|
3875 /** |
|
3876 * Call registered cleaning callbacks on given container |
|
3877 */ |
|
3878 cleanContainer: function(container) { |
|
3879 var callbacks = ams.skin._clean_callbacks; |
|
3880 for (var index in callbacks) { |
|
3881 callbacks[index].call(container); |
|
3882 } |
|
3883 }, |
|
3884 |
|
3885 /** |
|
3780 * Load given URL into container |
3886 * Load given URL into container |
3781 */ |
3887 */ |
3782 loadURL: function(url, container, options, callback) { |
3888 loadURL: function(url, container, options, callback) { |
3783 if (url.startsWith('#')) { |
3889 if (url.startsWith('#')) { |
3784 url = url.substr(1); |
3890 url = url.substr(1); |
3792 type: 'GET', |
3898 type: 'GET', |
3793 url: url, |
3899 url: url, |
3794 dataType: 'html', |
3900 dataType: 'html', |
3795 cache: false, |
3901 cache: false, |
3796 beforeSend: function() { |
3902 beforeSend: function() { |
3797 container.html('<h1><i class="fa fa-cog fa-spin"></i> Loading... </h1>'); |
3903 ams.skin.cleanContainer(container); |
3904 container.html('<h1 class="loading"><i class="fa fa-cog fa-spin"></i> Loading... </h1>'); |
|
3798 if (container[0] == $('#content')[0]) { |
3905 if (container[0] == $('#content')[0]) { |
3799 ams.skin._drawBreadCrumb(); |
3906 ams.skin._drawBreadCrumb(); |
3800 document.title = $('.breadcrumb LI:last-child').text(); |
3907 document.title = $('.breadcrumb LI:last-child').text(); |
3801 $('html, body').animate({scrollTop: 0}, 'fast'); |
3908 $('html, body').animate({scrollTop: 0}, 'fast'); |
3802 } else { |
3909 } else { |
3808 ams.executeFunctionByName(callback, this, data, status, request, options); |
3915 ams.executeFunctionByName(callback, this, data, status, request, options); |
3809 else { |
3916 else { |
3810 var request_data = ams.ajax.getResponse(request); |
3917 var request_data = ams.ajax.getResponse(request); |
3811 var data_type = request_data.content_type; |
3918 var data_type = request_data.content_type; |
3812 var result = request_data.data; |
3919 var result = request_data.data; |
3920 $('.loading', container).remove(); |
|
3813 switch (data_type) { |
3921 switch (data_type) { |
3814 case 'json': |
3922 case 'json': |
3815 ams.ajax.handleJSON(result, container); |
3923 ams.ajax.handleJSON(result, container); |
3816 break; |
3924 break; |
3817 case 'script': |
3925 case 'script': |
3918 } else { |
4026 } else { |
3919 ams.root.addClass('mobile-detected'); |
4027 ams.root.addClass('mobile-detected'); |
3920 ams.device = 'mobile'; |
4028 ams.device = 'mobile'; |
3921 if (ams.enable_fastclick) { |
4029 if (ams.enable_fastclick) { |
3922 ams.ajax.check($.fn.noClickDelay, |
4030 ams.ajax.check($.fn.noClickDelay, |
3923 ams.baseURL + '/ext/jquery-smartclick' + (ams.devmode ? '.js' : '.min.js'), |
4031 ams.baseURL + '/ext/jquery-smartclick' + ams.devext + '.js', |
3924 function() { |
4032 function() { |
3925 $('NAV UL A').noClickDelay(); |
4033 $('NAV UL A').noClickDelay(); |
3926 $('#hide-menu A').noClickDelay(); |
4034 $('#hide-menu A').noClickDelay(); |
3927 }); |
4035 }); |
3928 } |
4036 } |
4048 element.popover('hide'); |
4156 element.popover('hide'); |
4049 }); |
4157 }); |
4050 |
4158 |
4051 // Resize events |
4159 // Resize events |
4052 ams.ajax.check($.resize, |
4160 ams.ajax.check($.resize, |
4053 ams.baseURL + 'ext/jquery-resize' + (ams.devmode ? '.js' : '.min.js'), |
4161 ams.baseURL + 'ext/jquery-resize' + ams.devext + '.js', |
4054 function() { |
4162 function() { |
4055 $('#main').resize(function() { |
4163 $('#main').resize(function() { |
4056 ams.skin._setPageHeight(); |
4164 ams.skin._setPageHeight(); |
4057 ams.skin._checkMobileWidth(); |
4165 ams.skin._checkMobileWidth(); |
4058 }); |
4166 }); |
4061 }); |
4169 }); |
4062 }); |
4170 }); |
4063 |
4171 |
4064 // Init AJAX navigation |
4172 // Init AJAX navigation |
4065 if (ams.ajax_nav) { |
4173 if (ams.ajax_nav) { |
4066 if ($('nav').length > 0) |
|
4067 ams.skin.checkURL(); |
|
4068 $(document).on('click', 'a[href="#"]', function(e) { |
4174 $(document).on('click', 'a[href="#"]', function(e) { |
4069 e.preventDefault(); |
4175 e.preventDefault(); |
4070 }); |
4176 }); |
4071 $(document).on('click', 'a[href!="#"]:not([data-toggle]), [data-ams-url]:not([data-toggle])', function(e) { |
4177 $(document).on('click', 'a[href!="#"]:not([data-toggle]), [data-ams-url]:not([data-toggle])', function(e) { |
4072 var link = $(e.currentTarget); |
4178 var link = $(e.currentTarget); |
4194 if (button.exists() && button.parent().hasClass('input-file')) { |
4300 if (button.exists() && button.parent().hasClass('input-file')) { |
4195 button.next('input[type="text"]').val(input.val()); |
4301 button.next('input[type="text"]').val(input.val()); |
4196 } |
4302 } |
4197 }); |
4303 }); |
4198 |
4304 |
4305 // Prevent bootstrap dialog from blocking TinyMCE focus |
|
4306 $(document).on('focusin', function(e) { |
|
4307 if ($(e.target).closest('.mce-window').length) { |
|
4308 e.stopImmediatePropagation(); |
|
4309 } |
|
4310 }); |
|
4311 |
|
4199 // Disable clicks on disabled tabs |
4312 // Disable clicks on disabled tabs |
4200 $("a[data-toggle=tab]", ".nav-tabs").on("click", function(e) { |
4313 $("a[data-toggle=tab]", ".nav-tabs").on("click", function(e) { |
4201 if ($(this).parent('li').hasClass("disabled")) { |
4314 if ($(this).parent('li').hasClass("disabled")) { |
4202 e.preventDefault(); |
4315 e.preventDefault(); |
4203 return false; |
4316 return false; |
4215 if (data.amsTabLoadOnce) |
4328 if (data.amsTabLoadOnce) |
4216 link.data('ams-tab-loaded', true); |
4329 link.data('ams-tab-loaded', true); |
4217 } |
4330 } |
4218 }); |
4331 }); |
4219 |
4332 |
4220 // Init plug-ins required by main layout |
4333 // Init page content |
4221 ams.plugins.enabled.hint(document); |
4334 ams.initContent(document); |
4222 |
4335 if (ams.ajax_nav && ($('nav').length > 0)) |
4223 // Init content when not loaded by AJAX request |
4336 ams.skin.checkURL(); |
4224 // or when redirecting to authentication page... |
|
4225 if ((window.location.hash == '') || (ams.getQueryVar(window.location.href, 'came_from') != false)) |
|
4226 ams.initContent(document); |
|
4227 |
4337 |
4228 // Add unload event listener to check for modified forms |
4338 // Add unload event listener to check for modified forms |
4229 $(window).on('beforeunload', ams.form.checkBeforeUnload); |
4339 $(window).on('beforeunload', ams.form.checkBeforeUnload); |
4230 |
4340 |
4231 }; |
4341 }; |