/** * @param FORM_RENDERER $renderer * @access private */ protected function _draw_controls($renderer) { $renderer->start(); $options = new FORM_TEXT_CONTROL_OPTIONS(); $options->on_change_script = 'on_title_changed (this)'; $renderer->draw_text_line_row('title', $options); if ($this->visible('location')) { $props = $renderer->make_list_properties(); $props->show_descriptions = true; $props->add_item('Local', Album_location_type_local, 'Store pictures on this server under URL Root; uploading is supported.'); $props->add_item('Remote', Album_location_type_remote, 'Retrieve pictures from another server at URL Root; uploading is <b>not</b> supported.'); $renderer->draw_radio_group_row('location', $props); } $options->on_change_script = 'on_url_root_changed (this)'; $renderer->draw_text_line_row('url_root', $options); $item = $renderer->make_check_properties(); $item->on_click_script = 'on_url_root_enabled_changed (this)'; $renderer->draw_check_box_row('url_root_enabled', $item); $options->on_change_script = null; $renderer->start_block('Dates'); $props = $renderer->make_list_properties(); $props->on_click_script = 'on_day_mode_changed (this)'; $props->show_descriptions = true; $props->add_item('One day', Album_is_single_day, 'For parties or sporting events.'); $props->add_item('Several days', Album_is_span, 'For trips; both first and last day are fixed.'); $props->add_item('Journal', Album_is_journal, 'First day is fixed; last day is always today\'s date.'); $props->add_item('Free-form', Album_is_adjusted, 'Calculated automatically from pictures and journals.'); $renderer->start_row(''); echo $renderer->radio_group_as_html('date_style', $props); $renderer->finish_row(); $renderer->draw_date_row('first_day'); $renderer->draw_date_row('last_day'); $renderer->draw_error_row('dates'); $renderer->finish_block(); $renderer->start_block('Settings'); $props = $renderer->make_list_properties(); $props->show_descriptions = true; $props->add_item('is_visible', 1); $props->add_item('show_times', 1); $props->add_item('is_organizational', 1); $item = $renderer->make_check_properties(); $item->title = 'constrain_picture_size'; $options = new FORM_TEXT_CONTROL_OPTIONS(); $options->css_class = 'tiny'; $picture_width_control = $renderer->text_line_as_HTML('max_picture_width', $options); $picture_height_control = $renderer->text_line_as_HTML('max_picture_height', $options); $item->text = ' ' . $picture_width_control . ' x ' . $picture_height_control; $item->on_click_script = 'on_pic_size_constraint_changed (this)'; $item->css_class = 'text-line'; $props->add_item_object($item); $renderer->draw_check_boxes_row('', $props); $renderer->start_row('Temperature'); $props = $renderer->make_list_properties(); $props->items_per_row = 2; $props->add_item('Celsius', 1); $props->add_item('Fahrenheit', 0); echo $renderer->radio_group_as_HTML('show_celsius', $props); $renderer->finish_row(); $renderer->finish_block(); $this->_draw_key_photo($renderer); $renderer->draw_text_box_row('summary'); $renderer->draw_text_box_row('description'); $renderer->draw_submit_button_row(); $this->_draw_history_item_controls($renderer); $renderer->finish(); }
/** * @param FORM_RENDERER $renderer * @access private */ protected function _draw_controls($renderer) { ?> <div class="columns text-flow"> <div class="left-sidebar"> <?php $folder_query = $this->login->folder_query(); /** @var PROJECT[] $folders */ $folders = $folder_query->tree(); include_once 'projects/gui/project_tree_node_info.php'; $tree_node_info = new PROJECT_TREE_NODE_INFO($this->app); $tree_node_info->page_link = $this->env->url(Url_part_file_name); $tree_node_info->set_visible_node($this->_folder); $tree_node_info->set_selected_node($this->_folder); $tree_node_info->set_defined_nodes_visible($folders); /* Make a copy (not a reference). */ $tree = $this->app->make_tree_renderer(); $tree->node_info = $tree_node_info; $tree->display($folders); ?> </div> <div> <?php $renderer->start(); $renderer->draw_text_line_row('title'); $renderer->draw_icon_browser_row('icon_url'); $renderer->draw_check_box_row('is_visible'); $item = $renderer->make_check_properties(); $item->on_click_script = 'on_organizational_changed (this)'; $renderer->draw_check_box_row('is_organizational', $item); if (!$this->object_exists() || !$this->_object->is_root()) { if (!$this->object_exists()) { $renderer->draw_text_line_row('branch_title'); } elseif (!$this->_object->is_root()) { /** @var PROJECT_BRANCH_QUERY $branch_query */ $branch_query = $this->_object->branch_query(); /** @var BRANCH[] $branches */ $branches = $branch_query->objects(); $props = $renderer->make_list_properties(); $props->css_class = 'small'; foreach ($branches as $branch) { $props->add_item($branch->title_as_plain_text(), $branch->id); } $renderer->draw_drop_down_row('trunk_id', $props); } } // if this folder has a parent, then show the inheritance options /** @var PROJECT $parent */ $parent = null; if (!$this->object_exists()) { $parent = $this->_folder; } else { $parent = $this->_folder->parent_folder(); } if ($parent) { $renderer->start_block('Options'); /** @var FOLDER $options_folder */ $options_folder = $folder_query->object_at_id($parent->options_id); $props = $renderer->make_list_properties(); $props->css_class = 'medium'; $props->on_click_script = 'on_inherit_changed (this)'; if ($this->login->is_allowed(Privilege_set_folder, Privilege_modify, $options_folder)) { $t = $options_folder->title_formatter(); $t->set_name($this->env->url(Url_part_file_name)); $title = 'Inherit options from ' . $options_folder->title_as_link($t); } else { $title = 'Inherit options from ' . $options_folder->title_as_html(); } $props->add_item($title, 0); $props->add_item('Define options below.', 1); echo $renderer->radio_group_as_HTML('defines_options', $props); } else { $renderer->start_block(''); $renderer->draw_hidden('defines_options'); } $props = $renderer->make_list_properties(); $props->css_class = 'small'; $props->add_item('[No warning]', 0); $props->add_item('1 day', 86400); $props->add_item('2 days', 2 * 86400); $props->add_item('3 days', 3 * 86400); $props->add_item('5 days', 5 * 86400); $props->add_item('1 week', 7 * 86400); $props->add_item('2 weeks', 14 * 86400); $props->add_item('1 month', 30 * 86400); $renderer->draw_drop_down_row('seconds_until_deadline', $props); /* Prepare the option and group lists for assignees and reporters. */ $props = $this->_make_user_list_properties_for($renderer, 'assignee_group_id'); $renderer->draw_radio_group_row('assignee_group_type', $props); $props = $this->_make_user_list_properties_for($renderer, 'reporter_group_id'); $renderer->draw_radio_group_row('reporter_group_type', $props); if (isset($this->_user_list_error_message)) { $renderer->draw_caution_row(' ', $this->_user_list_error_message); } $renderer->finish_block(); $renderer->draw_text_box_row('summary'); $renderer->draw_text_box_row('description'); $renderer->draw_submit_button_row(); $this->_draw_history_item_controls($renderer); $renderer->finish(); ?> </div> </div> <?php }
/** * @param FORM_RENDERER $renderer * @param PERMISSIONS_FORMATTER $formatter * @access private * @abstract */ protected function _draw_permission_controls($renderer, $formatter) { $renderer->draw_text_row('', 'The settings on the left can override content permissions, either <em>Granting</em> or <em>Denying</em> them. <em>Default</em> uses the permissions defined in the folder.'); if ($this->visible('use_defaults')) { $props = $renderer->make_list_properties(); $props->on_click_script = 'update_controls ()'; if ($this->_object->is_anonymous()) { $props->add_item('Use default permissions for anonymous users.', 1); } else { $props->add_item('Use default permissions for registered users.', 1); } $props->add_item('Use the permissions below.', 0); $renderer->start_row(); echo $renderer->radio_group_as_HTML('use_defaults', $props); $renderer->finish_row(); } $this->_draw_buttons($renderer); $props = $renderer->make_list_properties(); $props->add_item('Default', Privilege_controlled_by_content); $props->add_item('Granted', Privilege_always_granted); $props->add_item('Denied', Privilege_always_denied); $props->css_class = 'tiny-small'; ?> <div class="columns text-flow"> <div> <?php foreach ($this->content_groups as $group) { $renderer->start_block($group->title); foreach ($group->maps as $map) { $this->_draw_tri_permission($map, $formatter, $renderer, $props); } $renderer->finish_block(); } ?> </div> <div> <?php foreach ($this->global_groups as $group) { $renderer->start_block($group->title); foreach ($group->maps as $map) { $this->_draw_permission($map, $formatter, $renderer, $props); } $renderer->finish_block(); } ?> </div> </div> <?php $this->_draw_buttons($renderer); }