opf/openproject

View on GitHub
app/views/my/access_token_partials/_icalendar_tokens_section.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.

++#%>
<div class="attributes-group" id="icalendar-token-section">
  <div class="attributes-group--header">
    <div class="attributes-group--header-container">
      <h3 class="attributes-group--header-text"><%= t("my_account.access_tokens.ical.title") %></h3>
    </div>
  </div>
  <div>
    <p>
      <%= t("my_account.access_tokens.ical.text_hint", path: "https://www.openproject.org/docs/").html_safe %>
    </p>
    <% if Setting.ical_enabled? %>
      <% if ical_tokens_grouped_by_query.any? %>
        <div class="generic-table--container">
          <div class="generic-table--results-container">
            <table class="generic-table">
              <%= render  partial: "my/access_token_partials/token_table_header",
                          locals: { 
                            column_headers: [
                              t('attributes.name'),
                              WorkPackage.human_attribute_name(:calendar),
                              WorkPackage.human_attribute_name(:project),
                              User.human_attribute_name(:created_at),
                              t('my_account.access_tokens.headers.expiration')
                            ] 
                          } 
              %>
              <tbody>
                <% ical_tokens_grouped_by_query.each do |query_id, tokens| %>
                  <% tokens.sort_by(&:created_at).each do |token| %>
                    <tr>
                      <td class="-w-rel-20 -mw-abs-200" data-test-selector="ical-token-row-<%= token.id %>-name"><%= token.ical_token_query_assignment.name %></td>
                      <td class="-w-rel-20 -mw-abs-200" data-test-selector="ical-token-row-<%= token.id %>-query-name">
                        <%= link_to token.query.name,
                                    project_calendar_url(
                                      id: query_id,
                                      project_id: token.query.project_id
                                    )
                        %>
                      </td>
                      <td class="-w-rel-20 -mw-abs-200" data-test-selector="ical-token-row-<%= token.id %>-project-name">
                        <%= token.query.project.name %>
                      </td>
                      <td>
                        <span title="<%= format_time(token.created_at) %>">
                          <%= format_time(token.created_at.to_s) %>
                        </span>
                      </td>
                      <td><%= t('my_account.access_tokens.indefinite_expiration') %></td>
                      <td class="buttons">
                        <%= link_to "",
                                    { action: 'revoke_ical_token', id: token.id },
                                    data: { confirm: t('my_account.access_tokens.simple_revoke_confirmation'), test_selector: "ical-token-row-#{token.id}-revoke" },
                                    method: :delete,
                                    class: 'icon icon-delete' %>
                      </td>
                    </tr>
                  <% end %>
                <% end %>
              </tbody>
            </table>
          </div>
        </div>
      <% else %>
        <span class="spot-icon spot-icon_inline spot-icon_info1"></span>
        <i><%= t('my_account.access_tokens.ical.empty_text_hint') %></i>
      <% end %>
    <% else %>
      <div tabindex="0" class="-info op-toast">
        <div role="alert" aria-atomic="true" class="op-toast--content">
          <p>
            <span><%= t('my_account.access_tokens.ical.disabled_text') %></span>
          </p>
        </div>
      </div>
    <% end %>
  </div>
</div>