diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index b22544315..b7d0510b5 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -336,7 +336,8 @@ .draft-panels, .debate-questions, .communities-show, -.topic-show { +.topic-show, +.milestone-content { p { word-wrap: break-word; diff --git a/app/controllers/admin/budget_investment_milestones_controller.rb b/app/controllers/admin/budget_investment_milestones_controller.rb index 6fc18d084..d648a3193 100644 --- a/app/controllers/admin/budget_investment_milestones_controller.rb +++ b/app/controllers/admin/budget_investment_milestones_controller.rb @@ -44,7 +44,8 @@ class Admin::BudgetInvestmentMilestonesController < Admin::BaseController def milestone_params params.require(:budget_investment_milestone) .permit(:title, :description, :publication_date, :budget_investment_id, - image_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]) + image_attributes: [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]), + documents_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 1e3177a23..13724be21 100644 --- a/app/models/budget/investment/milestone.rb +++ b/app/models/budget/investment/milestone.rb @@ -2,6 +2,10 @@ class Budget class Investment class Milestone < ActiveRecord::Base include Imageable + include Documentable + documentable max_documents_allowed: 3, + max_file_size: 3.megabytes, + accepted_content_types: [ "application/pdf" ] belongs_to :investment diff --git a/app/views/admin/budget_investment_milestones/_form.html.erb b/app/views/admin/budget_investment_milestones/_form.html.erb index 9da2937d3..93cd31f63 100644 --- a/app/views/admin/budget_investment_milestones/_form.html.erb +++ b/app/views/admin/budget_investment_milestones/_form.html.erb @@ -8,5 +8,10 @@ <%= render 'images/admin_image', imageable: @milestone, f: f %> +
+
+ <%= render 'documents/nested_documents', documentable: @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 0fc6e890d..6f30f8ad2 100644 --- a/app/views/admin/budget_investments/_milestones.html.erb +++ b/app/views/admin/budget_investments/_milestones.html.erb @@ -7,6 +7,7 @@ <%= t("admin.milestones.index.table_description") %> <%= t("admin.milestones.index.table_publication_date") %> <%= t("admin.milestones.index.image") %> + <%= t("admin.milestones.index.documents") %> <%= t("admin.milestones.index.table_actions") %> @@ -29,6 +30,16 @@ milestone.image_url(:large), target: :_blank if milestone.image.present? %> + + <% if milestone.documents.present? %> + <% milestone.documents.each do |document| %> + <%= link_to document.title, + document.attachment.url, + target: "_blank", + rel: "nofollow" %>
+ <% end %> + <% end %> + <%= link_to t("admin.milestones.index.delete"), admin_budget_budget_investment_budget_investment_milestone_path(@investment.budget, diff --git a/app/views/budgets/investments/_milestones.html.erb b/app/views/budgets/investments/_milestones.html.erb index ae700008d..8065b6142 100644 --- a/app/views/budgets/investments/_milestones.html.erb +++ b/app/views/budgets/investments/_milestones.html.erb @@ -20,6 +20,20 @@ <% end %> <%= image_tag(milestone.image_url(:large), { alt: milestone.image.title, class: "margin", id: "image_#{milestone.id}" }) if milestone.image.present? %>

<%= milestone.description %>

+ <% if milestone.documents.present? %> + + <% end %> <% end %> diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index c6e14779a..071d9c6a4 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -199,6 +199,7 @@ en: no_milestones: "Don't have defined milestones" image: "Image" show_image: "Show image" + documents: "Documents" new: creating: Create milestone edit: diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index f3f5503f8..688d878e1 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -199,6 +199,7 @@ es: no_milestones: "No hay hitos definidos" image: "Imagen" show_image: "Ver imagen" + documents: "Documentos" 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 c7dde7371..0b198f6ab 100644 --- a/spec/features/admin/budget_investment_milestones_spec.rb +++ b/spec/features/admin/budget_investment_milestones_spec.rb @@ -12,6 +12,8 @@ feature 'Admin budget investment milestones' do context "Index" do scenario 'Displaying milestones' do milestone = create(:budget_investment_milestone, investment: @investment) + create(:image, imageable: milestone) + document = create(:document, documentable: milestone) visit admin_budget_budget_investment_path(@investment.budget, @investment) @@ -19,6 +21,8 @@ feature 'Admin budget investment milestones' do expect(page).to have_content(milestone.title) expect(page).to have_content(milestone.id) expect(page).to have_content(milestone.publication_date.to_date) + expect(page).to have_link 'Show image' + expect(page).to have_link document.title end scenario 'Displaying no_milestones text' do @@ -63,11 +67,13 @@ feature 'Admin budget investment milestones' do end context "Edit" do - scenario "Change title and description" do + scenario "Change title, description and document names" do milestone = create(:budget_investment_milestone, investment: @investment) create(:image, imageable: milestone) + document = create(:document, documentable: milestone) visit admin_budget_budget_investment_path(@investment.budget, @investment) + expect(page).to have_link document.title click_link milestone.title @@ -76,6 +82,7 @@ feature 'Admin budget investment milestones' do fill_in 'budget_investment_milestone_title', with: 'Changed title' fill_in 'budget_investment_milestone_description', with: 'Changed description' fill_in 'budget_investment_milestone_publication_date', with: Time.zone.today.to_date + fill_in 'budget_investment_milestone_documents_attributes_0_title', with: 'New document title' click_button 'Update milestone' @@ -83,6 +90,7 @@ feature 'Admin budget investment milestones' do expect(page).to have_content 'Changed description' expect(page).to have_content Time.zone.today.to_date expect(page).to have_link 'Show image' + expect(page).to have_link 'New document title' end end diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index fd0f80b2c..dc0fd4feb 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -503,6 +503,7 @@ feature 'Budget Investments' do investment = create(:budget_investment) milestone = create(:budget_investment_milestone, investment: investment, title: "New text to show") image = create(:image, imageable: milestone) + document = create(:document, documentable: milestone) login_as(user) visit budget_investment_path(budget_id: investment.budget.id, id: investment.id) @@ -514,6 +515,7 @@ feature 'Budget Investments' do expect(page).to have_content(milestone.description) expect(page).to have_content(Time.zone.today.to_date) expect(page.find("#image_#{milestone.id}")['alt']).to have_content image.title + expect(page).to have_link document.title end end