[Git][noosfero/noosfero][master] 8 commits: Creates datetime field without save into form
Álax Alves
gitlab at mg.gitlab.com
Wed Aug 28 13:19:48 BRT 2019
Álax Alves pushed to branch master at Noosfero / noosfero
Commits:
6164576c by Guilherme Augusto at 2019-06-18T17:09:52Z
Creates datetime field without save into form
- - - - -
3bd77dd4 by Iasmin Mendes at 2019-06-18T17:10:08Z
Fix submission value
- - - - -
d998bd20 by Guilherme Augusto at 2019-06-18T17:10:16Z
Fixes datetime field interface
- - - - -
7fb9308b by Guilherme Augusto at 2019-06-18T17:15:17Z
Implements unit test about DateTimeField
- - - - -
8b626e29 by Alax Alves at 2019-08-27T16:01:39Z
Fixing migration version and requiring recaptcha
- - - - -
f2d628fa by Alax Alves at 2019-08-28T15:17:23Z
Removing unnecessary migration
- - - - -
da817898 by Alax Alves at 2019-08-28T15:20:51Z
Merge branch 'master' of https://gitlab.com/noosfero/noosfero into adds-datetimes-field
- - - - -
fbe909b2 by Álax Alves at 2019-08-28T16:19:43Z
Merge branch 'adds-datetimes-field' into 'master'
Adds datetimes field to Custom Forms' survey
See merge request noosfero/noosfero!1741
- - - - -
10 changed files:
- app/api/helpers.rb
- db/migrate/20180126121926_create_profile_access_memberships.rb
- plugins/custom_forms/lib/custom_forms_plugin/answer.rb
- + plugins/custom_forms/lib/custom_forms_plugin/date_time_field.rb
- plugins/custom_forms/lib/custom_forms_plugin/helper.rb
- plugins/custom_forms/lib/custom_forms_plugin/submission.rb
- + plugins/custom_forms/test/unit/custom_forms_plugin/date_time_field_test.rb
- plugins/custom_forms/views/custom_forms_plugin_myprofile/_survey.html.erb
- + plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_date_time_field.html.erb
- plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_field.html.erb
Changes:
=====================================
app/api/helpers.rb
=====================================
@@ -1,5 +1,6 @@
require 'base64'
require 'tempfile'
+require 'recaptcha'
module Api
module Helpers
=====================================
db/migrate/20180126121926_create_profile_access_memberships.rb
=====================================
@@ -1,4 +1,4 @@
-class CreateProfileAccessMemberships < ActiveRecord::Migration[4.2]
+class CreateProfileAccessMemberships < ActiveRecord::Migration[5.1]
def up
noosfero_env = ENV['RAILS_ENV']
if noosfero_env != 'production'
=====================================
plugins/custom_forms/lib/custom_forms_plugin/answer.rb
=====================================
@@ -26,6 +26,8 @@ class CustomFormsPlugin::Answer < ApplicationRecord
def value
if field.is_a? CustomFormsPlugin::SelectField
form_answers.map { |f| f.alternative_id }.join(',')
+ elsif field.is_a? CustomFormsPlugin::DateTimeField
+ self['value'].to_date
else
self['value']
end
=====================================
plugins/custom_forms/lib/custom_forms_plugin/date_time_field.rb
=====================================
@@ -0,0 +1,10 @@
+class CustomFormsPlugin::DateTimeField < CustomFormsPlugin::Field
+
+ self.table_name = :custom_forms_plugin_fields
+
+ validates_inclusion_of :show_as, :in => %w(datetime)
+
+ after_initialize do
+ self.show_as ||= 'datetime'
+ end
+end
=====================================
plugins/custom_forms/lib/custom_forms_plugin/helper.rb
=====================================
@@ -55,14 +55,16 @@ module CustomFormsPlugin::Helper
def type_options
[
[c_('Text'), 'text_field' ],
- [_('Select'), 'select_field']
+ [_('Select'), 'select_field'],
+ [_('DateTime'), 'date_time_field']
]
end
def type_to_label(type)
map = {
'text_field' => _('Text field'),
- 'select_field' => _('Select field')
+ 'select_field' => _('Select field'),
+ 'date_time_field' => _('Datetime field')
}
map[type_for_options(type)]
end
@@ -99,6 +101,19 @@ module CustomFormsPlugin::Helper
answer.present? ? answer.alternatives.map {|m| m.id.to_s} : field.alternatives.select {|a| a.selected_by_default}.map{|a| a.id.to_s}
end
+ def display_date_time_field(field, answer, form)
+ html_options = {}
+ date_value = answer.present? ? answer.value : DateTime.now
+ if field.show_as == 'datetime'
+ date_field(
+ "submission[#{field.id}]",
+ date_value,
+ {:disabled => display_disabled?(field, answer)},
+ html_options.merge({:id => :datetime_value})
+ )
+ end
+ end
+
def display_select_field(field, answer, form)
case field.show_as
when 'select'
@@ -111,7 +126,7 @@ module CustomFormsPlugin::Helper
when 'multiple_select'
selected = default_selected(field, answer)
input_name = form.to_s + "[#{field.id}]"
-
+
inputs = hidden_field_tag(input_name, '0')
inputs += select_tag input_name, options_for_select(field.alternatives.map{|a| [a.label, a.id.to_s]}, selected),
:multiple => true, :title => _('Hold down Ctrl to select options'),
=====================================
plugins/custom_forms/lib/custom_forms_plugin/submission.rb
=====================================
@@ -50,7 +50,7 @@ class CustomFormsPlugin::Submission < ApplicationRecord
def chosen_alternatives_from_value(value)
begin
alternatives = []
-
+
if value.kind_of?(String)
alternatives << CustomFormsPlugin::Alternative.find(value) if (value.to_i > 0)
end
=====================================
plugins/custom_forms/test/unit/custom_forms_plugin/date_time_field_test.rb
=====================================
@@ -0,0 +1,16 @@
+require 'test_helper'
+
+class CustomFormsPlugin::DateTimeFieldTest < ActiveSupport::TestCase
+ should 'validate type' do
+ datetime = CustomFormsPlugin::DateTimeField.new()
+
+ datetime.update_attribute(:show_as, 'datetime')
+ assert datetime.invalid?
+
+ end
+
+ should 'field type defaults to datetime when initialized' do
+ datetime = CustomFormsPlugin::DateTimeField.new()
+ assert_equal 'datetime', datetime.show_as
+ end
+end
=====================================
plugins/custom_forms/views/custom_forms_plugin_myprofile/_survey.html.erb
=====================================
@@ -32,4 +32,5 @@
<div class="addition-buttons">
<%= button(:add, _('Add a new text field'), '#', :onclick => "customFormsPlugin.addFields(this, 'fields', #{html_for_field(f, :fields, CustomFormsPlugin::TextField).to_json}); return false")%>
<%= button(:add, _('Add a new select field'), '#', :onclick => "customFormsPlugin.addFields(this, 'fields', #{html_for_field(f, :fields, CustomFormsPlugin::SelectField).to_json}); return false")%>
+ <%= button(:add, _('Add a new datetime field'), '#', :onclick => "customFormsPlugin.addFields(this, 'fields', #{html_for_field(f, :fields, CustomFormsPlugin::DateTimeField).to_json}); return false")%>
</div>
=====================================
plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_date_time_field.html.erb
=====================================
@@ -0,0 +1,11 @@
+<%= render :layout => 'field', :locals => { :f => f } do %>
+ <div class="field-text-default">
+ <div class='formfieldline'>
+ <%= f.label(:value, _('Default date:')) %>
+ <% html_options = {} %>
+ <%= date_field(
+ "datetime", "", {}, html_options.merge({:id => :default_value})
+ ) %>
+ </div>
+ </div>
+<% end %>
=====================================
plugins/custom_forms/views/custom_forms_plugin_myprofile/custom_forms_plugin/_field.html.erb
=====================================
@@ -4,6 +4,8 @@
<%= render partial_for_class(CustomFormsPlugin::SelectField), :f => f %>
<% when 'CustomFormsPlugin::TextField' %>
<%= render partial_for_class(CustomFormsPlugin::TextField), :f => f %>
+<% when 'CustomFormsPlugin::DateTimeField' %>
+ <%= render partial_for_class(CustomFormsPlugin::DateTimeField), :f => f %>
<% else %>
<% raise 'This field has no valid type' %>
<% end %>
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/6e20fa59160b59c8567d2d1cfbd6c627839653e5...fbe909b26c5d03c5e81abd9f0aef89760b4be532
--
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/6e20fa59160b59c8567d2d1cfbd6c627839653e5...fbe909b26c5d03c5e81abd9f0aef89760b4be532
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20190828/1285c80c/attachment-0001.html>
More information about the Noosfero-dev
mailing list