indentlabs/notebook

View on GitHub
app/views/page_collections/show.html.erb

Summary

Maintainability
Test Coverage
<%= content_for :full_width_page_header do %>
  <%= render partial: 'content/components/collection_header', locals: { collection: @page_collection } %>
<% end %>

<div class="row">
  <div class="col s12 m12 l7">
    <div class="card">
      <div class="card-content">
        <div class="card-title">
          <% if user_signed_in? %>
            <% if current_user != @page_collection.user %>
              <% if @page_collection.followed_by?(current_user) %>
                <%= link_to unfollow_page_collection_path(@page_collection), class: "btn #{PageCollection.color} lighten-2 right" do %>
                  <i class="material-icons left"><%= PageCollection.icon %></i>
                  Unfollow
                <% end %>

              <% else %>
                <%= link_to follow_page_collection_path(@page_collection), class: "btn #{PageCollection.color} right" do %>
                  <i class="material-icons left"><%= PageCollection.icon %></i>
                  Follow for updates
                <% end %>
              <% end %>
            <% else %>
              <%= link_to 'Edit collection', edit_page_collection_path(@page_collection), class: 'btn btn-flat right' %>

            <% end %>
          <% else %>
            <%= link_to '#', class: "btn #{PageCollection.color} lighten-2 right disabled" do %>
              <i class="material-icons left"><%= PageCollection.icon %></i>
              Follow
            <% end %>
          <% end %>

          About this collection
        </div>
        <br />
        <% if user_signed_in? && @page_collection.user == current_user %>
          <%= form_for @page_collection do |f| %>
            <div class="input-field">
              <%= f.text_area :description, class: 'materialize-textarea' %>
              <%= f.label :description, 'Collection Description' %>
              <div class="help-text">You can add details for this collection to explain what kinds of pages you'd like it to contain.</div>
            </div>
            <%= f.submit 'Save changes', class: 'btn right blue white-text' %>
            <div class="clearfix"></div>

          <% end %>
        <% else %>
          <% if @page_collection.description? %>
            <div class="spaced-paragraphs">
              <%= simple_format @page_collection.description %>
            </div>
          <% end %>
        <% end %>

      </div>
    </div>
  </div>
  <div class="col s12 m12 l5">

    <% if user_signed_in? && @page_collection.user_id == current_user.id %>
      <% if @page_collection.pending_submissions.count > 0 %>
        <%=
          link_to page_collection_pending_submissions_path(page_collection_id: @page_collection.id),
                  class: "#{PageCollection.color} white-text btn btn-large",
                  style: "width: 100%" do
        %>
          <i class="material-icons left">notifications_active</i>
          <div class="left">
            <%= pluralize(@page_collection.pending_submissions.count, 'pending submission') %>
          </div>
        <% end %>
      <% end %>
    <% end %>

    <%# render partial: 'page_collections/quick_add' %>
    <% if user_signed_in? %>
      <a class="waves-effect hoverable waves-light btn btn-large modal-trigger blue" href="#share-page-modal" style="width: 100%; margin-top: 0.5em;">
    <% else %>
      <a class="waves-effect hoverable waves-light btn btn-large modal-trigger blue" href="https://www.notebook.ai/users/sign_in" style="width: 100%; margin-top: 0.5em;">
    <% end %>
      <i class="material-icons <%= PageCollection.text_color %> text-darken-2 left"><%= PageCollection.icon %></i>
      <div class="left">
        <%= 'Sign in to' unless user_signed_in? %>
        <%= @page_collection.user == current_user ? 'Add' : 'Submit' %> a page
        <span class="hide-on-small-only">
          to this Collection
        </span>
      </div>
    </a>
    <br /><br />

    <div class="grey-text uppercase">Published pages</div>

    <div class="collection">
      <% @page_collection.page_types.each do |pt| %>
        <% klass = content_class_from_name(pt) %>
        <%= link_to(send(pt.downcase.pluralize + '_page_collection_path', @page_collection), class: "collection-item #{klass.color} white-text") do %>
          <i class="material-icons left"><%= klass.icon %></i>
          <%= pt.pluralize %>
          <span class="badge white-text"><%= @page_collection.accepted_submissions.where(content_type: pt).count %></span>
        <% end %>
      <% end %>
      <% if @page_collection.page_types.count > 1 %>
        <%= link_to @page_collection, class: "collection-item #{PageCollection.text_color}" do %>
          <i class="material-icons left"><%= PageCollection.icon %></i>
          All Pages
          <span class="badge brown-text"><%= @page_collection.accepted_submissions.count %></span>
        <% end %>
      <% end %>
    </div>

    <div class="grey-text uppercase">Curator</div>
    <div>
      <%= link_to @page_collection.user, class: "#{User.text_color}" do %>
        <%= image_tag @page_collection.user.image_url(size=20), class: 'left circle', style: 'margin-right: 8px;' %>
        <%= @page_collection.user.display_name %>
      <% end %>
    </div>

    <% if @page_collection.contributors.any? %>
      <br />
      <div class="grey-text uppercase">Contributors</div>
      <% @page_collection.contributors.each do |user| %>
        <div class="col s12 m6 l3">
          <%= link_to user, class: "#{User.text_color}" do %>
            <%= image_tag user.image_url(size=20), class: 'left circle', style: 'margin-right: 8px;' %>
            <%= user.display_name %>
          <% end %>
        </div>
      <% end %>
      <br />
    <% end %>

    <!--
    <div class="col s12 m6 l6">
      <br />
      <div class="grey-text uppercase">
        Share collection to...
      </div>
      <ul>
        <li>
          <%= link_to [
            'http://twitter.com/share?',
            'url=' + CGI.escape(page_collection_url(@page_collection)),
            '&text=' + CGI.escape("I'm building a collection of fictional " + @page_collection.page_types.map(&:pluralize).map(&:downcase).to_sentence + " on Notebook.ai. Check it out!")
          ].join, class: 'blue-text', target: '_blank' do %>
            <i class="material-icons tiny left" style="margin-top: 4px;">share</i>
            Twitter
          <% end %>
        </li>
        <li>
          <%= 
            link_to "https://www.facebook.com/sharer/sharer.php?app_id=1523926344336934&u=#{CGI.escape(page_collection_url(@page_collection))}&display=popup&ref=plugin&src=share_button", 
              class: 'blue-text',
              onclick: "return !window.open(this.href, 'Facebook', 'width=640,height=580')" do
          %>
            <i class="material-icons tiny left" style="margin-top: 4px">share</i>
            Facebook
          <% end %>
        </li>

      </ul>
    </div>
    -->
  </div>
