X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Froomops.c;h=9f8180c55e4d9fa9565de93d870681020cb23fad;hb=61f3c8cdc0ca475841405667cad2938dbbcaa9d0;hp=8217b2a1ed984c8fcaf99ca5278e47417c267934;hpb=74f3aced8baf68deb4982960b350c5009f6912fd;p=citadel.git
diff --git a/webcit/roomops.c b/webcit/roomops.c
index 8217b2a1e..9f8180c55 100644
--- a/webcit/roomops.c
+++ b/webcit/roomops.c
@@ -6,51 +6,6 @@
#include "webcit.h"
#include "webserver.h"
-char *viewdefs[VIEW_MAX]; /* the different kinds of available views */
-
-ROOM_VIEWS exchangeable_views[VIEW_MAX][VIEW_MAX] = { /* the different kinds of available views for a view */
-{VIEW_BBS, VIEW_MAILBOX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX },
-{VIEW_BBS, VIEW_MAILBOX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX },
-{VIEW_MAX, VIEW_MAX, VIEW_ADDRESSBOOK, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX },
-{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX /*VIEW_CALBRIEF*/, VIEW_MAX, VIEW_MAX },
-{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_TASKS, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, },
-{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_NOTES, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, },
-{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_WIKI, VIEW_MAX, VIEW_MAX, VIEW_MAX},
-{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_CALENDAR, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX/*VIEW_CALBRIEF*/, VIEW_MAX, VIEW_MAX},
-{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_JOURNAL, VIEW_MAX },
-{VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_MAX, VIEW_BLOG },
- };
-/* the brief calendar view is disabled: VIEW_CALBRIEF */
-
-ROOM_VIEWS allowed_default_views[VIEW_MAX] = {
- 1, /* VIEW_BBS Bulletin board view */
- 1, /* VIEW_MAILBOX Mailbox summary */
- 1, /* VIEW_ADDRESSBOOK Address book view */
- 1, /* VIEW_CALENDAR Calendar view */
- 1, /* VIEW_TASKS Tasks view */
- 1, /* VIEW_NOTES Notes view */
- 1, /* VIEW_WIKI Wiki view */
- 0, /* VIEW_CALBRIEF Brief Calendar view */
- 0, /* VIEW_JOURNAL Journal view */
- 0 /* VIEW_BLOG Blog view (not yet implemented) */
-};
-
-
-/*
- * Initialize the viewdefs with localized strings
- */
-void initialize_viewdefs(void) {
- viewdefs[VIEW_BBS] = _("Bulletin Board");
- viewdefs[VIEW_MAILBOX] = _("Mail Folder");
- viewdefs[VIEW_ADDRESSBOOK] = _("Address Book");
- viewdefs[VIEW_CALENDAR] = _("Calendar");
- viewdefs[VIEW_TASKS] = _("Task List");
- viewdefs[VIEW_NOTES] = _("Notes List");
- viewdefs[VIEW_WIKI] = _("Wiki");
- viewdefs[VIEW_CALBRIEF] = _("Calendar List");
- viewdefs[VIEW_JOURNAL] = _("Journal");
- viewdefs[VIEW_BLOG] = _("Blog");
-}
ConstStr QRFlagList[] = {
{HKEY(strof(QR_PERMANENT))},
@@ -132,50 +87,76 @@ void DBG_QR2(long QR2)
}
-/*
- * Embed the room banner
- *
- * got The information returned from a GOTO server command
- * navbar_style Determines which navigation buttons to display
- *
- */
-void embed_room_banner(void)
-{
- wcsession *WCC = WC;
- char buf[256];
- /* refresh current room states... */
- /* dosen't work??? gotoroom(NULL); */
- /* The browser needs some information for its own use */
- wc_printf("\n",
- ((WC->CurRoom.RAFlags & UA_ISTRASH) != 0)
- );
- /*
- * If the user happens to select the "make this my start page" link,
- * we want it to remember the URL as a "/dotskip" one instead of
- * a "skip" or "gotonext" or something like that.
- */
- if (WCC->Hdr->this_page == NULL) {
- WCC->Hdr->this_page = NewStrBuf();
- }
- StrBufPrintf(WCC->Hdr->this_page,
- "dotskip?room=%s",
- ChrPtr(WC->CurRoom.name)
- );
-
- do_template("roombanner", NULL);
- /* roombanner contains this for mobile */
- if (WC->is_mobile)
+
+
+
+
+
+/*******************************************************************************
+ ***************************** Goto Commands ***********************************
+ ******************************************************************************/
+void dotgoto(void) {
+ if (!havebstr("room")) {
+ readloop(readnew, eUseDefault);
return;
+ }
+ if (WC->CurRoom.view != VIEW_MAILBOX) { /* dotgoto acts like dotskip when we're in a mailbox view */
+ slrp_highest();
+ }
+ smart_goto(sbstr("room"));
+}
- do_template("navbar", NULL);
+/*
+ * goto next room
+ */
+void smart_goto(const StrBuf *next_room) {
+ gotoroom(next_room);
+ readloop(readnew, eUseDefault);
}
+/**
+ * \brief goto a private room
+ */
+void goto_private(void)
+{
+ char hold_rm[SIZ];
+ StrBuf *Buf;
+ const StrBuf *gr_name;
+ long err;
+
+ if (!havebstr("ok_button")) {
+ display_main_menu();
+ return;
+ }
+ gr_name = sbstr("gr_name");
+ Buf = NewStrBuf();
+ strcpy(hold_rm, ChrPtr(WC->CurRoom.name));
+ serv_printf("GOTO %s|%s",
+ ChrPtr(gr_name),
+ bstr("gr_pass"));
+ StrBuf_ServGetln(Buf);
+ if (GetServerStatus(Buf, &err) == 2) {
+ FlushRoomlist();
+ smart_goto(gr_name);
+ FreeStrBuf(&Buf);
+ return;
+ }
+ if (err == 540) {
+ DoTemplate(HKEY("room_display_private"), NULL, &NoCtx);
+ FreeStrBuf(&Buf);
+ return;
+ }
+ StrBufCutLeft(Buf, 4);
+ AppendImportantMessage (SKEY(Buf));
+ Buf = NewStrBufPlain(HKEY("_BASEROOM_"));
+ smart_goto(Buf);
+ FreeStrBuf(&Buf);
+ return;
+}
/*
* back end routine to take the session to a new room
@@ -337,6 +318,95 @@ void ParseGoto(folder *room, StrBuf *Line)
room->Floor = (const Floor*) vFloor;
}
+/**
+ * \brief Delete the current room
+ */
+void delete_room(void)
+{
+ char buf[SIZ];
+
+
+ serv_puts("KILL 1");
+ serv_getln(buf, sizeof buf);
+
+ if (buf[0] != '2') {
+ strcpy(WC->ImportantMessage, &buf[4]);
+ display_main_menu();
+ return;
+ } else {
+ StrBuf *Buf;
+
+ FlushRoomlist ();
+ Buf = NewStrBufPlain(HKEY("_BASEROOM_"));
+ smart_goto(Buf);
+ FreeStrBuf(&Buf);
+ }
+}
+
+/**
+ * \brief zap a room
+ */
+void zap(void)
+{
+ char buf[SIZ];
+ StrBuf *final_destination;
+
+ /**
+ * If the forget-room routine fails for any reason, we fall back
+ * to the current room; otherwise, we go to the Lobby
+ */
+ final_destination = NewStrBufDup(WC->CurRoom.name);
+
+ if (havebstr("ok_button")) {
+ serv_printf("GOTO %s", ChrPtr(WC->CurRoom.name));
+ serv_getln(buf, sizeof buf);
+ if (buf[0] == '2') {
+ serv_puts("FORG");
+ serv_getln(buf, sizeof buf);
+ if (buf[0] == '2') {
+ FlushStrBuf(final_destination);
+ StrBufAppendBufPlain(final_destination, HKEY("_BASEROOM_"), 0);
+ }
+ }
+ FlushRoomlist ();
+ }
+ smart_goto(final_destination);
+ FreeStrBuf(&final_destination);
+}
+
+
+/*
+ * mark all messages in current room as having been read
+ */
+void slrp_highest(void)
+{
+ char buf[256];
+
+ serv_puts("SLRP HIGHEST");
+ serv_getln(buf, sizeof buf);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*******************************************************************************
+ ***************************** Modify Rooms ************************************
+ ******************************************************************************/
+
+
+
+
+
void LoadRoomAide(void)
{
wcsession *WCC = WC;
@@ -382,30 +452,6 @@ int SaveRoomAide(folder *Room)
return 1;
}
-void tmplput_CurrentRoomFloorName(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- folder *Folder = &WCC->CurRoom;
- const Floor *pFloor;
-
- if (Folder == NULL)
- return;
-
- pFloor = Folder->Floor;
- if (pFloor == NULL)
- return;
-
- StrBufAppendTemplate(Target, TP, pFloor->Name, 0);
-}
-
-void tmplput_CurrentRoomAide(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
-
- LoadRoomAide();
-
- StrBufAppendTemplate(Target, TP, WCC->CurRoom.RoomAide, 0);
-}
int GetCurrentRoomFlags(folder *Room)
{
@@ -516,16 +562,6 @@ void LoadXRoomPic(void)
FreeStrBuf (&Buf);
}
-int ConditionalThisRoomXHavePic(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
-
- if (WCC == NULL)
- return 0;
-
- LoadXRoomPic();
- return WCC->CurRoom.XHaveRoomPic == 1;
-}
void LoadXRoomInfoText(void)
{
@@ -557,25 +593,6 @@ void LoadXRoomInfoText(void)
FreeStrBuf (&Buf);
}
-int ConditionalThisRoomXHaveInfoText(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
-
- if (WCC == NULL)
- return 0;
-
- LoadXRoomInfoText();
- return (StrLength(WCC->CurRoom.XInfoText)>0);
-}
-
-void tmplput_CurrentRoomInfoText(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
-
- LoadXRoomInfoText();
-
- StrBufAppendTemplate(Target, TP, WCC->CurRoom.XAPass, 1);
-}
void LoadXRoomXCountFiles(void)
{
@@ -605,326 +622,72 @@ void LoadXRoomXCountFiles(void)
FreeStrBuf (&Buf);
}
-void tmplput_CurrentRoomXNFiles(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- LoadXRoomXCountFiles();
+/*
+ * Toggle self-service list subscription
+ */
+void toggle_self_service(void) {
+ wcsession *WCC = WC;
- StrBufAppendPrintf(Target, "%d", WCC->CurRoom.XDownloadCount);
-}
+ if (GetCurrentRoomFlags (&WCC->CurRoom) == 0)
+ return;
-void tmplput_CurrentRoomX_FileString(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
+ if (yesbstr("QR2_SelfList"))
+ WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SELFLIST;
+ else
+ WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SELFLIST;
- LoadXRoomXCountFiles();
+ if (yesbstr("QR2_SMTP_PUBLIC"))
+ WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SMTP_PUBLIC;
+ else
+ WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SMTP_PUBLIC;
- if (WCC->CurRoom.XDownloadCount == 1)
- StrBufAppendBufPlain(Target, _("file"), -1, 0);
+ if (yesbstr("QR2_Moderated"))
+ WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_MODERATED;
+ else
+ WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_MODERATED;
+ if (yesbstr("QR2_SubsOnly"))
+ WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SMTP_PUBLIC;
else
- StrBufAppendBufPlain(Target, _("files"), -1, 0);
+ WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SMTP_PUBLIC;
+
+ SetCurrentRoomFlags (&WCC->CurRoom);
+
+ http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
}
-void tmplput_CurrentRoomPass(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- LoadRoomXA();
- StrBufAppendTemplate(Target, TP, WCC->CurRoom.XAPass, 0);
-}
-void tmplput_CurrentRoomDirectory(StrBuf *Target, WCTemplputParams *TP)
+/*
+ * save new parameters for a room
+ */
+void editroom(void)
{
wcsession *WCC = WC;
+ const StrBuf *Ptr;
+ const StrBuf *er_name;
+ const StrBuf *er_password;
+ const StrBuf *er_dirname;
+ const StrBuf *er_roomaide;
+ unsigned er_flags;
+ unsigned er_flags2;
+ int succ1, succ2;
- LoadRoomXA();
+ if (!havebstr("ok_button")) {
+ strcpy(WC->ImportantMessage,
+ _("Cancelled. Changes were not saved."));
+ http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
+ return;
+ }
+ if (GetCurrentRoomFlags (&WCC->CurRoom) == 0)
+ return;
- StrBufAppendTemplate(Target, TP, WCC->CurRoom.Directory, 0);
-}
-void tmplput_CurrentRoomOrder(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
+ LoadRoomAide();
- LoadRoomXA();
+ er_flags = WCC->CurRoom.QRFlags;
+ er_flags &= !(QR_PRIVATE | QR_PASSWORDED | QR_GUESSNAME);
- StrBufAppendPrintf(Target, "%d", WCC->CurRoom.Order);
-}
-void tmplput_CurrentRoomDefView(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
-
- StrBufAppendPrintf(Target, "%d", WCC->CurRoom.defview);
-}
-
-void tmplput_CurrentRoom_nNewMessages(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
-
- LoadRoomXA();
-
- StrBufAppendPrintf(Target, "%d", WCC->CurRoom.nNewMessages);
-}
-
-void tmplput_CurrentRoom_nTotalMessages(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
-
- LoadRoomXA();
-
- StrBufAppendPrintf(Target, "%d", WCC->CurRoom.nTotalMessages);
-}
-
-int ConditionalThisRoomOrder(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- long CheckThis;
-
- if (WCC == NULL)
- return 0;
-
- LoadRoomXA();
-
- CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
- return CheckThis == WCC->CurRoom.Order;
-}
-
-int ConditionalThisRoomDefView(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- long CheckThis;
-
- if (WCC == NULL)
- return 0;
-
- CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
- return CheckThis == WCC->CurRoom.defview;
-}
-
-int ConditionalThisRoomCurrView(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- long CheckThis;
-
- if (WCC == NULL)
- return 0;
-
- CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
- return CheckThis == WCC->CurRoom.view;
-}
-
-int ConditionalThisRoomHaveView(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- long CheckThis;
-
- if (WCC == NULL)
- return 0;
-
- CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
- if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
- {
- LogTemplateError(Target, "Conditional", ERR_PARM2, TP,
- "Roomview [%ld] not valid\n",
- CheckThis);
- return 0;
- }
-
- return exchangeable_views [WCC->CurRoom.defview][CheckThis] != VIEW_MAX;
-}
-
-void tmplput_CurrentRoomViewString(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- StrBuf *Buf;
-
- if ((WCC == NULL) ||
- (WCC->CurRoom.defview >= VIEW_MAX) ||
- (WCC->CurRoom.defview < VIEW_BBS))
- {
- LogTemplateError(Target, "Token", ERR_PARM2, TP,
- "Roomview [%ld] not valid\n",
- (WCC != NULL)?
- WCC->CurRoom.defview : -1);
- return;
- }
-
- Buf = NewStrBufPlain(_(viewdefs[WCC->CurRoom.defview]), -1);
- StrBufAppendTemplate(Target, TP, Buf, 0);
- FreeStrBuf(&Buf);
-}
-
-void tmplput_RoomViewString(StrBuf *Target, WCTemplputParams *TP)
-{
- long CheckThis;
- StrBuf *Buf;
-
- CheckThis = GetTemplateTokenNumber(Target, TP, 0, 0);
- if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
- {
- LogTemplateError(Target, "Token", ERR_PARM2, TP,
- "Roomview [%ld] not valid\n",
- CheckThis);
- return;
- }
-
- Buf = NewStrBufPlain(_(viewdefs[CheckThis]), -1);
- StrBufAppendTemplate(Target, TP, Buf, 0);
- FreeStrBuf(&Buf);
-}
-
-
-int ConditionalIsAllowedDefaultView(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
- long CheckThis;
-
- if (WCC == NULL)
- return 0;
-
- CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0);
- if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
- {
- LogTemplateError(Target, "Conditional", ERR_PARM2, TP,
- "Roomview [%ld] not valid\n",
- CheckThis);
- return 0;
- }
-
- return allowed_default_views[CheckThis] != 0;
-}
-
-/*
- * goto next room
- */
-void smart_goto(const StrBuf *next_room) {
- gotoroom(next_room);
- readloop(readnew, eUseDefault);
-}
-
-
-
-/*
- * mark all messages in current room as having been read
- */
-void slrp_highest(void)
-{
- char buf[256];
-
- serv_puts("SLRP HIGHEST");
- serv_getln(buf, sizeof buf);
-}
-
-
-
-/*
- * Set/clear/read the "self-service list subscribe" flag for a room
- *
- * set newval to 0 to clear, 1 to set, any other value to leave unchanged.
- * returns the new value.
- */
-
-int self_service(int newval) {
- int current_value = 0;
- wcsession *WCC = WC;
-
- if (GetCurrentRoomFlags (&WCC->CurRoom) == 0)
- {
- return 0;
- }
-
- if ((WCC->CurRoom.QRFlags2 & QR2_SELFLIST) != 0) {
- current_value = 1;
- }
- else {
- current_value = 0;
- }
-
- if (newval == 1) {
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SELFLIST;
- }
- else if (newval == 0) {
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SELFLIST;
- }
- else {
- return(current_value);
- }
-
- if (newval != current_value) {
- SetCurrentRoomFlags(&WCC->CurRoom);
- }
-
- return(newval);
-
-}
-
-
-
-/*
- * Toggle self-service list subscription
- */
-void toggle_self_service(void) {
- wcsession *WCC = WC;
-
- if (GetCurrentRoomFlags (&WCC->CurRoom) == 0)
- return;
-
- if (yesbstr("QR2_SelfList"))
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SELFLIST;
- else
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SELFLIST;
-
- if (yesbstr("QR2_SMTP_PUBLIC"))
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SMTP_PUBLIC;
- else
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SMTP_PUBLIC;
-
- if (yesbstr("QR2_Moderated"))
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_MODERATED;
- else
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_MODERATED;
- if (yesbstr("QR2_SubsOnly"))
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SMTP_PUBLIC;
- else
- WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SMTP_PUBLIC;
-
- SetCurrentRoomFlags (&WCC->CurRoom);
-
- http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
-}
-
-
-
-/*
- * save new parameters for a room
- */
-void editroom(void)
-{
- wcsession *WCC = WC;
- const StrBuf *Ptr;
- const StrBuf *er_name;
- const StrBuf *er_password;
- const StrBuf *er_dirname;
- const StrBuf *er_roomaide;
- unsigned er_flags;
- unsigned er_flags2;
- int succ1, succ2;
-
- if (!havebstr("ok_button")) {
- strcpy(WC->ImportantMessage,
- _("Cancelled. Changes were not saved."));
- http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
- return;
- }
- if (GetCurrentRoomFlags (&WCC->CurRoom) == 0)
- return;
-
- LoadRoomAide();
-
- er_flags = WCC->CurRoom.QRFlags;
- er_flags &= !(QR_PRIVATE | QR_PASSWORDED | QR_GUESSNAME);
-
- er_flags2 = WCC->CurRoom.QRFlags2;
+ er_flags2 = WCC->CurRoom.QRFlags2;
Ptr = sbstr("type");
if (!strcmp(ChrPtr(Ptr), "invonly")) {
@@ -1046,6 +809,7 @@ void editroom(void)
}
+
/*
* Display form for Invite, Kick, and show Who Knows a room
*/
@@ -1110,41 +874,6 @@ void do_invt_kick(void)
http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
}
-/*
- * support function for entroom() -- sets the default view
- */
-void er_set_default_view(int newview) {
-
- char buf[SIZ];
-
- char rm_name[SIZ];
- char rm_pass[SIZ];
- char rm_dir[SIZ];
- int rm_bits1;
- int rm_floor;
- int rm_listorder;
- int rm_bits2;
-
- serv_puts("GETR");
- serv_getln(buf, sizeof buf);
- if (buf[0] != '2') return;
-
- extract_token(rm_name, &buf[4], 0, '|', sizeof rm_name);
- extract_token(rm_pass, &buf[4], 1, '|', sizeof rm_pass);
- extract_token(rm_dir, &buf[4], 2, '|', sizeof rm_dir);
- rm_bits1 = extract_int(&buf[4], 3);
- rm_floor = extract_int(&buf[4], 4);
- rm_listorder = extract_int(&buf[4], 5);
- rm_bits2 = extract_int(&buf[4], 7);
-
- serv_printf("SETR %s|%s|%s|%d|0|%d|%d|%d|%d",
- rm_name, rm_pass, rm_dir, rm_bits1, rm_floor,
- rm_listorder, newview, rm_bits2
- );
- serv_getln(buf, sizeof buf);
-}
-
-
/*
* Create a new room
@@ -1206,110 +935,56 @@ void entroom(void)
if ( (WCC != NULL) && ( (WCC->CurRoom.RAFlags & UA_ADMINALLOWED) != 0) ) {
http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
} else {
- do_change_view(er_view); /* Now go there */
+ smart_goto(WCC->CurRoom.name);
}
}
-/**
- * \brief goto a private room
- */
-void goto_private(void)
-{
- char hold_rm[SIZ];
- StrBuf *Buf;
- const StrBuf *gr_name;
- long err;
-
- if (!havebstr("ok_button")) {
- display_main_menu();
- return;
- }
- gr_name = sbstr("gr_name");
- Buf = NewStrBuf();
- strcpy(hold_rm, ChrPtr(WC->CurRoom.name));
- serv_printf("GOTO %s|%s",
- ChrPtr(gr_name),
- bstr("gr_pass"));
- StrBuf_ServGetln(Buf);
- if (GetServerStatus(Buf, &err) == 2) {
- FlushRoomlist();
- smart_goto(gr_name);
- FreeStrBuf(&Buf);
- return;
- }
- if (err == 540) {
- DoTemplate(HKEY("room_display_private"), NULL, &NoCtx);
- FreeStrBuf(&Buf);
- return;
- }
- StrBufCutLeft(Buf, 4);
- AppendImportantMessage (SKEY(Buf));
- Buf = NewStrBufPlain(HKEY("_BASEROOM_"));
- smart_goto(Buf);
- FreeStrBuf(&Buf);
- return;
-}
/**
- * \brief zap a room
+ * \brief Change the view for this room
*/
-void zap(void)
-{
+void change_view(void) {
+ int newview;
char buf[SIZ];
- StrBuf *final_destination;
-
- /**
- * If the forget-room routine fails for any reason, we fall back
- * to the current room; otherwise, we go to the Lobby
- */
- final_destination = NewStrBufDup(WC->CurRoom.name);
- if (havebstr("ok_button")) {
- serv_printf("GOTO %s", ChrPtr(WC->CurRoom.name));
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- serv_puts("FORG");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- FlushStrBuf(final_destination);
- StrBufAppendBufPlain(final_destination, HKEY("_BASEROOM_"), 0);
- }
- }
- FlushRoomlist ();
- }
- smart_goto(final_destination);
- FreeStrBuf(&final_destination);
+ newview = lbstr("view");
+ serv_printf("VIEW %d", newview);
+ serv_getln(buf, sizeof buf);
+ WC->CurRoom.view = newview;
+ smart_goto(WC->CurRoom.name);
}
/**
- * \brief Delete the current room
+ * \brief Set the message expire policy for this room and/or floor
*/
-void delete_room(void)
-{
+void set_room_policy(void) {
char buf[SIZ];
-
- serv_puts("KILL 1");
- serv_getln(buf, sizeof buf);
-
- if (buf[0] != '2') {
- strcpy(WC->ImportantMessage, &buf[4]);
- display_main_menu();
+ if (!havebstr("ok_button")) {
+ strcpy(WC->ImportantMessage,
+ _("Cancelled. Changes were not saved."));
+ http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
return;
- } else {
- StrBuf *Buf;
-
- FlushRoomlist ();
- Buf = NewStrBufPlain(HKEY("_BASEROOM_"));
- smart_goto(Buf);
- FreeStrBuf(&Buf);
}
+
+ serv_printf("SPEX roompolicy|%d|%d", ibstr("roompolicy"), ibstr("roomvalue"));
+ serv_getln(buf, sizeof buf);
+ strcpy(WC->ImportantMessage, &buf[4]);
+
+ if (WC->axlevel >= 6) {
+ strcat(WC->ImportantMessage, "
\n");
+ serv_printf("SPEX floorpolicy|%d|%d", ibstr("floorpolicy"), ibstr("floorvalue"));
+ serv_getln(buf, sizeof buf);
+ strcat(WC->ImportantMessage, &buf[4]);
+ }
+ ReloadCurrentRoom();
+ http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
}
@@ -1417,6 +1092,62 @@ void netedit(void) {
http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
}
+/**
+ * \brief Do either a known rooms list or a folders list, depending on the
+ * user's preference
+ */
+void knrooms(void)
+{
+ StrBuf *ListView = NULL;
+
+ /** Determine whether the user is trying to change views */
+ if (havebstr("view")) {
+ ListView = NewStrBufDup(SBSTR("view"));
+ set_preference("roomlistview", ListView, 1);
+ }
+ /** Sanitize the input so its safe */
+ if((get_preference("roomlistview", &ListView) != 0)||
+ ((strcasecmp(ChrPtr(ListView), "folders") != 0) &&
+ (strcasecmp(ChrPtr(ListView), "table") != 0)))
+ {
+ if (ListView == NULL) {
+ ListView = NewStrBufPlain(HKEY("rooms"));
+ set_preference("roomlistview", ListView, 0);
+ ListView = NULL;
+ }
+ else {
+ ListView = NewStrBufPlain(HKEY("rooms"));
+ set_preference("roomlistview", ListView, 0);
+ ListView = NULL;
+ }
+ }
+ FreeStrBuf(&ListView);
+ url_do_template();
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*******************************************************************************
+ ********************** FLOOR Coomands *****************************************
+ ******************************************************************************/
+
+
+
/*
* delete the actual floor
*/
@@ -1489,323 +1220,19 @@ void rename_floor(void) {
-/**
- * \brief Back end for change_view()
- * \param newview set newview???
- */
-void do_change_view(int newview) {
- char buf[SIZ];
-
- serv_printf("VIEW %d", newview);
- serv_getln(buf, sizeof buf);
- WC->CurRoom.view = newview;
- smart_goto(WC->CurRoom.name);
-}
-
-
-
-/**
- * \brief Change the view for this room
- */
-void change_view(void) {
- int view;
-
- view = lbstr("view");
- do_change_view(view);
-}
-
-/**
- * \brief Do either a known rooms list or a folders list, depending on the
- * user's preference
- */
-void knrooms(void)
-{
- StrBuf *ListView = NULL;
-
- /** Determine whether the user is trying to change views */
- if (havebstr("view")) {
- ListView = NewStrBufDup(SBSTR("view"));
- set_preference("roomlistview", ListView, 1);
- }
- /** Sanitize the input so its safe */
- if((get_preference("roomlistview", &ListView) != 0)||
- ((strcasecmp(ChrPtr(ListView), "folders") != 0) &&
- (strcasecmp(ChrPtr(ListView), "table") != 0)))
- {
- if (ListView == NULL) {
- ListView = NewStrBufPlain(HKEY("rooms"));
- set_preference("roomlistview", ListView, 0);
- ListView = NULL;
- }
- else {
- ListView = NewStrBufPlain(HKEY("rooms"));
- set_preference("roomlistview", ListView, 0);
- ListView = NULL;
- }
- }
- FreeStrBuf(&ListView);
- url_do_template();
-}
-
-
-
-/**
- * \brief Set the message expire policy for this room and/or floor
- */
-void set_room_policy(void) {
- char buf[SIZ];
-
- if (!havebstr("ok_button")) {
- strcpy(WC->ImportantMessage,
- _("Cancelled. Changes were not saved."));
- http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
- return;
- }
-
- serv_printf("SPEX roompolicy|%d|%d", ibstr("roompolicy"), ibstr("roomvalue"));
- serv_getln(buf, sizeof buf);
- strcpy(WC->ImportantMessage, &buf[4]);
-
- if (WC->axlevel >= 6) {
- strcat(WC->ImportantMessage, "
\n");
- serv_printf("SPEX floorpolicy|%d|%d", ibstr("floorpolicy"), ibstr("floorvalue"));
- serv_getln(buf, sizeof buf);
- strcat(WC->ImportantMessage, &buf[4]);
- }
- ReloadCurrentRoom();
- http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
-}
-
-void tmplput_RoomName(StrBuf *Target, WCTemplputParams *TP)
-{
- StrBufAppendTemplate(Target, TP, WC->CurRoom.name, 0);
-}
-
-void dotgoto(void) {
- if (!havebstr("room")) {
- readloop(readnew, eUseDefault);
- return;
- }
- if (WC->CurRoom.view != VIEW_MAILBOX) { /* dotgoto acts like dotskip when we're in a mailbox view */
- slrp_highest();
- }
- smart_goto(sbstr("room"));
-}
-
-
-
-void tmplput_current_room(StrBuf *Target, WCTemplputParams *TP)
-{
- wcsession *WCC = WC;
-
- if (WCC != NULL)
- StrBufAppendTemplate(Target, TP,
- WCC->CurRoom.name,
- 0);
-}
-
-void tmplput_roombanner(StrBuf *Target, WCTemplputParams *TP)
-{
- wc_printf("