]> git.wh0rd.org - tt-rss.git/blame - modules/popup-dialog.php
rework feed dialog layouts
[tt-rss.git] / modules / popup-dialog.php
CommitLineData
ef8be8ea
AD
1<?php
2 function module_popup_dialog($link) {
3 $id = $_GET["id"];
0b126ac2 4 $param = db_escape_string($_GET["param"]);
ef8be8ea 5
ef16ae37
AD
6 if ($id == "explainError") {
7
cc17c205 8 print "<div id=\"infoBoxTitle\">".__('Notice')."</div>";
ef16ae37
AD
9 print "<div class=\"infoBoxContents\">";
10
11 if ($param == 1) {
cc17c205 12 print __("Update daemon is enabled in configuration, but daemon
ef16ae37
AD
13 process is not running, which prevents all feeds from updating. Please
14 start the daemon process or contact instance owner.");
f6854e44
AD
15
16 $stamp = (int)read_stampfile("update_daemon.stamp");
17
18 print "<p>" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp);
19
ef16ae37
AD
20 }
21
d9fa39f1 22 if ($param == 2) {
4d1d0a45
AD
23 $msg = check_for_update($link, false);
24
25 if (!$msg) {
cc17c205 26 print __("You are running the latest version of Tiny Tiny RSS. The
4d1d0a45
AD
27 fact that you are seeing this dialog is probably a bug.");
28 } else {
29 print $msg;
30 }
d9fa39f1
AD
31
32 }
33
8e00ae9b
AD
34 if ($param == 3) {
35 print __("TT-RSS has detected that update daemon is taking too long to
36 perform a feed update. This could indicate a problem like crash
37 or a hang. Please check the daemon process or contact instance
38 owner.");
f6854e44
AD
39
40 $stamp = (int)read_stampfile("update_daemon.stamp");
41
42 print "<p>" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp);
43
8e00ae9b
AD
44 }
45
ef16ae37
AD
46 print "</div>";
47
48 print "<div align='center'>";
49
50 print "<input class=\"button\"
51 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 52 value=\"".__('Close this window')."\">";
ef16ae37
AD
53
54 print "</div>";
55
5e6f933a 56 return;
ef16ae37
AD
57 }
58
ef8be8ea
AD
59 if ($id == "quickAddFeed") {
60
ecace165 61 print "<div id=\"infoBoxTitle\">".__('Subscribe to Feed')."</div>";
ef8be8ea
AD
62 print "<div class=\"infoBoxContents\">";
63
e6312f6c 64 print "<form id='feed_add_form' onsubmit='return false'>";
ef8be8ea
AD
65
66 print "<input type=\"hidden\" name=\"op\" value=\"pref-feeds\">";
ef8be8ea 67 print "<input type=\"hidden\" name=\"subop\" value=\"add\">";
442d77f1 68 print "<input type=\"hidden\" name=\"from\" value=\"tt-rss\">";
ef8be8ea 69
ecace165
AD
70 print "<div class=\"dlgSec\">".__("Feed")."</div>";
71 print "<div class=\"dlgSecCont\">";
72
73 print __("URL:") . " ";
74
75 print "<input size=\"40\" onblur=\"javascript:enableHotkeys()\"
18ab3d7a 76 onkeypress=\"return filterCR(event, subscribeToFeed)\"
ef8be8ea 77 onkeyup=\"toggleSubmitNotEmpty(this, 'fadd_submit_btn')\"
b5015f72 78 onchange=\"toggleSubmitNotEmpty(this, 'fadd_submit_btn')\"
ef8be8ea 79 onfocus=\"javascript:disableHotkeys()\" name=\"feed_url\"></td></tr>";
ecace165
AD
80
81 print "<br/>";
82
ef8be8ea 83 if (get_pref($link, 'ENABLE_FEED_CATS')) {
ecace165 84 print __('Place in category:') . " ";
ef8be8ea 85 print_feed_cat_select($link, "cat_id");
ef8be8ea
AD
86 }
87
ecace165
AD
88 print "</div>";
89
90
21f4756a
AD
91/* print "<tr><td colspan='2'><div class='insensitive'>";
92
93 print __("Some feeds require authentication. If you subscribe to such
94 feed, you will have to enter your login and password in Feed Editor");
95
96 print "</div></td></tr>"; */
97
b9073cd9
AD
98/* print "<div id='fadd_login_prompt'><br/>
99 <a href='javascript:appearBlockElement(\"fadd_login_container\",
100 \"fadd_login_prompt\")'>".__('Click here if this feed requires authentication.')."</a></div>"; */
f27de515 101
b9073cd9 102 print "<div id='fadd_login_container' style='display:none'>
ecace165
AD
103
104 <div class=\"dlgSec\">".__("Authentication")."</div>
105 <div class=\"dlgSecCont\">".
106
107 __('Login:') . " <input name='auth_login' size=\"20\"
108 onfocus=\"javascript:disableHotkeys()\"
109 onfocus=\"javascript:disableHotkeys()\"
110 onkeypress=\"return filterCR(event, subscribeToFeed)\"> ".
111 __('Password:') . "<input type='password'
112 name='auth_pass' size=\"20\"
113 onfocus=\"javascript:disableHotkeys()\"
114 onfocus=\"javascript:disableHotkeys()\"
115 onkeypress=\"return filterCR(event, subscribeToFeed)\">
116 </div></div>";
117
118
119 print "<div style=\"clear : both\">
120 <input type=\"checkbox\" id=\"fadd_login_check\"
121 onclick='checkboxToggleElement(this, \"fadd_login_container\")'>
122 <label for=\"fadd_login_check\">".
123 __('This feed requires authentication.')."</div>";
f27de515 124
ef8be8ea
AD
125 print "</form>";
126
ecace165 127 print "<div class=\"dlgButtons\">
ef8be8ea
AD
128 <input class=\"button\"
129 id=\"fadd_submit_btn\" disabled=\"true\"
18ab3d7a 130 type=\"submit\" onclick=\"return subscribeToFeed()\" value=\"".__('Subscribe')."\">
ef8be8ea
AD
131 <input class=\"button\"
132 type=\"submit\" onclick=\"return closeInfoBox()\"
ecace165
AD
133 value=\"".__('Cancel')."\"></div>";
134
5e6f933a 135 return;
ef8be8ea
AD
136 }
137
138 if ($id == "search") {
139
cc17c205 140 print "<div id=\"infoBoxTitle\">".__('Search')."</div>";
ef8be8ea
AD
141 print "<div class=\"infoBoxContents\">";
142
e6312f6c 143 print "<form id='search_form' onsubmit='return false'>";
ef8be8ea
AD
144
145 #$active_feed_id = db_escape_string($_GET["param"]);
146
147 $params = split(":", db_escape_string($_GET["param"]));
148
149 $active_feed_id = sprintf("%d", $params[0]);
150 $is_cat = $params[1] == "true";
151
cc17c205 152 print "<table width='100%'><tr><td>".__('Search:')."</td><td>";
ef8be8ea 153
3dc8ee84 154 print "<input name=\"query\" class=\"iedit\" type=\"search\"
ef8be8ea 155 onkeypress=\"return filterCR(event, search)\"
b5015f72 156 onchange=\"toggleSubmitNotEmpty(this, 'search_submit_btn')\"
ef8be8ea
AD
157 onkeyup=\"toggleSubmitNotEmpty(this, 'search_submit_btn')\"
158 value=\"\">
159 </td></tr>";
160
cc17c205 161 print "<tr><td>".__('Where:')."</td><td>";
ef8be8ea
AD
162
163 print "<select name=\"search_mode\">
cc17c205 164 <option value=\"all_feeds\">".__('All feeds')."</option>";
ef8be8ea
AD
165
166 $feed_title = getFeedTitle($link, $active_feed_id);
167
168 if (!$is_cat) {
169 $feed_cat_title = getFeedCatTitle($link, $active_feed_id);
170 } else {
171 $feed_cat_title = getCategoryTitle($link, $active_feed_id);
172 }
173
174 if ($active_feed_id && !$is_cat) {
cc17c205 175 print "<option selected value=\"this_feed\">$feed_title</option>";
ef8be8ea 176 } else {
cc17c205 177 print "<option disabled>".__('This feed')."</option>";
ef8be8ea
AD
178 }
179
180 if ($is_cat) {
181 $cat_preselected = "selected";
182 }
183
184 if (get_pref($link, 'ENABLE_FEED_CATS') && ($active_feed_id > 0 || $is_cat)) {
cc17c205 185 print "<option $cat_preselected value=\"this_cat\">$feed_cat_title</option>";
ef8be8ea 186 } else {
c4b0f96c 187 //print "<option disabled>".__('This category')."</option>";
ef8be8ea
AD
188 }
189
190 print "</select></td></tr>";
191
cc17c205 192 print "<tr><td>".__('Match on:')."</td><td>";
ef8be8ea
AD
193
194 $search_fields = array(
cc17c205
AD
195 "title" => __("Title"),
196 "content" => __("Content"),
197 "both" => __("Title or content"));
ef8be8ea
AD
198
199 print_select_hash("match_on", 3, $search_fields);
200
201 print "</td></tr></table>";
202
203 print "</form>";
204
205 print "<div align=\"right\">
206 <input type=\"submit\"
207 class=\"button\" onclick=\"javascript:search()\"
208 id=\"search_submit_btn\" disabled=\"true\"
cc17c205 209 value=\"".__('Search')."\">
ef8be8ea
AD
210 <input class=\"button\"
211 type=\"submit\" onclick=\"javascript:searchCancel()\"
cc17c205 212 value=\"".__('Cancel')."\"></div>";
ef8be8ea
AD
213
214 print "</div>";
215
5e6f933a
AD
216 return;
217
ef8be8ea
AD
218 }
219
220 if ($id == "quickAddLabel") {
ecace165 221 print "<div id=\"infoBoxTitle\">".__('Create Label')."</div>";
ef8be8ea
AD
222 print "<div class=\"infoBoxContents\">";
223
e6312f6c 224 print "<form id=\"label_edit_form\" onsubmit='return false'>";
ef8be8ea
AD
225
226 print "<input type=\"hidden\" name=\"op\" value=\"pref-labels\">";
227 print "<input type=\"hidden\" name=\"subop\" value=\"add\">";
228
10fa6615 229 print "<div class=\"dlgSec\">".__("Caption")."</div>";
ef8be8ea 230
10fa6615
AD
231 print "<div class=\"dlgSecCont\">";
232
233 print "<input onkeypress=\"return filterCR(event, labelEditSave)\"
b5015f72
AD
234 onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
235 onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
10fa6615
AD
236 name=\"description\" size=\"30\" value=\"$description\">";
237 print "</div>";
ef8be8ea 238
10fa6615 239 print "<div class=\"dlgSec\">".__("Match SQL")."</div>";
ef8be8ea 240
10fa6615 241 print "<div class=\"dlgSecCont\">";
ef8be8ea
AD
242
243 print "<textarea onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
10fa6615
AD
244 rows=\"6\" name=\"sql_exp\" class=\"labelSQL\" cols=\"50\">$sql_exp</textarea>";
245
246 print "</div>";
ef8be8ea
AD
247
248 print "</form>";
249
250 print "<div style=\"display : none\" id=\"label_test_result\"></div>";
251
10fa6615 252 print "<div class=\"dlgButtons\">";
ef8be8ea 253
b44d8c51 254 print "<div style='float : left'>";
6a5efb07
AD
255 print "<input type=\"submit\"
256 class=\"button\" onclick=\"return displayHelpInfobox(1)\"
257 value=\"".__('Help')."\"> ";
b44d8c51 258 print "</div>";
6a5efb07 259
cc17c205 260 print "<input type=\"submit\" onclick=\"labelTest()\" value=\"".__('Test')."\">
ef8be8ea
AD
261 ";
262
263 print "<input type=\"submit\"
264 id=\"infobox_submit\"
265 disabled=\"true\"
266 class=\"button\" onclick=\"return addLabel()\"
cc17c205 267 value=\"".__('Create')."\"> ";
ef8be8ea
AD
268
269 print "<input class=\"button\"
270 type=\"submit\" onclick=\"return labelEditCancel()\"
cc17c205 271 value=\"".__('Cancel')."\">";
5e6f933a
AD
272
273 return;
ef8be8ea
AD
274 }
275
276 if ($id == "quickAddFilter") {
277
278 $active_feed_id = db_escape_string($_GET["param"]);
279
ecace165 280 print "<div id=\"infoBoxTitle\">".__('Create Filter')."</div>";
ef8be8ea
AD
281 print "<div class=\"infoBoxContents\">";
282
e6312f6c 283 print "<form id=\"filter_add_form\" onsubmit='return false'>";
ef8be8ea
AD
284
285 print "<input type=\"hidden\" name=\"op\" value=\"pref-filters\">";
286 print "<input type=\"hidden\" name=\"quiet\" value=\"1\">";
287 print "<input type=\"hidden\" name=\"subop\" value=\"add\">";
288
289// print "<div class=\"notice\"><b>Note:</b> filter will only apply to new articles.</div>";
290
291 $result = db_query($link, "SELECT id,description
292 FROM ttrss_filter_types ORDER BY description");
293
294 $filter_types = array();
295
296 while ($line = db_fetch_assoc($result)) {
297 //array_push($filter_types, $line["description"]);
89cb787e 298 $filter_types[$line["id"]] = __($line["description"]);
ef8be8ea
AD
299 }
300
10fa6615 301/* print "<table width='100%'>";
ef8be8ea 302
cc17c205 303 print "<tr><td>".__('Match:')."</td>
18ab3d7a 304 <td><input onkeypress=\"return filterCR(event, createFilter)\"
b5015f72
AD
305 onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
306 onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
8011ac36
AD
307 name=\"reg_exp\" class=\"iedit\">";
308
cc17c205 309 print "</td></tr><tr><td>".__('On field:')."</td><td>";
8011ac36
AD
310
311 print_select_hash("filter_type", 1, $filter_types, "class=\"_iedit\"");
ef8be8ea
AD
312
313 print "</td></tr>";
cc17c205 314 print "<tr><td>".__('Feed:')."</td><td colspan='2'>";
ef8be8ea
AD
315
316 print_feed_select($link, "feed_id", $active_feed_id);
317
318 print "</td></tr>";
319
cc17c205 320 print "<tr><td>".__('Action:')."</td>";
ef8be8ea 321
073ca0e6
AD
322 print "<td colspan='2'><select name=\"action_id\"
323 onchange=\"filterDlgCheckAction(this)\">";
ef8be8ea
AD
324
325 $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
326 ORDER BY name");
327
328 while ($line = db_fetch_assoc($result)) {
89cb787e 329 printf("<option value='%d'>%s</option>", $line["id"], __($line["description"]));
ef8be8ea
AD
330 }
331
332 print "</select>";
333
073ca0e6
AD
334 print "</td></tr>";
335
cc17c205 336 print "<tr><td>".__('Params:')."</td>";
073ca0e6
AD
337
338 print "<td><input disabled class='iedit' name='action_param'></td></tr>";
339
cc17c205 340 print "<tr><td valign='top'>".__('Options:')."</td><td>";
3f2ff803
AD
341
342 print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\">
cc17c205 343 <label for=\"inverse\">".__('Inverse match')."</label></td></tr>";
3f2ff803 344
073ca0e6 345 print "</table>";
ef8be8ea 346
10fa6615
AD
347 print "</form>"; */
348
349 print "<div class=\"dlgSec\">".__("Match")."</div>";
350
351 print "<div class=\"dlgSecCont\">";
352
353 print "<input onkeypress=\"return filterCR(event, filterEditSave)\"
354 onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
355 onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
356 name=\"reg_exp\" size=\"30\" value=\"$reg_exp\">";
357
358 print " " . __("on field") . " ";
359 print_select_hash("filter_type", 1, $filter_types);
360
361 print "<br/>";
362
363 print __("in") . " ";
364 print_feed_select($link, "feed_id", $active_feed_id);
365
366 print "</div>";
367
ecace165 368 print "<div class=\"dlgSec\">".__("Perform Action")."</div>";
10fa6615
AD
369
370 print "<div class=\"dlgSecCont\">";
371
372 print "<select name=\"action_id\"
373 onchange=\"filterDlgCheckAction(this)\">";
374
375 $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
376 ORDER BY name");
377
378 while ($line = db_fetch_assoc($result)) {
379 printf("<option value='%d'>%s</option>", $line["id"], __($line["description"]));
380 }
381
382 print "</select>";
383
384 print " " . __("with params") . " ";
385
386 print "<input disabled size=\"20\"
387 name=\"action_param\">";
388
389 print "</div>";
390
391 print "<div class=\"dlgSec\">".__("Options")."</div>";
392 print "<div class=\"dlgSecCont\">";
393
ecace165
AD
394 print "<div style=\"line-height : 100%\">";
395
10fa6615
AD
396 print "<input type=\"checkbox\" name=\"enabled\" id=\"enabled\" checked=\"1\">
397 <label for=\"enabled\">".__('Enabled')."</label><br/>";
398
399 print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\">
400 <label for=\"inverse\">".__('Inverse match')."</label>";
401
402 print "</div>";
ecace165 403 print "</div>";
10fa6615 404
ef8be8ea
AD
405 print "</form>";
406
10fa6615 407 print "<div class=\"dlgButtons\">";
ef8be8ea
AD
408
409 print "<input type=\"submit\"
410 id=\"infobox_submit\"
18ab3d7a 411 class=\"button\" onclick=\"return createFilter()\"
cc17c205 412 disabled=\"true\" value=\"".__('Create')."\"> ";
ef8be8ea
AD
413
414 print "<input class=\"button\"
415 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 416 value=\"".__('Cancel')."\">";
ef8be8ea
AD
417
418 print "</div>";
419
420// print "</td></tr></table>";
421
5e6f933a 422 return;
ef8be8ea
AD
423 }
424
a3656a41
AD
425 if ($id == "feedUpdateErrors") {
426
cc17c205 427 print "<div id=\"infoBoxTitle\">".__('Update Errors')."</div>";
a3656a41
AD
428 print "<div class=\"infoBoxContents\">";
429
cc17c205 430 print __("These feeds have not been updated because of errors:");
a3656a41
AD
431
432 $result = db_query($link, "SELECT id,title,feed_url,last_error
433 FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]);
434
e8dd519b 435 print "<ul class='feedErrorsList'>";
a3656a41
AD
436
437 while ($line = db_fetch_assoc($result)) {
438 print "<li><b>" . $line["title"] . "</b> (" . $line["feed_url"] . "): " .
439 "<em>" . $line["last_error"] . "</em>";
440 }
441
442 print "</ul>";
443 print "</div>";
444
445 print "<div align='center'>";
446
447 print "<input class=\"button\"
448 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 449 value=\"".__('Close')."\">";
a3656a41
AD
450
451 print "</div>";
452
aa330b93 453 return;
a3656a41
AD
454 }
455
0b126ac2
AD
456 if ($id == "editArticleTags") {
457
cc17c205 458 print "<div id=\"infoBoxTitle\">".__('Edit Tags')."</div>";
0b126ac2
AD
459 print "<div class=\"infoBoxContents\">";
460
e6312f6c 461 print "<form id=\"tag_edit_form\" onsubmit='return false'>";
0b126ac2 462
cc17c205 463 print __("Tags for this article (separated by commas):")."<br>";
0b126ac2
AD
464
465 $tags = get_article_tags($link, $param);
466
467 $tags_str = join(", ", $tags);
468
d62a3b63
AD
469 print "<table width='100%'>";
470
471 print "<tr><td colspan='2'><input type=\"hidden\" name=\"id\" value=\"$param\"></td></tr>";
472
05fcdf52
AD
473 print "<tr><td colspan='2'><textarea rows='4' class='iedit' id='tags_str'
474 name='tags_str'>$tags_str</textarea>
475 <div class=\"autocomplete\" id=\"tags_choices\"
476 style=\"display:none\"></div>
477 </td></tr>";
d62a3b63 478
05fcdf52 479/* print "<tr><td>".__('Add existing tag:')."</td>";
0b126ac2 480
d62a3b63
AD
481 $result = db_query($link, "SELECT DISTINCT tag_name FROM ttrss_tags
482 WHERE owner_uid = '".$_SESSION["uid"]."' ORDER BY tag_name");
483
484 $found_tags = array();
485
486 array_push($found_tags, '');
487
488 while ($line = db_fetch_assoc($result)) {
e4609ea9 489 array_push($found_tags, truncate_string($line["tag_name"], 20));
d62a3b63
AD
490 }
491
492 print "<td align='right'>";
493
494 print_select("found_tags", '', $found_tags, "onchange=\"javascript:editTagsInsert()\"");
495
05fcdf52 496 print "</td>";
d62a3b63 497
05fcdf52 498 print "</tr>"; */
d62a3b63
AD
499
500 print "</table>";
0b126ac2
AD
501
502 print "</form>";
503
504 print "<div align='right'>";
505
506 print "<input class=\"button\"
507 type=\"submit\" onclick=\"return editTagsSave()\"
cc17c205 508 value=\"".__('Save')."\"> ";
0b126ac2
AD
509
510 print "<input class=\"button\"
511 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 512 value=\"".__('Cancel')."\">";
0b126ac2
AD
513
514
515 print "</div>";
516
5e6f933a 517 return;
0b126ac2
AD
518 }
519
0979b696 520 if ($id == "printTagCloud") {
27258a90 521 print "<div id=\"infoBoxTitle\">".__('Tag cloud')."</div>";
0979b696
AD
522 print "<div class=\"infoBoxContents\">";
523
dcac082b 524 print __("Showing most popular tags ")." (<a
ef1ac7c7 525 href='javascript:toggleTags(true)'>".__('browse more')."</a>):<br/>";
0979b696
AD
526
527 print "<div class=\"tagCloudContainer\">";
528
529 printTagCloud($link);
530
531 print "</div>";
532
533 print "<div align='center'>";
534 print "<input class=\"button\"
535 type=\"submit\" onclick=\"return closeInfoBox()\"
3076c7b8 536 value=\"".__('Close this window')."\">";
0979b696
AD
537 print "</div>";
538
539 print "</div>";
540
541 return;
542 }
543
5e6f933a
AD
544 print "<div id='infoBoxTitle'>Internal Error</div>
545 <div id='infoBoxContents'>
546 <p>Unknown dialog <b>$id</b></p>
547 </div></div>";
548
ef8be8ea
AD
549 }
550?>