From 35986ea6b540f41fb2b5205f4fbfa99bd6139b79 Mon Sep 17 00:00:00 2001 From: iagirre Date: Tue, 12 Dec 2017 17:55:21 +0100 Subject: [PATCH 1/4] Budget::Investment::Milestone is imageable Admin form attaches an image Milestone list has a column "Image", empty or with a link to the image --- .../admin/budget_investment_milestones_controller.rb | 3 ++- app/models/budget/investment/milestone.rb | 2 ++ app/views/admin/budget_investment_milestones/_form.html.erb | 1 + app/views/admin/budget_investments/_milestones.html.erb | 4 ++++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/budget_investment_milestones_controller.rb b/app/controllers/admin/budget_investment_milestones_controller.rb index fb5f42384..2cea5f471 100644 --- a/app/controllers/admin/budget_investment_milestones_controller.rb +++ b/app/controllers/admin/budget_investment_milestones_controller.rb @@ -40,7 +40,8 @@ class Admin::BudgetInvestmentMilestonesController < Admin::BaseController def milestone_params params.require(:budget_investment_milestone) - .permit(:title, :description, :budget_investment_id) + .permit(:title, :description, :budget_investment_id, + image_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]) end def load_budget_investment diff --git a/app/models/budget/investment/milestone.rb b/app/models/budget/investment/milestone.rb index 9ecbe4dc3..b31b8640e 100644 --- a/app/models/budget/investment/milestone.rb +++ b/app/models/budget/investment/milestone.rb @@ -1,6 +1,8 @@ class Budget class Investment class Milestone < ActiveRecord::Base + include Imageable + belongs_to :investment validates :title, presence: true diff --git a/app/views/admin/budget_investment_milestones/_form.html.erb b/app/views/admin/budget_investment_milestones/_form.html.erb index 95237c2ca..8ed5b8cca 100644 --- a/app/views/admin/budget_investment_milestones/_form.html.erb +++ b/app/views/admin/budget_investment_milestones/_form.html.erb @@ -2,6 +2,7 @@ <%= f.text_field :title, maxlength: Budget::Investment::Milestone.title_max_length %> <%= f.text_area :description, rows: 5 %> + <%= render 'images/admin_image', imageable: @milestone, f: f %> <%= f.submit nil, class: "button success" %> <% end %> diff --git a/app/views/admin/budget_investments/_milestones.html.erb b/app/views/admin/budget_investments/_milestones.html.erb index 4338dabfd..515fb9857 100644 --- a/app/views/admin/budget_investments/_milestones.html.erb +++ b/app/views/admin/budget_investments/_milestones.html.erb @@ -5,6 +5,7 @@ <%= t("admin.milestones.index.table_id") %> <%= t("admin.milestones.index.table_title") %> <%= t("admin.milestones.index.table_description") %> + <%= t("admin.milestones.index.image") %> <%= t("admin.milestones.index.table_actions") %> @@ -20,6 +21,9 @@ <%= milestone.description %> + + <%= link_to 'Ver imagen', milestone.image_url(:large), target: :_blank if milestone.image.present? %> + <%= link_to t("admin.milestones.index.delete"), admin_budget_budget_investment_budget_investment_milestone_path(@investment.budget, @investment, milestone), method: :delete, From 5186149b332475e7eaf0b837c5e9d63696caa1ca Mon Sep 17 00:00:00 2001 From: iagirre Date: Wed, 13 Dec 2017 08:55:08 +0100 Subject: [PATCH 2/4] Add I18n texts for the link to see the image. The image is shown in the public investment window if the milestone has one. --- app/views/admin/budget_investments/_milestones.html.erb | 2 +- app/views/budgets/investments/_milestones.html.erb | 1 + config/locales/en/admin.yml | 1 + config/locales/es/admin.yml | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/views/admin/budget_investments/_milestones.html.erb b/app/views/admin/budget_investments/_milestones.html.erb index 515fb9857..4002d9468 100644 --- a/app/views/admin/budget_investments/_milestones.html.erb +++ b/app/views/admin/budget_investments/_milestones.html.erb @@ -22,7 +22,7 @@ <%= milestone.description %> - <%= link_to 'Ver imagen', milestone.image_url(:large), target: :_blank if milestone.image.present? %> + <%= link_to t("admin.milestones.index.show_image"), milestone.image_url(:large), target: :_blank if milestone.image.present? %> <%= link_to t("admin.milestones.index.delete"), admin_budget_budget_investment_budget_investment_milestone_path(@investment.budget, @investment, milestone), diff --git a/app/views/budgets/investments/_milestones.html.erb b/app/views/budgets/investments/_milestones.html.erb index 53738979a..5cdabcf2a 100644 --- a/app/views/budgets/investments/_milestones.html.erb +++ b/app/views/budgets/investments/_milestones.html.erb @@ -16,6 +16,7 @@ <%= t("budgets.investments.show.milestone_publish_date", publish_date: l(milestone.created_at.to_date)) %>

<%= milestone.description %>

