Finished the WebCit screen for the Global Alias Table.
authorArt Cancro <ajc@citadel.org>
Mon, 6 Sep 2021 22:21:29 +0000 (22:21 +0000)
committerArt Cancro <ajc@citadel.org>
Mon, 6 Sep 2021 22:21:29 +0000 (22:21 +0000)
webcit/mainmenu.c
webcit/serv_func.c
webcit/static/t/aide/display_aliases.html
webcit/webcit.c

index c731721..2c326e0 100644 (file)
@@ -43,57 +43,64 @@ void do_generic(void) {
        char *junk;
        size_t len;
 
-       if (!havebstr("sc_button")) {
+       if ( (!havebstr("sc_button")) && (!havebstr("ok_button")) && (!havebstr("cancel_button")) ) {
                display_main_menu();
                return;
        }
 
-       Buf = NewStrBuf();
-       serv_puts(bstr("g_cmd"));
-       StrBuf_ServGetln(Buf);
-       
-       switch (GetServerStatus(Buf, NULL)) {
-       case 8:
-               serv_puts("\n\n000");
-               if ( (StrLength(Buf)==3) && 
-                    !strcmp(ChrPtr(Buf), "000")) {
-                       StrBufAppendBufPlain(Buf, HKEY("\000"), 0);
-                       break;
-               }
-       case 1:
-               LineBuf = NewStrBuf();
-               StrBufAppendBufPlain(Buf, HKEY("\n"), 0);
-               while (!Done) {
-                       if (StrBuf_ServGetln(LineBuf) < 0)
+       if (havebstr("cancel_button")) {
+               AppendImportantMessage(_("Cancelled.  Changes were not saved."), -1);
+       }
+
+       if (havebstr("ok_button")) {
+               Buf = NewStrBuf();
+               serv_puts(bstr("g_cmd"));
+               StrBuf_ServGetln(Buf);
+               
+               switch (GetServerStatus(Buf, NULL)) {
+               case 8:
+                       serv_puts("\n\n000");
+                       if ( (StrLength(Buf)==3) && 
+                       !strcmp(ChrPtr(Buf), "000")) {
+                               StrBufAppendBufPlain(Buf, HKEY("\000"), 0);
                                break;
-                       if ( (StrLength(LineBuf)==3) && 
-                            !strcmp(ChrPtr(LineBuf), "000")) {
-                               Done = 1;
                        }
-                       StrBufAppendBuf(Buf, LineBuf, 0);
+               case 1:
+                       LineBuf = NewStrBuf();
                        StrBufAppendBufPlain(Buf, HKEY("\n"), 0);
+                       while (!Done) {
+                               if (StrBuf_ServGetln(LineBuf) < 0)
+                                       break;
+                               if ( (StrLength(LineBuf)==3) && 
+                               !strcmp(ChrPtr(LineBuf), "000")) {
+                                       Done = 1;
+                               }
+                               StrBufAppendBuf(Buf, LineBuf, 0);
+                               StrBufAppendBufPlain(Buf, HKEY("\n"), 0);
+                       }
+                       FreeStrBuf(&LineBuf);
+                       break;
+               case 2:
+                       break;
+               case 4:
+                       text_to_server(bstr("g_input"));
+                       serv_puts("000");
+                       break;
+               case 6:
+                       len = atol(&ChrPtr(Buf)[4]);
+                       StrBuf_ServGetBLOBBuffered(Buf, len);
+                       break;
+               case 7:
+                       len = atol(&ChrPtr(Buf)[4]);
+                       junk = malloc(len);
+                       memset(junk, 0, len);
+                       serv_write(junk, len);
+                       free(junk);
+                       break;
                }
-               FreeStrBuf(&LineBuf);
-               break;
-       case 2:
-               break;
-       case 4:
-               text_to_server(bstr("g_input"));
-               serv_puts("000");
-               break;
-       case 6:
-               len = atol(&ChrPtr(Buf)[4]);
-               StrBuf_ServGetBLOBBuffered(Buf, len);
-               break;
-       case 7:
-               len = atol(&ChrPtr(Buf)[4]);
-               junk = malloc(len);
-               memset(junk, 0, len);
-               serv_write(junk, len);
-               free(junk);
-               break;
+               FreeStrBuf(&Buf);
        }
-
+       
        // We may have been supplied with instructions regarding the location
        // to which we must return after posting.  If found, go there.
        if (havebstr("return_to")) {
@@ -114,7 +121,6 @@ void do_generic(void) {
                wDumpContent(1);
        }
 
-       FreeStrBuf(&Buf);
 }
 
 
index 9f9f89c..dab21f8 100644 (file)
@@ -1,11 +1,9 @@
-/*
- * Functions which handle communication with the Citadel server.
- *
- * Copyright (c) 1996-2018 by the citadel.org team
- *
- * This program is open source software.  You can redistribute it and/or
- * modify it under the terms of the GNU General Public License, version 3.
- */
+// Functions which handle communication with the Citadel server.
+//
+// Copyright (c) 1996-2021 by the citadel.org team
+//
+// This program is open source software.  You can redistribute it and/or
+// modify it under the terms of the GNU General Public License, version 3.
 
 #include "webcit.h"
 #include "webserver.h"
@@ -17,8 +15,7 @@ HashList *EmbeddableMimes = NULL;
 StrBuf *EmbeddableMimeStrs = NULL;
 
 
-void SetInlinMimeRenderers(void)
-{
+void SetInlinMimeRenderers(void) {
        StrBuf *Buf;
 
        Buf = NewStrBuf();
@@ -31,8 +28,7 @@ void SetInlinMimeRenderers(void)
 }
 
 
-void DeleteServInfo(ServInfo **FreeMe)
-{
+void DeleteServInfo(ServInfo **FreeMe) {
        if (*FreeMe == NULL)
                return;
        FreeStrBuf(&(*FreeMe)->serv_nodename);
@@ -53,8 +49,7 @@ void DeleteServInfo(ServInfo **FreeMe)
  * browser_host                the citadel we want to connect to
  * user_agent          which browser uses our client?
  */
-ServInfo *get_serv_info(StrBuf *browser_host, StrBuf *user_agent)
-{
+ServInfo *get_serv_info(StrBuf *browser_host, StrBuf *user_agent) {
        ServInfo *info;
        StrBuf *Buf;
        int a;
@@ -167,8 +162,7 @@ ServInfo *get_serv_info(StrBuf *browser_host, StrBuf *user_agent)
        return info;
 }
 
-int GetConnected (void)
-{
+int GetConnected (void) {
        StrBuf *Buf;
        wcsession *WCC = WC;
 
@@ -263,8 +257,7 @@ int GetConnected (void)
 }
 
 
-void FmOut(StrBuf *Target, const char *align, const StrBuf *Source)
-{
+void FmOut(StrBuf *Target, const char *align, const StrBuf *Source) {
        const char *ptr, *pte;
        const char *BufPtr = NULL;
        StrBuf *Line = NewStrBufPlain(NULL, SIZ);
@@ -343,8 +336,7 @@ void FmOut(StrBuf *Target, const char *align, const StrBuf *Source)
 /*
  *  Transmit message text (in memory) to the server.
  */
-void text_to_server(char *ptr)
-{
+void text_to_server(char *ptr) {
        char buf[256];
        int ch, a, pos, len;
 
@@ -353,7 +345,10 @@ void text_to_server(char *ptr)
 
        while (ptr[pos] != 0) {
                ch = ptr[pos++];
-               if (ch == 10) {
+               if (ch == 13) {
+                       // ignore CR characters
+               }
+               else if (ch == 10) {
                        len = strlen(buf);
                        while ( (isspace(buf[len - 1]))
                                && (buf[0] !=  '\0') 
@@ -384,8 +379,7 @@ void text_to_server(char *ptr)
 /*
  * Transmit message text (in memory) to the server, converting to Quoted-Printable encoding as we go.
  */
-void text_to_server_qp(const StrBuf *SendMeEncoded)
-{
+void text_to_server_qp(const StrBuf *SendMeEncoded) {
        StrBuf *ServBuf;
 
        ServBuf = StrBufRFC2047encodeMessage(SendMeEncoded);
@@ -399,8 +393,7 @@ void text_to_server_qp(const StrBuf *SendMeEncoded)
 /*
  * translate server message output to text (used for editing room info files and such)
  */
-void server_to_text()
-{
+void server_to_text() {
        char buf[SIZ];
 
        int count = 0;
@@ -422,8 +415,7 @@ void server_to_text()
  * usual 000 terminator is found.  Caller is responsible for freeing
  * the returned pointer.
  */
-int read_server_text(StrBuf *Buf, long *nLines)
-{
+int read_server_text(StrBuf *Buf, long *nLines) {
        wcsession *WCC = WC;
        StrBuf *ReadBuf;
        long nRead;
@@ -447,8 +439,7 @@ int read_server_text(StrBuf *Buf, long *nLines)
 }
 
 
-int GetServerStatusMsg(StrBuf *Line, long* FullState, int PutImportantMessage, int MajorOK)
-{
+int GetServerStatusMsg(StrBuf *Line, long* FullState, int PutImportantMessage, int MajorOK) {
        int rc;
        if (FullState != NULL)
                *FullState = StrTol(Line);
@@ -463,106 +454,92 @@ int GetServerStatusMsg(StrBuf *Line, long* FullState, int PutImportantMessage, i
 }
 
 
-void tmplput_serv_ip(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_serv_ip(StrBuf *Target, WCTemplputParams *TP) {
        StrBufAppendPrintf(Target, "%d", WC->ctdl_pid);
 }
 
-void tmplput_serv_admin(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_serv_admin(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return;
        StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_sysadm, 0);
 }
 
-void tmplput_serv_nodename(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_serv_nodename(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return;
        StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_nodename, 0);
 }
 
-void tmplput_serv_humannode(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_serv_humannode(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return;
        StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_humannode, 0);
 }
 
-void tmplput_serv_fqdn(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_serv_fqdn(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return;
        StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_fqdn, 0);
 }
 
-void tmplput_serv_software(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_serv_software(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return;
        StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_software, 0);
 }
 
-void tmplput_serv_rev_level(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_serv_rev_level(StrBuf *Target, WCTemplputParams *TP) {
        if (WC->serv_info == NULL) return;
        StrBufAppendPrintf(Target, "%d", WC->serv_info->serv_rev_level);
 }
-int conditional_serv_newuser_disabled(StrBuf *Target, WCTemplputParams *TP)
-{
+int conditional_serv_newuser_disabled(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return 0;
        return WCC->serv_info->serv_newuser_disabled != 0;
 }
 
-int conditional_serv_supports_guest(StrBuf *Target, WCTemplputParams *TP)                                                                                                                                       
-{
+int conditional_serv_supports_guest(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
         if (WCC->serv_info == NULL)
                return 0;
         return WCC->serv_info->serv_supports_guest != 0;
 }
 
-int conditional_serv_supports_openid(StrBuf *Target, WCTemplputParams *TP)
-{
+int conditional_serv_supports_openid(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return 0;
        return WCC->serv_info->serv_supports_openid != 0;
 }
 
-int conditional_serv_fulltext_enabled(StrBuf *Target, WCTemplputParams *TP)
-{
+int conditional_serv_fulltext_enabled(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return 0;
        return WCC->serv_info->serv_fulltext_enabled != 0;
 }
 
-int conditional_serv_ldap_enabled(StrBuf *Target, WCTemplputParams *TP)
-{
+int conditional_serv_ldap_enabled(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return 0;
        return WCC->serv_info->serv_supports_ldap != 0;
 }
 
-void tmplput_serv_bbs_city(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_serv_bbs_city(StrBuf *Target, WCTemplputParams *TP) {
        wcsession *WCC = WC;
        if (WCC->serv_info == NULL)
                return;
        StrBufAppendTemplate(Target, TP, WC->serv_info->serv_bbs_city, 0);
 }
 
-void tmplput_mesg(StrBuf *Target, WCTemplputParams *TP)
-{
+void tmplput_mesg(StrBuf *Target, WCTemplputParams *TP) {
        int n = 0;
        int Done = 0;
        StrBuf *Line;
@@ -602,15 +579,13 @@ void tmplput_site_prefix(StrBuf *Target, WCTemplputParams *TP) {
        }
 }
 
-void RegisterEmbeddableMimeType(const char *MimeType, long MTLen, int Priority)
-{
+void RegisterEmbeddableMimeType(const char *MimeType, long MTLen, int Priority) {
        StrBuf *MT;
        MT = NewStrBufPlain(MimeType, MTLen);
        Put(EmbeddableMimes, IKEY(Priority), MT, HFreeStrBuf);
 }
 
-void CreateMimeStr(void)
-{
+void CreateMimeStr(void) {
        HashPos  *it;
        void *vMime;
        long len = 0;
index 581b430..8ed9d80 100644 (file)
 <div id="wc_easterbunny77">
 </div>
 
-
-<br> ---form begins here ---<br>
-
 <form method="POST" action="do_generic">
-       <input type="hidden" name="return_to" value="/do_template?template=aide_display_aliases">
-       <textarea name="global_aliases" id="global_aliases" VALUE=""></textarea>
-       <input type="submit" value="<?_("Save")>">
-       <input type="submit" value="<?_("Cancel")>">
+       <input type="hidden" name="return_to" value="do_template?template=aide_display_menu">
+       <input type="hidden" name="g_cmd" value="conf putsys|global_alias_table">
+       <textarea name="g_input" id="g_input" rows="20" cols="80"  VALUE="" style="display:none;"></textarea>
+       <br><center>
+       <input type="submit" name="ok_button" onClick="javascript:add_alias();" value="<?_("Save")>">
+       <input type="submit" name="cancel_button" value="<?_("Cancel")>"></center>
 </form>
 
 <script type="text/javascript">
 
 load_aliases = async() => {
-       response = await fetch("ajax_servcmd?g_cmd=LIST");
+       response = await fetch("ajax_servcmd?g_cmd=conf getsys|global_alias_table");
        data = await(response.text());
        populate_aliases(data);
 };
@@ -40,23 +39,53 @@ function populate_aliases(data) {
        for (var i=1; i<lines.length && lines[i] != "000"; ++i) {
                config_line = lines[i].split("|");
                lineid = randomString(10);
-               a +=    "<tr id=" + lineid + "><td>" + config_line[0] + "</td><td>" +
-                       config_line[1] + "</td><td>" +
-                       "<a href=\"javascript:delete_alias('" + lineid + "');\">" +
-                       "<font color=#FF0000>&#10006;</font></a></td></tr>";
+               a +=    "<tr id=" + lineid + ">" +
+                       "<td><a href=\"javascript:delete_alias('" + lineid + "');\">" +
+                       "<font color=\"#FF0000\">&#10060;</font></a></td>" +
+                       "<td>" + config_line[0] + "</td>" +
+                       "<td>" + config_line[1] + "</td>" +
+                       "</tr>";
        }
+       a +=    "<tr id=\"newentry\">" +
+               "<td><a href=\"javascript:add_alias();\">" +
+               "<font color=\"#FF0000\">&#9989;</font></a></td>" +
+               "<td><input id=\"newalias1\" name=\"newalias1\" width=\"40\"></td>" +
+               "<td><input id=\"newalias2\" name=\"newalias2\" width=\"80\"></td>" +
+               "</tr>";
        a += "</table>";
        document.getElementById("wc_easterbunny77").innerHTML = a;
        repopulate_the_box();
 }
 
+function add_alias() {
+       a = document.getElementById("g_input").innerHTML;
+       if (a != "") {
+               a += "\n";
+       }
+       a += document.getElementById("newentry").cells[1].firstChild.value + "|";
+       a += document.getElementById("newentry").cells[2].firstChild.value;
+       document.getElementById("g_input").innerHTML = a;
+       document.getElementById("newentry").cells[1].firstChild.value = "";
+       document.getElementById("newentry").cells[2].firstChild.value = "";
+       populate_aliases("100 \n" + a);
+       return true;
+}
+
 function repopulate_the_box() {
        newbox = "";
        t = document.getElementById("killo9867");
        for (row of t.rows) {
-               newbox += row.cells[0].innerHTML + " - " + row.cells[1].innerHTML + "\n";
+               if (    (row.cells[1].innerHTML.trim() != "")
+                       && (row.cells[2].innerHTML.trim() != "")
+                       && (row.id != "newentry")
+               ) {
+                       if (newbox != "") {
+                               newbox += "\n";
+                       }
+                       newbox += row.cells[1].innerHTML.trim() + "|" + row.cells[2].innerHTML.trim();
+               }
        }
-       document.getElementById("global_aliases").innerHTML = newbox;
+       document.getElementById("g_input").innerHTML = newbox;
 }
 
 load_aliases();
index a7f2ddf..8af0969 100644 (file)
@@ -540,7 +540,6 @@ void pop_destination(void) {
 
 
 int ReadPostData(void) {
-       TRACE;
        int rc;
        int urlencoded_post = 0;
        StrBuf *content = NULL;