summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2012-03-20 22:47:24 +0000
committerthomascube <thomas@roundcube.net>2012-03-20 22:47:24 +0000
commit4cf42fde05ff891f6961ba60dbb1c2e4c91c39c6 (patch)
tree75e1520d4dbf92a9b8c0ae9ab3136fa2623d4172
parenta71a97fa49fb1c7fbe5e042b2cf6239f7372acb4 (diff)
Add support for read-only address book records
-rw-r--r--program/include/rcube_imap.php8
-rw-r--r--program/js/app.js4
-rw-r--r--program/steps/addressbook/edit.inc4
-rw-r--r--program/steps/addressbook/func.inc8
-rw-r--r--program/steps/addressbook/show.inc1
-rw-r--r--program/steps/mail/list_contacts.inc6
-rw-r--r--skins/larry/addressbook.css4
7 files changed, 22 insertions, 13 deletions
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 7038d24b9..bd8f35176 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1346,21 +1346,21 @@ class rcube_imap extends rcube_storage
*
* @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;
}
diff --git a/program/js/app.js b/program/js/app.js
index 94e48a823..53a67c7ad 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -4229,7 +4229,7 @@ function rcube_webmail()
};
// 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 @@ function rcube_webmail()
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';
diff --git a/program/steps/addressbook/edit.inc b/program/steps/addressbook/edit.inc
index 5f8a4ec2c..abed2c566 100644
--- a/program/steps/addressbook/edit.inc
+++ b/program/steps/addressbook/edit.inc
@@ -36,8 +36,8 @@ if ($RCMAIL->action == 'edit') {
$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;
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index 5a7213ca4..eb8a0e597 100644
--- a/program/steps/addressbook/func.inc
+++ b/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 @@ function rcmail_js_contacts_list($result, $prefix='')
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 @@ function rcmail_js_contacts_list($result, $prefix='')
$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));
}
}
diff --git a/program/steps/addressbook/show.inc b/program/steps/addressbook/show.inc
index 5086a7bcd..bf65bebe4 100644
--- a/program/steps/addressbook/show.inc
+++ b/program/steps/addressbook/show.inc
@@ -33,6 +33,7 @@ $SOURCE_ID = $source;
// 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']);
}
diff --git a/program/steps/mail/list_contacts.inc b/program/steps/mail/list_contacts.inc
index eb425d2ba..6954e110a 100644
--- a/program/steps/mail/list_contacts.inc
+++ b/program/steps/mail/list_contacts.inc
@@ -45,7 +45,7 @@ if ($CONTACTS && $CONTACTS->ready) {
$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 @@ if ($CONTACTS && $CONTACTS->ready) {
$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 @@ if ($CONTACTS && $CONTACTS->ready) {
$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');
}
}
}
diff --git a/skins/larry/addressbook.css b/skins/larry/addressbook.css
index c754b917f..4ad6d34cd 100644
--- a/skins/larry/addressbook.css
+++ b/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;
}