/**
  * Draw a confirmation message for this action.
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_message($renderer)
 {
     $renderer->draw_text_row('', 'Are you sure you want to publish ' . $this->object_list->description() . '?');
     $buttons[] = $renderer->button_as_HTML('No', "view_explorer.php?id={$this->_folder->id}");
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
 }
示例#2
0
 /**
  * Draw captcha controls to verify human input.
  * Captcha handling is provided by default, but a form must determine on its
  * own where the controls appear.
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_captcha_controls($renderer)
 {
     if (isset($this->captcha)) {
         $renderer->draw_text_row(' ', $this->captcha->as_html());
         $renderer->draw_text_line_row('verification_answer');
     }
 }
 /**
  * Draw task option controls.
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_options($renderer)
 {
     if (!$this->_object->info->exists()) {
         $warning_message = 'Since there is no version in the database, the migrator for <span class="field">' . $this->_object->info->database_version . '</span> will be used and "Ignore Version in Database" is required.';
         $renderer->draw_text_row($this->context->resolve_icon_as_html('{icons}indicators/warning', Thirty_two_px, 'Warning'), $warning_message, 'caution');
     }
     parent::_draw_options($renderer);
 }
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->labels_css_class = 'top';
     /** @var FOLDER $folder */
     $folder = $this->_object;
     if (!$folder->defines_security()) {
         $renderer->start();
         $renderer->draw_text_row('', 'Are you sure you want to create new permissions for ' . $folder->title_as_link() . '?');
         $parent_folder = $folder->parent_folder();
         $permissions_folder = $parent_folder->permissions_folder();
         $props = $renderer->make_list_properties();
         $props->add_item('Do not create any default permissions*', Security_copy_none);
         $props->add_item('Copy current permissions from ' . $permissions_folder->title_as_link(), Security_copy_current);
         $props->add_item('Grant all permissions for user ' . $this->login->title_as_link(), Security_create_admin);
         $renderer->draw_radio_group_row('copy_mode', $props);
         $buttons[] = $renderer->button_as_HTML('No', 'view_folder_permissions.php?id=' . $this->_object->id);
         $buttons[] = $renderer->submit_button_as_HTML();
         $renderer->draw_buttons_in_row($buttons);
         $permissions = $this->login->permissions();
         if ($permissions->value_for(Privilege_set_folder, Privilege_view) != Privilege_always_granted) {
             $renderer->draw_text_row('', $this->app->get_message('*In this case, you <span class="field">will not</span> be able to see this folder.', 'warning'), 'notes');
         } else {
             $renderer->draw_text_row('', '*Your user will still be allowed to see this folder.', 'notes');
         }
         $renderer->finish();
     } else {
         $renderer->start();
         $renderer->draw_text_row('', 'Are you sure you want to remove permissions for ' . $folder->title_as_link() . '?*');
         $buttons[] = $renderer->button_as_HTML('No', 'view_folder_permissions.php?id=' . $folder->id);
         $buttons[] = $renderer->submit_button_as_HTML();
         $renderer->draw_buttons_in_row($buttons);
         $renderer->draw_text_row('', '*Doing so will revert all permissions to those used by the parent folder.', 'notes');
         $renderer->finish();
     }
 }
 /**
  * Draw a confirmation message for this action.
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_message($renderer)
 {
     $renderer->start_row();
     $renderer->draw_text_row('', 'Are you sure you want to purge ' . $this->object_list->description() . '?*');
     if ($this->visible('remove_resources')) {
         $renderer->start_row(' ');
         echo $renderer->check_box_as_html('remove_resources');
         $renderer->finish_row();
     }
     $renderer->draw_text_row('', '*Purging an object permanently removes it and all contained content (entries, comments, etc.) from the database.', 'notes');
     $renderer->finish_row();
     $buttons[] = $renderer->button_as_HTML('No', "view_explorer.php?id={$this->_folder->id}");
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
 }
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->labels_css_class = 'top';
     $renderer->start();
     if ($this->show_object_as_link) {
         $obj_title = $this->_object->title_as_link();
     } else {
         $obj_title = $this->_object->title_as_html();
     }
     $renderer->draw_text_row('', 'Are you sure you want to delete ' . $obj_title . '?');
     if ($this->visible('purge')) {
         $props = $renderer->make_list_properties();
         $props->show_descriptions = true;
         $check_props = $renderer->make_check_properties('purge');
         $check_props->on_click_script = 'on_click_purge (this)';
         $props->add_item_object($check_props);
         $props->add_item('remove_resources', 0);
         $renderer->draw_check_boxes_row('', $props);
     }
     $buttons[] = $renderer->button_as_HTML('No', $this->_object->home_page());
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
     $renderer->finish();
 }
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->start();
     $renderer->draw_text_row('', 'Are you sure you want to purge ' . $this->_object->title_as_link() . '?');
     $props = $renderer->make_list_properties();
     $props->show_descriptions = true;
     $props->add_item('Publish branch only', History_item_silent, 'Generate a single notification indicating that the branch was purged.');
     $props->add_item('Publish all', History_item_needs_send, 'Generate individual notifications for affected jobs and changes.');
     $renderer->draw_radio_group_row('sub_history_item_publication_state', $props);
     $folder = $this->_object->parent_folder();
     $component_query = $folder->component_query();
     $other_comps = $component_query->objects_at_ids($this->_object->id, true);
     $props = $renderer->make_list_properties();
     $props->add_item('[None]', 0);
     foreach ($other_comps as $comp) {
         $props->add_item($comp->title_as_plain_text(), $comp->id);
     }
     $renderer->draw_drop_down_row('replacement_component_id', $props);
     $buttons[] = $renderer->button_as_HTML('No', $this->_object->home_page());
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
     $renderer->draw_text_row('', '*Purging an branch removes all connections to it and permanently removes it from the database.', 'notes');
     $renderer->finish();
 }
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->start();
     $renderer->draw_text_row('', 'Are you sure you want to ship ' . $this->_object->title_as_link() . '?');
     $props = $renderer->make_list_properties();
     $props->show_descriptions = true;
     $props->add_item($this->app->get_icon_with_text('{app_icons}statuses/working', Sixteen_px, 'Release to testing'), Testing, 'Feature-complete internal release.');
     $props->add_item($this->app->get_icon_with_text('{icons}buttons/ship', Sixteen_px, 'Ship'), Shipped, 'Jobs and changes can still be added and removed.');
     $props->add_item($this->app->get_icon_with_text('{icons}indicators/locked', Sixteen_px, 'Lock'), Locked, 'Changes and jobs cannot be added or removed.');
     $renderer->draw_radio_group_row('state', $props);
     $props = $renderer->make_list_properties();
     $props->show_descriptions = true;
     $props->add_item('Publish release only', History_item_silent, 'Generate a single notification indicating that the release has shipped.');
     $props->add_item('Publish all', History_item_needs_send, 'Generate individual notifications for affected jobs and changes.');
     $renderer->draw_radio_group_row('sub_history_item_publication_state', $props);
     $buttons[] = $renderer->button_as_HTML('No', $this->_object->home_page());
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
     $renderer->finish();
 }
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->start();
     $renderer->draw_text_row('', 'Are you sure you want to purge ' . $this->_object->title_as_link() . '?');
     $props = $renderer->make_list_properties();
     $props->show_descriptions = true;
     $props->add_item('Publish branch only', History_item_silent, 'Generate a single notification indicating that the release was purged.');
     $props->add_item('Publish all', History_item_needs_send, 'Generate individual notifications for affected jobs and changes.');
     $renderer->draw_radio_group_row('sub_history_item_publication_state', $props);
     $buttons[] = $renderer->button_as_HTML('No', $this->_object->home_page());
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
     $renderer->draw_text_row('', '*Purging a release removes all connections to it and permanently removes it from the database.', 'info-box-bottom');
     $renderer->finish();
 }
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $query = $this->_folder->subscriber_query();
     $renderer->labels_css_class = 'top';
     $renderer->start();
     $folder_type_info = $this->app->type_info_for('FOLDER');
     $renderer->draw_text_row('', 'The following emails will be notified when changes are made to this ' . $folder_type_info->singular_title . '.');
     $class_name = $this->app->final_class_name('SUBSCRIBER_GRID', 'webcore/gui/subscriber_grid.php');
     /** @var $grid SUBSCRIBER_GRID */
     $grid = new $class_name($this->app, $this);
     $num_rows = max($query->size(), 1);
     $grid->set_page_size($num_rows);
     $grid->set_query($query);
     $renderer->start_row();
     $grid->display();
     $renderer->finish_row();
     if ($query->size() > 0) {
         $buttons[] = $renderer->submit_button_as_HTML();
         $renderer->draw_buttons_in_row($buttons);
     }
     $renderer->finish();
 }
 /**
  * Draw a confirmation message for this action.
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_message($renderer)
 {
     if ($this->copy) {
         $renderer->draw_text_row('', 'Are you sure you want to copy ' . $this->object_list->description() . '?');
     } else {
         $renderer->draw_text_row('', 'Are you sure you want to move ' . $this->object_list->description() . '?');
     }
     if ($this->object_list->has_folders() && $this->visible('maintain_permissions')) {
         $renderer->start_row();
         echo $renderer->check_box_as_html('maintain_permissions');
         $renderer->finish_row();
     }
     if ($this->object_list->has_entries() && $this->visible('copy_as_draft')) {
         $renderer->start_row();
         echo $renderer->check_box_as_html('copy_as_draft');
         $renderer->finish_row();
     }
     /* 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 EXPLORER_FOLDER_TREE_NODE_INFO($this->context);
     $tree_node_info->set_visible_node($this->_folder);
     $tree_node_info->set_selected_node($this->_folder);
     $tree_node_info->nodes_are_links = false;
     include_once 'webcore/gui/selector_tree_decorator.php';
     $decorator = new SELECTOR_TREE_DECORATOR($tree);
     $decorator->control_name = 'selected_folder_id';
     $tree->node_info = $tree_node_info;
     $tree->decorator = $decorator;
     $folder_query = $this->app->login->folder_query();
     $folders = $folder_query->tree();
     $renderer->start_row('Target');
     $tree->display($folders);
     $renderer->finish_row();
     $renderer->draw_error_row('selected_folder_id');
     $buttons[] = $renderer->button_as_HTML('No', "view_explorer.php?id={$this->_folder->id}");
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
 }
 /**
  * Store properties from form into object.
  * @param FORM $form
  * @param FORM_RENDERER $renderer
  */
 public function draw_fields($form, $renderer)
 {
     $props = $renderer->make_list_properties();
     $props->css_class = 'small';
     $props->add_item('Context or none', Search_user_context_none);
     $props->add_item('Context or login', Search_user_context_login);
     $props->add_item('Name(s) listed', Search_user_constant);
     $text_props = new FORM_TEXT_CONTROL_OPTIONS();
     $text_props->css_class = 'medium';
     $renderer->start_row('by', 'text-line');
     echo $renderer->drop_down_as_html($this->search_type_name(), $props);
     echo ' ';
     echo $renderer->text_line_as_html($this->base_name, $text_props);
     $renderer->finish_row();
     $renderer->draw_text_row(' ', 'Separate multiple names with a semi-colon.', 'notes');
     $renderer->draw_error_row($this->base_name, ' ');
 }
 /**
  * @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);
 }
示例#14
0
 /**
  * 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);
 }
示例#15
0
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     echo '<div class="log-in-form">';
     $renderer->start();
     $renderer->draw_text_line_row('name');
     $renderer->draw_password_row('password');
     $renderer->draw_check_box_row('remember');
     $renderer->draw_submit_button_row();
     $renderer->finish();
     if ($this->app->login->is_anonymous()) {
         $anon = $this->app->anon_user();
         if ($anon->is_allowed(Privilege_set_user, Privilege_create)) {
             $renderer->draw_text_row('', "Don't have an account? <a href=\"" . $this->app->page_names->user_create . "\">Register now...</a>", 'info-box-bottom');
         }
     }
     echo '</div>';
 }
 /**
  * Draw a confirmation message for this action.
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_message($renderer)
 {
     $renderer->draw_text_row('', 'To the left are the items you selected. Please select your printing options below and click <span class="reference">View printable</span> to see a preview. Then simply print the preview page from the browser window.');
     $this->_draw_print_options($renderer);
     $buttons[] = $renderer->button_as_HTML('Cancel', "view_explorer.php?id={$this->_folder->id}", '{icons}buttons/close');
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
 }
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->start();
     if ($this->object_exists()) {
         /** @var ATTACHMENT $attachment */
         $attachment = $this->_object;
         $img = $attachment->icon_as_html(Thirty_two_px);
         if ($attachment->is_image) {
             $thumb = $attachment->thumbnail_as_html();
             if ($thumb) {
                 $img = $thumb;
             }
         }
         $renderer->start_row('Current file');
         echo '<div class="info-box-top"><p>' . $this->_object->original_file_name . '</p>';
         echo '<p>' . $this->_object->mime_type . ' (' . file_size_as_text($this->_object->size) . ')</p></div>';
         echo '<p>' . $img . '</p>';
         $renderer->finish_row();
         $renderer->draw_text_line_row('title');
         $renderer->draw_check_box_row('is_visible');
         $renderer->draw_text_box_row('description');
         if ($this->login->is_allowed(Privilege_set_attachment, Privilege_upload, $this->_folder)) {
             $renderer->start_block('Options');
             $renderer->draw_text_row(' ', 'Replacing the file for the attachment is optional; you can regenerate the thumbnail from the current image by clicking "Save" below.', 'notes');
             $this->_draw_file_controls($renderer);
             $renderer->finish_block();
         }
     } else {
         if ($this->login->is_allowed(Privilege_set_attachment, Privilege_upload, $this->_folder)) {
             $this->_draw_file_controls($renderer);
         }
         $renderer->draw_text_line_row('title');
         $renderer->draw_check_box_row('is_visible');
         $renderer->draw_text_box_row('description');
     }
     $renderer->draw_submit_button_row();
     $this->_draw_history_item_controls($renderer);
     $renderer->finish();
 }
 /**
  * Draw the selector's 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)
 {
     if ($this->_branch_is_locked($branch, $release)) {
         $renderer->draw_hidden("branch_{$branch->id}_release_id");
         if (isset($release)) {
             $title = $release->title_as_link();
             if ($release->locked()) {
                 $title = $this->context->get_icon_with_text('{icons}indicators/locked', Sixteen_px, $title);
             }
             $renderer->draw_text_row('Release', $title);
         } else {
             $renderer->draw_text_row('Release', 'Not released');
         }
         $renderer->draw_error_row("branch_{$branch->id}_release_id");
     } else {
         $props = $renderer->make_list_properties();
         $props->css_class = 'medium';
         $props->add_item('[Next release]', 0);
         $release_query = $branch->pending_release_query(Release_not_locked);
         /** @var $releases RELEASE[] */
         $releases = $release_query->objects();
         $planned_release = null;
         if (sizeof($releases)) {
             foreach ($releases as $release) {
                 /** @var $nd DATE_TIME */
                 $nd = $release->time_next_deadline;
                 if ($nd->is_valid()) {
                     $df = $nd->formatter();
                     $df->set_type_and_clear_flags(Date_time_format_short_date);
                     $status = $nd->format($df);
                 } else {
                     $status = $release->state_as_string();
                 }
                 $title = $release->title_as_plain_text() . ' (' . $status . ')';
                 $props->add_item($title, $release->id);
                 if ($release->planned() && !isset($planned_release)) {
                     $planned_release = $release;
                 }
             }
         }
         if (!$this->value_for("branch_{$branch->id}_release_id")) {
             /* If the branch isn't selected or the object is new, then set the
                first planned release as the default instead of '[Next release]'. */
             if ((!$this->object_exists() || !$visible || $this->cloning()) && isset($planned_release)) {
                 $this->set_value("branch_{$branch->id}_release_id", $planned_release->id);
             }
         }
         $renderer->draw_drop_down_row("branch_{$branch->id}_release_id", $props);
     }
     $renderer->start_row(' ');
     $props = $renderer->make_list_properties();
     $props->add_item('Use for non-branch-specific lists.', $branch->id, '', $visible);
     echo $renderer->radio_group_as_html('main_branch_id', $props);
     $renderer->finish_row();
 }