libertarian-party/partynest

View on GitHub
app/views/settings/contacts/_table.html.erb

Summary

Maintainability
Test Coverage
<table class="table mt-3">
  <thead>
    <tr>
      <th scope="col">
        <%= Contact.human_attribute_name :contact_network %>
      </th>
      <th scope="col">
        <%= Contact.human_attribute_name :value %>
      </th>
      <th scope="col">
        <%= Contact.human_attribute_name :send_security_notifications %>
      </th>
      <th scope="col">
        <%= Contact.human_attribute_name :show_in_public %>
      </th>
      <th scope="col"></th>
    </tr>
  </thead>

  <tbody>
    <% contacts.each do |contact| %>
      <tr>
        <td><%= contact.contact_network.name %></td>

        <td>
          <% if contact.link.nil? %>
            <%= truncate contact.value %>
          <% else %>
            <%= link_to truncate(contact.value),
                        contact.link,
                        target: :_blank,
                        rel: 'noopener noreferrer' %>
            <i class="fas fa-external-link-alt fa-xs text-muted"></i>
          <% end %>
        </td>

        <td>
          <% if policy([
               :settings,
               ContactSecurityNotificationSwitch.new(contact),
          ]).create? %>
            <%= link_to(
              settings_contact_security_notification_switch_path(contact),
              method: :post,
            ) do %>
              <%= bool_badge contact.send_security_notifications %>
            <% end %>
          <% end %>
        </td>

        <td>
          <% if policy([
               :settings,
               ContactPublicSwitch.new(contact),
          ]).create? %>
            <%= link_to(
              settings_contact_public_switch_path(contact),
              method: :post,
              data: { confirm: contact_public_switch_confirmation(contact) },
            ) do %>
              <%= bool_badge contact.show_in_public %>
            <% end %>
          <% end %>
        </td>

        <td>
          <% if policy([:settings, contact]).destroy? %>
            <%= link_to(
              [:settings, contact],
              method: :delete,
              class: 'btn btn-danger btn-sm',
              data: { confirm: contact_destroy_confirmation(contact) },
            ) do %>
              <i class="fas fa-trash"></i>
            <% end %>
          <% end %>
        </td>
      </tr>
    <% end %>
  </tbody>
</table>