X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fpreferences.c;h=b60d36dc8d11018348ac2845931c11fc3961ed5d;hb=c477d6a73cf3afdc47913e2c775ceb5938b6a469;hp=02cd7416c3ae1f2b5e1a5e42762f0090387bc5a5;hpb=ee8121a2817b5a36b314a6c55ecba5d83fef3bad;p=citadel.git diff --git a/webcit/preferences.c b/webcit/preferences.c index 02cd7416c..b60d36dc8 100644 --- a/webcit/preferences.c +++ b/webcit/preferences.c @@ -1,16 +1,20 @@ /* * $Id$ - * - * Manage user preferences with a little help from the Citadel server. + */ +/** + * \defgroup ManagePrefs Manage user preferences with a little help from the Citadel server. + * \ingroup CitadelConfig * */ - +/*@{*/ #include "webcit.h" #include "webserver.h" #include "groupdav.h" - +/** + * \brief display preferences dialog + */ void load_preferences(void) { char buf[SIZ]; long msgnum = 0L; @@ -56,14 +60,14 @@ void load_preferences(void) { } } - /* Go back to the room we're supposed to be in */ + /** Go back to the room we're supposed to be in */ serv_printf("GOTO %s", WC->wc_roomname); serv_getln(buf, sizeof buf); } -/* - * Goto the user's configuration room, creating it if necessary. - * Returns 0 on success or nonzero upon failure. +/** + * \brief Goto the user's configuration room, creating it if necessary. + * \return 0 on success or nonzero upon failure. */ int goto_config_room(void) { char buf[SIZ]; @@ -80,7 +84,9 @@ int goto_config_room(void) { return(0); } - +/** + * \brief save the modifications + */ void save_preferences(void) { char buf[SIZ]; long msgnum = 0L; @@ -109,11 +115,17 @@ void save_preferences(void) { serv_puts("000"); } - /* Go back to the room we're supposed to be in */ + /** Go back to the room we're supposed to be in */ serv_printf("GOTO %s", WC->wc_roomname); serv_getln(buf, sizeof buf); } +/** + * \brief query the actual setting of key in the citadel database + * \param key config key to query + * \param value value to the key to get + * \param value_len length of the value string + */ void get_preference(char *key, char *value, size_t value_len) { int num_prefs; int i; @@ -132,12 +144,26 @@ void get_preference(char *key, char *value, size_t value_len) { } } +/** + * \brief Write a key into the webcit preferences database for this user + * + * \params key key whichs value is to be modified + * \param value value to set + * \param save_to_server 1 = flush all data to the server, 0 = cache it for now + */ void set_preference(char *key, char *value, int save_to_server) { int num_prefs; int i; char buf[SIZ]; char thiskey[SIZ]; char *newprefs = NULL; + size_t newprefs_len = 0; + + newprefs_len = strlen(key) + strlen(value) + 10; + if (WC->preferences != NULL) newprefs_len += strlen(WC->preferences); + newprefs = malloc(newprefs_len); + if (newprefs == NULL) return; + strcpy(newprefs, ""); num_prefs = num_tokens(WC->preferences, '\n'); for (i=0; ipreferences); WC->preferences = newprefs; @@ -168,8 +187,8 @@ void set_preference(char *key, char *value, int save_to_server) { -/* - * display form for changing your preferences and settings +/** + * \brief display form for changing your preferences and settings */ void display_preferences(void) { @@ -180,8 +199,8 @@ void display_preferences(void) int i; wprintf("
\n"); - wprintf("
"); - wprintf("\""); + wprintf("
"); + wprintf("\""); wprintf(" "); wprintf(_("Preferences and settings")); wprintf(""); @@ -190,16 +209,17 @@ void display_preferences(void) wprintf("\n" "
\n"); - wprintf("
" - "
\n"); + wprintf("
" + "
\n"); - /* begin form */ + /** begin form */ wprintf("
\n" "
\n" "\n"); + wprintf("\n", WC->nonce); - /* + /** * Room list view */ get_preference("roomlistview", buf, sizeof buf); @@ -221,7 +241,7 @@ void display_preferences(void) wprintf("\n"); - /* + /** * Calendar hour format */ get_preference("calhourformat", calhourformat, sizeof calhourformat); @@ -244,7 +264,7 @@ void display_preferences(void) wprintf("\n"); - /* + /** * Calendar day view -- day start time */ get_preference("daystart", buf, sizeof buf); @@ -273,7 +293,7 @@ void display_preferences(void) wprintf("\n"); wprintf("\n"); - /* + /** * Calendar day view -- day end time */ get_preference("dayend", buf, sizeof buf); @@ -302,7 +322,7 @@ void display_preferences(void) wprintf("\n"); wprintf("\n"); - /* + /** * Signature */ get_preference("use_sig", buf, sizeof buf); @@ -352,7 +372,18 @@ void display_preferences(void) " " ); + /** Character set to assume is in use for improperly encoded headers */ + get_preference("default_header_charset", buf, sizeof buf); + if (buf[0] == 0) strcpy(buf, "UTF-8"); + wprintf(""); + /** submit buttons */ wprintf("
"); + wprintf(_("Default character set for email headers:")); + wprintf(""); + wprintf(""); + wprintf("
\n" "" " " @@ -361,23 +392,20 @@ void display_preferences(void) _("Cancel") ); + /** end form */ wprintf("
\n"); - - /* end form */ - - wprintf("
\n"); wDumpContent(1); } -/* - * Commit new preferences and settings +/** + * \brief Commit new preferences and settings */ void set_preferences(void) { char ebuf[300]; - if (strlen(bstr("change_button")) == 0) { + if (IsEmptyStr(bstr("change_button"))) { safestrncpy(WC->ImportantMessage, _("Cancelled. No settings were changed."), sizeof WC->ImportantMessage); @@ -385,7 +413,8 @@ void set_preferences(void) return; } - /* Set the last argument to 1 only for the final setting, so + /** + * Set the last argument to 1 only for the final setting, so * we don't send the prefs file to the server repeatedly */ set_preference("roomlistview", bstr("roomlistview"), 0); @@ -393,9 +422,13 @@ void set_preferences(void) set_preference("use_sig", bstr("use_sig"), 0); set_preference("daystart", bstr("daystart"), 0); set_preference("dayend", bstr("dayend"), 0); + set_preference("default_header_charset", bstr("default_header_charset"), 0); euid_escapize(ebuf, bstr("signature")); set_preference("signature", ebuf, 1); display_main_menu(); } + + +/*@}*/