From e1ceb050e19c7574bca146a8da7047ee4ff456b5 Mon Sep 17 00:00:00 2001 From: Marius Burkard <m.burkard@pixcept.de> Date: Sun, 10 Jul 2016 05:02:35 -0400 Subject: [PATCH] Merge branch 'stable-3.1' --- interface/web/themes/default/assets/javascripts/ispconfig.js | 211 ++++++++++++++++++++++++++++++++++------------------ 1 files changed, 136 insertions(+), 75 deletions(-) diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js index 0416e40..d791b19 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.js @@ -11,7 +11,7 @@ options: { useLoadIndicator: false, - useComboBox: false, + useComboBox: false }, setOption: function(key, value) { @@ -23,11 +23,7 @@ }, reportError: function(request) { - /* Error reporting is disabled by default as some browsers like safari - sometimes throw errors when a ajax request is delayed even if the - ajax request worked. */ - - /*alert(request);*/ + }, registerHook: function(name, callback) { @@ -91,7 +87,7 @@ placeholder: '', width: 'element', selectOnBlur: true, - allowClear: true, + allowClear: true }); } }, @@ -121,56 +117,27 @@ }); } - ISPConfig.callHook('onAfterContentLoad', {'url': url, 'data': data }); - }, - - /* THIS ONE SHOULD BE REMOVED AFTER CREATING THE STATIC LOGIN PAGE!!! */ - submitLoginForm: function(formname) { - //* Validate form. TODO: username and password with strip(); - var frm = document.getElementById(formname); - var userNameObj = frm.username; - if(userNameObj.value == ''){ - userNameObj.focus(); - return; - } - var passwordObj = frm.passwort; - if(passwordObj.value == ''){ - passwordObj.focus(); - return; - } - - $('#dummy_username').val(userNameObj.value); - $('#dummy_passwort').val(passwordObj.value); - $('#dummy_login_form').submit(); - - var submitFormObj = $.ajax({ - type: "POST", - url: "content.php", - data: $('#'+formname).serialize(), - dataType: "html", - beforeSend: function() { - ISPConfig.showLoadIndicator(); - }, - success: function(data, textStatus, jqXHR) { - if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) { - var parts = jqXHR.responseText.split(':'); - ISPConfig.loadContent(parts[1]); - } else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) { - // Go to the login page - document.location.href = 'index.php'; - } else { - $('#pageContent').html(jqXHR.responseText); - ISPConfig.onAfterContentLoad('content.php', $('#'+formname).serialize()); - ISPConfig.pageFormChanged = false; - } - ISPConfig.loadMenus(); - ISPConfig.hideLoadIndicator(); - }, - error: function() { - ISPConfig.hideLoadIndicator(); - ISPConfig.reportError('Ajax Request was not successful.110'); - } + $('input[data-input-element="date"]').datetimepicker({ + 'language': 'en', // TODO + 'todayHighlight': true, + 'todayBtn': 'linked', + 'bootcssVer': 3, + 'fontAwesome': true, + 'autoclose': true, + 'minView': 'month' }); + $('input[data-input-element="datetime"]').datetimepicker({ + 'language': 'en', // TODO + 'todayHighlight': true, + 'todayBtn': 'linked', + 'bootcssVer': 3, + 'fontAwesome': true, + 'autoclose': true + }); + $('[data-toggle="tooltip"]').tooltip({ + }); + + ISPConfig.callHook('onAfterContentLoad', {'url': url, 'data': data }); }, submitForm: function(formname, target, confirmation) { @@ -191,6 +158,9 @@ if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) { var parts = jqXHR.responseText.split(':'); ISPConfig.loadContent(parts[1]); + } else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) { + // Go to the login page + document.location.href = '/index.php'; } else { $('#pageContent').html(jqXHR.responseText); ISPConfig.onAfterContentLoad(target, $('#'+formname).serialize()); @@ -216,29 +186,38 @@ } catch(e) { response = responseStr; } + var $response = $('<div></div>').html(response); var msg = ''; - var okmsg = $('#OKMsg',response).html(); + var okmsg = $response.find('#OKMsg').html(); if(okmsg){ msg = '<div id="OKMsg">'+okmsg+'</div>'; } - var errormsg = $('#errorMsg',response).html(); + var errormsg = $response.find('#errorMsg').html(); if(errormsg){ msg = msg+'<div id="errorMsg">'+errormsg+'</div>'; } + + var csrf_key = $response.find('input[name="_csrf_key"]').val(); + var csrf_id = $response.find('input[name="_csrf_id"]').val(); + + msg = msg + '<input type="hidden" name="_csrf_id" value="' + csrf_id + '" /><input type="hidden" name="_csrf_key" value="' + csrf_key + '" />'; + return msg; }; var frame_id = 'ajaxUploader-iframe-' + Math.round(new Date().getTime() / 1000); - $('body').after('<iframe width="0" height="0" style="display:none;" name="'+frame_id+'" id="'+frame_id+'"/>'); - $('input[type="file"]').closest("form").attr({target: frame_id, action: target}).submit(); + $('body').append('<iframe width="0" height="0" style="display:none;" name="'+frame_id+'" id="'+frame_id+'"/>'); $('#'+frame_id).load(function() { var msg = handleResponse(this); $('#errorMsg').remove(); $('#OKMsg').remove(); + $('input[name="_csrf_key"]').remove(); + $('input[name="_csrf_id"]').remove(); $('input[name="id"]').before(msg); $(this).remove(); }); + $('input[type="file"]').closest("form").attr({target: frame_id, action: target}).submit(); }, capp: function(module, redirect) { @@ -290,11 +269,6 @@ var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length); document.location.href = newUrl; } else { - //document.getElementById('pageContent').innerHTML = jqXHR.responseText; - //var reponse = $(jqXHR.responseText); - //var reponseScript = reponse.filter("script"); - //$.each(reponseScript, function(idx, val) { eval(val.text); } ); - $('#pageContent').html(jqXHR.responseText); ISPConfig.onAfterContentLoad(pagename, (params ? params : null)); ISPConfig.pageFormChanged = false; @@ -334,10 +308,12 @@ }, loadInitContent: function() { + var startpage = $('#pageContent').attr('data-startpage'); + if(!startpage) startpage = 'dashboard/dashboard.php'; var pageContentObject = $.ajax({ type: "GET", - url: "content.php", - data: "s_mod=login&s_pg=index", + url: startpage, + data: "", dataType: "html", beforeSend: function() { ISPConfig.showLoadIndicator(); @@ -348,7 +324,7 @@ ISPConfig.loadContent(parts[1]); } else { $('#pageContent').html(jqXHR.responseText); - ISPConfig.onAfterContentLoad('content.php', "s_mod=login&s_pg=index"); + ISPConfig.onAfterContentLoad('dashboard/dashboard.php', ""); ISPConfig.pageFormChanged = false; } ISPConfig.hideLoadIndicator(); @@ -412,7 +388,10 @@ }, changeTab: function(tab, target, force) { - if(ISPConfig.requestsRunning > 0) return false; + if(ISPConfig.requestsRunning > 0) { + console.log('tab change interrupted, request still running.'); + return false; + } document.pageForm.next_tab.value = tab; @@ -464,7 +443,7 @@ }); }, - loadOptionInto: function(elementid,pagename) { + loadOptionInto: function(elementid,pagename,callback) { var pageContentObject2 = $.ajax({ type: "GET", url: pagename, @@ -481,6 +460,9 @@ foo2.appendChild(document.createTextNode(elemente[i])); foo2.value=elemente[i]; el.appendChild(foo2); + } + if (typeof(callback) != 'undefined') { + callback(elementid,pagename); } }, error: function() { @@ -583,8 +565,18 @@ } }); +var $page = $('html, body'); + $(document).on('click', 'a[data-load-content],button[data-load-content]', function(e) { - //e.preventDefault(); + e.preventDefault(); + if(ISPConfig.requestsRunning > 0) { + console.log('preventing click because there is still a request running.'); + return; + } + + $page.on('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); + $page.animate({scrollTop: 0}, 1000, function() { $page.off('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); }); + var content_to_load = $(this).attr('data-load-content'); if(!content_to_load) return this; @@ -592,7 +584,15 @@ }); $(document).on('click', 'a[data-capp],button[data-capp]', function(e) { - //e.preventDefault(); + e.preventDefault(); + if(ISPConfig.requestsRunning > 0) { + console.log('preventing click because there is still a request running.'); + return; + } + + $page.on('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); + $page.animate({scrollTop: 0}, 1000, function() { $page.off('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); }); + var content_to_load = $(this).attr('data-capp'); if(!content_to_load) return this; @@ -600,7 +600,14 @@ }); $(document).on('click', 'a[data-submit-form],button[data-submit-form]', function(e) { - //e.preventDefault(); + e.preventDefault(); + if(ISPConfig.requestsRunning > 0) { + console.log('preventing click because there is still a request running.'); + return; + } + + $page.on('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); + $page.animate({scrollTop: 0}, 1000, function() { $page.off('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); }); var $el = $(this); var act = $el.attr('data-form-action'); @@ -617,9 +624,9 @@ $("#pageForm .table #Filter").trigger('click'); } //Use $ submit with keypress Enter in forms - if (event.which == '13' && $(".pnl_formsarea button.positive").length > 0 && event.target.localName != 'textarea' && $(event.target).is(':input')) { + if (event.which == '13' && $(".tab-content button.formbutton-success").length > 0 && event.target.localName != 'textarea' && $(event.target).is(':input')) { event.preventDefault(); - $(".pnl_formsarea button.positive:first").not("[disabled='disabled']").trigger('click'); + $(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger('click'); } }); @@ -663,6 +670,29 @@ var template2 = $(this).siblings(':input'); template2.insertAtCaret(placeholderContentText); }); + +$(document).on("click", "[data-check-fields] > input[type='checkbox']", function() { + if($(this).is(':checked')) { + var flds = $(this).parent().attr('data-check-fields'); + var tmp = flds.split(/,/); + for(var i = 0; i < tmp.length; i++) { + var fname = tmp[i]; + $('input[type="checkbox"][name="' + fname + '"]').prop('checked', true); + } + } +}); + +$(document).on("click", "[data-uncheck-fields] > input[type='checkbox']", function() { + if($(this).is(':checked') == false) { + var flds = $(this).parent().attr('data-uncheck-fields'); + var tmp = flds.split(/,/); + for(var i = 0; i < tmp.length; i++) { + var fname = tmp[i]; + $('input[type="checkbox"][name="' + fname + '"]').prop('checked', false); + } + } +}); + $(document).on('ready', function () { $.fn.extend({ @@ -709,4 +739,35 @@ e.preventDefault(); } }); + + $.fn.setCursorPosition = function(pos) { + var self = $(this).get(0); + if(self.setSelectionRange) { + self.setSelectionRange(pos, pos); + } else if(self.createTextRange) { + var range = self.createTextRange(); + range.collapse(true); + if(pos < 0) { + pos = $(this).val().length + pos; + } + range.moveEnd('character', pos); + range.moveStart('character', pos); + range.select(); + } + }; + + $.fn.getCursorPosition = function() { + var iCaretPos = 0; + var self = $(this).get(0); + + if(typeof self.selectionStart === 'number') { + iCaretPos = self.selectionDirection == 'backward' ? self.selectionStart : self.selectionEnd; + } else if(document.selection) { + this.focus(); + var oSel = document.selection.createRange(); + oSel.moveStart('character', -self.value.length); + iCaretPos = oSel.text.length; + } + return iCaretPos; + }; }); -- Gitblit v1.9.1