]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.h
* add new 'Context' Parameter to the template call
[citadel.git] / webcit / webcit.h
index 8737160e47566cdd3c55e0e07074dcaf827febfd..3923d5aca84ed37609c727a1471c1d5e57f4ac0b 100644 (file)
@@ -291,6 +291,35 @@ typedef struct _wcsubst {
        void (*wcs_function)(void); /**< funcion hook ???*/
 } wcsubst;
 
+#define TYPE_STR   1
+#define TYPE_LONG  2
+#define MAXPARAM  10
+typedef struct _TemplateParam {
+       const char *Start;
+       int Type;
+       long len;
+       long lvalue;
+} TemplateParam;
+
+typedef struct _TemplateToken {
+       const char *pTokenStart;
+       size_t TokenStart;
+       size_t TokenEnd;
+       const char *pTokenEnd;
+       int IsGettext;
+
+       const char *pName;
+       size_t NameEnd;
+
+       int HaveParameters;
+       int nParameters;
+       TemplateParam *Params[MAXPARAM];
+} WCTemplateToken;
+
+typedef void (*WCHandlerFunc)(StrBuf *Target, int nArgs, WCTemplateToken *Token, void *Context);
+
+void RegisterNS(const char *NSName, long len, int nMinArgs, int nMaxArgs, WCHandlerFunc HandlerFunc);
+
 /**
  * \brief Values for wcs_type
  */
@@ -469,6 +498,12 @@ extern char wizard_filename[];
 extern time_t if_modified_since;
 extern int follow_xff;
 extern HashList *HandlerHash;
+extern HashList *PreferenceHooks;
+extern HashList *WirelessTemplateCache;
+extern HashList *WirelessLocalTemplateCache;
+extern HashList *TemplateCache;
+extern HashList *LocalTemplateCache;
+extern HashList *GlobalNS;
 
 void InitialiseSemaphores(void);
 void begin_critical_section(int which_one);
@@ -537,6 +572,7 @@ const char *BSTR(char *key);
 const char *Bstr(char *key, size_t keylen);
 
 void urlescputs(char *);
+void hurlescputs(char *);
 void jsesc(char *, size_t, char *);
 void jsescputs(char *);
 void output_headers(    int do_httpheaders,
@@ -610,7 +646,8 @@ void SVCALLBACK(char *keyname, var_callback_fptr fcn_ptr);
 void SVCallback(char *keyname, size_t keylen,  var_callback_fptr fcn_ptr);
 #define svcallback(a, b) SVCallback(a, sizeof(a) - 1, b)
 
-void do_template(void *templatename);
+void DoTemplate(const char *templatename, long len, void *Context);
+#define do_template(a, b) DoTemplate(a, sizeof(a) -1, b);
 
 
 int lingering_close(int fd);
@@ -648,7 +685,11 @@ int get_PREF_YESNO(const char *key, size_t keylen, int *value, int Default);
 #define set_pref_yesno(a, b, c) set_PREF_YESNO(a, sizeof(a) - 1, b, c)
 void set_PREF_YESNO(const char *key, size_t keylen, int value, int save_to_server);
 
+#define get_room_pref(a) get_ROOM_PREFS(a, sizeof(a) - 1)
+StrBuf *get_ROOM_PREFS(const char *key, size_t keylen);
 
+#define set_room_pref(a, b, c) set_ROOM_PREFS(a, sizeof(a) - 1, b, c)
+void set_ROOM_PREFS(const char *key, size_t keylen, StrBuf *value, int save_to_server);
 
 int is_msg_in_mset(char *mset, long msgnum);
 void display_addressbook(long msgnum, char alpha);
@@ -705,6 +746,7 @@ int ical_ctdl_is_overlap(
 void initialize_locales(void);
 void ShutdownLocale(void);
 #endif
+void TmplGettext(StrBuf *Target, int nTokens, WCTemplateToken *Token);
 
 extern char *months[];
 extern char *days[];