From f4f981d8f98e4f74a8d69d05a31ab63e188ea808 Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Sun, 15 Nov 2015 08:00:17 -0500 Subject: [PATCH] Added missing delimiter settings in reseller form file. --- interface/web/themes/default/assets/javascripts/ispconfig.js | 738 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 734 insertions(+), 4 deletions(-) diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js index cf794d4..cf82d3d 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.js @@ -1,6 +1,736 @@ +var ISPConfig = { + pageFormChanged: false, + tabChangeWarningTxt: '', + tabChangeDiscardTxt: '', + tabChangeWarning: false, + tabChangeDiscard: false, + requestsRunning: 0, + indicatorCompleted: false, + registeredHooks: new Array(), + new_tpl_add_id: 0, + + options: { + useLoadIndicator: false, + useComboBox: false + }, + + setOption: function(key, value) { + ISPConfig.options[key] = value; + }, + + setOptions: function(opts) { + $.extend(ISPConfig.options, opts); + }, + + 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) { + if(!ISPConfig.registeredHooks[name]) ISPConfig.registeredHooks[name] = new Array(); + var newindex = ISPConfig.registeredHooks[name].length; + ISPConfig.registeredHooks[name][newindex] = callback; + }, + + callHook: function(name, params) { + if(!ISPConfig.registeredHooks[name]) return; + for(var i = 0; i < ISPConfig.registeredHooks[name].length; i++) { + var callback = ISPConfig.registeredHooks[name][i]; + callback(name, params); + } + }, + + resetFormChanged: function() { + ISPConfig.pageFormChanged = false; + }, + + showLoadIndicator: function() { + document.body.style.cursor = 'wait'; + + if(ISPConfig.options.useLoadIndicator == true) { + ISPConfig.requestsRunning += 1; + + if(ISPConfig.requestsRunning < 2) { + var indicator = $('#ajaxloader'); + if(indicator.length < 1) { + indicator = $('<div id="ajaxloader" style="display: none;"></div>'); + indicator.appendTo('body'); + } + var parent = $('#content'); + if(parent.length < 1) return; + ISPConfig.indicatorCompleted = false; + + var atx = parent.offset().left + 150; //((parent.outerWidth(true) - indicator.outerWidth(true)) / 2); + var aty = parent.offset().top + 150; + indicator.css( {'left': atx, 'top': aty } ).fadeIn('fast', function() { + // check if loader should be hidden immediately + ISPConfig.indicatorCompleted = true; + if(ISPConfig.requestsRunning < 1) $(this).fadeOut('fast', function() { $(this).hide();}); + }); + } + } + }, + + hideLoadIndicator: function() { + document.body.style.cursor = ''; + + ISPConfig.requestsRunning -= 1; + if(ISPConfig.requestsRunning < 1) { + ISPConfig.requestsRunning = 0; // just for the case... + if(ISPConfig.indicatorCompleted == true) $('#ajaxloader').fadeOut('fast', function() { $('#ajaxloader').hide(); } ); + } + }, + + onAfterSideNavLoaded: function() { + if(ISPConfig.options.useComboBox == true) { + $('#sidebar').find("select:not(.chosen-select)").select2({ + placeholder: '', + width: 'element', + selectOnBlur: true, + allowClear: true + }); + } + }, + + onAfterContentLoad: function(url, data) { + if(!data) data = ''; + else data = '&' + data; + + if(ISPConfig.options.useComboBox == true) { + $('#pageContent').find("select:not(.chosen-select)").select2({ + placeholder: '', + width: 'element', + selectOnBlur: true, + allowClear: true, + formatResult: function(o) { + if(o.id && $(o.element).parent().hasClass('flags')) return '<span class="flags flag-' + o.id.toLowerCase() + '">' + o.text + '</span>'; + else return o.text; + }, + formatSelection: function(o) { + if(o.id && $(o.element).parent().hasClass('flags')) return '<span class="flags flag-' + o.id.toLowerCase() + '">' + o.text + '</span>'; + else return o.text; + } + }).on('change', function(e) { + if ($("#pageForm .table #Filter").length > 0) { + $("#pageForm .table #Filter").trigger('click'); + } + }); + } + + $('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 + }); + + 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'); + } + }); + },*/ + + submitForm: function(formname, target, confirmation) { + var successMessage = arguments[3]; + if(!confirmation) confirmation = false; + + if(!confirmation || window.confirm(confirmation)) { + var submitFormObj = $.ajax({ + type: "POST", + url: target, + data: $('#'+formname).serialize(), + dataType: "html", + beforeSend: function() { + ISPConfig.showLoadIndicator(); + }, + success: function(data, textStatus, jqXHR) { + if(successMessage) alert(successMessage); + 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()); + ISPConfig.pageFormChanged = false; + } + ISPConfig.hideLoadIndicator(); + }, + error: function(jqXHR, textStatus, errorThrown) { + ISPConfig.hideLoadIndicator(); + var parts = jqXHR.responseText.split(':'); + ISPConfig.reportError('Ajax Request was not successful. 111'); + } + }); + } + }, + + submitUploadForm: function(formname, target) { + var handleResponse = function(loadedFrame) { + var response, responseStr = loadedFrame.contentWindow.document.body.innerHTML; + + try { + response = JSON.parse(responseStr); + } catch(e) { + response = responseStr; + } + var msg = ''; + var okmsg = $('#OKMsg',response).html(); + if(okmsg){ + msg = '<div id="OKMsg">'+okmsg+'</div>'; + } + var errormsg = $('#errorMsg',response).html(); + if(errormsg){ + msg = msg+'<div id="errorMsg">'+errormsg+'</div>'; + } + 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(); + $('#'+frame_id).load(function() { + var msg = handleResponse(this); + $('#errorMsg').remove(); + $('#OKMsg').remove(); + $('input[name="id"]').before(msg); + $(this).remove(); + }); + }, + + capp: function(module, redirect) { + var submitFormObj = $.ajax({ + type: "GET", + url: "capp.php", + data: "mod="+module+((redirect != undefined) ? '&redirect='+redirect : ''), + dataType: "html", + beforeSend: function() { + ISPConfig.showLoadIndicator(); + }, + success: function(data, textStatus, jqXHR) { + if(jqXHR.responseText != '') { + if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) { + var parts = jqXHR.responseText.split(':'); + ISPConfig.loadContent(parts[1]); + } else if (jqXHR.responseText.indexOf('URL_REDIRECT:') > -1) { + var newUrl= jqXHR.responseText.substr(jqXHR.responseText.indexOf('URL_REDIRECT:') + "URL_REDIRECT:".length); + document.location.href = newUrl; + } else { + //alert(jqXHR.responseText); + } + } + ISPConfig.loadMenus(); + ISPConfig.hideLoadIndicator(); + }, + error: function() { + ISPConfig.hideLoadIndicator(); + ISPConfig.reportError('Ajax Request was not successful.'+module); + } + }); + }, + + loadContent: function(pagename) { + var params = arguments[1]; + var pageContentObject2 = $.ajax({ + type: "GET", + url: pagename, + data: (params ? params : null), + 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('URL_REDIRECT:') > -1) { + 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; + } + ISPConfig.hideLoadIndicator(); + }, + error: function() { + ISPConfig.hideLoadIndicator(); + ISPConfig.reportError('Ajax Request was not successful. 113'); + } + }); + }, + + loadContentRefresh: function(pagename) { + if($('#refreshinterval').val() > 0) { + var pageContentObject2 = $.ajax({ + type: "GET", + url: pagename, + data: "refresh="+document.getElementById('refreshinterval').value, + dataType: "html", + beforeSend: function() { + ISPConfig.showLoadIndicator(); + }, + success: function(data, textStatus, jqXHR) { + ISPConfig.hideLoadIndicator(); + $('#pageContent').html(jqXHR.responseText); + ISPConfig.onAfterContentLoad(pagename, "refresh="+document.getElementById('refreshinterval').value); + ISPConfig.pageFormChanged = false; + }, + error: function() { + ISPConfig.hideLoadIndicator(); + ISPConfig.reportError('Ajax Request was not successful.'+pagename); + } + }); + setTimeout( "ISPConfig.loadContentRefresh('"+pagename+"&refresh="+document.getElementById('refreshinterval').value+"')", document.getElementById('refreshinterval').value*1000*60 ); + } + }, + + loadInitContent: function() { + var pageContentObject = $.ajax({ + type: "GET", + url: "dashboard/dashboard.php", + data: "", + 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 { + $('#pageContent').html(jqXHR.responseText); + ISPConfig.onAfterContentLoad('dashboard/dashboard.php', ""); + ISPConfig.pageFormChanged = false; + } + ISPConfig.hideLoadIndicator(); + }, + error: function() { + ISPConfig.hideLoadIndicator(); + ISPConfig.reportError('Ajax Request was not successful. 114'); + } + }); + + ISPConfig.loadMenus(); + ISPConfig.keepalive(); + setTimeout(function() { + try { + $('form#pageForm').find('input[name="username"]').focus(); + } catch (e) { + + } + }, 1000); + }, + + loadMenus: function() { + var sideNavObject = $.ajax({ + type: "GET", + url: "nav.php", + data: "nav=side", + dataType: "html", + beforeSend: function() { + ISPConfig.showLoadIndicator(); + }, + success: function(data, textStatus, jqXHR) { + ISPConfig.hideLoadIndicator(); + $('#sidebar').html(jqXHR.responseText); + ISPConfig.onAfterSideNavLoaded(); + ISPConfig.loadPushyMenu(); + }, + error: function() { + ISPConfig.hideLoadIndicator(); + ISPConfig.reportError('Ajax Request was not successful. 115'); + } + }); + + var topNavObject = $.ajax({ + type: "GET", + url: "nav.php", + data: "nav=top", + dataType: "html", + beforeSend: function() { + ISPConfig.showLoadIndicator(); + }, + success: function(data, textStatus, jqXHR) { + ISPConfig.hideLoadIndicator(); + $('#topnav-container').html(jqXHR.responseText); + ISPConfig.loadPushyMenu(); + }, + error: function(o) { + ISPConfig.hideLoadIndicator(); + ISPConfig.reportError('Ajax Request was not successful. 116'); + } + }); + }, + + changeTab: function(tab, target, force) { + if(ISPConfig.requestsRunning > 0) return false; + + document.pageForm.next_tab.value = tab; + + var idel = $('form#pageForm').find('[name="id"]'); + var id = null; + if(idel.length > 0) id = idel.val(); + if(ISPConfig.tabChangeDiscard == 'y' && !force) { + if((idel.length < 1 || id) && (ISPConfig.pageFormChanged == false || window.confirm(ISPConfig.tabChangeDiscardTxt))) { + var next_tab = tab; + if(id) ISPConfig.loadContent(target, {'next_tab': next_tab, 'id': id}); + else ISPConfig.loadContent(target, {'next_tab': next_tab}); + } else { + return false; + } + } else { + if(id && ISPConfig.tabChangeWarning == 'y' && ISPConfig.pageFormChanged == true) { + if(window.confirm(ISPConfig.tabChangeWarningTxt)) { + ISPConfig.submitForm('pageForm', target); + } else { + var next_tab = tab; + if(id) ISPConfig.loadContent(target, {'next_tab': next_tab, 'id': id}); + else ISPConfig.loadContent(target, {'next_tab': next_tab}); + } + } else { + ISPConfig.submitForm('pageForm',target); + } + } + }, + + confirm_action: function(link, confirmation) { + if(window.confirm(confirmation)) { + ISPConfig.loadContent(link); + } + }, + + loadContentInto: function(elementid,pagename) { + var pageContentObject2 = $.ajax({ + type: "GET", + url: pagename, + dataType: "html", + beforeSend: function() { + }, + success: function(data, textStatus, jqXHR) { + $('#'+elementid).html(jqXHR.responseText); + }, + error: function() { + ISPConfig.reportError('Ajax Request was not successful. 118'); + } + }); + }, + + loadOptionInto: function(elementid,pagename,callback) { + var pageContentObject2 = $.ajax({ + type: "GET", + url: pagename, + dataType: "html", + beforeSend: function() { + }, + success: function(data, textStatus, jqXHR) { + var teste = jqXHR.responseText; + var elemente = teste.split('#'); + el=document.getElementById(elementid); + el.innerHTML=''; + for (var i = 0; i < elemente.length; ++i){ + var foo2 = document.createElement("option"); + foo2.appendChild(document.createTextNode(elemente[i])); + foo2.value=elemente[i]; + el.appendChild(foo2); + } + if (typeof(callback) != 'undefined') { + callback(elementid,pagename); + } + }, + error: function() { + ISPConfig.reportError('Ajax Request was not successful. 119'); + } + }); + }, + + keepalive: function() { + var pageContentObject3 = $.ajax({ + type: "GET", + url: "keepalive.php", + dataType: "html", + success: function(data, textStatus, jqXHR) { + setTimeout( function() { ISPConfig.keepalive(); }, 1000000 ); + }, + error: function() { + ISPConfig.reportError('Session expired. Please login again.'); + } + }); + }, + + addAdditionalTemplate: function(){ + var tpl_add = $('#template_additional').val(); + var addTemplate = $('#tpl_add_select').val().split('|',2); + var addTplId = addTemplate[0]; + var addTplText = addTemplate[1]; + if(addTplId > 0) { + var newVal = tpl_add.split('/'); + ISPConfig.new_tpl_add_id += 1; + var delbtn = $('<a href="#"></a>').attr('class', 'button icons16 icoDelete').click(function(e) { + e.preventDefault(); + ISPConfig.delAdditionalTemplate($(this).parent().attr('rel')); + }); + newVal[newVal.length] = 'n' + ISPConfig.new_tpl_add_id + ':' + addTplId; + $('<li>' + addTplText + '</li>').attr('rel', 'n' + new_tpl_add_id).append(delbtn).appendTo('#template_additional_list ul'); + $('#template_additional').val(newVal.join('/')); + alert('additional template ' + addTplText + ' added to customer'); + } else { + alert('no additional template selcted'); + } + }, + + delAdditionalTemplate: function(tpl_id) { + var tpl_add = $('#template_additional').val(); + if(tpl_id) { + // new style + var $el = $('#template_additional_list ul').find('li[rel="' + tpl_id + '"]').eq(0); // only the first + var addTplText = $el.text(); + $el.remove(); + + var oldVal = tpl_add.split('/'); + var newVal = new Array(); + for(var i = 0; i < oldVal.length; i++) { + var tmp = oldVal[i].split(':', 2); + if(tmp.length == 2 && tmp[0] == tpl_id) continue; + newVal[newVal.length] = oldVal[i]; + } + $('#template_additional').val(newVal.join('/')); + alert('additional template ' + addTplText + ' deleted from customer'); + } else if(tpl_add != '') { + // old style + var addTemplate = document.getElementById('tpl_add_select').value.split('|',2); + var addTplId = addTemplate[0]; + var addTplText = addTemplate[1]; + + $('#template_additional_list ul').find('li:not([rel])').each(function() { + var text = $(this).text(); + if(text == addTplText) { + $(this).remove(); + return false; + } + return this; + }); + + var newVal = tpl_add; + var repl = new RegExp('(^|\/)' + addTplId + '(\/|$)'); + newVal = newVal.replace(repl, ''); + newVal = newVal.replace('//', '/'); + $('#template_additional').val(newVal); + alert('additional template ' + addTplText + ' deleted from customer'); + } else { + alert('no additional template selcted'); + } + } +}; + + +$(document).on("change", function(event) { + var elName = event.target.localName; + if ($("#pageForm .table #Filter").length > 0 && elName == 'select') { + event.preventDefault(); + $("#pageForm .table #Filter").trigger('click'); + } + if(elName == 'select' || elName == 'input' || elName == 'textarea') { + if($(event.target).hasClass('no-page-form-change') == false) { + // set marker that something was changed + ISPConfig.pageFormChanged = true; + } + } +}); + +$(document).on('click', 'a[data-load-content],button[data-load-content]', function(e) { + //e.preventDefault(); + var content_to_load = $(this).attr('data-load-content'); + if(!content_to_load) return this; + + ISPConfig.loadContent(content_to_load); +}); + +$(document).on('click', 'a[data-capp],button[data-capp]', function(e) { + //e.preventDefault(); + var content_to_load = $(this).attr('data-capp'); + if(!content_to_load) return this; + + ISPConfig.capp(content_to_load); +}); + +$(document).on('click', 'a[data-submit-form],button[data-submit-form]', function(e) { + //e.preventDefault(); + + var $el = $(this); + var act = $el.attr('data-form-action'); + var form = $el.attr('data-submit-form'); + + if($el.attr('data-form-upload') == 'true') ISPConfig.submitUploadForm(form, act); + else ISPConfig.submitForm(form, act); +}); + +$(document).bind("keypress", function(event) { + //Use $ submit with keypress Enter in panel filterbar + if (event.which == '13' && $("#pageForm .table #Filter").length > 0 && $(event.target).hasClass('ui-autocomplete-input') == false ) { + event.preventDefault(); + $("#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')) { + event.preventDefault(); + $(".pnl_formsarea button.positive:first").not("[disabled='disabled']").trigger('click'); + } +}); + +$(document).on('click', 'th[data-column]', function(e) { + var $self = $(this); + var column = $self.attr('data-column'); + if(!column) return this; + + if($("#pageForm .table #Filter").length > 0 && $self.attr('data-sortable') != 'false') { + var $el = $('#Filter'); + var act = $el.attr('data-form-action'); + var form = $el.attr('data-submit-form'); + + var dir = $self.attr('data-ordered'); + + var separator = '?'; + if(act.indexOf("?") >= 0){ + separator = '&'; + } + act = act + separator + 'orderby=' + column; + ISPConfig.submitForm(form, act); + + $(document).ajaxComplete(function() { + var $self = $('#pageForm .table th[data-column="' + column + '"]'); + $self.parent().children('th[data-column]').removeAttr('data-ordered'); + if(dir && dir == 'asc') $self.attr('data-ordered', 'desc'); + else $self.attr('data-ordered', 'asc'); + }); + + } +}); + +$(document).on("click", ".addPlaceholder", function(){ + var placeholderText = $(this).text(); + var template = $(this).siblings(':input'); + template.insertAtCaret(placeholderText); +}); + +$(document).on("click", ".addPlaceholderContent", function(){ + var placeholderContentText = $(this).find('.addPlaceholderContent').text(); + var template2 = $(this).siblings(':input'); + template2.insertAtCaret(placeholderContentText); +}); + $(document).on('ready', function () { - // Animierter Ladefortschritt - $('.progress .progress-bar').css('width', function () { - return $(this).attr('aria-valuenow') + '%'; - }); + $.fn.extend({ + insertAtCaret: function(myValue){ + return this.each(function(i) { + if (document.selection) { + //For browsers like Internet Explorer + this.focus(); + sel = document.selection.createRange(); + sel.text = myValue; + this.focus(); + } else if (this.selectionStart || this.selectionStart == '0') { + //For browsers like Firefox and Webkit based + var startPos = this.selectionStart; + var endPos = this.selectionEnd; + var scrollTop = this.scrollTop; + this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length); + this.focus(); + this.selectionStart = startPos + myValue.length; + this.selectionEnd = startPos + myValue.length; + this.scrollTop = scrollTop; + } else { + this.value += myValue; + this.focus(); + } + }) + } + }); + + // Animierter Ladefortschritt + $('.progress .progress-bar').css('width', function () { + return $(this).attr('aria-valuenow') + '%'; + }); + + ISPConfig.loadInitContent(); + + $('#searchform').submit(function(e) { + e.preventDefault(); + }); + + $("#pageForm").submit(function(e){ + //Prevent form submit: e.preventDefault() in lists + if ($("#pageForm .table #Filter").length > 0) { + e.preventDefault(); + } + }); }); -- Gitblit v1.9.1