⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ajaxtags.js

📁 这是linux下ssl vpn的实现程序
💻 JS
📖 第 1 页 / 共 3 页
字号:


}





/**

 * UPDATEFIELD TAG

 */

AjaxJspTag.UpdateField = Class.create();

AjaxJspTag.UpdateField.prototype = Object.extend(new AjaxJspTag.Base(), {



  initialize: function(url, options) {

    this.url = url;

    this.setOptions(options);

    this.setListeners();

  },



  setOptions: function(options) {

    this.options = Object.extend({

      parameters: options.parameters || '',

      eventType: options.eventType ? options.eventType : "click",

      parser: options.parser ? options.parser : new ResponseTextParser(),

      handler: options.handler ? options.handler : this.handler

    }, options || {});

  },



  setListeners: function() {

    eval("$(this.options.action).on"+this.options.eventType+" = this.execute.bindAsEventListener(this)");

  },



  execute: function(e) {

    if (this.options.preFunction != null) this.options.preFunction();



    // parse parameters and do replacements

    var params = buildParameterString(this.options.parameters);



    // parse targets

    var targetList = this.options.target.split(',');



    var obj = this; // required because 'this' conflict with Ajax.Request

    var setFunc = this.setField;

    var aj = new Ajax.Request(this.url, {

      asynchronous: true,

      method: 'get',

      evalScripts: true,

      parameters: params,

      onSuccess: function(request) {

        obj.options.parser.load(request);

        var results = obj.options.parser.itemList;

        obj.options.handler(request, {targets: targetList, items: results});

      },

      onFailure: function(request) {

        if (obj.options.errorFunction != null) obj.options.errorFunction(request);

      },

      onComplete: function(request) {

        if (obj.options.postFunction != null) obj.options.postFunction(request);

      }

    });

  },



  handler: function(request, options) {

    for (var i=0; i<options.targets.length && i<options.items.length; i++) {

      $(options.targets[i]).value = options.items[i][1];

    }

  }



});





/**

 * SELECT TAG

 */

AjaxJspTag.Select = Class.create();

AjaxJspTag.Select.prototype = Object.extend(new AjaxJspTag.Base(), {



  initialize: function(url, options) {

    this.url = url;

    this.setOptions(options);

    this.setListeners();



    if (this.options.executeOnLoad == "true") {

      this.execute();

    }

  },



  setOptions: function(options) {

    this.options = Object.extend({

      parameters: options.parameters || '',

      eventType: options.eventType ? options.eventType : "change",

      parser: options.parser ? options.parser : new ResponseXmlParser(),

      handler: options.handler ? options.handler : this.handler

    }, options || {});

  },



  setListeners: function() {

    Event.observe($(this.options.source),

      this.options.eventType,

      this.execute.bindAsEventListener(this),

      false);

    eval("$(this.options.source).on"+this.options.eventType+" = function(){return false;};");

  },



  execute: function(e) {

    if (this.options.preFunction != null) this.options.preFunction();



    // parse parameters and do replacements

    var params = buildParameterString(this.options.parameters);



    var obj = this; // required because 'this' conflict with Ajax.Request

    var aj = new Ajax.Request(this.url, {

      asynchronous: true,

      method: 'get',

      evalScripts: true,

      parameters: params,

      onSuccess: function(request) {

        obj.options.parser.load(request);

        var results = obj.options.parser.itemList;

        obj.options.handler(request, {target: obj.options.target,

                                      items: results,

                                      defaultOptions: obj.options.defaultOptions});

      },

      onFailure: function(request) {

        if (obj.options.errorFunction != null) obj.options.errorFunction(request);

      },

      onComplete: function(request) {

        if (obj.options.postFunction != null) obj.options.postFunction(request);

      }

    });

  },



  handler: function(request, options) {

    // build an array of option values to be set as selected

    var defaultSelectedValues = (options.defaultOptions || '').split(",");



    $(options.target).options.length = 0;

    $(options.target).disabled = false;

    for (var i=0; i<options.items.length; i++) {

      var newOption = new Option(options.items[i][0], options.items[i][1]);

      //$(options.target).options[i] = new Option(options.items[i][0], options.items[i][1]);

      // set the option as selected if it is in the default list

      for (j=0; j<defaultSelectedValues.length && newOption.selected == false; j++) {

        if (defaultSelectedValues[j] == options.items[i][1]) {

          newOption.selected = true;

        }

      }

      $(options.target).options[i] = newOption;

    }

  }



});





/**

 * HTMLCONTENT TAG

 */

