/** lets get the global vars we may need */
/* From the address form */
-sqgetGlobalVar('addaddr', $addaddr, SQ_POST);
-sqgetGlobalVar('editaddr', $editaddr, SQ_POST);
-sqgetGlobalVar('deladdr', $deladdr, SQ_POST);
-sqgetGlobalVar('sel', $sel, SQ_POST);
-sqgetGlobalVar('oldnick', $oldnick, SQ_POST);
-sqgetGlobalVar('backend', $backend, SQ_POST);
-sqgetGlobalVar('doedit', $doedit, SQ_POST);
+//sqgetGlobalVar('change_abook', $change_abook, SQ_POST);
+sqgetGlobalVar('addaddr', $addaddr, SQ_POST);
+sqgetGlobalVar('editaddr', $editaddr, SQ_POST);
+sqgetGlobalVar('deladdr', $deladdr, SQ_POST);
+sqgetGlobalVar('sel', $sel, SQ_POST);
+sqgetGlobalVar('oldnick', $oldnick, SQ_POST);
+sqgetGlobalVar('backend', $backend, SQ_POST);
+sqgetGlobalVar('doedit', $doedit, SQ_POST);
/* Get sorting order */
$abook_sort_order = get_abook_sort();
// FIXME: do we have to stop use of address book, when localbackend is not present.
if($abook->localbackend == 0) {
- plain_error_message(
- _("No personal address book is defined. Contact administrator."),
- $color);
+ plain_error_message(_("No personal address book is defined. Contact administrator."));
exit();
}
+$current_backend = $abook->localbackend;
+if (sqgetGlobalVar('new_bnum',$new_backend,SQ_POST) && array_key_exists($new_backend,$abook->backends)) {
+ $current_backend = (int) $new_backend;
+}
+
+$abook_selection = ' ';
+$list_backends = array();
+if (count($abook->backends) > 1) {
+ foreach($abook->get_backend_list() as $oBackend) {
+ if ($oBackend->listing) {
+ $list_backends[$oBackend->bnum]=$oBackend->sname;
+ }
+ }
+ if (count($list_backends)>1) {
+ $abook_selection = addSelect('new_bnum',$list_backends,$current_backend,true)
+ .addSubmit(_("Change"),'change_abook');
+ }
+}
+
$defdata = array();
$formerror = '';
$abortform = false;
$form_url = 'addressbook.php';
/* Handle user's actions */
+//if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'POST' && !isset($change_abook)) {
if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'POST') {
/**************************************************
/* Display error messages */
if (!empty($formerror)) {
- echo html_tag( 'table',
- html_tag( 'tr',
- html_tag( 'td',
- "\n". '<br /><strong><font color="' . $color[2] .
- '">' . _("ERROR") . ': ' . nl2br(htmlspecialchars($formerror)) . '</font></strong>' ."\n",
- 'center' )
- ),
- 'center', '', 'width="100%"' );
+ plain_error_message(nl2br(htmlspecialchars($formerror)));
}
/* Display the address management part */
-if ($showaddrlist) {
- /* Get and sort address list */
- $alist = $abook->list_addr();
- if(!is_array($alist)) {
- plain_error_message(nl2br(htmlspecialchars($abook->error)), $color);
- exit;
- }
-
+$addresses = array();
+while (list($k, $backend) = each ($abook->backends)) {
+ $a = array();
+ $a['BackendID'] = $backend->bnum;
+ $a['BackendSource'] = $backend->sname;
+ $a['BackendWritable'] = $backend->writeable;
+ $a['Addresses'] = array();
+
+ $alist = $abook->list_addr($backend->bnum);
usort($alist,'alistcmp');
- $prevbackend = -1;
- $headerprinted = false;
-
- echo html_tag( 'p', '<a href="#AddAddress">' . _("Add address") . '</a>', 'center' ) . "\n";
-
- /* List addresses */
- if (count($alist) > 0) {
- echo addForm($form_url, 'post');
- if ($abook->add_extra_field) {
- $abook_fields = 6;
- } else {
- $abook_fields = 5;
- }
- while(list($undef,$row) = each($alist)) {
-
- /* New table header for each backend */
- if($prevbackend != $row['backend']) {
- if($prevbackend < 0) {
- echo html_tag( 'table',
- html_tag( 'tr',
- html_tag( 'td',
- addSubmit(_("Edit selected"), 'editaddr').
- addSubmit(_("Delete selected"), 'deladdr'),
- 'center', '', "colspan=\"$abook_fields\"" )
- ) .
- html_tag( 'tr',
- html_tag( 'td', ' <br />', 'center', '', "colspan=\"$abook_fields\"" )
- ),
- 'center' );
- echo "\n<!-- start of address book table -->\n" .
- html_tag( 'table', '', 'center', '', 'border="0" cellpadding="1" cellspacing="0" width="90%"' ) .
- html_tag( 'tr', "\n" .
- html_tag( 'th', ' ', 'left', '', 'width="1%"' ) . "\n" .
- html_tag( 'th', _("Nickname") .
- show_abook_sort_button($abook_sort_order, _("sort by nickname"), 0, 1),
- 'left', '', 'width="1%"' ) . "\n" .
- html_tag( 'th', _("Name") .
- show_abook_sort_button($abook_sort_order, _("sort by name"), 2, 3),
- 'left', '', 'width="1%"' ) . "\n" .
- html_tag( 'th', _("E-mail") .
- show_abook_sort_button($abook_sort_order, _("sort by email"), 4, 5),
- 'left', '', 'width="1%"' ) . "\n" .
- html_tag( 'th', _("Info") .
- show_abook_sort_button($abook_sort_order, _("sort by info"), 6, 7),
- 'left', '', 'width="1%"' ) .
- ($abook->add_extra_field ? html_tag( 'th', ' ','left', '', 'width="1%"'): '') .
- "\n",
- '', $color[9] ) . "\n";
- }
-
- // Separate different backends with <hr />
- if($prevbackend > 0) {
- echo html_tag( 'tr',
- html_tag( 'td', "<hr />", 'center', '' ,"colspan=\"$abook_fields\"" )
- );
- }
-
- // Print backend name
- echo html_tag( 'tr',
- html_tag( 'td', "\n" . '<strong>' . $row['source'] . '</strong>' . "\n", 'center', $color[0] ,"colspan=\"$abook_fields\"" )
- );
-
- $line = 0;
- $headerprinted = true;
- } /* End of header */
-
- $prevbackend = $row['backend'];
-
- /* Check if this user is selected */
- $selected = in_array($row['backend'] . ':' . $row['nickname'], $defselected);
-
- /* Print one row, with alternating color */
- if ($line % 2) {
- $tr_bgcolor = $color[12];
- } else {
- $tr_bgcolor = $color[4];
- }
- echo html_tag( 'tr', '', '', $tr_bgcolor);
- if ($abook->backends[$row['backend']]->writeable) {
- $id = $row['backend'].':'.$row['nickname'];
- echo html_tag( 'td',
- '<small>' .
- addCheckBox("sel[$id]", $selected, $id).
- '</small>' ,
- 'center', '', 'valign="top" width="1%"' );
- $label1 = '<label for="sel_'.$id.'_">'; $label2='</label>';
- } else {
- echo html_tag( 'td',
- ' ' ,
- 'center', '', 'valign="top" width="1%"' );
- $label1 = $label2 = '';
- }
- echo html_tag( 'td',
- ' ' . $label1 . htmlspecialchars($row['nickname']) . $label2 . ' ',
- 'left', '', 'valign="top" width="1%" style="white-space: nowrap;"' );
-
- echo html_tag( 'td',
- ' ' . $label1 . htmlspecialchars($row['name']) . $label2 . ' ',
- 'left', '', 'valign="top" width="1%" style="white-space: nowrap;"' );
-
- // email address column
- echo html_tag( 'td', '', 'left', '', 'valign="top" width="1%" style="white-space: nowrap;"' ) . ' ';
- $email = $abook->full_address($row);
- echo makeComposeLink('src/compose.php?send_to='.rawurlencode($email),
- htmlspecialchars($row['email'])).
- ' </td>'."\n";
-
- // info column
- echo html_tag( 'td', ' ' . htmlspecialchars($row['label']) . ' ', 'left', '', 'valign="top" width="1%"' );
-
- // add extra column if third party backend needs it
- if ($abook->add_extra_field) {
- echo html_tag( 'td',
- ' ' . (isset($row['extra']) ? $row['extra'] : '') . ' ',
- 'left', '', 'valign="top" width="1%"' );
- }
- echo "</tr>\n";
- $line++;
- }
- echo "</table>" .
- "\n<!-- end of address book table -->\n";
-
- /* End of list. Add edit/delete select buttons */
- if ($headerprinted) {
- echo html_tag( 'table',
- html_tag( 'tr',
- html_tag( 'td',
- addSubmit(_("Edit selected"), 'editaddr') .
- addSubmit(_("Delete selected"), 'deladdr'),
- 'center', '', "colspan=\"$abook_fields\"" )
- ),
- 'center' );
- }
- echo "</form>\n";
+ $start = 200;
+ $count = count($alist);
+ if ($start >= $count) $start = 0;
+ $alist = array_slice($alist,$start,15);
+
+ while(list($undef,$row) = each($alist)) {
+ $contact = array (
+ 'FirstName' => htmlspecialchars($row['firstname']),
+ 'LastName' => htmlspecialchars($row['lastname']),
+ 'FullName' => htmlspecialchars($row['name']),
+ 'NickName' => htmlspecialchars($row['nickname']),
+ 'Email' => htmlspecialchars($row['email']),
+ 'FullAddress' => htmlspecialchars($abook->full_address($row)),
+ 'Info' => htmlspecialchars($row['label']),
+ 'Extra' => (isset($row['extra']) ? $row['extra'] : NULL),
+ );
+ $a['Addresses'][] = $contact;
}
-} /* end of addresslist */
+
+ $addresses[$backend->bnum] = $a;
+}
+if ($showaddrlist) {
+ echo addForm($form_url, 'post');
+
+ $oTemplate->assign('addresses', $addresses);
+ $oTemplate->assign('current_backend', $current_backend);
+ $oTemplate->assign('backends', $list_backends);
+
+ $oTemplate->display('addressbook_list.tpl');
+
+ echo "</form>\n";
+}
+
/* Display the "new address" form */
echo '<a name="AddAddress"></a>' . "\n";
abook_create_form($form_url,'addaddr',_("Add to address book"),_("Add address"),$defdata);
echo "<!-- start of addressbook_bottom hook-->\n";
do_hook('addressbook_bottom');
echo "\n<!-- end of addressbook_bottom hook-->\n";
+
$oTemplate->display('footer.tpl');
-?>
+?>
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * addressbook_list.tpl
+ *
+ * Template for the basic address book list
+ *
+ * The following variables are available in this template:
+ * $current_backend - integer containing backend currently displayed.
+ * $abook_select - string containing HTML to display the address book
+ * selection drop down
+ * $backends - array containing all available backends for selection.
+ * This will be empty if only 1 backend is available!
+ * $addresses - array of addresses in the address book. Each element
+ * is an array containing the following fields:
+ * $el['BackendID'] - integer unique identifier for each source of
+ * addresses in the book
+ * $el['BackendSource'] - description of each source of addresses
+ * $el['BackendWritable'] - boolean TRUE if the address book can be
+ * modified. FALSE otherwise.
+ * $el['Addresses'] - array containing address from this source.
+ * Each array element contains the following:
+ * $el['FirstName'] - The entry's first name
+ * $el['LastName'] - The entry's last name (surname)
+ * $el['FullName'] - The entry's full name (first + last)
+ * $el['NickName'] - The entry's nickname
+ * $el['Email'] - duh
+ * $el['FullAddress'] - Email with full name or nick name
+ * optionally prepended.
+ * $el['Info'] - Additional info about this contact
+ * $el['Extra'] - Additional field, if provided. NULL if this
+ * field is not provided by the book.
+ *
+ * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package squirrelmail
+ * @subpackage templates
+ */
+
+/** add required includes **/
+include_once(SM_PATH . 'templates/util_addressbook.php');
+
+/** extract template variables **/
+extract($t);
+
+#echo dump_array($addresses).'<br>';
+/** Begin template **/
+$source = $addresses[$current_backend];
+$abook_has_extra_field = isset($source['Addresses'][0]) && !is_null($source['Addresses'][0]['Extra']);
+$colspan = $abook_has_extra_field ? 6 : 5;
+?>
+<div id="addressList">
+<table cellspacing="0">
+ <tr>
+ <td colspan=<?php echo '"'.$colspan.'"'; ?> class="header1">
+ <?php echo $source['BackendSource']; ?>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3" class="abookButtons">
+ <input type="submit" value=<?php echo '"'._("Edit selected").'"'; ?> name="editaddr" id="editaddr" />
+ <input type="submit" value=<?php echo '"'._("Delete selected").'"'; ?> name="deladdr" id="deladdr" />
+ </td>
+ <td colspan=<?php echo '"'.($colspan - 3).'"'; ?> class="abookSwitch">
+ <select name="new_bnum">
+ <?php
+ foreach ($backends as $id=>$name) {
+ echo '<option value="'.$id.'"'.($id==$current_backend ? ' selected="selected"' : '').'>'.$name.'</option>'."\n";
+ }
+ ?>
+ </select>
+ <input type="submit" value=<?php echo '"'._("Change").'"'; ?> name="change_abook" id="change_abook" />
+ </td>
+ </tr>
+ <tr>
+ <td class="colHeader" style="width:1%"></td>
+ <td class="colHeader" style="width:15%"><?php echo addAbookSort('nickname'); ?></td>
+ <td class="colHeader"><?php echo addAbookSort('fullname'); ?></td>
+ <td class="colHeader"><?php echo addAbookSort('email'); ?></td>
+ <td class="colHeader"><?php echo addAbookSort('info'); ?></td>
+ <?php
+ if ($abook_has_extra_field) {
+ echo '<td class="colHeader"></td>';
+ }
+ ?>
+ </tr>
+ <?php
+ $count = 1;
+ if (count($source['Addresses']) == 0) {
+ echo '<tr><td class="abookEmpty" colspan="'.$colspan.'">'._("Address book is empty").'</td></tr>'."\n";
+ }
+ foreach ($source['Addresses'] as $contact) {
+ $id = $current_backend.':'.$contact['NickName'];
+ ?>
+ <tr class=<?php echo '"'.($count%2 ? 'even' : 'odd').'"'; ?>>
+ <td class="abookField" style="width:1%"><?php echo ($source['BackendWritable'] ? '<input type="checkbox" name="sel[]" value="'.$id.'" id="'.$id.'" />' : ''); ?></td>
+ <td class="abookField" style="width:15%"><label for=<?php echo '"'.$id.'"'; ?>><?php echo $contact['NickName']; ?></lable></td>
+ <td class="abookField"><?php echo $contact['FullName']; ?></td>
+ <td class="abookField"><?php echo composeLink($contact); ?></td>
+ <td class="abookField"><?php echo $contact['Info']; ?></td>
+ <?php
+ if ($abook_has_extra_field) {
+ echo '<td class="abookField">'.$contact['Extra'].'</td>'."\n";
+ }
+ ?>
+ </tr>
+ <?php
+ $count++;
+ }
+?>
+</table>
+</div>
\ No newline at end of file