/** * @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 * @access private */ protected function _draw_hidden_controls($renderer) { $sub_field = $this->field_at($this->form_based_field_name('submitted')); $old_sub_value = $sub_field->value(); $sub_field->set_value(1); /* Update the maximum number of bytes allowed for upload. */ if ($this->contains_uploads()) { $this->set_value(Form_max_file_size_field_name, $this->max_upload_file_size()); } /* Always reset the debug to be read from anywhere in the request, not just the form. */ $this->set_value('debug', $this->env->debugging_flags); foreach ($this->_fields as $field) { if (!$field->visible) { $renderer->draw_hidden($field->id); } } $sub_field->set_value($old_sub_value); }
/** * @param FORM_RENDERER $renderer * @access private */ protected function _draw_controls($renderer) { /** @var UPLOADED_FILE_SET $file_set */ $file_set = $this->value_for('upload_file'); /** @var ALBUM $folder */ $folder = $this->_folder; $upload_allowed = $folder->uploads_allowed(); $upload_found = isset($file_set) && $file_set->is_valid(); $is_uploading = $this->value_for('use_upload'); $this->set_enabled('file_name', !$is_uploading); $this->set_enabled('overwrite', $is_uploading); $this->set_enabled('upload_file', $is_uploading); if (!$upload_allowed || $upload_found) { $renderer->draw_hidden('use_upload'); } if ($upload_found) { $renderer->draw_hidden('overwrite'); } $renderer->start(); $renderer->draw_text_line_row('title'); if (!$this->object_exists()) { $renderer->start_block('Day'); $props = $renderer->make_list_properties(); $props->on_click_script = 'on_date_changed (this)'; if (isset($this->_exif_date)) { $caption = 'Use <span class="field">' . $this->_exif_date->format() . '</span> (snapshot date)'; } else { $caption = 'Use date stored by a digital camera'; } $props->add_item($caption, 1); $props->add_item('Use the date below', 0); $renderer->start_row(); echo $renderer->radio_group_as_html('read_exif', $props); $renderer->finish_row(); $renderer->draw_date_row('day'); $renderer->draw_error_row('read_exif'); $renderer->draw_error_row('day'); $renderer->finish_block(); } else { $renderer->draw_date_row('day'); } $renderer->draw_text_box_row('description', 'short-medium'); if ($upload_allowed) { if (!$upload_found) { $options = new FORM_TEXT_CONTROL_OPTIONS(); $renderer->start_block('Picture'); if ($this->object_exists()) { /** @var PICTURE $pic */ $pic = $this->_object; echo '<img class="pullquote right align-right" src="' . $pic->full_thumbnail_name() . '" alt="Picture">'; } $props = $renderer->make_list_properties(); $props->on_click_script = 'file_option_changed (this)'; $props->add_item($this->app->resolve_icon_as_html('{icons}buttons/upload', Sixteen_px, 'Upload') . ' Upload the picture below', 1); $renderer->start_row(); echo $renderer->radio_group_as_html('use_upload', $props); $renderer->finish_row(); $renderer->start_row(); $options->on_change_script = 'upload_file_changed (this)'; echo $renderer->file_as_html('upload_file', $options); echo $renderer->check_box_as_html('overwrite'); $renderer->finish_row(); $renderer->draw_error_row('upload_file'); $props->clear_items(); $props->add_item('Show the picture from the URL below', 0); $renderer->start_row(); echo $renderer->radio_group_as_html('use_upload', $props); $renderer->finish_row(); $renderer->start_row(); $options->on_change_script = 'file_name_changed (this)'; echo $renderer->text_line_as_html('file_name', $options); $renderer->finish_row(); $renderer->draw_error_row('file_name'); $this->_draw_thumbnail_options($renderer, ''); $renderer->finish_block(); } else { $renderer->draw_file_row('upload_file'); $this->_draw_thumbnail_options($renderer, ' '); } } else { $renderer->start_row(); if ($this->object_exists()) { /** @var PICTURE $pic */ $pic = $this->_object; echo '<img class="pullquote right align-right" src="' . $pic->full_thumbnail_name() . '" alt="Picture">'; } $renderer->finish_row(); $renderer->draw_text_line_row('file_name'); $this->_draw_thumbnail_options($renderer, ' '); } $renderer->draw_check_box_row('is_visible'); $renderer->draw_submit_button_row(); $this->_draw_history_item_controls($renderer); $renderer->finish(); }
/** * Store field values as hidden fields in the form. * @param FORM $form * @param FORM_RENDERER $renderer */ public function draw_fields_hidden($form, $renderer) { $renderer->draw_hidden($this->sort_name()); $renderer->draw_hidden($this->direction_name()); }
/** * Draw the selectors for branch properties. * If the branch or release is locked, the values should be displayed as read-only. * @param BRANCH $branch * @param FORM_RENDERER $renderer * @param boolean $visible Is this branch enabled for this project entry? * @param RELEASE $release Release in this branch (may be empty). * @access private */ protected function _draw_branch_info_controls($branch, $renderer, $visible, $release) { /* Get the list of statuses for this branch. */ $selected_status = $this->value_for("branch_{$branch->id}_status"); /** @var $display_options PROJECT_APPLICATION_DISPLAY_OPTIONS */ $display_options = $this->app->display_options; if ($this->cloning() || !$this->object_exists()) { $statuses = $display_options->job_statuses(); } else { $statuses = $display_options->job_statuses_for($selected_status); } if ($this->_branch_is_locked($branch, $release)) { if ($visible) { $renderer->draw_hidden("branch_{$branch->id}_status"); $renderer->draw_hidden("branch_{$branch->id}_priority"); $status = $statuses[$selected_status]; $renderer->draw_text_row('Status', $this->context->get_icon_with_text($status->icon, Sixteen_px, $status->title)); $renderer->draw_error_row("branch_{$branch->id}_status"); $priorities = $display_options->job_priorities(); $priority = $priorities[$this->value_for("branch_{$branch->id}_priority")]; $renderer->draw_text_row('Priority', $this->context->get_icon_with_text($priority->icon, Sixteen_px, $priority->title)); $renderer->draw_error_row("branch_{$branch->id}_priority"); } } else { // Draw statuses $props = $renderer->make_list_properties(); $props->css_class = 'medium'; foreach ($statuses as $status) { $props->add_item($status->title, $status->value); } $renderer->draw_drop_down_row("branch_{$branch->id}_status", $props); // Draw priorities $props = $renderer->make_list_properties(); $props->css_class = 'medium'; $priorities = $display_options->job_priorities(); foreach ($priorities as $priority) { $props->add_item($priority->title, $priority->value); } $renderer->draw_drop_down_row("branch_{$branch->id}_priority", $props); } // Draw inherited properties parent::_draw_branch_info_controls($branch, $renderer, $visible, $release); }
/** * Draw the selector for all branches. * @param FORM_RENDERER $renderer * @access private */ protected function _draw_branch_controls($renderer) { if (sizeof($this->branches)) { $renderer->start_block('Branches'); ?> <p class="description"> Assign this job to one or more of the following branches. </p> <?php $check_props = $renderer->make_check_properties(); foreach ($this->branches as $branch) { $style = ''; $visible = $this->value_for("branch_{$branch->id}_enabled"); if ($visible || !$branch->locked()) { if (!$visible) { $style = 'display: none'; } $locked = $branch->locked(); $release_id = $this->value_for("branch_{$branch->id}_release_id"); if ($release_id) { /** @var $release_query BRANCH_RELEASE_QUERY */ $release_query = $branch->release_query(); /** @var $release RELEASE */ $release = $release_query->object_at_id($release_id); $locked = $locked || $this->_branch_is_locked($branch, $release); } else { $release = null; } if ($locked) { $renderer->draw_hidden("branch_{$branch->id}_enabled"); $title = $branch->title_as_html(); if ($branch->locked()) { $title = $this->context->get_icon_with_text('{icons}indicators/locked', Sixteen_px, $title); } echo $title; } else { $check_props->on_click_script = "on_click_branch (this, '{$branch->id}')"; echo $renderer->check_box_as_HTML("branch_{$branch->id}_enabled", $check_props); } ?> <div id="branch_<?php echo $branch->id; ?> _panel" <?php if ($style) { echo 'style="' . $style . '"'; } ?> > <?php $renderer->start_block(''); $this->_draw_branch_info_controls($branch, $renderer, $visible, $release); $renderer->finish_block(); ?> </div> <?php } } $renderer->draw_error_row('main_branch_id'); $renderer->finish_block(); } }