X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Faddressbook_popup.c;h=c119cc18ee0b206df714070fa64cfe5367e48dcf;hb=HEAD;hp=467d9356c8b18bc9e26bc31666d23fa80ffb35ad;hpb=78585ad10b89a03cd3a14394058148592bc1aa24;p=citadel.git diff --git a/webcit/addressbook_popup.c b/webcit/addressbook_popup.c index 467d9356c..afbf3a0c7 100644 --- a/webcit/addressbook_popup.c +++ b/webcit/addressbook_popup.c @@ -1,103 +1,84 @@ /* - * $Id: $ - *//** - * \defgroup AjaxAutoCompletion ajax-powered autocompletion... - * \ingroup ClientPower + * Dynamic HTML (formerly known as "AJAX") powered auto-completion + * + * Copyright (c) 1996-2012 by the citadel.org team + * + * This program is open source software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. */ -/*@{*/ #include "webcit.h" -/** - * \brief Address book popup window +/* + * Address book popup results */ -void display_address_book_middle_div(void) { - char buf[256]; - char ebuf[256]; - - begin_ajax_response(); - - wprintf(""); - wprintf(""); - wprintf(""); - wprintf("
"); +HashList* GetAddressbookList() +{ + HashList *List = NULL; + const StrBuf *WhichAddrBook; + StrBuf *saved_roomname; + StrBuf *Name; + StrBuf *Line; + long BufLen; + int IsLocalAddrBook; + + WhichAddrBook = sbstr("which_addr_book"); + IsLocalAddrBook = strcasecmp(ChrPtr(WhichAddrBook), "__LOCAL_USERS__") == 1; + + if (IsLocalAddrBook) { + serv_puts("LIST"); + } + else { + /* remember the default addressbook for this room */ + set_room_pref("defaddrbook", NewStrBufDup(WhichAddrBook), 0); + saved_roomname = NewStrBufDup(WC->CurRoom.name); + gotoroom(WhichAddrBook); + serv_puts("DVCA"); + } + + Line = NewStrBuf(); + StrBuf_ServGetln(Line); + if (GetServerStatus(Line, NULL) == 1) { + List = NewHash(1, NULL); + while (BufLen = StrBuf_ServGetln(Line), + ((BufLen >= 0) && + ((BufLen != 3) || strcmp(ChrPtr(Line), "000")))) + { + if (IsLocalAddrBook && + (BufLen > 5) && + (strncmp(ChrPtr(Line), "SYS_", 4) == 0)) + { + continue; + } + Name = NewStrBufPlain(NULL, StrLength(Line)); + StrBufExtract_token(Name, Line, 0, '|'); + Put(List, SKEY(Name), Name, HFreeStrBuf); - wprintf("
" - "
"); - - wprintf("
"); - wprintf("
"); - wprintf("\n", - bstr("target_input") - ); + if (!IsLocalAddrBook) { + gotoroom(saved_roomname); + FreeStrBuf(&saved_roomname); + } - end_ajax_response(); + return List; } -/** - * \brief Address book popup results - */ -void display_address_book_inner_div() { - char buf[256]; - - begin_ajax_response(); - - wprintf("
" - "\n"); - - wprintf(" 0) { $('%s').value = $('%s').value + ', '; } $('%s').value=$('%s').value + $('whichaddr').value;\">", - bstr("target_input"), - bstr("target_input"), - bstr("target_input"), - bstr("target_input"), - bstr("target_input") - ); - wprintf(""); - wprintf("
\n"); +void +InitModule_ADDRBOOK_POPUP +(void) +{ - end_ajax_response(); + RegisterIterator("ITERATE:ABNAMES", 0, NULL, GetAddressbookList, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); } - - -/** @} */