From f4f64c5865bd0ae43c408e458858d7d7065c41ca Mon Sep 17 00:00:00 2001 From: pdontthink Date: Thu, 15 May 2008 19:00:03 +0000 Subject: [PATCH 1/1] Allow underscores in nicknames by changing id used in forms, add more labels for easy checkbox clicking, add compose to selected button git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@13146 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- src/addressbook.php | 58 +++++++++++++++++++++++--- templates/default/addrbook_addedit.tpl | 7 +++- templates/default/addressbook_list.tpl | 29 +++++++------ 3 files changed, 75 insertions(+), 19 deletions(-) diff --git a/src/addressbook.php b/src/addressbook.php index 4d755e11..6daf3fd7 100644 --- a/src/addressbook.php +++ b/src/addressbook.php @@ -34,6 +34,7 @@ require_once(SM_PATH . 'functions/forms.php'); sqgetGlobalVar('addaddr', $addaddr, SQ_POST); sqgetGlobalVar('editaddr', $editaddr, SQ_POST); sqgetGlobalVar('deladdr', $deladdr, SQ_POST); +sqgetGlobalVar('compose_to', $compose_to, SQ_POST); sqgetGlobalVar('sel', $sel, SQ_POST); sqgetGlobalVar('oldnick', $oldnick, SQ_POST); sqgetGlobalVar('backend', $backend, SQ_POST); @@ -115,14 +116,14 @@ if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'P $orig_sel = $sel; sort($sel); - /* The selected addresses are identidied by "nickname_backend". * + /* The selected addresses are identified by "backend_nickname". * * Sort the list and process one backend at the time */ $prevback = -1; $subsel = array(); $delfailed = false; for ($i = 0 ; (($i < sizeof($sel)) && !$delfailed) ; $i++) { - list($snick, $sbackend) = explode('_', $sel[$i]); + list($sbackend, $snick) = explode('_', $sel[$i], 2); /* When we get to a new backend, process addresses in * * previous one. */ @@ -156,6 +157,47 @@ if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'P $defselected = $orig_sel; } + /************************************************ + * Compose to selected address(es) * + ************************************************/ + } else if ((!empty($compose_to)) && sizeof($sel) > 0) { + $orig_sel = $sel; + sort($sel); + + // The selected addresses are identified by "backend_nickname" + $lookup_failed = false; + $send_to = ''; + + for ($i = 0 ; (($i < sizeof($sel)) && !$lookup_failed) ; $i++) { + list($sbackend, $snick) = explode('_', $sel[$i], 2); + + $data = $abook->lookup($snick, $sbackend); + + if (!$data) { + $formerror = $abook->error; + $lookup_failed = true; + break; + } else { + $addr = $abook->full_address($data); + if (!empty($addr)) + $send_to .= $addr . ', '; + } + } + + + if ($lookup_failed || empty($send_to)) { + $showaddrlist = true; + $defselected = $sel; + } + + + // send off to compose screen + else { + $send_to = trim($send_to, ', '); + header('Location: ' . $base_uri . 'src/compose.php?send_to=' . rawurlencode($send_to)); + exit; + } + } else { /*********************************************** @@ -170,7 +212,7 @@ if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'P $defselected = $sel; } else { $abortform = true; - list($enick, $ebackend) = explode('_', current($sel)); + list($ebackend, $enick) = explode('_', current($sel), 2); $olddata = $abook->lookup($enick, $ebackend); // Test if $olddata really contains anything and return an error message if it doesn't if (!$olddata) { @@ -219,9 +261,10 @@ if(sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'P $formerror = _("Please select address that you want to edit"); $showaddrlist = true; } /* end of edit stage detection */ - } /* !empty($editaddr) - Update/modify address */ - } /* (!empty($deladdr)) && sizeof($sel) > 0 - Delete address(es) */ - } /* !empty($addaddr['nickname']) - Add new address */ + } /* !empty($editaddr) - Update/modify address */ + } /* (!empty($deladdr)) && sizeof($sel) > 0 - Delete address(es) + or (!empty($compose_to)) && sizeof($sel) > 0 - Compose to address(es) */ + } /* !empty($addaddr['nickname']) - Add new address */ // Some times we end output before forms are printed if($abortform) { @@ -271,6 +314,9 @@ if ($showaddrlist) { //FIXME: Remove HTML from here! echo addForm($form_url, 'post', 'address_book_form'); + $oTemplate->assign('compose_new_win', $compose_new_win); + $oTemplate->assign('compose_height', $compose_height); + $oTemplate->assign('compose_width', $compose_width); $oTemplate->assign('addresses', $addresses); $oTemplate->assign('current_backend', $current_backend); $oTemplate->assign('backends', $list_backends); diff --git a/templates/default/addrbook_addedit.tpl b/templates/default/addrbook_addedit.tpl index 51e1e06d..44f728c9 100644 --- a/templates/default/addrbook_addedit.tpl +++ b/templates/default/addrbook_addedit.tpl @@ -5,6 +5,7 @@ * Display the form elements to add/edit an entry in the address book * * The following variables are available in this template: + * $current_backend - integer containing backend currently displayed. * $edit - boolean TRUE if we are editing an existing address. * FALSE if the form is blank for adding a new address. * $writable_backends - array of address book backends that can be written @@ -60,6 +61,7 @@ $formname = $edit ? 'editaddr' : 'addaddr'; if (is_array($values['Email'])) { echo ''."\n"; @@ -105,7 +107,10 @@ $formname = $edit ? 'editaddr' : 'addaddr'; diff --git a/templates/default/addressbook_list.tpl b/templates/default/addressbook_list.tpl index dbbbce05..1da30ad6 100644 --- a/templates/default/addressbook_list.tpl +++ b/templates/default/addressbook_list.tpl @@ -5,6 +5,10 @@ * Template for the basic address book list * * The following variables are available in this template: + * $compose_new_win - whether or not the user prefs are set to compose + * messages in a popup window + * $compose_width - width of popup compose window if needed + * $compose_height - height of popup compose window if needed * $current_backend - integer containing backend currently displayed. * $abook_select - string containing HTML to display the address book * selection drop down @@ -55,28 +59,29 @@ $colspan = $abook_has_extra_field ? 6 : 5;
- - '."\n"; } foreach ($source['Addresses'] as $contact) { - $id = $contact['NickName'] .'_'. $current_backend; + $id = $current_backend . '_' . $contact['NickName']; ?> - > + - - - - + + + + '.$contact['Extra'].''."\n"; -- 2.25.1
class="header1"> +
- name="editaddr" id="editaddr" /> - name="deladdr" id="deladdr" /> + " name="editaddr" id="editaddr" /> + " name="deladdr" id="deladdr" /> + name="compose_to" id="compose_to" /> class="abookSwitch"> + 0) { ?> - name="change_abook" id="change_abook" /> + " name="change_abook" id="change_abook" /> '._("Address book is empty").'
' : ''); ?>