]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.h
* add transitional beginboxx template and move some places to the new syntax
[citadel.git] / webcit / webcit.h
index 33fe47e2d588c29574916af9ff931ff2c328e692..1250676ec1ff42d1b0752f7af92b62f074e14ea0 100644 (file)
@@ -260,7 +260,13 @@ struct roomlisting {
 
 #define TYPE_STR   1
 #define TYPE_LONG  2
+#define TYPE_PREFSTR 3
+#define TYPE_PREFINT 4
+#define TYPE_GETTEXT 5
+#define TYPE_BSTR 6
 #define MAXPARAM  20
+
+
 typedef struct _TemplateParam {
        const char *Start;
        int Type;
@@ -314,8 +320,7 @@ typedef struct _wcsubst {
 #define CTX_MAILSUM 9
 #define CTX_MIME_ATACH 10
 #define CTX_ATT 11
-#define CTX_GVEA 12
-#define CTX_GVSN 13
+#define CTX_STRBUF 12
 
 void RegisterNS(const char *NSName, long len, 
                int nMinArgs, 
@@ -326,6 +331,7 @@ void RegisterNS(const char *NSName, long len,
 
 typedef int (*WCConditionalFunc)(WCTemplateToken *Token, void *Context, int ContextType);
 typedef struct _ConditionalStruct {
+       const char *PlainName;
        int nParams;
        int ContextRequired;
        WCConditionalFunc CondF;
@@ -350,6 +356,12 @@ void RegisterITERATOR(const char *Name, long len, /* Our identifier */
                      int XPectContextType);         /* which context do we expct to be called in? */
 #define RegisterIterator(a, b, c, d, e, f, g, h) RegisterITERATOR(a, sizeof(a)-1, b, c, d, e, f, g, h)
 
+void GetTemplateTokenString(WCTemplateToken *Tokens,
+                           int N, 
+                           const char **Value, 
+                           long *len);
+
+
 void SVPut(char *keyname, size_t keylen, int keytype, char *Data);
 #define svput(a, b, c) SVPut(a, sizeof(a) - 1, b, c)
 void SVPutLong(char *keyname, size_t keylen, long Data);
@@ -370,6 +382,11 @@ void url_do_template(void);
 int CompareSubstToToken(TemplateParam *ParamToCompare, TemplateParam *ParamToLookup);
 int CompareSubstToStrBuf(StrBuf *Compare, TemplateParam *ParamToLookup);
 
+void StrBufAppendTemplate(StrBuf *Target, 
+                         int nArgs, 
+                         WCTemplateToken *Tokens,
+                         void *Context, int ContextType,
+                         const StrBuf *Source, int FormatTypeIndex);
 
 
 
@@ -401,6 +418,7 @@ void free_attachment(void *vattach);
 typedef struct wc_mime_attachment wc_mime_attachment;
 typedef void (*RenderMimeFunc)(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset);
 struct wc_mime_attachment {
+       int level;
        StrBuf *Name;
        StrBuf *FileName;
        StrBuf *PartNum;
@@ -440,6 +458,7 @@ typedef struct _message_summary {
        StrBuf *Room;
        StrBuf *Rfca;
        StrBuf *OtherNode;
+       const StrBuf *PartNum;
 
        HashList *Attachments;  /**< list of Accachments */
        HashList *Submessages;
@@ -452,17 +471,13 @@ typedef struct _message_summary {
 
 
        /** The mime part of the message */
-       wc_mime_attachment MsgBody;
-
-
-       /** Referencces; don't neeed to be freed: */
-       wc_mime_attachment *cal_partnum_ref;
-       wc_mime_attachment *vcard_partnum_ref;
+       wc_mime_attachment *MsgBody;
 } message_summary;
 void DestroyMessageSummary(void *vMsg);
 
 typedef void (*ExamineMsgHeaderFunc)(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset);
 
+void evaluate_mime_part(message_summary *Msg, wc_mime_attachment *Mime);
 
 
 
@@ -674,7 +689,7 @@ extern HashList *LocalTemplateCache;
 extern HashList *GlobalNS;
 extern HashList *Iterators;
 extern HashList *ZoneHash;
-extern HashList *Contitionals;
+extern HashList *Conditionals;
 extern HashList *MsgHeaderHandler;
 extern HashList *MimeRenderHandler;
 
@@ -783,7 +798,7 @@ void dump_vars(void);
 void embed_main_menu(void);
 void serv_read(char *buf, int bytes);
 void readloop(char *oper);
-void read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, int printable_view, char *section);
+int  read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, int printable_view, const StrBuf *section);
 void do_addrbook_view(addrbookent *addrbook, int num_ab);
 void display_vcard(StrBuf *Target, const char *vcard_source, char alpha, int full, char *storename, long msgnum);
 void text_to_server(char *ptr);