Commit c25f9a54246157c0b200f2e549565511e4ada9ab
Exists in
master
and in
29 other branches
Merge branch 'AI3263' into 'master'
Ai3263: Fixed reordering of forms submissions See merge request !294
Showing
7 changed files
with
51 additions
and
11 deletions
Show diff stats
plugins/custom_forms/controllers/custom_forms_plugin_myprofile_controller.rb
| ... | ... | @@ -65,10 +65,8 @@ class CustomFormsPluginMyprofileController < MyProfileController |
| 65 | 65 | |
| 66 | 66 | def submissions |
| 67 | 67 | @form = CustomFormsPlugin::Form.find(params[:id]) |
| 68 | - @submissions = @form.submissions | |
| 69 | - | |
| 70 | - @sort_by = params[:sort_by] | |
| 71 | - @submissions = @submissions.sort_by { |s| s.profile.present? ? s.profile.name : s.author_name } if @sort_by == 'author' | |
| 68 | + @sort_by = params[:sort_by] == 'author_name' ? 'author_name' : 'created_at' | |
| 69 | + @submissions = @form.submissions.order(@sort_by) | |
| 72 | 70 | |
| 73 | 71 | respond_to do |format| |
| 74 | 72 | format.html | ... | ... |
plugins/custom_forms/db/migrate/20140807042217_fill_in_author_name_on_submission.rb
0 → 100644
| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | +class FillInAuthorNameOnSubmission < ActiveRecord::Migration | |
| 2 | + def up | |
| 3 | + CustomFormsPlugin::Submission.find_each do |submission| | |
| 4 | + unless submission.profile.nil? | |
| 5 | + submission.author_name = submission.profile.name | |
| 6 | + submission.save | |
| 7 | + end | |
| 8 | + end | |
| 9 | + end | |
| 10 | + | |
| 11 | + def down | |
| 12 | + CustomFormsPlugin::Submission.find_each do |submission| | |
| 13 | + unless submission.profile.nil? | |
| 14 | + submission.author_name = nil | |
| 15 | + submission.save | |
| 16 | + end | |
| 17 | + end | |
| 18 | + end | |
| 19 | +end | ... | ... |
plugins/custom_forms/lib/custom_forms_plugin/submission.rb
| ... | ... | @@ -21,6 +21,12 @@ class CustomFormsPlugin::Submission < Noosfero::Plugin::ActiveRecord |
| 21 | 21 | end |
| 22 | 22 | end |
| 23 | 23 | |
| 24 | + before_create do |submission| | |
| 25 | + if submission.profile | |
| 26 | + submission.author_name = profile.name | |
| 27 | + end | |
| 28 | + end | |
| 29 | + | |
| 24 | 30 | def build_answers submission |
| 25 | 31 | self.form.fields.each do |field| |
| 26 | 32 | next unless value = submission[field.id.to_s] |
| ... | ... | @@ -52,4 +58,3 @@ class CustomFormsPlugin::Submission < Noosfero::Plugin::ActiveRecord |
| 52 | 58 | end |
| 53 | 59 | |
| 54 | 60 | end |
| 55 | - | ... | ... |
plugins/custom_forms/test/functional/custom_forms_plugin_myprofile_controller_test.rb
| ... | ... | @@ -220,7 +220,7 @@ class CustomFormsPluginMyprofileControllerTest < ActionController::TestCase |
| 220 | 220 | assert_not_nil assigns(:sort_by) |
| 221 | 221 | assert_select 'table.action-table', /Author\W*Time\W*john[\W\dh]*bob[\W\dh]*/ |
| 222 | 222 | |
| 223 | - get :submissions, :profile => profile.identifier, :id => form.id, :sort_by => 'author' | |
| 223 | + get :submissions, :profile => profile.identifier, :id => form.id, :sort_by => 'author_name' | |
| 224 | 224 | assert_not_nil assigns(:sort_by) |
| 225 | 225 | assert_select 'table.action-table', /Author\W*Time\W*bob[\W\dh]*john[\W\dh]*/ |
| 226 | 226 | end | ... | ... |
plugins/custom_forms/test/unit/custom_forms_plugin/submission_test.rb
| 1 | 1 | require File.dirname(__FILE__) + '/../../../../../test/test_helper' |
| 2 | 2 | |
| 3 | 3 | class CustomFormsPlugin::SubmissionTest < ActiveSupport::TestCase |
| 4 | + def setup | |
| 5 | + @profile = fast_create(Profile) | |
| 6 | + end | |
| 7 | + attr_reader :profile | |
| 8 | + | |
| 4 | 9 | should 'validates presence of form' do |
| 5 | 10 | submission = CustomFormsPlugin::Submission.new |
| 6 | 11 | submission.valid? |
| 7 | 12 | assert submission.errors.include?(:form) |
| 8 | 13 | |
| 9 | - form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => fast_create(Profile)) | |
| 14 | + form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => profile) | |
| 10 | 15 | submission.form = form |
| 11 | 16 | submission.valid? |
| 12 | 17 | assert !submission.errors.include?(:form) |
| 13 | 18 | end |
| 14 | 19 | |
| 15 | 20 | should 'belong to a profile' do |
| 16 | - profile = fast_create(Profile) | |
| 17 | 21 | submission = CustomFormsPlugin::Submission.new |
| 18 | 22 | submission.profile = profile |
| 19 | 23 | assert_equal profile, submission.profile |
| ... | ... | @@ -33,14 +37,21 @@ class CustomFormsPlugin::SubmissionTest < ActiveSupport::TestCase |
| 33 | 37 | end |
| 34 | 38 | |
| 35 | 39 | should 'have answers' do |
| 36 | - form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => fast_create(Profile)) | |
| 40 | + form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => profile) | |
| 37 | 41 | field = CustomFormsPlugin::Field.create!(:name => 'License', :form => form) |
| 38 | - submission = CustomFormsPlugin::Submission.create!(:form => form, :profile => fast_create(Profile)) | |
| 42 | + submission = CustomFormsPlugin::Submission.create!(:form => form, :profile => profile) | |
| 39 | 43 | a1 = submission.answers.create!(:field => field, :submission => submission) |
| 40 | 44 | a2 = submission.answers.create!(:field => field, :submission => submission) |
| 41 | 45 | |
| 42 | 46 | assert_includes submission.answers, a1 |
| 43 | 47 | assert_includes submission.answers, a2 |
| 44 | 48 | end |
| 49 | + | |
| 50 | + should 'store profile name as author' do | |
| 51 | + form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => profile) | |
| 52 | + submission = CustomFormsPlugin::Submission.create(:form => form, :profile => profile) | |
| 53 | + | |
| 54 | + assert_equal profile.name, submission.author_name | |
| 55 | + end | |
| 45 | 56 | end |
| 46 | 57 | ... | ... |
plugins/custom_forms/views/custom_forms_plugin_myprofile/submissions.html.erb
| ... | ... | @@ -10,7 +10,7 @@ |
| 10 | 10 | <%= link_to '[CSV]', :format => 'csv' %> |
| 11 | 11 | </p> |
| 12 | 12 | <p> |
| 13 | - <%= labelled_select(_('Sort by')+': ', :sort_by, :first, :last, @sort_by, [['time', _('Time')], ['author', _('Author')]], :onchange => 'document.location.href = "?sort_by="+this.value') %> | |
| 13 | + <%= labelled_select(_('Sort by')+': ', :sort_by, :first, :last, @sort_by, [['created_at', _('Time')], ['author_name', _('Author')]], :class => 'filter') %> | |
| 14 | 14 | </p> |
| 15 | 15 | <table class="action-table"> |
| 16 | 16 | <tr> |
| ... | ... | @@ -30,3 +30,5 @@ |
| 30 | 30 | <% button_bar do %> |
| 31 | 31 | <%= button :back, _('Back to forms'), :action => 'index' %> |
| 32 | 32 | <% end %> |
| 33 | + | |
| 34 | +<%= javascript_include_tag '../plugins/custom_forms/order' %> | ... | ... |