コード例 #1
0
    /**
     * Draw a confirmation message for this action.
     * @param FORM_RENDERER $renderer
     * @access private
     */
    protected function _draw_message($renderer)
    {
        $renderer->start_row();
        ?>
<p>Are you sure you want to delete <?php 
        echo $this->object_list->description();
        ?>
?</p>
<?php 
        $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);
        ?>
    <p class="info-box-bottom">
      *Deleting an object marks it as 'invisible', but does not delete the object.
      The object can always be restored in its entirety until it is purged.
      If you purge the object, it and all contained content (entries, comments, etc.)
      is removed from the database.
    </p>
<?php 
    }
コード例 #2
0
    /**
     * @param FORM_RENDERER $renderer
     * @access private
     */
    protected function _draw_key_photo($renderer)
    {
        if ($this->object_exists()) {
            $main_picture_id = $this->value_for('main_picture_id');
            if ($main_picture_id) {
                /** @var $pic_query FOLDER_DRAFTABLE_ENTRY_QUERY */
                $pic_query = $this->_object->entry_query();
                $pic_query->set_type('picture');
                /** @var $main_picture PICTURE */
                $main_picture = $pic_query->object_at_id($main_picture_id);
            }
            $key_photo_field = $this->field_at('main_picture_id');
            $renderer->start_block($key_photo_field->caption);
            $renderer->start_row();
            if (isset($main_picture)) {
                $f = $main_picture->date->formatter();
                $f->clear_flags();
                $title = $main_picture->title_as_plain_text() . " (" . $this->_object->format_date($main_picture->date, $f) . ")";
                $image_source = $main_picture->full_thumbnail_name();
                ?>
        <p>
          <img src="<?php 
                echo $image_source;
                ?>
" alt="<?php 
                echo $title;
                ?>
">
        </p>
<?php 
            } else {
                ?>
        <p>[None]</p>
<?php 
            }
            ?>
      <p class="info-box-bottom">To change or set the key photo, select "Make Key Photo" from a picture's command menu.</p>
  <?php 
            $renderer->finish_row();
            $renderer->finish_block();
        }
    }
コード例 #3
0
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->labels_css_class = 'top';
     $size = 0;
     if ($this->object_exists()) {
         $ids = $this->_object->subscribed_ids_for($this->_sub_type, $this->_type);
         if (!empty($ids)) {
             $query = $this->_make_query();
             $query->restrict_to_ids($ids);
             $size = $query->size();
         }
     }
     if ($size) {
         $grid = $this->_make_grid();
         $grid->set_page_size($size);
         $grid->set_query($query);
         $grid->items_are_selectable = true;
         $grid->items_are_selected = true;
         $ctrl_name = $this->js_name('ids');
         $renderer->width = '';
         $renderer->start();
         if ($size > 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');
             $buttons[] = $renderer->submit_button_as_HTML();
             $renderer->draw_buttons_in_row($buttons);
             $renderer->draw_error_row('ids');
         }
         $renderer->start_row();
         $grid->display();
         $renderer->finish_row();
         if ($size > 0) {
             $renderer->draw_buttons_in_row($buttons);
         }
         $renderer->finish();
     } else {
         echo '<div class="error">You are not subscribed to any ' . strtolower($this->_type_info->plural_title) . '.</div>';
     }
 }
コード例 #4
0
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_attachment_selector($renderer)
 {
     $attachments = $this->_attachments();
     if (sizeof($attachments)) {
         $props = $renderer->make_list_properties();
         $props->css_class = 'small';
         foreach ($attachments as $att) {
             $props->add_item($att->title_as_plain_text(), $att->file_name);
         }
         $attachment_control = $renderer->drop_down_as_html('attachments', $props);
         $props = $renderer->make_list_properties();
         $props->add_item('None', 'none');
         $props->add_item('Left', 'left');
         $props->add_item('Left (alone)', 'left-column');
         $props->add_item('Center', 'center');
         $props->add_item('Right', 'right');
         $props->add_item('Right (alone)', 'right-column');
         $props->css_class = 'small';
         $alignments = $renderer->drop_down_as_html('alignments', $props);
         $props = $renderer->make_list_properties();
         $props->add_item('Thumbnail', 'thumbnail');
         $props->add_item('25%', '25');
         $props->add_item('50%', '50');
         $props->add_item('75%', '75');
         $props->add_item('Full-size', '100');
         $props->css_class = 'small';
         $sizes = $renderer->drop_down_as_html('sizes', $props);
         $props = $renderer->make_list_properties();
         $props->add_item('No text', 'none');
         $props->add_item('Caption', 'caption');
         $props->add_item('Tooltip', 'tooltip');
         $props->add_item('Both', 'both');
         $props->css_class = 'small';
         $caption_modes = $renderer->drop_down_as_html('caption_modes', $props);
         $renderer->start_row('Attachments');
         echo $attachment_control;
         echo $alignments;
         echo $sizes;
         echo $caption_modes;
         echo $renderer->javascript_button_as_html('Add', 'on_insert_attachment ()');
         $renderer->finish_row();
     }
 }
