Merge branch 'master' of ssh://git.kolab.org/git/roundcube
This commit is contained in:
commit
99a692f4bd
4 changed files with 23 additions and 13 deletions
|
@ -103,7 +103,6 @@ class kolab_driver extends calendar_driver
|
||||||
}
|
}
|
||||||
|
|
||||||
$calendars = $names = array();
|
$calendars = $names = array();
|
||||||
$default_folder = class_exists('kolab_folders') ? kolab_folders::default_folder('event') : '';
|
|
||||||
|
|
||||||
foreach ($this->calendars as $id => $cal) {
|
foreach ($this->calendars as $id => $cal) {
|
||||||
if ($cal->ready) {
|
if ($cal->ready) {
|
||||||
|
@ -117,7 +116,7 @@ class kolab_driver extends calendar_driver
|
||||||
'readonly' => $cal->readonly,
|
'readonly' => $cal->readonly,
|
||||||
'showalarms' => $cal->alarms,
|
'showalarms' => $cal->alarms,
|
||||||
'class_name' => $cal->get_namespace(),
|
'class_name' => $cal->get_namespace(),
|
||||||
'default' => $cal->get_realname() == $default_folder,
|
'default' => $cal->storage->default,
|
||||||
'active' => $cal->storage->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
|
'active' => $cal->storage->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -538,13 +538,13 @@ class kolab_storage
|
||||||
$prefix = $root . $mbox;
|
$prefix = $root . $mbox;
|
||||||
|
|
||||||
// get folders types
|
// get folders types
|
||||||
$folderdata = self::$imap->get_metadata($prefix, self::CTYPE_KEY);
|
$folderdata = self::$imap->get_metadata($prefix, array(self::CTYPE_KEY, self::CTYPE_KEY_PRIVATE));
|
||||||
|
|
||||||
if (!is_array($folderdata)) {
|
if (!is_array($folderdata)) {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
$folderdata = array_map('implode', $folderdata);
|
$folderdata = array_map(array('kolab_storage', 'folder_select_metadata'), $folderdata);
|
||||||
$regexp = '/^' . preg_quote($filter, '/') . '(\..+)?$/';
|
$regexp = '/^' . preg_quote($filter, '/') . '(\..+)?$/';
|
||||||
|
|
||||||
// In some conditions we can skip LIST command (?)
|
// In some conditions we can skip LIST command (?)
|
||||||
|
@ -585,4 +585,13 @@ class kolab_storage
|
||||||
return $folders;
|
return $folders;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback for array_map to select the correct annotation value
|
||||||
|
*/
|
||||||
|
static function folder_select_metadata($types)
|
||||||
|
{
|
||||||
|
return $types[self::CTYPE_KEY_PRIVATE] ?: $types[self::CTYPE_KEY];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,8 +76,8 @@ class kolab_storage_folder
|
||||||
public function set_folder($name, $ftype = null)
|
public function set_folder($name, $ftype = null)
|
||||||
{
|
{
|
||||||
if (!$ftype) {
|
if (!$ftype) {
|
||||||
$metadata = $this->imap->get_metadata($name, array(kolab_storage::CTYPE_KEY));
|
$metadata = $this->imap->get_metadata($name, array(kolab_storage::CTYPE_KEY, kolab_storage::CTYPE_KEY_PRIVATE));
|
||||||
$this->type_annotation = $metadata[$name][kolab_storage::CTYPE_KEY];
|
$this->type_annotation = $metadata[$name][kolab_storage::CTYPE_KEY_PRIVATE] ?: $metadata[$name][kolab_storage::CTYPE_KEY];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->type_annotation = $ftype;
|
$this->type_annotation = $ftype;
|
||||||
|
|
|
@ -63,20 +63,22 @@ class tasklist_kolab_driver extends tasklist_driver
|
||||||
|
|
||||||
// convert to UTF8 and sort
|
// convert to UTF8 and sort
|
||||||
$names = array();
|
$names = array();
|
||||||
|
$default_folder = null;
|
||||||
foreach ($this->folders as $i => $folder) {
|
foreach ($this->folders as $i => $folder) {
|
||||||
$names[$folder->name] = rcube_charset::convert($folder->name, 'UTF7-IMAP');
|
$names[$folder->name] = rcube_charset::convert($folder->name, 'UTF7-IMAP');
|
||||||
$this->folders[$folder->name] = $folder;
|
$this->folders[$folder->name] = $folder;
|
||||||
|
if ($folder->default)
|
||||||
|
$default_folder = $folder->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
asort($names, SORT_LOCALE_STRING);
|
asort($names, SORT_LOCALE_STRING);
|
||||||
|
|
||||||
// put default folder (aka INBOX) on top of the list
|
// put default folder (aka INBOX) on top of the list
|
||||||
if (class_exists('kolab_folders') && ($default_folder = kolab_folders::default_folder('task'))) {
|
if ($default_folder) {
|
||||||
if ($default_name = $names[$default_folder]) {
|
$default_name = $names[$default_folder];
|
||||||
unset($names[$default_folder]);
|
unset($names[$default_folder]);
|
||||||
$names = array_merge(array($default_folder => $default_name), $names);
|
$names = array_merge(array($default_folder => $default_name), $names);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$delim = $this->rc->get_storage()->get_hierarchy_delimiter();
|
$delim = $this->rc->get_storage()->get_hierarchy_delimiter();
|
||||||
$listnames = array();
|
$listnames = array();
|
||||||
|
@ -115,8 +117,8 @@ class tasklist_kolab_driver extends tasklist_driver
|
||||||
'editable' => !$readonly,
|
'editable' => !$readonly,
|
||||||
'active' => $folder->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
|
'active' => $folder->is_subscribed(kolab_storage::SERVERSIDE_SUBSCRIPTION),
|
||||||
'parentfolder' => $path_imap,
|
'parentfolder' => $path_imap,
|
||||||
'default' => $utf7name == $default_folder,
|
'default' => $folder->default,
|
||||||
'class_name' => trim($folder->get_namespace() . ($utf7name == $default_folder ? ' default' : '')),
|
'class_name' => trim($folder->get_namespace() . ($folder->default ? ' default' : '')),
|
||||||
);
|
);
|
||||||
$this->lists[$tasklist['id']] = $tasklist;
|
$this->lists[$tasklist['id']] = $tasklist;
|
||||||
$this->folders[$tasklist['id']] = $folder;
|
$this->folders[$tasklist['id']] = $folder;
|
||||||
|
|
Loading…
Add table
Reference in a new issue