From: pallo Date: Wed, 21 Jun 2000 11:13:26 +0000 (+0000) Subject: Added "List all" button to javascript address book. X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=commitdiff_plain;h=2f73dc1525422ac2f9d63c460a10d129b4c903fe Added "List all" button to javascript address book. List all addresses in the personal address book when window is opened. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@550 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/doc/addressbook.txt b/doc/addressbook.txt index fe746d5..f0521e8 100644 --- a/doc/addressbook.txt +++ b/doc/addressbook.txt @@ -59,20 +59,19 @@ methods are provided: moment), or false if it failed. - search(QUERY, [BTYPE]) + search(QUERY, [BNUM]) QUERY - Something to search for. At the moment, only a string is allowed here, but advanced expressions will be supported through an array of parameters. - BTYPE - Optional backend type to search. Either "local" - or "remote". + BNUM - Optional backend number to search. This method will return an array of result arrays (see below), an empty array if nothing was found, or false if the search failed. - s_search(QUERY, [BTYPE]) + s_search(QUERY, [BNUM]) The same as search(), but the result array is sorted by backend and fullname before it is returned. @@ -163,3 +162,6 @@ In addition, the following keys may exist for some backends: ---------------------- ... more later ... + +Ask pallo@squirrelmail.org if you have any questions on how to build +new address book backends. diff --git a/functions/addressbook.php b/functions/addressbook.php index bafa53b..45f586b 100644 --- a/functions/addressbook.php +++ b/functions/addressbook.php @@ -116,36 +116,49 @@ // Return a list of addresses matching expression in // all backends of a given type. - function search($expression, $btype = "") { + function search($expression, $bnum = -1) { $ret = array(); $this->error = ""; - $sel = $this->get_backend_list($btype); - $failed = 0; - for($i = 0 ; $i < sizeof($sel) ; $i++) { - $backend = &$sel[$i]; - $backend->error = ""; - $res = $backend->search($expression); - if(is_array($res)) { - $ret = array_merge($ret, $res); - } else { - $this->error = $this->error . "
\n". $backend->error; - $failed++; + // Search all backends + if($bnum == -1) { + $sel = $this->get_backend_list(""); + $failed = 0; + for($i = 0 ; $i < sizeof($sel) ; $i++) { + $backend = &$sel[$i]; + $backend->error = ""; + $res = $backend->search($expression); + if(is_array($res)) { + $ret = array_merge($ret, $res); + } else { + $this->error = $this->error . "
\n". $backend->error; + $failed++; + } } + + // Only fail if all backends failed + if($failed >= sizeof($sel)) + return false; + } - // Only fail if all backends failed - if($failed >= sizeof($sel)) - return false; + // Search only one backend + else { + $ret = $this->backends[$bnum]->search($expression); + if(!is_array($ret)) { + $this->error = $this->error . "
\n". $this->backends[$bnum]->error; + return false; + } + } return $ret; } // Return a sorted search - function s_search($expression, $btype = "") { + function s_search($expression, $bnum = -1) { - $ret = $this->search($expression, $btype); + $ret = $this->search($expression, $bnum); if(!is_array($ret)) return $ret; @@ -198,10 +211,14 @@ // Return all addresses - function list_addr() { + function list_addr($bnum = -1) { $ret = array(); - $sel = $this->get_backend_list("local"); + if($bnum == -1) + $sel = $this->get_backend_list("local"); + else + $sel = array(0 => &$this->backends[$bnum]); + for($i = 0 ; $i < sizeof($sel) ; $i++) { $backend = &$sel[$i]; $backend->error = ""; diff --git a/src/addrbook_search.php b/src/addrbook_search.php index ad41bfe..48e20ed 100644 --- a/src/addrbook_search.php +++ b/src/addrbook_search.php @@ -6,76 +6,8 @@ ** **/ - session_start(); - - if(!isset($logged_in)) { - echo _("You must login first."); - exit; - } - if(!isset($username) || !isset($key)) { - echo _("You need a valid user and password to access this page!"); - exit; - } - - if (!isset($config_php)) - include("../config/config.php"); - if (!isset($array_php)) - include("../functions/array.php"); - if (!isset($strings_php)) - include("../functions/strings.php"); - if (!isset($imap_php)) - include("../functions/imap.php"); - if (!isset($page_header_php)) - include("../functions/page_header.php"); - if (!isset($addressbook_php)) - include("../functions/addressbook.php"); - - // Authenticate user and load prefs - $imapConnection = sqimap_login($username, $key, - $imapServerAddress, $imapPort, 10); - include("../src/load_prefs.php"); - sqimap_logout ($imapConnection); - - displayHtmlHeader(); - - // Choose correct colors for top and bottom frame - if($show == "form") { - echo ""; - } else { - echo "\n"; - } - - // Just make a blank page and exit - if(($show == "blank") || (empty($query) && empty($show))) { - printf("


