Merge pull request #3152 from NahiaSolutions/add_image_to_legislation_processes

Add image to legislation processes and banner colors
This commit is contained in:
Alberto
2019-01-29 16:06:54 +01:00
committed by GitHub
14 changed files with 148 additions and 9 deletions

View File

@@ -23,11 +23,6 @@
&.light { &.light {
background: #ecf0f1; background: #ecf0f1;
} }
h1,
p {
color: $text;
}
} }
.lead { .lead {

View File

@@ -66,8 +66,11 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll
:result_publication_enabled, :result_publication_enabled,
:published, :published,
:custom_list, :custom_list,
:background_color,
:font_color,
translation_params(::Legislation::Process), translation_params(::Legislation::Process),
documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy] documents_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy],
image_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]
] ]
end end

View File

@@ -37,4 +37,8 @@ module LegislationHelper
"milestones" => admin_legislation_process_milestones_path(process) "milestones" => admin_legislation_process_milestones_path(process)
} }
end end
def banner_color?
@process.background_color.present? && @process.font_color.present?
end
end end

View File

@@ -2,6 +2,7 @@ class Legislation::Process < ActiveRecord::Base
include ActsAsParanoidAliases include ActsAsParanoidAliases
include Taggable include Taggable
include Milestoneable include Milestoneable
include Imageable
include Documentable include Documentable
documentable max_documents_allowed: 3, documentable max_documents_allowed: 3,
max_file_size: 3.megabytes, max_file_size: 3.megabytes,
@@ -43,6 +44,8 @@ class Legislation::Process < ActiveRecord::Base
validates :allegations_end_date, presence: true, if: :allegations_start_date? validates :allegations_end_date, presence: true, if: :allegations_start_date?
validates :proposals_phase_end_date, presence: true, if: :proposals_phase_start_date? validates :proposals_phase_end_date, presence: true, if: :proposals_phase_start_date?
validate :valid_date_ranges validate :valid_date_ranges
validates :background_color, format: { allow_blank: true, with: /\A#?(?:[A-F0-9]{3}){1,2}\z/i }
validates :font_color, format: { allow_blank: true, with: /\A#?(?:[A-F0-9]{3}){1,2}\z/i }
scope :open, -> { where("start_date <= ? and end_date >= ?", Date.current, Date.current) scope :open, -> { where("start_date <= ? and end_date >= ?", Date.current, Date.current)
.order('id DESC') } .order('id DESC') }

View File

@@ -201,6 +201,35 @@
<hr> <hr>
</div> </div>
<div class="images small-12 column">
<%= render 'images/nested_image', imageable: @process, f: f %>
</div>
<div class="small-12 column">
<hr>
</div>
<div class="small-12 column">
<h3><%= t("admin.legislation.processes.form.banner_title") %></h3>
</div>
<div class="row">
<div class="small-3 column">
<%= f.label :sections, t("admin.legislation.processes.form.banner_background_color") %>
<%= color_field(:process, :background_color, id: 'banner_background_color_picker') %>
<%= f.text_field :background_color, label: false, id: 'banner_background_color' %>
</div>
<div class="small-3 column end">
<%= f.label :sections, t("admin.legislation.processes.form.banner_font_color") %>
<%= color_field(:process, :font_color, id: 'banner_font_color_picker') %>
<%= f.text_field :font_color, label: false, id: 'banner_font_color' %>
</div>
</div>
<div class="small-12 column">
<hr>
</div>
<%= f.translatable_fields do |translations_form| %> <%= f.translatable_fields do |translations_form| %>
<div class="small-12 medium-9 column"> <div class="small-12 medium-9 column">
<%= translations_form.text_field :title, <%= translations_form.text_field :title,

View File

@@ -1,7 +1,17 @@
<div class="legislation-hero jumbo"> <div class="legislation-hero jumbo" <% if banner_color? %>
style="background:<%= process.background_color %>; color:<%= process.font_color %>;"
<% end %>>
<div class="row"> <div class="row">
<div class="small-12 medium-9 column"> <div class="small-12 medium-9 column">
<% if banner_color? %>
<%= link_to t("shared.back"), legislation_processes_path,
class: "icon-angle-left",
style: "color:#{process.font_color};" %>
<% else %>
<%= back_link_to legislation_processes_path %> <%= back_link_to legislation_processes_path %>
<% end %>
<h2><%= @process.title %></h2> <h2><%= @process.title %></h2>
<% if header == :small %> <% if header == :small %>
@@ -35,6 +45,11 @@
description: @process.title description: @process.title
} %> } %>
<% if @process.image.present? %>
<hr>
<%= image_tag(@process.image_url(:large), alt: @process.title, id:'image') %>
<% end %>
<% if process.draft_publication.enabled? %> <% if process.draft_publication.enabled? %>
<div class="sidebar-divider"></div> <div class="sidebar-divider"></div>
<p class="sidebar-title"> <p class="sidebar-title">

View File

