Bugfixing and enhancements

* Fixed common ability: Retired draft proposal can't be published.
* Fixed proposal dashboard view: progress graph is not available for
draft proposals.
This commit is contained in:
Juan Salvador Pérez García
2018-09-13 18:22:59 +02:00
parent 5b5095b37b
commit f875ded0be
3 changed files with 34 additions and 30 deletions

View File

@@ -17,7 +17,7 @@ module Abilities
proposal.editable_by?(user)
end
can :publish, Proposal do |proposal|
proposal.draft? && proposal.author.id == user.id
proposal.draft? && proposal.author.id == user.id && !proposal.retired?
end
can :dashboard, Proposal do |proposal|
proposal.author.id == user.id

View File

@@ -1,37 +1,39 @@
<% content_for :action_title, t("dashboard.progress.title") %>
<% if proposal.published? %>
<% content_for :action_title, t("dashboard.progress.title") %>
<div class="row">
<div class="small-12 column">
<div class="button-group">
<%= link_to t("dashboard.progress.group_by_date"),
progress_proposal_dashboard_index_path(proposal),
class: "button #{daily_selected_class}" %>
<%= link_to t("dashboard.progress.group_by_week"),
progress_proposal_dashboard_index_path(proposal, group_by: 'week'),
class: "button #{weekly_selected_class}" %>
<%= link_to t("dashboard.progress.group_by_month"),
progress_proposal_dashboard_index_path(proposal, group_by: 'month'),
class: "button #{monthly_selected_class}" %>
<div class="row">
<div class="small-12 column">
<div class="button-group">
<%= link_to t("dashboard.progress.group_by_date"),
progress_proposal_dashboard_index_path(proposal),
class: "button #{daily_selected_class}" %>
<%= link_to t("dashboard.progress.group_by_week"),
progress_proposal_dashboard_index_path(proposal, group_by: 'week'),
class: "button #{weekly_selected_class}" %>
<%= link_to t("dashboard.progress.group_by_month"),
progress_proposal_dashboard_index_path(proposal, group_by: 'month'),
class: "button #{monthly_selected_class}" %>
</div>
</div>
</div>
</div>
<div class="small-12 column">
<div id="proposal-graph"
data-proposal-graph-url="<%= proposal_dashboard_supports_path(proposal, format: :json) %>"
data-successful-proposal-graph-url="<%= proposal_dashboard_successful_supports_path(proposal, format: :json) %>"
data-proposal-achievements-url="<%= proposal_dashboard_achievements_path(proposal, format: :json) %>"
data-proposal-graph-group-by="<%= params[:group_by] %>"
data-proposal-graph-progress-label="<%= t("dashboard.progress.progress") %>"
data-proposal-graph-supports-label="<%= t("dashboard.progress.supports") %>"
data-proposal-graph-success-label="<%= t("dashboard.progress.success") %>"
data-proposal-success="<%= Setting["votes_for_proposal_success"] %>"
data-proposal-resources-url="<%= proposal_dashboard_resources_path(proposal, format: :json) %>"
class="c3 proposal-graph"
style="max-height: 320px; position: relative;"></div>
</div>
<div class="small-12 column">
<div id="proposal-graph"
data-proposal-graph-url="<%= proposal_dashboard_supports_path(proposal, format: :json) %>"
data-successful-proposal-graph-url="<%= proposal_dashboard_successful_supports_path(proposal, format: :json) %>"
data-proposal-achievements-url="<%= proposal_dashboard_achievements_path(proposal, format: :json) %>"
data-proposal-graph-group-by="<%= params[:group_by] %>"
data-proposal-graph-progress-label="<%= t("dashboard.progress.progress") %>"
data-proposal-graph-supports-label="<%= t("dashboard.progress.supports") %>"
data-proposal-graph-success-label="<%= t("dashboard.progress.success") %>"
data-proposal-success="<%= Setting["votes_for_proposal_success"] %>"
data-proposal-resources-url="<%= proposal_dashboard_resources_path(proposal, format: :json) %>"
class="c3 proposal-graph"
style="max-height: 320px; position: relative;"></div>
</div>
<%= javascript_include_tag 'dashboard_graphs', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'dashboard_graphs', 'data-turbolinks-track' => true %>
<% end %>
<%= render 'next_goal' %>
<%= render 'recommended_actions' %>

View File

@@ -187,10 +187,12 @@ describe Abilities::Common do
describe 'publishing proposals' do
let(:draft_own_proposal) { create(:proposal, :draft, author: user) }
let(:retired_proposal) { create(:proposal, :draft, :retired, author: user) }
it { should be_able_to(:publish, draft_own_proposal) }
it { should_not be_able_to(:publish, own_proposal) }
it { should_not be_able_to(:publish, proposal) }
it { should_not be_able_to(:publish, retired_proposal) }
end
describe "when level 2 verified" do