diff --git a/app/assets/stylesheets/proposal.scss b/app/assets/stylesheets/proposal.scss
index c5d02c38c..98496fe2d 100644
--- a/app/assets/stylesheets/proposal.scss
+++ b/app/assets/stylesheets/proposal.scss
@@ -264,7 +264,6 @@
min-height: 200pt;
.bottom-container {
- position: relative;
padding-left: 0;
padding-right: 0;
@@ -276,32 +275,40 @@
}
}
- .resource-card.success {
- background-color: #c5f6eb;
-
+ .resource-card {
i {
display: inline-block;
width: 20pt;
height: 20pt;
- color: #00cf96;
border-radius: 10pt;
- border: 1pt solid #00cf96;
padding-right: 4pt;
}
}
+ .resource-card.primary {
+ background-color: #d3edf6;
+
+ i {
+ color: #116f8e;
+ border: 1pt solid #116f8e;
+ }
+ }
+
+ .resource-card.success {
+ background-color: #c5f6eb;
+
+ i {
+ color: #00cf96;
+ border: 1pt solid #00cf96;
+ }
+ }
+
.resource-card.alert {
background-color: #ffe5e8;
i {
- display: inline-block;
- width: 20pt;
- height: 20pt;
color: #ff828b;
- border-radius: 10pt;
border: 1pt solid #ff828b;
- padding-right: 4pt;
-
}
}
diff --git a/app/controllers/proposals_dashboard_controller.rb b/app/controllers/proposals_dashboard_controller.rb
index de842190f..d023eb7bd 100644
--- a/app/controllers/proposals_dashboard_controller.rb
+++ b/app/controllers/proposals_dashboard_controller.rb
@@ -37,8 +37,9 @@ class ProposalsDashboardController < Dashboard::BaseController
if @proposal_executed_dashboard_action.save
AdministratorTask.create(source: @proposal_executed_dashboard_action)
- redirect_to proposal_dashboard_index_path(proposal.to_param), { flash: { info: t('.success') } }
+ redirect_to progress_proposal_dashboard_index_path(proposal.to_param), { flash: { info: t('.success') } }
else
+ flash.now[:alert] = @proposal_executed_dashboard_action.errors.full_messages.join('
')
render :new_request
end
end
diff --git a/app/helpers/proposals_dashboard_helper.rb b/app/helpers/proposals_dashboard_helper.rb
index b10acbf9c..ace936650 100644
--- a/app/helpers/proposals_dashboard_helper.rb
+++ b/app/helpers/proposals_dashboard_helper.rb
@@ -90,4 +90,17 @@ module ProposalsDashboardHelper
return nil if params[:group_by] == 'month'
'hollow'
end
+
+ def resource_card_class(resource, proposal)
+ return 'alert' unless resource.active_for?(proposal)
+ return 'success' if resource.executed_for?(proposal)
+ 'primary'
+ end
+
+ def resource_tooltip(resource, proposal)
+ return t('proposals_dashboard.resource.resource_locked') unless resource.active_for?(proposal)
+ return t('proposals_dashboard.resource.view_resource') if resource.executed_for?(proposal)
+ return t('proposals_dashboard.resource.resource_requested') if resource.requested_for?(proposal)
+ t('proposals_dashboard.resource.request_resource')
+ end
end
diff --git a/app/models/proposal_dashboard_action.rb b/app/models/proposal_dashboard_action.rb
index d70f3ec9f..221034ce5 100644
--- a/app/models/proposal_dashboard_action.rb
+++ b/app/models/proposal_dashboard_action.rb
@@ -60,6 +60,20 @@ class ProposalDashboardAction < ActiveRecord::Base
required_supports <= proposal.votes_for.size && day_offset <= (Date.today - published_at).to_i
end
+ def requested_for?(proposal)
+ executed_action = proposal_executed_dashboard_actions.find_by(proposal: proposal)
+ return false if executed_action.nil?
+
+ executed_action.administrator_tasks.any?
+ end
+
+ def executed_for?(proposal)
+ executed_action = proposal_executed_dashboard_actions.find_by(proposal: proposal)
+ return false if executed_action.nil?
+
+ executed_action.administrator_tasks.where.not(executed_at: nil).any?
+ end
+
def self.next_goal_for(proposal)
course_for(proposal).first
end
diff --git a/app/views/proposals_dashboard/_form.html.erb b/app/views/proposals_dashboard/_form.html.erb
index 262a5a9bd..81e8e35a6 100644
--- a/app/views/proposals_dashboard/_form.html.erb
+++ b/app/views/proposals_dashboard/_form.html.erb
@@ -1,4 +1,4 @@
-<% if proposal_dashboard_action.request_to_administrators %>
+<% if proposal_dashboard_action.request_to_administrators && !proposal_dashboard_action.requested_for?(proposal) %>
<%= form_for @proposal_executed_dashboard_action,
url: create_request_proposal_dashboard_url(proposal, proposal_dashboard_action) do |f| %>
- +
@@ -13,7 +15,7 @@
- <% if resource.active_for?(proposal) %> + <% if resource.executed_for?(proposal) %> + <% elsif resource.active_for?(proposal) %> + <% else %> <% end %> @@ -15,10 +19,16 @@