コード例 #5
0
 /**
  * @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();
 }
コード例 #6
0
 /**
  * Draw the controls for the form.
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->default_control_height = '75px';
     $renderer->start();
     $props = $renderer->make_list_properties();
     $props->add_item('bool1', 1);
     $props->add_item('bool2', 1);
     $props->items_per_row = 4;
     $renderer->draw_check_boxes_row('Options', $props);
     $renderer->start_row('Text', 'text-line');
     $text_props = new FORM_TEXT_CONTROL_OPTIONS();
     $text_props->css_class = 'small';
     echo $renderer->date_as_html('date');
     echo ' ';
     echo $renderer->text_line_as_html('name', $text_props);
     $renderer->finish_row();
     $renderer->draw_text_box_row('description');
     $renderer->start_block('');
     $props = $renderer->make_list_properties();
     $props->show_descriptions = true;
     $props->css_class = 'small';
     $props->add_item('Option One', 0, 'Description for option one.');
     $props->add_item('Option Two', 1, 'Description for option two.');
     $renderer->draw_radio_group_row('select', $props);
     $field = $this->field_at('select');
     $renderer->start_row('Menus', 'text-line');
     echo $renderer->drop_down_as_html('select', $props);
     echo ' ';
     $field->required = true;
     echo $renderer->drop_down_as_html('select', $props);
     $renderer->finish_row();
     $renderer->start_row('Lists');
     $field->required = false;
     echo $renderer->list_box_as_html('select', $props);
     echo ' ';
     $field->required = true;
     echo $renderer->list_box_as_html('select', $props);
     $renderer->finish_row();
     $renderer->finish_block();
     $renderer->draw_submit_button_row();
     $renderer->finish();
 }
コード例 #7
0
    /**
     * @param FORM_RENDERER $renderer
     * @access private
     */
    protected function _draw_controls($renderer)
    {
        $renderer->labels_css_class = 'top';
        $renderer->start();
        $renderer->start_row();
        ?>
  <p>Are you sure you want to delete <?php 
        if ($this->show_object_as_link) {
            echo $this->_object->title_as_link();
        } else {
            echo $this->_object->title_as_html();
        }
        ?>
?</p>
<?php 
        $renderer->finish_row();
        $buttons[] = $renderer->button_as_HTML('No', $this->_object->home_page());
        $buttons[] = $renderer->submit_button_as_HTML();
        $renderer->draw_buttons_in_row($buttons);
        $renderer->finish();
    }
コード例 #8
0
 /**
  * @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();
 }
コード例 #9
0
 /**
  * @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();
 }
コード例 #10
0
 /**
  * Allows descendents to draw options in the standard form.
  * Called from {@link _draw_controls()}.
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_options($renderer)
 {
     if ($this->visible('remove_resources')) {
         $renderer->start_row(' ');
         echo $renderer->check_box_as_html('remove_resources');
         $renderer->finish_row();
     }
 }
コード例 #11
0
 /**
  * @param FORM $form
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_date_fields($form, $renderer)
 {
     $renderer->draw_check_box_row('not_weather_type');
     $props = $renderer->make_list_properties();
     $props->items_per_row = 7;
     $i = 0;
     $icons = $this->app->display_options->weather_icons();
     foreach ($icons as $icon) {
         $i += 1;
         $props->add_item($icon->icon_as_html(Twenty_px), $i);
     }
     $renderer->draw_check_group_row('weather_type', $props);
     $renderer->start_row(' ');
     $options = new FORM_TEXT_CONTROL_OPTIONS();
     $options->css_class = 'tiny';
     echo 'Warmer than ' . $renderer->text_line_as_html('warmer_than', $options);
     echo '&deg; and cooler than ' . $renderer->text_line_as_html('colder_than', $options) . '&deg';
     $renderer->finish_row();
     parent::_draw_date_fields($form, $renderer);
 }
コード例 #12
0
 /**
  * @param FORM $form
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_folder_selector($form, $renderer)
 {
     $props = $renderer->make_list_properties();
     $props->add_item('Context or none', Search_user_context_none);
     $props->add_item('Selected folder(s)', Search_user_constant);
     $props->add_item('NOT selected folder(s)', Search_user_not_constant);
     /** @var $id_values int[] */
     $id_values = $form->value_for('folder_ids');
     $selected_folder_ids = array();
     if (sizeof($id_values)) {
         foreach ($id_values as $id) {
             if ($id) {
                 $selected_folder_ids[$id] = $id;
             }
         }
     }
     $visible = $form->value_for('folder_search_type') != Search_user_context_none || sizeof($selected_folder_ids) > 0;
     $layer = $renderer->start_layer_row('folders', 'Folder(s)', 'Toggle folder options.', $visible);
     $renderer->start_row(' ');
     echo $renderer->drop_down_as_html('folder_search_type', $props);
     echo ' ';
     $renderer->finish_row();
     $renderer->start_row(' ');
     $folder_query = $this->login->folder_query();
     $folder_query->clear_results();
     $folders = $folder_query->root_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);
     include_once 'webcore/gui/selector_tree_decorator.php';
     $decorator = new MULTI_SELECTOR_TREE_DECORATOR($tree, $selected_folder_ids);
     $decorator->control_name = 'folder_ids';
     $decorator->form_name = $form->name;
     $decorator->auto_toggle_children = true;
     $tree->node_info = $tree_node_info;
     $tree->decorator = $decorator;
     $tree->set_visible_nodes($selected_folders);
     $tree->display($folders);
     $renderer->finish_row();
     $renderer->finish_layer_row($layer);
 }
