Unify dashboard default resources partials to a component
This commit is contained in:
10
app/components/dashboard/default_resource_component.html.erb
Normal file
10
app/components/dashboard/default_resource_component.html.erb
Normal file
@@ -0,0 +1,10 @@
|
||||
<div class="small-12 medium-6 large-3 column end">
|
||||
<div class="resource-card" data-equalizer-watch="resources">
|
||||
<h4><%= t("dashboard.menu.#{resource}") %></h4>
|
||||
<p class="resource-description"><%= resource_description %></p>
|
||||
|
||||
<div class="small-12 column small-centered margin-top">
|
||||
<%= link_to t("dashboard.resource.view_resource"), resource_path, class: "button expanded" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
29
app/components/dashboard/default_resource_component.rb
Normal file
29
app/components/dashboard/default_resource_component.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
class Dashboard::DefaultResourceComponent < ApplicationComponent
|
||||
attr_reader :resource, :proposal
|
||||
use_helpers :can?
|
||||
|
||||
def initialize(resource, proposal)
|
||||
@resource = resource
|
||||
@proposal = proposal
|
||||
end
|
||||
|
||||
def render?
|
||||
can?(:"manage_#{resource}", proposal)
|
||||
end
|
||||
|
||||
def resource_description
|
||||
if resource == "mailing"
|
||||
Setting["proposals.email_short_title"]
|
||||
else
|
||||
Setting["proposals.#{resource}_short_title"]
|
||||
end
|
||||
end
|
||||
|
||||
def resource_path
|
||||
if resource == "polls"
|
||||
proposal_dashboard_polls_path(proposal)
|
||||
else
|
||||
send("new_proposal_dashboard_#{resource}_path", proposal)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -2,9 +2,9 @@
|
||||
<h3 class="title"><%= t("dashboard.resources.available_resources") %></h3>
|
||||
|
||||
<div data-equalizer="resources" data-equalize-on="medium">
|
||||
<%= render "poll_resource" %>
|
||||
<%= render "mailing_resource" %>
|
||||
<%= render "poster_resource" %>
|
||||
<% default_resources.each do |resource| %>
|
||||
<%= render Dashboard::DefaultResourceComponent.new(resource, proposal) %>
|
||||
<% end %>
|
||||
<%= render partial: "resource", collection: active_resources %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
class Dashboard::ResourcesComponent < ApplicationComponent
|
||||
attr_reader :active_resources
|
||||
attr_reader :active_resources, :proposal
|
||||
|
||||
def initialize(active_resources)
|
||||
def initialize(active_resources, proposal)
|
||||
@active_resources = active_resources
|
||||
@proposal = proposal
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def default_resources
|
||||
%w[polls mailing poster]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
<% if can?(:manage_mailing, proposal) %>
|
||||
<div class="small-12 medium-6 large-3 column end">
|
||||
<div class="resource-card" data-equalizer-watch="resources">
|
||||
<h4><%= t("dashboard.menu.mailing") %></h4>
|
||||
<p class="resource-description">
|
||||
<%= Setting["proposals.email_short_title"] %>
|
||||
</p>
|
||||
|
||||
<div class="small-12 column small-centered margin-top">
|
||||
<%= link_to t("dashboard.resource.view_resource"),
|
||||
new_proposal_dashboard_mailing_path(proposal.to_param),
|
||||
class: "button expanded" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
@@ -1,16 +0,0 @@
|
||||
<% if can?(:manage_polls, proposal) %>
|
||||
<div class="small-12 medium-6 large-3 column end">
|
||||
<div class="resource-card" data-equalizer-watch="resources">
|
||||
<h4><%= t("dashboard.menu.polls") %></h4>
|
||||
<p class="resource-description">
|
||||
<%= Setting["proposals.poll_short_title"] %>
|
||||
</p>
|
||||
|
||||
<div class="small-12 column small-centered margin-top">
|
||||
<%= link_to t("dashboard.resource.view_resource"),
|
||||
proposal_dashboard_polls_path(proposal.to_param),
|
||||
class: "button expanded" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
@@ -1,16 +0,0 @@
|
||||
<% if can?(:manage_poster, proposal) %>
|
||||
<div class="small-12 medium-6 large-3 column end">
|
||||
<div class="resource-card" data-equalizer-watch="resources">
|
||||
<h4><%= t("dashboard.menu.poster") %></h4>
|
||||
<p class="resource-description">
|
||||
<%= Setting["proposals.poster_short_title"] %>
|
||||
</p>
|
||||
|
||||
<div class="small-12 column small-centered margin-top">
|
||||
<%= link_to t("dashboard.resource.view_resource"),
|
||||
new_proposal_dashboard_poster_path(proposal.to_param),
|
||||
class: "button expanded" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
@@ -38,4 +38,4 @@
|
||||
<%= render "summary_recommended_actions" %>
|
||||
<% end %>
|
||||
|
||||
<%= render Dashboard::ResourcesComponent.new(active_resources) %>
|
||||
<%= render Dashboard::ResourcesComponent.new(active_resources, proposal) %>
|
||||
|
||||
Reference in New Issue
Block a user