Marius Cramer
2015-01-13 9021d7fc7ee308c0df84ad29da0bf316f592ce89
interface/web/js/scrigo.js.php
@@ -9,533 +9,6 @@
$server_config_array = $app->getconf->get_global_config();
?>
var ISPConfig = {
   pageFormChanged: false,
   tabChangeWarningTxt: '',
   tabChangeDiscardTxt: '',
   tabChangeWarning: false,
   tabChangeDiscard: false,
   requestsRunning: 0,
   indicatorPaddingH: -1,
   indicatorPaddingW: -1,
   indicatorCompleted: false,
   registeredHooks: new Array(),
   redirect: '',
   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(!registeredHooks[name]) registeredHooks[name] = new Array();
      var newindex = registeredHooks[name].length;
      registeredHooks[name][newindex] = callback;
   },
   callHook: function(name, params) {
      if(!registeredHooks[name]) return;
      for(var i = 0; i < registeredHooks[name].length; i++) {
         var callback = registeredHooks[name][i];
         callback(name, params);
      }
   },
   resetFormChanged: function() {
      pageFormChanged = false;
   },
   showLoadIndicator: function() {
      document.body.style.cursor = 'wait';
<?php
if($server_config_array['misc']['use_loadindicator'] == 'y'){
?>
    requestsRunning += 1;
    if(requestsRunning < 2) {
        var indicator = jQuery('#ajaxloader');
        if(indicator.length < 1) {
            indicator = jQuery('<div id="ajaxloader" style="display: none;"></div>');
            indicator.appendTo('body');
        }
        var parent = jQuery('#content');
        if(parent.length < 1) return;
        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
            indicatorCompleted = true;
            if(requestsRunning < 1) $(this).fadeOut('fast', function() { $(this).hide();});
        });
    }
<?php
}
?>
   },
   hideLoadIndicator: function() {
      document.body.style.cursor = '';
      requestsRunning -= 1;
      if(requestsRunning < 1) {
         requestsRunning = 0; // just for the case...
         if(indicatorCompleted == true) jQuery('#ajaxloader').fadeOut('fast', function() { jQuery('#ajaxloader').hide(); } );
      }
   }
   onAfterSideNavLoaded: function() {
   <?php
if($server_config_array['misc']['use_combobox'] == 'y'){
?>
      $('#sidebar').find("select:not(.chosen-select)").select2({
         placeholder: '',
         width: 'element',
         selectOnBlur: true,
         allowClear: true,
      });
<?php
}
?>
   },
   onAfterContentLoad: function(url, data) {
      if(!data) data = '';
      else data = '&' + data;
<?php
if($server_config_array['misc']['use_combobox'] == 'y'){
?>
      $('#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 (jQuery("#pageForm .table #Filter").length > 0) {
            jQuery("#pageForm .table #Filter").trigger('click');
         }
      });
      /* TODO: find a better way! */
      //$('.chosen-select').chosen({no_results_text: "<?php echo $wb['globalsearch_noresults_text_txt']; ?>", width: '300px'});
