Implemented RSS feeds

SVN revision: 1110
This commit is contained in:
Stefan Ritt 2004-10-25 21:07:07 +00:00
parent 54279c0c1b
commit 0533ae96c9
3 changed files with 197 additions and 36 deletions

View File

@ -160,6 +160,9 @@
BrowseInformation="1"/> BrowseInformation="1"/>
</FileConfiguration> </FileConfiguration>
</File> </File>
<File
RelativePath="..\src\regex.c">
</File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"
@ -193,6 +196,9 @@
<Filter <Filter
Name="Header Files" Name="Header Files"
Filter="h;hpp;hxx;hm;inl"> Filter="h;hpp;hxx;hm;inl">
<File
RelativePath="..\src\regex.h">
</File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>

View File

@ -940,6 +940,26 @@ If a logbook uses some icons for an attribute, these icons can be displayed
in the search result page instead of the default icons contained in the themes directory. in the search result page instead of the default icons contained in the themes directory.
<p> <p>
<LI><b><code>RSS Title = &lt;string&gt;</code></b>
<br>
ELOG supports so-called <i>RSS feeds</i>. Once can subscribe to new logbook entries
with RSS readers such as Mozilla Firefox. Once new entries are submitted to the logbook,
the become visible in the subscripition. By default, all attributes of the last 15
logbook entries are used as the RSS title. With this option once can changed this
behaviour. Following substitutions are possible:
<p>
<UL>
<LI><b>$&lt;attribute&gt;</b>: The value of the attribute
<LI><b>$logbook</b>: The name of the current logbook
<LI><b>$entry time</b>: The message date and time, formatted via "<I>Time format</I>"
<LI><b>$message id</b>: The message ID
</UL>
<br>
A typical example would be
<br>
<pre>RSS Title = $subject, posted by $author on $entry time</pre>
<p>
<LI><b><code>Subst &lt;attribute&gt; = &lt;string&gt;</code></b> <LI><b><code>Subst &lt;attribute&gt; = &lt;string&gt;</code></b>
<br> <br>
When submitting logbook entries, attribute values can be substituted by some When submitting logbook entries, attribute values can be substituted by some

View File

