Add support for read-only address book records
| | |
| | | * |
| | | * @return rcube_result_index Search result (UIDs) |
| | | */ |
| | | public function search_once($mailbox = null, $str = 'ALL') |
| | | public function search_once($folder = null, $str = 'ALL') |
| | | { |
| | | if (!$str) { |
| | | return 'ALL'; |
| | | } |
| | | |
| | | if (!strlen($mailbox)) { |
| | | $mailbox = $this->mailbox; |
| | | if (!strlen($folder)) { |
| | | $folder = $this->folder; |
| | | } |
| | | |
| | | if (!$this->check_connection()) { |
| | | return new rcube_result_index(); |
| | | } |
| | | |
| | | $index = $this->conn->search($mailbox, $str, true); |
| | | $index = $this->conn->search($folder, $str, true); |
| | | |
| | | return $index; |
| | | } |
| | |
| | | }; |
| | | |
| | | // add row to contacts list |
| | | this.add_contact_row = function(cid, cols, select) |
| | | this.add_contact_row = function(cid, cols, classes) |
| | | { |
| | | if (!this.gui_objects.contactslist) |
| | | return false; |
| | |
| | | row = document.createElement('tr'); |
| | | |
| | | row.id = 'rcmrow'+this.html_identifier(cid); |
| | | row.className = 'contact'; |
| | | row.className = 'contact ' + (classes || ''); |
| | | |
| | | if (list.in_selection(cid)) |
| | | row.className += ' selected'; |
| | |
| | | $OUTPUT->set_env('cid', $record['ID']); |
| | | } |
| | | |
| | | // adding not allowed here |
| | | if ($CONTACTS->readonly) { |
| | | // editing not allowed here |
| | | if ($CONTACTS->readonly || $record['readonly']) { |
| | | $OUTPUT->show_message('sourceisreadonly'); |
| | | rcmail_overwrite_action('show'); |
| | | return; |
| | |
| | | | program/steps/addressbook/func.inc | |
| | | | | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2005-2007, The Roundcube Dev Team | |
| | | | Copyright (C) 2005-2012, The Roundcube Dev Team | |
| | | | | |
| | | | Licensed under the GNU General Public License version 3 or | |
| | | | any later version with exceptions for skins & plugins. | |
| | |
| | | |
| | | while ($row = $result->next()) { |
| | | $a_row_cols = array(); |
| | | $classes = array('person'); // org records will follow some day |
| | | |
| | | // build contact ID with source ID |
| | | if (isset($row['sourceid'])) { |
| | |
| | | $a_row_cols[$col] = Q($val); |
| | | } |
| | | |
| | | $OUTPUT->command($prefix.'add_contact_row', $row['ID'], $a_row_cols); |
| | | if ($row['readonly']) |
| | | $classes[] = 'readonly'; |
| | | |
| | | $OUTPUT->command($prefix.'add_contact_row', $row['ID'], $a_row_cols, join(' ', $classes)); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | // read contact record |
| | | if ($cid && ($record = $CONTACTS->get_record($cid, true))) { |
| | | $OUTPUT->set_env('readonly', $CONTACTS->readonly || $record['readonly']); |
| | | $OUTPUT->set_env('cid', $record['ID']); |
| | | } |
| | | |
| | |
| | | $row_id = 'G'.$group['ID']; |
| | | $jsresult[$row_id] = format_email_recipient($email, $group['name']); |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | 'contactgroup' => html::span(array('title' => $email), Q($group['name'])))); |
| | | 'contactgroup' => html::span(array('title' => $email), Q($group['name']))), 'group'); |
| | | } |
| | | } |
| | | // show group with count |
| | |
| | | $row_id = 'E'.$group['ID']; |
| | | $jsresult[$row_id] = $group['name']; |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | 'contactgroup' => Q($group['name'] . ' (' . intval($result->count) . ')'))); |
| | | 'contactgroup' => Q($group['name'] . ' (' . intval($result->count) . ')')), 'group'); |
| | | } |
| | | } |
| | | } |
| | |
| | | $row_id = $row['ID'].$i; |
| | | $jsresult[$row_id] = format_email_recipient($email, $name); |
| | | $OUTPUT->command('add_contact_row', $row_id, array( |
| | | 'contact' => html::span(array('title' => $email), Q($name ? $name : $email)))); |
| | | 'contact' => html::span(array('title' => $email), Q($name ? $name : $email))), 'person'); |
| | | } |
| | | } |
| | | } |
| | |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | #contacts-table .contact.readonly td { |
| | | font-style: italic; |
| | | } |
| | | |
| | | #directorylist li.addressbook a { |
| | | background-position: 6px -766px; |
| | | } |