diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index 848cd539a..53ae633e2 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -314,7 +314,9 @@ .polls-form, .poll-question-form, .legislation-process-new, -.legislation-process-edit { +.legislation-process-edit, +.milestone-new, +.milestone-edit { @include direct-uploads; } 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_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' %> +
diff --git a/app/views/admin/budget_investments/_milestones.html.erb b/app/views/admin/budget_investments/_milestones.html.erb index 4338dabfd..4002d9468 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 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), method: :delete, diff --git a/app/views/budgets/investments/_milestones.html.erb b/app/views/budgets/investments/_milestones.html.erb index 53738979a..0d0c38984 100644 --- a/app/views/budgets/investments/_milestones.html.erb +++ b/app/views/budgets/investments/_milestones.html.erb @@ -15,6 +15,7 @@ <%= 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 %>

diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index 62dc77d19..13ef24aa5 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -196,6 +196,8 @@ en: table_actions: "Actions" delete: "Delete milestone" no_milestones: "Don't have defined milestones" + image: "Image" + 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..f2090ed1c 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -196,6 +196,8 @@ es: table_actions: "Acciones" delete: "Eliminar hito" no_milestones: "No hay hitos definidos" + image: "Imagen" + show_image: "Ver imagen" new: creating: Crear hito edit: 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