+ <%= image_tag milestone.image_url(:large) if milestone.image.present? %> <% end %> diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 62dc77d19..3226f531d 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -196,6 +196,7 @@ en: table_actions: "Actions" delete: "Delete milestone" no_milestones: "Don't have defined milestones" + show_image: "Show image" new: creating: Create milestone edit: diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index a54cb9bcd..6a052335f 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -196,6 +196,7 @@ es: table_actions: "Acciones" delete: "Eliminar hito" no_milestones: "No hay hitos definidos" + show_image: "Ver imagen" new: creating: Crear hito edit: From 59a4b93a007f0ca8210309fea1af07263680467e Mon Sep 17 00:00:00 2001 From: iagirre Date: Wed, 13 Dec 2017 14:03:46 +0100 Subject: [PATCH 3/4] Add I18n texts for milestone images. Add specs to test admin image uploader and milestones' show. Modify the UI to fit the mockups provided in the issue. --- app/assets/stylesheets/participation.scss | 3 ++- app/views/budgets/investments/_milestones.html.erb | 2 +- config/locales/en/admin.yml | 1 + config/locales/es/admin.yml | 1 + spec/features/admin/budget_investment_milestones_spec.rb | 4 ++++ spec/features/budgets/investments_spec.rb | 2 ++ 6 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index 848cd539a..68ba18f15 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -314,7 +314,8 @@ .polls-form, .poll-question-form, .legislation-process-new, -.legislation-process-edit { +.legislation-process-edit, +.milestone-new { @include direct-uploads; } diff --git a/app/views/budgets/investments/_milestones.html.erb b/app/views/budgets/investments/_milestones.html.erb index 5cdabcf2a..0d0c38984 100644 --- a/app/views/budgets/investments/_milestones.html.erb +++ b/app/views/budgets/investments/_milestones.html.erb @@ -15,8 +15,8 @@ <%= t("budgets.investments.show.milestone_publish_date", publish_date: l(milestone.created_at.to_date)) %> + <%= image_tag(milestone.image_url(:large), {alt: milestone.image.title, class: "margin", id: "image_#{milestone.id}"}) if milestone.image.present? %>

<%= milestone.description %>

- <%= image_tag milestone.image_url(:large) if milestone.image.present? %> <% end %> diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 3226f531d..13ef24aa5 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -196,6 +196,7 @@ en: table_actions: "Actions" delete: "Delete milestone" no_milestones: "Don't have defined milestones" + image: "Image" show_image: "Show image" new: creating: Create milestone diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index 6a052335f..f2090ed1c 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -196,6 +196,7 @@ es: table_actions: "Acciones" delete: "Eliminar hito" no_milestones: "No hay hitos definidos" + image: "Imagen" show_image: "Ver imagen" new: creating: Crear hito diff --git a/spec/features/admin/budget_investment_milestones_spec.rb b/spec/features/admin/budget_investment_milestones_spec.rb index 9bcb78479..7f9e3ff63 100644 --- a/spec/features/admin/budget_investment_milestones_spec.rb +++ b/spec/features/admin/budget_investment_milestones_spec.rb @@ -62,11 +62,14 @@ feature 'Admin budget investment milestones' do context "Edit" do scenario "Change title and description" do milestone = create(:budget_investment_milestone, investment: @investment) + create(:image, imageable: milestone) visit admin_budget_budget_investment_path(@investment.budget, @investment) click_link milestone.title + expect(page).to have_css("img[alt='#{milestone.image.title}']") + fill_in 'budget_investment_milestone_title', with: 'Changed title' fill_in 'budget_investment_milestone_description', with: 'Changed description' @@ -74,6 +77,7 @@ feature 'Admin budget investment milestones' do expect(page).to have_content 'Changed title' expect(page).to have_content 'Changed description' + expect(page).to have_link 'Show image' end end diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index fa7749a4b..9cb1326b1 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -495,6 +495,7 @@ feature 'Budget Investments' do investment = create(:budget_investment) milestone = create(:budget_investment_milestone, investment: investment, title: "New text to show", created_at: DateTime.new(2015, 9, 19).utc) + image = create(:image, imageable: milestone) login_as(user) visit budget_investment_path(budget_id: investment.budget.id, id: investment.id) @@ -505,6 +506,7 @@ feature 'Budget Investments' do expect(page).to have_content(milestone.title) expect(page).to have_content(milestone.description) expect(page).to have_content("Published 2015-09-19") + expect(page.find("#image_#{milestone.id}")['alt']).to have_content image.title end end From b3db7d28f634cfe5270b3ead2bbf7d13890d94fc Mon Sep 17 00:00:00 2001 From: iagirre Date: Wed, 13 Dec 2017 15:58:38 +0100 Subject: [PATCH 4/4] Add style class for editing form --- app/assets/stylesheets/participation.scss | 3 ++- app/views/admin/budget_investment_milestones/edit.html.erb | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index 68ba18f15..53ae633e2 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -315,7 +315,8 @@ .poll-question-form, .legislation-process-new, .legislation-process-edit, -.milestone-new { +.milestone-new, +.milestone-edit { @include direct-uploads; } diff --git a/app/views/admin/budget_investment_milestones/edit.html.erb b/app/views/admin/budget_investment_milestones/edit.html.erb index c72cd840a..d15b5a66a 100644 --- a/app/views/admin/budget_investment_milestones/edit.html.erb +++ b/app/views/admin/budget_investment_milestones/edit.html.erb @@ -2,4 +2,6 @@

<%= t("admin.milestones.edit.title") %>

-<%= render '/admin/budget_investment_milestones/form' %> +
+ <%= render '/admin/budget_investment_milestones/form' %> +