@@ -10,7 +10,10 @@
<%= markdown @process.additional_info if @process.additional_info %> <%= markdown @process.additional_info if @process.additional_info %>
</div> </div>
<a class="button" data-toggle="additional_info"> <a class="button" data-toggle="additional_info"
<% if banner_color? %>
style="background:<%= process.font_color %>; color:<%= process.background_color %>;"
<% end %>>
<%= t("legislation.processes.header.additional_info") %> <%= t("legislation.processes.header.additional_info") %>
</a> </a>
<% end %> <% end %>

View File

@@ -438,6 +438,9 @@ en:
homepage: Description homepage: Description
homepage_description: Here you can explain the content of the process homepage_description: Here you can explain the content of the process
homepage_enabled: Homepage enabled homepage_enabled: Homepage enabled
banner_title: Banner colors
banner_background_color: Background colour
banner_font_color: Font colour
index: index:
create: New process create: New process
delete: Delete delete: Delete

View File

@@ -439,6 +439,9 @@ es:
homepage: Descripción homepage: Descripción
homepage_description: Aquí puedes explicar el contenido del proceso homepage_description: Aquí puedes explicar el contenido del proceso
homepage_enabled: Homepage activada homepage_enabled: Homepage activada
banner_title: Colores del banner
banner_background_color: Color de fondo
banner_font_color: Color del texto
index: index:
create: Nuevo proceso create: Nuevo proceso
delete: Borrar delete: Borrar

View File

@@ -0,0 +1,6 @@
class AddHeaderColorSettingsToLegislationProcesses < ActiveRecord::Migration
def change
add_column :legislation_processes, :background_color, :text
add_column :legislation_processes, :font_color, :text
end
end

View File

@@ -666,6 +666,8 @@ ActiveRecord::Schema.define(version: 20190103132925) do
t.date "draft_end_date" t.date "draft_end_date"
t.boolean "draft_phase_enabled", default: false t.boolean "draft_phase_enabled", default: false
t.boolean "homepage_enabled", default: false t.boolean "homepage_enabled", default: false
t.text "background_color"
t.text "font_color"
end end
add_index "legislation_processes", ["allegations_end_date"], name: "index_legislation_processes_on_allegations_end_date", using: :btree add_index "legislation_processes", ["allegations_end_date"], name: "index_legislation_processes_on_allegations_end_date", using: :btree

View File

@@ -131,6 +131,28 @@ feature 'Admin legislation processes' do
expect(page).not_to have_content 'Summary of the process' expect(page).not_to have_content 'Summary of the process'
expect(page).not_to have_content 'Describing the process' expect(page).not_to have_content 'Describing the process'
end end
scenario "Create a legislation process with an image", :js do
visit new_admin_legislation_process_path()
fill_in 'Process Title', with: 'An example legislation process'
fill_in 'Summary', with: 'Summary of the process'
base_date = Date.current
fill_in 'legislation_process[start_date]', with: base_date.strftime("%d/%m/%Y")
fill_in 'legislation_process[end_date]', with: (base_date + 5.days).strftime("%d/%m/%Y")
imageable_attach_new_file(create(:image), Rails.root.join('spec/fixtures/files/clippy.jpg'))
click_button 'Create process'
expect(page).to have_content 'An example legislation process'
expect(page).to have_content 'Process created successfully'
click_link 'Click to visit'
expect(page).to have_content 'An example legislation process'
expect(page).not_to have_content 'Summary of the process'
expect(page).to have_css("img[alt='#{Legislation::Process.last.title}']")
end
end end
context 'Update' do context 'Update' do

View File

@@ -0,0 +1,31 @@
require 'rails_helper'
describe LegislationHelper do
let(:process) { build(:legislation_process) }
it "is valid" do
expect(process).to be_valid
end
describe "banner colors presence" do
it "background and font color exist" do
@process = build(:legislation_process, background_color: "#944949", font_color: "#ffffff")
expect(banner_color?).to eq(true)
end
it "background color exist and font color not exist" do
@process = build(:legislation_process, background_color: "#944949", font_color: "")
expect(banner_color?).to eq(false)
end
it "background color not exist and font color exist" do
@process = build(:legislation_process, background_color: "", font_color: "#944949")
expect(banner_color?).to eq(false)
end
it "background and font color not exist" do
@process = build(:legislation_process, background_color: "", font_color: "")
expect(banner_color?).to eq(false)
end
end
end

View File

@@ -177,4 +177,24 @@ describe Legislation::Process do
end end
end end
describe "banner colors" do
it "valid banner colors" do
process1 = create(:legislation_process, background_color: "123", font_color: "#fff")
process2 = create(:legislation_process, background_color: "#fff", font_color: "123")
process3 = create(:legislation_process, background_color: "", font_color: "")
process4 = create(:legislation_process, background_color: "#abf123", font_color: "fff123")
expect(process1).to be_valid
expect(process2).to be_valid
expect(process3).to be_valid
expect(process4).to be_valid
end
it "invalid banner colors" do
expect {
process1 = create(:legislation_process, background_color: "#123ghi", font_color: "#fff")
process2 = create(:legislation_process, background_color: "#ffffffff", font_color: "#123")
}.to raise_error(ActiveRecord::RecordInvalid, "Validation failed: Background color is invalid")
end
end
end end