src/cm/media/js/client/c_preferences.js
author rbernard
Sat, 13 Feb 2010 13:38:08 +0100
changeset 184 0d9a2a99ffda
parent 0 40c8f766c9b8
child 341 053551f213fb
permissions -rw-r--r--
add text anchor support (fixes #44)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
// manages user preferences through cookies
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
// globals used: gConf
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
// YUI3 used: cookie
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
Preferences = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
	this.prefs = {} ;  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
Preferences.prototype = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
	init : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
		this._read() ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
	//read user preferences from cookie
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
	_read : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
		for (var key1 in gConf['defaultPrefs']) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
			this.prefs[key1] = {} ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
			for (var key2 in gConf['defaultPrefs'][key1]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
				var val = null ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
				if (key1 == 'user' && (key2 == 'name' || key2 == 'email'))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
					val = CY.Cookie.get("user_" + key2);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
				else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
					val = CY.Cookie.getSub(key1, key2);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
				this.prefs[key1][key2] = (val == null) ? gConf['defaultPrefs'][key1][key2] : val ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
	// to be used only on values in gDefaultPrefs
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
	persist : function(key1, key2, val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
		var cookieOptions = {path:"/", expires:(new Date()).setFullYear(2100,0,1)} ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
		if (key1 == 'user' && (key2 == 'name' || key2 == 'email')) // special case want to get that from cookie set up by python code
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
			CY.Cookie.set("user_" + key2, val, cookieOptions);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
		else 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
			CY.Cookie.setSub(key1, key2, val, cookieOptions);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
		this.prefs[key1][key2] = val ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
	get : function(key1, key2) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
		return this.prefs[key1][key2] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
	readDefault : function(key1, key2) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
		return gConf['defaultPrefs'][key1][key2] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
	reset : function(entries) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
		for (var i = 0; i < entries.length ; i++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
			var key1 = entries[i] ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
			for (var key2 in gConf['defaultPrefs'][key1]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
				this.persist(key1, key2, gConf['defaultPrefs'][key1][key2]) ;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
}