app/views/custom_fields/_custom_options.html.erb
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 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.
++#%>
<% custom_field = f.object %>
<% custom_field.custom_options.build if custom_field.custom_options.empty? %>
<div class="generic-table--container">
<div class="generic-table--results-container">
<table class="generic-table" id="custom-options-table">
<colgroup>
<col opHighlightCol>
<col opHighlightCol>
<col opHighlightCol>
<col>
</colgroup>
<thead>
<tr>
<th>
<div class="generic-table--sort-header-outer">
<div class="generic-table--sort-header">
<span>
<%= t('activerecord.attributes.custom_value.value') %>
</span>
</div>
</div>
</th>
<th>
<div class="generic-table--sort-header-outer">
<div class="generic-table--sort-header">
<span>
<%= t(:label_default) %>
</span>
</div>
</div>
</th>
<th>
<div class="generic-table--sort-header-outer">
<div class="generic-table--sort-header">
<span>
<%= t(:button_sort) %>
</span>
</div>
</div>
</th>
<th style="max-width:200px;">
<div class="generic-table--empty-header">
</div>
</th>
</tr>
</thead>
<tbody
data-test-selector="dragula-container"
data-admin--custom-fields-target="dragContainer">
<% custom_field.custom_options.each_with_index do |custom_option, i| %>
<%= f.fields_for :custom_options, custom_option do |co_f| %>
<tr
class="dragula-element custom-option-row"
data-admin--custom-fields-target="customOptionRow"
>
<td>
<span class="dragula-handle icon icon-table icon-drag-handle"></span>
<%= co_f.hidden_field :id, class: 'custom-option-id' %>
<%= co_f.text_field :value,
container_class: 'custom-option-value',
no_label: true %>
</td>
<td>
<%= co_f.check_box :default_value,
container_class: 'custom-option-default-value',
data: {
'admin--custom-fields-target': 'customOptionDefaults',
action: 'admin--custom-fields#uncheckOtherDefaults'
},
no_label: true %>
</td>
<td>
<span class="reorder-icons">
<a
title="<%= t(:label_sort_highest) %>"
rel="nofollow"
href="#"
class="sort-up-custom-option"
data-action="admin--custom-fields#moveRowToTheTop"
>
<%= op_icon('icon-context icon-sort-up icon-small') %>
</a>
<a
title="<%= t(:label_sort_higher) %>"
rel="nofollow"
href="#"
class="move-up-custom-option"
data-action="admin--custom-fields#moveUpRow"
>
<%= op_icon('icon-context icon-arrow-up2 icon-small') %>
</a>
<a
title="<%= t(:label_sort_lower) %>"
rel="nofollow" href="#"
class="move-down-custom-option"
data-action="admin--custom-fields#moveDownRow"
>
<%= op_icon('icon-context icon-arrow-down2 icon-small') %>
</a>
<a
title="<%= t(:label_sort_lowest) %>"
rel="nofollow"
href="#"
class="sort-down-custom-option"
data-action="admin--custom-fields#moveRowToTheBottom"
>
<%= op_icon('icon-context icon-sort-down icon-small') %>
</a>
</span>
</td>
<td>
<%= link_to '',
delete_option_of_custom_field_path(id: custom_field.id || 0, option_id: custom_option.id || 0),
method: :delete,
data: {
action: 'admin--custom-fields#removeOption',
confirm: t(:'custom_fields.confirm_destroy_option')
},
class: 'icon icon-delete delete-custom-option',
title: t(:button_delete) %>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
</div>
</div>