]> git.wh0rd.org - tt-rss.git/blame - modules/popup-dialog.php
createFilter: add label select dropbox
[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
ceb30ba4 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')\"
071ec48f
AD
246 rows=\"6\" name=\"sql_exp\" class=\"labelSQL\"
247 cols=\"50\">$sql_exp</textarea>";
248
249 print "<br/>";
250
251 print_label_dlg_common_examples();
252
10fa6615
AD
253
254 print "</div>";
ef8be8ea
AD
255
256 print "</form>";
257
258 print "<div style=\"display : none\" id=\"label_test_result\"></div>";
259
10fa6615 260 print "<div class=\"dlgButtons\">";
ef8be8ea 261
b44d8c51 262 print "<div style='float : left'>";
6a5efb07
AD
263 print "<input type=\"submit\"
264 class=\"button\" onclick=\"return displayHelpInfobox(1)\"
265 value=\"".__('Help')."\"> ";
b44d8c51 266 print "</div>";
6a5efb07 267
cc17c205 268 print "<input type=\"submit\" onclick=\"labelTest()\" value=\"".__('Test')."\">
ef8be8ea
AD
269 ";
270
271 print "<input type=\"submit\"
272 id=\"infobox_submit\"
273 disabled=\"true\"
274 class=\"button\" onclick=\"return addLabel()\"
cc17c205 275 value=\"".__('Create')."\"> ";
ef8be8ea
AD
276
277 print "<input class=\"button\"
278 type=\"submit\" onclick=\"return labelEditCancel()\"
cc17c205 279 value=\"".__('Cancel')."\">";
5e6f933a
AD
280
281 return;
ceb30ba4 282 } */
ef8be8ea
AD
283
284 if ($id == "quickAddFilter") {
285
286 $active_feed_id = db_escape_string($_GET["param"]);
287
ecace165 288 print "<div id=\"infoBoxTitle\">".__('Create Filter')."</div>";
ef8be8ea
AD
289 print "<div class=\"infoBoxContents\">";
290
e6312f6c 291 print "<form id=\"filter_add_form\" onsubmit='return false'>";
ef8be8ea
AD
292
293 print "<input type=\"hidden\" name=\"op\" value=\"pref-filters\">";
294 print "<input type=\"hidden\" name=\"quiet\" value=\"1\">";
295 print "<input type=\"hidden\" name=\"subop\" value=\"add\">";
296
297// print "<div class=\"notice\"><b>Note:</b> filter will only apply to new articles.</div>";
298
299 $result = db_query($link, "SELECT id,description
300 FROM ttrss_filter_types ORDER BY description");
301
302 $filter_types = array();
303
304 while ($line = db_fetch_assoc($result)) {
305 //array_push($filter_types, $line["description"]);
89cb787e 306 $filter_types[$line["id"]] = __($line["description"]);
ef8be8ea
AD
307 }
308
10fa6615 309/* print "<table width='100%'>";
ef8be8ea 310
cc17c205 311 print "<tr><td>".__('Match:')."</td>
18ab3d7a 312 <td><input onkeypress=\"return filterCR(event, createFilter)\"
b5015f72
AD
313 onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
314 onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
8011ac36
AD
315 name=\"reg_exp\" class=\"iedit\">";
316
cc17c205 317 print "</td></tr><tr><td>".__('On field:')."</td><td>";
8011ac36
AD
318
319 print_select_hash("filter_type", 1, $filter_types, "class=\"_iedit\"");
ef8be8ea
AD
320
321 print "</td></tr>";
cc17c205 322 print "<tr><td>".__('Feed:')."</td><td colspan='2'>";
ef8be8ea
AD
323
324 print_feed_select($link, "feed_id", $active_feed_id);
325
326 print "</td></tr>";
327
cc17c205 328 print "<tr><td>".__('Action:')."</td>";
ef8be8ea 329
073ca0e6
AD
330 print "<td colspan='2'><select name=\"action_id\"
331 onchange=\"filterDlgCheckAction(this)\">";
ef8be8ea
AD
332
333 $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
334 ORDER BY name");
335
336 while ($line = db_fetch_assoc($result)) {
89cb787e 337 printf("<option value='%d'>%s</option>", $line["id"], __($line["description"]));
ef8be8ea
AD
338 }
339
340 print "</select>";
341
073ca0e6
AD
342 print "</td></tr>";
343
cc17c205 344 print "<tr><td>".__('Params:')."</td>";
073ca0e6
AD
345
346 print "<td><input disabled class='iedit' name='action_param'></td></tr>";
347
cc17c205 348 print "<tr><td valign='top'>".__('Options:')."</td><td>";
3f2ff803
AD
349
350 print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\">
cc17c205 351 <label for=\"inverse\">".__('Inverse match')."</label></td></tr>";
3f2ff803 352
073ca0e6 353 print "</table>";
ef8be8ea 354
10fa6615
AD
355 print "</form>"; */
356
357 print "<div class=\"dlgSec\">".__("Match")."</div>";
358
359 print "<div class=\"dlgSecCont\">";
360
d0da85c2 361 print "<span id=\"filter_dlg_date_mod_box\" style=\"display : none\">";
6e278744 362 print __("Date") . " ";
44d0e774
AD
363
364 $filter_params = array(
365 "before" => __("before"),
366 "after" => __("after"));
367
368 print_select_hash("filter_date_modifier", "before", $filter_params);
369
370 print "&nbsp;</span>";
d0da85c2 371
8df90057 372 print "<input onkeypress=\"return filterCR(event, createFilter)\"
10fa6615
AD
373 onkeyup=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
374 onchange=\"toggleSubmitNotEmpty(this, 'infobox_submit')\"
375 name=\"reg_exp\" size=\"30\" value=\"$reg_exp\">";
376
6e278744 377 print "<span id=\"filter_dlg_date_chk_box\" style=\"display : none\">";
d0da85c2
AD
378 print "&nbsp;<input class=\"button\"
379 type=\"submit\" onclick=\"return filterDlgCheckDate()\"
6e278744 380 value=\"".__('Check it')."\">";
d0da85c2
AD
381 print "</span>";
382
383 print "<br/> " . __("on field") . " ";
384 print_select_hash("filter_type", 1, $filter_types,
385 'onchange="filterDlgCheckType(this)"');
10fa6615
AD
386
387 print "<br/>";
388
389 print __("in") . " ";
390 print_feed_select($link, "feed_id", $active_feed_id);
391
392 print "</div>";
393
ecace165 394 print "<div class=\"dlgSec\">".__("Perform Action")."</div>";
10fa6615
AD
395
396 print "<div class=\"dlgSecCont\">";
397
398 print "<select name=\"action_id\"
399 onchange=\"filterDlgCheckAction(this)\">";
400
401 $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
402 ORDER BY name");
403
404 while ($line = db_fetch_assoc($result)) {
405 printf("<option value='%d'>%s</option>", $line["id"], __($line["description"]));
406 }
407
408 print "</select>";
409
143a4973
AD
410 print "<span id=\"filter_dlg_param_box\" style=\"display : none\">";
411 print " " . __("with parameters:") . " ";
412 print "<input size=\"20\"
074bf20c 413 onkeypress=\"return filterCR(event, createFilter)\"
143a4973 414 name=\"action_param\">";
6427a306
AD
415
416 print_label_select($link, "action_param_label", $action_param);
417
143a4973 418 print "</span>";
10fa6615 419
143a4973 420 print "&nbsp;"; // tiny layout hack
10fa6615
AD
421
422 print "</div>";
423
424 print "<div class=\"dlgSec\">".__("Options")."</div>";
425 print "<div class=\"dlgSecCont\">";
426
ecace165
AD
427 print "<div style=\"line-height : 100%\">";
428
10fa6615
AD
429 print "<input type=\"checkbox\" name=\"enabled\" id=\"enabled\" checked=\"1\">
430 <label for=\"enabled\">".__('Enabled')."</label><br/>";
431
432 print "<input type=\"checkbox\" name=\"inverse\" id=\"inverse\">
433 <label for=\"inverse\">".__('Inverse match')."</label>";
434
435 print "</div>";
ecace165 436 print "</div>";
10fa6615 437
ef8be8ea
AD
438 print "</form>";
439
10fa6615 440 print "<div class=\"dlgButtons\">";
ef8be8ea
AD
441
442 print "<input type=\"submit\"
443 id=\"infobox_submit\"
18ab3d7a 444 class=\"button\" onclick=\"return createFilter()\"
cc17c205 445 disabled=\"true\" value=\"".__('Create')."\"> ";
ef8be8ea
AD
446
447 print "<input class=\"button\"
448 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 449 value=\"".__('Cancel')."\">";
ef8be8ea
AD
450
451 print "</div>";
452
453// print "</td></tr></table>";
454
5e6f933a 455 return;
ef8be8ea
AD
456 }
457
a3656a41
AD
458 if ($id == "feedUpdateErrors") {
459
cc17c205 460 print "<div id=\"infoBoxTitle\">".__('Update Errors')."</div>";
a3656a41
AD
461 print "<div class=\"infoBoxContents\">";
462
cc17c205 463 print __("These feeds have not been updated because of errors:");
a3656a41
AD
464
465 $result = db_query($link, "SELECT id,title,feed_url,last_error
466 FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]);
467
e8dd519b 468 print "<ul class='feedErrorsList'>";
a3656a41
AD
469
470 while ($line = db_fetch_assoc($result)) {
471 print "<li><b>" . $line["title"] . "</b> (" . $line["feed_url"] . "): " .
472 "<em>" . $line["last_error"] . "</em>";
473 }
474
475 print "</ul>";
a3656a41
AD
476
477 print "<div align='center'>";
478
479 print "<input class=\"button\"
480 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 481 value=\"".__('Close')."\">";
a3656a41
AD
482
483 print "</div>";
484
aa330b93 485 return;
a3656a41
AD
486 }
487
0b126ac2
AD
488 if ($id == "editArticleTags") {
489
cc17c205 490 print "<div id=\"infoBoxTitle\">".__('Edit Tags')."</div>";
0b126ac2
AD
491 print "<div class=\"infoBoxContents\">";
492
e6312f6c 493 print "<form id=\"tag_edit_form\" onsubmit='return false'>";
0b126ac2 494
cc17c205 495 print __("Tags for this article (separated by commas):")."<br>";
0b126ac2
AD
496
497 $tags = get_article_tags($link, $param);
498
499 $tags_str = join(", ", $tags);
500
d62a3b63
AD
501 print "<table width='100%'>";
502
503 print "<tr><td colspan='2'><input type=\"hidden\" name=\"id\" value=\"$param\"></td></tr>";
504
05fcdf52
AD
505 print "<tr><td colspan='2'><textarea rows='4' class='iedit' id='tags_str'
506 name='tags_str'>$tags_str</textarea>
507 <div class=\"autocomplete\" id=\"tags_choices\"
508 style=\"display:none\"></div>
509 </td></tr>";
d62a3b63 510
05fcdf52 511/* print "<tr><td>".__('Add existing tag:')."</td>";
0b126ac2 512
d62a3b63
AD
513 $result = db_query($link, "SELECT DISTINCT tag_name FROM ttrss_tags
514 WHERE owner_uid = '".$_SESSION["uid"]."' ORDER BY tag_name");
515
516 $found_tags = array();
517
518 array_push($found_tags, '');
519
520 while ($line = db_fetch_assoc($result)) {
e4609ea9 521 array_push($found_tags, truncate_string($line["tag_name"], 20));
d62a3b63
AD
522 }
523
524 print "<td align='right'>";
525
526 print_select("found_tags", '', $found_tags, "onchange=\"javascript:editTagsInsert()\"");
527
05fcdf52 528 print "</td>";
d62a3b63 529
05fcdf52 530 print "</tr>"; */
d62a3b63
AD
531
532 print "</table>";
0b126ac2
AD
533
534 print "</form>";
535
536 print "<div align='right'>";
537
538 print "<input class=\"button\"
539 type=\"submit\" onclick=\"return editTagsSave()\"
cc17c205 540 value=\"".__('Save')."\"> ";
0b126ac2
AD
541
542 print "<input class=\"button\"
543 type=\"submit\" onclick=\"return closeInfoBox()\"
cc17c205 544 value=\"".__('Cancel')."\">";
0b126ac2
AD
545
546
547 print "</div>";
548
5e6f933a 549 return;
0b126ac2
AD
550 }
551
0979b696 552 if ($id == "printTagCloud") {
27258a90 553 print "<div id=\"infoBoxTitle\">".__('Tag cloud')."</div>";
0979b696
AD
554 print "<div class=\"infoBoxContents\">";
555
dcac082b 556 print __("Showing most popular tags ")." (<a
ef1ac7c7 557 href='javascript:toggleTags(true)'>".__('browse more')."</a>):<br/>";
0979b696
AD
558
559 print "<div class=\"tagCloudContainer\">";
560
561 printTagCloud($link);
562
563 print "</div>";
564
565 print "<div align='center'>";
566 print "<input class=\"button\"
567 type=\"submit\" onclick=\"return closeInfoBox()\"
3076c7b8 568 value=\"".__('Close this window')."\">";
0979b696
AD
569 print "</div>";
570
571 print "</div>";
572
573 return;
574 }
575
5e6f933a
AD
576 print "<div id='infoBoxTitle'>Internal Error</div>
577 <div id='infoBoxContents'>
578 <p>Unknown dialog <b>$id</b></p>
579 </div></div>";
580
ef8be8ea
AD
581 }
582?>