- $no_override = array_flip($RCMAIL->config->get('dont_override', array()));
- $blocks = $attrib['parts'] ? preg_split('/[\s,;]+/', strip_quotes($attrib['parts'])) : array('general','mailbox','compose','mailview','folders','server');
-
- // add some labels to client
- $RCMAIL->output->add_label('nopagesizewarning');
-
- list($form_start, $form_end) = get_form_tags($attrib, 'save-prefs');
- unset($attrib['form']);
-
- $out = $form_start;
-
- foreach ($blocks as $part)
- $out .= rcmail_user_prefs_block($part, $no_override, $attrib);
-
- return $out . $form_end;
+ // add id to message list table if not specified
+ if (!strlen($attrib['id']))
+ $attrib['id'] = 'rcmsectionslist';
+
+ list($list, $cols) = rcmail_user_prefs();
+
+ // create XHTML table
+ $out = rcube_table_output($attrib, $list, $cols, 'id');
+
+ // set client env
+ $RCMAIL->output->add_gui_object('sectionslist', $attrib['id']);
+ $RCMAIL->output->include_script('list.js');
+
+ return $out;
+}
+
+
+function rcmail_identities_list($attrib)
+{
+ global $OUTPUT, $USER, $RCMAIL;
+
+ // add id to message list table if not specified
+ if (!strlen($attrib['id']))
+ $attrib['id'] = 'rcmIdentitiesList';
+
+ // get identities list and define 'mail' column
+ $list = $USER->list_identities();
+ foreach ($list as $idx => $row)
+ $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_idn_to_utf8($row['email']) .'>');
+
+ // get all identites from DB and define list of cols to be displayed
+ $plugin = $RCMAIL->plugins->exec_hook('identities_list', array(
+ 'list' => $list,
+ 'cols' => array('mail')));
+
+ // @TODO: use <UL> instead of <TABLE> for identities list
+ // create XHTML table
+ $out = rcube_table_output($attrib, $plugin['list'], $plugin['cols'], 'identity_id');
+
+ // set client env
+ $OUTPUT->add_gui_object('identitieslist', $attrib['id']);
+
+ return $out;
+}
+
+
+// similar function as in /steps/addressbook/edit.inc
+function get_form_tags($attrib, $action, $id = null, $hidden = null)
+{
+ global $EDIT_FORM, $RCMAIL;
+
+ $form_start = $form_end = '';
+
+ if (empty($EDIT_FORM)) {
+ $request_key = $action . (isset($id) ? '.'.$id : '');
+ $form_start = $RCMAIL->output->request_form(array(
+ 'name' => 'form',
+ 'method' => 'post',
+ 'task' => $RCMAIL->task,
+ 'action' => $action,
+ 'request' => $request_key,
+ 'noclose' => true
+ ) + $attrib);
+
+ if (is_array($hidden)) {
+ $hiddenfields = new html_hiddenfield($hidden);
+ $form_start .= $hiddenfields->show();
+ }
+
+ $form_end = !strlen($attrib['form']) ? '</form>' : '';
+
+ $EDIT_FORM = !empty($attrib['form']) ? $attrib['form'] : 'form';
+ $RCMAIL->output->add_gui_object('editform', $EDIT_FORM);
+ }
+
+ return array($form_start, $form_end);