AjaxJspTag.HtmlContent = Class.create();

AjaxJspTag.HtmlContent.prototype = Object.extend(new AjaxJspTag.Base(), {



  initialize: function(url, options) {

    this.url = url;

    this.setOptions(options);

    this.setListeners();

  },



  setOptions: function(options) {

    this.options = Object.extend({

      parameterName: options.parameterName ? options.parameterName : AJAX_DEFAULT_PARAMETER,

      parameters: options.parameters || '',

      eventType: options.eventType ? options.eventType : "click",

      parser: options.parser ? options.parser : new ResponseHtmlParser(),

      handler: options.handler ? options.handler : this.handler

    }, options || {});

  },



  setListeners: function() {

    if (this.options.source) {

      eval("$(this.options.source).on"+this.options.eventType+" = this.execute.bindAsEventListener(this)");

    } else if (this.options.sourceClass) {

      var elementArray = document.getElementsByClassName(this.options.sourceClass);

      for (var i=0; i<elementArray.length; i++) {

        eval("elementArray[i].on"+this.options.eventType+" = this.execute.bindAsEventListener(this)");

      }

    }

  },



  execute: function(e) {

    if (this.options.preFunction != null) this.options.preFunction();



    // replace default parameter with value/content of source element selected

    var ajaxParameters = this.options.parameters;

    if (this.options.sourceClass) {

      var re = new RegExp("(\\{"+this.options.parameterName+"\\})", 'g');

      var elem = Event.element(e);

      if (elem.type) {

        ajaxParameters = ajaxParameters.replace(re, $F(elem));

      } else {

        ajaxParameters = ajaxParameters.replace(re, elem.innerHTML);

      }

    }



    // parse parameters and do replacements

    var params = buildParameterString(ajaxParameters);



    var obj = this; // required because 'this' conflict with Ajax.Request

    var aj = new Ajax.Updater(this.options.target, this.url, {

      asynchronous: true,

      method: 'get',

      evalScripts: true,

      parameters: params,

      onFailure: function(request) {

        if (obj.options.errorFunction != null) obj.options.errorFunction(request);

      },

      onComplete: function(request) {

        if (obj.options.postFunction != null) obj.options.postFunction(request);

      }

    });

  }



});





/**

 * TABPANEL TAG

 */

AjaxJspTag.TabPanel = Class.create();

AjaxJspTag.TabPanel.prototype = Object.extend(new AjaxJspTag.Base(), {



  initialize: function(url, options) {

    this.url = url;

    this.setOptions(options);

    this.execute();

  },



  setOptions: function(options) {

    this.options = Object.extend({

      parameters: options.parameters || '',

      eventType: options.eventType ? options.eventType : "click",

      parser: options.parser ? options.parser : new ResponseHtmlParser(),

      handler: options.handler ? options.handler : this.handler

    }, options || {});

  },



  execute: function(e) {

    if (this.options.preFunction != null) this.options.preFunction();



    // parse parameters and do replacements

    this.resolveParameters();

    var params = buildParameterString(this.options.parameters);



    var obj = this; // required because 'this' conflict with Ajax.Request

    var aj = new Ajax.Updater(this.options.target, this.url, {

      asynchronous: true,

      method: 'get',

      evalScripts: true,

      parameters: params,

      onSuccess: function(request) {

        var src;

        if (obj.options.source) {

          src = obj.options.source;

        } else {

          src = document.getElementsByClassName(obj.options.currentStyleClass,

                                                $(obj.options.panelStyleId))[0];

        }

        obj.options.handler(request, {source: src,

                                      panelStyleId: obj.options.panelStyleId,

                                      currentStyleClass: obj.options.currentStyleClass});

      },

      onFailure: function(request) {

        if (obj.options.errorFunction != null) obj.options.errorFunction(request);

      },

      onComplete: function(request) {

        if (obj.options.postFunction != null) obj.options.postFunction(request);

      }

    });

  },



  handler: function(request, options) {

    // find current anchor

    var cur = document.getElementsByClassName(options.currentStyleClass, $(options.panelStyleId));

    // remove class

    cur[0].className = '';

    // add class to selected tab

    options.source.className = options.currentStyleClass;

  }



});





/**

 * PORTLET TAG

 */

AjaxJspTag.Portlet = Class.create();

