]> git.wh0rd.org - tt-rss.git/blame - modules/popup-dialog.php
article_publish_link: calculate published feed in a different way (closes #214)
[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
5bac8c29
AD
152 print "<div class=\"dlgSec\">".__('Search')."</div>";
153
154 print "<div class=\"dlgSecCont\">";
155
156 print "<input name=\"query\" size=\"30\" type=\"search\"
ef8be8ea 157 onkeypress=\"return filterCR(event, search)\"
b5015f72 158 onchange=\"toggleSubmitNotEmpty(this, 'search_submit_btn')\"
ef8be8ea 159 onkeyup=\"toggleSubmitNotEmpty(this, 'search_submit_btn')\"
5bac8c29
AD
160 value=\"\">";
161
162 print " " . __('match on:')." ";
163
164 $search_fields = array(
165 "title" => __("Title"),
166 "content" => __("Content"),
167 "both" => __("Title or content"));
168
169 print_select_hash("match_on", 3, $search_fields);
170
171
172 print "<br/>".__('Limit search to:')." ";
ef8be8ea
AD
173
174 print "<select name=\"search_mode\">
cc17c205 175 <option value=\"all_feeds\">".__('All feeds')."</option>";
ef8be8ea
AD
176
177 $feed_title = getFeedTitle($link, $active_feed_id);
178
179 if (!$is_cat) {
180 $feed_cat_title = getFeedCatTitle($link, $active_feed_id);
181 } else {
182 $feed_cat_title = getCategoryTitle($link, $active_feed_id);
183 }
184
185 if ($active_feed_id && !$is_cat) {
cc17c205 186 print "<option selected value=\"this_feed\">$feed_title</option>";
ef8be8ea 187 } else {
cc17c205 188 print "<option disabled>".__('This feed')."</option>";
ef8be8ea
AD
189 }
190
191 if ($is_cat) {
192 $cat_preselected = "selected";
193 }
194
195 if (get_pref($link, 'ENABLE_FEED_CATS') && ($active_feed_id > 0 || $is_cat)) {
cc17c205 196 print "<option $cat_preselected value=\"this_cat\">$feed_cat_title</option>";
ef8be8ea 197 } else {
c4b0f96c 198 //print "<option disabled>".__('This category')."</option>";
ef8be8ea
AD
199 }
200
5bac8c29 201 print "</select>";
ef8be8ea 202
5bac8c29 203 print "</div>";
ef8be8ea
AD
204
205 print "</form>";
206
5bac8c29 207 print "<div class=\"dlgButtons\">
ef8be8ea
AD
208 <input type=\"submit\"
209 class=\"button\" onclick=\"javascript:search()\"
210 id=\"search_submit_btn\" disabled=\"true\"
cc17c205 211 value=\"".__('Search')."\">
ef8be8ea
AD
212 <input class=\"button\"
213 type=\"submit\" onclick=\"javascript:searchCancel()\"
cc17c205 214 value=\"".__('Cancel')."\"></div>";
ef8be8ea
AD
215
216 print "</div>";
217
5e6f933a
AD
218 return;
219
ef8be8ea
AD
220 }
221
222 if ($id == "quickAddLabel") {
ecace165 223 print "<div id=\"infoBoxTitle\">".__('Create Label')."</div>";
ef8be8ea
AD
224 print "<div class=\"infoBoxContents\">";
225
e6312f6c 226 print "<form id=\"label_edit_form\" onsubmit='return false'>";
ef8be8ea
AD
227
228 print "<input type=\"hidden\" name=\"op\" value=\"pref-labels\">";
229 print "<input type=\"hidden\" name=\"subop\" value=\"add\">";
230
10fa6615 231 print "<div class=\"dlgSec\">".__("Caption")."</div>";
ef8be8ea 232
10fa6615
AD
233 print "<div class=\"dlgSecCont\">";
234
8df90057 235 print "<input onkeypress=\"return filterCR(event, addLabel)\"
b5015f72
AD
236 onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
237 onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
10fa6615
AD
238 name=\"description\" size=\"30\" value=\"$description\">";
239 print "</div>";
ef8be8ea 240
10fa6615 241 print "<div class=\"dlgSec\">".__("Match SQL")."</div>";
ef8be8ea 242
10fa6615 243 print "<div class=\"dlgSecCont\">";
ef8be8ea
AD
244
245 print "<textarea onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
10fa6615
AD
246 rows=\"6\" name=\"sql_exp\" class=\"labelSQL\" cols=\"50\">$sql_exp</textarea>";
247
248 print "</div>";
ef8be8ea
AD
249
250 print "</form>";
251
252 print "<div style=\"display : none\" id=\"label_test_result\"></div>";
253
10fa6615 254 print "<div class=\"dlgButtons\">";
ef8be8ea 255
b44d8c51 256 print "<div style='float : left'>";
6a5efb07
AD
257 print "<input type=\"submit\"
258 class=\"button\" onclick=\"return displayHelpInfobox(1)\"
259 value=\"".__('Help')."\"> ";
b44d8c51 260 print "</div>";
6a5efb07 261
cc17c205 262 print "<input type=\"submit\" onclick=\"labelTest()\" value=\"".__('Test')."\">
ef8be8ea
AD
263 ";
264
265 print "<input type=\"submit\"
266 id=\"infobox_submit\"
267 disabled=\"true\"
268 class=\"button\" onclick=\"return addLabel()\"
cc17c205 269 value=\"".__('Create')."\"> ";
ef8be8ea
AD
270
271 print "<input class=\"button\"
272 type=\"submit\" onclick=\"return labelEditCancel()\"
cc17c205 273 value=\"".__('Cancel')."\">";
5e6f933a
AD
274
275 return;
ef8be8ea
AD
276 }
277
278 if ($id == "quickAddFilter") {
279
280 $active_feed_id = db_escape_string($_GET["param"]);
281
ecace165 282 print "<div id=\"infoBoxTitle\">".__('Create Filter')."</div>";
ef8be8ea
AD
283 print "<div class=\"infoBoxContents\">";
284
e6312f6c 285 print "<form id=\"filter_add_form\" onsubmit='return false'>";
ef8be8ea
AD
286
287 print "<input type=\"hidden\" name=\"op\" value=\"pref-filters\">";
288 print "<input type=\"hidden\" name=\"quiet\" value=\"1\">";
289 print "<input type=\"hidden\" name=\"subop\" value=\"add\">";
290
291// print "<div class=\"notice\"><b>Note:</b> filter will only apply to new articles.</div>";
292
293 $result = db_query($link, "SELECT id,description
294 FROM ttrss_filter_types ORDER BY description");
295
296 $filter_types = array();
297
298 while ($line = db_fetch_assoc($result)) {
299 //array_push($filter_types, $line["description"]);
89cb787e 300 $filter_types[$line["id"]] = __($line["description"]);
ef8be8ea
AD
301 }
302
10fa6615 303/* print "<table width='100%'>";
ef8be8ea 304
cc17c205 305 print "<tr><td>".__('Match:')."</td>
18ab3d7a 306 <td><input onkeypress=\"return filterCR(event, createFilter)\"
b5015f72
AD
307 onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
308 onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
8011ac36
AD
309 name=\"reg_exp\" class=\"iedit\">";
310
cc17c205 311 print "</td></tr><tr><td>".__('On field:')."</td><td>";
8011ac36
AD
312
313 print_select_hash("filter_type", 1, $filter_types, "class=\"_iedit\"");
ef8be8ea
AD
314
315 print "</td></tr>";
cc17c205 316 print "<tr><td>".__('Feed:')."</td><td colspan='2'>";
ef8be8ea
AD
317
318 print_feed_select($link, "feed_id", $active_feed_id);
319
320 print "</td></tr>";
321
cc17c205 322 print "<tr><td>".__('Action:')."</td>";
ef8be8ea 323
073ca0e6
AD
324 print "<td colspan='2'><select name=\"action_id\"
325 onchange=\"filterDlgCheckAction(this)\">";
ef8be8ea
AD
326
327 $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
328 ORDER BY name");
329
330 while ($line = db_fetch_assoc($result)) {
89cb787e 331 printf("<option value='%d'>%s</option>", $line["id"], __($line["description"]));
ef8be8ea
AD
332 }
333
334 print "</select>";
335
073ca0e6
AD
336 print "</td></tr>";
337
cc17c205 338 print "<tr><td>".__('Params:')."</td>";
073ca0e6
AD
339
340 print "<td><input disabled class='iedit' name='action_param'></td></tr>";
341
cc17c205 342 print "<tr><td valign='top'>".__('Options:')."</td><td>";
3f2ff803
AD
343
344 print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\">
cc17c205 345 <label for=\"inverse\">".__('Inverse match')."</label></td></tr>";
3f2ff803 346
073ca0e6 347 print "</table>";
ef8be8ea 348
10fa6615
AD
349 print "</form>"; */
350
351 print "<div class=\"dlgSec\">".__("Match")."</div>";
352
353 print "<div class=\"dlgSecCont\">";
354
8df90057 355 print "<input onkeypress=\"return filterCR(event, createFilter)\"
10fa6615
AD
356 onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
357 onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
358 name=\"reg_exp\" size=\"30\" value=\"$reg_exp\">";
359
360 print " " . __("on field") . " ";
361 print_select_hash("filter_type", 1, $filter_types);
362
363 print "<br/>";
364
365 print __("in") . " ";
366 print_feed_select($link, "feed_id", $active_feed_id);
367
368 print "</div>";
369
ecace165 370 print "<div class=\"dlgSec\">".__("Perform Action")."</div>";
10fa6615
AD
371
372 print "<div class=\"dlgSecCont\">";
373
374 print "<select name=\"action_id\"
375 onchange=\"filterDlgCheckAction(this)\">";
376
377 $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
378 ORDER BY name");
379
380 while ($line = db_fetch_assoc($result)) {
381 printf("<option value='%d'>%s</option>", $line["id"], __($line["description"]));
382 }
383
384 print "</select>";
385
143a4973
AD
386 print "<span id=\"filter_dlg_param_box\" style=\"display : none\">";
387 print " " . __("with parameters:") . " ";
388 print "<input size=\"20\"
389 name=\"action_param\">";
390 print "</span>";
10fa6615 391
143a4973 392 print "&nbsp;"; // tiny layout hack
10fa6615
AD
393
394 print "</div>";
395
396 print "<div class=\"dlgSec\">".__("Options")."</div>";
397 print "<div class=\"dlgSecCont\">";
398
ecace165
AD
399 print "<div style=\"line-height : 100%\">";
400
10fa6615
AD
401 print "<input type=\"checkbox\" name=\"enabled\" id=\"enabled\" checked=\"1\">
402 <label for=\"enabled\">".__('Enabled')."</label><br/>";
403
404 print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\">
405 <label for=\"inverse\">".__('Inverse match')."</label>";
406
407 print "</div>";
ecace165 408 print "</div>";
10fa6615 409
ef8be8ea
AD
410 print "</form>";
411
10fa6615 412 print "<div class=\"dlgButtons\">";
ef8be8ea
AD
413
414 print "<input type=\"submit\"
415 id=\"infobox_submit\"
18ab3d7a 416 class=\"button\" onclick=\"return createFilter()\"
cc17c205 417 disabled=\"true\" value=\"".__('Create')."\"> ";
ef8be8ea
AD
418
419 print "<input class=\"button\"
420 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 421 value=\"".__('Cancel')."\">";
ef8be8ea
AD
422
423 print "</div>";
424
425// print "</td></tr></table>";
426
5e6f933a 427 return;
ef8be8ea
AD
428 }
429
a3656a41
AD
430 if ($id == "feedUpdateErrors") {
431
cc17c205 432 print "<div id=\"infoBoxTitle\">".__('Update Errors')."</div>";
a3656a41
AD
433 print "<div class=\"infoBoxContents\">";
434
cc17c205 435 print __("These feeds have not been updated because of errors:");
a3656a41
AD
436
437 $result = db_query($link, "SELECT id,title,feed_url,last_error
438 FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]);
439
e8dd519b 440 print "<ul class='feedErrorsList'>";
a3656a41
AD
441
442 while ($line = db_fetch_assoc($result)) {
443 print "<li><b>" . $line["title"] . "</b> (" . $line["feed_url"] . "): " .
444 "<em>" . $line["last_error"] . "</em>";
445 }
446
447 print "</ul>";
448 print "</div>";
449
450 print "<div align='center'>";
451
452 print "<input class=\"button\"
453 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 454 value=\"".__('Close')."\">";
a3656a41
AD
455
456 print "</div>";
457
aa330b93 458 return;
a3656a41
AD
459 }
460
0b126ac2
AD
461 if ($id == "editArticleTags") {
462
cc17c205 463 print "<div id=\"infoBoxTitle\">".__('Edit Tags')."</div>";
0b126ac2
AD
464 print "<div class=\"infoBoxContents\">";
465
e6312f6c 466 print "<form id=\"tag_edit_form\" onsubmit='return false'>";
0b126ac2 467
cc17c205 468 print __("Tags for this article (separated by commas):")."<br>";
0b126ac2
AD
469
470 $tags = get_article_tags($link, $param);
471
472 $tags_str = join(", ", $tags);
473
d62a3b63
AD
474 print "<table width='100%'>";
475
476 print "<tr><td colspan='2'><input type=\"hidden\" name=\"id\" value=\"$param\"></td></tr>";
477
05fcdf52
AD
478 print "<tr><td colspan='2'><textarea rows='4' class='iedit' id='tags_str'
479 name='tags_str'>$tags_str</textarea>
480 <div class=\"autocomplete\" id=\"tags_choices\"
481 style=\"display:none\"></div>
482 </td></tr>";
d62a3b63 483
05fcdf52 484/* print "<tr><td>".__('Add existing tag:')."</td>";
0b126ac2 485
d62a3b63
AD
486 $result = db_query($link, "SELECT DISTINCT tag_name FROM ttrss_tags
487 WHERE owner_uid = '".$_SESSION["uid"]."' ORDER BY tag_name");
488
489 $found_tags = array();
490
491 array_push($found_tags, '');
492
493 while ($line = db_fetch_assoc($result)) {
e4609ea9 494 array_push($found_tags, truncate_string($line["tag_name"], 20));
d62a3b63
AD
495 }
496
497 print "<td align='right'>";
498
499 print_select("found_tags", '', $found_tags, "onchange=\"javascript:editTagsInsert()\"");
500
05fcdf52 501 print "</td>";
d62a3b63 502
05fcdf52 503 print "</tr>"; */
d62a3b63
AD
504
505 print "</table>";
0b126ac2
AD
506
507 print "</form>";
508
509 print "<div align='right'>";
510
511 print "<input class=\"button\"
512 type=\"submit\" onclick=\"return editTagsSave()\"
cc17c205 513 value=\"".__('Save')."\"> ";
0b126ac2
AD
514
515 print "<input class=\"button\"
516 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 517 value=\"".__('Cancel')."\">";
0b126ac2
AD
518
519
520 print "</div>";
521
5e6f933a 522 return;
0b126ac2
AD
523 }
524
0979b696 525 if ($id == "printTagCloud") {
27258a90 526 print "<div id=\"infoBoxTitle\">".__('Tag cloud')."</div>";
0979b696
AD
527 print "<div class=\"infoBoxContents\">";
528
dcac082b 529 print __("Showing most popular tags ")." (<a
ef1ac7c7 530 href='javascript:toggleTags(true)'>".__('browse more')."</a>):<br/>";
0979b696
AD
531
532 print "<div class=\"tagCloudContainer\">";
533
534 printTagCloud($link);
535
536 print "</div>";
537
538 print "<div align='center'>";
539 print "<input class=\"button\"
540 type=\"submit\" onclick=\"return closeInfoBox()\"
3076c7b8 541 value=\"".__('Close this window')."\">";
0979b696
AD
542 print "</div>";
543
544 print "</div>";
545
546 return;
547 }
548
5e6f933a
AD
549 print "<div id='infoBoxTitle'>Internal Error</div>
550 <div id='infoBoxContents'>
551 <p>Unknown dialog <b>$id</b></p>
552 </div></div>";
553
ef8be8ea
AD
554 }
555?>