kv.key = strdup(tok);
kv.val = strdup(eq);
array_append(h.request_parms, &kv);
+ syslog(LOG_DEBUG, "\033[1m\033[33m| %s = %s\033[0m", kv.key, kv.val);
}
}
}
}
return (NULL);
}
+
+
+// Utility function to fetch a specific URL parameter from a completely read-in request.
+// Returns the value of the requested parameter, or NULL if the specified parameter was not sent.
+// The caller does NOT own the memory of the returned pointer, but can count on the pointer
+// to still be valid through the end of the transaction.
+char *get_url_param(struct http_transaction *h, char *requested_param) {
+ struct keyval *kv;
+ int i;
+ for (i=0; i<array_len(h->request_parms); ++i) {
+ kv = array_get_element_at(h->request_parms, i);
+ if (!strcasecmp(kv->key, requested_param)) {
+ return (kv->val);
+ }
+ }
+ return (NULL);
+}
return;
}
- ctdl_printf(c, "ENT0 1|||4|||1|"); // This protocol syntax will give us metadata back after upload
+ char *wefw = get_url_param(h, "wefw"); // references
+ if (!wefw) wefw = "";
+ char *subj = get_url_param(h, "subj"); // subject
+ if (!subj) subj = "";
+
+ // Mode 4 will give us metadata back after upload
+ ctdl_printf(c, "ENT0 1|||4|%s||1|||||%s|", subj, wefw);
ctdl_readline(c, buf, sizeof buf);
if (buf[0] != '8') {
h->response_code = 502;
+ "</span>"; // end buttons on right side
if (msg.subj) {
replybox +=
- "<br><span class=\"ctdl-msgsubject\">" + "FIXME subject" + "</span>";
+ "<br><span id=\"ctdl-subject\" class=\"ctdl-msgsubject\">" + "FIXME subject" + "</span>";
+ }
+ else { // hidden filed for empty subject
+ replybox += "<span id=\"ctdl-subject\" style=\"display:none\"></span>";
}
replybox +=
"</div><br>" // end header
+
+ + "<span id=\"ctdl-replyreferences\" style=\"display:none\">" // hidden field for references
+ + compose_references(references,msgid) + "</span>"
// begin body
+ "<div class=\"ctdl-msg-body\" id=\"ctdl-editor-body\" style=\"padding:5px;\" contenteditable=\"true\">"
- + "refs: " + compose_references(references,msgid) + "<br>"
+ "\n" // empty initial content
+ "</div>" // end body
function forum_save_message(div_name, reply_to_msgnum) {
document.body.style.cursor = "wait";
+ wefw = (document.getElementById("ctdl-replyreferences").innerHTML).replaceAll("|","!"); // references (if present)
+ subj = document.getElementById("ctdl-subject").innerHTML; // subject (if present)
- url = "/ctdl/r/" + escapeHTMLURI(current_room) + "/dummy_name_for_new_message";
+ url = "/ctdl/r/" + escapeHTMLURI(current_room)
+ + "/dummy_name_for_new_message"
+ + "?wefw=" + wefw
+ + "&subj=" + subj
boundary = randomString(20);
body_text =
"--" + boundary + "\r\n"
struct ctdlsession *connect_to_citadel(struct http_transaction *);
void disconnect_from_citadel(struct ctdlsession *);
char *header_val(struct http_transaction *h, char *requested_header);
+char *get_url_param(struct http_transaction *h, char *requested_param);
int unescape_input(char *);
void http_redirect(struct http_transaction *h, char *to_where);
char *http_datestring(time_t xtime);