lujanfernaud/prevy

View on GitHub
app/views/groups/_group_sidebar.html.erb

Summary

Maintainability
Test Coverage
<div class="col-md-12 col-lg-4">

  <% cache [
    current_user,
    group.location,
    group.owner_name,
    group.recent_members
    ] do %>

    <!-- Group Info -->
    <div class="group-info-box box box--sidebar mt-lg-0 py-3">

      <!-- Group Location -->
      <div class="group-location">
        <h3 class="h4 mb-3 pb-1">
          Location
        </h3>
        <p>
          <%= location_icon %>
          <%= group.location %>
        </p>
      </div>

      <!-- Group Admin Preview -->
      <% unless authorized?(current_user, group)  %>

        <div class="admin-preview">
          <h3 class="h4 mb-3">
            Admin
          </h3>
          <p class="mr-1">
            <%= person_icon %>
            <%= group.admin_name_or_link(current_user, session[:token]) %>
          </p>
        </div>

      <% end %>

      <!-- Group Members -->
      <div class="members-preview mt-3">
        <h3 class="h4 mb-1">
          <%= group.members_title_with_count %>
        </h3>

        <!-- If Owner or Members -->
        <% if authorized?(current_user, group) %>

          <ul class="mt-3">
            <% if !group.members_with_role.empty? %>
              <%= render partial: "list_member",
                collection: group.recent_members,
                as: :member, locals: { group: group } %>
            <% else %>
              <li>
                So far there are no members
              </li>
            <% end %>
          </ul>

          <%= group.see_all_members_link %>

        <!-- If Invited -->
        <% elsif invited? %>

          <% if group.members_with_role.empty? %>
            <p class="mt-3 mb-1">
              <%= rocket_icon %>
              <span>You can be the first member!</span>
            </p>
          <% else %>
            <p class="mt-3 mb-1">
              <%= people_icon %>
              <%= link_to "See all members", group_members_path(group) %>
            </p>
          <% end %>

        <% end %>
      </div>

    </div><!-- /.group-info-box -->

  <% end %><!-- cache end -->

  <!-- Group Buttons -->
  <div class="group-buttons-box box box--sidebar p-3">

    <!-- Owner -->
    <% if is_group_owner?(current_user, group) %>
      <div class="group-link mt-1">
        <%= link_to "Invite someone", new_group_invitation_path(group),
          class: "btn btn-outline-primary btn-block btn-lg" %>
      </div>
    <% end %>

    <!-- Organizer -->
    <% if group.create_event_button_authorized?(current_user) %>
      <div class="group-options mt-3">
        <%= link_to "Create event", new_group_event_path(group),
          class: "btn btn-primary btn-block btn-lg" %>
      </div>
    <% end %>

    <!-- Member -->
    <% if has_member_role_and_is_confirmed?(current_user, group) %>
      <div class="group-options">
        <%= star_icon %>
        <%= link_to "See most involved members", "#top-members" %>
      </div>
    <% end %>

    <!-- Invited -->
    <% if invited? %>
      <div class="group-membership">
        <h4 class="h5">
          You've been invited! <span class="align-bottom">😊</span>
        </h4>
        <h5 class="h5">Would you like to be part?</h5>
        <%= group.membership_button(current_user, session[:token]) %>
      </div>
    <% end %>

    <!-- Foreign User -->
    <% unless authorized?(current_user, group) || invited? %>
      <div class="group-membership">
        <h4 class="h5">Would you like to be part?</h4>
        <%= group.membership_button(current_user, session[:token]) %>
      </div>
    <% end %>

  </div><!-- /.group-buttons-box -->

</div>