Unify dashboard default resources partials to a component

This commit is contained in:
taitus
2025-06-27 10:20:49 +02:00
committed by Javi Martín
parent 048c8ce917
commit 9b0675aa06
8 changed files with 52 additions and 54 deletions

View 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>

View 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

View File

@@ -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>

View File

@@ -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
private
def default_resources
%w[polls mailing poster]
end end
end end

View File

@@ -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 %>

View File

@@ -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 %>

View File

@@ -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 %>

View File

@@ -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) %>