</div>

<% if @pages.empty? %>
  <div class="row">
    <div class="col s12 m10 offset-m1 l8 offset-l2">
      <div class="card-panel">
        This collection doesn't have any published pages yet.
        <% if user_signed_in? %>
          <% if current_user == @page_collection.user %>
            <a class="modal-trigger" href="#share-page-modal">
              Publish your first page.
            </a>
          <% else %>
            <a class="modal-trigger" href="#share-page-modal">
              Yours could be first!
            </a>
          <% end %>
        <% else %>
          Sign in to <%= @page_collection.auto_accept? ? 'add' : 'submit' %> yours!
        <% end %>
      </div>
    </div>
  </div>
<% else %>
  <%= render partial: 'page_collections/sort_bar' %>
  <% if !!@show_contributor_highlight %>
    <%= render partial: 'page_collections/contributor_highlight_bar', locals: { contributor: @highlighted_contributor } %>
  <% end %>
  <% if !!@show_page_type_highlight %>
    <%= render partial: 'page_collections/page_type_highlight_bar', locals: { page_type: @page_type } %>
  <% end %>
  <%= render partial: 'page_collections/tiles', locals: { pages: @pages } %>
<% end %>

<%= form_for PageCollectionSubmission.new do |f| %>
  <div id="share-page-modal" class="modal modal-fixed-footer">
    <div class="modal-content">
      <h4 class="center">
        <%= @page_collection.user == current_user ? 'Add' : 'Submit' %> a
        <%= @page_collection.page_types.length > 1 ? 'page' : @page_collection.page_types.first %>
        <span class="hide-on-small-only">
          to this Collection
        </span>
      </h4>
      <br />
      <% if @submittable_content.values.flatten.any? %>
          <div class="row">
            <div class="col s12 m12 l12">
              <%= f.hidden_field :page_collection_id, value: @page_collection.id %>
              <div class="center">
                <% @submittable_content.keys.each do |submittable_class_name| %>
                  <% submittable_class = content_class_from_name(submittable_class_name) %>
                  <i class="material-icons bordered-text <%= submittable_class.text_color %> <%= @submittable_content.keys.length > 6 ? 'small' : 'medium' %> tooltipped" 
                     data-tooltip="This Collection allows <%= submittable_class_name.downcase.pluralize %>."><%= submittable_class.icon %></i> &nbsp;
                <% end %>
              </div>
              <br />

              <div class="input-field clearfix">
                <%= f.select :content do %>
                  <% @submittable_content.each do |content_type, content_list| %>
                    <optgroup label="<%= content_type.pluralize %>">
                      <% content_list.each do |content| %>
                        <option value="<%= content_type %>-<%= content.id %>"><%= content.name %></option>
                      <% end %>
                    </optgroup>
                  <% end %>
                <% end %>
                <label>Select a page to <%= @page_collection.user == current_user ? 'add' : 'submit' %></label>
                <div class="helper-text">
                  Submitting a page will automatically change its privacy to "public" if this collection is public.
                  <% if @page_collection.privacy == 'public' %>
                    (It is!)
                  <% end %>
                </div>
              </div>
            </div>
            <div class="col s12 m12 l12">
              <div class="input-field">
                <%= f.text_area :explanation, class: 'materialize-textarea' %>
                <%= f.label :explanation, 'Add a message' %>
                <div class="helper-text">
                  <% if @page_collection.user == current_user %>
                    This message will be visible to everyone.
                  <% else %>
                    If this submission is accepted, this message will be visible to everyone.
                  <% end %>
                  It can be as long or as short as you'd like!
                </div>
              </div>
            </div>
          </div>

      <% else %>
        <p>
          You don't have any pages to submit to this collection.
        </p>
      <% end %>
    </div>
    <div class="modal-footer">
      <%= f.submit (@page_collection.user == current_user ? 'Add' : 'Submit') + ' page', class: "btn #{PageCollection.color} white-text" %>

      <a href="#!" class="modal-close waves-effect waves-green btn-flat left">Nevermind</a>
    </div>
  </div>
<% end %>