/** * @param FORM_RENDERER $renderer * @access private */ protected function _draw_controls($renderer) { $renderer->labels_css_class = 'top'; if ($this->object_exists()) { $selected_folder_ids = $this->_object->subscribed_ids_for(Subscribe_folder); } $user = $this->_object->user(); // Try to get the user associated with this subscriber if (!isset($user)) { $user = $this->app->anon_user(); } $folder_query = $user->folder_query(); $folders = $folder_query->tree($this->app->root_folder_id); $selected_folders = $folder_query->objects_at_ids($selected_folder_ids); /* Make a copy (not a reference). */ $tree = $this->app->make_tree_renderer(); include_once 'webcore/gui/folder_tree_node_info.php'; $tree_node_info = new FOLDER_TREE_NODE_INFO($this->app); $tree_node_info->nodes_are_links = false; include_once 'webcore/gui/selector_tree_decorator.php'; $decorator = new MULTI_SELECTOR_TREE_DECORATOR($tree, $selected_folder_ids); $decorator->control_name = 'ids'; $decorator->form_name = $this->name; $decorator->auto_toggle_children = true; $tree->node_info = $tree_node_info; $tree->decorator = $decorator; $tree->set_visible_nodes($selected_folders); $ctrl_name = $this->js_name('ids'); $renderer->start(); if (sizeof($folders) > 0) { $buttons[] = $renderer->javascript_button_as_HTML('Select All', "select_all ({$ctrl_name})", '{icons}buttons/select'); $buttons[] = $renderer->javascript_button_as_HTML('Clear All', "select_none ({$ctrl_name})", '{icons}buttons/close'); $renderer->start_row(); $renderer->draw_buttons($buttons); $renderer->finish_row(); $renderer->draw_error_row('ids'); } $renderer->start_row(); $tree->display($folders); $renderer->finish_row(); $renderer->draw_submit_button_row(); $renderer->finish(); }