X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fmainmenu.c;h=d9337fda4cbb66a969a378666081fe2fc90fc9ee;hb=b4ad306de9560ec731db113ed509a1172209c444;hp=0436a77a270abb0c7783ebff2052da8ed70f8b32;hpb=bedf5c0b955473d8ad02eaf628e8d209f534f2b6;p=citadel.git diff --git a/webcit/mainmenu.c b/webcit/mainmenu.c index 0436a77a2..d9337fda4 100644 --- a/webcit/mainmenu.c +++ b/webcit/mainmenu.c @@ -1,34 +1,32 @@ /* * $Id$ */ -/** - * \defgroup DispAdvancedMenu Displays the "advanced" (main) menu. - * \ingroup MenuInfrastructure - * - */ -/*@{*/ + #include "webcit.h" -/** - * \brief The Main Menu +/* + * The Main Menu */ void display_main_menu(void) { + begin_burst(); + output_headers(1, 0, 0, 0, 1, 0); + DoTemplate(HKEY("display_main_menu"), NULL, NULL, 0); + end_burst(); + +/* + char buf[SIZ]; output_headers(1, 1, 1, 0, 0, 0); wprintf("
" - "" - "
\n"); + "" + "" "
\n"); - svprintf("BOXTITLE", WCS_STRING, _("Basic commands")); - do_template("beginbox"); + svput("BOXTITLE", WCS_STRING, _("Basic commands")); + do_template("beginbox", NULL); - wprintf("\n" - "" - "" - "
"); /**< start of first column */ - - wprintf("\n"); /* start of second column */ + / * start of second column * / - wprintf(""); /* start of third column */ + / * start of third column * / - wprintf("
\n"); - do_template("endbox"); + wprintf(" "); + + do_template("endbox", NULL); wprintf("
"); - svprintf("BOXTITLE", WCS_STRING, _("Your info")); - do_template("beginbox"); - - wprintf("\n"); - - do_template("endbox"); + print_menu_box(_("Your info"), "adminitems", 8, + "display_preferences", _("Change your preferences and settings"), + "display_reg", _("Update your contact information"), + "display_changepw", _("Change your password"), + "display_editbio", _("Enter your 'bio'"), + "display_editpic", _("Edit your online photo"), + "display_sieve", _("View/edit server-side mail filters"), + "display_pushemail", _("Edit your push email settings"), + "display_openids", _("Manage your OpenIDs") + ); wprintf(""); - svprintf("BOXTITLE", WCS_STRING, _("Advanced room commands")); - do_template("beginbox"); - - wprintf("\n"); - - do_template("endbox"); + snprintf(buf, SIZ, _("Zap (forget) this room (%s)"), WC->wc_roomname); + + if ( (WC->axlevel >= 6) || (WC->is_room_aide) || (WC->is_mailbox) ) + print_menu_box(_("Advanced room commands"),"adminitems", 5, + "display_editroom", _("Edit or delete this room"), + "display_private", _("Go to a 'hidden' room"), + "display_entroom", _("Create a new room"), + "display_zap",buf, + "zapped_list",_("List all forgotten rooms")); + else + print_menu_box(_("Advanced room commands"),"adminitems", 4, + "display_private", _("Go to a 'hidden' room"), + "display_entroom", _("Create a new room"), + "display_zap",buf, + "zapped_list",_("List all forgotten rooms")); wprintf("
"); wDumpContent(2); +*/ } -/** - * \brief System administration menu +/* + * System administration menu */ void display_aide_menu(void) { + begin_burst(); + output_headers(1, 0, 0, 0, 1, 0); + DoTemplate(HKEY("display_aide_menu"), NULL, NULL, 0); + end_burst(); +/* output_headers(1, 1, 2, 0, 0, 0); wprintf("
\n"); - wprintf("
\n"); wprintf("

"); wprintf(_("System Administration Menu")); wprintf("