コード例 #13
0
 /**
  * Draw the permission with icon and title.
  * Adds the icon to the title. This is done when drawn so that the icon
  * calculation is not done if the form is only being submitted.
  * @param PRIVILEGE_MAP $map Information about the privilege.
  * @param PERMISSIONS_FORMATTER $formatter Use this to get formatting information.
  * @param FORM_RENDERER $renderer
  * @param FORM_LIST_PROPERTIES $props
  * @access private
  */
 protected function _draw_tri_permission($map, $formatter, $renderer, $props)
 {
     $id = $map->id();
     $field = $this->field_at($id);
     $field->caption = $this->context->get_icon_with_text($formatter->icon_url_for($map), Sixteen_px, $formatter->title_for($map));
     $renderer->start_row();
     echo $renderer->drop_down_as_HTML($id, $props);
     echo $renderer->label_as_html($id);
     $renderer->finish_row();
 }
コード例 #14
0
 /**
  * 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);
 }
コード例 #15
0
 /**
  * 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);
 }
コード例 #16
0
    /**
     * @param FORM_RENDERER $renderer
     * @access private
     */
    protected function _draw_controls($renderer)
    {
        $renderer->width = '65%';
        $renderer->start();
        $renderer->start_row();
        ?>
    <p>Are you sure you want to remove <?php 
        echo $this->_user->title_as_link();
        ?>
      from <?php 
        echo $this->_object->title_as_link();
        ?>
?</p>
<?php 
        $renderer->finish_row();
        $buttons[] = $renderer->button_as_HTML('No', $this->_object->home_page());
        $buttons[] = $renderer->submit_button_as_HTML();
        $renderer->draw_buttons_in_row($buttons);
        $renderer->finish();
    }
コード例 #17
0
 /**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->start();
     $renderer->draw_text_line_row('title');
     $renderer->draw_date_row('day');
     /** @var ALBUM_APPLICATION_DISPLAY_OPTIONS $album_display_options */
     $album_display_options = $this->app->display_options;
     /** @var PROPERTY_VALUE[] $icons */
     $icons = $album_display_options->weather_icons();
     if (sizeof($icons)) {
         $props = $renderer->make_list_properties();
         $props->items_per_row = 7;
         $i = 0;
         foreach ($icons as $icon) {
             $i += 1;
             $props->add_item($icon->icon_as_html(Thirty_px), $i);
         }
         $renderer->draw_radio_group_row('weather_type', $props);
     }
     $renderer->draw_text_box_row('weather');
     $options = new FORM_TEXT_CONTROL_OPTIONS();
     $options->css_class = 'tiny';
     $renderer->start_row('Temps', 'text-line');
     echo $renderer->text_line_as_html('lo_temp', $options) . '&deg;C to ';
     echo $renderer->text_line_as_html('hi_temp', $options) . '&deg;C ';
     $renderer->finish_row();
     $renderer->draw_error_row('lo_temp');
     $renderer->draw_error_row('hi_temp');
     $renderer->draw_error_row('temps');
     $renderer->draw_text_box_row('description', 'tall');
     $renderer->draw_check_box_row('is_visible');
     $renderer->draw_submit_button_row();
     $this->_draw_history_item_controls($renderer);
     $renderer->finish();
 }
コード例 #18
0
 /**
  * @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();
 }
コード例 #19
0
 /**
  * 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();
 }