]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.h
* remove unneeded vcard function...
[citadel.git] / webcit / webcit.h
index 422ecb2027b707a30fec7f9094b0b10cf8b4fa32..8d919464dc239841234e448fcea3d70712fc01c5 100644 (file)
@@ -89,8 +89,8 @@
 #include "subst.h"
 #include "messages.h"
 #include "paramhandling.h"
-#include "preferences.h"
 #include "roomops.h"
+#include "preferences.h"
 
 #ifdef HAVE_OPENSSL
 /* Work around RedHat's b0rken OpenSSL includes */
@@ -115,8 +115,8 @@ extern char *ssl_cipher_list;
 #define PORT_NUM               2000            /* port number to listen on */
 #define DEVELOPER_ID           0
 #define CLIENT_ID              4
-#define CLIENT_VERSION         766             /* This version of WebCit */
-#define MINIMUM_CIT_VERSION    766             /* min required Citadel ver */
+#define CLIENT_VERSION         780             /* This version of WebCit */
+#define MINIMUM_CIT_VERSION    770             /* min required Citadel ver */
 #define        LIBCITADEL_MIN          766             /* min required libcitadel ver */
 #define DEFAULT_HOST           "localhost"     /* Default Citadel server */
 #define DEFAULT_PORT           "504"
@@ -178,6 +178,7 @@ extern char *ssl_cipher_list;
 #define UA_POSTALLOWED          32
 #define UA_ADMINALLOWED         64
 #define UA_DELETEALLOWED        128
+#define UA_ISTRASH              256 /* Only available in room view... */
 
 
 /*
@@ -316,15 +317,18 @@ typedef struct _addrbookent {
 #define COOKIEUNNEEDED (1<<6)
 #define ISSTATIC (1<<7)
 #define FORCE_SESSIONCLOSE (1<<8)
-#define PARSE_REST_URL (1<<0)
+#define PARSE_REST_URL (1<<9)
 
 typedef void (*WebcitHandlerFunc)(void);
 typedef struct  _WebcitHandler{
        WebcitHandlerFunc F;
        long Flags;
        StrBuf *Name;
+       StrBuf *DisplayName;
 } WebcitHandler;
-void WebcitAddUrlHandler(const char * UrlString, long UrlSLen, WebcitHandlerFunc F, long Flags);
+
+
+void WebcitAddUrlHandler(const char * UrlString, long UrlSLen, const char *DisplayName, long dslen, WebcitHandlerFunc F, long Flags);
 
 typedef struct _headereval {
        ExamineMsgHeaderFunc evaluator;
@@ -376,6 +380,7 @@ typedef struct _HdrRefs {
        int gzip_ok;                            /* Nonzero if Accept-encoding: gzip */
        int prohibit_caching;
        int dav_depth;
+       int Static;
 
        /* these are references into Hdr->HTTPHeaders, so we don't need to free them. */
        StrBuf *ContentType;
