kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
10 KiB
198 lines
10 KiB
<%#-- copyright
|
|
OpenProject is an open source project management software.
|
|
Copyright (C) 2012-2021 the OpenProject GmbH
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License version 3.
|
|
|
|
OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
|
Copyright (C) 2006-2013 Jean-Philippe Lang
|
|
Copyright (C) 2010-2013 the ChiliProject Team
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
See COPYRIGHT and LICENSE files for more details.
|
|
|
|
++#%>
|
|
|
|
<% html_title t(:label_bulk_edit_selected_work_packages) %>
|
|
|
|
<% if @bulk_errors.present? %>
|
|
<div class="op-toast -error">
|
|
<a title="close" class="op-toast--close icon-context icon-close"></a>
|
|
<div class="op-toast--content">
|
|
<p><strong><%= t('work_packages.bulk.could_not_be_saved') %></strong></p>
|
|
|
|
<ul>
|
|
<% @bulk_errors.each do |wpid, messages| %>
|
|
<li>
|
|
<%= link_to "##{wpid}", work_package_path(wpid) %>:
|
|
<%= safe_join messages, ', ' %>
|
|
</li>
|
|
<% end %>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
|
|
<h2><%= t(:label_bulk_edit_selected_work_packages) %></h2>
|
|
<ul>
|
|
<% @work_packages.each do |wp| %>
|
|
<li>
|
|
<%= link_to(h("#{wp.type} ##{wp.id}"), work_package_path(wp)) %>:
|
|
<%= wp.subject %>
|
|
</li>
|
|
<% end %>
|
|
</ul>
|
|
|
|
<%= styled_form_tag(url_for(controller: '/work_packages/bulk', action: :update),
|
|
method: :put, class: '-wide-labels') do %>
|
|
<% @work_packages.each do |wp| %>
|
|
<%= hidden_field_tag 'ids[]', wp.id %>
|
|
<% end %>
|
|
<%= back_url_hidden_field_tag %>
|
|
<section class="form--section">
|
|
<fieldset class="form--fieldset">
|
|
<legend class="form--fieldset-legend"><%= t(:label_change_properties) %></legend>
|
|
<div class="grid-block">
|
|
<div class="grid-content medium-6">
|
|
<div class="form--field">
|
|
<label class="form--label" for="work_package_type_id"><%= WorkPackage.human_attribute_name(:type) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag('work_package[type_id]', "<option value=\"\">#{t(:label_no_change_option)}</option>".html_safe + options_from_collection_for_select(@types, :id, :name)) %>
|
|
</div>
|
|
</div>
|
|
<% if @available_statuses.any? %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='status_id'><%= WorkPackage.human_attribute_name(:status) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag('work_package[status_id]', "<option value=\"\">#{t(:label_no_change_option)}</option>".html_safe + options_from_collection_for_select(@available_statuses, :id, :name)) %>
|
|
</div>
|
|
</div>
|
|
<% else %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='status_id'><%= WorkPackage.human_attribute_name(:status) %></label>
|
|
<div class="form--field-container">
|
|
<%= t('work_packages.move.no_common_statuses_exists') %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='work_package_priority_id'><%= WorkPackage.human_attribute_name(:priority) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag('work_package[priority_id]', "<option value=\"\">#{t(:label_no_change_option)}</option>".html_safe + options_from_collection_for_select(IssuePriority.active, :id, :name)) %>
|
|
</div>
|
|
</div>
|
|
<div class="form--field">
|
|
<label class="form--label" for='work_package_assigned_to_id'><%= WorkPackage.human_attribute_name(:assigned_to) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag('work_package[assigned_to_id]', content_tag('option', t(:label_no_change_option), value: '') +
|
|
content_tag('option', t(:label_nobody), value: 'none') +
|
|
options_from_collection_for_select(@assignables, :id, :name)) %>
|
|
</div>
|
|
</div>
|
|
<div class="form--field">
|
|
<label class="form--label" for='work_package_responsible_id'><%= WorkPackage.human_attribute_name(:responsible) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag('work_package[responsible_id]', content_tag('option', t(:label_no_change_option), value: '') +
|
|
content_tag('option', t(:label_nobody), value: 'none') +
|
|
options_from_collection_for_select(@responsibles, :id, :name)) %>
|
|
</div>
|
|
</div>
|
|
<% if @project %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='category_id'><%= WorkPackage.human_attribute_name(:category) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag('work_package[category_id]', content_tag('option', t(:label_no_change_option), value: '') +
|
|
content_tag('option', t(:label_none), value: 'none') +
|
|
options_from_collection_for_select(@project.categories, :id, :name)) %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
<% #TODO: allow editing versions when multiple projects %>
|
|
<% if @project %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='work_package_version_id'><%= WorkPackage.human_attribute_name(:version) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag('work_package[version_id]', content_tag('option', t(:label_no_change_option), value: '') +
|
|
content_tag('option', t(:label_none), value: 'none') +
|
|
version_options_for_select(@project.shared_versions.with_status_open.order_by_semver_name)) %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
<% if @project %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='budget_id'><%= Budget.model_name.human %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag('budget_id',
|
|
content_tag('option', t(:label_no_change_option), :value => '') +
|
|
content_tag('option', t(:label_none), :value => 'none') +
|
|
options_from_collection_for_select(@project.budgets.order(Arel.sql('subject ASC')), :id, :subject))
|
|
%>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
<% @custom_fields.each do |custom_field| %>
|
|
<div class="form--field">
|
|
<%= blank_custom_field_label_tag('work_package', custom_field) %>
|
|
<div class="form--field-container">
|
|
<%= custom_field_tag_for_bulk_edit('work_package', custom_field, @project) %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
<%= call_hook(:view_work_packages_bulk_edit_details_bottom, { work_packages: @work_packages }) %>
|
|
</div>
|
|
<div class="grid-content medium-6">
|
|
<% if @project && User.current.allowed_to?(:manage_subtasks, @project) %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='work_package_parent_id'><%= WorkPackage.human_attribute_name(:parent) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_text_field_tag 'work_package[parent_id]', '', size: 10 %>
|
|
</div>
|
|
</div>
|
|
<div id="parent_work_package_candidates" class="autocomplete"></div>
|
|
<% end %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='work_package_start_date'><%= WorkPackage.human_attribute_name(:start_date) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_text_field_tag 'work_package[start_date]', '', size: 10, class: '-augmented-datepicker' %>
|
|
</div>
|
|
</div>
|
|
<div class="form--field">
|
|
<label class="form--label" for='work_package_due_date'><%= WorkPackage.human_attribute_name(:due_date) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_text_field_tag 'work_package[due_date]', '', size: 10, class: '-augmented-datepicker' %>
|
|
</div>
|
|
</div>
|
|
<% if WorkPackage.use_field_for_done_ratio? %>
|
|
<div class="form--field">
|
|
<label class="form--label" for='work_package_done_ratio'><%= WorkPackage.human_attribute_name(:done_ratio) %></label>
|
|
<div class="form--field-container">
|
|
<%= styled_select_tag 'work_package[done_ratio]', options_for_select([[t(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<fieldset class="form--fieldset">
|
|
<legend class="form--fieldset-legend"><%= Journal.human_attribute_name(:notes) %></legend>
|
|
<%= label_tag 'notes', Journal.human_attribute_name(:notes), class: 'hidden-for-sighted' %>
|
|
<%= styled_text_area_tag 'notes', @notes, class: 'wiki-edit', with_text_formatting: true %>
|
|
<p><%= send_notification_option %></p>
|
|
</fieldset>
|
|
</section>
|
|
<p><%= styled_button_tag t(:button_submit), class: '-highlight -with-icon icon-checkmark' %></p>
|
|
<% end %>
|
|
|