686 } |
688 } |
687 } |
689 } |
688 return msg; |
690 return msg; |
689 }, |
691 }, |
690 |
692 |
691 copyToClipboard: function() { |
693 |
692 return function() { |
694 copyToClipboard: function(text) { |
693 var source = $(this); |
695 |
694 source.parents('.btn-group').removeClass('open'); |
696 function doCopy(text) { |
695 if (globals.prompt) { |
697 var copied = false; |
696 globals.prompt(MyAMS.i18n.CLIPBOARD_COPY, source.text()); |
698 if (window.clipboardData && window.clipboardData.setData) { |
697 } |
699 // IE specific code |
698 }; |
700 copied = clipboardData.setData("Text", text); |
|
701 } else if (document.queryCommandSupported && document.queryCommandSupported("copy")) { |
|
702 var textarea = $("<textarea>"); |
|
703 textarea.val(text); |
|
704 textarea.css('position', 'fixed'); // Prevent scrolling to bottom of page in MS Edge. |
|
705 textarea.appendTo($('body')); |
|
706 textarea.get(0).select(); |
|
707 try { |
|
708 document.execCommand("copy"); // Security exception may be thrown by some browsers. |
|
709 copied = true; |
|
710 } catch (ex) { |
|
711 if (console) { |
|
712 console.warn && console.warn("Copy to clipboard failed.", ex); |
|
713 } |
|
714 } finally { |
|
715 textarea.remove(); |
|
716 } |
|
717 } |
|
718 if (copied) { |
|
719 ams.skin.smallBox('success', |
|
720 { |
|
721 title: text.length > 1 |
|
722 ? ams.i18n.CLIPBOARD_TEXT_COPY_OK |
|
723 : ams.i18n.CLIPBOARD_CHARACTER_COPY_OK, |
|
724 icon: 'fa fa-fw fa-info-circle font-xs align-top margin-top-10', |
|
725 timeout: 1000 |
|
726 }); |
|
727 } else if (globals.prompt) { |
|
728 globals.prompt(MyAMS.i18n.CLIPBOARD_COPY, text); |
|
729 } |
|
730 } |
|
731 |
|
732 if (text === undefined) { |
|
733 return function() { |
|
734 var source = $(this); |
|
735 var text = source.text(); |
|
736 source.parents('.btn-group').removeClass('open'); |
|
737 doCopy(text); |
|
738 }; |
|
739 } else { |
|
740 doCopy(text); |
|
741 } |
699 } |
742 } |
700 }; |
743 }; |
701 |
744 |
702 |
745 |
703 /** |
746 /** |
983 case 'error': |
1030 case 'error': |
984 ams.form.showErrors(form, result); |
1031 ams.form.showErrors(form, result); |
985 break; |
1032 break; |
986 case 'info': |
1033 case 'info': |
987 case 'success': |
1034 case 'success': |
988 ams.form.resetChanged(form); |
1035 if (form !== undefined) { |
989 if (result.close_form !== false) { |
1036 ams.form.resetChanged(form); |
990 ams.dialog.close(form); |
1037 if (result.close_form !== false) { |
|
1038 ams.dialog.close(form); |
|
1039 } |
991 } |
1040 } |
992 break; |
1041 break; |
993 case 'message': |
1042 case 'message': |
994 case 'messagebox': |
1043 case 'messagebox': |
995 break; |
1044 break; |
996 case 'notify': |
1045 case 'notify': |
997 case 'callback': |
1046 case 'callback': |
998 case 'callbacks': |
1047 case 'callbacks': |
999 ams.form.resetChanged(form); |
1048 if (form !== undefined) { |
1000 if (result.close_form !== false) { |
1049 ams.form.resetChanged(form); |
1001 ams.dialog.close(form); |
1050 if (result.close_form !== false) { |
|
1051 ams.dialog.close(form); |
|
1052 } |
1002 } |
1053 } |
1003 break; |
1054 break; |
1004 case 'modal': |
1055 case 'modal': |
1005 ams.dialog.open(result.location); |
1056 ams.dialog.open(result.location); |
1006 break; |
1057 break; |
1007 case 'reload': |
1058 case 'reload': |
1008 ams.form.resetChanged(form); |
1059 if (form !== undefined) { |
1009 if (result.close_form !== false) { |
1060 ams.form.resetChanged(form); |
1010 ams.dialog.close(form); |
1061 if (result.close_form !== false) { |
|
1062 ams.dialog.close(form); |
|
1063 } |
1011 } |
1064 } |
1012 url = result.location || window.location.hash; |
1065 url = result.location || window.location.hash; |
1013 if (url.startsWith('#')) { |
1066 if (url.startsWith('#')) { |
1014 url = url.substr(1); |
1067 url = url.substr(1); |
1015 } |
1068 } |
1016 ams.skin.loadURL(url, result.target || target || '#content'); |
1069 var loadTarget = $(result.target || target || '#content'); |
|
1070 ams.skin.loadURL(url, loadTarget, { |
|
1071 preLoadCallback: ams.getFunctionByName(result.pre_reload) || function() { |
|
1072 $('[data-ams-pre-reload]', loadTarget).each(function() { |
|
1073 ams.executeFunctionByName($(this).data('ams-pre-reload')); |
|
1074 }); |
|
1075 }, |
|
1076 afterLoadCallback: ams.getFunctionByName(result.post_reload) || function () { |
|
1077 $('[data-ams-post-reload]', loadTarget).each(function () { |
|
1078 ams.executeFunctionByName($(this).data('ams-post-reload')); |
|
1079 }); |
|
1080 } |
|
1081 }); |
1017 break; |
1082 break; |
1018 case 'redirect': |
1083 case 'redirect': |
1019 ams.form.resetChanged(form); |
1084 if (form !== undefined) { |
1020 if (result.close_form === true) { |
1085 ams.form.resetChanged(form); |
1021 ams.dialog.close(form); |
1086 if (result.close_form === true) { |
|
1087 ams.dialog.close(form); |
|
1088 } |
1022 } |
1089 } |
1023 url = result.location || window.location.href; |
1090 url = result.location || window.location.href; |
1024 if (result.window) { |
1091 if (result.window) { |
1025 window.open(url, result.window, result.options); |
1092 window.open(url, result.window, result.options); |
1026 } else { |
1093 } else { |
1121 } |
1188 } |
1122 } |
1189 } |
1123 if (result.event) { |
1190 if (result.event) { |
1124 form.trigger(result.event, result.event_options); |
1191 form.trigger(result.event, result.event_options); |
1125 } |
1192 } |
|
1193 if (result.events) { |
|
1194 var event; |
|
1195 if (form === undefined) { |
|
1196 form = $(document); |
|
1197 } |
|
1198 for (index =0; index < result.events.length; index++) { |
|
1199 event = result.events[index]; |
|
1200 if (typeof(event) === 'string') { |
|
1201 form.trigger(event, result.events_options); |
|
1202 } else { |
|
1203 form.trigger(event.event, event.options); |
|
1204 } |
|
1205 } |
|
1206 } |
1126 if (result.callback) { |
1207 if (result.callback) { |
1127 ams.executeFunctionByName(result.callback, form, result.options); |
1208 ams.executeFunctionByName(result.callback, form, result.options); |
1128 } |
1209 } |
1129 if (result.callbacks) { |
1210 if (result.callbacks) { |
1130 var callback; |
1211 var callback; |
1131 for (index=0; index < result.callbacks.length; index++) { |
1212 for (index=0; index < result.callbacks.length; index++) { |
1132 callback = result.callbacks[index]; |
1213 callback = result.callbacks[index]; |
1133 ams.executeFunctionByName(callback, form, callback.options); |
1214 if (typeof(callback) === 'function') { |
|
1215 ams.executeFunctionByName(callback, form, callback.options); |
|
1216 } else { |
|
1217 ams.executeFunctionByName(callback.callback, form, callback.options); |
|
1218 } |
1134 } |
1219 } |
1135 } |
1220 } |
1136 } |
1221 } |
1137 }; |
1222 }; |
1138 |
1223 |
2016 if (errors.widgets) { |
2111 if (errors.widgets) { |
2017 for (index = 0; index < errors.widgets.length; index++) { |
2112 for (index = 0; index < errors.widgets.length; index++) { |
2018 // set widget status message |
2113 // set widget status message |
2019 var widgetData = errors.widgets[index]; |
2114 var widgetData = errors.widgets[index]; |
2020 var widget = $('[name="' + widgetData.name + '"]', form); |
2115 var widget = $('[name="' + widgetData.name + '"]', form); |
2021 widget.parents('label:first') |
2116 if (!widget.exists()) { |
2022 .removeClassPrefix('state-') |
2117 widget = $('[name="' + widgetData.name + ':list"]', form); |
2023 .addClass('state-error') |
2118 } |
2024 .after('<span for="name" class="state-error">' + widgetData.message + '</span>'); |
2119 if (widget.exists()) { |
|
2120 widget.parents('label:first') |
|
2121 .removeClassPrefix('state-') |
|
2122 .addClass('state-error') |
|
2123 .after('<span for="name" class="state-error">' + widgetData.message + '</span>'); |
|
2124 } |
2025 // complete form alert message |
2125 // complete form alert message |
2026 if (widgetData.label) { |
2126 if (widgetData.label) { |
2027 message.push(widgetData.label + ' : ' + widgetData.message); |
2127 message.push(widgetData.label + ' : ' + widgetData.message); |
2028 } |
2128 } |
2029 // mark parent tab (if any) with error status |
2129 // mark parent tab (if any) with error status |
3009 var sortable = $(this); |
3132 var sortable = $(this); |
3010 var data = sortable.data(); |
3133 var data = sortable.data(); |
3011 var dataOptions = { |
3134 var dataOptions = { |
3012 items: data.amsSortableItems, |
3135 items: data.amsSortableItems, |
3013 handle: data.amsSortableHandle, |
3136 handle: data.amsSortableHandle, |
|
3137 helper: data.amsSortableHelper, |
3014 connectWith: data.amsSortableConnectwith, |
3138 connectWith: data.amsSortableConnectwith, |
3015 start: ams.getFunctionByName(data.amsSortableStart), |
3139 start: ams.getFunctionByName(data.amsSortableStart), |
3016 over: ams.getFunctionByName(data.amsSortableOver), |
3140 over: ams.getFunctionByName(data.amsSortableOver), |
3017 containment: data.amsSortableContainment, |
3141 containment: data.amsSortableContainment, |
3018 placeholder: data.amsSortablePlaceholder, |
3142 placeholder: data.amsSortablePlaceholder, |
3344 var dataOptions = { |
3468 var dataOptions = { |
3345 lang: data.amsDatetimepickerLang || ams.lang, |
3469 lang: data.amsDatetimepickerLang || ams.lang, |
3346 format: data.amsDatetimepickerFormat || 'd/m/y', |
3470 format: data.amsDatetimepickerFormat || 'd/m/y', |
3347 datepicker: true, |
3471 datepicker: true, |
3348 dayOfWeekStart: 1, |
3472 dayOfWeekStart: 1, |
3349 timepicker: false |
3473 timepicker: false, |
|
3474 closeOnDateSelect: data.amsDatetimepickerCloseOnSelect === undefined ? true : data.amsDatetimepickerCloseOnSelect, |
|
3475 weeks: data.amsDatetimepickerWeeks |
3350 }; |
3476 }; |
3351 var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions); |
3477 var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions); |
3352 settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings; |
3478 settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings; |
3353 var plugin = input.datetimepicker(settings); |
3479 var plugin = input.datetimepicker(settings); |
3354 ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings); |
3480 ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings); |
3376 var dataOptions = { |
3502 var dataOptions = { |
3377 lang: data.amsDatetimepickerLang || ams.lang, |
3503 lang: data.amsDatetimepickerLang || ams.lang, |
3378 format: data.amsDatetimepickerFormat || 'd/m/y H:i', |
3504 format: data.amsDatetimepickerFormat || 'd/m/y H:i', |
3379 datepicker: true, |
3505 datepicker: true, |
3380 dayOfWeekStart: 1, |
3506 dayOfWeekStart: 1, |
3381 timepicker: true |
3507 timepicker: true, |
|
3508 closeOnDateSelect: data.amsDatetimepickerCloseOnSelect === undefined ? true : data.amsDatetimepickerCloseOnSelect, |
|
3509 closeOnTimeSelect: data.amsDatetimepickerCloseOnSelect === undefined ? true : data.amsDatetimepickerCloseOnSelect, |
|
3510 weeks: data.amsDatetimepickerWeeks |
3382 }; |
3511 }; |
3383 var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions); |
3512 var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions); |
3384 settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings; |
3513 settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings; |
3385 var plugin = input.datetimepicker(settings); |
3514 var plugin = input.datetimepicker(settings); |
3386 ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings); |
3515 ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings); |
3407 var data = input.data(); |
3536 var data = input.data(); |
3408 var dataOptions = { |
3537 var dataOptions = { |
3409 lang: data.amsDatetimepickerLang || ams.lang, |
3538 lang: data.amsDatetimepickerLang || ams.lang, |
3410 format: data.amsDatetimepickerFormat || 'H:i', |
3539 format: data.amsDatetimepickerFormat || 'H:i', |
3411 datepicker: false, |
3540 datepicker: false, |
3412 timepicker: true |
3541 timepicker: true, |
|
3542 closeOnTimeSelect: data.amsDatetimepickerCloseOnSelect === undefined ? true : data.amsDatetimepickerCloseOnSelect |
3413 }; |
3543 }; |
3414 var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions); |
3544 var settings = $.extend({}, dataOptions, data.amsDatetimepickerOptions); |
3415 settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings; |
3545 settings = ams.executeFunctionByName(data.amsDatetimepickerInitCallback, input, settings) || settings; |
3416 var plugin = input.datetimepicker(settings); |
3546 var plugin = input.datetimepicker(settings); |
3417 ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings); |
3547 ams.executeFunctionByName(data.amsDatetimepickerAfterInitCallback, input, plugin, settings); |
3795 }); |
3925 }); |
3796 } |
3926 } |
3797 }, |
3927 }, |
3798 |
3928 |
3799 /** |
3929 /** |
3800 * Wizard plug-in |
|
3801 */ |
|
3802 wizard: function(element) { |
|
3803 var wizards = $('.wizard', element); |
|
3804 if (wizards.length > 0) { |
|
3805 ams.ajax.check($.fn.bootstrapWizard, |
|
3806 ams.baseURL + 'ext/bootstrap-wizard-1.4.2' + ams.devext + '.js', |
|
3807 function(first_load) { |
|
3808 wizards.each(function() { |
|
3809 var wizard = $(this); |
|
3810 var data = wizard.data(); |
|
3811 var dataOptions = { |
|
3812 withVisible: data.amsWizardWithVisible === undefined ? true : data.amsWizardWithVisible, |
|
3813 tabClass: data.amsWizardTabClass, |
|
3814 firstSelector: data.amsWizardFirstSelector, |
|
3815 previousSelector: data.amsWizardPreviousSelector, |
|
3816 nextSelector: data.amsWizardNextSelector, |
|
3817 lastSelector: data.amsWizardLastSelector, |
|
3818 finishSelector: data.amsWizardFinishSelector, |
|
3819 backSelector: data.amsWizardBackSelector, |
|
3820 onInit: ams.getFunctionByName(data.amsWizardInit), |
|
3821 onShow: ams.getFunctionByName(data.amsWizardShow), |
|
3822 onNext: ams.getFunctionByName(data.amsWizardNext), |
|
3823 onPrevious: ams.getFunctionByName(data.amsWizardPrevious), |
|
3824 onFirst: ams.getFunctionByName(data.amsWizardFirst), |
|
3825 onLast: ams.getFunctionByName(data.amsWizardLast), |
|
3826 onBack: ams.getFunctionByName(data.amsWizardBack), |
|
3827 onFinish: ams.getFunctionByName(data.amsWizardFinish), |
|
3828 onTabChange: ams.getFunctionByName(data.amsWizardTabChange), |
|
3829 onTabClick: ams.getFunctionByName(data.amsWizardTabClick), |
|
3830 onTabShow: ams.getFunctionByName(data.amsWizardTabShow) |
|
3831 }; |
|
3832 var settings = $.extend({}, dataOptions, data.amsWizardOptions); |
|
3833 settings = ams.executeFunctionByName(data.amsWizardInitCallback, wizard, settings) || settings; |
|
3834 var plugin = wizard.bootstrapWizard(settings); |
|
3835 ams.executeFunctionByName(data.amsWizardAfterInitCallback, wizard, plugin, settings); |
|
3836 }); |
|
3837 }); |
|
3838 } |
|
3839 }, |
|
3840 |
|
3841 /** |
|
3842 * TableDND plug-in |
3930 * TableDND plug-in |
3843 */ |
3931 */ |
3844 tablednd: function(element) { |
3932 tablednd: function(element) { |
3845 var tables = $('.table-dnd', element); |
3933 var tables = $('.table-dnd', element); |
3846 if (tables.length > 0) { |
3934 if (tables.length > 0) { |
3894 var settings = $.extend({}, dataOptions, data.amsTabledndOptions); |
3988 var settings = $.extend({}, dataOptions, data.amsTabledndOptions); |
3895 settings = ams.executeFunctionByName(data.amsTabledndInitCallback, table, settings) || settings; |
3989 settings = ams.executeFunctionByName(data.amsTabledndInitCallback, table, settings) || settings; |
3896 var plugin = table.tableDnD(settings); |
3990 var plugin = table.tableDnD(settings); |
3897 ams.executeFunctionByName(data.amsTabledndAfterInitCallback, table, plugin, settings); |
3991 ams.executeFunctionByName(data.amsTabledndAfterInitCallback, table, plugin, settings); |
3898 }); |
3992 }); |
|
3993 }); |
|
3994 } |
|
3995 }, |
|
3996 |
|
3997 /** |
|
3998 * Wizard plug-in |
|
3999 */ |
|
4000 wizard: function(element) { |
|
4001 var wizards = $('.wizard', element); |
|
4002 if (wizards.length > 0) { |
|
4003 ams.ajax.check($.fn.bootstrapWizard, |
|
4004 ams.baseURL + 'ext/bootstrap-wizard-1.4.2' + ams.devext + '.js', |
|
4005 function(first_load) { |
|
4006 wizards.each(function() { |
|
4007 var wizard = $(this); |
|
4008 var data = wizard.data(); |
|
4009 var dataOptions = { |
|
4010 withVisible: data.amsWizardWithVisible === undefined ? true : data.amsWizardWithVisible, |
|
4011 tabClass: data.amsWizardTabClass, |
|
4012 firstSelector: data.amsWizardFirstSelector, |
|
4013 previousSelector: data.amsWizardPreviousSelector, |
|
4014 nextSelector: data.amsWizardNextSelector, |
|
4015 lastSelector: data.amsWizardLastSelector, |
|
4016 finishSelector: data.amsWizardFinishSelector, |
|
4017 backSelector: data.amsWizardBackSelector, |
|
4018 onInit: ams.getFunctionByName(data.amsWizardInit), |
|
4019 onShow: ams.getFunctionByName(data.amsWizardShow), |
|
4020 onNext: ams.getFunctionByName(data.amsWizardNext), |
|
4021 onPrevious: ams.getFunctionByName(data.amsWizardPrevious), |
|
4022 onFirst: ams.getFunctionByName(data.amsWizardFirst), |
|
4023 onLast: ams.getFunctionByName(data.amsWizardLast), |
|
4024 onBack: ams.getFunctionByName(data.amsWizardBack), |
|
4025 onFinish: ams.getFunctionByName(data.amsWizardFinish), |
|
4026 onTabChange: ams.getFunctionByName(data.amsWizardTabChange), |
|
4027 onTabClick: ams.getFunctionByName(data.amsWizardTabClick), |
|
4028 onTabShow: ams.getFunctionByName(data.amsWizardTabShow) |
|
4029 }; |
|
4030 var settings = $.extend({}, dataOptions, data.amsWizardOptions); |
|
4031 settings = ams.executeFunctionByName(data.amsWizardInitCallback, wizard, settings) || settings; |
|
4032 var plugin = wizard.bootstrapWizard(settings); |
|
4033 ams.executeFunctionByName(data.amsWizardAfterInitCallback, wizard, plugin, settings); |
|
4034 }); |
|
4035 }); |
|
4036 } |
|
4037 }, |
|
4038 |
|
4039 /** |
|
4040 * TinyMCE plug-in |
|
4041 */ |
|
4042 tinymce: function(element) { |
|
4043 |
|
4044 function cleanEditors() { |
|
4045 $('.tinymce', $(this)).each(function() { |
|
4046 var editor = tinymce.get($(this).attr('id')); |
|
4047 if (editor) { |
|
4048 editor.remove(); |
|
4049 } |
|
4050 }); |
|
4051 } |
|
4052 |
|
4053 var editors = $('.tinymce', element); |
|
4054 if (editors.length > 0) { |
|
4055 var baseURL = ams.baseURL + 'ext/tinymce' + (ams.devmode ? '/dev' : ''); |
|
4056 ams.ajax.check(window.tinymce, |
|
4057 baseURL + '/tinymce' + ams.devext + '.js', |
|
4058 function(first_load) { |
|
4059 |
|
4060 function initEditors() { |
|
4061 editors.each(function() { |
|
4062 var editor = $(this); |
|
4063 var data = editor.data(); |
|
4064 var dataOptions = { |
|
4065 theme: data.amsTinymceTheme || "modern", |
|
4066 language: ams.lang, |
|
4067 plugins: [ |
|
4068 "advlist autosave autolink lists link image charmap print preview hr anchor pagebreak", |
|
4069 "searchreplace wordcount visualblocks visualchars code fullscreen", |
|
4070 "insertdatetime media nonbreaking save table contextmenu directionality", |
|
4071 "emoticons paste textcolor colorpicker textpattern autoresize" |
|
4072 ], |
|
4073 toolbar1: data.amsTinymceToolbar1 || "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent", |
|
4074 toolbar2: data.amsTinymceToolbar2 || "forecolor backcolor emoticons | charmap link image media | fullscreen preview print | code", |
|
4075 content_css: data.amsTinymceContentCss, |
|
4076 formats: data.amsTinymceFormats, |
|
4077 style_formats: data.amsTinymceStyleFormats, |
|
4078 block_formats: data.amsTinymceBlockFormats, |
|
4079 valid_classes: data.amsTinymceValidClasses, |
|
4080 image_advtab: true, |
|
4081 image_list: ams.getFunctionByName(data.amsTinymceImageList) || data.amsTinymceImageList, |
|
4082 image_class_list: data.amsTinymceImageClassList, |
|
4083 link_list: ams.getFunctionByName(data.amsTinymceLinkList) || data.amsTinymceLinkList, |
|
4084 link_class_list: data.amsTinymceLinkClassList, |
|
4085 height: 50, |
|
4086 min_height: 50, |
|
4087 autoresize_min_height: 50, |
|
4088 autoresize_max_height: 500, |
|
4089 resize: true |
|
4090 }; |
|
4091 if (data.amsTinymceExternalPlugins) { |
|
4092 var names = data.amsTinymceExternalPlugins.split(/\s+/); |
|
4093 for (var index in names) { |
|
4094 var pluginSrc = editor.data('ams-tinymce-plugin-' + names[index]); |
|
4095 tinymce.PluginManager.load(names[index], ams.getSource(pluginSrc)); |
|
4096 } |
|
4097 } |
|
4098 var settings = $.extend({}, dataOptions, data.amsTinymceOptions); |
|
4099 settings = ams.executeFunctionByName(data.amsTinymceInitCallback, editor, settings) || settings; |
|
4100 var plugin = editor.tinymce(settings); |
|
4101 ams.executeFunctionByName(data.amsTinymceAfterInitCallback, editor, plugin, settings); |
|
4102 }); |
|
4103 } |
|
4104 |
|
4105 if (first_load) { |
|
4106 ams.getScript(baseURL + '/jquery.tinymce' + ams.devext + '.js', function() { |
|
4107 tinymce.baseURL = baseURL; |
|
4108 tinymce.suffix = ams.devext; |
|
4109 ams.skin.registerCleanCallback(cleanEditors); |
|
4110 initEditors(); |
|
4111 }); |
|
4112 } else { |
|
4113 initEditors(); |
|
4114 } |
3899 }); |
4115 }); |
3900 } |
4116 } |
3901 }, |
4117 }, |
3902 |
4118 |
3903 /** |
4119 /** |
3989 } |
4209 } |
3990 var dataOptions = { |
4210 var dataOptions = { |
3991 type: data.amsFancyboxType, |
4211 type: data.amsFancyboxType, |
3992 padding: data.amsFancyboxPadding || 10, |
4212 padding: data.amsFancyboxPadding || 10, |
3993 margin: data.amsFancyboxMargin || 10, |
4213 margin: data.amsFancyboxMargin || 10, |
|
4214 loop: data.amsFancyboxLoop, |
3994 beforeLoad: ams.getFunctionByName(data.amsFancyboxBeforeLoad) || function() { |
4215 beforeLoad: ams.getFunctionByName(data.amsFancyboxBeforeLoad) || function() { |
3995 this.title = ams.executeFunctionByName(data.amsFancyboxTitleGetter, this) || $(this.element).attr('original-title') || $(this.element).attr('title'); |
4216 var title; |
|
4217 if (data.amsFancyboxTitleGetter) { |
|
4218 title = ams.executeFunctionByName(data.amsFancyboxTitleGetter, this); |
|
4219 } |
|
4220 if (!title) { |
|
4221 var content = $('*:first', this.element); |
|
4222 title = content.attr('original-title') || content.attr('title'); |
|
4223 if (!title) { |
|
4224 title = $(this.element).attr('original-title') || $(this.element).attr('title'); |
|
4225 } |
|
4226 } |
|
4227 this.title = title; |
3996 }, |
4228 }, |
|
4229 afterLoad: ams.getFunctionByName(data.amsFancyboxAfterLoad), |
3997 helpers: { |
4230 helpers: { |
3998 title: { |
4231 title: { |
3999 type: 'inside' |
4232 type: 'inside' |
4000 } |
4233 } |
4001 } |
4234 } |
4002 }; |
4235 }; |
|
4236 if (helpers.length > 0) { |
|
4237 for (index = 0; index < helpers.length; index++) { |
|
4238 helper = helpers[index]; |
|
4239 switch (helper) { |
|
4240 case 'buttons': |
|
4241 dataOptions.helpers.buttons = { |
|
4242 position: data.amsFancyboxButtonsPosition || 'top' |
|
4243 }; |
|
4244 break; |
|
4245 case 'thumbs': |
|
4246 dataOptions.helpers.thumbs = { |
|
4247 width: data.amsFancyboxThumbsWidth || 50, |
|
4248 height: data.amsFancyboxThumbsHeight || 50 |
|
4249 }; |
|
4250 break; |
|
4251 case 'media': |
|
4252 dataOptions.helpers.media = true; |
|
4253 break; |
|
4254 } |
|
4255 } |
|
4256 } |
4003 var settings = $.extend({}, dataOptions, data.amsFancyboxOptions); |
4257 var settings = $.extend({}, dataOptions, data.amsFancyboxOptions); |
4004 settings = ams.executeFunctionByName(data.amsFancyboxInitCallback, fancybox, settings) || settings; |
4258 settings = ams.executeFunctionByName(data.amsFancyboxInitCallback, fancybox, settings) || settings; |
4005 var plugin = fancybox.fancybox(settings); |
4259 var plugin = elements.fancybox(settings); |
4006 ams.executeFunctionByName(data.amsFancyboxAfterInitCallback, fancybox, plugin, settings); |
4260 ams.executeFunctionByName(data.amsFancyboxAfterInitCallback, fancybox, plugin, settings); |
4007 }); |
4261 }); |
4008 }); |
4262 }); |
4009 } |
4263 } |
4010 }, |
4264 }, |
4235 deleteElement: function(element) { |
4489 deleteElement: function(element) { |
4236 return function() { |
4490 return function() { |
4237 var link = $(this); |
4491 var link = $(this); |
4238 MyAMS.skin.bigBox({ |
4492 MyAMS.skin.bigBox({ |
4239 title: ams.i18n.WARNING, |
4493 title: ams.i18n.WARNING, |
4240 content: '<i class="text-danger fa fa-2x fa-bell shake animated"></i> ' + ams.i18n.DELETE_WARNING, |
4494 content: '<i class="text-danger fa fa-fw fa-bell"></i> ' + ams.i18n.DELETE_WARNING, |
|
4495 status: 'info', |
4241 buttons: ams.i18n.BTN_OK_CANCEL |
4496 buttons: ams.i18n.BTN_OK_CANCEL |
4242 }, function(button) { |
4497 }, function(button) { |
4243 if (button === ams.i18n.BTN_OK) { |
4498 if (button === ams.i18n.BTN_OK) { |
4244 var table = link.parents('table'); |
4499 var table = link.parents('table').first(); |
4245 var location = table.data('ams-location') || ''; |
4500 var location = table.data('ams-location') || ''; |
4246 var tr = link.parents('tr'); |
4501 var tr = link.parents('tr').first(); |
4247 var deleteTarget = tr.data('ams-delete-target') || table.data('ams-delete-target') || 'delete-element.json'; |
4502 var deleteTarget = tr.data('ams-delete-target') || table.data('ams-delete-target') || 'delete-element.json'; |
4248 var objectName = tr.data('ams-element-name'); |
4503 var objectName = tr.data('ams-element-name'); |
4249 MyAMS.ajax.post(location + '/' + deleteTarget, {'object_name': objectName}, function(result, status) { |
4504 MyAMS.ajax.post(location + '/' + deleteTarget, {'object_name': objectName}, function(result, status) { |
4250 if (result.status === 'success') { |
4505 if (result.status === 'success') { |
4251 if (table.hasClass('datatable')) { |
4506 if (table.hasClass('datatable')) { |
4252 table.dataTable().fnDeleteRow(tr[0]); |
4507 table.dataTable().fnDeleteRow(tr[0]); |
4253 } else { |
4508 } else { |
4254 tr.remove(); |
4509 tr.remove(); |
|
4510 } |
|
4511 if (result.handle_json) { |
|
4512 MyAMS.ajax.handleJSON(result); |
4255 } |
4513 } |
4256 } else { |
4514 } else { |
4257 MyAMS.ajax.handleJSON(result); |
4515 MyAMS.ajax.handleJSON(result); |
4258 } |
4516 } |
4259 }); |
4517 }); |
4980 href.call(link); |
5243 href.call(link); |
4981 } else { |
5244 } else { |
4982 // Standard AJAX or browser URL call |
5245 // Standard AJAX or browser URL call |
4983 // Convert %23 chars to # |
5246 // Convert %23 chars to # |
4984 href = href.replace(/\%23/, '#'); |
5247 href = href.replace(/\%23/, '#'); |
4985 var target = link.data('ams-target'); |
5248 if (e.ctrlKey) { |
4986 if (target) { |
5249 window.open(href); |
4987 ams.form.confirmChangedForm(target, function () { |
|
4988 ams.skin.loadURL(href, target, link.data('ams-link-options'), link.data('ams-link-callback')); |
|
4989 }); |
|
4990 } else { |
5250 } else { |
4991 ams.form.confirmChangedForm(function () { |
5251 var target = link.data('ams-target'); |
4992 if (href.startsWith('#')) { |
5252 if (target) { |
4993 if (href !== location.hash) { |
5253 ams.form.confirmChangedForm(target, function () { |
4994 if (ams.root.hasClass('mobile-view-activated')) { |
5254 ams.skin.loadURL(href, target, link.data('ams-link-options'), link.data('ams-link-callback')); |
4995 ams.root.removeClass('hidden-menu'); |
5255 }); |
4996 window.setTimeout(function () { |
5256 } else { |
|
5257 ams.form.confirmChangedForm(function () { |
|
5258 if (href.startsWith('#')) { |
|
5259 if (href !== location.hash) { |
|
5260 if (ams.root.hasClass('mobile-view-activated')) { |
|
5261 ams.root.removeClass('hidden-menu'); |
|
5262 window.setTimeout(function () { |
|
5263 window.location.hash = href; |
|
5264 }, 50); |
|
5265 } else { |
4997 window.location.hash = href; |
5266 window.location.hash = href; |
4998 }, 50); |
5267 } |
4999 } else { |
|
5000 window.location.hash = href; |
|
5001 } |
5268 } |
|
5269 } else { |
|
5270 window.location = href; |
5002 } |
5271 } |
5003 } else { |
5272 }); |
5004 window.location = href; |
5273 } |
5005 } |
|
5006 }); |
|
5007 } |
5274 } |
5008 } |
5275 } |
5009 }); |
5276 }); |
5010 $(document).on('click', 'a[target="_blank"]', function(e) { |
5277 $(document).on('click', 'a[target="_blank"]', function(e) { |
5011 e.preventDefault(); |
5278 e.preventDefault(); |
5106 |
5373 |
5107 // Notify reset to update Select2 widgets |
5374 // Notify reset to update Select2 widgets |
5108 $(document).on('reset', 'form', function(e) { |
5375 $(document).on('reset', 'form', function(e) { |
5109 var form = $(this); |
5376 var form = $(this); |
5110 setTimeout(function() { |
5377 setTimeout(function() { |
|
5378 $('.alert-danger, SPAN.state-error', form).not('.persistent').remove(); |
|
5379 $('LABEL.state-error', form).removeClass('state-error'); |
|
5380 $('INPUT.select2[type="hidden"]', form).each(function() { |
|
5381 var input = $(this); |
|
5382 var select = input.data('select2'); |
|
5383 input.select2('val', input.data('ams-select2-input-value').split(select.opts.separator)); |
|
5384 }); |
5111 form.find('.select2').trigger('change'); |
5385 form.find('.select2').trigger('change'); |
5112 $('[data-ams-reset-callback]', form).each(function() { |
5386 $('[data-ams-reset-callback]', form).each(function() { |
5113 var element = $(this); |
5387 var element = $(this); |
5114 var data = element.data(); |
5388 var data = element.data(); |
5115 var callback = ams.getFunctionByName(data.amsResetCallback); |
5389 var callback = ams.getFunctionByName(data.amsResetCallback); |