[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/lib/scripts/ -> cookie.js (source)

   1  /**
   2  * Handles the cookie used by several JavaScript functions
   3  *
   4  * Only a single cookie is written and read. You may only save
   5  * simple name-value pairs - no complex types!
   6  *
   7  * You should only use the getValue and setValue methods
   8  *
   9  * @author Andreas Gohr <andi@splitbrain.org>
  10  * @author Michal Rezler <m.rezler@centrum.cz>
  11  */
  12  var DokuCookie = {
  13      data: {},
  14      name: 'DOKU_PREFS',
  15  
  16      /**
  17       * Save a value to the cookie
  18       *
  19       * @author Andreas Gohr <andi@splitbrain.org>
  20       */
  21      setValue: function(key,val){
  22          var text = [],
  23              _this = this;
  24          this.init();
  25          if (val === false){
  26              delete this.data[key];
  27          }else{
  28              val = val + "";
  29              this.data[key] = val;
  30          }
  31  
  32  
  33          //save the whole data array
  34          jQuery.each(_this.data, function (key, val) {
  35              if (_this.data.hasOwnProperty(key)) {
  36                  text.push(encodeURIComponent(key)+'#'+encodeURIComponent(val));
  37              }
  38          });
  39          jQuery.cookie(this.name, text.join('#'), {expires: 365, path: DOKU_COOKIE_PARAM.path, secure: DOKU_COOKIE_PARAM.secure});
  40      },
  41  
  42      /**
  43       * Get a Value from the Cookie
  44       *
  45       * @author Andreas Gohr <andi@splitbrain.org>
  46       * @param def default value if key does not exist; if not set, returns undefined by default
  47       */
  48      getValue: function(key, def){
  49          this.init();
  50          return this.data.hasOwnProperty(key) ? this.data[key] : def;
  51      },
  52  
  53      /**
  54       * Loads the current set cookie
  55       *
  56       * @author Andreas Gohr <andi@splitbrain.org>
  57       */
  58      init: function(){
  59          var text, parts, i;
  60          if(!jQuery.isEmptyObject(this.data)) {
  61              return;
  62          }
  63          text = jQuery.cookie(this.name);
  64          if(text){
  65              parts = text.split('#');
  66              for(i = 0; i < parts.length; i += 2){
  67                  this.data[decodeURIComponent(parts[i])] = decodeURIComponent(parts[i+1]);
  68              }
  69          }
  70      }
  71  };