From b5f6cba14c339fc66508fac3423e19c8061290a8 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Tue, 28 Dec 2010 17:20:27 -0500 Subject: [PATCH] Smoother navigation and restricted iconbar for guest mode --- webcit/iconbar.c | 12 ++++++++++-- webcit/roomops.c | 8 ++++---- webcit/static/t/iconbar.html | 9 +++++++++ webcit/webcit.c | 33 +++++++++++++++++++-------------- 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/webcit/iconbar.c b/webcit/iconbar.c index a8c7b69c5..5519100dc 100644 --- a/webcit/iconbar.c +++ b/webcit/iconbar.c @@ -197,12 +197,20 @@ void commit_iconbar(void) { } +/* + * Display the icon bar as long as we have an active session, + * and either the user is logged in or the server allows guest mode. + */ void tmplput_iconbar(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; - if ((WCC != NULL) && (WCC->logged_in)) { - DoTemplate(HKEY("iconbar"), NULL, &NoCtx); + if ( (WCC != NULL) + && ( (WCC->logged_in) + || (WCC->serv_info->serv_supports_guest) + ) + ) { + DoTemplate(HKEY("iconbar"), NULL, &NoCtx); } } diff --git a/webcit/roomops.c b/webcit/roomops.c index 8a3b4dfa4..ace255962 100644 --- a/webcit/roomops.c +++ b/webcit/roomops.c @@ -117,8 +117,8 @@ void smart_goto(const StrBuf *next_room) { readloop(readnew, eUseDefault); } -/** - * \brief goto a private room +/* + * goto a private room */ void goto_private(void) { @@ -944,8 +944,8 @@ void entroom(void) -/** - * \brief Change the view for this room +/* + * Change the view for this room */ void change_view(void) { int newview; diff --git a/webcit/static/t/iconbar.html b/webcit/static/t/iconbar.html index 4a84bef3e..b63f2b407 100644 --- a/webcit/static/t/iconbar.html +++ b/webcit/static/t/iconbar.html @@ -12,6 +12,7 @@ +
  • "> @@ -37,6 +38,7 @@
  • +
  • "> @@ -51,6 +53,7 @@
  • +
  • @@ -63,6 +66,7 @@
  • +
  • "> @@ -78,6 +82,11 @@ + +
    +"> +
    +
    diff --git a/webcit/webcit.c b/webcit/webcit.c index 8f51833de..5a0eec744 100644 --- a/webcit/webcit.c +++ b/webcit/webcit.c @@ -250,15 +250,10 @@ void http_redirect(const char *whichpage) { /* * Output a piece of content to the web browser using conformant HTTP and MIME semantics */ -void http_transmit_thing(const char *content_type, - int is_static) { +void http_transmit_thing(const char *content_type, int is_static) +{ -#ifndef TECH_PREVIEW - lprintf(9, "http_transmit_thing(%s)%s\n", - content_type, - ((is_static > 0) ? " (static)" : "") - ); -#endif + lprintf(9, "http_transmit_thing(%s)%s\n", content_type, ((is_static > 0) ? " (static)" : "")); output_headers(0, 0, 0, 0, 0, is_static); hprintf("Content-type: %s\r\n" @@ -326,8 +321,7 @@ void display_success(char *successmessage) /* - * Authorization required page - * This is probably temporary and should be revisited + * Authorization required page (sends a 401, causing the browser to request login credentials) */ void authorization_required(void) { @@ -740,7 +734,10 @@ void session_loop(void) } if (WCC->Hdr->HR.Handler != NULL) { - if (!WCC->logged_in && ((WCC->Hdr->HR.Handler->Flags & ANONYMOUS) == 0)) { + if ( (!WCC->logged_in) + && ((WCC->Hdr->HR.Handler->Flags & ANONYMOUS) == 0) + && (WCC->serv_info->serv_supports_guest == 0) + ) { display_login(); } else { @@ -755,17 +752,25 @@ void session_loop(void) end_ajax_response(); } } - /* When all else fais, display the main menu. */ + /* When all else fails, display the main menu. */ else { /* * ordinary browser users get a nice login screen, DAV etc. requsets * are given a 401 so they can handle it appropriate. */ if (!WCC->logged_in) { - if (xhttp) + if (xhttp) { authorization_required(); - else + } + else if (WCC->serv_info->serv_supports_guest) { + /* default action. probably revisit this. */ + StrBuf *teh_lobby = NewStrBufPlain(HKEY("_BASEROOM_")); + smart_goto(teh_lobby); + FreeStrBuf(&teh_lobby); + } + else { display_login(); + } } /* * Toplevel dav requests? or just a flat browser request? -- 2.30.2