OpenProject is the leading open source project management software.
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.
openproject/app/views/work_packages/bulk/edit.html.erb

199 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 docs/COPYRIGHT.rdoc for more details.
++#%>
<% html_title t(:label_bulk_edit_selected_work_packages) %>
<% if @bulk_errors.present? %>
<div class="notification-box -error">
<a title="close" class="notification-box--close icon-context icon-close"></a>
<div class="notification-box--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 %>
Feature/remove timelog (#8557) * rename costs, introduce budgets * move files from costs to budgets * rename cost_object to budget * remove unused code * move hook - should be turned into standard code in the long run * move type attributes change over to budgets * move patch to work_package proper * move budget menu item up * combine reporting, time and cost module * remove rails based time_entries & reports code * rename cost object filter * adapt menu spec expectations * use cost project module name in administration * include timeline labels in migration * properly place budget linking method * fix permitted params * remove outdated routing spec * adapt budget request specs * ensure order of descendent updates * remove outdated specs * fix checking for reporting to be enabled * fix displaying spent units * fix time entries activity event url * reenable current rate tab * fix path on budget page * allow bulk editing of budgets only in one project scenario * fix sanitizing reference in controller * include module required for format_date * fix reference to correct units from work package spent units * linting * remove outdated spec * remove outdated views and permission references * remove acts_as_event from time_entries There is no atom link for time entries * remove acts_as_event from projects There are no atom links for projects * introduce budget filter for cost reports * remove actions added to removed controller * move time entries to the costs module * factor in view_own permission when calculating time entry visibility * linting * move mounting of time entries * include budgets into api v3 documentation
4 years ago
<% 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 %>