%s

\n\n", - _("Search results will display here")); - exit; - } - - // Create search form - if($show == "form") { - printf("
\n", - $PHP_SELF); - printf(""); - printf("
\n"); - printf(" %s:\n\n", - _("Search for")); - printf(" \n", - htmlspecialchars($query)); - printf("\n"); - printf(" ", - _("Search")); - printf("\n"); - printf("\n", - _("Close window")); - printf("
\n"); - } - - // Include JavaScript code if this is search results - if(!empty($query)) { + // Function to include JavaScript code + function insert_javascript() { ?> "; + printf(" ". + " %s %s". + " %s", + _("Name"), _("E-mail"), _("Info")); + + if($includesource) + printf(" %s", _("Source")); + + print "\n"; + + while(list($key, $row) = each($res)) { + printf("". + "To | ". + "Cc | ". + "Bcc". + " %s  ". + "%s ". + " %s ", + ($line % 2) ? " bgcolor=\"$color[0]\"" : "", + $row["email"], $row["email"], $row["email"], + $row["name"], $row["email"], $row["email"], + $row["label"]); + + if($includesource) + printf(" %s", $row["source"]); + + print "\n"; + $line++; + } + print ""; + } + + /* ================= End of functions ================= */ + + session_start(); + + if(!isset($logged_in)) { + echo _("You must login first."); + exit; + } + if(!isset($username) || !isset($key)) { + echo _("You need a valid user and password to access this page!"); + exit; + } + + if (!isset($config_php)) + include("../config/config.php"); + if (!isset($array_php)) + include("../functions/array.php"); + if (!isset($strings_php)) + include("../functions/strings.php"); + if (!isset($imap_php)) + include("../functions/imap.php"); + if (!isset($page_header_php)) + include("../functions/page_header.php"); + if (!isset($addressbook_php)) + include("../functions/addressbook.php"); + + // Authenticate user and load prefs + $imapConnection = sqimap_login($username, $key, + $imapServerAddress, $imapPort, 10); + include("../src/load_prefs.php"); + sqimap_logout ($imapConnection); + + displayHtmlHeader(); + + // Choose correct colors for top and bottom frame + if($show == "form") { + echo ""; + } else { + echo "\n"; + } + + // Empty search + if(empty($query) && empty($show) && empty($listall)) { + printf("


%s

\n\n", + _("No persons matching your search was found")); + exit; + } + + // Initialize addressbook + $abook = addressbook_init(); + + // Create search form + if($show == "form") { + printf("
\n", + $PHP_SELF); + printf(""); + printf("
\n"); + printf(" %s\n", _("Search for")); + printf(" \n", + htmlspecialchars($query)); + + // List all backends to allow the user to choose where to search + if($abook->numbackends > 1) { + printf("%s \n"); + } else { + printf("\n"); + } + + printf("", + _("Search")); + printf(" | \n", + _("List all")); + printf("\n"); + printf("\n", + _("Close window")); + printf("
\n"); + } else + + // Show personal addressbook + if($show == "blank" || !empty($listall)) { + + if($backend != -1 || $show == "blank") { + if($show == "blank") + $backend = $abook->localbackend; + + //printf("

%s

\n", $abook->backends[$backend]->sname); + + $res = $abook->list_addr($backend); + + if(is_array($res)) { + display_result($res, false); + } else { + printf("

"._("Unable to list addresses from %s"). + "

\n", $abook->backends[$backend]->sname); + } + + } else { + $res = $abook->list_addr(); + display_result($res, true); + } + + } else // Do the search - if(!empty($query)) { - $abook = addressbook_init(); - $res = $abook->s_search($query); + if(!empty($query) && empty($listall)) { + + if($backend == -1) { + $res = $abook->s_search($query); + } else { + $res = $abook->s_search($query, $backend); + } if(!is_array($res)) { printf("


%s:
%s

\n\n", @@ -159,28 +251,7 @@ function bcc_address($addr) { exit; } - // List search results - $line = 0; - print ""; - printf("\n", - _("Name"), _("E-mail"), _("Info"), _("Source")); - - while(list($key, $row) = each($res)) { - printf("\n", - ($line % 2) ? " bgcolor=\"$color[0]\"" : "", $row["email"], - $row["email"], $row["name"], $row["email"], $row["email"], - $row["label"], $row["source"]); - $line++; - } - print "
 ". - " %s %s". - " %s". - " %s
". - "To | ". - "Cc". - " %s  ". - "%s ". - " %s  %s
"; + display_result($res); } ?>