<?php
}
?>
      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 = jQuery.ajax({
         type: "POST",
         url: "content.php",
         data: jQuery('#'+formname).serialize(),
         dataType: "html",
         beforeSend: function() {
            showLoadIndicator();
         },
         success: function(data, textStatus, jqXHR) {
            if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
               var parts = jqXHR.responseText.split(':');
               //alert(parts[1]);
               loadContent(parts[1]);
               //redirect = parts[1];
               //window.setTimeout('loadContent(redirect)', 1000);
            } else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) {
               // Go to the login page
               document.location.href = 'index.php';
            } else {
               jQuery('#pageContent').html(jqXHR.responseText);
               onAfterContentLoad('content.php', jQuery('#'+formname).serialize());
               pageFormChanged = false;
            }
            loadMenus();
            hideLoadIndicator();
         },
         error: function() {
            hideLoadIndicator();
            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 = jQuery.ajax({
            type: "POST",
            url: target,
            data: jQuery('#'+formname).serialize(),
            dataType: "html",
            beforeSend: function() {
               showLoadIndicator();
            },
            success: function(data, textStatus, jqXHR) {
               if(successMessage) alert(successMessage);
               if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
                  var parts = jqXHR.responseText.split(':');
                  //alert(parts[1]);
                  loadContent(parts[1]);
                  //redirect = parts[1];
                  //window.setTimeout('loadContent(redirect)', 1000);
               } else {
                  jQuery('#pageContent').html(jqXHR.responseText);
                  onAfterContentLoad(target, jQuery('#'+formname).serialize());
                  pageFormChanged = false;
               }
               hideLoadIndicator();
            },
            error: function(jqXHR, textStatus, errorThrown) {
               hideLoadIndicator();
               var parts = jqXHR.responseText.split(':');
               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 = jQuery('#OKMsg',response).html();
         if(okmsg){
            msg = '<div id="OKMsg">'+okmsg+'</div>';
         }
         var errormsg = jQuery('#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);
      jQuery('body').after('<iframe width="0" height="0" style="display:none;" name="'+frame_id+'" id="'+frame_id+'"/>');
      jQuery('input[type="file"]').closest("form").attr({target: frame_id, action: target}).submit();
      jQuery('#'+frame_id).load(function() {
         var msg = handleResponse(this);
         jQuery('#errorMsg').remove();
         jQuery('#OKMsg').remove();
         jQuery('input[name="id"]').before(msg);
         jQuery(this).remove();
        });
   },
   function capp(module, redirect) {
      var submitFormObj = jQuery.ajax({
         type: "GET",
         url: "capp.php",
         data: "mod="+module+((redirect != undefined) ? '&redirect='+redirect : ''),
         dataType: "html",
         beforeSend: function() {
            showLoadIndicator();
         },
         success: function(data, textStatus, jqXHR) {
            if(jqXHR.responseText != '') {
               if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
                  var parts = jqXHR.responseText.split(':');
                  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);
               }
            }
            loadMenus();
            hideLoadIndicator();
         },
         error: function() {
            hideLoadIndicator();
            reportError('Ajax Request was not successful.'+module);
         }
      });
   },
   loadContent: function(pagename) {
      var params = arguments[1];
      var pageContentObject2 = jQuery.ajax({
         type: "GET",
         url: pagename,
         data: (params ? params : null),
         dataType: "html",
         beforeSend: function() {
            showLoadIndicator();
         },
         success: function(data, textStatus, jqXHR) {
            if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
               var parts = jqXHR.responseText.split(':');
               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 = jQuery(jqXHR.responseText);
               //var reponseScript = reponse.filter("script");
               //jQuery.each(reponseScript, function(idx, val) { eval(val.text); } );
               jQuery('#pageContent').html(jqXHR.responseText);
               onAfterContentLoad(pagename, (params ? params : null));
               pageFormChanged = false;
            }
            hideLoadIndicator();
         },
         error: function() {
            hideLoadIndicator();
            reportError('Ajax Request was not successful. 113');
         }
      });
   },
   loadContentRefresh: function(pagename) {
      if($('#refreshinterval').val() > 0) {
         var pageContentObject2 = jQuery.ajax({
            type: "GET",
            url: pagename,
            data: "refresh="+document.getElementById('refreshinterval').value,
            dataType: "html",
            beforeSend: function() {
               showLoadIndicator();
            },
            success: function(data, textStatus, jqXHR) {
               hideLoadIndicator();
               jQuery('#pageContent').html(jqXHR.responseText);
               onAfterContentLoad(pagename, "refresh="+document.getElementById('refreshinterval').value);
               pageFormChanged = false;
            },
            error: function() {
               hideLoadIndicator();
               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 = jQuery.ajax({
         type: "GET",
         url: "content.php",
         data: "s_mod=login&s_pg=index",
         dataType: "html",
         beforeSend: function() {
            showLoadIndicator();
         },
         success: function(data, textStatus, jqXHR) {
            if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) {
               var parts = jqXHR.responseText.split(":");
               loadContent(parts[1]);
            } else {
               jQuery('#pageContent').html(jqXHR.responseText);
               onAfterContentLoad('content.php', "s_mod=login&s_pg=index");
               pageFormChanged = false;
            }
            hideLoadIndicator();
         },
         error: function() {
            hideLoadIndicator();
            reportError('Ajax Request was not successful. 114');
         }
      });
      loadMenus();
      keepalive();
      setTimeout(function() {
         try {
            jQuery('form#pageForm').find('input[name="username"]').focus();
         } catch (e) {
         }
      }, 1000);
   },
   loadMenus: function() {
      var sideNavObject = jQuery.ajax({
         type: "GET",
         url: "nav.php",
         data: "nav=side",
         dataType: "html",
         beforeSend: function() {
            showLoadIndicator();
         },
         success: function(data, textStatus, jqXHR) {
            hideLoadIndicator();
            jQuery('#sidebar').html(jqXHR.responseText);
            onAfterSideNavLoaded();
            loadPushyMenu();
         },
         error: function() {
            hideLoadIndicator();
            reportError('Ajax Request was not successful. 115');
         }
      });
      var topNavObject = jQuery.ajax({
         type: "GET",
         url: "nav.php",
         data: "nav=top",
         dataType: "html",
         beforeSend: function() {
            showLoadIndicator();
         },
         success: function(data, textStatus, jqXHR) {
            hideLoadIndicator();
            jQuery('#topnav-container').html(jqXHR.responseText);
            loadPushyMenu();
         },
         error: function(o) {
            hideLoadIndicator();
            reportError('Ajax Request was not successful. 116');
         }
      });
   },
   changeTab: function(tab, target, force) {
      if(requestsRunning > 0) return false;
      document.pageForm.next_tab.value = tab;
      var idel = jQuery('form#pageForm').find('[name="id"]');
      var id = null;
      if(idel.length > 0) id = idel.val();
      if(tabChangeDiscard == 'y' && !force) {
         if((idel.length < 1 || id) && (pageFormChanged == false || window.confirm(tabChangeDiscardTxt))) {
            var next_tab = tab;
            if(id) loadContent(target, {'next_tab': next_tab, 'id': id});
            else loadContent(target, {'next_tab': next_tab});
         } else {
            return false;
         }
      } else {
         if(id && tabChangeWarning == 'y' && pageFormChanged == true) {
            if(window.confirm(tabChangeWarningTxt)) {
               submitForm('pageForm', target);
            } else {
               var next_tab = tab;
               if(id) loadContent(target, {'next_tab': next_tab, 'id': id});
               else loadContent(target, {'next_tab': next_tab});
            }
         } else {
            submitForm('pageForm',target);
         }
      }
   },
function del_record(link,confirmation) {
  if(window.confirm(confirmation)) {
          loadContent(link);
  }
}
function confirm_action(link,confirmation) {
  if(window.confirm(confirmation)) {
          loadContent(link);
  }
}
function loadContentInto(elementid,pagename) {
  var pageContentObject2 = jQuery.ajax({   type: "GET",
                                 url: pagename,
                                 dataType: "html",
                                 beforeSend: function() {
//                                    showLoadIndicator();
                                 },
                                 success: function(data, textStatus, jqXHR) {
//                                                hideLoadIndicator();
                                    jQuery('#'+elementid).html(jqXHR.responseText);
                                 },
                                 error: function() {
//                                                hideLoadIndicator();
                                    reportError('Ajax Request was not successful. 118');
                                 }
                              });
}
function loadOptionInto(elementid,pagename) {
   var pageContentObject2 = jQuery.ajax({   type: "GET",
                                 url: pagename,
                                 dataType: "html",
                                 beforeSend: function() {
//                                    showLoadIndicator();
                                 },
                                 success: function(data, textStatus, jqXHR) {
//                                                hideLoadIndicator();
                                    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);
                                    }
                                 },
                                 error: function() {
//                                                hideLoadIndicator();
                                    reportError('Ajax Request was not successful. 119');
                                 }
                              });
}
function keepalive() {
   var pageContentObject3 = jQuery.ajax({   type: "GET",
                                 url: "keepalive.php",
                                 dataType: "html",
                                 success: function(data, textStatus, jqXHR) {
                                    setTimeout( keepalive, 1000000 );
                                 },
                                 error: function() {
                                    reportError('Session expired. Please login again.');
                                 }
                              });
     //setTimeout( keepalive, 1000000 );
}
<?php
$min_password_length = 5;
if(isset($server_config_array['misc']['min_password_length'])) {
@@ -672,82 +145,7 @@
   return false;
}
var new_tpl_add_id = 0;
function addAdditionalTemplate(){
    var tpl_add = jQuery('#template_additional').val();
    var addTemplate = jQuery('#tpl_add_select').val().split('|',2);
   var addTplId = addTemplate[0];
   var addTplText = addTemplate[1];
   if(addTplId > 0) {
        var newVal = tpl_add.split('/');
        new_tpl_add_id += 1;
        var delbtn = jQuery('<a href="#"></a>').attr('class', 'button icons16 icoDelete').click(function(e) {
            e.preventDefault();
            delAdditionalTemplate($(this).parent().attr('rel'));
        });
        newVal[newVal.length] = 'n' + new_tpl_add_id + ':' + addTplId;
       jQuery('<li>' + addTplText + '</li>').attr('rel', 'n' + new_tpl_add_id).append(delbtn).appendTo('#template_additional_list ul');
       jQuery('#template_additional').val(newVal.join('/'));
       alert('additional template ' + addTplText + ' added to customer');
   } else {
       alert('no additional template selcted');
   }
}
function delAdditionalTemplate(tpl_id){
    var tpl_add = jQuery('#template_additional').val();
   if(tpl_id) {
        // new style
      var $el = jQuery('#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];
        }
        jQuery('#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];
      jQuery('#template_additional_list ul').find('li:not([rel])').each(function() {
            var text = jQuery(this).text();
            if(text == addTplText) {
                jQuery(this).remove();
                return false;
            }
            return this;
        });
      var newVal = tpl_add;
        var repl = new RegExp('(^|\/)' + addTplId + '(\/|$)');
      newVal = newVal.replace(repl, '');
      newVal = newVal.replace('//', '/');
      jQuery('#template_additional').val(newVal);
      alert('additional template ' + addTplText + ' deleted from customer');
  } else {
     alert('no additional template selcted');
  }
}
function getInternetExplorerVersion() {
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
    return rv;
}
function password(minLength, special, num_special){
   minLength = minLength || 10;
@@ -839,42 +237,3 @@
function getRandomInt(min, max){
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
jQuery(document).on("click", ".addPlaceholder", function(){
   var placeholderText = jQuery(this).text();
   var template = jQuery(this).siblings(':input');
   template.insertAtCaret(placeholderText);
});
jQuery(document).on("click", ".addPlaceholderContent", function(){
   var placeholderContentText = jQuery(this).find('.addPlaceholderContent').text();
   var template2 = jQuery(this).siblings(':input');
   template2.insertAtCaret(placeholderContentText);
});
jQuery.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();
         }
      })
   }
});