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);
$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. */
$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 {
/***********************************************
$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) {
$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) {
//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);
* 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
if (is_array($values['Email'])) {
echo '<select name="'.$formname.'[email]" id="email">'."\n";
foreach ($values['Email'] as $email) {
+//FIXME: htmlspecialchars should not be needed inside any template files - I think values are already sanitized by the time they get here
echo '<option value="'.htmlspecialchars($email).'">'.htmlspecialchars($email).'</option>'."\n";
}
echo '</select>'."\n";
<select name="backend" id="backend">
<?php
foreach ($writable_backends as $id=>$name) {
- echo '<option value="'.$id.'">'.htmlspecialchars($name).'</option>'."\n";
+//FIXME: htmlspecialchars should not be needed inside any template files - I think values are already sanitized by the time they get here
+ echo '<option value="' . $id
+ . ($current_backend == $id ? '" selected="selected"' : '"')
+ . '>' . htmlspecialchars($name) . '</option>' . "\n";
}
?>
</select>
* 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
<div id="addressList">
<table cellspacing="0">
<tr>
- <td colspan=<?php echo '"'.$colspan.'"'; ?> class="header1">
+ <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" />
+ <input type="submit" value="<?php echo _("Edit Selected"); ?>" name="editaddr" id="editaddr" />
+ <input type="submit" value="<?php echo _("Delete Selected"); ?>" name="deladdr" id="deladdr" />
+ <input type="submit" value="<?php echo _("Compose to Selected") . ($javascript_on && $compose_new_win ? '" onclick="var send_to = \'\'; var f = document.forms.length; var i = 0; var grab_next_hidden = \'\'; while (i < f) { var e = document.forms[i].elements.length; var j = 0; while (j < e) { if (document.forms[i].elements[j].type == \'checkbox\' && document.forms[i].elements[j].checked) { var pos = document.forms[i].elements[j].value.indexOf(\'_\'); if (pos >= 1) { grab_next_hidden = document.forms[i].elements[j].value; } } else if (document.forms[i].elements[j].type == \'hidden\' && grab_next_hidden == document.forms[i].elements[j].name) { if (send_to != \'\') { send_to += \', \'; } send_to += document.forms[i].elements[j].value; } j++; } i++; } if (send_to != \'\') { comp_in_new(\''. $base_uri . 'src/compose.php?send_to=\' + send_to, ' . $compose_width . ', ' . $compose_height . '); } return false;"' : '"'); ?> name="compose_to" id="compose_to" />
<?php if (!empty($plugin_output['address_book_navigation'])) echo $plugin_output['address_book_navigation']; ?>
</td>
- <td colspan=<?php echo '"'.($colspan - 3).'"'; ?> class="abookSwitch">
+ <td colspan="<?php echo ($colspan - 3); ?>" class="abookSwitch">
<?php
if (count($backends) > 0) {
?>
<select name="new_bnum">
<?php
foreach ($backends as $id=>$name) {
- echo '<option value="'.$id.'"'.($id==$current_backend ? ' selected="selected"' : '').'>'.$name.'</option>'."\n";
+ 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" />
+ <input type="submit" value="<?php echo _("Change"); ?>" name="change_abook" id="change_abook" />
<?php
} else {
echo ' ';
echo '<tr><td class="abookEmpty" colspan="'.$colspan.'">'._("Address book is empty").'</td></tr>'."\n";
}
foreach ($source['Addresses'] as $contact) {
- $id = $contact['NickName'] .'_'. $current_backend;
+ $id = $current_backend . '_' . $contact['NickName'];
?>
- <tr class=<?php echo '"'.($count%2 ? 'even' : 'odd').'"'; ?>>
+ <tr class="<?php echo ($count%2 ? 'even' : 'odd'); ?>">
<td class="abookField" style="width:1%"><?php echo ($source['BackendWritable'] ? '<input type="checkbox" name="sel[' . $count . ']" value="'.$id.'" id="'.$id.'" ' . (!empty($plugin_output['address_book_checkbox_extra']) ? $plugin_output['address_book_checkbox_extra'] : '') . ' />' : ''); ?></td>
- <td class="abookField" style="width:15%"><label for=<?php echo '"'.$id.'"'; ?>><?php echo $contact['NickName']; ?></label></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>
+ <td class="abookField" style="width:15%"><label for="<?php echo $id . '">' . $contact['NickName']; ?></label></td>
+ <td class="abookField"><label for="<?php echo $id . '">' . $contact['FullName']; ?></label></td>
+ <td class="abookField"><input type="hidden" name="<?php echo $id; ?>" value="<?php echo rawurlencode($contact['FullAddress']); ?>" /><?php echo composeLink($contact); ?></td>
+ <td class="abookField"><label for="<?php echo $id . '">' . $contact['Info']; ?></label></td>
<?php
if ($abook_has_extra_field) {
echo '<td class="abookField">'.$contact['Extra'].'</td>'."\n";