AyuntamientoMadrid/participacion

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

Summary

Maintainability
Test Coverage
<% provide :title, @proposal.title %>
<% preview = false unless local_assigns.has_key? :preview %>
<% content_for :meta_description do %><%= @proposal.summary %><% end %>
<% provide :social_media_meta_tags do %>
  <%= render "shared/social_media_meta_tags",
             social_url: proposal_url(@proposal),
             social_title: @proposal.title,
             social_description: @proposal.summary,
             twitter_image_url: (@proposal.image.present? ? polymorphic_path(@proposal.image.variant(:thumb)) : nil),
             og_image_url: (@proposal.image.present? ? polymorphic_path(@proposal.image.variant(:thumb)) : nil) %>
<% end %>
<% content_for :canonical do %>
  <%= render "shared/canonical", href: proposal_url(@proposal) %>
<% end %>

<% cache [locale_and_user_status(@proposal),
          @proposal,
          @proposal.author,
          Flag.flagged?(current_user, @proposal),
          @proposal.followed_by?(current_user),
          current_user&.voted_for?(@proposal)] do %>
  <div class="proposal-show">
    <div id="<%= dom_id(@proposal) %>" class="row">
      <div class="small-12 medium-9 column">
        <%= back_link_to proposals_path unless preview %>

        <h1><%= @proposal.title %></h1>
        <% if @proposal.retired? %>
          <div data-alert class="callout alert margin-top proposal-retired">
            <strong>
              <%= t("proposals.show.retired_warning") %><br>
              <%= link_to t("proposals.show.retired_warning_link_to_explanation"),
                          "#retired_explanation" %>
            </strong>
          </div>
        <% elsif @proposal.conflictive? %>
          <div data-alert class="callout alert margin-top">
            <strong><%= t("proposals.show.flag") %></strong>
          </div>
        <% end %>

        <%= render "proposals/info", proposal: @proposal %>
        <%= render Shared::GeozoneLinkComponent.new(@proposal, proposals_path(search: geozone_name(@proposal))) %>

        <% unless @proposal.selected? %>
          <%= render "relationable/related_content", relationable: @proposal %>
        <% end %>

        <div class="js-moderator-proposal-actions margin">
          <%= render "proposals/actions", proposal: @proposal %>
        </div>
      </div>

      <% unless preview %>
        <aside class="small-12 medium-3 column">
          <% if can?(:dashboard, @proposal) %>
            <div class="sidebar-divider"></div>
            <h2><%= t("proposals.show.author") %></h2>
            <div class="show-actions-menu">
              <%= link_to progress_proposal_dashboard_path(@proposal),
                          class: "button hollow expanded",
                          id: "proposal-dashboard-#{@proposal.id}" do %>
                <span class="icon-edit"></span>
                <%= t("proposals.show.dashboard_proposal_link") %>
              <% end %>
            </div>
          <% end %>

          <%= render "proposals/support_status", proposal: @proposal %>

          <%= render "proposals/social_share", proposal: @proposal, share_title: t("proposals.show.share") %>

          <% if current_user %>
            <div class="sidebar-divider"></div>
            <p class="sidebar-title"><%= t("shared.follow") %></p>

            <%= render "follows/follow_button", follow: find_or_build_follow(current_user, @proposal) %>
          <% end %>

          <%= render "communities/access_button", community: @proposal.community %>
        </aside>
      <% end %>
    </div>
  </div>
<% end %>

<% unless preview %>
  <div class="additional-content">
    <div class="filter-subnav">
      <div class="row">
        <div class="small-12 column">
          <%= render "proposals/filter_subnav" %>
        </div>
      </div>
    </div>
  </div>

  <div class="tabs-content" data-tabs-content="proposals_tabs">
    <div class="tabs-panel is-active" id="tab-comments">
      <%= render "proposals/comments" %>
    </div>

    <%= render "proposals/notifications" %>
    <%= render "milestones/milestones", milestoneable: @proposal %>
  </div>
<% end %>