diff --git a/app/models/concerns/exportable_plan.rb b/app/models/concerns/exportable_plan.rb index fe34e50..c55aa2f 100644 --- a/app/models/concerns/exportable_plan.rb +++ b/app/models/concerns/exportable_plan.rb @@ -1,15 +1,15 @@ module ExportablePlan extend ActiveSupport::Concern - + included do - + def as_pdf(coversheet = false) prepare(coversheet) end - + def as_csv(headings = true, unanswered = true) hash = prepare(false) - + CSV.generate do |csv| hdrs = (hash[:phases].length > 1 ? [_('Phase')] : []) if headings @@ -17,7 +17,7 @@ else csv << _('Answer') end - + csv << hdrs.flatten hash[:phases].each do |phase| phase[:sections].each do |section| @@ -31,24 +31,24 @@ else flds << [ sanitize_text(answer_text) ] end - + csv << flds.flatten end end end end end - - private + + private def prepare(coversheet = false) hash = coversheet ? prepare_coversheet : {} template = Template.includes(phases: { sections: {questions: :question_format } }). joins(phases: { sections: { questions: :question_format } }). where(id: self.template_id).first - + hash[:title] = self.title hash[:answers] = self.answers - + # add the relevant questions/answers phases = [] template.phases.each do |phase| @@ -65,19 +65,19 @@ else txt << question.text end - sctn[:questions] << { id: question.id, text: txt } + sctn[:questions] << { id: question.id, text: txt, format: question.question_format } end phs[:sections] << sctn end phases << phs end hash[:phases] = phases - + record_plan_export(:pdf) - + hash end - + def prepare_coversheet hash = {} # name of owner and any co-owners @@ -86,10 +86,10 @@ attribution << role.user.name(false) end hash[:attribution] = attribution - + # Org name of plan owner's org hash[:affiliation] = self.owner.present? ? self.owner.org.name : '' - + # set the funder name hash[:funder] = self.funder_name.present? ? self.funder_name : (self.template.org.present? ? self.template.org.name : '') @@ -104,7 +104,7 @@ hash[:customizer] = customizer hash end - + def record_plan_export(format) exported_plan = ExportedPlan.new.tap do |ep| ep.plan = self @@ -118,9 +118,9 @@ end exported_plan.save end - + def sanitize_text(text) if (!text.nil?) then ActionView::Base.full_sanitizer.sanitize(text.gsub(/ /i,"")) end end end -end \ No newline at end of file +end diff --git a/app/models/exported_plan.rb b/app/models/exported_plan.rb index bc42e4b..bb79837 100644 --- a/app/models/exported_plan.rb +++ b/app/models/exported_plan.rb @@ -11,11 +11,11 @@ VALID_FORMATS = ['csv', 'html', 'pdf', 'text', 'docx'] - validates :format, inclusion: { + validates :format, inclusion: { in: VALID_FORMATS, - message: -> (object, data) do - _('%{value} is not a valid format') % { :value => data[:value] } - end + message: -> (object, data) do + _('%{value} is not a valid format') % { :value => data[:value] } + end } validates :plan, :format, presence: {message: _("can't be blank")} diff --git a/app/views/shared/export/_plan.erb b/app/views/shared/export/_plan.erb index a17f464..f9fdf65 100644 --- a/app/views/shared/export/_plan.erb +++ b/app/views/shared/export/_plan.erb @@ -3,14 +3,13 @@
<%= _('Question not answered.') -%>
<% elsif !blank %> - <% if answer.question_options.length > 0 %> + <% if options.present?%><%= raw ah['text'] %>
<% else %><%= raw answer.text %>
<% end %> @@ -60,4 +71,4 @@ <% end %> <% end %> -