From 540a7091b46a8cfb110fd0ce10cf8075a5339e55 Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Thu, 22 Nov 2007 15:15:45 +0000 Subject: [PATCH] Implemented 'Use Email URL' SVN revision: 1966 --- doc/config.html | 11 +++++++++++ src/elogd.c | 42 +++++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/doc/config.html b/doc/config.html index 3e516b89..56a5d3b3 100755 --- a/doc/config.html +++ b/doc/config.html @@ -2085,6 +2085,9 @@ Options Location = Main Building{a}, New Building{b}, Old Building{c}
  • Email attributes = <list>
  • +
  • + Use Email URL = <URL> +
  • To send email automatically when new entries are created in a logbook, a @@ -2157,6 +2160,14 @@ Options Location = Main Building{a}, New Building{b}, Old Building{c} <list>, where a subset of the attributes can be specified as well as their order.

    + +

    + The option Use Email URL = <URL> can be used to + set the URL of the ELOG logbook used in email notifications. This can be + useful if no URL = ... statement is used form some + reason. +

    +
    Flags diff --git a/src/elogd.c b/src/elogd.c index 947e8ee2..7f2ad2c6 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -423,7 +423,7 @@ void highlight_searchtext(regex_t * re_buf, char *src, char *dst, BOOL hidden); int parse_config_file(char *config_file); PMXML_NODE load_password_file(LOGBOOK * lbs, char *error, int error_size); int load_password_files(); -void compose_base_url(LOGBOOK * lbs, char *base_url, int size); +void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify); void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command); char *loc(char *orig); void strencode(char *text); @@ -5639,20 +5639,20 @@ void rsputs2(LOGBOOK * lbs, int absolute_link, const char *str) if (m < (int) strlen(tmp)) { /* if link contains reference to other logbook, put logbook explicitly */ if (absolute_link) - compose_base_url(NULL, base_url, sizeof(base_url)); + compose_base_url(NULL, base_url, sizeof(base_url), FALSE); else strcpy(base_url, "../"); sprintf(return_buffer + j, "elog:%s", base_url, link, link_text); } else if (link[0] == '/') { if (absolute_link) - compose_base_url(NULL, base_url, sizeof(base_url)); + compose_base_url(NULL, base_url, sizeof(base_url), FALSE); else base_url[0] = 0; sprintf(return_buffer + j, "elog:%s", base_url, lbs->name_enc, _current_message_id, link, link_text); } else { if (absolute_link) - compose_base_url(lbs, base_url, sizeof(base_url)); + compose_base_url(lbs, base_url, sizeof(base_url), FALSE); else base_url[0] = 0; sprintf(return_buffer + j, "elog:%s", base_url, link, link_text); @@ -5965,20 +5965,20 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) if (m < (int) strlen(tmp) && tmp[m] != '#') { /* if link contains reference to other logbook, put logbook explicitly */ if (email_notify) - compose_base_url(NULL, base_url, sizeof(base_url)); + compose_base_url(NULL, base_url, sizeof(base_url), TRUE); else strcpy(base_url, "../"); sprintf(return_buffer + j, "elog:%s", base_url, link, link_text); } else if (link[0] == '/') { if (email_notify) - compose_base_url(NULL, base_url, sizeof(base_url)); + compose_base_url(NULL, base_url, sizeof(base_url), TRUE); else base_url[0] = 0; sprintf(return_buffer + j, "elog:%s", base_url, lbs->name_enc, _current_message_id, link, link_text); } else { if (email_notify) - compose_base_url(lbs, base_url, sizeof(base_url)); + compose_base_url(lbs, base_url, sizeof(base_url), TRUE); else base_url[0] = 0; sprintf(return_buffer + j, "elog:%s", base_url, link, link_text); @@ -6132,7 +6132,7 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) sprintf(hattrib, "cid:att%d@%s", m, p); } else { if (email_notify) - compose_base_url(lbs, hattrib, sizeof(hattrib)); + compose_base_url(lbs, hattrib, sizeof(hattrib), TRUE); else hattrib[0] = 0; if (attrib[5] == '/') { @@ -6197,7 +6197,7 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) if (strstr(link, "%s")) { strcpy(tmp, link); if (email_notify) - compose_base_url(lbs, base_url, sizeof(base_url)); + compose_base_url(lbs, base_url, sizeof(base_url), TRUE); else base_url[0] = 0; sprintf(link, tmp, base_url); @@ -6219,7 +6219,7 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) if (strstr(link, "%s")) { strcpy(tmp, link); if (email_notify) - compose_base_url(lbs, base_url, sizeof(base_url)); + compose_base_url(lbs, base_url, sizeof(base_url), TRUE); else base_url[0] = 0; sprintf(link, tmp, base_url); @@ -6240,7 +6240,7 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) if (strstr(link, "%s")) { strcpy(tmp, link); if (email_notify) - compose_base_url(lbs, base_url, sizeof(base_url)); + compose_base_url(lbs, base_url, sizeof(base_url), TRUE); else base_url[0] = 0; sprintf(link, tmp, base_url); @@ -6551,9 +6551,13 @@ void extract_host(char *str) /*------------------------------------------------------------------*/ -void compose_base_url(LOGBOOK * lbs, char *base_url, int size) +void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify) /* return URL for elogd with optional logbook subdirectory */ { + if (email_notify) + if (getcfg(lbs->name, "Use Email URL", base_url, size)) + return; + if (!getcfg("global", "URL", base_url, size)) { if (referer[0]) { @@ -7128,7 +7132,7 @@ void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head, /* Cascading Style Sheet */ if (absolute_link) - compose_base_url(lbs, css, sizeof(css)); + compose_base_url(lbs, css, sizeof(css), FALSE); else css[0] = 0; @@ -16156,7 +16160,7 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, _current_message_id = message_id; ref[0] = 0; if (absolute_link) - compose_base_url(lbs, ref, sizeof(ref)); + compose_base_url(lbs, ref, sizeof(ref), FALSE); sprintf(ref + strlen(ref), "../%s/%d", lbs->name_enc, message_id); if (strieq(mode, "Summary")) { @@ -20458,7 +20462,7 @@ int compose_email(LOGBOOK * lbs, char *rcpt_to, char *mail_to, int message_id, n_attachments++; } - compose_base_url(lbs, str, sizeof(str)); + compose_base_url(lbs, str, sizeof(str), TRUE); sprintf(url, "%s%d", str, message_id); mail_text_size = MAX_CONTENT_LENGTH + 1000; @@ -22242,7 +22246,7 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command) sprintf(display, "%d", message_id); if (email) { - compose_base_url(lbs, str, sizeof(str)); + compose_base_url(lbs, str, sizeof(str), TRUE); sprintf(str + strlen(str), "%d", message_id); rsprintf("%s: %s  ", loc("Logbook"), lbs->name); rsprintf("%s: %d", loc("Message ID"), str, message_id); @@ -22267,7 +22271,7 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command) if (orig_tag[0]) { if (email) - compose_base_url(lbs, ref, sizeof(ref)); + compose_base_url(lbs, ref, sizeof(ref), TRUE); else ref[0] = 0; sprintf(ref + strlen(ref), "%s", orig_tag); @@ -22280,7 +22284,7 @@ void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command) p = strtok(reply_tag, ","); do { if (email) - compose_base_url(lbs, ref, sizeof(ref)); + compose_base_url(lbs, ref, sizeof(ref), TRUE); else ref[0] = 0; sprintf(ref + strlen(ref), "%s", p); @@ -24158,7 +24162,7 @@ void show_uploader_finished(LOGBOOK * lbs) url_encode(file_enc, sizeof(file_enc)); /* for file names with special characters like "+" */ sprintf(ref, "%s/%s", str, file_enc); - compose_base_url(lbs, base_url, sizeof(base_url)); + compose_base_url(lbs, base_url, sizeof(base_url), TRUE); rsprintf("