opf/openproject

View on GitHub
app/views/custom_fields/_custom_options.html.erb

Summary

Maintainability
Test Coverage
<%#-- 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>