]>
Commit | Line | Data |
---|---|---|
a7565293 AD |
1 | var init_params = new Array(); |
2 | ||
746dcf42 | 3 | var hotkey_prefix = false; |
78935092 | 4 | var hotkey_prefix_pressed = false; |
7a09510c | 5 | |
a998dbef AD |
6 | var seq = ""; |
7 | ||
66665fba AD |
8 | function notify_callback2(transport, sticky) { |
9 | notify_info(transport.responseText, sticky); | |
60715b53 AD |
10 | } |
11 | ||
b83c7545 | 12 | function updateFeedList(sort_key) { |
16270276 AD |
13 | |
14 | var user_search = $("feed_search"); | |
15 | var search = ""; | |
16 | if (user_search) { search = user_search.value; } | |
17 | ||
b4e75b2a | 18 | new Ajax.Request("backend.php", { |
16270276 | 19 | parameters: "?op=pref-feeds&search=" + param_escape(search), |
fb5662de | 20 | onComplete: function(transport) { |
cbe50c80 AD |
21 | dijit.byId('feedConfigTab').attr('content', transport.responseText); |
22 | selectTab("feedConfig", true); | |
23 | notify(""); | |
60715b53 | 24 | } }); |
007bda35 AD |
25 | } |
26 | ||
f9c1f8b0 | 27 | function checkInactiveFeeds() { |
1bfe1d7b AD |
28 | new Ajax.Request("backend.php", { |
29 | parameters: "?op=pref-feeds&method=getinactivefeeds", | |
30 | onComplete: function (transport) { | |
31 | if (parseInt(transport.responseText) > 0) { | |
32 | Element.show(dijit.byId("pref_feeds_inactive_btn").domNode); | |
33 | } | |
34 | } | |
35 | }); | |
f9c1f8b0 | 36 | } |
373266eb | 37 | |
79ec0f2f | 38 | function updateUsersList(sort_key) { |
1bfe1d7b AD |
39 | var user_search = $("user_search"); |
40 | var search = ""; | |
41 | if (user_search) { | |
42 | search = user_search.value; | |
43 | } | |
fb5662de | 44 | |
1bfe1d7b AD |
45 | var query = "?op=pref-users&sort=" |
46 | + param_escape(sort_key) + | |
47 | "&search=" + param_escape(search); | |
e6cb77a0 | 48 | |
1bfe1d7b AD |
49 | new Ajax.Request("backend.php", { |
50 | parameters: query, | |
51 | onComplete: function (transport) { | |
52 | dijit.byId('userConfigTab').attr('content', transport.responseText); | |
53 | selectTab("userConfig", true) | |
54 | notify(""); | |
55 | } | |
56 | }); | |
e6cb77a0 AD |
57 | } |
58 | ||
e6cb77a0 | 59 | function addUser() { |
1bfe1d7b | 60 | var login = prompt(__("Please enter login:"), ""); |
e6cb77a0 | 61 | |
1bfe1d7b AD |
62 | if (login == null) { |
63 | return false; | |
64 | } | |
fb5662de | 65 | |
1bfe1d7b AD |
66 | if (login == "") { |
67 | alert(__("Can't create user: no login specified.")); | |
68 | return false; | |
69 | } | |
fb5662de | 70 | |
1bfe1d7b | 71 | notify_progress("Adding user..."); |
fb5662de | 72 | |
1bfe1d7b AD |
73 | var query = "?op=pref-users&method=add&login=" + |
74 | param_escape(login); | |
fb5662de | 75 | |
1bfe1d7b AD |
76 | new Ajax.Request("backend.php", { |
77 | parameters: query, | |
78 | onComplete: function (transport) { | |
79 | notify_callback2(transport); | |
80 | updateUsersList(); | |
81 | } | |
82 | }); | |
e6cb77a0 | 83 | |
e6cb77a0 AD |
84 | } |
85 | ||
a998dbef | 86 | function editUser(id, event) { |
e6cb77a0 | 87 | |
1bfe1d7b AD |
88 | var query = "backend.php?op=pref-users&method=edit&id=" + |
89 | param_escape(id); | |
222a61c2 | 90 | |
1bfe1d7b AD |
91 | if (dijit.byId("userEditDlg")) |
92 | dijit.byId("userEditDlg").destroyRecursive(); | |
222a61c2 | 93 | |
1bfe1d7b AD |
94 | dialog = new dijit.Dialog({ |
95 | id: "userEditDlg", | |
96 | title: __("User Editor"), | |
97 | style: "width: 600px", | |
98 | execute: function () { | |
99 | if (this.validate()) { | |
100 | notify_progress("Saving data...", true); | |
222a61c2 | 101 | |
1bfe1d7b | 102 | var query = dojo.formToQuery("user_edit_form"); |
e6cb77a0 | 103 | |
1bfe1d7b AD |
104 | new Ajax.Request("backend.php", { |
105 | parameters: query, | |
106 | onComplete: function (transport) { | |
107 | dialog.hide(); | |
108 | updateUsersList(); | |
109 | } | |
110 | }); | |
111 | } | |
112 | }, | |
113 | href: query | |
114 | }); | |
fb5662de | 115 | |
1bfe1d7b | 116 | dialog.show(); |
e6cb77a0 AD |
117 | } |
118 | ||
261226a3 | 119 | function editFilter(id) { |
261226a3 | 120 | |
1bfe1d7b | 121 | var query = "backend.php?op=pref-filters&method=edit&id=" + param_escape(id); |
261226a3 | 122 | |
1bfe1d7b AD |
123 | if (dijit.byId("feedEditDlg")) |
124 | dijit.byId("feedEditDlg").destroyRecursive(); | |
261226a3 | 125 | |
1bfe1d7b AD |
126 | if (dijit.byId("filterEditDlg")) |
127 | dijit.byId("filterEditDlg").destroyRecursive(); | |
ec630524 | 128 | |
1bfe1d7b AD |
129 | dialog = new dijit.Dialog({ |
130 | id: "filterEditDlg", | |
131 | title: __("Edit Filter"), | |
132 | style: "width: 600px", | |
ec630524 | 133 | |
1bfe1d7b AD |
134 | test: function () { |
135 | var query = "backend.php?" + dojo.formToQuery("filter_edit_form") + "&savemode=test"; | |
fb5662de | 136 | |
1bfe1d7b AD |
137 | editFilterTest(query); |
138 | }, | |
139 | selectRules: function (select) { | |
140 | $$("#filterDlg_Matches input[type=checkbox]").each(function (e) { | |
141 | e.checked = select; | |
142 | if (select) | |
143 | e.parentNode.addClassName("Selected"); | |
144 | else | |
145 | e.parentNode.removeClassName("Selected"); | |
146 | }); | |
147 | }, | |
148 | selectActions: function (select) { | |
149 | $$("#filterDlg_Actions input[type=checkbox]").each(function (e) { | |
150 | e.checked = select; | |
90e4e726 | 151 | |
1bfe1d7b AD |
152 | if (select) |
153 | e.parentNode.addClassName("Selected"); | |
154 | else | |
155 | e.parentNode.removeClassName("Selected"); | |
fb5662de | 156 | |
1bfe1d7b AD |
157 | }); |
158 | }, | |
159 | editRule: function (e) { | |
160 | var li = e.parentNode; | |
161 | var rule = li.getElementsByTagName("INPUT")[1].value; | |
162 | addFilterRule(li, rule); | |
163 | }, | |
164 | editAction: function (e) { | |
165 | var li = e.parentNode; | |
166 | var action = li.getElementsByTagName("INPUT")[1].value; | |
167 | addFilterAction(li, action); | |
168 | }, | |
169 | removeFilter: function () { | |
170 | var msg = __("Remove filter?"); | |
171 | ||
172 | if (confirm(msg)) { | |
173 | this.hide(); | |
90e4e726 | 174 | |
1bfe1d7b | 175 | notify_progress("Removing filter..."); |
90e4e726 | 176 | |
1bfe1d7b | 177 | var id = this.attr('value').id; |
141fb6e3 | 178 | |
1bfe1d7b AD |
179 | var query = "?op=pref-filters&method=remove&ids=" + |
180 | param_escape(id); | |
141fb6e3 | 181 | |
1bfe1d7b AD |
182 | new Ajax.Request("backend.php", { |
183 | parameters: query, | |
184 | onComplete: function (transport) { | |
185 | updateFilterList(); | |
186 | } | |
187 | }); | |
188 | } | |
189 | }, | |
190 | addAction: function () { | |
191 | addFilterAction(); | |
192 | }, | |
193 | addRule: function () { | |
194 | addFilterRule(); | |
195 | }, | |
196 | deleteAction: function () { | |
197 | $$("#filterDlg_Actions li[class*=Selected]").each(function (e) { | |
198 | e.parentNode.removeChild(e) | |
199 | }); | |
200 | }, | |
201 | deleteRule: function () { | |
202 | $$("#filterDlg_Matches li[class*=Selected]").each(function (e) { | |
203 | e.parentNode.removeChild(e) | |
204 | }); | |
205 | }, | |
206 | execute: function () { | |
207 | if (this.validate()) { | |
141fb6e3 | 208 | |
1bfe1d7b | 209 | notify_progress("Saving data...", true); |
6aff7845 | 210 | |
1bfe1d7b | 211 | var query = dojo.formToQuery("filter_edit_form"); |
d90868d7 | 212 | |
1bfe1d7b | 213 | console.log(query); |
a998dbef | 214 | |
1bfe1d7b AD |
215 | new Ajax.Request("backend.php", { |
216 | parameters: query, | |
217 | onComplete: function (transport) { | |
218 | dialog.hide(); | |
219 | updateFilterList(); | |
220 | } | |
221 | }); | |
222 | } | |
223 | }, | |
224 | href: query | |
225 | }); | |
a0d53889 | 226 | |
1bfe1d7b | 227 | dialog.show(); |
a0d53889 AD |
228 | } |
229 | ||
1bfe1d7b | 230 | |
91ff844a | 231 | function getSelectedLabels() { |
fb8b2153 AD |
232 | var tree = dijit.byId("labelTree"); |
233 | var items = tree.model.getCheckedItems(); | |
234 | var rv = []; | |
235 | ||
236 | items.each(function(item) { | |
237 | rv.push(tree.model.store.getValue(item, 'bare_id')); | |
238 | }); | |
239 | ||
240 | return rv; | |
91ff844a | 241 | } |
48f0adb0 | 242 | |
91ff844a | 243 | function getSelectedUsers() { |
e69fb880 | 244 | return getSelectedTableRowIds("prefUserList"); |
a0d53889 AD |
245 | } |
246 | ||
83fe4d6d | 247 | function getSelectedFeeds() { |
1985a5e0 AD |
248 | var tree = dijit.byId("feedTree"); |
249 | var items = tree.model.getCheckedItems(); | |
250 | var rv = []; | |
251 | ||
252 | items.each(function(item) { | |
7c227bb3 AD |
253 | if (item.id[0].match("FEED:")) |
254 | rv.push(tree.model.store.getValue(item, 'bare_id')); | |
1985a5e0 AD |
255 | }); |
256 | ||
257 | return rv; | |
91ff844a | 258 | } |
331900c6 | 259 | |
fd26d5bf AD |
260 | function getSelectedCategories() { |
261 | var tree = dijit.byId("feedTree"); | |
262 | var items = tree.model.getCheckedItems(); | |
263 | var rv = []; | |
264 | ||
265 | items.each(function(item) { | |
266 | if (item.id[0].match("CAT:")) | |
267 | rv.push(tree.model.store.getValue(item, 'bare_id')); | |
268 | }); | |
269 | ||
270 | return rv; | |
271 | } | |
272 | ||
91ff844a | 273 | function getSelectedFilters() { |
a740f4b5 AD |
274 | var tree = dijit.byId("filterTree"); |
275 | var items = tree.model.getCheckedItems(); | |
276 | var rv = []; | |
277 | ||
278 | items.each(function(item) { | |
279 | rv.push(tree.model.store.getValue(item, 'bare_id')); | |
280 | }); | |
281 | ||
282 | return rv; | |
283 | ||
91ff844a | 284 | } |
331900c6 | 285 | |
48f0adb0 AD |
286 | function removeSelectedLabels() { |
287 | ||
48f0adb0 AD |
288 | var sel_rows = getSelectedLabels(); |
289 | ||
290 | if (sel_rows.length > 0) { | |
291 | ||
f56e3080 | 292 | var ok = confirm(__("Remove selected labels?")); |
48f0adb0 | 293 | |
69668465 | 294 | if (ok) { |
42c32916 | 295 | notify_progress("Removing selected labels..."); |
fb5662de | 296 | |
f30ef1fa | 297 | var query = "?op=pref-labels&method=remove&ids="+ |
a796bfc1 AD |
298 | param_escape(sel_rows.toString()); |
299 | ||
b4e75b2a AD |
300 | new Ajax.Request("backend.php", { |
301 | parameters: query, | |
a796bfc1 | 302 | onComplete: function(transport) { |
cbe50c80 | 303 | updateLabelList(); |
a796bfc1 AD |
304 | } }); |
305 | ||
69668465 | 306 | } |
48f0adb0 | 307 | } else { |
89cb787e | 308 | alert(__("No labels are selected.")); |
48f0adb0 | 309 | } |
90ac84df AD |
310 | |
311 | return false; | |
48f0adb0 AD |
312 | } |
313 | ||
e6cb77a0 AD |
314 | function removeSelectedUsers() { |
315 | ||
1bfe1d7b | 316 | var sel_rows = getSelectedUsers(); |
fb5662de | 317 | |
1bfe1d7b | 318 | if (sel_rows.length > 0) { |
fb5662de | 319 | |
1bfe1d7b | 320 | var ok = confirm(__("Remove selected users? Neither default admin nor your account will be removed.")); |
fb5662de | 321 | |
1bfe1d7b AD |
322 | if (ok) { |
323 | notify_progress("Removing selected users..."); | |
fb5662de | 324 | |
1bfe1d7b AD |
325 | var query = "?op=pref-users&method=remove&ids=" + |
326 | param_escape(sel_rows.toString()); | |
fb5662de | 327 | |
1bfe1d7b AD |
328 | new Ajax.Request("backend.php", { |
329 | parameters: query, | |
330 | onComplete: function (transport) { | |
331 | updateUsersList(); | |
332 | } | |
333 | }); | |
fb5662de | 334 | |
69668465 | 335 | } |
e6cb77a0 | 336 | |
1bfe1d7b AD |
337 | } else { |
338 | alert(__("No users are selected.")); | |
e6cb77a0 | 339 | } |
90ac84df AD |
340 | |
341 | return false; | |
e6cb77a0 AD |
342 | } |
343 | ||
48f0adb0 AD |
344 | function removeSelectedFilters() { |
345 | ||
1bfe1d7b | 346 | var sel_rows = getSelectedFilters(); |
fb5662de | 347 | |
1bfe1d7b | 348 | if (sel_rows.length > 0) { |
fb5662de | 349 | |
1bfe1d7b | 350 | var ok = confirm(__("Remove selected filters?")); |
fb5662de | 351 | |
1bfe1d7b AD |
352 | if (ok) { |
353 | notify_progress("Removing selected filters..."); | |
fb5662de | 354 | |
1bfe1d7b AD |
355 | var query = "?op=pref-filters&method=remove&ids=" + |
356 | param_escape(sel_rows.toString()); | |
fb5662de | 357 | |
1bfe1d7b AD |
358 | new Ajax.Request("backend.php", { |
359 | parameters: query, | |
360 | onComplete: function (transport) { | |
361 | updateFilterList(); | |
362 | } | |
363 | }); | |
69668465 | 364 | } |
1bfe1d7b AD |
365 | } else { |
366 | alert(__("No filters are selected.")); | |
48f0adb0 | 367 | } |
90ac84df AD |
368 | |
369 | return false; | |
48f0adb0 AD |
370 | } |
371 | ||
83fe4d6d AD |
372 | function removeSelectedFeeds() { |
373 | ||
1bfe1d7b | 374 | var sel_rows = getSelectedFeeds(); |
fb5662de | 375 | |
1bfe1d7b | 376 | if (sel_rows.length > 0) { |
fb5662de | 377 | |
1bfe1d7b | 378 | var ok = confirm(__("Unsubscribe from selected feeds?")); |
fb5662de | 379 | |
1bfe1d7b | 380 | if (ok) { |
fb5662de | 381 | |
1bfe1d7b | 382 | notify_progress("Unsubscribing from selected feeds...", true); |
b6a6e262 | 383 | |
1bfe1d7b AD |
384 | var query = "?op=pref-feeds&method=remove&ids=" + |
385 | param_escape(sel_rows.toString()); | |
b6a6e262 | 386 | |
1bfe1d7b | 387 | console.log(query); |
fb5662de | 388 | |
1bfe1d7b AD |
389 | new Ajax.Request("backend.php", { |
390 | parameters: query, | |
391 | onComplete: function (transport) { | |
392 | updateFeedList(); | |
393 | } | |
394 | }); | |
69668465 | 395 | } |
71ad3959 | 396 | |
1bfe1d7b AD |
397 | } else { |
398 | alert(__("No feeds are selected.")); | |
71ad3959 | 399 | } |
fb5662de | 400 | |
90ac84df | 401 | return false; |
71ad3959 | 402 | } |
007bda35 | 403 | |
c4a36709 AD |
404 | function clearSelectedFeeds() { |
405 | ||
c4a36709 AD |
406 | var sel_rows = getSelectedFeeds(); |
407 | ||
408 | if (sel_rows.length > 1) { | |
409 | alert(__("Please select only one feed.")); | |
410 | return; | |
411 | } | |
412 | ||
413 | if (sel_rows.length > 0) { | |
414 | ||
415 | var ok = confirm(__("Erase all non-starred articles in selected feed?")); | |
416 | ||
417 | if (ok) { | |
418 | notify_progress("Clearing selected feed..."); | |
419 | clearFeedArticles(sel_rows[0]); | |
420 | } | |
421 | ||
422 | } else { | |
423 | ||
424 | alert(__("No feeds are selected.")); | |
425 | ||
426 | } | |
fb5662de | 427 | |
c4a36709 AD |
428 | return false; |
429 | } | |
430 | ||
e88a65f4 AD |
431 | function purgeSelectedFeeds() { |
432 | ||
e88a65f4 AD |
433 | var sel_rows = getSelectedFeeds(); |
434 | ||
435 | if (sel_rows.length > 0) { | |
436 | ||
437 | var pr = prompt(__("How many days of articles to keep (0 - use default)?"), "0"); | |
438 | ||
439 | if (pr != undefined) { | |
440 | notify_progress("Purging selected feed..."); | |
441 | ||
f30ef1fa | 442 | var query = "?op=rpc&method=purge&ids="+ |
e88a65f4 AD |
443 | param_escape(sel_rows.toString()) + "&days=" + pr; |
444 | ||
84c7b824 | 445 | console.log(query); |
e88a65f4 | 446 | |
b4e75b2a AD |
447 | new Ajax.Request("prefs.php", { |
448 | parameters: query, | |
e88a65f4 AD |
449 | onComplete: function(transport) { |
450 | notify(''); | |
451 | } }); | |
452 | } | |
453 | ||
454 | } else { | |
455 | ||
456 | alert(__("No feeds are selected.")); | |
457 | ||
458 | } | |
fb5662de | 459 | |
e88a65f4 AD |
460 | return false; |
461 | } | |
462 | ||
e6cb77a0 AD |
463 | function editSelectedUser() { |
464 | var rows = getSelectedUsers(); | |
465 | ||
466 | if (rows.length == 0) { | |
f3977cf5 | 467 | alert(__("No users are selected.")); |
e6cb77a0 AD |
468 | return; |
469 | } | |
470 | ||
471 | if (rows.length > 1) { | |
f3977cf5 | 472 | alert(__("Please select only one user.")); |
e6cb77a0 AD |
473 | return; |
474 | } | |
475 | ||
dbd9e2f1 AD |
476 | notify(""); |
477 | ||
e6cb77a0 AD |
478 | editUser(rows[0]); |
479 | } | |
480 | ||
481 | function resetSelectedUserPass() { | |
e6cb77a0 | 482 | |
1bfe1d7b | 483 | var rows = getSelectedUsers(); |
fb5662de | 484 | |
1bfe1d7b AD |
485 | if (rows.length == 0) { |
486 | alert(__("No users are selected.")); | |
487 | return; | |
488 | } | |
fb5662de | 489 | |
1bfe1d7b AD |
490 | if (rows.length > 1) { |
491 | alert(__("Please select only one user.")); | |
492 | return; | |
493 | } | |
fb5662de | 494 | |
1bfe1d7b | 495 | var ok = confirm(__("Reset password of selected user?")); |
fb5662de | 496 | |
1bfe1d7b AD |
497 | if (ok) { |
498 | notify_progress("Resetting password for selected user..."); | |
fb5662de | 499 | |
1bfe1d7b | 500 | var id = rows[0]; |
fb5662de | 501 | |
1bfe1d7b AD |
502 | var query = "?op=pref-users&method=resetPass&id=" + |
503 | param_escape(id); | |
fb5662de | 504 | |
1bfe1d7b AD |
505 | new Ajax.Request("backend.php", { |
506 | parameters: query, | |
507 | onComplete: function (transport) { | |
508 | notify_info(transport.responseText, true); | |
509 | } | |
510 | }); | |
fbf7d545 | 511 | |
69668465 | 512 | } |
e6cb77a0 AD |
513 | } |
514 | ||
717f5e64 | 515 | function selectedUserDetails() { |
e6cb77a0 | 516 | |
1bfe1d7b | 517 | var rows = getSelectedUsers(); |
fb5662de | 518 | |
1bfe1d7b AD |
519 | if (rows.length == 0) { |
520 | alert(__("No users are selected.")); | |
521 | return; | |
522 | } | |
fb5662de | 523 | |
1bfe1d7b AD |
524 | if (rows.length > 1) { |
525 | alert(__("Please select only one user.")); | |
526 | return; | |
527 | } | |
fb5662de | 528 | |
1bfe1d7b | 529 | var id = rows[0]; |
d9afd9b2 | 530 | |
1bfe1d7b | 531 | var query = "backend.php?op=pref-users&method=userdetails&id=" + id; |
d9afd9b2 | 532 | |
1bfe1d7b AD |
533 | if (dijit.byId("userDetailsDlg")) |
534 | dijit.byId("userDetailsDlg").destroyRecursive(); | |
d9afd9b2 | 535 | |
1bfe1d7b AD |
536 | dialog = new dijit.Dialog({ |
537 | id: "userDetailsDlg", | |
538 | title: __("User details"), | |
539 | style: "width: 600px", | |
540 | execute: function () { | |
541 | dialog.hide(); | |
542 | }, | |
543 | href: query | |
544 | }); | |
717f5e64 | 545 | |
1bfe1d7b | 546 | dialog.show(); |
c6c3a07f AD |
547 | } |
548 | ||
a0d53889 AD |
549 | |
550 | function editSelectedFilter() { | |
551 | var rows = getSelectedFilters(); | |
552 | ||
553 | if (rows.length == 0) { | |
f3977cf5 | 554 | alert(__("No filters are selected.")); |
a0d53889 AD |
555 | return; |
556 | } | |
557 | ||
558 | if (rows.length > 1) { | |
f3977cf5 | 559 | alert(__("Please select only one filter.")); |
a0d53889 AD |
560 | return; |
561 | } | |
562 | ||
dbd9e2f1 AD |
563 | notify(""); |
564 | ||
a0d53889 AD |
565 | editFilter(rows[0]); |
566 | ||
567 | } | |
568 | ||
6aff7845 AD |
569 | function joinSelectedFilters() { |
570 | var rows = getSelectedFilters(); | |
571 | ||
572 | if (rows.length == 0) { | |
573 | alert(__("No filters are selected.")); | |
574 | return; | |
575 | } | |
576 | ||
577 | var ok = confirm(__("Combine selected filters?")); | |
578 | ||
579 | if (ok) { | |
580 | notify_progress("Joining filters..."); | |
581 | ||
582 | var query = "?op=pref-filters&method=join&ids="+ | |
583 | param_escape(rows.toString()); | |
584 | ||
585 | console.log(query); | |
586 | ||
587 | new Ajax.Request("backend.php", { | |
588 | parameters: query, | |
589 | onComplete: function(transport) { | |
590 | updateFilterList(); | |
591 | } }); | |
592 | } | |
593 | } | |
a0d53889 | 594 | |
508a81e1 AD |
595 | function editSelectedFeed() { |
596 | var rows = getSelectedFeeds(); | |
597 | ||
598 | if (rows.length == 0) { | |
f3977cf5 | 599 | alert(__("No feeds are selected.")); |
508a81e1 AD |
600 | return; |
601 | } | |
602 | ||
603 | if (rows.length > 1) { | |
1e5548db | 604 | return editSelectedFeeds(); |
508a81e1 AD |
605 | } |
606 | ||
dbd9e2f1 AD |
607 | notify(""); |
608 | ||
951906dc | 609 | editFeed(rows[0], {}); |
91ff844a AD |
610 | |
611 | } | |
612 | ||
758e1c4a | 613 | function editSelectedFeeds() { |
1bfe1d7b | 614 | var rows = getSelectedFeeds(); |
758e1c4a | 615 | |
1bfe1d7b AD |
616 | if (rows.length == 0) { |
617 | alert(__("No feeds are selected.")); | |
618 | return; | |
619 | } | |
05acc0d6 | 620 | |
1bfe1d7b | 621 | notify_progress("Loading, please wait..."); |
05acc0d6 | 622 | |
1bfe1d7b AD |
623 | var query = "backend.php?op=pref-feeds&method=editfeeds&ids=" + |
624 | param_escape(rows.toString()); | |
755c8f95 | 625 | |
1bfe1d7b | 626 | console.log(query); |
755c8f95 | 627 | |
1bfe1d7b AD |
628 | if (dijit.byId("feedEditDlg")) |
629 | dijit.byId("feedEditDlg").destroyRecursive(); | |
755c8f95 | 630 | |
1bfe1d7b AD |
631 | new Ajax.Request("backend.php", { |
632 | parameters: query, | |
633 | onComplete: function (transport) { | |
755c8f95 | 634 | |
1bfe1d7b | 635 | notify(""); |
fb5662de | 636 | |
1bfe1d7b AD |
637 | var dialog = new dijit.Dialog({ |
638 | id: "feedEditDlg", | |
639 | title: __("Edit Multiple Feeds"), | |
640 | style: "width: 600px", | |
641 | getChildByName: function (name) { | |
642 | var rv = null; | |
643 | this.getChildren().each( | |
644 | function (child) { | |
645 | if (child.name == name) { | |
646 | rv = child; | |
647 | return; | |
755c8f95 | 648 | } |
1bfe1d7b AD |
649 | }); |
650 | return rv; | |
651 | }, | |
652 | toggleField: function (checkbox, elem, label) { | |
653 | this.getChildByName(elem).attr('disabled', !checkbox.checked); | |
654 | ||
655 | if ($(label)) | |
656 | if (checkbox.checked) | |
657 | $(label).removeClassName('insensitive'); | |
658 | else | |
659 | $(label).addClassName('insensitive'); | |
660 | ||
661 | }, | |
662 | execute: function () { | |
663 | if (this.validate() && confirm(__("Save changes to selected feeds?"))) { | |
664 | var query = dojo.objectToQuery(this.attr('value')); | |
665 | ||
666 | /* Form.serialize ignores unchecked checkboxes */ | |
667 | ||
668 | if (!query.match("&private=") && | |
669 | this.getChildByName('private').attr('disabled') == false) { | |
670 | query = query + "&private=false"; | |
671 | } | |
fb5662de | 672 | |
1bfe1d7b AD |
673 | try { |
674 | if (!query.match("&cache_images=") && | |
675 | this.getChildByName('cache_images').attr('disabled') == false) { | |
676 | query = query + "&cache_images=false"; | |
755c8f95 | 677 | } |
1bfe1d7b AD |
678 | } catch (e) { |
679 | } | |
05acc0d6 | 680 | |
1bfe1d7b AD |
681 | try { |
682 | if (!query.match("&hide_images=") && | |
683 | this.getChildByName('hide_images').attr('disabled') == false) { | |
684 | query = query + "&hide_images=false"; | |
755c8f95 | 685 | } |
1bfe1d7b AD |
686 | } catch (e) { |
687 | } | |
dd04ea81 | 688 | |
1bfe1d7b AD |
689 | if (!query.match("&include_in_digest=") && |
690 | this.getChildByName('include_in_digest').attr('disabled') == false) { | |
691 | query = query + "&include_in_digest=false"; | |
692 | } | |
dd04ea81 | 693 | |
1bfe1d7b AD |
694 | if (!query.match("&always_display_enclosures=") && |
695 | this.getChildByName('always_display_enclosures').attr('disabled') == false) { | |
696 | query = query + "&always_display_enclosures=false"; | |
697 | } | |
fb5662de | 698 | |
1bfe1d7b AD |
699 | if (!query.match("&mark_unread_on_update=") && |
700 | this.getChildByName('mark_unread_on_update').attr('disabled') == false) { | |
701 | query = query + "&mark_unread_on_update=false"; | |
755c8f95 | 702 | } |
05acc0d6 | 703 | |
1bfe1d7b | 704 | console.log(query); |
05acc0d6 | 705 | |
1bfe1d7b | 706 | notify_progress("Saving data...", true); |
758e1c4a | 707 | |
1bfe1d7b AD |
708 | new Ajax.Request("backend.php", { |
709 | parameters: query, | |
710 | onComplete: function (transport) { | |
711 | dialog.hide(); | |
712 | updateFeedList(); | |
713 | } | |
714 | }); | |
715 | } | |
716 | }, | |
717 | content: transport.responseText | |
718 | }); | |
758e1c4a | 719 | |
1bfe1d7b | 720 | dialog.show(); |
e1218480 | 721 | |
1bfe1d7b AD |
722 | } |
723 | }); | |
724 | } | |
e1218480 | 725 | |
1bfe1d7b AD |
726 | function opmlImportComplete(iframe) { |
727 | if (!iframe.contentDocument.body.innerHTML) return false; | |
728 | ||
729 | Element.show(iframe); | |
730 | ||
731 | notify(''); | |
732 | ||
733 | if (dijit.byId('opmlImportDlg')) | |
734 | dijit.byId('opmlImportDlg').destroyRecursive(); | |
735 | ||
736 | var content = iframe.contentDocument.body.innerHTML; | |
737 | ||
738 | dialog = new dijit.Dialog({ | |
739 | id: "opmlImportDlg", | |
740 | title: __("OPML Import"), | |
741 | style: "width: 600px", | |
742 | onCancel: function () { | |
743 | updateFeedList(); | |
744 | updateFilterList(); | |
745 | updateLabelList(); | |
746 | }, | |
747 | execute: function () { | |
748 | updateFeedList(); | |
749 | updateFilterList(); | |
750 | updateLabelList(); | |
751 | this.hide(); | |
752 | }, | |
753 | content: content | |
754 | }); | |
e1218480 | 755 | |
1bfe1d7b | 756 | dialog.show(); |
e1218480 AD |
757 | } |
758 | ||
b6a6e262 | 759 | function opmlImport() { |
fb5662de | 760 | |
acac8448 | 761 | var opml_file = $("opml_file"); |
9f311df6 AD |
762 | |
763 | if (opml_file.value.length == 0) { | |
d2d75353 | 764 | alert(__("Please choose an OPML file first.")); |
9f311df6 AD |
765 | return false; |
766 | } else { | |
4d7cd9ed | 767 | notify_progress("Importing, please wait...", true); |
55f34b81 AD |
768 | |
769 | Element.show("upload_iframe"); | |
770 | ||
9f311df6 AD |
771 | return true; |
772 | } | |
773 | } | |
774 | ||
55f34b81 | 775 | |
05acc0d6 | 776 | function updateFilterList() { |
310fa2dd AD |
777 | var user_search = $("filter_search"); |
778 | var search = ""; | |
779 | if (user_search) { search = user_search.value; } | |
780 | ||
05acc0d6 | 781 | new Ajax.Request("backend.php", { |
310fa2dd | 782 | parameters: "?op=pref-filters&search=" + param_escape(search), |
05acc0d6 | 783 | onComplete: function(transport) { |
66665fba AD |
784 | dijit.byId('filterConfigTab').attr('content', transport.responseText); |
785 | notify(""); | |
05acc0d6 | 786 | } }); |
a0d53889 AD |
787 | } |
788 | ||
05acc0d6 AD |
789 | function updateLabelList() { |
790 | new Ajax.Request("backend.php", { | |
791 | parameters: "?op=pref-labels", | |
792 | onComplete: function(transport) { | |
cbe50c80 AD |
793 | dijit.byId('labelConfigTab').attr('content', transport.responseText); |
794 | notify(""); | |
05acc0d6 | 795 | } }); |
48f0adb0 AD |
796 | } |
797 | ||
4255b24c | 798 | function updatePrefsList() { |
b4e75b2a | 799 | new Ajax.Request("backend.php", { |
05acc0d6 | 800 | parameters: "?op=pref-prefs", |
fb5662de | 801 | onComplete: function(transport) { |
cbe50c80 AD |
802 | dijit.byId('genConfigTab').attr('content', transport.responseText); |
803 | notify(""); | |
e9802ead | 804 | } }); |
4255b24c AD |
805 | } |
806 | ||
2cbdc95b AD |
807 | function updateSystemList() { |
808 | new Ajax.Request("backend.php", { | |
809 | parameters: "?op=pref-system", | |
810 | onComplete: function(transport) { | |
811 | dijit.byId('systemConfigTab').attr('content', transport.responseText); | |
812 | notify(""); | |
813 | } }); | |
814 | } | |
815 | ||
f30ef1fa | 816 | function selectTab(id, noupdate, method) { |
1bfe1d7b AD |
817 | if (!noupdate) { |
818 | notify_progress("Loading, please wait..."); | |
d62796de | 819 | |
1bfe1d7b AD |
820 | if (id == "feedConfig") { |
821 | updateFeedList(); | |
822 | } else if (id == "filterConfig") { | |
823 | updateFilterList(); | |
824 | } else if (id == "labelConfig") { | |
825 | updateLabelList(); | |
826 | } else if (id == "genConfig") { | |
827 | updatePrefsList(); | |
828 | } else if (id == "userConfig") { | |
829 | updateUsersList(); | |
830 | } else if (id == "systemConfig") { | |
831 | updateSystemList(); | |
f5a50b25 | 832 | } |
fb5662de | 833 | |
1bfe1d7b AD |
834 | var tab = dijit.byId(id + "Tab"); |
835 | dijit.byId("pref-tabs").selectChild(tab); | |
836 | ||
a7565293 | 837 | } |
a7565293 AD |
838 | } |
839 | ||
a7565293 | 840 | function init_second_stage() { |
1bfe1d7b AD |
841 | document.onkeydown = pref_hotkey_handler; |
842 | loading_set_progress(50); | |
843 | notify(""); | |
b01b1b38 | 844 | |
1bfe1d7b | 845 | var tab = getURLParam('tab'); |
b01b1b38 | 846 | |
1bfe1d7b AD |
847 | if (tab) { |
848 | tab = dijit.byId(tab + "Tab"); | |
849 | if (tab) dijit.byId("pref-tabs").selectChild(tab); | |
850 | } | |
b01b1b38 | 851 | |
1bfe1d7b | 852 | var method = getURLParam('method'); |
556e5b46 | 853 | |
1bfe1d7b AD |
854 | if (method == 'editFeed') { |
855 | var param = getURLParam('methodparam'); | |
78935092 | 856 | |
1bfe1d7b | 857 | window.setTimeout(function() { editFeed(param) }, 100); |
b2caf812 | 858 | } |
1bfe1d7b AD |
859 | |
860 | setTimeout(hotkey_prefix_timeout, 5*1000); | |
a0d53889 AD |
861 | } |
862 | ||
007bda35 | 863 | function init() { |
1bfe1d7b AD |
864 | window.onerror = function (message, filename, lineno, colno, error) { |
865 | report_error(message, filename, lineno, colno, error); | |
866 | }; | |
867 | ||
868 | require(["dojo/_base/kernel", | |
869 | "dojo/ready", | |
870 | "dojo/parser", | |
871 | "dojo/_base/loader", | |
872 | "dojo/_base/html", | |
873 | "dijit/ColorPalette", | |
874 | "dijit/Dialog", | |
875 | "dijit/form/Button", | |
876 | "dijit/form/CheckBox", | |
877 | "dijit/form/DropDownButton", | |
878 | "dijit/form/FilteringSelect", | |
879 | "dijit/form/Form", | |
880 | "dijit/form/RadioButton", | |
881 | "dijit/form/ComboButton", | |
882 | "dijit/form/Select", | |
883 | "dijit/form/SimpleTextarea", | |
884 | "dijit/form/TextBox", | |
885 | "dijit/form/ValidationTextBox", | |
886 | "dijit/InlineEditBox", | |
887 | "dijit/layout/AccordionContainer", | |
888 | "dijit/layout/AccordionPane", | |
889 | "dijit/layout/BorderContainer", | |
890 | "dijit/layout/ContentPane", | |
891 | "dijit/layout/TabContainer", | |
892 | "dijit/Menu", | |
893 | "dijit/ProgressBar", | |
894 | "dijit/Toolbar", | |
895 | "dijit/Tree", | |
896 | "dijit/tree/dndSource", | |
897 | "dojo/data/ItemFileWriteStore", | |
898 | "fox/PrefFeedTree", | |
899 | "fox/PrefFilterTree", | |
900 | "fox/PrefLabelTree"], function (dojo, ready, parser) { | |
901 | ||
902 | ready(function () { | |
903 | try { | |
904 | parser.parse(); | |
905 | ||
906 | loading_set_progress(50); | |
907 | ||
908 | var clientTzOffset = new Date().getTimezoneOffset() * 60; | |
e2ec66a8 | 909 | |
1bfe1d7b AD |
910 | new Ajax.Request("backend.php", { |
911 | parameters: { | |
912 | op: "rpc", method: "sanityCheck", | |
913 | clientTzOffset: clientTzOffset | |
914 | }, | |
915 | onComplete: function (transport) { | |
916 | backend_sanity_check_callback(transport); | |
917 | } | |
fd539f28 | 918 | }); |
1bfe1d7b AD |
919 | } catch (e) { |
920 | exception_error(e); | |
921 | } | |
922 | }); | |
923 | }); | |
007bda35 | 924 | } |
b1895692 | 925 | |
b652c1b7 | 926 | |
1bfe1d7b AD |
927 | function validatePrefsReset() { |
928 | var ok = confirm(__("Reset to defaults?")); | |
b652c1b7 | 929 | |
1bfe1d7b | 930 | if (ok) { |
b652c1b7 | 931 | |
1bfe1d7b AD |
932 | query = "?op=pref-prefs&method=resetconfig"; |
933 | console.log(query); | |
e9802ead | 934 | |
1bfe1d7b AD |
935 | new Ajax.Request("backend.php", { |
936 | parameters: query, | |
937 | onComplete: function(transport) { | |
938 | updatePrefsList(); | |
939 | notify_info(transport.responseText); | |
940 | } }); | |
b652c1b7 | 941 | |
b652c1b7 AD |
942 | } |
943 | ||
944 | return false; | |
945 | ||
69668465 | 946 | } |
f9cb39ac | 947 | |
d437c8cf | 948 | function pref_hotkey_handler(e) { |
b8cb4d08 | 949 | |
1bfe1d7b | 950 | if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") return; |
18606807 | 951 | |
1bfe1d7b AD |
952 | var keycode = false; |
953 | var shift_key = false; | |
746dcf42 | 954 | |
1bfe1d7b | 955 | var cmdline = $('cmdline'); |
78935092 | 956 | |
1bfe1d7b AD |
957 | try { |
958 | shift_key = e.shiftKey; | |
959 | } catch (e) { | |
746dcf42 | 960 | |
1bfe1d7b | 961 | } |
746dcf42 | 962 | |
1bfe1d7b AD |
963 | if (window.event) { |
964 | keycode = window.event.keyCode; | |
965 | } else if (e) { | |
966 | keycode = e.which; | |
967 | } | |
746dcf42 | 968 | |
1bfe1d7b | 969 | var keychar = String.fromCharCode(keycode); |
eec498c3 | 970 | |
1bfe1d7b AD |
971 | if (keycode == 27) { // escape |
972 | hotkey_prefix = false; | |
973 | } | |
746dcf42 | 974 | |
1bfe1d7b AD |
975 | if (keycode == 16) return; // ignore lone shift |
976 | if (keycode == 17) return; // ignore lone ctrl | |
746dcf42 | 977 | |
1bfe1d7b | 978 | if (!shift_key) keychar = keychar.toLowerCase(); |
b8cb4d08 | 979 | |
1bfe1d7b | 980 | var hotkeys = getInitParam("hotkeys"); |
b8cb4d08 | 981 | |
1bfe1d7b | 982 | if (!hotkey_prefix && hotkeys[0].indexOf(keychar) != -1) { |
78935092 | 983 | |
1bfe1d7b AD |
984 | var date = new Date(); |
985 | var ts = Math.round(date.getTime() / 1000); | |
78935092 | 986 | |
1bfe1d7b AD |
987 | hotkey_prefix = keychar; |
988 | hotkey_prefix_pressed = ts; | |
78935092 | 989 | |
1bfe1d7b AD |
990 | cmdline.innerHTML = keychar; |
991 | Element.show(cmdline); | |
78935092 | 992 | |
1bfe1d7b AD |
993 | return true; |
994 | } | |
746dcf42 | 995 | |
1bfe1d7b | 996 | Element.hide(cmdline); |
78935092 | 997 | |
1bfe1d7b AD |
998 | var hotkey = keychar.search(/[a-zA-Z0-9]/) != -1 ? keychar : "(" + keycode + ")"; |
999 | hotkey = hotkey_prefix ? hotkey_prefix + " " + hotkey : hotkey; | |
1000 | hotkey_prefix = false; | |
8d727bfc | 1001 | |
1bfe1d7b AD |
1002 | var hotkey_action = false; |
1003 | var hotkeys = getInitParam("hotkeys"); | |
746dcf42 | 1004 | |
1bfe1d7b AD |
1005 | for (sequence in hotkeys[1]) { |
1006 | if (sequence == hotkey) { | |
1007 | hotkey_action = hotkeys[1][sequence]; | |
1008 | break; | |
746dcf42 | 1009 | } |
1bfe1d7b | 1010 | } |
746dcf42 | 1011 | |
1bfe1d7b | 1012 | switch (hotkey_action) { |
b8cb4d08 AD |
1013 | case "feed_subscribe": |
1014 | quickAddFeed(); | |
4ba1f8bb | 1015 | return false; |
b8cb4d08 AD |
1016 | case "create_label": |
1017 | addLabel(); | |
4ba1f8bb | 1018 | return false; |
b8cb4d08 AD |
1019 | case "create_filter": |
1020 | quickAddFilter(); | |
4ba1f8bb | 1021 | return false; |
b8cb4d08 AD |
1022 | case "help_dialog": |
1023 | //helpDialog("prefs"); | |
1024 | return false; | |
1025 | default: | |
1026 | console.log("unhandled action: " + hotkey_action + "; hotkey: " + hotkey); | |
d437c8cf AD |
1027 | } |
1028 | } | |
1029 | ||
5ef071e0 | 1030 | function removeCategory(id, item) { |
350468d0 | 1031 | |
1bfe1d7b | 1032 | var ok = confirm(__("Remove category %s? Any nested feeds would be placed into Uncategorized.").replace("%s", item.name)); |
da1f74c9 | 1033 | |
1bfe1d7b AD |
1034 | if (ok) { |
1035 | var query = "?op=pref-feeds&method=removeCat&ids=" + | |
1036 | param_escape(id); | |
fb5662de | 1037 | |
1bfe1d7b | 1038 | notify_progress("Removing category..."); |
fb5662de | 1039 | |
1bfe1d7b AD |
1040 | new Ajax.Request("backend.php", { |
1041 | parameters: query, | |
1042 | onComplete: function (transport) { | |
1043 | notify(''); | |
1044 | updateFeedList(); | |
5ef071e0 | 1045 | } |
1bfe1d7b | 1046 | }); |
5ef071e0 AD |
1047 | } |
1048 | } | |
fb5662de | 1049 | |
fd26d5bf AD |
1050 | function removeSelectedCategories() { |
1051 | ||
1052 | var sel_rows = getSelectedCategories(); | |
1053 | ||
1054 | if (sel_rows.length > 0) { | |
1055 | ||
1056 | var ok = confirm(__("Remove selected categories?")); | |
1057 | ||
1058 | if (ok) { | |
1059 | notify_progress("Removing selected categories..."); | |
1060 | ||
1061 | var query = "?op=pref-feeds&method=removeCat&ids="+ | |
1062 | param_escape(sel_rows.toString()); | |
1063 | ||
1064 | new Ajax.Request("backend.php", { | |
1065 | parameters: query, | |
1066 | onComplete: function(transport) { | |
1067 | updateFeedList(); | |
1068 | } }); | |
1069 | ||
1070 | } | |
1071 | } else { | |
1072 | alert(__("No categories are selected.")); | |
1073 | } | |
1074 | ||
1075 | return false; | |
1076 | } | |
1077 | ||
5ef071e0 | 1078 | function createCategory() { |
1bfe1d7b | 1079 | var title = prompt(__("Category title:")); |
fb5662de | 1080 | |
1bfe1d7b | 1081 | if (title) { |
da1f74c9 | 1082 | |
1bfe1d7b | 1083 | notify_progress("Creating category..."); |
da1f74c9 | 1084 | |
1bfe1d7b AD |
1085 | var query = "?op=pref-feeds&method=addCat&cat=" + |
1086 | param_escape(title); | |
da1f74c9 | 1087 | |
1bfe1d7b AD |
1088 | new Ajax.Request("backend.php", { |
1089 | parameters: query, | |
1090 | onComplete: function (transport) { | |
1091 | notify(''); | |
1092 | updateFeedList(); | |
1093 | } | |
1094 | }); | |
a349077c | 1095 | } |
9c483746 | 1096 | } |
a3656a41 | 1097 | |
8ffd2011 | 1098 | function showInactiveFeeds() { |
1bfe1d7b | 1099 | var query = "backend.php?op=pref-feeds&method=inactiveFeeds"; |
8ffd2011 | 1100 | |
1bfe1d7b AD |
1101 | if (dijit.byId("inactiveFeedsDlg")) |
1102 | dijit.byId("inactiveFeedsDlg").destroyRecursive(); | |
8ffd2011 | 1103 | |
1bfe1d7b AD |
1104 | dialog = new dijit.Dialog({ |
1105 | id: "inactiveFeedsDlg", | |
1106 | title: __("Feeds without recent updates"), | |
1107 | style: "width: 600px", | |
1108 | getSelectedFeeds: function () { | |
1109 | return getSelectedTableRowIds("prefInactiveFeedList"); | |
1110 | }, | |
1111 | removeSelected: function () { | |
1112 | var sel_rows = this.getSelectedFeeds(); | |
8ffd2011 | 1113 | |
1bfe1d7b | 1114 | console.log(sel_rows); |
8ffd2011 | 1115 | |
1bfe1d7b AD |
1116 | if (sel_rows.length > 0) { |
1117 | var ok = confirm(__("Remove selected feeds?")); | |
8ffd2011 | 1118 | |
1bfe1d7b AD |
1119 | if (ok) { |
1120 | notify_progress("Removing selected feeds...", true); | |
8ffd2011 | 1121 | |
1bfe1d7b AD |
1122 | var query = "?op=pref-feeds&method=remove&ids=" + |
1123 | param_escape(sel_rows.toString()); | |
8ffd2011 | 1124 | |
1bfe1d7b AD |
1125 | new Ajax.Request("backend.php", { |
1126 | parameters: query, | |
1127 | onComplete: function (transport) { | |
1128 | notify(''); | |
1129 | dialog.hide(); | |
1130 | updateFeedList(); | |
1131 | } | |
1132 | }); | |
8ffd2011 | 1133 | } |
8ffd2011 | 1134 | |
1bfe1d7b AD |
1135 | } else { |
1136 | alert(__("No feeds are selected.")); | |
1137 | } | |
1138 | }, | |
1139 | execute: function () { | |
1140 | if (this.validate()) { | |
1141 | } | |
1142 | }, | |
1143 | href: query | |
1144 | }); | |
8ffd2011 | 1145 | |
1bfe1d7b | 1146 | dialog.show(); |
8ffd2011 AD |
1147 | } |
1148 | ||
ef7b7bbd | 1149 | function opmlRegenKey() { |
1bfe1d7b | 1150 | var ok = confirm(__("Replace current OPML publishing address with a new one?")); |
ef7b7bbd | 1151 | |
1bfe1d7b | 1152 | if (ok) { |
fb5662de | 1153 | |
1bfe1d7b | 1154 | notify_progress("Trying to change address...", true); |
fb5662de | 1155 | |
1bfe1d7b | 1156 | var query = "?op=pref-feeds&method=regenOPMLKey"; |
fb5662de | 1157 | |
1bfe1d7b AD |
1158 | new Ajax.Request("backend.php", { |
1159 | parameters: query, | |
1160 | onComplete: function (transport) { | |
1161 | var reply = JSON.parse(transport.responseText); | |
91d16ff1 | 1162 | |
1bfe1d7b | 1163 | var new_link = reply.link; |
fb5662de | 1164 | |
1bfe1d7b | 1165 | var e = $('pub_opml_url'); |
fb5662de | 1166 | |
1bfe1d7b AD |
1167 | if (new_link) { |
1168 | e.href = new_link; | |
1169 | e.innerHTML = new_link; | |
fb5662de | 1170 | |
1bfe1d7b | 1171 | new Effect.Highlight(e); |
ef7b7bbd | 1172 | |
1bfe1d7b | 1173 | notify(''); |
fb5662de | 1174 | |
1bfe1d7b AD |
1175 | } else { |
1176 | notify_error("Could not change feed URL."); | |
1177 | } | |
1178 | } | |
1179 | }); | |
ef7b7bbd MK |
1180 | } |
1181 | return false; | |
1182 | } | |
c4a36709 AD |
1183 | |
1184 | function feedActionChange() { | |
1bfe1d7b AD |
1185 | var chooser = $("feedActionChooser"); |
1186 | var opid = chooser[chooser.selectedIndex].value; | |
c4a36709 | 1187 | |
1bfe1d7b AD |
1188 | chooser.selectedIndex = 0; |
1189 | feedActionGo(opid); | |
c4a36709 AD |
1190 | } |
1191 | ||
fb5662de | 1192 | function feedActionGo(op) { |
1bfe1d7b | 1193 | if (op == "facEdit") { |
cd935c42 | 1194 | |
1bfe1d7b | 1195 | var rows = getSelectedFeeds(); |
c4a36709 | 1196 | |
1bfe1d7b AD |
1197 | if (rows.length > 1) { |
1198 | editSelectedFeeds(); | |
1199 | } else { | |
1200 | editSelectedFeed(); | |
c4a36709 | 1201 | } |
1bfe1d7b | 1202 | } |
c4a36709 | 1203 | |
1bfe1d7b AD |
1204 | if (op == "facClear") { |
1205 | clearSelectedFeeds(); | |
1206 | } | |
e88a65f4 | 1207 | |
1bfe1d7b AD |
1208 | if (op == "facPurge") { |
1209 | purgeSelectedFeeds(); | |
1210 | } | |
fee840fb | 1211 | |
1bfe1d7b AD |
1212 | if (op == "facEditCats") { |
1213 | editFeedCats(); | |
1214 | } | |
c4a36709 | 1215 | |
1bfe1d7b AD |
1216 | if (op == "facRescore") { |
1217 | rescoreSelectedFeeds(); | |
1218 | } | |
c4a36709 | 1219 | |
1bfe1d7b AD |
1220 | if (op == "facUnsubscribe") { |
1221 | removeSelectedFeeds(); | |
c4a36709 AD |
1222 | } |
1223 | } | |
1224 | ||
1225 | function clearFeedArticles(feed_id) { | |
1226 | ||
1227 | notify_progress("Clearing feed..."); | |
1228 | ||
f30ef1fa | 1229 | var query = "?op=pref-feeds&quiet=1&method=clear&id=" + feed_id; |
c4a36709 | 1230 | |
b4e75b2a AD |
1231 | new Ajax.Request("backend.php", { |
1232 | parameters: query, | |
c4a36709 AD |
1233 | onComplete: function(transport) { |
1234 | notify(''); | |
1235 | } }); | |
1236 | ||
1237 | return false; | |
1238 | } | |
1239 | ||
fee840fb AD |
1240 | function rescoreSelectedFeeds() { |
1241 | ||
fee840fb AD |
1242 | var sel_rows = getSelectedFeeds(); |
1243 | ||
1244 | if (sel_rows.length > 0) { | |
1245 | ||
ef1b0366 AD |
1246 | //var ok = confirm(__("Rescore last 100 articles in selected feeds?")); |
1247 | var ok = confirm(__("Rescore articles in selected feeds?")); | |
fee840fb AD |
1248 | |
1249 | if (ok) { | |
3df4869b | 1250 | notify_progress("Rescoring selected feeds...", true); |
fb5662de | 1251 | |
f30ef1fa | 1252 | var query = "?op=pref-feeds&method=rescore&quiet=1&ids="+ |
60715b53 AD |
1253 | param_escape(sel_rows.toString()); |
1254 | ||
b4e75b2a AD |
1255 | new Ajax.Request("backend.php", { |
1256 | parameters: query, | |
60715b53 AD |
1257 | onComplete: function(transport) { |
1258 | notify_callback2(transport); | |
1259 | } }); | |
1260 | ||
fee840fb AD |
1261 | } |
1262 | } else { | |
1263 | alert(__("No feeds are selected.")); | |
1264 | } | |
1265 | ||
1266 | return false; | |
1267 | } | |
c4a36709 | 1268 | |
95a948a5 | 1269 | function rescore_all_feeds() { |
60715b53 | 1270 | var ok = confirm(__("Rescore all articles? This operation may take a lot of time.")); |
95a948a5 | 1271 | |
60715b53 AD |
1272 | if (ok) { |
1273 | notify_progress("Rescoring feeds...", true); | |
95a948a5 | 1274 | |
f30ef1fa | 1275 | var query = "?op=pref-feeds&method=rescoreAll&quiet=1"; |
60715b53 | 1276 | |
b4e75b2a AD |
1277 | new Ajax.Request("backend.php", { |
1278 | parameters: query, | |
60715b53 AD |
1279 | onComplete: function(transport) { |
1280 | notify_callback2(transport); | |
1281 | } }); | |
1282 | } | |
a80b05ea | 1283 | } |
a44db887 | 1284 | |
b8776a07 | 1285 | function labelColorReset() { |
1bfe1d7b | 1286 | var labels = getSelectedLabels(); |
b8776a07 | 1287 | |
1bfe1d7b AD |
1288 | if (labels.length > 0) { |
1289 | var ok = confirm(__("Reset selected labels to default colors?")); | |
b8776a07 | 1290 | |
1bfe1d7b AD |
1291 | if (ok) { |
1292 | var query = "?op=pref-labels&method=colorreset&ids=" + | |
1293 | param_escape(labels.toString()); | |
f695cdb2 | 1294 | |
1bfe1d7b AD |
1295 | new Ajax.Request("backend.php", { |
1296 | parameters: query, | |
1297 | onComplete: function (transport) { | |
1298 | updateLabelList(); | |
1299 | } | |
1300 | }); | |
b8776a07 AD |
1301 | } |
1302 | ||
1bfe1d7b AD |
1303 | } else { |
1304 | alert(__("No labels are selected.")); | |
b8776a07 AD |
1305 | } |
1306 | } | |
1307 | ||
a5819bb3 AD |
1308 | function inPreferences() { |
1309 | return true; | |
1310 | } | |
d9084cf2 AD |
1311 | |
1312 | function editProfiles() { | |
22988692 | 1313 | |
1bfe1d7b AD |
1314 | if (dijit.byId("profileEditDlg")) |
1315 | dijit.byId("profileEditDlg").destroyRecursive(); | |
22988692 | 1316 | |
1bfe1d7b | 1317 | var query = "backend.php?op=pref-prefs&method=editPrefProfiles"; |
22988692 | 1318 | |
1bfe1d7b AD |
1319 | dialog = new dijit.Dialog({ |
1320 | id: "profileEditDlg", | |
1321 | title: __("Settings Profiles"), | |
1322 | style: "width: 600px", | |
1323 | getSelectedProfiles: function () { | |
1324 | return getSelectedTableRowIds("prefFeedProfileList"); | |
1325 | }, | |
1326 | removeSelected: function () { | |
1327 | var sel_rows = this.getSelectedProfiles(); | |
fb5662de | 1328 | |
1bfe1d7b AD |
1329 | if (sel_rows.length > 0) { |
1330 | var ok = confirm(__("Remove selected profiles? Active and default profiles will not be removed.")); | |
fb5662de | 1331 | |
1bfe1d7b AD |
1332 | if (ok) { |
1333 | notify_progress("Removing selected profiles...", true); | |
fb5662de | 1334 | |
1bfe1d7b AD |
1335 | var query = "?op=rpc&method=remprofiles&ids=" + |
1336 | param_escape(sel_rows.toString()); | |
fb5662de | 1337 | |
1bfe1d7b AD |
1338 | new Ajax.Request("backend.php", { |
1339 | parameters: query, | |
1340 | onComplete: function (transport) { | |
1341 | notify(''); | |
1342 | editProfiles(); | |
1343 | } | |
1344 | }); | |
fb5662de | 1345 | |
22988692 | 1346 | } |
fb5662de | 1347 | |
1bfe1d7b AD |
1348 | } else { |
1349 | alert(__("No profiles are selected.")); | |
1350 | } | |
1351 | }, | |
1352 | activateProfile: function () { | |
1353 | var sel_rows = this.getSelectedProfiles(); | |
fb5662de | 1354 | |
1bfe1d7b | 1355 | if (sel_rows.length == 1) { |
fb5662de | 1356 | |
1bfe1d7b | 1357 | var ok = confirm(__("Activate selected profile?")); |
fb5662de | 1358 | |
1bfe1d7b AD |
1359 | if (ok) { |
1360 | notify_progress("Loading, please wait..."); | |
fb5662de | 1361 | |
1bfe1d7b AD |
1362 | var query = "?op=rpc&method=setprofile&id=" + |
1363 | param_escape(sel_rows.toString()); | |
fb5662de | 1364 | |
1bfe1d7b AD |
1365 | new Ajax.Request("backend.php", { |
1366 | parameters: query, | |
1367 | onComplete: function (transport) { | |
1368 | window.location.reload(); | |
1369 | } | |
1370 | }); | |
fb5662de | 1371 | } |
22988692 | 1372 | |
1bfe1d7b AD |
1373 | } else { |
1374 | alert(__("Please choose a profile to activate.")); | |
1375 | } | |
1376 | }, | |
1377 | addProfile: function () { | |
1378 | if (this.validate()) { | |
1379 | notify_progress("Creating profile...", true); | |
22988692 | 1380 | |
1bfe1d7b AD |
1381 | var query = "?op=rpc&method=addprofile&title=" + |
1382 | param_escape(dialog.attr('value').newprofile); | |
22988692 | 1383 | |
1bfe1d7b AD |
1384 | new Ajax.Request("backend.php", { |
1385 | parameters: query, | |
1386 | onComplete: function (transport) { | |
1387 | notify(''); | |
1388 | editProfiles(); | |
1389 | } | |
1390 | }); | |
22988692 | 1391 | |
1bfe1d7b AD |
1392 | } |
1393 | }, | |
1394 | execute: function () { | |
1395 | if (this.validate()) { | |
1396 | } | |
1397 | }, | |
1398 | href: query | |
1399 | }); | |
1400 | ||
1401 | dialog.show(); | |
d9084cf2 AD |
1402 | } |
1403 | ||
1404 | function activatePrefProfile() { | |
1405 | ||
1406 | var sel_rows = getSelectedFeedCats(); | |
1407 | ||
1408 | if (sel_rows.length == 1) { | |
1409 | ||
1410 | var ok = confirm(__("Activate selected profile?")); | |
1411 | ||
1412 | if (ok) { | |
1413 | notify_progress("Loading, please wait..."); | |
fb5662de | 1414 | |
f30ef1fa | 1415 | var query = "?op=rpc&method=setprofile&id="+ |
d9084cf2 AD |
1416 | param_escape(sel_rows.toString()); |
1417 | ||
1418 | new Ajax.Request("backend.php", { | |
1419 | parameters: query, | |
1420 | onComplete: function(transport) { | |
1421 | window.location.reload(); | |
1422 | } }); | |
1423 | } | |
1424 | ||
1425 | } else { | |
1426 | alert(__("Please choose a profile to activate.")); | |
1427 | } | |
1428 | ||
1429 | return false; | |
1430 | } | |
1431 | ||
8d86f15f AD |
1432 | function clearFeedAccessKeys() { |
1433 | ||
1434 | var ok = confirm(__("This will invalidate all previously generated feed URLs. Continue?")); | |
1435 | ||
1436 | if (ok) { | |
1437 | notify_progress("Clearing URLs..."); | |
1438 | ||
195187c4 | 1439 | var query = "?op=pref-feeds&method=clearKeys"; |
8d86f15f AD |
1440 | |
1441 | new Ajax.Request("backend.php", { | |
1442 | parameters: query, | |
fb5662de | 1443 | onComplete: function(transport) { |
8d86f15f AD |
1444 | notify_info("Generated URLs cleared."); |
1445 | } }); | |
1446 | } | |
fb5662de | 1447 | |
8d86f15f AD |
1448 | return false; |
1449 | } | |
1450 | ||
a86ba0a6 | 1451 | function resetFilterOrder() { |
1bfe1d7b | 1452 | notify_progress("Loading, please wait..."); |
a86ba0a6 | 1453 | |
1bfe1d7b AD |
1454 | new Ajax.Request("backend.php", { |
1455 | parameters: "?op=pref-filters&method=filtersortreset", | |
1456 | onComplete: function (transport) { | |
1457 | updateFilterList(); | |
1458 | } | |
1459 | }); | |
a86ba0a6 AD |
1460 | } |
1461 | ||
1462 | ||
7b8a143f | 1463 | |
1bfe1d7b AD |
1464 | function resetFeedOrder() { |
1465 | notify_progress("Loading, please wait..."); | |
7b8a143f | 1466 | |
1bfe1d7b AD |
1467 | new Ajax.Request("backend.php", { |
1468 | parameters: "?op=pref-feeds&method=feedsortreset", | |
1469 | onComplete: function (transport) { | |
1470 | updateFeedList(); | |
1471 | } | |
1472 | }); | |
7b8a143f AD |
1473 | } |
1474 | ||
1475 | function resetCatOrder() { | |
1bfe1d7b | 1476 | notify_progress("Loading, please wait..."); |
7b8a143f | 1477 | |
1bfe1d7b AD |
1478 | new Ajax.Request("backend.php", { |
1479 | parameters: "?op=pref-feeds&method=catsortreset", | |
1480 | onComplete: function (transport) { | |
1481 | updateFeedList(); | |
1482 | } | |
1483 | }); | |
7b8a143f AD |
1484 | } |
1485 | ||
1486 | function editCat(id, item, event) { | |
1bfe1d7b | 1487 | var new_name = prompt(__('Rename category to:'), item.name); |
7b8a143f | 1488 | |
1bfe1d7b | 1489 | if (new_name && new_name != item.name) { |
7b8a143f | 1490 | |
1bfe1d7b | 1491 | notify_progress("Loading, please wait..."); |
7b8a143f | 1492 | |
1bfe1d7b | 1493 | new Ajax.Request("backend.php", { |
7b8a143f | 1494 | parameters: { |
fb5662de | 1495 | op: 'pref-feeds', |
f30ef1fa | 1496 | method: 'renamecat', |
7b8a143f AD |
1497 | id: id, |
1498 | title: new_name, | |
1499 | }, | |
1bfe1d7b AD |
1500 | onComplete: function (transport) { |
1501 | updateFeedList(); | |
1502 | } | |
1503 | }); | |
7b8a143f AD |
1504 | } |
1505 | } | |
fb8b2153 AD |
1506 | |
1507 | function editLabel(id, event) { | |
1bfe1d7b AD |
1508 | var query = "backend.php?op=pref-labels&method=edit&id=" + |
1509 | param_escape(id); | |
1510 | ||
1511 | if (dijit.byId("labelEditDlg")) | |
1512 | dijit.byId("labelEditDlg").destroyRecursive(); | |
1513 | ||
1514 | dialog = new dijit.Dialog({ | |
1515 | id: "labelEditDlg", | |
1516 | title: __("Label Editor"), | |
1517 | style: "width: 600px", | |
1518 | setLabelColor: function (id, fg, bg) { | |
1519 | ||
1520 | var kind = ''; | |
1521 | var color = ''; | |
1522 | ||
1523 | if (fg && bg) { | |
1524 | kind = 'both'; | |
1525 | } else if (fg) { | |
1526 | kind = 'fg'; | |
1527 | color = fg; | |
1528 | } else if (bg) { | |
1529 | kind = 'bg'; | |
1530 | color = bg; | |
1531 | } | |
fb5662de | 1532 | |
1bfe1d7b AD |
1533 | var query = "?op=pref-labels&method=colorset&kind=" + kind + |
1534 | "&ids=" + param_escape(id) + "&fg=" + param_escape(fg) + | |
1535 | "&bg=" + param_escape(bg) + "&color=" + param_escape(color); | |
fb5662de | 1536 | |
1bfe1d7b | 1537 | // console.log(query); |
fb5662de | 1538 | |
1bfe1d7b | 1539 | var e = $("LICID-" + id); |
fb5662de | 1540 | |
1bfe1d7b AD |
1541 | if (e) { |
1542 | if (fg) e.style.color = fg; | |
1543 | if (bg) e.style.backgroundColor = bg; | |
1544 | } | |
05acc0d6 | 1545 | |
1bfe1d7b | 1546 | new Ajax.Request("backend.php", {parameters: query}); |
48b05a29 | 1547 | |
1bfe1d7b AD |
1548 | updateFilterList(); |
1549 | }, | |
1550 | execute: function () { | |
1551 | if (this.validate()) { | |
1552 | var caption = this.attr('value').caption; | |
1553 | var fg_color = this.attr('value').fg_color; | |
1554 | var bg_color = this.attr('value').bg_color; | |
1555 | var query = dojo.objectToQuery(this.attr('value')); | |
48b05a29 | 1556 | |
1bfe1d7b AD |
1557 | dijit.byId('labelTree').setNameById(id, caption); |
1558 | this.setLabelColor(id, fg_color, bg_color); | |
1559 | this.hide(); | |
fb8b2153 | 1560 | |
1bfe1d7b AD |
1561 | new Ajax.Request("backend.php", { |
1562 | parameters: query, | |
1563 | onComplete: function (transport) { | |
1564 | updateFilterList(); | |
1565 | } | |
1566 | }); | |
1567 | } | |
1568 | }, | |
1569 | href: query | |
1570 | }); | |
fb8b2153 | 1571 | |
1bfe1d7b | 1572 | dialog.show(); |
fb8b2153 | 1573 | } |
018caf6f | 1574 | |
88e4e597 AD |
1575 | |
1576 | function customizeCSS() { | |
1bfe1d7b | 1577 | var query = "backend.php?op=pref-prefs&method=customizeCSS"; |
88e4e597 | 1578 | |
1bfe1d7b AD |
1579 | if (dijit.byId("cssEditDlg")) |
1580 | dijit.byId("cssEditDlg").destroyRecursive(); | |
88e4e597 | 1581 | |
1bfe1d7b AD |
1582 | dialog = new dijit.Dialog({ |
1583 | id: "cssEditDlg", | |
1584 | title: __("Customize stylesheet"), | |
1585 | style: "width: 600px", | |
1586 | execute: function () { | |
1587 | notify_progress('Saving data...', true); | |
1588 | new Ajax.Request("backend.php", { | |
1589 | parameters: dojo.objectToQuery(this.attr('value')), | |
1590 | onComplete: function (transport) { | |
1591 | notify(''); | |
1592 | window.location.reload(); | |
1593 | } | |
1594 | }); | |
88e4e597 | 1595 | |
1bfe1d7b AD |
1596 | }, |
1597 | href: query | |
1598 | }); | |
88e4e597 | 1599 | |
1bfe1d7b | 1600 | dialog.show(); |
88e4e597 | 1601 | } |
3d72afa1 AD |
1602 | |
1603 | function insertSSLserial(value) { | |
1bfe1d7b | 1604 | dijit.byId("SSL_CERT_SERIAL").attr('value', value); |
3d72afa1 | 1605 | } |
373266eb | 1606 | |
41f68571 AD |
1607 | function gotoExportOpml(filename, settings) { |
1608 | tmp = settings ? 1 : 0; | |
d75409bf | 1609 | document.location.href = "backend.php?op=opml&method=export&filename=" + filename + "&settings=" + tmp; |
41f68571 AD |
1610 | } |
1611 | ||
1612 | ||
33f0fdd0 | 1613 | function batchSubscribe() { |
1bfe1d7b | 1614 | var query = "backend.php?op=pref-feeds&method=batchSubscribe"; |
33f0fdd0 | 1615 | |
1bfe1d7b AD |
1616 | // overlapping widgets |
1617 | if (dijit.byId("batchSubDlg")) dijit.byId("batchSubDlg").destroyRecursive(); | |
1618 | if (dijit.byId("feedAddDlg")) dijit.byId("feedAddDlg").destroyRecursive(); | |
33f0fdd0 | 1619 | |
1bfe1d7b AD |
1620 | var dialog = new dijit.Dialog({ |
1621 | id: "batchSubDlg", | |
1622 | title: __("Batch subscribe"), | |
1623 | style: "width: 600px", | |
1624 | execute: function () { | |
1625 | if (this.validate()) { | |
1626 | console.log(dojo.objectToQuery(this.attr('value'))); | |
33f0fdd0 | 1627 | |
1bfe1d7b | 1628 | notify_progress(__("Subscribing to feeds..."), true); |
33f0fdd0 | 1629 | |
1bfe1d7b AD |
1630 | new Ajax.Request("backend.php", { |
1631 | parameters: dojo.objectToQuery(this.attr('value')), | |
1632 | onComplete: function (transport) { | |
1633 | notify(""); | |
1634 | updateFeedList(); | |
1635 | dialog.hide(); | |
33f0fdd0 | 1636 | } |
1bfe1d7b AD |
1637 | }); |
1638 | } | |
1639 | }, | |
1640 | href: query | |
1641 | }); | |
33f0fdd0 | 1642 | |
1bfe1d7b | 1643 | dialog.show(); |
33f0fdd0 | 1644 | } |
55f34b81 | 1645 | |
1bfe1d7b AD |
1646 | function clearPluginData(name) { |
1647 | if (confirm(__("Clear stored data for this plugin?"))) { | |
f9ebb32c AD |
1648 | notify_progress("Loading, please wait..."); |
1649 | ||
1650 | new Ajax.Request("backend.php", { | |
1bfe1d7b | 1651 | parameters: "?op=pref-prefs&method=clearplugindata&name=" + param_escape(name), |
f9ebb32c | 1652 | onComplete: function(transport) { |
1bfe1d7b | 1653 | notify(''); |
f9ebb32c AD |
1654 | updatePrefsList(); |
1655 | } }); | |
5d9abb1e AD |
1656 | } |
1657 | } | |
52e7b5a0 AD |
1658 | |
1659 | function clearSqlLog() { | |
1660 | ||
1661 | if (confirm(__("Clear all messages in the error log?"))) { | |
1662 | ||
1663 | notify_progress("Loading, please wait..."); | |
1664 | var query = "?op=pref-system&method=clearLog"; | |
1665 | ||
1666 | new Ajax.Request("backend.php", { | |
1667 | parameters: query, | |
1668 | onComplete: function(transport) { | |
1669 | updateSystemList(); | |
1670 | } }); | |
1671 | ||
1672 | } | |
1673 | } | |
1674 | ||
ab235fc5 AD |
1675 | function updateSelectedPrompt() { |
1676 | // no-op shim for toggleSelectedRow() | |
1677 | } | |
e2e24799 | 1678 |