From f712cacc9b5164defb6bf3b289939c2c679d0cb0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Thu, 29 Jul 2010 20:54:56 +0000 Subject: [PATCH] * add New Tokens & conditionals for extended room attributes: THISROOM:AIDE THISROOM:PASS THISROOM:DIRECTORY THISROOM:ORDER THISROOM:DEFAULT_VIEW COND:THISROOM:ORDER COND:THISROOM:DEFAULT_VIEW --- webcit/roomops.c | 156 ++++++++++++++++++++++ webcit/roomops.h | 9 +- webcit/static/t/room/edit/tab_config.html | 7 +- 3 files changed, 167 insertions(+), 5 deletions(-) diff --git a/webcit/roomops.c b/webcit/roomops.c index 1ab8c8efa..4dbab0322 100644 --- a/webcit/roomops.c +++ b/webcit/roomops.c @@ -898,6 +898,151 @@ void ParseGoto(folder *room, StrBuf *Line) room->Floor = (const Floor*) vFloor; } +void LoadRoomAide(void) +{ + wcsession *WCC = WC; + StrBuf *Buf; + + if (WCC->CurRoom.RoomAideLoaded) + return; + + WCC->CurRoom.RoomAideLoaded = 1; + Buf = NewStrBuf(); + serv_puts("GETA"); + StrBuf_ServGetln(Buf); + if (GetServerStatus(Buf, NULL) != 2) { + FlushStrBuf(WCC->CurRoom.RoomAide); + AppendImportantMessage (ChrPtr(Buf) + 4, + StrLength(Buf) - 4); + } else { + const char *Pos; + + Pos = ChrPtr(Buf) + 4; + + FreeStrBuf(&WCC->CurRoom.RoomAide); + WCC->CurRoom.RoomAide = NewStrBufPlain (NULL, StrLength (Buf)); + + StrBufExtract_NextToken(WCC->CurRoom.RoomAide, Buf, &Pos, '|'); + } + FreeStrBuf (&Buf); +} + +void tmplput_CurrentRoomAide(StrBuf *Target, WCTemplputParams *TP) +{ + wcsession *WCC = WC; + + LoadRoomAide(); + + StrBufAppendTemplate(Target, TP, WCC->CurRoom.RoomAide, 0); +} + + +void LoadRoomXA (void) +{ + wcsession *WCC = WC; + StrBuf *Buf; + + if (WCC->CurRoom.XALoaded) + return; + + WCC->CurRoom.XALoaded = 1; + Buf = NewStrBuf(); + serv_puts("GETA"); + StrBuf_ServGetln(Buf); + if (GetServerStatus(Buf, NULL) != 2) { + FlushStrBuf(WCC->CurRoom.XAPass); + FlushStrBuf(WCC->CurRoom.Directory); + + AppendImportantMessage (ChrPtr(Buf) + 4, + StrLength(Buf) - 4); + } else { + const char *Pos; + + Pos = ChrPtr(Buf) + 4; + + FreeStrBuf(&WCC->CurRoom.XAPass); + FreeStrBuf(&WCC->CurRoom.Directory); + + WCC->CurRoom.XAPass = NewStrBufPlain (NULL, StrLength (Buf)); + WCC->CurRoom.Directory = NewStrBufPlain (NULL, StrLength (Buf)); + + StrBufSkip_NTokenS(Buf, &Pos, '|', 1); /* The Name, we already know... */ + StrBufExtract_NextToken(WCC->CurRoom.XAPass, Buf, &Pos, '|'); + StrBufExtract_NextToken(WCC->CurRoom.Directory, Buf, &Pos, '|'); + StrBufSkip_NTokenS(Buf, &Pos, '|', 2); /* QRFlags, FloorNum we already know... */ + WCC->CurRoom.Order = StrBufExtractNext_long(Buf, &Pos, '|'); + WCC->CurRoom.DefView = StrBufExtractNext_long(Buf, &Pos, '|'); + /* QR2Flags, we already know them... */ + + } + FreeStrBuf (&Buf); +} + +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) +{ + wcsession *WCC = WC; + + LoadRoomXA(); + + StrBufAppendTemplate(Target, TP, WCC->CurRoom.Directory, 0); +} +void tmplput_CurrentRoomOrder(StrBuf *Target, WCTemplputParams *TP) +{ + wcsession *WCC = WC; + + LoadRoomXA(); + + StrBufAppendPrintf(Target, "%d", WCC->CurRoom.Order); +} +void tmplput_CurrentRoomDefView(StrBuf *Target, WCTemplputParams *TP) +{ + wcsession *WCC = WC; + + LoadRoomXA(); + + StrBufAppendPrintf(Target, "%d", WCC->CurRoom.DefView); +} + + +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; + + LoadRoomXA(); + + CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0); + return CheckThis == WCC->CurRoom.DefView; +} + + + + /* * goto next room @@ -3258,6 +3403,17 @@ InitModule_ROOMOPS RegisterConditional(HKEY("COND:THISROOM:FLAG:QR2"), 0, ConditionalCurrentRoomHas_QRFlag2, CTX_NONE); RegisterConditional(HKEY("COND:ROOM:FLAG:QR2"), 0, ConditionalRoomHas_QRFlag2, CTX_ROOMS); + RegisterNamespace("THISROOM:AIDE", 0, 1, tmplput_CurrentRoomAide, NULL, CTX_NONE); + + + RegisterNamespace("THISROOM:PASS", 0, 1, tmplput_CurrentRoomPass, NULL, CTX_NONE); + RegisterNamespace("THISROOM:DIRECTORY", 0, 1, tmplput_CurrentRoomDirectory, NULL, CTX_NONE); + RegisterNamespace("THISROOM:ORDER", 0, 0, tmplput_CurrentRoomOrder, NULL, CTX_NONE); + RegisterNamespace("THISROOM:DEFAULT_VIEW", 0, 0, tmplput_CurrentRoomDefView, NULL, CTX_NONE); + RegisterConditional(HKEY("COND:THISROOM:ORDER"), 0, ConditionalThisRoomOrder, CTX_NONE); + RegisterConditional(HKEY("COND:THISROOM:DEFAULT_VIEW"), 0, ConditionalThisRoomDefView, CTX_NONE); + + REGISTERTokenParamDefine(QR_PERMANENT); REGISTERTokenParamDefine(QR_INUSE); REGISTERTokenParamDefine(QR_PRIVATE); diff --git a/webcit/roomops.h b/webcit/roomops.h index a416b402e..d5712ddc9 100644 --- a/webcit/roomops.h +++ b/webcit/roomops.h @@ -73,12 +73,19 @@ typedef struct _folder { long nRoomNameParts; StrBuf **RoomNameParts; - const Floor *Floor; /* pint to the floor we're on.. */ + const Floor *Floor; /* point to the floor we're on.. */ int hasnewmsgs; /* are there unread messages inside */ int is_inbox; /* is it a mailbox? */ + int RoomAideLoaded; + StrBuf *RoomAide; + int XALoaded; + StrBuf *XAPass; + StrBuf *Directory; + long Order; + long DefView; int selectable; /* can we select it ??? */ long num_rooms; /* If this is a floor, how many rooms does it have */ diff --git a/webcit/static/t/room/edit/tab_config.html b/webcit/static/t/room/edit/tab_config.html index 2b429e358..4a827b263 100644 --- a/webcit/static/t/room/edit/tab_config.html +++ b/webcit/static/t/room/edit/tab_config.html @@ -41,7 +41,7 @@ onChange="this.form.er_floor.disabled = false; { (this.form.type[2].checked == true) }" /> - " maxlength="9" /> + " maxlength="9" />
  • - + " maxlength="14" />
  • - ////// TODO: ?GETA??? - ")>, ' + " maxlength="25" /'>
  • -- 2.30.2