thomascube
2012-03-20 4cf42fde05ff891f6961ba60dbb1c2e4c91c39c6
Add support for read-only address book records

7 files modified
35 ■■■■■ changed files
program/include/rcube_imap.php 8 ●●●● patch | view | raw | blame | history
program/js/app.js 4 ●●●● patch | view | raw | blame | history
program/steps/addressbook/edit.inc 4 ●●●● patch | view | raw | blame | history
program/steps/addressbook/func.inc 8 ●●●● patch | view | raw | blame | history
program/steps/addressbook/show.inc 1 ●●●● patch | view | raw | blame | history
program/steps/mail/list_contacts.inc 6 ●●●● patch | view | raw | blame | history
skins/larry/addressbook.css 4 ●●●● patch | view | raw | blame | history
program/include/rcube_imap.php
@@ -1346,21 +1346,21 @@
     *
     * @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;
    }
program/js/app.js
@@ -4229,7 +4229,7 @@
  };
  // 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;
@@ -4238,7 +4238,7 @@
      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';
program/steps/addressbook/edit.inc
@@ -36,8 +36,8 @@
        $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
@@ -5,7 +5,7 @@
 | 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.                |
@@ -339,6 +339,7 @@
    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'])) {
@@ -351,7 +352,10 @@
            $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));
    }
}
program/steps/addressbook/show.inc
@@ -33,6 +33,7 @@
// 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']);
}
program/steps/mail/list_contacts.inc
@@ -45,7 +45,7 @@
                    $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
@@ -53,7 +53,7 @@
                $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');
            }
        }
    }
@@ -75,7 +75,7 @@
                $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');
            }
        }
    }
skins/larry/addressbook.css
@@ -73,6 +73,10 @@
    text-overflow: ellipsis;
}
#contacts-table .contact.readonly td {
    font-style: italic;
}
#directorylist li.addressbook a {
    background-position: 6px -766px;
}