@@ -383,6 +388,7 @@ typedef struct _HdrRefs {
        StrBuf *ReqLine;
        StrBuf *http_host;                      /* HTTP Host: header */
        StrBuf *browser_host;
+       StrBuf *browser_language;
        StrBuf *user_agent;
        StrBuf *plainauth;
        StrBuf *dav_ifmatch;
@@ -448,7 +454,7 @@ struct wcsession {
        char ImportantMessage[SIZ];
        StrBuf *ImportantMsg;
        HashList *Directory;                    /* Parts of the directory URL in snippets */
-       const floor *CurrentFloor;              /**< when Parsing REST, which floor are we on? */
+       const Floor *CurrentFloor;              /**< when Parsing REST, which floor are we on? */
 
 /* accounting */
        StrBuf *wc_username;                    /* login name of current user */
@@ -474,15 +480,17 @@ struct wcsession {
        int time_format_cache;                  /* which timeformat does our user like? */
 
 /* current room related */
-       StrBuf *wc_roomname;                    /* Room we are currently in */
-       unsigned room_flags;                    /* flags associated with the current room */
-       unsigned room_flags2;                   /* flags associated with the current room */
-       int wc_view;                            /* view for the current room */
-       int wc_default_view;                    /* default view for the current room */
-       int wc_is_trash;                        /* nonzero == current room is a Trash folder */
-       int wc_floor;                           /* floor number of current room */
-       int is_mailbox;                         /* the current room is a private mailbox */
-
+/*     StrBuf *wc_roomname;                    / * Room we are currently in */
+/*     unsigned room_flags;                    / * flags associated with the current room */
+/*     unsigned room_flags2;                   / * flags associated with the current room */
+/*     int wc_view;                            / * view for the current room */
+/*     int wc_default_view;                    / * default view for the current room */
+/*     int wc_is_trash;                        / * nonzero == current room is a Trash folder */
+/*     int wc_floor;                           / * floor number of current room */
+/*     int is_mailbox;                         / * the current room is a private mailbox */
+
+       folder CurRoom;                         /* information about our current room */
+       const folder *ThisRoom;                 /* if REST found a room, remember it here. */
 /* next/previous room thingabob */
        struct march *march;                    /* march mode room list */
        char ugname[128];                       /* where does 'ungoto' take us */
@@ -499,7 +507,9 @@ struct wcsession {
        int remember_new_mail;                  /* last count of new mail messages */
 
 /* Roomiew control */
-       HashList *Floors;                       /* floors our citserver has... */
+       HashList *Floors;                       /* floors our citserver has hashed numeric for quicker access*/
+       HashList *FloorsByName;                 /* same but hashed by its name */
+       HashList *Rooms;                        /* our directory structure as loaded by LKRA */
        HashList *summ;                         /* list of messages for mailbox summary view */
   /** Perhaps these should be within a struct instead */
        long startmsg;                          /* message number to start at */
@@ -515,7 +525,7 @@ struct wcsession {
        int cache_max_folders;
        int cache_num_floors;
        time_t cache_timestamp;
-       HashList *IconBarSettings;              /* which icons should be shown / not shown? */
+       long *IBSettingsVec;                    /* which icons should be shown / not shown? */
        const StrBuf *floordiv_expanded;        /* which floordiv currently expanded */
 
 
@@ -578,13 +588,8 @@ void InitialiseSemaphores(void);
 void begin_critical_section(int which_one);
 void end_critical_section(int which_one);
 
-void stuff_to_cookie(char *cookie, size_t clen,
-               int session,
-               StrBuf *user,
-               StrBuf *pass,
-               StrBuf *room,
-               const char *language
-);
+void stuff_to_cookie(int unset_cookie);
+
 void cookie_to_stuff(StrBuf *cookie,
                int *session,
                StrBuf *user,
@@ -640,7 +645,7 @@ void output_headers(    int do_httpheaders,
                        int suppress_check,
                        int cache);
 void output_custom_content_header(const char *ctype);
-void wprintf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
+void wc_printf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
 void hprintf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
 void output_static(const char* What);
 
@@ -657,7 +662,7 @@ void embed_main_menu(void);
 
 void do_addrbook_view(addrbookent *addrbook, int num_ab);
 void fetch_ab_name(message_summary *Msg, char **namebuf);
-void display_vcard(StrBuf *Target, StrBuf *vcard_source, char alpha, int full, char **storename, long msgnum);
+void display_vcard(StrBuf *Target, wc_mime_attachment *Mime, char alpha, int full, char **storename, long msgnum);
 void jsonMessageList(void);
 void new_summary_view(void);
 void getseen(void);
@@ -721,7 +726,6 @@ void folders(void);
 
 
 
-void display_addressbook(long msgnum, char alpha);
 void offer_start_page(StrBuf *Target, WCTemplputParams *TP);
 void convenience_page(const char *titlebarcolor, const char *titlebarmsg, const char *messagetext);
 void output_html(const char *, int, int, StrBuf *, StrBuf *);
@@ -769,7 +773,6 @@ int read_server_binary(StrBuf *Ret, size_t total_len, StrBuf *Buf);
 int StrBuf_ServGetBLOB(StrBuf *buf, long BlobSize);
 int StrBuf_ServGetBLOBBuffered(StrBuf *buf, long BlobSize);
 int read_server_text(StrBuf *Buf, long *nLines);
-int goto_config_room(StrBuf *Buf);
 long locate_user_vcard_in_this_room(message_summary **VCMsg,
                                    wc_mime_attachment **VCAtt);
 void sleeeeeeeeeep(int);
@@ -786,8 +789,8 @@ void end_tab(int tabnum, int num_tabs);
 void str_wiki_index(char *s);
 long guess_calhourformat(void);
 int get_time_format_cached (void);
-int xtoi(const char *in, size_t len);
 const char *get_selected_language(void);
+void display_wiki_pagelist(void);
 
 #define DATEFMT_FULL 0
 #define DATEFMT_BRIEF 1