mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-08 17:13:56 +00:00
Replace elog:... by HTML link when encoding is HTML
SVN revision: 2036
This commit is contained in:
parent
61830bb1ee
commit
eae65a7ad0
89
src/elogd.c
89
src/elogd.c
@ -5559,6 +5559,44 @@ void replace_inline_img(char *str)
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void convert_elog_link(LOGBOOK *lbs, char *link, char *link_text, char *result, int absolute_link, int message_id)
|
||||||
|
{
|
||||||
|
char str[256], base_url[256];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
strlcpy(str, link, sizeof(str));
|
||||||
|
if (strchr(str, '/'))
|
||||||
|
*strchr(str, '/') = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < (int) strlen(str); i++)
|
||||||
|
if (!isdigit(str[i]))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (i < (int) strlen(str)) {
|
||||||
|
/* if link contains reference to other logbook, put logbook explicitly */
|
||||||
|
if (absolute_link)
|
||||||
|
compose_base_url(NULL, base_url, sizeof(base_url), FALSE);
|
||||||
|
else
|
||||||
|
strcpy(base_url, "../");
|
||||||
|
sprintf(result, "<a href=\"%s%s\">elog:%s</a>", base_url, link, link_text);
|
||||||
|
} else if (link[0] == '/') {
|
||||||
|
if (absolute_link)
|
||||||
|
compose_base_url(NULL, base_url, sizeof(base_url), FALSE);
|
||||||
|
else
|
||||||
|
base_url[0] = 0;
|
||||||
|
sprintf(result, "<a href=\"%s%s/%d%s\">elog:%s</a>", base_url, lbs->name_enc,
|
||||||
|
message_id, link, link_text);
|
||||||
|
} else {
|
||||||
|
if (absolute_link)
|
||||||
|
compose_base_url(lbs, base_url, sizeof(base_url), FALSE);
|
||||||
|
else
|
||||||
|
base_url[0] = 0;
|
||||||
|
sprintf(result, "<a href=\"%s%s\">elog:%s</a>", base_url, link, link_text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
void rsputs(const char *str)
|
void rsputs(const char *str)
|
||||||
{
|
{
|
||||||
if (strlen_retbuf + (int) strlen(str) + 1 >= return_buffer_size) {
|
if (strlen_retbuf + (int) strlen(str) + 1 >= return_buffer_size) {
|
||||||
@ -5577,8 +5615,8 @@ char *key_list[] = { "http://", "https://", "ftp://", "mailto:", "elog:", "file:
|
|||||||
|
|
||||||
void rsputs2(LOGBOOK * lbs, int absolute_link, const char *str)
|
void rsputs2(LOGBOOK * lbs, int absolute_link, const char *str)
|
||||||
{
|
{
|
||||||
int i, j, k, l, m, n;
|
int i, j, k, l, n;
|
||||||
char *p, *pd, link[1000], link_text[1000], tmp[1000], base_url[256];
|
char *p, *pd, link[1000], link_text[1000];
|
||||||
|
|
||||||
if (strlen_retbuf + (int) (2 * strlen(str) + 1000) >= return_buffer_size) {
|
if (strlen_retbuf + (int) (2 * strlen(str) + 1000) >= return_buffer_size) {
|
||||||
return_buffer = xrealloc(return_buffer, return_buffer_size + 100000);
|
return_buffer = xrealloc(return_buffer, return_buffer_size + 100000);
|
||||||
@ -5658,36 +5696,7 @@ void rsputs2(LOGBOOK * lbs, int absolute_link, const char *str)
|
|||||||
strlcpy(link_text, link, sizeof(link_text));
|
strlcpy(link_text, link, sizeof(link_text));
|
||||||
|
|
||||||
if (strcmp(key_list[l], "elog:") == 0) {
|
if (strcmp(key_list[l], "elog:") == 0) {
|
||||||
strlcpy(tmp, link, sizeof(tmp));
|
convert_elog_link(lbs, link, link_text, return_buffer+j, absolute_link, _current_message_id);
|
||||||
if (strchr(tmp, '/'))
|
|
||||||
*strchr(tmp, '/') = 0;
|
|
||||||
|
|
||||||
for (m = 0; m < (int) strlen(tmp); m++)
|
|
||||||
if (!isdigit(tmp[m]))
|
|
||||||
break;
|
|
||||||
|
|
||||||
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), FALSE);
|
|
||||||
else
|
|
||||||
strcpy(base_url, "../");
|
|
||||||
sprintf(return_buffer + j, "<a href=\"%s%s\">elog:%s</a>", base_url, link, link_text);
|
|
||||||
} else if (link[0] == '/') {
|
|
||||||
if (absolute_link)
|
|
||||||
compose_base_url(NULL, base_url, sizeof(base_url), FALSE);
|
|
||||||
else
|
|
||||||
base_url[0] = 0;
|
|
||||||
sprintf(return_buffer + j, "<a href=\"%s%s/%d%s\">elog:%s</a>", base_url, lbs->name_enc,
|
|
||||||
_current_message_id, link, link_text);
|
|
||||||
} else {
|
|
||||||
if (absolute_link)
|
|
||||||
compose_base_url(lbs, base_url, sizeof(base_url), FALSE);
|
|
||||||
else
|
|
||||||
base_url[0] = 0;
|
|
||||||
sprintf(return_buffer + j, "<a href=\"%s%s\">elog:%s</a>", base_url, link, link_text);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (strcmp(key_list[l], "mailto:") == 0) {
|
} else if (strcmp(key_list[l], "mailto:") == 0) {
|
||||||
sprintf(return_buffer + j, "<a href=\"mailto:%s\">%s</a>", link, link_text);
|
sprintf(return_buffer + j, "<a href=\"mailto:%s\">%s</a>", link, link_text);
|
||||||
} else {
|
} else {
|
||||||
@ -21694,6 +21703,22 @@ void submit_elog(LOGBOOK * lbs)
|
|||||||
p, in_reply_to, reply_to, encoding, att_file, TRUE, NULL);
|
p, in_reply_to, reply_to, encoding, att_file, TRUE, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*---- replace elog: by HTML link ----*/
|
||||||
|
if (strieq(encoding, "HTML") && stristr(getparam("text"), "elog:")) {
|
||||||
|
p = stristr(getparam("text"), "elog:");
|
||||||
|
while (p) {
|
||||||
|
for (i=0 ; i<5 || (p[i] == '/' || isalnum(p[i])) ; i++)
|
||||||
|
str[i] = p[i];
|
||||||
|
str[i] = 0;
|
||||||
|
convert_elog_link(lbs, str+5, str+5, str2, 0, message_id);
|
||||||
|
strsubst(p, TEXT_SIZE, str, str2);
|
||||||
|
p += strlen(str2);
|
||||||
|
p = stristr(p, "elog:");
|
||||||
|
}
|
||||||
|
el_submit(lbs, message_id, TRUE, date, attr_list, attrib, n_attr,
|
||||||
|
getparam("text"), in_reply_to, reply_to, encoding, att_file, TRUE, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/*---- email notifications ----*/
|
/*---- email notifications ----*/
|
||||||
|
|
||||||
suppress = isparam("suppress") ? atoi(getparam("suppress")) : 0;
|
suppress = isparam("suppress") ? atoi(getparam("suppress")) : 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user