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>
|
<h3 class="title"><%= t("dashboard.resources.available_resources") %></h3>
|
||||||
|
|
||||||
<div data-equalizer="resources" data-equalize-on="medium">
|
<div data-equalizer="resources" data-equalize-on="medium">
|
||||||
<%= render "poll_resource" %>
|
<% default_resources.each do |resource| %>
|
||||||
<%= render "mailing_resource" %>
|
<%= render Dashboard::DefaultResourceComponent.new(resource, proposal) %>
|
||||||
<%= render "poster_resource" %>
|
<% end %>
|
||||||
<%= render partial: "resource", collection: active_resources %>
|
<%= render partial: "resource", collection: active_resources %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
class Dashboard::ResourcesComponent < ApplicationComponent
|
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
|
@active_resources = active_resources
|
||||||
|
@proposal = proposal
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def default_resources
|
||||||
|
%w[polls mailing poster]
|
||||||
|
end
|
||||||
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" %>
|
<%= render "summary_recommended_actions" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= render Dashboard::ResourcesComponent.new(active_resources) %>
|
<%= render Dashboard::ResourcesComponent.new(active_resources, proposal) %>
|
||||||
|
|||||||
Reference in New Issue
Block a user