| | |
| | | $OUTPUT->set_env('search_mods', $search_mods); |
| | | $OUTPUT->set_env('address_sources', $js_list); |
| | | $OUTPUT->set_env('writable_source', $writeable); |
| | | $OUTPUT->set_env('compose_extwin', $RCMAIL->config->get('compose_extwin',false)); |
| | | |
| | | $OUTPUT->set_pagetitle($RCMAIL->gettext('addressbook')); |
| | | $_SESSION['addressbooks_count'] = $count; |
| | |
| | | // register UI objects |
| | | $OUTPUT->add_handlers(array( |
| | | 'directorylist' => 'rcmail_directory_list', |
| | | // 'groupslist' => 'rcmail_contact_groups', |
| | | 'savedsearchlist' => 'rcmail_savedsearch_list', |
| | | 'addresslist' => 'rcmail_contacts_list', |
| | | 'addresslisttitle' => 'rcmail_contacts_list_title', |
| | | 'addressframe' => 'rcmail_contact_frame', |
| | |
| | | $out .= '</li>'; |
| | | } |
| | | |
| | | $OUTPUT->set_env('contactgroups', $jsdata); |
| | | $OUTPUT->set_env('collapsed_abooks', (string)$RCMAIL->config->get('collapsed_abooks','')); |
| | | $OUTPUT->add_gui_object('folderlist', $attrib['id']); |
| | | $OUTPUT->include_script('treelist.js'); |
| | | |
| | | // add some labels to client |
| | | $OUTPUT->add_label('deletegroupconfirm', 'groupdeleting', 'addingmember', 'removingmember', |
| | | 'newgroup', 'grouprename', 'searchsave', 'namex', 'save' |
| | | ); |
| | | |
| | | return html::tag('ul', $attrib, $out, html::$common_attrib); |
| | | } |
| | | |
| | | |
| | | function rcmail_savedsearch_list($attrib) |
| | | { |
| | | global $RCMAIL, $OUTPUT; |
| | | |
| | | if (!$attrib['id']) |
| | | $attrib['id'] = 'rcmsavedsearchlist'; |
| | | |
| | | $out = ''; |
| | | $line_templ = html::tag('li', array( |
| | | 'id' => 'rcmli%s', 'class' => '%s'), |
| | | html::a(array('href' => '#', 'rel' => 'S%s', |
| | |
| | | |
| | | // Saved searches |
| | | $sources = $RCMAIL->user->list_searches(rcube_user::SEARCH_ADDRESSBOOK); |
| | | foreach ($sources as $j => $source) { |
| | | $id = $source['id']; |
| | | foreach ($sources as $source) { |
| | | $id = $source['id']; |
| | | $js_id = rcube::JQ($id); |
| | | |
| | | // set class name(s) |
| | | $class_name = 'contactsearch'; |
| | | if ($current === $id) |
| | | $class_name .= ' selected'; |
| | | if ($source['class_name']) |
| | | $class_name .= ' ' . $source['class_name']; |
| | | $classes = array('contactsearch'); |
| | | if (!empty($source['class_name'])) |
| | | $classes[] = $source['class_name']; |
| | | |
| | | $out .= sprintf($line_templ, |
| | | rcube_utils::html_identifier('S'.$id, true), |
| | | $class_name, |
| | | join(' ', $classes), |
| | | $id, |
| | | $js_id, (!empty($source['name']) ? rcube::Q($source['name']) : rcube::Q($id))); |
| | | $js_id, (!empty($source['name']) ? rcube::Q($source['name']) : rcube::Q($id)) |
| | | ); |
| | | } |
| | | |
| | | $OUTPUT->set_env('contactgroups', $jsdata); |
| | | $OUTPUT->set_env('collapsed_abooks', (string)$RCMAIL->config->get('collapsed_abooks','')); |
| | | $OUTPUT->add_gui_object('folderlist', $attrib['id']); |
| | | $OUTPUT->include_script('treelist.js'); |
| | | |
| | | // add some labels to client |
| | | $OUTPUT->add_label('deletegroupconfirm', 'groupdeleting', 'addingmember', 'removingmember'); |
| | | $OUTPUT->add_gui_object('savedsearchlist', $attrib['id']); |
| | | |
| | | return html::tag('ul', $attrib, $out, html::$common_attrib); |
| | | } |
| | |
| | | if ($subtypes[$i]) |
| | | $subtype = $subtypes[$i]; |
| | | |
| | | $colprop['id'] = 'ff_' . $col . intval($coltypes[$field]['count']); |
| | | |
| | | // render composite field |
| | | if ($colprop['type'] == 'composite') { |
| | | $composite = array(); $j = 0; |
| | |
| | | // display row with label |
| | | if ($label) { |
| | | $rows .= html::div('row', |
| | | html::div('contactfieldlabel label', $select_subtype ? $select_subtype->show($subtype) : rcube::Q($label)) . |
| | | html::div('contactfieldlabel label', $select_subtype ? $select_subtype->show($subtype) : html::label($colprop['id'], rcube::Q($label))) . |
| | | html::div('contactfieldcontent '.$colprop['type'], $val)); |
| | | } |
| | | else // row without label |
| | |
| | | if ($result = $CONTACTS->get_result()) |
| | | $record = $result->first(); |
| | | |
| | | $photo_img = $attrib['placeholder'] ? $RCMAIL->output->get_skin_file($attrib['placeholder']) : 'program/resources/blank.gif'; |
| | | $photo_img = $attrib['placeholder'] ? $RCMAIL->output->abs_url($attrib['placeholder'], true) : 'program/resources/blank.gif'; |
| | | if ($record['_type'] == 'group' && $attrib['placeholdergroup']) |
| | | $photo_img = $RCMAIL->output->get_skin_file($attrib['placeholdergroup']); |
| | | $photo_img = $RCMAIL->output->abs_url($attrib['placeholdergroup'], true); |
| | | |
| | | $RCMAIL->output->set_env('photo_placeholder', $photo_img); |
| | | $RCMAIL->output->set_env('photo_placeholder', $RCMAIL->output->asset_url($photo_img)); |
| | | |
| | | unset($attrib['placeholder']); |
| | | |
| | | $plugin = $RCMAIL->plugins->exec_hook('contact_photo', array('record' => $record, 'data' => $record['photo'])); |
| | |
| | | } |
| | | $photo_img = $RCMAIL->url($url); |
| | | } |
| | | else |
| | | else { |
| | | $ff_value = '-del-'; // will disable delete-photo action |
| | | } |
| | | |
| | | $img = html::img(array('src' => $photo_img, 'border' => 1, 'alt' => '')); |
| | | $content = html::div($attrib, $img); |
| | | $content = html::div($attrib, html::img(array( |
| | | 'src' => $photo_img, |
| | | 'alt' => $RCMAIL->gettext('contactphoto'), |
| | | 'onerror' => 'this.src = rcmail.env.photo_placeholder', |
| | | ))); |
| | | |
| | | if ($CONTACT_COLTYPES['photo'] && ($RCMAIL->action == 'edit' || $RCMAIL->action == 'add')) { |
| | | $RCMAIL->output->add_gui_object('contactphoto', $attrib['id']); |
| | |
| | | * |
| | | * @return array List of contact IDs per-source |
| | | */ |
| | | function rcmail_get_cids($filter = null) |
| | | function rcmail_get_cids($filter = null, $request_type = rcube_utils::INPUT_GPC) |
| | | { |
| | | // contact ID (or comma-separated list of IDs) is provided in two |
| | | // forms. If _source is an empty string then the ID is a string |
| | | // containing contact ID and source name in form: <ID>-<SOURCE> |
| | | |
| | | $cid = rcube_utils::get_input_value('_cid', rcube_utils::INPUT_GPC); |
| | | $cid = rcube_utils::get_input_value('_cid', $request_type); |
| | | $source = (string) rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); |
| | | |
| | | if (is_array($cid)) { |