"); - wprintf("
"); + wprintf("\n"); - wprintf("
"); + wprintf("
"); wprintf("
" - " " - "
"); - - svprintf("BOXTITLE", WCS_STRING, _("Global Configuration")); - do_template("beginbox"); - - wprintf("
    "); - - wprintf("
  • "); - wprintf(_("Edit site-wide configuration")); - wprintf("
  • \n"); + " " + "
    "); - wprintf("
  • "); - wprintf(_("Domain names and Internet mail configuration")); - wprintf("
  • \n"); + print_menu_box(_("Global Configuration"), "adminitems", 4, + "display_siteconfig", _("Edit site-wide configuration"), + "display_inetconf",_("Domain names and Internet mail configuration"), + "display_netconf", _("Configure replication with other Citadel servers"), + "display_smtpqueue", _("View the outbound SMTP queue")); + + wprintf("
    "); - wprintf("
  • "); - wprintf(_("Configure replication with other Citadel servers")); - wprintf("
  • \n"); + print_menu_box(_("User account management"), "adminitems", 2, + "select_user_to_edit", _("Add, change, delete user accounts"), + "validate", _("Validate new users")); - wprintf("
  • "); - wprintf(_("View the outbound SMTP queue")); - wprintf("
  • \n"); + wprintf("
    "); - wprintf(""); - do_template("endbox"); + print_menu_box(_("Shutdown Citadel"), "adminitems", 3, + "server_shutdown?when=now", _("Restart Now"), + "server_shutdown?when=page", _("Restart after paging users"), + "server_shutdown?when=idle", _("Restart when all users are idle")); - wprintf(""); - - svprintf("BOXTITLE", WCS_STRING, _("User account management")); - do_template("beginbox"); - - wprintf(""); - - do_template("endbox"); - - wprintf("
    "); - - svprintf("BOXTITLE", WCS_STRING, _("Rooms and Floors")); - do_template("beginbox"); + wprintf(""); - wprintf(""); - - do_template("endbox"); + print_menu_box(_("Rooms and Floors"), "adminitems", 1, + "display_floorconfig", _("Add, change, or delete floors")); wprintf("
    "); wDumpContent(2); +*/ } - - -/** - * \brief Display the screen to enter a generic server command +/* + * Display the screen to enter a generic server command */ void display_generic(void) { output_headers(1, 1, 2, 0, 0, 0); - wprintf("
    \n" - "
    " - ""); + wprintf("
    \n"); + wprintf("

    "); wprintf(_("Enter a server command")); - wprintf("

    \n" - "
    \n
    \n" - ); + wprintf(""); + wprintf("
    \n"); + + wprintf("
    \n"); wprintf("
    " "
    \n"); @@ -302,7 +234,7 @@ void display_generic(void) wprintf("
    \n"); wprintf("
    \n"); - wprintf("\n", WC->nonce); + wprintf("\n", WC->nonce); wprintf(_("Enter command:")); wprintf("

    \n"); @@ -322,8 +254,8 @@ void display_generic(void) wDumpContent(1); } -/** - * \brief Interactive window to perform generic Citadel server commands. +/* + * Interactive window to perform generic Citadel server commands. */ void do_generic(void) { @@ -332,7 +264,7 @@ void do_generic(void) char *junk; size_t len; - if (strlen(bstr("sc_button")) == 0) { + if (!havebstr("sc_button")) { display_main_menu(); return; } @@ -342,8 +274,8 @@ void do_generic(void) serv_printf("%s", bstr("g_cmd")); serv_getln(buf, sizeof buf); - svprintf("BOXTITLE", WCS_STRING, _("Server command results")); - do_template("beginbox"); + svput("BOXTITLE", WCS_STRING, _("Server command results")); + do_template("beginbox", NULL); wprintf("
    Command:"); escputs(bstr("g_cmd")); @@ -381,14 +313,15 @@ void do_generic(void) wprintf("
    "); wprintf("Enter another command
    \n"); wprintf("Return to menu\n"); - do_template("endbox"); + do_template("endbox", NULL); wDumpContent(1); } -/** - * \brief Display the menubar. - * \param as_single_page Set to display HTML headers and footers -- otherwise it's assumed +/* + * Display the menubar. + * + * Set 'as_single_page' to display HTML headers and footers -- otherwise it's assumed * that the menubar is being embedded in another page. */ void display_menubar(int as_single_page) { @@ -402,10 +335,10 @@ void display_menubar(int as_single_page) { "body { text-decoration: none; }\n" "\n" "\n"); - do_template("background"); + do_template("background", NULL); } - do_template("menubar"); + do_template("menubar", NULL); if (as_single_page) { wDumpContent(2); @@ -415,4 +348,82 @@ void display_menubar(int as_single_page) { } -/*@}*/ +/* + * Display the wait / input dialog while restarting the server. + */ +void display_shutdown(void) +{ + char buf[SIZ]; + char *when; + + when=bstr("when"); + if (strcmp(when, "now") == 0){ + serv_printf("DOWN 1"); + serv_getln(buf, sizeof buf); + if (atol(buf) == 500) + { /* upsie. maybe the server is not running as daemon? */ + + safestrncpy(WC->ImportantMessage, + &buf[4], + sizeof WC->ImportantMessage); + } + begin_burst(); + output_headers(1, 0, 0, 0, 1, 0); + DoTemplate(HKEY("display_serverrestart"), NULL, NULL, 0); + end_burst(); + lingering_close(WC->http_sock); + sleeeeeeeeeep(10); + serv_printf("NOOP"); + serv_printf("NOOP"); + } + else if (strcmp(when, "page") == 0) { + char *message; + + message = bstr("message"); + if ((message == NULL) || (IsEmptyStr(message))) + { + begin_burst(); + output_headers(1, 0, 0, 0, 1, 0); + DoTemplate(HKEY("display_serverrestartpage"), NULL, NULL, 0); + end_burst(); + } + else + { + serv_printf("SEXP broadcast|%s", message); + serv_getln(buf, sizeof buf); // should we care? + begin_burst(); + output_headers(1, 0, 0, 0, 1, 0); + DoTemplate(HKEY("display_serverrestartpagedo"), NULL, NULL, 0); + end_burst(); + } + } + else if (!strcmp(when, "idle")) { + serv_printf("SCDN 3"); + serv_getln(buf, sizeof buf); + + if (atol(buf) == 500) + { /* upsie. maybe the server is not running as daemon? */ + safestrncpy(WC->ImportantMessage, + &buf[4], + sizeof WC->ImportantMessage); + } + begin_burst(); + output_headers(1, 0, 0, 0, 1, 0); + DoTemplate(HKEY("display_aide_menu"), NULL, NULL, 0); + end_burst(); + } +} + +void _display_menubar(void) { display_menubar(0); } + +void +InitModule_MAINMENU +(void) +{ + WebcitAddUrlHandler(HKEY("display_aide_menu"), display_aide_menu, 0); + WebcitAddUrlHandler(HKEY("server_shutdown"), display_shutdown, 0); + WebcitAddUrlHandler(HKEY("display_main_menu"), display_main_menu, 0); + WebcitAddUrlHandler(HKEY("display_generic"), display_generic, 0); + WebcitAddUrlHandler(HKEY("do_generic"), do_generic, 0); + WebcitAddUrlHandler(HKEY("display_menubar"), _display_menubar, 0); +}