diff --git a/app/controllers/admin/legislation/homepages_controller.rb b/app/controllers/admin/legislation/homepages_controller.rb
new file mode 100644
index 000000000..3cadffd41
--- /dev/null
+++ b/app/controllers/admin/legislation/homepages_controller.rb
@@ -0,0 +1,36 @@
+class Admin::Legislation::HomepagesController < Admin::Legislation::BaseController
+ include Translatable
+
+ load_and_authorize_resource :process, class: "Legislation::Process"
+
+ def edit
+ end
+
+ def update
+ if @process.update(process_params)
+ link = legislation_process_path(@process).html_safe
+ redirect_to :back, notice: t('admin.legislation.processes.update.notice', link: link)
+ else
+ flash.now[:error] = t('admin.legislation.processes.update.error')
+ render :edit
+ end
+ end
+
+ private
+
+ def process_params
+ params.require(:legislation_process).permit(allowed_params)
+ end
+
+ def allowed_params
+ [
+ :homepage,
+ :homepage_enabled,
+ translation_params(::Legislation::Process)
+ ]
+ end
+
+ def resource
+ @process || ::Legislation::Process.find(params[:id])
+ end
+end
diff --git a/app/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb
index 508102d1c..e450b759c 100644
--- a/app/controllers/legislation/processes_controller.rb
+++ b/app/controllers/legislation/processes_controller.rb
@@ -16,7 +16,9 @@ class Legislation::ProcessesController < Legislation::BaseController
draft_version = @process.draft_versions.published.last
allegations_phase = @process.allegations_phase
- if allegations_phase.enabled? && allegations_phase.started? && draft_version.present?
+ if @process.homepage_enabled? && @process.homepage.present?
+ render :show
+ elsif allegations_phase.enabled? && allegations_phase.started? && draft_version.present?
redirect_to legislation_process_draft_version_path(@process, draft_version)
elsif @process.debate_phase.enabled?
redirect_to debate_legislation_process_path(@process)
diff --git a/app/helpers/legislation_helper.rb b/app/helpers/legislation_helper.rb
index 0fc045c16..413dc3515 100644
--- a/app/helpers/legislation_helper.rb
+++ b/app/helpers/legislation_helper.rb
@@ -30,6 +30,7 @@ module LegislationHelper
def legislation_process_tabs(process)
{
"info" => edit_admin_legislation_process_path(process),
+ "homepage" => edit_admin_legislation_process_homepage_path(process),
"questions" => admin_legislation_process_questions_path(process),
"proposals" => admin_legislation_process_proposals_path(process),
"draft_versions" => admin_legislation_process_draft_versions_path(process),
diff --git a/app/models/legislation/process.rb b/app/models/legislation/process.rb
index 28e0b35c3..e9bfe02a4 100644
--- a/app/models/legislation/process.rb
+++ b/app/models/legislation/process.rb
@@ -15,6 +15,7 @@ class Legislation::Process < ActiveRecord::Base
translates :description, touch: true
translates :additional_info, touch: true
translates :milestones_summary, touch: true
+ translates :homepage, touch: true
include Globalizable
PHASES_AND_PUBLICATIONS = %i[draft_phase debate_phase allegations_phase proposals_phase
diff --git a/app/views/admin/legislation/homepages/_form.html.erb b/app/views/admin/legislation/homepages/_form.html.erb
new file mode 100644
index 000000000..e6b7cf2f4
--- /dev/null
+++ b/app/views/admin/legislation/homepages/_form.html.erb
@@ -0,0 +1,28 @@
+<%= render "admin/shared/globalize_tabs",
+ resource: @process,
+ display_style: lambda { |locale| enable_translation_style(@process, locale) } %>
+
+<%= translatable_form_for [:admin, @process], url: url, html: {data: {watch_changes: true}} do |f| %>
+
+ <%= render "shared/errors", resource: @process %>
+
+
+ <%= f.check_box :homepage_enabled, label: t("admin.legislation.processes.form.homepage_enabled") %>
+
+
+ <%= f.translatable_fields do |translations_form| %>
+
+
+ <%= translations_form.cktext_area :homepage,
+ language: I18n.locale,
+ label: t("admin.legislation.processes.form.homepage"),
+ ckeditor: { height: 500, toolbar: 'admin' },
+ hint: t("admin.legislation.processes.form.homepage_description") %>
+
+
+ <% end %>
+
+
+ <%= f.submit(class: "button success expanded", value: t("admin.legislation.processes.#{admin_submit_action(@process)}.submit_button")) %>
+
+<% end %>
diff --git a/app/views/admin/legislation/homepages/edit.html.erb b/app/views/admin/legislation/homepages/edit.html.erb
new file mode 100644
index 000000000..982d0f0e2
--- /dev/null
+++ b/app/views/admin/legislation/homepages/edit.html.erb
@@ -0,0 +1,13 @@
+<% provide :title do %>
+ <%= t("admin.header.title") %> - <%= t("admin.menu.legislation") %> - <%= @process.title %> - <%= t("admin.legislation.homepage.edit.title") %>
+<% end %>
+
+
+ <%= back_link_to admin_legislation_processes_path, t("admin.legislation.processes.edit.back") %>
+
+
<%= @process.title %>
+
+ <%= render 'admin/legislation/processes/subnav', process: @process, active: 'homepage' %>
+
+ <%= render 'form', url: admin_legislation_process_homepage_path(@process) %>
+
diff --git a/app/views/legislation/processes/show.html.erb b/app/views/legislation/processes/show.html.erb
new file mode 100644
index 000000000..fa4c54e97
--- /dev/null
+++ b/app/views/legislation/processes/show.html.erb
@@ -0,0 +1,13 @@
+<% provide :title do %><%= @process.title %><% end %>
+
+<%= render 'legislation/processes/header', process: @process, header: :full %>
+
+<%= render 'documents/additional_documents', documents: @process.documents %>
+
+<%= render 'key_dates', process: @process, phase: :debate_phase %>
+
+
+
+ <%= AdminWYSIWYGSanitizer.new.sanitize(@process.homepage) %>
+
+
diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml
index 042ea82c3..fda201f8a 100644
--- a/config/locales/en/admin.yml
+++ b/config/locales/en/admin.yml
@@ -406,6 +406,9 @@ en:
summary_placeholder: Short summary of the description
description_placeholder: Add a description of the process
additional_info_placeholder: Add an additional information you consider useful
+ homepage: Description
+ homepage_description: Here you can explain the content of the process
+ homepage_enabled: Homepage enabled
index:
create: New process
delete: Delete
@@ -435,10 +438,14 @@ en:
status_planned: Planned
subnav:
info: Information
+ homepage: Homepage
draft_versions: Drafting
questions: Debate
proposals: Proposals
milestones: Following
+ homepage:
+ edit:
+ title: Configure your process homepage
proposals:
index:
title: Proposals
diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml
index 8f974ea35..82e5109b9 100644
--- a/config/locales/es/admin.yml
+++ b/config/locales/es/admin.yml
@@ -406,6 +406,9 @@ es:
summary_placeholder: Resumen corto de la descripción
description_placeholder: Añade una descripción del proceso
additional_info_placeholder: Añade cualquier información adicional que pueda ser de interés
+ homepage: Descripción
+ homepage_description: Aquí puedes explicar el contenido del proceso
+ homepage_enabled: Homepage activada
index:
create: Nuevo proceso
delete: Borrar
@@ -435,10 +438,14 @@ es:
status_planned: Próximamente
subnav:
info: Información
+ homepage: Homepage
draft_versions: Redacción
questions: Debate
proposals: Propuestas
milestones: Seguimiento
+ homepage:
+ edit:
+ title: Configura la homepage del proceso
proposals:
index:
title: Título
diff --git a/config/routes/admin.rb b/config/routes/admin.rb
index 355639068..270a5061c 100644
--- a/config/routes/admin.rb
+++ b/config/routes/admin.rb
@@ -203,6 +203,7 @@ namespace :admin do
end
resources :draft_versions
resources :milestones
+ resource :homepage, only: [:edit, :update]
end
end
diff --git a/db/migrate/20181206153510_add_home_page_to_legislation_processes.rb b/db/migrate/20181206153510_add_home_page_to_legislation_processes.rb
new file mode 100644
index 000000000..f0b513f6d
--- /dev/null
+++ b/db/migrate/20181206153510_add_home_page_to_legislation_processes.rb
@@ -0,0 +1,15 @@
+class AddHomePageToLegislationProcesses < ActiveRecord::Migration
+ def change
+ add_column :legislation_processes, :homepage_enabled, :boolean, default: false
+
+ reversible do |dir|
+ dir.up do
+ Legislation::Process.add_translation_fields! homepage: :text
+ end
+
+ dir.down do
+ remove_column :legislation_process_translations, :homepage
+ end
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index c9b94c457..e3241fd8d 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20181121123512) do
+ActiveRecord::Schema.define(version: 20181206153510) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -631,6 +631,7 @@ ActiveRecord::Schema.define(version: 20181121123512) do
t.text "description"
t.text "additional_info"
t.text "milestones_summary"
+ t.text "homepage"
end
add_index "legislation_process_translations", ["legislation_process_id"], name: "index_199e5fed0aca73302243f6a1fca885ce10cdbb55", using: :btree
@@ -664,6 +665,7 @@ ActiveRecord::Schema.define(version: 20181121123512) do
t.date "draft_start_date"
t.date "draft_end_date"
t.boolean "draft_phase_enabled", default: false
+ t.boolean "homepage_enabled", default: false
end
add_index "legislation_processes", ["allegations_end_date"], name: "index_legislation_processes_on_allegations_end_date", using: :btree
diff --git a/spec/features/legislation/processes_spec.rb b/spec/features/legislation/processes_spec.rb
index d4a38d63d..bac9f43c5 100644
--- a/spec/features/legislation/processes_spec.rb
+++ b/spec/features/legislation/processes_spec.rb
@@ -168,6 +168,32 @@ feature 'Legislation' do
end
end
+ context 'homepage' do
+ scenario 'enabled' do
+ process = create(:legislation_process, homepage_enabled: true,
+ homepage: 'This is the process homepage',
+ debate_start_date: Date.current + 1.day,
+ debate_end_date: Date.current + 2.days)
+
+ visit legislation_process_path(process)
+
+ expect(page).to have_content("This is the process homepage")
+ expect(page).to_not have_content("Participate in the debate")
+ end
+
+ scenario 'disabled', :with_frozen_time do
+ process = create(:legislation_process, homepage_enabled: false,
+ homepage: 'This is the process homepage',
+ debate_start_date: Date.current + 1.day,
+ debate_end_date: Date.current + 2.days)
+
+ visit legislation_process_path(process)
+
+ expect(page).to have_content("This phase is not open yet")
+ expect(page).to_not have_content("This is the process homepage")
+ end
+ end
+
context 'debate phase' do
scenario 'not open', :with_frozen_time do
process = create(:legislation_process, debate_start_date: Date.current + 1.day, debate_end_date: Date.current + 2.days)