Marius Cramer
2015-08-06 37b29231e47a0c4458dc1c15d98588f16f07e1e2
commit | author | age
9021d7 1 var ISPConfig = {
MC 2     pageFormChanged: false,
3     tabChangeWarningTxt: '',
4     tabChangeDiscardTxt: '',
5     tabChangeWarning: false,
6     tabChangeDiscard: false,
7     requestsRunning: 0,
8     indicatorCompleted: false,
9     registeredHooks: new Array(),
10     new_tpl_add_id: 0,
11     
12     options: {
13         useLoadIndicator: false,
14         useComboBox: false,
15     },
16     
17     setOption: function(key, value) {
18         ISPConfig.options[key] = value;
19     },
20     
21     setOptions: function(opts) {
22         $.extend(ISPConfig.options, opts);
23     },
24     
25     reportError: function(request) {
26         /* Error reporting is disabled by default as some browsers like safari
27            sometimes throw errors when a ajax request is delayed even if the
28            ajax request worked. */
29
30         /*alert(request);*/
31     },
32     
33     registerHook: function(name, callback) {
34         if(!ISPConfig.registeredHooks[name]) ISPConfig.registeredHooks[name] = new Array();
35         var newindex = ISPConfig.registeredHooks[name].length;
36         ISPConfig.registeredHooks[name][newindex] = callback;
37     },
38     
39     callHook: function(name, params) {
40         if(!ISPConfig.registeredHooks[name]) return;
41         for(var i = 0; i < ISPConfig.registeredHooks[name].length; i++) {
42             var callback = ISPConfig.registeredHooks[name][i];
43             callback(name, params);
44         }
45     },
46     
47     resetFormChanged: function() {
48         ISPConfig.pageFormChanged = false;
49     },
50
51     showLoadIndicator: function() {
52         document.body.style.cursor = 'wait';
53         
54         if(ISPConfig.options.useLoadIndicator == true) {
55             ISPConfig.requestsRunning += 1;
56
57             if(ISPConfig.requestsRunning < 2) {
58                 var indicator = $('#ajaxloader');
59                 if(indicator.length < 1) {
60                     indicator = $('<div id="ajaxloader" style="display: none;"></div>');
61                     indicator.appendTo('body');
62                 }
63                 var parent = $('#content');
64                 if(parent.length < 1) return;
65                 ISPConfig.indicatorCompleted = false;
66
67                 var atx = parent.offset().left + 150; //((parent.outerWidth(true) - indicator.outerWidth(true)) / 2);
68                 var aty = parent.offset().top + 150;
69                 indicator.css( {'left': atx, 'top': aty } ).fadeIn('fast', function() {
70                     // check if loader should be hidden immediately
71                     ISPConfig.indicatorCompleted = true;
72                     if(ISPConfig.requestsRunning < 1) $(this).fadeOut('fast', function() { $(this).hide();});
73                 });
74             }
75         }
76     },
77
78     hideLoadIndicator: function() {
79         document.body.style.cursor = '';
80
81         ISPConfig.requestsRunning -= 1;
82         if(ISPConfig.requestsRunning < 1) {
83             ISPConfig.requestsRunning = 0; // just for the case...
84             if(ISPConfig.indicatorCompleted == true) $('#ajaxloader').fadeOut('fast', function() { $('#ajaxloader').hide(); } );
85         }
86     },
87
88     onAfterSideNavLoaded: function() {
89         if(ISPConfig.options.useComboBox == true) {
90             $('#sidebar').find("select:not(.chosen-select)").select2({
91                 placeholder: '',
92                 width: 'element',
93                 selectOnBlur: true,
94                 allowClear: true,
95             });
96         }
97     },
98
99     onAfterContentLoad: function(url, data) {
100         if(!data) data = '';
101         else data = '&' + data;
102         
103         if(ISPConfig.options.useComboBox == true) {
104             $('#pageContent').find("select:not(.chosen-select)").select2({
105                 placeholder: '',
106                 width: 'element',
107                 selectOnBlur: true,
108                 allowClear: true,
109                 formatResult: function(o) {
110                     if(o.id && $(o.element).parent().hasClass('flags')) return '<span class="flags flag-' + o.id.toLowerCase() + '">' + o.text + '</span>';
111                     else return o.text;
112                 },
113                 formatSelection: function(o) {
114                     if(o.id && $(o.element).parent().hasClass('flags')) return '<span class="flags flag-' + o.id.toLowerCase() + '">' + o.text + '</span>';
115                     else return o.text;
116                 }
117             }).on('change', function(e) {
118                 if ($("#pageForm .table #Filter").length > 0) {
119                     $("#pageForm .table #Filter").trigger('click');
120                 }
121             });
122         }
123         
43e5b6 124         $('input[data-input-element="date"]').datetimepicker({
MC 125             'language': 'en', // TODO
126             'todayHighlight': true,
127             'todayBtn': 'linked',
128             'bootcssVer': 3,
129             'fontAwesome': true,
130             'autoclose': true,
131             'minView': 'month'
132         });
133         $('input[data-input-element="datetime"]').datetimepicker({
134             'language': 'en', // TODO
135             'todayHighlight': true,
136             'todayBtn': 'linked',
137             'bootcssVer': 3,
138             'fontAwesome': true,
139             'autoclose': true
140         });
141         
9021d7 142         ISPConfig.callHook('onAfterContentLoad', {'url': url, 'data': data });
MC 143     },
144
145     /* THIS ONE SHOULD BE REMOVED AFTER CREATING THE STATIC LOGIN PAGE!!! */
146     submitLoginForm: function(formname) {
147         //* Validate form. TODO: username and password with strip();
148         var frm = document.getElementById(formname);
149         var userNameObj = frm.username;
150         if(userNameObj.value == ''){
151             userNameObj.focus();
152             return;
153         }
154         var passwordObj = frm.passwort;
155         if(passwordObj.value == ''){
156             passwordObj.focus();
157             return;
158         }
159
160         $('#dummy_username').val(userNameObj.value);
161         $('#dummy_passwort').val(passwordObj.value);
162         $('#dummy_login_form').submit();
163
164         var submitFormObj = $.ajax({
165             type: "POST",
166             url: "content.php",
167             data: $('#'+formname).serialize(),
168             dataType: "html",
169             beforeSend: function() {
170                 ISPConfig.showLoadIndicator();
171             },
172             success: function(data, textStatus, jqXHR) {
173                 if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
174                     var parts = jqXHR.responseText.split(':');
175                     ISPConfig.loadContent(parts[1]);
176                 } else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) {
177                     // Go to the login page
178                     document.location.href = 'index.php';
179                 } else {
180                     $('#pageContent').html(jqXHR.responseText);
181                     ISPConfig.onAfterContentLoad('content.php', $('#'+formname).serialize());
182                     ISPConfig.pageFormChanged = false;
183                 }
184                 ISPConfig.loadMenus();
185                 ISPConfig.hideLoadIndicator();
186             },
187             error: function() {
188                 ISPConfig.hideLoadIndicator();
189                 ISPConfig.reportError('Ajax Request was not successful.110');
190             }
191         });
192     },
193
194     submitForm: function(formname, target, confirmation) {
195         var successMessage = arguments[3];
196         if(!confirmation) confirmation = false;
197         
198         if(!confirmation || window.confirm(confirmation)) {
199             var submitFormObj = $.ajax({
200                 type: "POST",
201                 url: target,
202                 data: $('#'+formname).serialize(),
203                 dataType: "html",
204                 beforeSend: function() {
205                     ISPConfig.showLoadIndicator();
206                 },
207                 success: function(data, textStatus, jqXHR) {
208                     if(successMessage) alert(successMessage);
209                     if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
210                         var parts = jqXHR.responseText.split(':');
211                         ISPConfig.loadContent(parts[1]);
212                     } else {
213                         $('#pageContent').html(jqXHR.responseText);
214                         ISPConfig.onAfterContentLoad(target, $('#'+formname).serialize());
215                         ISPConfig.pageFormChanged = false;
216                     }
217                     ISPConfig.hideLoadIndicator();
218                 },
219                 error: function(jqXHR, textStatus, errorThrown) {
220                     ISPConfig.hideLoadIndicator();
221                     var parts = jqXHR.responseText.split(':');
222                     ISPConfig.reportError('Ajax Request was not successful. 111');
223                 }
224             });
225         }
226     },
227
228     submitUploadForm: function(formname, target) {
229         var handleResponse = function(loadedFrame) {
230             var response, responseStr = loadedFrame.contentWindow.document.body.innerHTML;
231
232             try {
233                 response = JSON.parse(responseStr);
234             } catch(e) {
235                 response = responseStr;
236             }
237             var msg = '';
238             var okmsg = $('#OKMsg',response).html();
239             if(okmsg){
240                 msg = '<div id="OKMsg">'+okmsg+'</div>';
241             }
242             var errormsg = $('#errorMsg',response).html();
243             if(errormsg){
244                 msg = msg+'<div id="errorMsg">'+errormsg+'</div>';
245             }
246             return msg;
247
248         };
249
250         var frame_id = 'ajaxUploader-iframe-' + Math.round(new Date().getTime() / 1000);
251         $('body').after('<iframe width="0" height="0" style="display:none;" name="'+frame_id+'" id="'+frame_id+'"/>');
252         $('input[type="file"]').closest("form").attr({target: frame_id, action: target}).submit();
253         $('#'+frame_id).load(function() {
254             var msg = handleResponse(this);
255             $('#errorMsg').remove();
256             $('#OKMsg').remove();
257             $('input[name="id"]').before(msg);
258             $(this).remove();
259           });
260     },
261
262     capp: function(module, redirect) {
263         var submitFormObj = $.ajax({
264             type: "GET",
265             url: "capp.php",
266             data: "mod="+module+((redirect != undefined) ? '&redirect='+redirect : ''),
267             dataType: "html",
268             beforeSend: function() {
269                 ISPConfig.showLoadIndicator();
270             },
271             success: function(data, textStatus, jqXHR) {
272                 if(jqXHR.responseText != '') {
273                     if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
274                         var parts = jqXHR.responseText.split(':');
275                         ISPConfig.loadContent(parts[1]);
276                     } else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) {
277                         var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length);
278                         document.location.href = newUrl;
279                     } else {
280                         //alert(jqXHR.responseText);
281                     }
282                 }
283                 ISPConfig.loadMenus();
284                 ISPConfig.hideLoadIndicator();
285             },
286             error: function() {
287                 ISPConfig.hideLoadIndicator();
288                 ISPConfig.reportError('Ajax Request was not successful.'+module);
289             }
290         });
291     },
292     
293     loadContent: function(pagename) {
294         var params = arguments[1];
295         var pageContentObject2 = $.ajax({
296             type: "GET",
297             url: pagename,
298             data: (params ? params : null),
299             dataType: "html",
300             beforeSend: function() {
301                 ISPConfig.showLoadIndicator();
302             },
303             success: function(data, textStatus, jqXHR) {
304                 if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
305                     var parts = jqXHR.responseText.split(':');
306                     ISPConfig.loadContent(parts[1]);
307                 } else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) {
308                     var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length);
309                     document.location.href = newUrl;
310                 } else {
311                     //document.getElementById('pageContent').innerHTML = jqXHR.responseText;
312                     //var reponse = $(jqXHR.responseText);
313                     //var reponseScript = reponse.filter("script");
314                     //$.each(reponseScript, function(idx, val) { eval(val.text); } );
315
316                     $('#pageContent').html(jqXHR.responseText);
317                     ISPConfig.onAfterContentLoad(pagename, (params ? params : null));
318                     ISPConfig.pageFormChanged = false;
319                 }
320                 ISPConfig.hideLoadIndicator();
321             },
322             error: function() {
323                 ISPConfig.hideLoadIndicator();
324                 ISPConfig.reportError('Ajax Request was not successful. 113');
325             }
326         });
327     },
328
329     loadContentRefresh: function(pagename) {
330         if($('#refreshinterval').val() > 0) {
331             var pageContentObject2 = $.ajax({
332                 type: "GET",
333                 url: pagename,
334                 data: "refresh="+document.getElementById('refreshinterval').value,
335                 dataType: "html",
336                 beforeSend: function() {
337                     ISPConfig.showLoadIndicator();
338                 },
339                 success: function(data, textStatus, jqXHR) {
340                     ISPConfig.hideLoadIndicator();
341                     $('#pageContent').html(jqXHR.responseText);
342                     ISPConfig.onAfterContentLoad(pagename, "refresh="+document.getElementById('refreshinterval').value);
343                     ISPConfig.pageFormChanged = false;
344                 },
345                 error: function() {
346                     ISPConfig.hideLoadIndicator();
347                     ISPConfig.reportError('Ajax Request was not successful.'+pagename);
348                 }
349             });
350             setTimeout( "ISPConfig.loadContentRefresh('"+pagename+"&refresh="+document.getElementById('refreshinterval').value+"')", document.getElementById('refreshinterval').value*1000*60 );
351         }
352     },
353
354     loadInitContent: function() {
355         var pageContentObject = $.ajax({
356             type: "GET",
357             url: "content.php",
358             data: "s_mod=login&s_pg=index",
359             dataType: "html",
360             beforeSend: function() {
361                 ISPConfig.showLoadIndicator();
362             },
363             success: function(data, textStatus, jqXHR) {
364                 if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
365                     var parts = jqXHR.responseText.split(":");
366                     ISPConfig.loadContent(parts[1]);
367                 } else {
368                     $('#pageContent').html(jqXHR.responseText);
369                     ISPConfig.onAfterContentLoad('content.php', "s_mod=login&s_pg=index");
370                     ISPConfig.pageFormChanged = false;
371                 }
372                 ISPConfig.hideLoadIndicator();
373             },
374             error: function() {
375                 ISPConfig.hideLoadIndicator();
376                 ISPConfig.reportError('Ajax Request was not successful. 114');
377             }
378         });
379         
380         ISPConfig.loadMenus();
381         ISPConfig.keepalive();
382         setTimeout(function() {
383             try {
384                 $('form#pageForm').find('input[name="username"]').focus();
385             } catch (e) {
386             
387             }
388         }, 1000);
389     },
390     
391     loadMenus: function() {
392         var sideNavObject = $.ajax({
393             type: "GET",
394             url: "nav.php",
395             data: "nav=side",
396             dataType: "html",
397             beforeSend: function() {
398                 ISPConfig.showLoadIndicator();
399             },
400             success: function(data, textStatus, jqXHR) {
401                 ISPConfig.hideLoadIndicator();
402                 $('#sidebar').html(jqXHR.responseText);
403                 ISPConfig.onAfterSideNavLoaded();
404                 ISPConfig.loadPushyMenu();
405             },
406             error: function() {
407                 ISPConfig.hideLoadIndicator();
408                 ISPConfig.reportError('Ajax Request was not successful. 115');
409             }
410         });
411
412         var topNavObject = $.ajax({
413             type: "GET",
414             url: "nav.php",
415             data: "nav=top",
416             dataType: "html",
417             beforeSend: function() {
418                 ISPConfig.showLoadIndicator();
419             },
420             success: function(data, textStatus, jqXHR) {
421                 ISPConfig.hideLoadIndicator();
422                 $('#topnav-container').html(jqXHR.responseText);
423                 ISPConfig.loadPushyMenu();
424             },
425             error: function(o) {
426                 ISPConfig.hideLoadIndicator();
427                 ISPConfig.reportError('Ajax Request was not successful. 116');
428             }
429         });
430     },
431
432     changeTab: function(tab, target, force) {
433         if(ISPConfig.requestsRunning > 0) return false;
434     
435         document.pageForm.next_tab.value = tab;
436
437         var idel = $('form#pageForm').find('[name="id"]');
438         var id = null;
439         if(idel.length > 0) id = idel.val();
440         if(ISPConfig.tabChangeDiscard == 'y' && !force) {
441             if((idel.length < 1 || id) && (ISPConfig.pageFormChanged == false || window.confirm(ISPConfig.tabChangeDiscardTxt))) {
442                 var next_tab = tab;
443                 if(id) ISPConfig.loadContent(target, {'next_tab': next_tab, 'id': id});
444                 else ISPConfig.loadContent(target, {'next_tab': next_tab});
445             } else {
446                 return false;
447             }
448         } else {
449             if(id && ISPConfig.tabChangeWarning == 'y' && ISPConfig.pageFormChanged == true) {
450                 if(window.confirm(ISPConfig.tabChangeWarningTxt)) {
451                     ISPConfig.submitForm('pageForm', target);
452                 } else {
453                     var next_tab = tab;
454                     if(id) ISPConfig.loadContent(target, {'next_tab': next_tab, 'id': id});
455                     else ISPConfig.loadContent(target, {'next_tab': next_tab});
456                 }
457             } else {
458                 ISPConfig.submitForm('pageForm',target);
459             }
460         }
461     },
462
463     confirm_action: function(link, confirmation) {
464         if(window.confirm(confirmation)) {
465             ISPConfig.loadContent(link);
466         }
467     },
468
469     loadContentInto: function(elementid,pagename) {
470         var pageContentObject2 = $.ajax({
471             type: "GET",
472             url: pagename,
473             dataType: "html",
474             beforeSend: function() {
475             },
476             success: function(data, textStatus, jqXHR) {
477                 $('#'+elementid).html(jqXHR.responseText);
478             },
479             error: function() {
480                 ISPConfig.reportError('Ajax Request was not successful. 118');
481             }
482         });
483     },
484
d5f2d5 485     loadOptionInto: function(elementid,pagename,callback) {
9021d7 486         var pageContentObject2 = $.ajax({
MC 487             type: "GET",
488             url: pagename,
489             dataType: "html",
490             beforeSend: function() {
491             },
492             success: function(data, textStatus, jqXHR) {
493                 var teste = jqXHR.responseText;
494                 var elemente = teste.split('#');
495                 el=document.getElementById(elementid);
496                 el.innerHTML='';
497                 for (var i = 0; i < elemente.length; ++i){
498                     var foo2 = document.createElement("option");
499                     foo2.appendChild(document.createTextNode(elemente[i]));
500                     foo2.value=elemente[i];
501                     el.appendChild(foo2);
502                 }
d5f2d5 503                 if (typeof(callback) != 'undefined') {
MC 504                     callback(elementid,pagename);
505                 }
9021d7 506             },
MC 507             error: function() {
508                 ISPConfig.reportError('Ajax Request was not successful. 119');
509             }
510         });
511     },
512     
513     keepalive: function() {
514         var pageContentObject3 = $.ajax({
515             type: "GET",
516             url: "keepalive.php",
517             dataType: "html",
518             success: function(data, textStatus, jqXHR) {
bbb85a 519                 setTimeout( function() { ISPConfig.keepalive(); }, 1000000 );
9021d7 520             },
MC 521             error: function() {
522                 ISPConfig.reportError('Session expired. Please login again.');
523             }
524         });
525     },
526     
527     addAdditionalTemplate: function(){
528         var tpl_add = $('#template_additional').val();
529         var addTemplate = $('#tpl_add_select').val().split('|',2);
530         var addTplId = addTemplate[0];
531         var addTplText = addTemplate[1];
532         if(addTplId > 0) {
533             var newVal = tpl_add.split('/');
534             ISPConfig.new_tpl_add_id += 1;
535             var delbtn = $('<a href="#"></a>').attr('class', 'button icons16 icoDelete').click(function(e) {
536                 e.preventDefault();
537                 ISPConfig.delAdditionalTemplate($(this).parent().attr('rel'));
538             });
539             newVal[newVal.length] = 'n' + ISPConfig.new_tpl_add_id + ':' + addTplId;
540             $('<li>' + addTplText + '</li>').attr('rel', 'n' + new_tpl_add_id).append(delbtn).appendTo('#template_additional_list ul');
541             $('#template_additional').val(newVal.join('/'));
542             alert('additional template ' + addTplText + ' added to customer');
543         } else {
544             alert('no additional template selcted');
545         }
546     },
547
548     delAdditionalTemplate: function(tpl_id) {
549         var tpl_add = $('#template_additional').val();
550         if(tpl_id) {
551             // new style
552             var $el = $('#template_additional_list ul').find('li[rel="' + tpl_id + '"]').eq(0); // only the first
553             var addTplText = $el.text();
554             $el.remove();
555
556             var oldVal = tpl_add.split('/');
557             var newVal = new Array();
558             for(var i = 0; i < oldVal.length; i++) {
559                 var tmp = oldVal[i].split(':', 2);
560                 if(tmp.length == 2 && tmp[0] == tpl_id) continue;
561                 newVal[newVal.length] = oldVal[i];
562             }
563             $('#template_additional').val(newVal.join('/'));
564             alert('additional template ' + addTplText + ' deleted from customer');
565         } else if(tpl_add != '') {
566             // old style
567             var addTemplate = document.getElementById('tpl_add_select').value.split('|',2);
568             var addTplId = addTemplate[0];
569             var addTplText = addTemplate[1];
570
571             $('#template_additional_list ul').find('li:not([rel])').each(function() {
572                 var text = $(this).text();
573                 if(text == addTplText) {
574                     $(this).remove();
575                     return false;
576                 }
577                 return this;
578             });
579
580             var newVal = tpl_add;
581             var repl = new RegExp('(^|\/)' + addTplId + '(\/|$)');
582             newVal = newVal.replace(repl, '');
583             newVal = newVal.replace('//', '/');
584             $('#template_additional').val(newVal);
585             alert('additional template ' + addTplText + ' deleted from customer');
586       } else {
587         alert('no additional template selcted');
588       }
589     }
590 };
591
592
593 $(document).on("change", function(event) {
594     var elName = event.target.localName;
595     if ($("#pageForm .table #Filter").length > 0 && elName == 'select') {
596         event.preventDefault();
597         $("#pageForm .table #Filter").trigger('click');
598     }
599     if(elName == 'select' || elName == 'input' || elName == 'textarea') {
600         if($(event.target).hasClass('no-page-form-change') == false) {
601             // set marker that something was changed
602             ISPConfig.pageFormChanged = true;
603         }
604     }
605 });
606
607 $(document).on('click', 'a[data-load-content],button[data-load-content]', function(e) {
e2776c 608     //e.preventDefault();
9021d7 609     var content_to_load = $(this).attr('data-load-content');
MC 610     if(!content_to_load) return this;
611     
612     ISPConfig.loadContent(content_to_load);
613 });
614
615 $(document).on('click', 'a[data-capp],button[data-capp]', function(e) {
e2776c 616     //e.preventDefault();
9021d7 617     var content_to_load = $(this).attr('data-capp');
MC 618     if(!content_to_load) return this;
619     
620     ISPConfig.capp(content_to_load);
621 });
622
623 $(document).on('click', 'a[data-submit-form],button[data-submit-form]', function(e) {
e2776c 624     //e.preventDefault();
9021d7 625     
MC 626     var $el = $(this);
627     var act = $el.attr('data-form-action');
628     var form = $el.attr('data-submit-form');
629     
630     if($el.attr('data-form-upload') == 'true') ISPConfig.submitUploadForm(form, act);
631     else ISPConfig.submitForm(form, act);
632 });
633
634 $(document).bind("keypress", function(event) {
635     //Use $ submit with keypress Enter in panel filterbar
636     if (event.which == '13' && $("#pageForm .table #Filter").length > 0 && $(event.target).hasClass('ui-autocomplete-input') == false ) {
637         event.preventDefault();
638         $("#pageForm .table #Filter").trigger('click');
639     }
640     //Use $ submit with keypress Enter in forms
641     if (event.which == '13' && $(".pnl_formsarea button.positive").length > 0 && event.target.localName != 'textarea' && $(event.target).is(':input')) {
642         event.preventDefault();
643         $(".pnl_formsarea button.positive:first").not("[disabled='disabled']").trigger('click');
644     }
645 });
646
647 $(document).on('click', 'th[data-column]', function(e) {
648     var $self = $(this);
649     var column = $self.attr('data-column');
650     if(!column) return this;
651     
652     if($("#pageForm .table #Filter").length > 0 && $self.attr('data-sortable') != 'false') {
653         var $el = $('#Filter');
654         var act = $el.attr('data-form-action');
655         var form = $el.attr('data-submit-form');
656         
d76e2d 657         var dir = $self.attr('data-ordered');
MC 658         
024e13 659         var separator = '?';
MC 660         if(act.indexOf("?") >= 0){
661             separator = '&';
662         }
663         act = act + separator + 'orderby=' + column;
9021d7 664         ISPConfig.submitForm(form, act);
d76e2d 665         
MC 666         $(document).ajaxComplete(function() {
667             var $self = $('#pageForm .table th[data-column="' + column + '"]');
668             $self.parent().children('th[data-column]').removeAttr('data-ordered');
669             if(dir && dir == 'asc') $self.attr('data-ordered', 'desc');
670             else $self.attr('data-ordered', 'asc');
671         });
672         
9021d7 673     }
MC 674 });
675
676 $(document).on("click", ".addPlaceholder", function(){
677     var placeholderText = $(this).text();
678     var template = $(this).siblings(':input');
679     template.insertAtCaret(placeholderText);
680 });
681
682 $(document).on("click", ".addPlaceholderContent", function(){
683     var placeholderContentText = $(this).find('.addPlaceholderContent').text();
684     var template2 = $(this).siblings(':input');
685     template2.insertAtCaret(placeholderContentText);
686 });
687
01cec5 688 $(document).on('ready', function () {
9021d7 689     $.fn.extend({
MC 690         insertAtCaret: function(myValue){
691             return this.each(function(i) {
692                 if (document.selection) {
693                     //For browsers like Internet Explorer
694                     this.focus();
695                     sel = document.selection.createRange();
696                     sel.text = myValue;
697                     this.focus();
698                 } else if (this.selectionStart || this.selectionStart == '0') {
699                     //For browsers like Firefox and Webkit based
700                     var startPos = this.selectionStart;
701                     var endPos = this.selectionEnd;
702                     var scrollTop = this.scrollTop;
703                     this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
704                     this.focus();
705                     this.selectionStart = startPos + myValue.length;
706                     this.selectionEnd = startPos + myValue.length;
707                     this.scrollTop = scrollTop;
708                 } else {
709                     this.value += myValue;
710                     this.focus();
711                 }
712             })
713         }
714     });
715     
716     // Animierter Ladefortschritt
717     $('.progress .progress-bar').css('width', function () {
718         return $(this).attr('aria-valuenow') + '%';
719     });
720     
721     ISPConfig.loadInitContent();
722
723     $('#searchform').submit(function(e) {
724         e.preventDefault();
725     });
726     
727     $("#pageForm").submit(function(e){
728         //Prevent form submit: e.preventDefault() in lists
729         if ($("#pageForm .table #Filter").length > 0) {
730             e.preventDefault();
731         }
732     });
01cec5 733 });