@ -6,6 +6,9 @@
Contents: Web server program for Electronic Logbook ELOG Contents: Web server program for Electronic Logbook ELOG
$Log$ $Log$
Revision 1.498 2004/10/25 21:07:07 midas
Implemented RSS feeds
Revision 1.497 2004/10/14 21:27:29 midas Revision 1.497 2004/10/14 21:27:29 midas
Finished regular expressions Finished regular expressions
@ -6005,7 +6008,7 @@ void show_plain_header(int size, char *file_name)
rsprintf("\r\n"); rsprintf("\r\n");
} }
void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head) void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head, BOOL rss_feed)
{ {
char css[256], str[256]; char css[256], str[256];
@ -6031,13 +6034,19 @@ void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head)
rsprintf("<link rel=\"shortcut icon\" href=\"favicon.ico\">\n"); rsprintf("<link rel=\"shortcut icon\" href=\"favicon.ico\">\n");
rsprintf("<link rel=\"icon\" href=\"favicon.png\" type=\"image/png\">\n"); rsprintf("<link rel=\"icon\" href=\"favicon.png\" type=\"image/png\">\n");
if (rss_feed) {
rsprintf("<link rel=\"rss feed\" type=\"application/rss+xml\" ");
rsprintf("title=\"ELOG %s\" ", lbs->name);
rsprintf("href=\"rss-feed\">\n");
}
if (close_head) if (close_head)
rsprintf("</head>\n"); rsprintf("</head>\n");
} }
void show_standard_header(LOGBOOK * lbs, BOOL expires, char *title, char *path) void show_standard_header(LOGBOOK * lbs, BOOL expires, char *title, char *path, BOOL rss_feed)
{ {
show_html_header(lbs, expires, title, TRUE); show_html_header(lbs, expires, title, TRUE, rss_feed);
rsprintf("<body>\n"); rsprintf("<body>\n");
@ -6055,7 +6064,7 @@ void show_upgrade_page(LOGBOOK * lbs)
{ {
char str[1000]; char str[1000];
show_html_header(lbs, FALSE, "ELOG Upgrade Information", TRUE); show_html_header(lbs, FALSE, "ELOG Upgrade Information", TRUE, FALSE);
rsprintf("<body>\n"); rsprintf("<body>\n");
@ -6552,7 +6561,7 @@ void show_bottom_text(LOGBOOK * lbs)
void show_error(char *error) void show_error(char *error)
{ {
/* header */ /* header */
show_html_header(NULL, FALSE, "ELOG error", TRUE); show_html_header(NULL, FALSE, "ELOG error", TRUE, FALSE);
rsprintf("<body><center>\n"); rsprintf("<body><center>\n");
rsprintf("<table class=\"dlgframe\" width=\"50%%\" cellpadding=1 cellspacing=0"); rsprintf("<table class=\"dlgframe\" width=\"50%%\" cellpadding=1 cellspacing=0");
@ -6709,7 +6718,7 @@ void send_file_direct(char *file_name)
close(fh); close(fh);
} else { } else {
show_html_header(NULL, FALSE, "404 Not Found", TRUE); show_html_header(NULL, FALSE, "404 Not Found", TRUE, FALSE);
rsprintf("<body><h1>Not Found</h1>\r\n"); rsprintf("<body><h1>Not Found</h1>\r\n");
rsprintf("The requested file <b>%s</b> was not found on this server<p>\r\n", file_name); rsprintf("The requested file <b>%s</b> was not found on this server<p>\r\n", file_name);
@ -7077,7 +7086,7 @@ void show_change_pwd_page(LOGBOOK * lbs)
} }
} }
show_standard_header(lbs, TRUE, loc("ELOG change password"), NULL); show_standard_header(lbs, TRUE, loc("ELOG change password"), NULL, FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
@ -7502,7 +7511,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
} }
/* header */ /* header */
show_html_header(lbs, FALSE, "ELOG", FALSE); show_html_header(lbs, FALSE, "ELOG", FALSE, FALSE);
/* java script for checking required attributes and to check for cancelled edits */ /* java script for checking required attributes and to check for cancelled edits */
rsprintf("<script type=\"text/javascript\">\n"); rsprintf("<script type=\"text/javascript\">\n");
@ -8508,7 +8517,7 @@ void show_find_form(LOGBOOK * lbs)
/*---- header ----*/ /*---- header ----*/
show_standard_header(lbs, FALSE, loc("ELOG find"), NULL); show_standard_header(lbs, FALSE, loc("ELOG find"), NULL, FALSE);
/*---- title ----*/ /*---- title ----*/
@ -8839,7 +8848,7 @@ void show_admin_page(LOGBOOK * lbs, char *top_group)
/*---- header ----*/ /*---- header ----*/
sprintf(str, "ELOG %s", loc("Admin")); sprintf(str, "ELOG %s", loc("Admin"));
show_html_header(lbs, FALSE, str, TRUE); show_html_header(lbs, FALSE, str, TRUE, FALSE);
rsprintf("<body><form method=\"POST\" action=\"./\" enctype=\"multipart/form-data\">\n"); rsprintf("<body><form method=\"POST\" action=\"./\" enctype=\"multipart/form-data\">\n");
@ -9836,7 +9845,7 @@ void show_config_page(LOGBOOK * lbs)
/*---- header ----*/ /*---- header ----*/
show_standard_header(lbs, TRUE, loc("ELOG user config"), "."); show_standard_header(lbs, TRUE, loc("ELOG user config"), ".", FALSE);
/*---- title ----*/ /*---- title ----*/
@ -10042,7 +10051,7 @@ void show_forgot_pwd_page(LOGBOOK * lbs)
change_pwd(lbs, login_name, pwd_encrypted); change_pwd(lbs, login_name, pwd_encrypted);
/* show notification web page */ /* show notification web page */
show_standard_header(lbs, FALSE, loc("ELOG password recovery"), ""); show_standard_header(lbs, FALSE, loc("ELOG password recovery"), "", FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
rsprintf("<tr><td class=\"dlgtitle\">\n"); rsprintf("<tr><td class=\"dlgtitle\">\n");
@ -10075,7 +10084,7 @@ void show_forgot_pwd_page(LOGBOOK * lbs)
} else { } else {
/*---- header ----*/ /*---- header ----*/
show_standard_header(lbs, TRUE, loc("ELOG password recovery"), NULL); show_standard_header(lbs, TRUE, loc("ELOG password recovery"), NULL, FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
@ -10103,7 +10112,7 @@ void show_new_user_page(LOGBOOK * lbs)
{ {
/*---- header ----*/ /*---- header ----*/
show_html_header(NULL, TRUE, loc("ELOG new user"), TRUE); show_html_header(NULL, TRUE, loc("ELOG new user"), TRUE, FALSE);
rsprintf("<body><center><p><p>\n"); rsprintf("<body><center><p><p>\n");
show_top_text(lbs); show_top_text(lbs);
rsprintf("<form name=form1 method=\"GET\" action=\"\">\n\n"); rsprintf("<form name=form1 method=\"GET\" action=\"\">\n\n");
@ -10241,7 +10250,7 @@ void show_elog_delete(LOGBOOK * lbs, int message_id)
sprintf(str, "%d", message_id); sprintf(str, "%d", message_id);
else else
str[0] = 0; str[0] = 0;
show_standard_header(lbs, TRUE, "Delete ELog entry", str); show_standard_header(lbs, TRUE, "Delete ELog entry", str, FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
rsprintf("<tr><td class=\"dlgtitle\">\n"); rsprintf("<tr><td class=\"dlgtitle\">\n");
@ -10344,7 +10353,7 @@ void show_logbook_delete(LOGBOOK * lbs)
strcpy(str, "Delete logbook"); strcpy(str, "Delete logbook");
show_standard_header(lbs, TRUE, str, ""); show_standard_header(lbs, TRUE, str, "", FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
rsprintf("<tr><td class=\"dlgtitle\">\n"); rsprintf("<tr><td class=\"dlgtitle\">\n");
@ -10395,7 +10404,7 @@ void show_logbook_rename(LOGBOOK * lbs)
strcpy(str, loc("Rename logbook")); strcpy(str, loc("Rename logbook"));
show_standard_header(lbs, TRUE, str, ""); show_standard_header(lbs, TRUE, str, "", FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
rsprintf("<tr><td class=\"dlgtitle\">\n"); rsprintf("<tr><td class=\"dlgtitle\">\n");
@ -10446,7 +10455,7 @@ void show_logbook_new(LOGBOOK * lbs)
return; return;
} }
show_standard_header(lbs, TRUE, "Delete Logbook", ""); show_standard_header(lbs, TRUE, "Delete Logbook", "", FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
rsprintf("<tr><td class=\"dlgtitle\">\n"); rsprintf("<tr><td class=\"dlgtitle\">\n");
@ -10615,7 +10624,7 @@ void show_import_page(LOGBOOK * lbs)
/*---- header ----*/ /*---- header ----*/
show_html_header(lbs, FALSE, loc("ELOG CSV import"), TRUE); show_html_header(lbs, FALSE, loc("ELOG CSV import"), TRUE, FALSE);
rsprintf("<body><form method=\"POST\" action=\"./\" enctype=\"multipart/form-data\">\n"); rsprintf("<body><form method=\"POST\" action=\"./\" enctype=\"multipart/form-data\">\n");
@ -10759,7 +10768,7 @@ void csv_import(LOGBOOK * lbs, char *csv, char *csvfile)
/* title row */ /* title row */
sprintf(str, loc("CSV import preview of %s"), csvfile); sprintf(str, loc("CSV import preview of %s"), csvfile);
show_standard_header(lbs, TRUE, str, "./"); show_standard_header(lbs, TRUE, str, "./", FALSE);
rsprintf("<table class=\"frame\" cellpadding=0 cellspacing=0>\n"); rsprintf("<table class=\"frame\" cellpadding=0 cellspacing=0>\n");
rsprintf("<tr><td class=\"title1\">%s</td></tr>\n", str, str); rsprintf("<tr><td class=\"title1\">%s</td></tr>\n", str, str);
@ -12872,7 +12881,7 @@ void synchronize(LOGBOOK * lbs, int mode)
char str[256], pwd[256]; char str[256], pwd[256];
if (mode == SYNC_HTML) { if (mode == SYNC_HTML) {
show_html_header(NULL, FALSE, loc("Synchronization"), TRUE); show_html_header(NULL, FALSE, loc("Synchronization"), TRUE, FALSE);
rsprintf("<body>\n"); rsprintf("<body>\n");
} }
@ -14210,6 +14219,126 @@ time_t retrieve_date(char *index, BOOL bstart)
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
void show_rss_feed(LOGBOOK * lbs)
{
int i, size, index, status, message_id;
char str[256], url[256], attrib[MAX_N_ATTR][NAME_LENGTH], date[80], *text, title[2000],
slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH];
rsprintf("HTTP/1.1 200 Document follows\r\n");
rsprintf("Server: ELOG HTTP %s\r\n", VERSION);
if (getcfg("global", "charset", str, sizeof(str)))
rsprintf("Content-Type: text/xml;charset=%s\r\n", str);
else
rsprintf("Content-Type: text/xml;charset=iso-8859-1\r\n");
rsprintf("\r\n");
rsprintf("<?xml version=\"1.0\" ?>\n");
rsprintf("<rss version=\"2.0\">\n");
rsprintf("<channel>\n");
rsprintf("<title>ELOG %s</title>\n", lbs->name_enc);
/* retrive URL */
getcfg(lbs->name, "URL", url, sizeof(url));
/* if HTTP request comes from localhost, use localhost as
absolute link (needed if running on DSL at home */
if (!url[0] && strstr(http_host, "localhost")) {
strcpy(url, "http://localhost");
if (elog_tcp_port != 80)
sprintf(url + strlen(url), ":%d", elog_tcp_port);
strcat(url, "/");
}
if (!url[0]) {
/* assemble absolute path from host name and port */
sprintf(url, "http://%s", host_name);
if (elog_tcp_port != 80)
sprintf(url + strlen(url), ":%d", elog_tcp_port);
strcat(url, "/");
}
/* add trailing '/' if not present */
if (url[strlen(url) - 1] != '/')
strcat(url, "/");
strlcat(url, lbs->name_enc, sizeof(url));
rsprintf("<link>%s</link>\n", url);
if (getcfg(lbs->name, "Comment", str, sizeof(str))) {
rsprintf("<description>");
xmlencode(str);
rsprintf("</description>\n");
}
rsprintf("<generator>ELOG V%s</generator>\n", VERSION);
rsprintf("<image>favicon.png</image>\n");
/*---- show last 15 items ----*/
text = xmalloc(TEXT_SIZE);
message_id = el_search_message(lbs, EL_LAST, 0, FALSE);
for (index = 0 ; index < 15 ; index++) {
rsprintf("<item>\n");
size = TEXT_SIZE;
status = el_retrieve(lbs, message_id, date, attr_list, attrib,
lbs->n_attr, text, &size, NULL, NULL, NULL, NULL, NULL);
if (getcfg(lbs->name, "RSS Title", title, sizeof(title))) {
i = build_subst_list(lbs, (char (*)[NAME_LENGTH]) slist, (char (*)[NAME_LENGTH]) svalue, attrib, TRUE);
sprintf(str, "%d", message_id);
add_subst_list((char (*)[NAME_LENGTH]) slist, (char (*)[NAME_LENGTH]) svalue, "message id", str, &i);
add_subst_time(lbs, (char (*)[NAME_LENGTH]) slist, (char (*)[NAME_LENGTH]) svalue,
"entry time", date, &i);
strsubst(title, (char (*)[NAME_LENGTH]) slist, (char (*)[NAME_LENGTH]) svalue, i);
} else {
title[0] = 0;
for (i = 0; i < lbs->n_attr; i++) {
strlcat(title, attrib[i], sizeof(title));
if (i < lbs->n_attr-1)
strlcat(title, ", ", sizeof(title));
}
}
rsprintf("<title>");
xmlencode(title);
rsprintf("</title>\n");
rsprintf("<link>");
strcpy(str, url);
sprintf(str+strlen(str), "/%d", message_id);
xmlencode(str);
rsprintf("</link>\n");
rsprintf("<description>\n");
xmlencode(text);
rsprintf("</description>\n");
rsprintf("<pubDate>\n");
rsprintf(date);
rsprintf("</pubDate>\n");
rsprintf("</item>\n");
message_id = el_search_message(lbs, EL_PREV, message_id, FALSE);
if (!message_id)
break;
}
xfree(text);
rsprintf("</channel>\n");
rsprintf("</rss>\n");
}
/*------------------------------------------------------------------*/
void show_elog_list(LOGBOOK * lbs, INT past_n, INT last_n, INT page_n, char *info) void show_elog_list(LOGBOOK * lbs, INT past_n, INT last_n, INT page_n, char *info)
{ {
int i, j, n, index, size, status, d1, m1, y1, d2, m2, y2, n_line, flags; int i, j, n, index, size, status, d1, m1, y1, d2, m2, y2, n_line, flags;
@ -14893,7 +15022,7 @@ void show_elog_list(LOGBOOK * lbs, INT past_n, INT last_n, INT page_n, char *inf
} else { } else {
show_standard_header(lbs, TRUE, str, NULL); show_standard_header(lbs, TRUE, str, NULL, TRUE);
/*---- title ----*/ /*---- title ----*/
@ -16525,7 +16654,7 @@ void copy_to(LOGBOOK * lbs, int src_id, char *dest_logbook, int move, int orig_i
/* display status message */ /* display status message */
sprintf(str, "%d", source_id); sprintf(str, "%d", source_id);
show_standard_header(lbs, FALSE, loc("Copy ELog entry"), str); show_standard_header(lbs, FALSE, loc("Copy ELog entry"), str, FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
rsprintf("<tr><td colspan=2 class=\"dlgtitle\">\n"); rsprintf("<tr><td colspan=2 class=\"dlgtitle\">\n");
@ -16771,11 +16900,11 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command)
sprintf(ref, "%d", message_id); sprintf(ref, "%d", message_id);
if (str[0]) if (str[0])
show_standard_header(lbs, TRUE, str, ref); show_standard_header(lbs, TRUE, str, ref, FALSE);
else else
show_standard_header(lbs, TRUE, lbs->name, ref); show_standard_header(lbs, TRUE, lbs->name, ref, FALSE);
} else } else
show_standard_header(lbs, TRUE, "", ""); show_standard_header(lbs, TRUE, "", "", FALSE);
/*---- title ----*/ /*---- title ----*/
@ -17445,7 +17574,7 @@ BOOL check_password(LOGBOOK * lbs, char *name, char *password, char *redir)
} }
/* show web password page */ /* show web password page */
show_standard_header(lbs, FALSE, loc("ELOG password"), NULL); show_standard_header(lbs, FALSE, loc("ELOG password"), NULL, FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
@ -17730,7 +17859,7 @@ BOOL check_user_password(LOGBOOK * lbs, char *user, char *password, char *redir)
/* display error message for invalid user */ /* display error message for invalid user */
if (isparam("iusr")) { if (isparam("iusr")) {
/* header */ /* header */
show_html_header(NULL, FALSE, "ELOG error", TRUE); show_html_header(NULL, FALSE, "ELOG error", TRUE, FALSE);
rsprintf("<body><center>\n"); rsprintf("<body><center>\n");
rsprintf("<table class=\"dlgframe\" width=\"50%%\" cellpadding=1 cellspacing=0>"); rsprintf("<table class=\"dlgframe\" width=\"50%%\" cellpadding=1 cellspacing=0>");
@ -17785,7 +17914,7 @@ BOOL check_user_password(LOGBOOK * lbs, char *user, char *password, char *redir)
/* show login password page */ /* show login password page */
sprintf(str, "ELOG %s", loc("Login")); sprintf(str, "ELOG %s", loc("Login"));
show_html_header(lbs, TRUE, str, TRUE); show_html_header(lbs, TRUE, str, TRUE, FALSE);
/* set focus on name field */ /* set focus on name field */
rsprintf("<body OnLoad=\"document.form1.uname.focus();\">\n"); rsprintf("<body OnLoad=\"document.form1.uname.focus();\">\n");
@ -18010,9 +18139,9 @@ void show_top_selection_page()
if (getcfg("global", "Page Title", str, sizeof(str))) { if (getcfg("global", "Page Title", str, sizeof(str))) {
strip_html(str); strip_html(str);
show_html_header(NULL, TRUE, str, TRUE); show_html_header(NULL, TRUE, str, TRUE, FALSE);
} else } else
show_html_header(NULL, TRUE, "ELOG Logbook Selection", TRUE); show_html_header(NULL, TRUE, "ELOG Logbook Selection", TRUE, FALSE);
rsprintf("<body>\n\n"); rsprintf("<body>\n\n");
rsprintf("<table class=\"selframe\" cellspacing=0 align=center>\n"); rsprintf("<table class=\"selframe\" cellspacing=0 align=center>\n");
rsprintf("<tr><td class=\"dlgtitle\">\n"); rsprintf("<tr><td class=\"dlgtitle\">\n");
@ -18052,7 +18181,7 @@ void show_selection_page()
/* check if at least one logbook define */ /* check if at least one logbook define */
if (!lb_list[0].name[0]) { if (!lb_list[0].name[0]) {
show_standard_header(NULL, FALSE, "ELOG", ""); show_standard_header(NULL, FALSE, "ELOG", "", FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
rsprintf("<tr><td class=\"dlgtitle\">\n"); rsprintf("<tr><td class=\"dlgtitle\">\n");
@ -18103,9 +18232,9 @@ void show_selection_page()
if (getcfg("global", "Page Title", str, sizeof(str))) { if (getcfg("global", "Page Title", str, sizeof(str))) {
strip_html(str); strip_html(str);
show_html_header(NULL, TRUE, str, TRUE); show_html_header(NULL, TRUE, str, TRUE, FALSE);
} else } else
show_html_header(NULL, TRUE, "ELOG Logbook Selection", TRUE); show_html_header(NULL, TRUE, "ELOG Logbook Selection", TRUE, FALSE);
rsprintf("<body>\n\n"); rsprintf("<body>\n\n");
rsprintf("<table class=\"selframe\" cellspacing=0 align=center>\n"); rsprintf("<table class=\"selframe\" cellspacing=0 align=center>\n");
rsprintf("<tr><td colspan=13 class=\"dlgtitle\">\n"); rsprintf("<tr><td colspan=13 class=\"dlgtitle\">\n");
@ -18221,7 +18350,7 @@ int do_self_register(LOGBOOK * lbs, char *command)
/* display account request notification */ /* display account request notification */
if (strieq(command, loc("Requested"))) { if (strieq(command, loc("Requested"))) {
show_standard_header(lbs, FALSE, loc("ELOG registration"), ""); show_standard_header(lbs, FALSE, loc("ELOG registration"), "", FALSE);
rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>"); rsprintf("<table class=\"dlgframe\" cellspacing=0 align=center>");
rsprintf("<tr><td colspan=2 class=\"dlgtitle\">\n"); rsprintf("<tr><td colspan=2 class=\"dlgtitle\">\n");
rsprintf(loc rsprintf(loc
@ -18283,7 +18412,7 @@ void show_calendar(LOGBOOK * lbs)
else else
strcpy(index, "1"); strcpy(index, "1");
show_html_header(lbs, FALSE, loc("Calendar"), TRUE); show_html_header(lbs, FALSE, loc("Calendar"), TRUE, FALSE);
rsprintf("<body class=\"calwindow\"><form name=form1 method=\"GET\" action=\"\">\n"); rsprintf("<body class=\"calwindow\"><form name=form1 method=\"GET\" action=\"\">\n");
rsprintf("<input type=hidden name=\"i\" value=\"%s\">\n", index); rsprintf("<input type=hidden name=\"i\" value=\"%s\">\n", index);
rsprintf("<input type=hidden name=\"y\" value=\"%d\">\n", cur_year); rsprintf("<input type=hidden name=\"y\" value=\"%d\">\n", cur_year);
@ -18772,6 +18901,12 @@ void interprete(char *lbook, char *path)
return; return;
} }
/* check for rss-feed */
if (strieq(dec_path, "rss-feed")) {
show_rss_feed(lbs);
return;
}
/*---- check if file requested -----------------------------------*/ /*---- check if file requested -----------------------------------*/
/* skip elog message id in front of possible attachment */ /* skip elog message id in front of possible attachment */