1 function ajaxToggleSystemThemes() |
1 function ajaxToggleSystemThemes() |
2 { |
2 { |
3 var theme_list = document.getElementById('theme_list_edit'); |
3 var theme_list = document.getElementById('theme_list_edit'); |
4 var mode = ( theme_list.sys_shown ) ? 'hide' : 'show'; |
4 var mode = ( theme_list.sys_shown ) ? 'hide' : 'show'; |
5 for ( var i = 0; i < theme_list.childNodes.length; i++ ) |
5 for ( var i = 0; i < theme_list.childNodes.length; i++ ) |
6 { |
6 { |
7 var child = theme_list.childNodes[i]; |
7 var child = theme_list.childNodes[i]; |
8 if ( child.tagName == 'DIV' ) |
8 if ( child.tagName == 'DIV' ) |
9 { |
9 { |
10 if ( $dynano(child).hasClass('themebutton_theme_system') ) |
10 if ( $dynano(child).hasClass('themebutton_theme_system') ) |
11 { |
11 { |
12 if ( $dynano(child).hasClass('themebutton_theme_disabled') ) |
12 if ( $dynano(child).hasClass('themebutton_theme_disabled') ) |
13 { |
13 { |
14 $dynano(child).rmClass('themebutton_theme_disabled') |
14 $dynano(child).rmClass('themebutton_theme_disabled') |
15 } |
15 } |
16 if ( mode == 'show' ) |
16 if ( mode == 'show' ) |
17 { |
17 { |
18 domObjChangeOpac(0, child); |
18 domObjChangeOpac(0, child); |
19 child.style.display = 'block'; |
19 child.style.display = 'block'; |
20 domOpacity(child, 0, 100, 1000); |
20 domOpacity(child, 0, 100, 1000); |
21 } |
21 } |
22 else |
22 else |
23 { |
23 { |
24 domOpacity(child, 100, 0, 1000); |
24 domOpacity(child, 100, 0, 1000); |
25 setTimeout("document.getElementById('" + child.id + "').style.display = 'none';", 1050); |
25 setTimeout("document.getElementById('" + child.id + "').style.display = 'none';", 1050); |
26 } |
26 } |
27 } |
27 } |
28 } |
28 } |
29 } |
29 } |
30 theme_list.sys_shown = ( mode == 'show' ); |
30 theme_list.sys_shown = ( mode == 'show' ); |
31 document.getElementById('systheme_toggler').innerHTML = ( mode == 'hide' ) ? $lang.get('acptm_btn_system_themes_show') : $lang.get('acptm_btn_system_themes_hide'); |
31 document.getElementById('systheme_toggler').innerHTML = ( mode == 'hide' ) ? $lang.get('acptm_btn_system_themes_show') : $lang.get('acptm_btn_system_themes_hide'); |
32 } |
32 } |
33 |
33 |
34 function ajaxInstallTheme(theme_id) |
34 function ajaxInstallTheme(theme_id) |
35 { |
35 { |
36 var thediv = document.getElementById('themebtn_install_' + theme_id); |
36 var thediv = document.getElementById('themebtn_install_' + theme_id); |
37 if ( !thediv ) |
37 if ( !thediv ) |
38 return false; |
38 return false; |
39 thediv.removeChild(thediv.getElementsByTagName('a')[0]); |
39 thediv.removeChild(thediv.getElementsByTagName('a')[0]); |
40 var status = document.createElement('div'); |
40 var status = document.createElement('div'); |
41 status.className = 'status'; |
41 status.className = 'status'; |
42 thediv.appendChild(status); |
42 thediv.appendChild(status); |
43 |
43 |
44 var req = toJSONString({ |
44 var req = toJSONString({ |
45 mode: 'install', |
45 mode: 'install', |
46 theme_id: theme_id |
46 theme_id: theme_id |
47 }); |
47 }); |
48 // we've finished nukeing the existing interface, request editor data |
48 // we've finished nukeing the existing interface, request editor data |
49 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + ajaxEscape(req), function(ajax) |
49 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + ajaxEscape(req), function(ajax) |
50 { |
50 { |
51 if ( ajax.readyState == 4 && ajax.status == 200 ) |
51 if ( ajax.readyState == 4 && ajax.status == 200 ) |
52 { |
52 { |
53 var response = String(ajax.responseText + ''); |
53 var response = String(ajax.responseText + ''); |
54 if ( response.substr(0, 1) == '{' ) |
54 if ( response.substr(0, 1) == '{' ) |
55 { |
55 { |
56 response = parseJSON(response); |
56 response = parseJSON(response); |
57 if ( response.mode == 'error' ) |
57 if ( response.mode == 'error' ) |
58 { |
58 { |
59 alert(response.error); |
59 alert(response.error); |
60 return false; |
60 return false; |
61 } |
61 } |
62 } |
62 } |
63 |
63 |
64 var theme_list = document.getElementById('theme_list_edit'); |
64 var theme_list = document.getElementById('theme_list_edit'); |
65 |
65 |
66 var btn = document.createElement('div'); |
66 var btn = document.createElement('div'); |
67 btn.className = 'themebutton'; |
67 btn.className = 'themebutton'; |
68 btn.style.backgroundImage = thediv.style.backgroundImage; |
68 btn.style.backgroundImage = thediv.style.backgroundImage; |
69 btn.id = 'themebtn_edit_' + theme_id; |
69 btn.id = 'themebtn_edit_' + theme_id; |
70 |
70 |
71 var a = document.createElement('a'); |
71 var a = document.createElement('a'); |
72 a.className = 'tb-inner'; |
72 a.className = 'tb-inner'; |
73 a.appendChild(document.createTextNode($lang.get('acptm_btn_theme_edit'))); |
73 a.appendChild(document.createTextNode($lang.get('acptm_btn_theme_edit'))); |
74 a.appendChild(document.createTextNode("\n")); |
74 a.appendChild(document.createTextNode("\n")); |
75 a.theme_id = theme_id; |
75 a.theme_id = theme_id; |
76 a.onclick = function() |
76 a.onclick = function() |
77 { |
77 { |
78 ajaxEditTheme(this.theme_id); |
78 ajaxEditTheme(this.theme_id); |
79 return false; |
79 return false; |
80 } |
80 } |
81 a.href = '#'; |
81 a.href = '#'; |
82 var span = document.createElement('span'); |
82 var span = document.createElement('span'); |
83 span.className = 'themename'; |
83 span.className = 'themename'; |
84 span.appendChild(document.createTextNode(thediv.getAttribute('enano:themename'))); |
84 span.appendChild(document.createTextNode(thediv.getAttribute('enano:themename'))); |
85 a.appendChild(span); |
85 a.appendChild(span); |
86 btn.appendChild(a); |
86 btn.appendChild(a); |
87 btn.setAttribute('enano:themename', thediv.getAttribute('enano:themename')); |
87 btn.setAttribute('enano:themename', thediv.getAttribute('enano:themename')); |
88 theme_list.appendChild(btn); |
88 theme_list.appendChild(btn); |
89 |
89 |
90 thediv.parentNode.removeChild(thediv); |
90 thediv.parentNode.removeChild(thediv); |
91 } |
91 } |
92 }); |
92 }); |
93 } |
93 } |
94 |
94 |
95 function ajaxEditTheme(theme_id) |
95 function ajaxEditTheme(theme_id) |
96 { |
96 { |
97 // Fade out and subsequently destroy the entire list, then make an |
97 // Fade out and subsequently destroy the entire list, then make an |
98 // ajax request to the theme manager for the theme info via JSON |
98 // ajax request to the theme manager for the theme info via JSON |
99 var theme_list = document.getElementById('theme_list_edit').parentNode; |
99 var theme_list = document.getElementById('theme_list_edit').parentNode; |
100 var backgroundImage = document.getElementById('themebtn_edit_' + theme_id).style.backgroundImage; |
100 var backgroundImage = document.getElementById('themebtn_edit_' + theme_id).style.backgroundImage; |
101 /* |
101 /* |
102 for ( var i = 0; i < theme_list.childNodes.length; i++ ) |
102 for ( var i = 0; i < theme_list.childNodes.length; i++ ) |
103 { |
103 { |
104 var el = theme_list.childNodes[i]; |
104 var el = theme_list.childNodes[i]; |
105 if ( el.tagName ) |
105 if ( el.tagName ) |
106 domOpacity(el, 100, 0, 1000); |
106 domOpacity(el, 100, 0, 1000); |
107 } |
107 } |
108 */ |
108 */ |
109 var thediv = document.getElementById('themebtn_edit_' + theme_id); |
109 var thediv = document.getElementById('themebtn_edit_' + theme_id); |
110 if ( !thediv ) |
110 if ( !thediv ) |
111 return false; |
111 return false; |
112 thediv.removeChild(thediv.getElementsByTagName('a')[0]); |
112 thediv.removeChild(thediv.getElementsByTagName('a')[0]); |
113 var status = document.createElement('div'); |
113 var status = document.createElement('div'); |
114 status.className = 'status'; |
114 status.className = 'status'; |
115 thediv.appendChild(status); |
115 thediv.appendChild(status); |
116 |
116 |
117 setTimeout(function() |
117 setTimeout(function() |
118 { |
118 { |
119 var req = toJSONString({ |
119 var req = toJSONString({ |
120 mode: 'fetch_theme', |
120 mode: 'fetch_theme', |
121 theme_id: theme_id |
121 theme_id: theme_id |
122 }); |
122 }); |
123 // we've finished nukeing the existing interface, request editor data |
123 // we've finished nukeing the existing interface, request editor data |
124 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + ajaxEscape(req), function(ajax) |
124 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + ajaxEscape(req), function(ajax) |
125 { |
125 { |
126 if ( ajax.readyState == 4 && ajax.status == 200 ) |
126 if ( ajax.readyState == 4 && ajax.status == 200 ) |
127 { |
127 { |
128 theme_list.innerHTML = ''; |
128 theme_list.innerHTML = ''; |
129 var response = String(ajax.responseText + ''); |
129 var response = String(ajax.responseText + ''); |
130 if ( !check_json_response(response) ) |
130 if ( !check_json_response(response) ) |
131 { |
131 { |
132 alert(response); |
132 alert(response); |
133 return false; |
133 return false; |
134 } |
134 } |
135 response = parseJSON(response); |
135 response = parseJSON(response); |
136 if ( response.mode == 'error' ) |
136 if ( response.mode == 'error' ) |
137 { |
137 { |
138 alert(response.error); |
138 alert(response.error); |
139 return false; |
139 return false; |
140 } |
140 } |
141 response.background_image = backgroundImage; |
141 response.background_image = backgroundImage; |
142 ajaxBuildThemeEditor(response, theme_list); |
142 ajaxBuildThemeEditor(response, theme_list); |
143 } |
143 } |
144 }); |
144 }); |
145 }, 200); |
145 }, 200); |
146 } |
146 } |
147 |
147 |
148 function ajaxBuildThemeEditor(data, target) |
148 function ajaxBuildThemeEditor(data, target) |
149 { |
149 { |
150 // Build the theme editor interface |
150 // Build the theme editor interface |
151 // Init opacity |
151 // Init opacity |
152 domObjChangeOpac(0, target); |
152 domObjChangeOpac(0, target); |
153 |
153 |
154 // Theme preview |
154 // Theme preview |
155 var preview = document.createElement('div'); |
155 var preview = document.createElement('div'); |
156 preview.style.border = '1px solid #F0F0F0'; |
156 preview.style.border = '1px solid #F0F0F0'; |
157 preview.style.padding = '5px'; |
157 preview.style.padding = '5px'; |
158 preview.style.width = '216px'; |
158 preview.style.width = '216px'; |
159 preview.style.height = '150px'; |
159 preview.style.height = '150px'; |
160 preview.style.backgroundImage = data.background_image; |
160 preview.style.backgroundImage = data.background_image; |
161 preview.style.backgroundRepeat = 'no-repeat'; |
161 preview.style.backgroundRepeat = 'no-repeat'; |
162 preview.style.backgroundPosition = 'center center'; |
162 preview.style.backgroundPosition = 'center center'; |
163 preview.style.cssFloat = 'right'; |
163 preview.style.cssFloat = 'right'; |
164 preview.style.styleFloat = 'right'; |
164 preview.style.styleFloat = 'right'; |
165 |
165 |
166 target.appendChild(preview); |
166 target.appendChild(preview); |
167 |
167 |
168 // Heading |
168 // Heading |
169 var h3 = document.createElement('h3'); |
169 var h3 = document.createElement('h3'); |
170 h3.appendChild(document.createTextNode($lang.get('acptm_heading_theme_edit', { theme_name: data.theme_name }))); |
170 h3.appendChild(document.createTextNode($lang.get('acptm_heading_theme_edit', { theme_name: data.theme_name }))); |
171 target.appendChild(h3); |
171 target.appendChild(h3); |
172 |
172 |
173 // Field: Theme name |
173 // Field: Theme name |
174 var l_name = document.createElement('label'); |
174 var l_name = document.createElement('label'); |
175 l_name.appendChild(document.createTextNode($lang.get('acptm_field_theme_name') + ' ')); |
175 l_name.appendChild(document.createTextNode($lang.get('acptm_field_theme_name') + ' ')); |
176 var f_name = document.createElement('input'); |
176 var f_name = document.createElement('input'); |
177 f_name.type = 'text'; |
177 f_name.type = 'text'; |
178 f_name.id = 'themeed_field_name'; |
178 f_name.id = 'themeed_field_name'; |
179 f_name.value = data.theme_name; |
179 f_name.value = data.theme_name; |
180 f_name.size = '40'; |
180 f_name.size = '40'; |
181 l_name.appendChild(f_name); |
181 l_name.appendChild(f_name); |
182 target.appendChild(l_name); |
182 target.appendChild(l_name); |
183 |
183 |
184 target.appendChild(document.createElement('br')); |
184 target.appendChild(document.createElement('br')); |
185 target.appendChild(document.createElement('br')); |
185 target.appendChild(document.createElement('br')); |
186 |
186 |
187 // Field: default style |
187 // Field: default style |
188 var l_style = document.createElement('label'); |
188 var l_style = document.createElement('label'); |
189 l_style.appendChild(document.createTextNode($lang.get('acptm_field_default_style') + ' ')); |
189 l_style.appendChild(document.createTextNode($lang.get('acptm_field_default_style') + ' ')); |
190 var f_style = document.createElement('select'); |
190 var f_style = document.createElement('select'); |
191 f_style.id = 'themeed_field_style'; |
191 f_style.id = 'themeed_field_style'; |
192 var opts = []; |
192 var opts = []; |
193 for ( var i = 0; i < data.css.length; i++ ) |
193 for ( var i = 0; i < data.css.length; i++ ) |
194 { |
194 { |
195 if ( data.css[i] == '_printable' ) |
195 if ( data.css[i] == '_printable' ) |
196 continue; |
196 continue; |
197 |
197 |
198 opts[i] = document.createElement('option'); |
198 opts[i] = document.createElement('option'); |
199 opts[i].value = data.css[i]; |
199 opts[i].value = data.css[i]; |
200 opts[i].appendChild(document.createTextNode(data.css[i])); |
200 opts[i].appendChild(document.createTextNode(data.css[i])); |
201 if ( data.default_style == data.css[i] ) |
201 if ( data.default_style == data.css[i] ) |
202 { |
202 { |
203 opts[i].selected = true; |
203 opts[i].selected = true; |
204 } |
204 } |
205 f_style.appendChild(opts[i]); |
205 f_style.appendChild(opts[i]); |
206 } |
206 } |
207 l_style.appendChild(f_style); |
207 l_style.appendChild(f_style); |
208 target.appendChild(l_style); |
208 target.appendChild(l_style); |
209 |
209 |
210 target.appendChild(document.createElement('br')); |
210 target.appendChild(document.createElement('br')); |
211 target.appendChild(document.createElement('br')); |
211 target.appendChild(document.createElement('br')); |
212 |
212 |
213 // Default theme |
213 // Default theme |
214 target.appendChild(document.createTextNode($lang.get('acptm_field_default_theme') + ' ')); |
214 target.appendChild(document.createTextNode($lang.get('acptm_field_default_theme') + ' ')); |
215 if ( data.is_default ) |
215 if ( data.is_default ) |
216 { |
216 { |
217 var l_default = document.createElement('b'); |
217 var l_default = document.createElement('b'); |
218 l_default.appendChild(document.createTextNode($lang.get('acptm_field_default_msg_current'))); |
218 l_default.appendChild(document.createTextNode($lang.get('acptm_field_default_msg_current'))); |
219 } |
219 } |
220 else |
220 else |
221 { |
221 { |
222 var l_default = document.createElement('label'); |
222 var l_default = document.createElement('label'); |
223 var f_default = document.createElement('input'); |
223 var f_default = document.createElement('input'); |
224 f_default.type = 'checkbox'; |
224 f_default.type = 'checkbox'; |
225 f_default.id = 'themeed_field_default'; |
225 f_default.id = 'themeed_field_default'; |
226 l_default.appendChild(f_default); |
226 l_default.appendChild(f_default); |
227 l_default.appendChild(document.createTextNode($lang.get('acptm_field_default_btn_make_default'))); |
227 l_default.appendChild(document.createTextNode($lang.get('acptm_field_default_btn_make_default'))); |
228 } |
228 } |
229 target.appendChild(l_default); |
229 target.appendChild(l_default); |
230 |
230 |
231 target.appendChild(document.createElement('br')); |
231 target.appendChild(document.createElement('br')); |
232 target.appendChild(document.createElement('br')); |
232 target.appendChild(document.createElement('br')); |
233 |
233 |
234 // Disable theme |
234 // Disable theme |
235 var disable_span = document.createElement('span'); |
235 var disable_span = document.createElement('span'); |
236 disable_span.appendChild(document.createTextNode($lang.get('acptm_field_disable_title') + ' ')); |
236 disable_span.appendChild(document.createTextNode($lang.get('acptm_field_disable_title') + ' ')); |
237 target.appendChild(disable_span); |
237 target.appendChild(disable_span); |
238 var l_disable = document.createElement('label'); |
238 var l_disable = document.createElement('label'); |
239 var f_disable = document.createElement('input'); |
239 var f_disable = document.createElement('input'); |
240 f_disable.type = 'checkbox'; |
240 f_disable.type = 'checkbox'; |
241 f_disable.id = 'themeed_field_disable'; |
241 f_disable.id = 'themeed_field_disable'; |
242 if ( !data.enabled ) |
242 if ( !data.enabled ) |
243 f_disable.setAttribute('checked', 'checked'); |
243 f_disable.setAttribute('checked', 'checked'); |
244 l_disable.style.fontWeight = 'bold'; |
244 l_disable.style.fontWeight = 'bold'; |
245 l_disable.appendChild(f_disable); |
245 l_disable.appendChild(f_disable); |
246 l_disable.appendChild(document.createTextNode($lang.get('acptm_field_disable'))); |
246 l_disable.appendChild(document.createTextNode($lang.get('acptm_field_disable'))); |
247 target.appendChild(l_disable); |
247 target.appendChild(l_disable); |
248 |
248 |
249 // Availability policy |
249 // Availability policy |
250 var h3 = document.createElement('h3'); |
250 var h3 = document.createElement('h3'); |
251 h3.appendChild(document.createTextNode($lang.get('acptm_heading_theme_groups'))); |
251 h3.appendChild(document.createTextNode($lang.get('acptm_heading_theme_groups'))); |
252 target.appendChild(h3); |
252 target.appendChild(h3); |
253 |
253 |
254 // Label for the whole field |
254 // Label for the whole field |
255 var p_d_policy = document.createElement('p'); |
255 var p_d_policy = document.createElement('p'); |
256 p_d_policy.style.fontWeight = 'bold'; |
256 p_d_policy.style.fontWeight = 'bold'; |
257 p_d_policy.appendChild(document.createTextNode($lang.get('acptm_field_policy'))); |
257 p_d_policy.appendChild(document.createTextNode($lang.get('acptm_field_policy'))); |
258 target.appendChild(p_d_policy); |
258 target.appendChild(p_d_policy); |
259 |
259 |
260 // Wrapper for options |
260 // Wrapper for options |
261 var p_f_policy = document.createElement('p'); |
261 var p_f_policy = document.createElement('p'); |
262 |
262 |
263 // Option: allow all |
263 // Option: allow all |
264 var l_policy_allow_all = document.createElement('label'); |
264 var l_policy_allow_all = document.createElement('label'); |
265 var f_policy_allow_all = document.createElement('input'); |
265 var f_policy_allow_all = document.createElement('input'); |
266 f_policy_allow_all.type = 'radio'; |
266 f_policy_allow_all.type = 'radio'; |
267 f_policy_allow_all.id = 'themeed_field_policy_allow_all'; |
267 f_policy_allow_all.id = 'themeed_field_policy_allow_all'; |
268 f_policy_allow_all.name = 'themeed_field_policy'; |
268 f_policy_allow_all.name = 'themeed_field_policy'; |
269 f_policy_allow_all.value = 'allow_all'; |
269 f_policy_allow_all.value = 'allow_all'; |
270 l_policy_allow_all.appendChild(f_policy_allow_all); |
270 l_policy_allow_all.appendChild(f_policy_allow_all); |
271 l_policy_allow_all.appendChild(document.createTextNode(' ' + $lang.get('acptm_field_policy_allow_all'))); |
271 l_policy_allow_all.appendChild(document.createTextNode(' ' + $lang.get('acptm_field_policy_allow_all'))); |
272 if ( data.group_policy == 'allow_all' ) |
272 if ( data.group_policy == 'allow_all' ) |
273 { |
273 { |
274 f_policy_allow_all.setAttribute('checked', 'checked'); |
274 f_policy_allow_all.setAttribute('checked', 'checked'); |
275 } |
275 } |
276 |
276 |
277 // Option: whitelist |
277 // Option: whitelist |
278 var l_policy_whitelist = document.createElement('label'); |
278 var l_policy_whitelist = document.createElement('label'); |
279 var f_policy_whitelist = document.createElement('input'); |
279 var f_policy_whitelist = document.createElement('input'); |
280 f_policy_whitelist.type = 'radio'; |
280 f_policy_whitelist.type = 'radio'; |
281 f_policy_whitelist.id = 'themeed_field_policy_whitelist'; |
281 f_policy_whitelist.id = 'themeed_field_policy_whitelist'; |
282 f_policy_whitelist.name = 'themeed_field_policy'; |
282 f_policy_whitelist.name = 'themeed_field_policy'; |
283 f_policy_whitelist.value = 'whitelist'; |
283 f_policy_whitelist.value = 'whitelist'; |
284 l_policy_whitelist.appendChild(f_policy_whitelist); |
284 l_policy_whitelist.appendChild(f_policy_whitelist); |
285 l_policy_whitelist.appendChild(document.createTextNode(' ' + $lang.get('acptm_field_policy_whitelist'))); |
285 l_policy_whitelist.appendChild(document.createTextNode(' ' + $lang.get('acptm_field_policy_whitelist'))); |
286 if ( data.group_policy == 'whitelist' ) |
286 if ( data.group_policy == 'whitelist' ) |
287 { |
287 { |
288 f_policy_whitelist.setAttribute('checked', 'checked'); |
288 f_policy_whitelist.setAttribute('checked', 'checked'); |
289 } |
289 } |
290 |
290 |
291 // Option: blacklist |
291 // Option: blacklist |
292 var l_policy_blacklist = document.createElement('label'); |
292 var l_policy_blacklist = document.createElement('label'); |
293 var f_policy_blacklist = document.createElement('input'); |
293 var f_policy_blacklist = document.createElement('input'); |
294 f_policy_blacklist.type = 'radio'; |
294 f_policy_blacklist.type = 'radio'; |
295 f_policy_blacklist.id = 'themeed_field_policy_blacklist'; |
295 f_policy_blacklist.id = 'themeed_field_policy_blacklist'; |
296 f_policy_blacklist.name = 'themeed_field_policy'; |
296 f_policy_blacklist.name = 'themeed_field_policy'; |
297 f_policy_blacklist.value = 'blacklist'; |
297 f_policy_blacklist.value = 'blacklist'; |
298 l_policy_blacklist.appendChild(f_policy_blacklist); |
298 l_policy_blacklist.appendChild(f_policy_blacklist); |
299 l_policy_blacklist.appendChild(document.createTextNode(' ' + $lang.get('acptm_field_policy_blacklist'))); |
299 l_policy_blacklist.appendChild(document.createTextNode(' ' + $lang.get('acptm_field_policy_blacklist'))); |
300 if ( data.group_policy == 'blacklist' ) |
300 if ( data.group_policy == 'blacklist' ) |
301 { |
301 { |
302 f_policy_blacklist.setAttribute('checked', 'checked'); |
302 f_policy_blacklist.setAttribute('checked', 'checked'); |
303 } |
303 } |
304 f_policy_allow_all.onclick = ajaxThemeManagerHandlePolicyClick; |
304 f_policy_allow_all.onclick = ajaxThemeManagerHandlePolicyClick; |
305 f_policy_whitelist.onclick = ajaxThemeManagerHandlePolicyClick; |
305 f_policy_whitelist.onclick = ajaxThemeManagerHandlePolicyClick; |
306 f_policy_blacklist.onclick = ajaxThemeManagerHandlePolicyClick; |
306 f_policy_blacklist.onclick = ajaxThemeManagerHandlePolicyClick; |
307 |
307 |
308 p_f_policy.appendChild(l_policy_allow_all); |
308 p_f_policy.appendChild(l_policy_allow_all); |
309 p_f_policy.appendChild(document.createElement('br')); |
309 p_f_policy.appendChild(document.createElement('br')); |
310 p_f_policy.appendChild(l_policy_whitelist); |
310 p_f_policy.appendChild(l_policy_whitelist); |
311 p_f_policy.appendChild(document.createElement('br')); |
311 p_f_policy.appendChild(document.createElement('br')); |
312 p_f_policy.appendChild(l_policy_blacklist); |
312 p_f_policy.appendChild(l_policy_blacklist); |
313 |
313 |
314 target.appendChild(p_d_policy); |
314 target.appendChild(p_d_policy); |
315 target.appendChild(p_f_policy); |
315 target.appendChild(p_f_policy); |
316 |
316 |
317 var div_acl = document.createElement('div'); |
317 var div_acl = document.createElement('div'); |
318 div_acl.id = 'themeed_acl_box'; |
318 div_acl.id = 'themeed_acl_box'; |
319 div_acl.style.margin = '0 0 10px 30px'; |
319 div_acl.style.margin = '0 0 10px 30px'; |
320 |
320 |
321 var h3_g = document.createElement('h3'); |
321 var h3_g = document.createElement('h3'); |
322 h3_g.appendChild(document.createTextNode($lang.get('acptm_field_acl_heading_groups'))); |
322 h3_g.appendChild(document.createTextNode($lang.get('acptm_field_acl_heading_groups'))); |
323 div_acl.appendChild(h3_g); |
323 div_acl.appendChild(h3_g); |
324 |
324 |
325 var div_groups = document.createElement('div'); |
325 var div_groups = document.createElement('div'); |
326 div_groups.style.border = '1px solid #E8E8E8'; |
326 div_groups.style.border = '1px solid #E8E8E8'; |
327 div_groups.id = 'themeed_group_list'; |
327 div_groups.id = 'themeed_group_list'; |
328 |
328 |
329 // Group list |
329 // Group list |
330 for ( var i in data.group_names ) |
330 for ( var i in data.group_names ) |
331 { |
331 { |
332 var g_name = data.group_names[i]; |
332 var g_name = data.group_names[i]; |
333 var check = document.createElement('input'); |
333 var check = document.createElement('input'); |
334 check.type = 'checkbox'; |
334 check.type = 'checkbox'; |
335 if ( in_array("g:" + i, data.group_list) ) |
335 if ( in_array("g:" + i, data.group_list) ) |
336 { |
336 { |
337 check.setAttribute('checked', 'checked'); |
337 check.setAttribute('checked', 'checked'); |
338 } |
338 } |
339 check.group_id = parseInt(i); |
339 check.group_id = parseInt(i); |
340 var lbl_g_acl = document.createElement('label'); |
340 var lbl_g_acl = document.createElement('label'); |
341 lbl_g_acl.appendChild(check); |
341 lbl_g_acl.appendChild(check); |
342 var str = 'groupcp_grp_' + g_name.toLowerCase(); |
342 var str = 'groupcp_grp_' + g_name.toLowerCase(); |
343 var g_name_l10n = ( $lang.get(str) != str ) ? $lang.get(str) : g_name; |
343 var g_name_l10n = ( $lang.get(str) != str ) ? $lang.get(str) : g_name; |
344 lbl_g_acl.appendChild(document.createTextNode(g_name_l10n)); |
344 lbl_g_acl.appendChild(document.createTextNode(g_name_l10n)); |
345 div_groups.appendChild(lbl_g_acl); |
345 div_groups.appendChild(lbl_g_acl); |
346 div_groups.appendChild(document.createElement('br')); |
346 div_groups.appendChild(document.createElement('br')); |
347 } |
347 } |
348 div_acl.appendChild(div_groups); |
348 div_acl.appendChild(div_groups); |
349 |
349 |
350 var h3_u = document.createElement('h3'); |
350 var h3_u = document.createElement('h3'); |
351 h3_u.appendChild(document.createTextNode($lang.get('acptm_field_acl_heading_users'))); |
351 h3_u.appendChild(document.createTextNode($lang.get('acptm_field_acl_heading_users'))); |
352 div_acl.appendChild(h3_u); |
352 div_acl.appendChild(h3_u); |
353 |
353 |
354 // User addition field |
354 // User addition field |
355 var frm = document.createElement('form'); |
355 var frm = document.createElement('form'); |
356 frm.action = 'javascript:ajaxThemeManagerHandleUserAdd();'; |
356 frm.action = 'javascript:ajaxThemeManagerHandleUserAdd();'; |
357 frm.appendChild(document.createTextNode($lang.get('acptm_field_acl_add_user'))); |
357 frm.appendChild(document.createTextNode($lang.get('acptm_field_acl_add_user'))); |
358 var f_useradd = document.createElement('input'); |
358 var f_useradd = document.createElement('input'); |
359 f_useradd.type = 'text'; |
359 f_useradd.type = 'text'; |
360 f_useradd.id = 'themeed_field_adduser'; |
360 f_useradd.id = 'themeed_field_adduser'; |
361 f_useradd.onkeyup = function(e) |
361 f_useradd.onkeyup = function(e) |
362 { |
362 { |
363 new AutofillUsername(this, e, false); |
363 new AutofillUsername(this, e, false); |
364 } |
364 } |
365 |
365 |
366 frm.appendChild(f_useradd); |
366 frm.appendChild(f_useradd); |
367 div_acl.appendChild(frm); |
367 div_acl.appendChild(frm); |
368 |
368 |
369 div_acl.appendChild(document.createElement('br')); |
369 div_acl.appendChild(document.createElement('br')); |
370 |
370 |
371 // User list |
371 // User list |
372 var div_users = document.createElement('div'); |
372 var div_users = document.createElement('div'); |
373 div_users.style.border = '1px solid #E8E8E8'; |
373 div_users.style.border = '1px solid #E8E8E8'; |
374 div_users.style.padding = '4px'; |
374 div_users.style.padding = '4px'; |
375 div_users.id = 'themeed_user_list'; |
375 div_users.id = 'themeed_user_list'; |
376 for ( var i = 0; i < data.group_list.length; i++ ) |
376 for ( var i = 0; i < data.group_list.length; i++ ) |
377 { |
377 { |
378 var id = data.group_list[i]; |
378 var id = data.group_list[i]; |
379 if ( id.substr(0, 2) != 'u:' ) |
379 if ( id.substr(0, 2) != 'u:' ) |
380 continue; |
380 continue; |
381 var uid = id.substr(2); |
381 var uid = id.substr(2); |
382 var username = data.usernames[uid]; |
382 var username = data.usernames[uid]; |
383 |
383 |
384 var useritem = document.createElement('span'); |
384 var useritem = document.createElement('span'); |
385 useritem.appendChild(document.createTextNode(username + ' ')); |
385 useritem.appendChild(document.createTextNode(username + ' ')); |
386 useritem.userid = parseInt(uid); |
386 useritem.userid = parseInt(uid); |
387 var deleter = document.createElement('a'); |
387 var deleter = document.createElement('a'); |
388 deleter.href = '#'; |
388 deleter.href = '#'; |
389 deleter.onclick = function() |
389 deleter.onclick = function() |
390 { |
390 { |
391 ajaxThemeManagerHandleUserRemoval(this); |
391 ajaxThemeManagerHandleUserRemoval(this); |
392 return false; |
392 return false; |
393 } |
393 } |
394 deleter.appendChild(document.createTextNode('[X]')); |
394 deleter.appendChild(document.createTextNode('[X]')); |
395 useritem.appendChild(deleter); |
395 useritem.appendChild(deleter); |
396 div_users.appendChild(useritem); |
396 div_users.appendChild(useritem); |
397 div_users.appendChild(document.createElement('br')); |
397 div_users.appendChild(document.createElement('br')); |
398 } |
398 } |
399 div_acl.appendChild(div_users); |
399 div_acl.appendChild(div_users); |
400 |
400 |
401 target.appendChild(div_acl); |
401 target.appendChild(div_acl); |
402 |
402 |
403 ajaxThemeManagerHandlePolicyClick(); |
403 ajaxThemeManagerHandlePolicyClick(); |
404 |
404 |
405 var clearer = document.createElement('span'); |
405 var clearer = document.createElement('span'); |
406 clearer.className = 'menuclear'; |
406 clearer.className = 'menuclear'; |
407 target.appendChild(clearer); |
407 target.appendChild(clearer); |
408 |
408 |
409 // Theme ID |
409 // Theme ID |
410 var tid = document.createElement('input'); |
410 var tid = document.createElement('input'); |
411 tid.type = 'hidden'; |
411 tid.type = 'hidden'; |
412 tid.id = 'themeed_theme_id'; |
412 tid.id = 'themeed_theme_id'; |
413 tid.value = data.theme_id; |
413 tid.value = data.theme_id; |
414 target.appendChild(tid); |
414 target.appendChild(tid); |
415 |
415 |
416 // Save button |
416 // Save button |
417 var raquo = unescape('%BB'); |
417 var raquo = unescape('%BB'); |
418 var savebtn = document.createElement('input'); |
418 var savebtn = document.createElement('input'); |
419 savebtn.type = 'button'; |
419 savebtn.type = 'button'; |
420 savebtn.style.fontWeight = 'bold'; |
420 savebtn.style.fontWeight = 'bold'; |
421 savebtn.value = $lang.get('etc_save_changes') + ' ' + raquo; |
421 savebtn.value = $lang.get('etc_save_changes') + ' ' + raquo; |
422 savebtn.onclick = function() |
422 savebtn.onclick = function() |
423 { |
423 { |
424 ajaxThemeManagerHandleSaveRequest(); |
424 ajaxThemeManagerHandleSaveRequest(); |
425 } |
425 } |
426 target.appendChild(savebtn); |
426 target.appendChild(savebtn); |
427 |
427 |
428 target.appendChild(document.createTextNode(' ')); |
428 target.appendChild(document.createTextNode(' ')); |
429 |
429 |
430 // Cancel button |
430 // Cancel button |
431 var savebtn = document.createElement('input'); |
431 var savebtn = document.createElement('input'); |
432 savebtn.type = 'button'; |
432 savebtn.type = 'button'; |
433 savebtn.value = $lang.get('etc_cancel'); |
433 savebtn.value = $lang.get('etc_cancel'); |
434 savebtn.onclick = function() |
434 savebtn.onclick = function() |
435 { |
435 { |
436 ajaxPage(namespace_list['Admin'] + 'ThemeManager'); |
436 ajaxPage(namespace_list['Admin'] + 'ThemeManager'); |
437 } |
437 } |
438 target.appendChild(savebtn); |
438 target.appendChild(savebtn); |
439 |
439 |
440 target.appendChild(document.createTextNode(' ')); |
440 target.appendChild(document.createTextNode(' ')); |
441 |
441 |
442 // Uninstall button |
442 // Uninstall button |
443 var savebtn = document.createElement('input'); |
443 var savebtn = document.createElement('input'); |
444 savebtn.type = 'button'; |
444 savebtn.type = 'button'; |
445 savebtn.value = $lang.get('acptm_btn_uninstall_theme'); |
445 savebtn.value = $lang.get('acptm_btn_uninstall_theme'); |
446 savebtn.style.color = '#D84308'; |
446 savebtn.style.color = '#D84308'; |
447 savebtn.onclick = function() |
447 savebtn.onclick = function() |
448 { |
448 { |
449 if ( !confirm($lang.get('acptm_msg_uninstall_confirm')) ) |
449 if ( !confirm($lang.get('acptm_msg_uninstall_confirm')) ) |
450 return false; |
450 return false; |
451 ajaxThemeManagerHandleUninstallClick(); |
451 ajaxThemeManagerHandleUninstallClick(); |
452 } |
452 } |
453 target.appendChild(savebtn); |
453 target.appendChild(savebtn); |
454 |
454 |
455 // Fade it all in |
455 // Fade it all in |
456 domOpacity(target, 0, 100, 500); |
456 domOpacity(target, 0, 100, 500); |
457 f_name.focus(); |
457 f_name.focus(); |
458 } |
458 } |
459 |
459 |
460 function ajaxThemeManagerHandlePolicyClick() |
460 function ajaxThemeManagerHandlePolicyClick() |
461 { |
461 { |
462 if ( document.getElementById('themeed_field_policy_allow_all').checked ) |
462 if ( document.getElementById('themeed_field_policy_allow_all').checked ) |
463 { |
463 { |
464 document.getElementById('themeed_acl_box').style.display = 'none'; |
464 document.getElementById('themeed_acl_box').style.display = 'none'; |
465 } |
465 } |
466 else if ( document.getElementById('themeed_field_policy_whitelist').checked || document.getElementById('themeed_field_policy_blacklist').checked ) |
466 else if ( document.getElementById('themeed_field_policy_whitelist').checked || document.getElementById('themeed_field_policy_blacklist').checked ) |
467 { |
467 { |
468 document.getElementById('themeed_acl_box').style.display = 'block'; |
468 document.getElementById('themeed_acl_box').style.display = 'block'; |
469 } |
469 } |
470 } |
470 } |
471 |
471 |
472 function ajaxThemeManagerHandleUserAdd() |
472 function ajaxThemeManagerHandleUserAdd() |
473 { |
473 { |
474 var f_useradd = document.getElementById('themeed_field_adduser'); |
474 var f_useradd = document.getElementById('themeed_field_adduser'); |
475 f_useradd.setAttribute('disabled', 'disabled'); |
475 f_useradd.setAttribute('disabled', 'disabled'); |
476 var parent = f_useradd.parentNode; |
476 var parent = f_useradd.parentNode; |
477 var img = document.createElement('img'); |
477 var img = document.createElement('img'); |
478 img.src = ajax_load_icon; |
478 img.src = ajax_load_icon; |
479 img.id = 'themeed_useradd_status'; |
479 img.id = 'themeed_useradd_status'; |
480 img.style.marginLeft = '10px'; |
480 img.style.marginLeft = '10px'; |
481 insertAfter(parent, img, f_useradd); |
481 insertAfter(parent, img, f_useradd); |
482 |
482 |
483 var req = toJSONString({ |
483 var req = toJSONString({ |
484 mode: 'uid_lookup', |
484 mode: 'uid_lookup', |
485 username: f_useradd.value |
485 username: f_useradd.value |
486 }); |
486 }); |
487 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + ajaxEscape(req), function(ajax) |
487 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + ajaxEscape(req), function(ajax) |
488 { |
488 { |
489 if ( ajax.readyState == 4 && ajax.status == 200 ) |
489 if ( ajax.readyState == 4 && ajax.status == 200 ) |
490 { |
490 { |
491 var img = document.getElementById('themeed_useradd_status'); |
491 var img = document.getElementById('themeed_useradd_status'); |
492 var f_useradd = document.getElementById('themeed_field_adduser'); |
492 var f_useradd = document.getElementById('themeed_field_adduser'); |
493 |
493 |
494 f_useradd.disabled = null; |
494 f_useradd.disabled = null; |
495 img.parentNode.removeChild(img); |
495 img.parentNode.removeChild(img); |
496 |
496 |
497 // process response |
497 // process response |
498 var response = String(ajax.responseText + ''); |
498 var response = String(ajax.responseText + ''); |
499 if ( !check_json_response(response) ) |
499 if ( !check_json_response(response) ) |
500 { |
500 { |
501 alert(response); |
501 alert(response); |
502 return false; |
502 return false; |
503 } |
503 } |
504 response = parseJSON(response); |
504 response = parseJSON(response); |
505 if ( response.mode == 'error' ) |
505 if ( response.mode == 'error' ) |
506 { |
506 { |
507 alert(response.error); |
507 alert(response.error); |
508 return false; |
508 return false; |
509 } |
509 } |
510 |
510 |
511 var uid = parseInt(response.uid); |
511 var uid = parseInt(response.uid); |
512 var username = response.username; |
512 var username = response.username; |
513 |
513 |
514 // Loop through the list of users and remove any existing ones with the same uid |
514 // Loop through the list of users and remove any existing ones with the same uid |
515 var div_users = document.getElementById('themeed_user_list'); |
515 var div_users = document.getElementById('themeed_user_list'); |
516 var children = div_users.getElementsByTagName('span'); |
516 var children = div_users.getElementsByTagName('span'); |
517 for ( var i = 0; i < children.length; i++ ) |
517 for ( var i = 0; i < children.length; i++ ) |
518 { |
518 { |
519 var child = children[i]; |
519 var child = children[i]; |
520 if ( child.userid == uid ) |
520 if ( child.userid == uid ) |
521 { |
521 { |
522 // the sister is the br element next to the span with the checkbox/text |
522 // the sister is the br element next to the span with the checkbox/text |
523 var sister = child.nextSibling; |
523 var sister = child.nextSibling; |
524 div_users.removeChild(child); |
524 div_users.removeChild(child); |
525 div_users.removeChild(sister); |
525 div_users.removeChild(sister); |
526 break; |
526 break; |
527 } |
527 } |
528 } |
528 } |
529 |
529 |
530 var useritem = document.createElement('span'); |
530 var useritem = document.createElement('span'); |
531 useritem.appendChild(document.createTextNode(username + ' ')); |
531 useritem.appendChild(document.createTextNode(username + ' ')); |
532 useritem.userid = parseInt(uid); |
532 useritem.userid = parseInt(uid); |
533 var deleter = document.createElement('a'); |
533 var deleter = document.createElement('a'); |
534 deleter.href = '#'; |
534 deleter.href = '#'; |
535 deleter.onclick = function() |
535 deleter.onclick = function() |
536 { |
536 { |
537 ajaxThemeManagerHandleUserRemoval(this); |
537 ajaxThemeManagerHandleUserRemoval(this); |
538 return false; |
538 return false; |
539 } |
539 } |
540 deleter.appendChild(document.createTextNode('[X]')); |
540 deleter.appendChild(document.createTextNode('[X]')); |
541 useritem.appendChild(deleter); |
541 useritem.appendChild(deleter); |
542 div_users.appendChild(useritem); |
542 div_users.appendChild(useritem); |
543 div_users.appendChild(document.createElement('br')); |
543 div_users.appendChild(document.createElement('br')); |
544 } |
544 } |
545 }); |
545 }); |
546 } |
546 } |
547 |
547 |
548 function ajaxThemeManagerHandleUserRemoval(el) |
548 function ajaxThemeManagerHandleUserRemoval(el) |
549 { |
549 { |
550 var parent = el.parentNode; |
550 var parent = el.parentNode; |
551 var uid = parent.userid; |
551 var uid = parent.userid; |
552 |
552 |
553 var grandparent = parent.parentNode; |
553 var grandparent = parent.parentNode; |
554 var sister = parent.nextSibling; |
554 var sister = parent.nextSibling; |
555 grandparent.removeChild(parent); |
555 grandparent.removeChild(parent); |
556 grandparent.removeChild(sister); |
556 grandparent.removeChild(sister); |
557 } |
557 } |
558 |
558 |
559 function ajaxThemeManagerHandleSaveRequest() |
559 function ajaxThemeManagerHandleSaveRequest() |
560 { |
560 { |
561 // Build a JSON condensed request |
561 // Build a JSON condensed request |
562 var md = false; |
562 var md = false; |
563 if ( document.getElementById('themeed_field_default') ) |
563 if ( document.getElementById('themeed_field_default') ) |
564 { |
564 { |
565 if ( document.getElementById('themeed_field_default').checked ) |
565 if ( document.getElementById('themeed_field_default').checked ) |
566 { |
566 { |
567 md = true; |
567 md = true; |
568 } |
568 } |
569 } |
569 } |
570 var policy = 'allow_all'; |
570 var policy = 'allow_all'; |
571 if ( document.getElementById('themeed_field_policy_whitelist').checked ) |
571 if ( document.getElementById('themeed_field_policy_whitelist').checked ) |
572 policy = 'whitelist'; |
572 policy = 'whitelist'; |
573 else if ( document.getElementById('themeed_field_policy_blacklist').checked ) |
573 else if ( document.getElementById('themeed_field_policy_blacklist').checked ) |
574 policy = 'blacklist'; |
574 policy = 'blacklist'; |
575 var json_packet = { |
575 var json_packet = { |
576 theme_id: document.getElementById('themeed_theme_id').value, |
576 theme_id: document.getElementById('themeed_theme_id').value, |
577 theme_name: document.getElementById('themeed_field_name').value, |
577 theme_name: document.getElementById('themeed_field_name').value, |
578 default_style: document.getElementById('themeed_field_style').value, |
578 default_style: document.getElementById('themeed_field_style').value, |
579 make_default: md, |
579 make_default: md, |
580 group_policy: policy, |
580 group_policy: policy, |
581 enabled: ( document.getElementById('themeed_field_disable').checked ? false : true ) |
581 enabled: ( document.getElementById('themeed_field_disable').checked ? false : true ) |
582 }; |
582 }; |
583 var acl_list = []; |
583 var acl_list = []; |
584 var checks = document.getElementById('themeed_group_list').getElementsByTagName('input'); |
584 var checks = document.getElementById('themeed_group_list').getElementsByTagName('input'); |
585 for ( var i = 0; i < checks.length; i++ ) |
585 for ( var i = 0; i < checks.length; i++ ) |
586 { |
586 { |
587 if ( checks[i].checked ) |
587 if ( checks[i].checked ) |
588 acl_list.push('g:' + checks[i].group_id); |
588 acl_list.push('g:' + checks[i].group_id); |
589 } |
589 } |
590 var spans = document.getElementById('themeed_user_list').getElementsByTagName('span'); |
590 var spans = document.getElementById('themeed_user_list').getElementsByTagName('span'); |
591 for ( var i = 0; i < spans.length; i++ ) |
591 for ( var i = 0; i < spans.length; i++ ) |
592 { |
592 { |
593 if ( spans[i].userid ) |
593 if ( spans[i].userid ) |
594 acl_list.push('u:' + spans[i].userid); |
594 acl_list.push('u:' + spans[i].userid); |
595 } |
595 } |
596 json_packet.group_list = acl_list; |
596 json_packet.group_list = acl_list; |
597 |
597 |
598 var json_send = { |
598 var json_send = { |
599 mode: 'save_theme', |
599 mode: 'save_theme', |
600 theme_data: json_packet |
600 theme_data: json_packet |
601 }; |
601 }; |
602 |
602 |
603 json_send = ajaxEscape(toJSONString(json_send)); |
603 json_send = ajaxEscape(toJSONString(json_send)); |
604 |
604 |
605 // Request the save |
605 // Request the save |
606 var parent = document.getElementById('ajaxPageContainer'); |
606 var parent = document.getElementById('ajaxPageContainer'); |
607 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + json_send, function(ajax) |
607 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + json_send, function(ajax) |
608 { |
608 { |
609 if ( ajax.readyState == 4 && ajax.status == 200 ) |
609 if ( ajax.readyState == 4 && ajax.status == 200 ) |
610 { |
610 { |
611 // process response |
611 // process response |
612 var response = String(ajax.responseText + ''); |
612 var response = String(ajax.responseText + ''); |
613 if ( !check_json_response(response) ) |
613 if ( !check_json_response(response) ) |
614 { |
614 { |
615 // For this we actually *expect* an HTML response. |
615 // For this we actually *expect* an HTML response. |
616 parent.innerHTML = response; |
616 parent.innerHTML = response; |
617 return false; |
617 return false; |
618 } |
618 } |
619 response = parseJSON(response); |
619 response = parseJSON(response); |
620 if ( response.mode == 'error' ) |
620 if ( response.mode == 'error' ) |
621 { |
621 { |
622 alert(response.error); |
622 alert(response.error); |
623 return false; |
623 return false; |
624 } |
624 } |
625 } |
625 } |
626 }); |
626 }); |
627 } |
627 } |
628 |
628 |
629 function ajaxThemeManagerHandleUninstallClick() |
629 function ajaxThemeManagerHandleUninstallClick() |
630 { |
630 { |
631 var theme_id = document.getElementById('themeed_theme_id').value; |
631 var theme_id = document.getElementById('themeed_theme_id').value; |
632 var json_send = { |
632 var json_send = { |
633 mode: 'uninstall', |
633 mode: 'uninstall', |
634 theme_id: theme_id |
634 theme_id: theme_id |
635 }; |
635 }; |
636 |
636 |
637 json_send = ajaxEscape(toJSONString(json_send)); |
637 json_send = ajaxEscape(toJSONString(json_send)); |
638 |
638 |
639 // Request the action |
639 // Request the action |
640 var parent = document.getElementById('ajaxPageContainer'); |
640 var parent = document.getElementById('ajaxPageContainer'); |
641 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + json_send, function(ajax) |
641 ajaxPost(makeUrlNS('Admin', 'ThemeManager/action.json'), 'r=' + json_send, function(ajax) |
642 { |
642 { |
643 if ( ajax.readyState == 4 && ajax.status == 200 ) |
643 if ( ajax.readyState == 4 && ajax.status == 200 ) |
644 { |
644 { |
645 // process response |
645 // process response |
646 var response = String(ajax.responseText + ''); |
646 var response = String(ajax.responseText + ''); |
647 if ( !check_json_response(response) ) |
647 if ( !check_json_response(response) ) |
648 { |
648 { |
649 // For this we actually *expect* an HTML response. |
649 // For this we actually *expect* an HTML response. |
650 parent.innerHTML = response; |
650 parent.innerHTML = response; |
651 return false; |
651 return false; |
652 } |
652 } |
653 response = parseJSON(response); |
653 response = parseJSON(response); |
654 if ( response.mode == 'error' ) |
654 if ( response.mode == 'error' ) |
655 { |
655 { |
656 alert(response.error); |
656 alert(response.error); |
657 return false; |
657 return false; |
658 } |
658 } |
659 } |
659 } |
660 }); |
660 }); |
661 } |
661 } |