* Eliminated the 'gotonext' problem with the bbs view drop-down selector by changing...
authorArt Cancro <ajc@citadel.org>
Wed, 29 Jul 2009 03:51:47 +0000 (03:51 +0000)
committerArt Cancro <ajc@citadel.org>
Wed, 29 Jul 2009 03:51:47 +0000 (03:51 +0000)
webcit/messages.c
webcit/static/t/select_messageindex.html
webcit/static/t/select_messageindex_all.html
webcit/subst.c

index 8060e2248a3b0e6b996dd3caef29f5a1eea40672..73fb0f37ccef7852ef1ca0f9d1fb53a462ca9bb2 100644 (file)
@@ -701,7 +701,10 @@ inline message_summary* GetMessagePtrAt(int n, HashList *Summ)
 }
 
 
-long DrawMessageDropdown(StrBuf *Selector, long maxmsgs, long startmsg, int nMessages)
+/* startmsg is an index within the message list.
+ * starting_from is the Citadel message number to be supplied to a "MSGS GT" operation
+ */
+long DrawMessageDropdown(StrBuf *Selector, long maxmsgs, long startmsg, int nMessages, long starting_from)
 {
        StrBuf *TmpBuf;
        wcsession *WCC = WC;
@@ -727,6 +730,7 @@ long DrawMessageDropdown(StrBuf *Selector, long maxmsgs, long startmsg, int nMes
        vector[2] = 1;
        vector[1] = startmsg;
        vector[3] = 0;
+       vector[7] = starting_from;
 
        while (!done) {
                vector[3] = abs(nMessages);
@@ -1004,7 +1008,8 @@ void readloop(long oper)
                BBViewToolBar = NewStrBufPlain(NULL, SIZ);
                MessageDropdown = NewStrBufPlain(NULL, SIZ);
 
-               maxmsgs = DrawMessageDropdown(MessageDropdown, maxmsgs, startmsg, num_displayed);
+               maxmsgs = DrawMessageDropdown(MessageDropdown, maxmsgs, startmsg,
+                                               num_displayed, lowest_found-1);
                if (num_displayed < 0) {
                        startmsg += maxmsgs;
                        if (num_displayed != maxmsgs)                           
index 558a302aabf8c448c485cbcd9806914dbafb15ed..62b5b92da78a0fa91f516e80357fa9b3aa03a3bf 100644 (file)
@@ -1 +1 @@
-<option <?%("COND:LONGVECTOR", 1, 1, 6, "selected", "")> value="<?URLPART(0)>?startmsg=<?LONGVECTOR(6)>?maxmsgs=<?LONGVECTOR(3)>?is_summary=0?SortBy=date?SortOrder=<?BSTR("SortOrder")>"><?LONGVECTOR(4)>-<?LONGVECTOR(5)></option>
+<option <?%("COND:LONGVECTOR", 1, 1, 6, "selected", "")> value="readgt?gt=<?LONGVECTOR(7)>?startmsg=<?LONGVECTOR(6)>?maxmsgs=<?LONGVECTOR(3)>?is_summary=0?SortBy=date?SortOrder=<?BSTR("SortOrder")>"><?LONGVECTOR(4)>-<?LONGVECTOR(5)></option>
index e36f687d27242cbb238bf6f2e880639e64d7f958..9c123af555c8b9edb59302e314bac3d41c3ce415 100644 (file)
@@ -1 +1 @@
-<option <?%("COND:LONGVECTOR", 1, 1, 2, "", "selected")> value="<?URLPART(0)>?startmsg=<?LONGVECTOR(6)>?maxmsgs=9999999?is_summary=0?SortBy=date?SortOrder=<?BSTR("SortOrder")>"><?_("All")></option>
+<option <?%("COND:LONGVECTOR", 1, 1, 2, "", "selected")> value="readgt?gt=<?LONGVECTOR(7)>?startmsg=<?LONGVECTOR(6)>?maxmsgs=9999999?is_summary=0?SortBy=date?SortOrder=<?BSTR("SortOrder")>"><?_("All")></option>
index b073b580ae745bb885ab37c7b0ecf71a541792d8..2f45c8088cb6ef4753b54fdeded13f74c9860653 100644 (file)
@@ -1,12 +1,6 @@
 /*
  * $Id$
  */
-/**
- * \defgroup Subst Variable substitution type stuff
- * \ingroup CitadelConfig
- */
-
-/*@{*/
 
 #include "sysdep.h"
 #include <sys/types.h>
@@ -20,7 +14,7 @@
 #include "webcit.h"
 #include "webserver.h"
 
-extern char *static_dirs[PATH_MAX];  /**< Disk representation */
+extern char *static_dirs[PATH_MAX];  /* Disk representation */
 
 HashList *WirelessTemplateCache;
 HashList *WirelessLocalTemplateCache;
@@ -49,15 +43,15 @@ const char EmptyStr[]="";
 
 
 /*
- * \brief Dynamic content for variable substitution in templates
+ * Dynamic content for variable substitution in templates
  */
 typedef struct _wcsubst {
        ContextFilter Filter;
-       int wcs_type;                       /* which type of Substitution are we */
-       char wcs_key[32];                   /* copy of our hashkey for debugging */
-       StrBuf *wcs_value;                  /* if we're a string, keep it here */
-       long lvalue;                        /* type long? keep data here */
-       WCHandlerFunc wcs_function; /* funcion hook ???*/
+       int wcs_type;                           /* which type of Substitution are we */
+       char wcs_key[32];                       /* copy of our hashkey for debugging */
+       StrBuf *wcs_value;                      /* if we're a string, keep it here */
+       long lvalue;                            /* type long? keep data here */
+       WCHandlerFunc wcs_function;             /* funcion hook ???*/
 } wcsubst;
 
 
@@ -396,12 +390,13 @@ void FreeWCTemplate(void *vFreeMe)
 }
 
 
-/**
- * \brief debugging function to print array to log
+/*
+ * debugging function to print array to log
  */
 void VarPrintTransition(void *vVar1, void *vVar2, int odd){}
-/**
- * \brief debugging function to print array to log
+
+/*
+ * debugging function to print array to log
  */
 void VarPrintEntry(const char *Key, void *vSubst, int odd)
 {
@@ -426,8 +421,8 @@ void VarPrintEntry(const char *Key, void *vSubst, int odd)
 
 
 
-/**
- * \brief Clear out the list of substitution variables local to this session
+/*
+ * Clear out the list of substitution variables local to this session
  */
 void clear_substs(wcsession *wc) {
 
@@ -436,8 +431,8 @@ void clear_substs(wcsession *wc) {
        }
 }
 
-/**
- * \brief Clear out the list of substitution variables local to this session
+/*
+ * Clear out the list of substitution variables local to this session
  */
 void clear_local_substs(void) {
        clear_substs (WC);
@@ -497,8 +492,8 @@ void FlushPayload(wcsubst *ptr, int reusestrbuf, int type)
 }
 
 
-/**
- * \brief destructor; kill one entry.
+/*
+ * destructor; kill one entry.
  */
 void deletevar(void *data)
 {
@@ -536,12 +531,12 @@ wcsubst *NewSubstVar(const char *keyname, int keylen, int type)
 }
 
 
-/**
- * \brief Add a substitution variable (local to this session) (strlen version...)
- * \param keyname the replacementstring to substitute
- * \param keytype the kind of the key
- * \param format the format string ala printf
- * \param ... the arguments to substitute in the formatstring
+/*
+ * Add a substitution variable (local to this session) (strlen version...)
+ * keyname the replacementstring to substitute
+ * keytype the kind of the key
+ * format the format string ala printf
+ * ... the arguments to substitute in the formatstring
  */
 void SVPRINTF(char *keyname, int keytype, const char *format,...)
 {
@@ -552,7 +547,7 @@ void SVPRINTF(char *keyname, int keytype, const char *format,...)
        wcsession *WCC = WC;
        
        keylen = strlen(keyname);
-       /**
+       /*
         * First look if we're doing a replacement of
         * an existing key
         */
@@ -567,18 +562,18 @@ void SVPRINTF(char *keyname, int keytype, const char *format,...)
                ptr = NewSubstVar(keyname, keylen, keytype);
        }
 
-       /** Format the string */
+       /* Format the string */
        va_start(arg_ptr, format);
        StrBufVAppendPrintf(ptr->wcs_value, format, arg_ptr);
        va_end(arg_ptr);
 }
 
-/**
- * \brief Add a substitution variable (local to this session)
- * \param keyname the replacementstring to substitute
- * \param keytype the kind of the key
- * \param format the format string ala printf
- * \param ... the arguments to substitute in the formatstring
+/*
+ * Add a substitution variable (local to this session)
+ * keyname the replacementstring to substitute
+ * keytype the kind of the key
+ * format the format string ala printf
+ * ... the arguments to substitute in the formatstring
  */
 void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...)
 {
@@ -587,7 +582,7 @@ void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...)
        wcsubst *ptr = NULL;
        wcsession *WCC = WC;
                
-       /**
+       /*
         * First look if we're doing a replacement of
         * an existing key
         */
@@ -608,12 +603,12 @@ void svprintf(char *keyname, size_t keylen, int keytype, const char *format,...)
        va_end(arg_ptr);
 }
 
-/**
- * \brief Add a substitution variable (local to this session)
- * \param keyname the replacementstring to substitute
- * \param keytype the kind of the key
- * \param format the format string ala printf
- * \param ... the arguments to substitute in the formatstring
+/*
+ * Add a substitution variable (local to this session)
+ * keyname the replacementstring to substitute
+ * keytype the kind of the key
+ * format the format string ala printf
+ * ... the arguments to substitute in the formatstring
  */
 void SVPut(char *keyname, size_t keylen, int keytype, char *Data)
 {
@@ -622,7 +617,7 @@ void SVPut(char *keyname, size_t keylen, int keytype, char *Data)
        wcsession *WCC = WC;
 
        
-       /**
+       /*
         * First look if we're doing a replacement of
         * an existing key
         */
@@ -2673,8 +2668,3 @@ SessionDestroyModule_SUBST
 {
 
 }
-
-
-
-
-/*@}*/