AjaxJspTag.Portlet.prototype = Object.extend(new AjaxJspTag.Base(), {



  initialize: function(url, options) {

    this.url = url;

    this.setOptions(options);

    this.setListeners();

    if (this.options.executeOnLoad == "true") {

      this.execute();

    }

    if (this.preserveState) this.checkCookie();

  },



  setOptions: function(options) {

    this.options = Object.extend({

      parameters: options.parameters || '',

      target: options.source+"Content",

      close: options.source+"Close",

      refresh: options.source+"Refresh",

      toggle: options.source+"Size",

      isMaximized: true,

      expireDays: options.expireDays || "0",

      expireHours: options.expireHours || "0",

      expireMinutes: options.expireMinutes || "0",

      executeOnLoad: evalBoolean(options.executeOnLoad, true),

      refreshPeriod: options.refreshPeriod || null,

      eventType: options.eventType ? options.eventType : "click",

      parser: options.parser ? options.parser : new ResponseHtmlParser(),

      handler: options.handler ? options.handler : this.handler

    }, options || {});



    if (parseInt(this.options.expireDays) > 0

        || parseInt(this.options.expireHours) > 0

        || parseInt(this.options.expireMinutes) > 0) {

      this.preserveState = true;

      this.options.expireDate = getExpDate(

        parseInt(this.options.expireDays),

        parseInt(this.options.expireHours),

        parseInt(this.options.expireMinutes));

    }



    this.isAutoRefreshSet = false;

  },



  setListeners: function() {

    if (this.options.imageClose) {

      eval("$(this.options.close).on"+this.options.eventType+" = this.closePortlet.bindAsEventListener(this)");

    }

    if (this.options.imageRefresh) {

      eval("$(this.options.refresh).on"+this.options.eventType+" = this.refreshPortlet.bindAsEventListener(this)");

    }

    if (this.options.imageMaximize && this.options.imageMinimize) {

      eval("$(this.options.toggle).on"+this.options.eventType+" = this.togglePortlet.bindAsEventListener(this)");

    }

  },



  execute: function(e) {

    if (this.options.preFunction != null) this.options.preFunction();



    // parse parameters and do replacements

    this.resolveParameters();

    var params = buildParameterString(this.options.parameters);



    var obj = this; // required because 'this' conflict with Ajax.Request

    if (this.options.refreshPeriod && this.isAutoRefreshSet == false) {

      // periodic updater

      var freq = this.options.refreshPeriod;

      this.ajaxPeriodicalUpdater = new Ajax.PeriodicalUpdater(this.options.target, this.url, {

        asynchronous: true,

        method: 'get',

        evalScripts: true,

        parameters: params,

        frequency: freq,

        onFailure: function(request) {

          if (obj.options.errorFunction != null) obj.options.errorFunction(request);

        },

        onComplete: function(request) {},

        onSuccess: function(request) {

          if (obj.options.postFunction != null) obj.options.postFunction(request);

        }

      });



      this.isAutoRefreshSet = true;

    } else {

      // normal updater

      this.ajaxUpdater = new Ajax.Updater(this.options.target, this.url, {

        asynchronous: true,

        method: 'get',

        parameters: params,

        evalScripts: true,

        onFailure: function(request) {

          if (obj.options.errorFunction != null) obj.options.errorFunction(request);

        },

        onComplete: function(request) {

          if (obj.options.postFunction != null) obj.options.postFunction(request);

        }

      });

    }

  },



  checkCookie: function() {

    // Check cookie for save state

    var cVal = getCookie("AjaxJspTag.Portlet."+this.options.source);

    if (cVal != null) {

      if (cVal == AJAX_PORTLET_MIN) {

        this.togglePortlet();

      } else if (cVal == AJAX_PORTLET_CLOSE) {

        this.closePortlet();

      }

    }

  },



  stopAutoRefresh: function() {

    // stop auto-update if present

    if (this.ajaxPeriodicalUpdater != null

        && this.options.refreshPeriod

        && this.isAutoRefreshSet == true) {

      this.ajaxPeriodicalUpdater.stop();

    }

  },



  startAutoRefresh: function() {

    // stop auto-update if present

    if (this.ajaxPeriodicalUpdater != null && this.options.refreshPeriod) {

      this.ajaxPeriodicalUpdater.start();

    }

  },



  refreshPortlet: function(e) {

    // clear existing updater

    this.stopAutoRefresh();

    if (this.ajaxPeriodicalUpdater != null) {

      this.startAutoRefresh();

    } else {

      this.execute();

    }

  },



  closePortlet: function(e) {

    this.stopAutoRefresh();

    Element.remove(this.options.source);

    // Save state in cookie

    if (this.preserveState) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -