mirror of
				https://github.com/ether/etherpad-lite.git
				synced 2025-11-03 17:51:43 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * Copyright 2009 Google Inc.
 | 
						|
 * 
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 * 
 | 
						|
 *      http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 * 
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS-IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
var padcookie = (function(){
 | 
						|
  function getRawCookie() {
 | 
						|
    // returns null if can't get cookie text
 | 
						|
    if (! document.cookie) {
 | 
						|
      return null;
 | 
						|
    }
 | 
						|
    // look for (start of string OR semicolon) followed by whitespace followed by prefs=(something);
 | 
						|
    var regexResult = document.cookie.match(/(?:^|;)\s*prefs=([^;]*)(?:;|$)/);
 | 
						|
    if ((! regexResult) || (! regexResult[1])) {
 | 
						|
      return null;
 | 
						|
    }
 | 
						|
    return regexResult[1];
 | 
						|
  }
 | 
						|
  function setRawCookie(safeText) {
 | 
						|
    var expiresDate = new Date();
 | 
						|
    expiresDate.setFullYear(3000);
 | 
						|
    document.cookie = ('prefs='+safeText+';expires='+expiresDate.toGMTString());
 | 
						|
  }
 | 
						|
  function parseCookie(text) {
 | 
						|
    // returns null if can't parse cookie.
 | 
						|
 | 
						|
    try {
 | 
						|
      var cookieData = JSON.parse(unescape(text));
 | 
						|
      return cookieData;
 | 
						|
    }
 | 
						|
    catch (e) {
 | 
						|
      return null;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  function stringifyCookie(data) {
 | 
						|
    return escape(JSON.stringify(data));
 | 
						|
  }
 | 
						|
  function saveCookie() {
 | 
						|
    if (! inited) {
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    setRawCookie(stringifyCookie(cookieData));
 | 
						|
 | 
						|
    if (pad.getIsProPad() && (! getRawCookie()) && (! alreadyWarnedAboutNoCookies)) {
 | 
						|
      alert("Warning: it appears that your browser does not have cookies enabled."+
 | 
						|
	    " EtherPad uses cookies to keep track of unique users for the purpose"+
 | 
						|
	    " of putting a quota on the number of active users.  Using EtherPad without "+
 | 
						|
	    " cookies may fill up your server's user quota faster than expected.");
 | 
						|
      alreadyWarnedAboutNoCookies = true;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  var wasNoCookie = true;
 | 
						|
  var cookieData = {};
 | 
						|
  var alreadyWarnedAboutNoCookies = false;
 | 
						|
  var inited = false;
 | 
						|
 | 
						|
  var self = {
 | 
						|
    init: function(prefsToSet) {
 | 
						|
      var rawCookie = getRawCookie();
 | 
						|
      if (rawCookie) {
 | 
						|
        var cookieObj = parseCookie(rawCookie);
 | 
						|
        if (cookieObj) {
 | 
						|
          wasNoCookie = false; // there was a cookie
 | 
						|
          delete cookieObj.userId;
 | 
						|
          delete cookieObj.name;
 | 
						|
          delete cookieObj.colorId;
 | 
						|
          cookieData = cookieObj;
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
      for(var k in prefsToSet) {
 | 
						|
        cookieData[k] = prefsToSet[k];
 | 
						|
      }
 | 
						|
 | 
						|
      inited = true;
 | 
						|
      saveCookie();
 | 
						|
    },
 | 
						|
    wasNoCookie: function() { return wasNoCookie; },
 | 
						|
    getPref: function(prefName) {
 | 
						|
      return cookieData[prefName];
 | 
						|
    },
 | 
						|
    setPref: function(prefName, value) {
 | 
						|
      cookieData[prefName] = value;
 | 
						|
      saveCookie();
 | 
						|
    }
 | 
						|
  };
 | 
						|
  return self;
 | 
						|
}()); |