From c3f4ea2b96b37539085f36aa0f7be48128a8f054 Mon Sep 17 00:00:00 2001 From: Aurélio A. Heckert Date: Wed, 6 May 2015 13:22:47 -0300 Subject: [PATCH] Better custom forms submissions display --- plugins/custom_forms/lib/custom_forms_plugin/answer.rb | 10 +++++++--- plugins/custom_forms/lib/custom_forms_plugin/helper.rb | 5 +++-- plugins/custom_forms/lib/custom_forms_plugin/submission.rb | 8 ++++++++ plugins/custom_forms/public/style.css | 29 +++++++++++++++++++++++++++++ plugins/custom_forms/views/custom_forms_plugin_myprofile/show_submission.html.erb | 45 +++++++++++++++++++++++++++++++++++++++++++-- plugins/custom_forms/views/custom_forms_plugin_profile/show.html.erb | 5 +++++ 6 files changed, 95 insertions(+), 7 deletions(-) diff --git a/plugins/custom_forms/lib/custom_forms_plugin/answer.rb b/plugins/custom_forms/lib/custom_forms_plugin/answer.rb index c7730a9..0842914 100644 --- a/plugins/custom_forms/lib/custom_forms_plugin/answer.rb +++ b/plugins/custom_forms/lib/custom_forms_plugin/answer.rb @@ -14,10 +14,14 @@ class CustomFormsPlugin::Answer < ActiveRecord::Base end end - def to_s - return value if value.blank? || field.alternatives.blank? + def to_text_list + return [value] if value.blank? || field.alternatives.blank? selected = value.split(',') - field.alternatives.select {|alt| selected.include? alt.id.to_s }.map(&:label).join(';') + field.alternatives.select {|alt| selected.include? alt.id.to_s }.map(&:label) + end + + def to_s + to_text_list.join(';') end end diff --git a/plugins/custom_forms/lib/custom_forms_plugin/helper.rb b/plugins/custom_forms/lib/custom_forms_plugin/helper.rb index 6c4027e..6995fd1 100644 --- a/plugins/custom_forms/lib/custom_forms_plugin/helper.rb +++ b/plugins/custom_forms/lib/custom_forms_plugin/helper.rb @@ -69,12 +69,13 @@ module CustomFormsPlugin::Helper end def display_custom_field(field, submission, form) + sanitized_name = ActionView::Base.white_list_sanitizer.sanitize field.name answer = submission.answers.select{|answer| answer.field == field}.first field_tag = send("display_#{type_for_options(field.class)}",field, answer, form) if field.mandatory? && submission.id.nil? - required(labelled_form_field(field.name, field_tag)) + required(labelled_form_field(sanitized_name, field_tag)) else - labelled_form_field(field.name, field_tag) + labelled_form_field(sanitized_name, field_tag) end end diff --git a/plugins/custom_forms/lib/custom_forms_plugin/submission.rb b/plugins/custom_forms/lib/custom_forms_plugin/submission.rb index b02cd82..fbd8a24 100644 --- a/plugins/custom_forms/lib/custom_forms_plugin/submission.rb +++ b/plugins/custom_forms/lib/custom_forms_plugin/submission.rb @@ -49,6 +49,14 @@ class CustomFormsPlugin::Submission < Noosfero::Plugin::ActiveRecord self.answers end + def q_and_a + qa = {} + form.fields.each do |f| + self.answers.select{|a| a.field == f}.map{|answer| qa[f] = answer } + end + qa + end + protected def check_answers diff --git a/plugins/custom_forms/public/style.css b/plugins/custom_forms/public/style.css index fc52382..635aeb6 100644 --- a/plugins/custom_forms/public/style.css +++ b/plugins/custom_forms/public/style.css @@ -89,3 +89,32 @@ tr.addition-buttons { border: 1px solid #BBB; border-radius: 4px; } + +#custom-forms-plugin_submission .notify { + padding: 8px; + color: rgba(0,0,0,0.5); +} + +#custom-forms-plugin_submission-view th { + border: none; + text-align: right; +} +#custom-forms-plugin_submission-view td { + padding: 5px 0; +} + +#custom-forms-plugin_submission-view td img { + vertical-align: middle; +} + +#custom-forms-plugin_submission-view td ul { + padding: 0; + margin: 0; +} +#custom-forms-plugin_submission-view td li { + list-style: none; + background: url('data:image/svg+xml;utf8,') no-repeat 0 50%; + padding: 0 0 0 20px; + margin: 0; +} + diff --git a/plugins/custom_forms/views/custom_forms_plugin_myprofile/show_submission.html.erb b/plugins/custom_forms/views/custom_forms_plugin_myprofile/show_submission.html.erb index 16e2781..62f3962 100644 --- a/plugins/custom_forms/views/custom_forms_plugin_myprofile/show_submission.html.erb +++ b/plugins/custom_forms/views/custom_forms_plugin_myprofile/show_submission.html.erb @@ -1,10 +1,51 @@ +
+

<%= @form.name %>

<%= @form.description %>

-<%= fields_for :submission, @submission do |f| %> - <%= render :partial => 'shared/form_submission', :locals => {:f => f} %> +<% sanitizer = ActionView::Base.white_list_sanitizer %> + + + + + + + + <% if author = @submission.profile %> + + <% else %> + + <% end %> + +<% @submission.q_and_a.each do |field, answer| %> + + + + <% end %> +
<%= _('Submission date') %><%= @submission.updated_at.strftime('%Y/%m/%d %T %Z') %> +
<%= _('Author') %> + <%= link_to(image_tag(profile_icon(author, :portrait)), author.url) %> + <%= link_to(author.name, author.url) %> + + <%= + img = image_tag gravatar_profile_image_url @submission.author_email, :size=>64, :d => gravatar_default + sanitizer.sanitize link_to(img +' '+ @submission.author_name, "mailto:#{@submission.author_email}") + %> + (<%= _('Unauthenticated') %>) +
<%= sanitizer.sanitize field.name %><%= + answer = if answer.field.alternatives.blank? + answer.to_s.gsub("\n", '
') + else + content_tag :ul do + answer.to_text_list.map {|a| content_tag :li, a }.join("\n") + end + end + sanitizer.sanitize answer + %>
<% button_bar do %> <%= button :back, _('Back to submissions'), :action => 'submissions', :id => @form.id %> <% end %> + +
diff --git a/plugins/custom_forms/views/custom_forms_plugin_profile/show.html.erb b/plugins/custom_forms/views/custom_forms_plugin_profile/show.html.erb index 373afe8..62eba25 100644 --- a/plugins/custom_forms/views/custom_forms_plugin_profile/show.html.erb +++ b/plugins/custom_forms/views/custom_forms_plugin_profile/show.html.erb @@ -1,3 +1,5 @@ +
+

<%= @form.name %>

<%= @form.description %>

@@ -26,6 +28,7 @@ <% else %> <%= submit_button :save, c_('Save'), :cancel => {:controller => :profile, :profile => profile.identifier} %> <% end %> +
<%= _("Your e-mail will be visible to this form's owners.") %>
<% end %> <% end %> @@ -34,3 +37,5 @@ <%= render :partial => 'shared/form_submission', :locals => {:f => f} %> <% end %> <% end %> + +
-- libgit2 0.21.2