src/cm/media/js/client/c_preferences.js
changeset 0 40c8f766c9b8
child 341 053551f213fb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/media/js/client/c_preferences.js	Mon Nov 23 15:14:29 2009 +0100
@@ -0,0 +1,56 @@
+// manages user preferences through cookies
+
+
+// globals used: gConf
+// YUI3 used: cookie
+
+Preferences = function() {
+	this.prefs = {} ;  
+}
+
+Preferences.prototype = {
+	init : function() {
+		this._read() ;
+	},
+	//read user preferences from cookie
+	_read : function() {
+		for (var key1 in gConf['defaultPrefs']) {
+			
+			this.prefs[key1] = {} ;
+			
+			for (var key2 in gConf['defaultPrefs'][key1]) {
+
+				var val = null ;
+				if (key1 == 'user' && (key2 == 'name' || key2 == 'email'))
+					val = CY.Cookie.get("user_" + key2);
+				else 
+					val = CY.Cookie.getSub(key1, key2);
+				this.prefs[key1][key2] = (val == null) ? gConf['defaultPrefs'][key1][key2] : val ;
+			}
+		}
+	},
+	// to be used only on values in gDefaultPrefs
+	persist : function(key1, key2, val) {
+		var cookieOptions = {path:"/", expires:(new Date()).setFullYear(2100,0,1)} ;
+		
+		if (key1 == 'user' && (key2 == 'name' || key2 == 'email')) // special case want to get that from cookie set up by python code
+			CY.Cookie.set("user_" + key2, val, cookieOptions);
+		else 
+			CY.Cookie.setSub(key1, key2, val, cookieOptions);
+		this.prefs[key1][key2] = val ;
+	},
+	get : function(key1, key2) {
+		return this.prefs[key1][key2] ;
+	},
+	readDefault : function(key1, key2) {
+		return gConf['defaultPrefs'][key1][key2] ;
+	},
+	reset : function(entries) {
+		for (var i = 0; i < entries.length ; i++) {
+			var key1 = entries[i] ;
+			for (var key2 in gConf['defaultPrefs'][key1]) {
+				this.persist(key1, key2, gConf['defaultPrefs'][key1][key2]) ;
+			}
+		}
+	}
+}