diff --git a/app/controllers/admin/proposal_dashboard_actions_controller.rb b/app/controllers/admin/proposal_dashboard_actions_controller.rb
index ff5126a64..30fa994fe 100644
--- a/app/controllers/admin/proposal_dashboard_actions_controller.rb
+++ b/app/controllers/admin/proposal_dashboard_actions_controller.rb
@@ -8,7 +8,13 @@ class Admin::ProposalDashboardActionsController < Admin::BaseController
end
def new
- @proposal_dashboard_action = ProposalDashboardAction.new(active: true, day_offset: 0, required_supports: 0, request_to_administrators: true)
+ @proposal_dashboard_action = ProposalDashboardAction.new(
+ active: true,
+ day_offset: 0,
+ required_supports: 0,
+ request_to_administrators: true,
+ action_type: 'proposed_action'
+ )
end
def create
@@ -41,7 +47,7 @@ class Admin::ProposalDashboardActionsController < Admin::BaseController
def proposal_dashboard_action_params
params
.require(:proposal_dashboard_action)
- .permit(:title, :description, :link, :request_to_administrators, :day_offset, :required_supports, :order, :active)
+ .permit(:title, :description, :link, :request_to_administrators, :day_offset, :required_supports, :order, :active, :action_type)
end
diff --git a/app/models/proposal_dashboard_action.rb b/app/models/proposal_dashboard_action.rb
index 8a548cd2b..6dd581485 100644
--- a/app/models/proposal_dashboard_action.rb
+++ b/app/models/proposal_dashboard_action.rb
@@ -4,6 +4,8 @@ class ProposalDashboardAction < ActiveRecord::Base
acts_as_paranoid column: :hidden_at
include ActsAsParanoidAliases
+ enum action_type: %i[proposed_action resource]
+
validates :title,
presence: true,
allow_blank: false,
@@ -14,6 +16,8 @@ class ProposalDashboardAction < ActiveRecord::Base
allow_blank: false,
length: { in: 4..255 }
+ validates :action_type, presence: true
+
validates :day_offset,
presence: true,
numericality: {
diff --git a/app/views/admin/proposal_dashboard_actions/_form.html.erb b/app/views/admin/proposal_dashboard_actions/_form.html.erb
index 075aa13c6..1b1f7a3aa 100644
--- a/app/views/admin/proposal_dashboard_actions/_form.html.erb
+++ b/app/views/admin/proposal_dashboard_actions/_form.html.erb
@@ -16,6 +16,15 @@
+
+ <%= f.label :action_type %>
+ <% ProposalDashboardAction.action_types.keys.each do |action_type_value| %>
+ <%= f.radio_button :action_type, action_type_value, label: false %>
+ <%= f.label "action_type_#{action_type_value}", t("admin.proposal_dashboard_actions.action_type.#{action_type_value}") %>
+
+ <% end %>
+
+
<%= f.check_box :request_to_administrators, label: ProposalDashboardAction.human_attribute_name(:request_to_administrators) %>
diff --git a/app/views/admin/proposal_dashboard_actions/index.html.erb b/app/views/admin/proposal_dashboard_actions/index.html.erb
index f2897150c..807e7d797 100644
--- a/app/views/admin/proposal_dashboard_actions/index.html.erb
+++ b/app/views/admin/proposal_dashboard_actions/index.html.erb
@@ -9,6 +9,7 @@
| <%= ProposalDashboardAction.human_attribute_name(:title) %> |
+ <%= ProposalDashboardAction.human_attribute_name(:action_type) %> |
<%= ProposalDashboardAction.human_attribute_name(:active) %> |
|
@@ -24,6 +25,7 @@
<% @proposal_dashboard_actions.each do |action| %>
| <%= action.title %> |
+ <%= t("admin.proposal_dashboard_actions.action_type.#{action.action_type}") %> |
<%= active_human_readable(action.active) %> |
<%= link_to t('admin.proposal_dashboard_actions.index.edit'),
diff --git a/config/locales/en/activerecord.yml b/config/locales/en/activerecord.yml
index 22b83bc1d..d305d3bbf 100644
--- a/config/locales/en/activerecord.yml
+++ b/config/locales/en/activerecord.yml
@@ -271,6 +271,7 @@ en:
required_supports: Required supports for the activation
order: Order
active: Active
+ action_type: Type
errors:
models:
user:
diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml
index de30a03ee..1c81a9343 100644
--- a/config/locales/en/admin.yml
+++ b/config/locales/en/admin.yml
@@ -1091,6 +1091,9 @@ en:
success: Geozone successfully deleted
error: This geozone can't be deleted since there are elements attached to it
proposal_dashboard_actions:
+ action_type:
+ proposed_action: Proposed action
+ resource: Resource
index:
create: Create
edit: Edit
diff --git a/config/locales/es/activerecord.yml b/config/locales/es/activerecord.yml
index 20ef0b330..cd9376892 100644
--- a/config/locales/es/activerecord.yml
+++ b/config/locales/es/activerecord.yml
@@ -272,6 +272,7 @@ es:
required_supports: Soportes requeridos para la activación
order: Orden
active: Activa
+ action_type: Tipo
errors:
models:
user:
diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml
index a77b9cc07..13b66a2dc 100644
--- a/config/locales/es/admin.yml
+++ b/config/locales/es/admin.yml
@@ -1091,6 +1091,9 @@ es:
success: Distrito borrado correctamente
error: No se puede borrar el distrito porque ya tiene elementos asociados
proposal_dashboard_actions:
+ action_type:
+ proposed_action: Acción propuesta
+ resource: Recurso
index:
create: Crear
edit: Editar
diff --git a/db/migrate/20180612072003_add_action_type_to_proposal_dashboard_actions.rb b/db/migrate/20180612072003_add_action_type_to_proposal_dashboard_actions.rb
new file mode 100644
index 000000000..58bb748ce
--- /dev/null
+++ b/db/migrate/20180612072003_add_action_type_to_proposal_dashboard_actions.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddActionTypeToProposalDashboardActions < ActiveRecord::Migration
+ def change
+ add_column :proposal_dashboard_actions, :action_type, :integer, null: false, default: 0
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 8b2b2c2e2..e4decd4e8 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -888,6 +888,7 @@ ActiveRecord::Schema.define(version: 20180711224810) do
t.integer "order", default: 0
t.boolean "active", default: true
t.datetime "hidden_at"
+ t.integer "action_type", default: 0, null: false
end
create_table "proposal_notifications", force: :cascade do |t|
diff --git a/spec/factories.rb b/spec/factories.rb
index 5dce17d4d..3707da650 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -1039,6 +1039,7 @@ LOREM_IPSUM
order 0
active true
hidden_at nil
+ action_type 'proposed_action'
trait :admin_request do
link nil
@@ -1061,5 +1062,13 @@ LOREM_IPSUM
trait :deleted do
hidden_at { Time.now.utc }
end
+
+ trait :proposed_action do
+ action_type 'proposed_action'
+ end
+
+ trait :resource do
+ action_type 'resource'
+ end
end
end
diff --git a/spec/models/proposal_dashboard_action_spec.rb b/spec/models/proposal_dashboard_action_spec.rb
index 006970547..875820090 100644
--- a/spec/models/proposal_dashboard_action_spec.rb
+++ b/spec/models/proposal_dashboard_action_spec.rb
@@ -9,7 +9,8 @@ describe ProposalDashboardAction do
day_offset: day_offset,
required_supports: required_supports,
link: link,
- request_to_administrators: request_to_administrators
+ request_to_administrators: request_to_administrators,
+ action_type: action_type
end
let(:title) { Faker::Lorem.sentence }
@@ -18,6 +19,7 @@ describe ProposalDashboardAction do
let(:required_supports) { 0 }
let(:link) { nil }
let(:request_to_administrators) { true }
+ let(:action_type) { 'resource' }
it { is_expected.to be_valid }
@@ -126,5 +128,11 @@ describe ProposalDashboardAction do
it { is_expected.to be_valid }
end
end
+
+ context 'when action type is nil' do
+ let(:action_type) { nil }
+
+ it { is_expected.not_to be_valid }
+ end
end
|