datacite/volpino

View on GitHub
app/views/admin/users/_index.html.erb

Summary

Maintainability
Test Coverage
<div class="row">
  <div class='col-md-9 col-md-offset-3 panel-list'>
    <%= form_tag(admin_users_path, :method => "get", :class => "form-horizontal", :role => "form") do %>
      <div id="search" class="input-group">
        <%= search_field_tag :query, params[:query], :placeholder => "Search user", :class => "form-control" %>
        <div class="input-group-btn">
          <button type="submit" class="btn btn-primary hidden-xs">Search</button>
        </div>
      </div>
      <% if params[:query] || params[:created] || params[:role_id] %>
        <span class="help-block"> <%= link_to 'Reset All', admin_users_path %></span>
      <% end %>
    <% end %>
  </div>
</div>

<div class="row">
  <div class='col-md-3'>
    <div class="panel facets">
      <% if @created.present? %>
        <div class="panel-body">
          <h4>Year Created</h4>
          <ul>
            <% @created.each do |created| %>
              <li>
                <% if params[:created] %>
                  <%= link_to "<i class='far fa-check-square'></i>".html_safe, admin_users_path(query: params[:query], role_id: params[:role_id]) %>
                <% else %>
                  <%= link_to "<i class='far fa-square'></i>".html_safe, admin_users_path(query: params[:query], created: created["id"], role_id: params[:role_id]) %>
                <% end %>
  
                <div class="facet-title"><%= created["title"] %></div>
                <span class="number pull-right"><%= number_with_delimiter(created["count"]) %></span>
                <div class="clearfix"/>
              </li>
            <% end %>
          </ul>
        </div>
      <% end %>
      <% if @roles.present? %>
        <div class="panel-body">
          <h4>Role</h4>
          <ul>
            <% @roles.each do |role| %>
              <li>
                <% if params[:role_id] %>
                  <%= link_to "<i class='far fa-check-square'></i>".html_safe, admin_users_path(query: params[:query], created: params[:created]) %>
                <% else %>
                  <%= link_to "<i class='far fa-square'></i>".html_safe, admin_users_path(query: params[:query], role_id: role["id"], created: params[:created]) %>
                <% end %>
  
                <div class="facet-title"><%= role["title"] %></div>
                <span class="number pull-right"><%= number_with_delimiter(role["count"]) %></span>
                <div class="clearfix"/>
              </li>
            <% end %>
          </ul>
        </div>
      <% end %>
    </div>
  </div>

  <div class='col-md-9 panel-list'>
    <% if @users.size > 0 %>
      <% @users.each do |user| %>
        <div class="panel panel-default">
          <div class="panel-heading">
            <h3 class="panel-title">
              <span class='pull-right'><%= user.role_name %></span>
              <% if user.name.present? %>
                <%= user.name %>
              <% else %>
                <%= user.uid %>
              <% end %>
            </h3>
          </div>
          <% if can?(:manage, @user) && @user && @user.uid == user.uid && (controller.action_name == "edit" or (controller.action_name == "update" and @user.errors.present?)) %>
            <%= simple_form_for @user, url: admin_user_path(@user), html: { role: "form", remote: true } do |f| %>
              <div class="panel-body">
                <% if user.uid != current_user.uid %>
                  <%= f.input :role_id, collection: Role.all[:data], include_blank: false, input_html: { class: "form-user" } %>
                <% end %>

                <div class="form-group">
                  <label for="other">Other</label>
                  <%= f.input :is_public, label: "Record is public", input_html: { class: "form-user" } %>
                  <%= f.input :auto_update, label: "Auto-Update is enabled", input_html: { class: "form-user" } %>
                  <%= f.input :beta_tester, label: "Beta Tester", input_html: { class: "form-user" } %>
                </div>
              </div>
              <div class="panel-footer">
                <div class="form-group pull-right">
                  <%= link_to 'Cancel', admin_users_path(query: params[:query], role_id: params[:role_id]), { :remote => true, :class => 'btn btn-sm' } %>
                  <%= f.submit "Save ", class: "btn btn-sm btn-fill" %>
                </div>
                <div class="clearfix"/>
              </div>
            <% end %>
          <% else %>
            <div class="panel-body user-list">
              <% if user.email.present? %>
                <h5>Email</h5>
                <%= link_to h(user.email), "mailto:#{user.email}" %>
              <% end %>

              <h5>ORCID</h5>
              <%= link_to "https://orcid.org/#{user.uid}".html_safe, "https://orcid.org/" + user.uid %>              

              <h5>Record</h5>
              <% if user.is_public %>
                is public
              <% else %>
                <span class="text-info">is private</span>
              <% end %>

              <h5>Auto-Update</h5>
              <% if user.auto_update %>
                is enabled
              <% else %>
                <span class="text-info">is disabled</span>
              <% end %>

              <% if user.beta_tester %>
                <h5>Beta Tester</h5>
                <%= user.beta_tester %>
              <% end %>

              <h5>Account created</h5>
              <%= l DateTime.parse(user.created), format: :medium %>

              <h5>ORCID Token</h5>
              <% if user.orcid_token.blank? %>
                Missing
              <% elsif DateTime.parse(user.orcid_expires_at) < Time.zone.now %>
                Expired
              <% else %>
                Expires <%= l DateTime.parse(user.orcid_expires_at), format: :medium %>
              <% end %>
            </div>
            <% if can?(:manage, user) %>
              <div class="panel-footer">
                <span class="title pull-left"><%= link_to_if user.claims_count > 0, pluralize(user.claims_count, "Claim"), admin_claims_path(source: params[:source], state: params[:state], user_id: user.uid) %></span>
                <div class="btn-toolbar">
                   <% if can?(:manage, user) && Time.zone.now < user.orcid_expires_at %>
                    <div class="btn-group btn-group-sm pull-right">
                      <%= link_to 'delete token', admin_user_path(user.uid, user: { orcid_token: nil, orcid_expires_at: Time.zone.now }), { method: :put, remote: true, class: 'btn btn-sm btn-warning btn-fill' } %>
                    </div>
                  <% end %>
                  <% if user.uid != current_user.uid && can?(:manage, Phrase) %>
                    <div class="btn-group btn-group-sm pull-right">
                      <%= link_to "Delete".html_safe, admin_user_path(user.uid, query: params[:query], role_id: params[:role_id], page: params[:page]), method: :delete, data: { confirm: 'Are you sure?' }, remote: true, class: 'btn btn-fill btn-sm', id: "#{user.uid}-delete" %>
                    </div>
                  <% end %>
                  <div class="btn-group btn-group-sm pull-right">
                    <%= link_to "Update".html_safe, edit_admin_user_path(user.uid, query: params[:query], role_id: params[:role_id], page: params[:page]), remote: true, class: 'btn btn-sm', id: "#{user.uid}-edit" %>
                  </div>
                </div>
              </div>
            <% end %>
          <% end %>
        </div>
      <% end %>

      <div class="text-center">
        <%= paginate @users %>
      </div>
    <% else %>
      <div class="alert alert-warning">
        There are no users
        <% unless params[:role_id].blank? %>
            with role "<%= params[:role_id].titleize %>"
        <% end %>
        <% unless params[:query].blank? %>
            with query string <strong><%= params[:query] %></strong>.
        <% end %>
      </div>
    <% end %>
  </div>
</div>