]> scripts.mit.edu Git - autoinstalls/wordpress.git/blob - wp-admin/js/utils.dev.js
Wordpress 3.0-scripts
[autoinstalls/wordpress.git] / wp-admin / js / utils.dev.js
1 // utility functions
2 function convertEntities(o) {
3         var c, v;
4         c = function(s) {
5                 if (/&[^;]+;/.test(s)) {
6                         var e = document.createElement("div");
7                         e.innerHTML = s;
8                         return !e.firstChild ? s : e.firstChild.nodeValue;
9                 }
10                 return s;
11         }
12
13         if ( typeof o === 'string' ) {
14                 return c(o);
15         } else if ( typeof o === 'object' ) {
16                 for (v in o) {
17                         if ( typeof o[v] === 'string' ) {
18                                 o[v] = c(o[v]);
19                         }
20                 }
21         }
22         return o;
23 }
24
25 var wpCookies = {
26 // The following functions are from Cookie.js class in TinyMCE, Moxiecode, used under LGPL.
27
28         each : function(o, cb, s) {
29                 var n, l;
30
31                 if (!o)
32                         return 0;
33
34                 s = s || o;
35
36                 if (typeof(o.length) != 'undefined') {
37                         for (n=0, l = o.length; n<l; n++) {
38                                 if (cb.call(s, o[n], n, o) === false)
39                                         return 0;
40                         }
41                 } else {
42                         for (n in o) {
43                                 if (o.hasOwnProperty(n)) {
44                                         if (cb.call(s, o[n], n, o) === false) {
45                                                 return 0;
46                                         }
47                                 }
48                         }
49                 }
50                 return 1;
51         },
52
53         getHash : function(n) {
54                 var v = this.get(n), h;
55
56                 if (v) {
57                         this.each(v.split('&'), function(v) {
58                                 v = v.split('=');
59                                 h = h || {};
60                                 h[v[0]] = v[1];
61                         });
62                 }
63                 return h;
64         },
65
66         setHash : function(n, v, e, p, d, s) {
67                 var o = '';
68
69                 this.each(v, function(v, k) {
70                         o += (!o ? '' : '&') + k + '=' + v;
71                 });
72
73                 this.set(n, o, e, p, d, s);
74         },
75
76         get : function(n) {
77                 var c = document.cookie, e, p = n + "=", b;
78
79                 if (!c)
80                         return;
81
82                 b = c.indexOf("; " + p);
83
84                 if (b == -1) {
85                         b = c.indexOf(p);
86
87                         if (b != 0)
88                                 return null;
89
90                 } else {
91                         b += 2;
92                 }
93
94                 e = c.indexOf(";", b);
95
96                 if (e == -1)
97                         e = c.length;
98
99                 return decodeURIComponent(c.substring(b + p.length, e));
100         },
101
102         set : function(n, v, e, p, d, s) {
103                 document.cookie = n + "=" + encodeURIComponent(v) +
104                         ((e) ? "; expires=" + e.toGMTString() : "") +
105                         ((p) ? "; path=" + p : "") +
106                         ((d) ? "; domain=" + d : "") +
107                         ((s) ? "; secure" : "");
108         },
109
110         remove : function(n, p) {
111                 var d = new Date();
112
113                 d.setTime(d.getTime() - 1000);
114
115                 this.set(n, '', d, p, d);
116         }
117 };
118
119 // Returns the value as string. Second arg or empty string is returned when value is not set.
120 function getUserSetting( name, def ) {
121         var o = getAllUserSettings();
122
123         if ( o.hasOwnProperty(name) )
124                 return o[name];
125
126         if ( typeof def != 'undefined' )
127                 return def;
128
129         return '';
130 }
131
132 // Both name and value must be only ASCII letters, numbers or underscore
133 // and the shorter, the better (cookies can store maximum 4KB). Not suitable to store text.
134 function setUserSetting( name, value, del ) {
135         if ( 'object' !== typeof userSettings )
136                 return false;
137
138         var c = 'wp-settings-' + userSettings.uid, o = wpCookies.getHash(c) || {}, d = new Date(), p,
139         n = name.toString().replace(/[^A-Za-z0-9_]/, ''), v = value.toString().replace(/[^A-Za-z0-9_]/, '');
140
141         if ( del ) {
142                 delete o[n];
143         } else {
144                 o[n] = v;
145         }
146
147         d.setTime( d.getTime() + 31536000000 );
148         p = userSettings.url;
149
150         wpCookies.setHash(c, o, d, p);
151         wpCookies.set('wp-settings-time-'+userSettings.uid, userSettings.time, d, p);
152
153         return name;
154 }
155
156 function deleteUserSetting( name ) {
157         return setUserSetting( name, '', 1 );
158 }
159
160 // Returns all settings as js object.
161 function getAllUserSettings() {
162         if ( 'object' !== typeof userSettings )
163                 return {};
164
165         return wpCookies.getHash('wp-settings-' + userSettings.uid) || {};
166 }