inline_forms 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.3
1
+ 0.6.0
@@ -117,7 +117,7 @@ class InlineFormsController < ApplicationController
117
117
  if @form_element == "associated"
118
118
  @sub_id = params[:sub_id]
119
119
  if @sub_id.to_i > 0
120
- @associated_record_id = @object.send(@field.singularize + "_ids").index(@sub_id.to_i)
120
+ @associated_record_id = @object.send(@field.to_s.singularize + "_ids").index(@sub_id.to_i)
121
121
  @associated_record = @object.send(@field)[@associated_record_id]
122
122
  end
123
123
  end
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:associated]=:references
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:associated]=:references
3
3
  # associated
4
4
  def associated_show(object, attribute, values)
5
5
  #show a list of records
@@ -7,31 +7,31 @@ module InlineFormsHelper
7
7
  if @sub_id && @sub_id.to_i > 0
8
8
  # if it's not a new record (sub_id > 0) then just update the list-element
9
9
  out << '<li>'
10
- out << link_to( @associated_record.title,
10
+ out << link_to( @associated_record.presentation,
11
11
  send('edit_' + @Klass.to_s.underscore + '_path', object,
12
12
  :field => attribute,
13
13
  :sub_id => @sub_id,
14
14
  :form_element => this_method.reverse.sub(/.*_/,'').reverse,
15
15
  :values => values,
16
- :update => "field_#{attribute.singularize}_#{@sub_id.to_s}" ),
16
+ :update => "field_#{attribute.to_s.singularize}_#{@sub_id.to_s}" ),
17
17
  :method => :get,
18
18
  :remote => true )
19
19
  out << '</li>'
20
20
  else
21
21
  # if it's a new record (sub_id == 0) then update the whole <ul> and redraw all list-elements
22
22
  out << "<ul class='associated #{attribute}' id='list_#{attribute}_#{object.id.to_s}'>" if @sub_id.nil?
23
- if not object.send(attribute.pluralize).empty?
23
+ if not object.send(attribute.to_s.pluralize).empty?
24
24
  # if there are things to show, show them
25
- object.send(attribute.pluralize).each do |m|
26
- out << "<span id='field_#{attribute.singularize}_#{m.id.to_s}'>"
25
+ object.send(attribute.to_s.pluralize).each do |m|
26
+ out << "<span id='field_#{attribute.to_s.singularize}_#{m.id.to_s}'>"
27
27
  out << '<li>'
28
- out << link_to( m.title, send('edit_' + @Klass.to_s.underscore + '_path',
28
+ out << link_to( m.presentation, send('edit_' + @Klass.to_s.underscore + '_path',
29
29
  object,
30
30
  :field => attribute,
31
31
  :sub_id => m.id,
32
32
  :form_element => this_method.sub(/_[a-z]+$/,''),
33
33
  :values => values,
34
- :update => "field_#{attribute.singularize}_#{m.id.to_s}" ),
34
+ :update => "field_#{attribute.to_s.singularize}_#{m.id.to_s}" ),
35
35
  :method => :get,
36
36
  :remote => true )
37
37
  out << '</li>'
@@ -58,13 +58,13 @@ module InlineFormsHelper
58
58
  # @sub_id is the id of the associated record
59
59
  if @sub_id.to_i > 0
60
60
  # only if @sub_id > 0, means we have a associated record
61
- @associated_record_id = object.send(attribute.singularize + "_ids").index(@sub_id.to_i)
61
+ @associated_record_id = object.send(attribute.to_s.singularize + "_ids").index(@sub_id.to_i)
62
62
  @associated_record = object.send(attribute)[@associated_record_id]
63
- @update_span = "field_#{attribute.singularize}_#{@sub_id.to_s}"
63
+ @update_span = "field_#{attribute.to_s.singularize}_#{@sub_id.to_s}"
64
64
  else
65
65
  # but if @sub_id = 0, then we are dealing with a new associated record
66
66
  # in that case, we .new a record, and the update_span is the whole <ul>
67
- @associated_record = attribute.singularize.capitalize.constantize.new
67
+ @associated_record = attribute.to_s.singularize.capitalize.constantize.new
68
68
  @update_span = 'list_' + attribute.to_s + '_' + object.id.to_s
69
69
  end
70
70
  render :partial => "inline_forms/subform"
@@ -73,9 +73,9 @@ module InlineFormsHelper
73
73
  return if object.id.nil?
74
74
  if @sub_id.to_i > 0
75
75
  # get the existing associated record
76
- @associated_record_id = object.send(attribute.singularize + "_ids").index(@sub_id.to_i)
76
+ @associated_record_id = object.send(attribute.to_s.singularize + "_ids").index(@sub_id.to_i)
77
77
  @associated_record = object.send(attribute)[@associated_record_id]
78
- @update_span = "field_" + attribute.singularize + '_' + @sub_id.to_s
78
+ @update_span = "field_" + attribute.to_s.singularize + '_' + @sub_id.to_s
79
79
  else
80
80
  # create a new associated record
81
81
  @associated_record = object.send(attribute.to_sym).new
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:check_box]=:boolean
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:check_box]=:boolean
3
3
  # boolean, bit unaptly named check_box
4
4
  def check_box_show(object, attribute, values)
5
5
  values ||= { 'false' => 'no', 'true' => 'yes' }
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:checklist]=:references
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:checklist]=:references
3
3
  # checklist
4
4
  def checklist_show(object, attribute, values)
5
5
  out = '<ul class="checklist">'
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:date_select]=:date
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:date_select]=:date
3
3
 
4
4
  # date
5
5
  def date_show(object, attribute, values)
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:dropdown]=:integer
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:dropdown]=:integer
3
3
  # dropdown
4
4
  def dropdown_show(object, attribute, values)
5
5
  attribute_value = object.send(attribute).presentation rescue nil
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:dropdown_with_values]=:integer
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:dropdown_with_values]=:integer
3
3
  # dropdown_with_values
4
4
  def dropdown_with_values_show(object, attribute, values)
5
5
  link_to_inline_edit object, attribute, values[object.send(attribute)], values
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:geo_code_curacao]=:string
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:geo_code_curacao]=:string
3
3
  # geo_code_curacao
4
4
  def geo_code_curacao_show(object, attribute, values)
5
5
  attribute_value = object.send(attribute).presentation rescue nil
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:range]=:integer
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:range]=:integer
3
3
  # range
4
4
  def range_show(object, attribute, values)
5
5
  link_to_inline_edit object, attribute, object.send(attribute), nil
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:text_area]=:text
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:text_area]=:text
3
3
  # text_area
4
4
  def text_area_show(object, attribute, values)
5
5
  link_to_inline_edit object, attribute, object.send(attribute), nil
@@ -1,5 +1,5 @@
1
1
  module InlineFormsHelper
2
- InlineForms::MIGRATION_TYPE_CONVERSION_LIST[:text_field]=:string
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:text_field]=:string
3
3
  # text
4
4
  def text_field_show(object, attribute, values)
5
5
  link_to_inline_edit object, attribute, object.send(attribute), nil
@@ -74,7 +74,7 @@ module InlineFormsHelper
74
74
  t = ''
75
75
  objects.each do |object|
76
76
  t += content_tag tag do
77
- inline_form object, object.respond_to?(:inline_forms_field_list) ? object.inline_forms_field_list : [ :name, 'name', 'text' ]
77
+ inline_form object, object.respond_to?(:inline_forms_field_list) ? object.inline_forms_field_list : [ :name, 'name', 'text_field' ]
78
78
  end
79
79
  end
80
80
  return raw(t)
@@ -1,5 +1,5 @@
1
1
  <% form_tag send(@Klass.to_s.underscore + '_path', :update => @update_span ,
2
- #|| @form_element == "associated" ? @sub_id && @sub_id.to_i > 0 ? "field_#{@field.singularize}_#{@sub_id}" : "list_#{@field}_#{@object.id.to_s}" : "field_#{@field}_#{@object.id.to_s}",
2
+ #|| @form_element == "associated" ? @sub_id && @sub_id.to_i > 0 ? "field_#{@field.to_s.singularize}_#{@sub_id}" : "list_#{@field}_#{@object.id.to_s}" : "field_#{@field}_#{@object.id.to_s}",
3
3
  :field => @field,
4
4
  :form_element => @form_element,
5
5
  :values => @values,
data/inline_forms.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{inline_forms}
8
- s.version = "0.5.3"
8
+ s.version = "0.6.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ace Suares"]
12
- s.date = %q{2011-02-08}
12
+ s.date = %q{2011-02-10}
13
13
  s.description = %q{Inline Forms aims to ease the setup of forms that provide inline editing. The field list can be specified in the model.}
14
14
  s.email = %q{ace@suares.an}
15
15
  s.extra_rdoc_files = [
@@ -47,9 +47,9 @@ Gem::Specification.new do |s|
47
47
  "inline_forms.gemspec",
48
48
  "lib/generators/inline_forms/USAGE",
49
49
  "lib/generators/inline_forms/inline_forms_generator.rb",
50
- "lib/generators/inline_forms/templates/controller.rb",
51
- "lib/generators/inline_forms/templates/migration.rb",
52
- "lib/generators/inline_forms/templates/model.rb",
50
+ "lib/generators/inline_forms/templates/controller.erb",
51
+ "lib/generators/inline_forms/templates/migration.erb",
52
+ "lib/generators/inline_forms/templates/model.erb",
53
53
  "lib/inline_forms.rb",
54
54
  "test/helper.rb",
55
55
  "test/test_inline_forms.rb"
@@ -2,44 +2,56 @@ module InlineForms
2
2
  class InlineFormsGenerator < Rails::Generators::NamedBase
3
3
 
4
4
  Rails::Generators::GeneratedAttribute.class_eval do
5
+ # attributes are in the form name:type (f.i. price:integer)
6
+ # we want to extend the types to our list of types
7
+ # but some of the old types are still needed
8
+ # f.i. price:integer turns into a text_field
9
+ #
5
10
  def migration_type
6
- # convert our form_elements to real types for migration
11
+ # convert any type into a migration type
7
12
  # each helper adds to this list
8
13
  # be aware that the standard list overwrites the customized list if we merge like this!
9
- MIGRATION_TYPE_CONVERSION_LIST.merge(STANDARD_MIGRATION_COLUMN_TYPES)[type] || :unknown
14
+ SPECIAL_MIGRATION_TYPES.merge(DEFAULT_MIGRATION_TYPES).merge(RELATION_TYPES).merge(SPECIAL_RELATION_TYPES)[type] || :unknown
10
15
  end
11
16
 
12
17
  def field_type
13
18
  # convert standard types to one of ours
14
- if MIGRATION_TYPE_CONVERSION_LIST.has_key?(type)
15
- then type
16
- else
17
- case type
18
- when :integer, :float, :decimal then :text_field
19
- when :time then :time_select
20
- when :datetime, :timestamp then :datetime_select
21
- when :date then :date_select
22
- when :text then :text_area
23
- when :boolean then :check_box
24
- else
25
- :unknown
26
- end
27
- end
19
+ SPECIAL_MIGRATION_TYPES.merge(RELATION_TYPES).merge(SPECIAL_RELATION_TYPES).has_key?(type) ? type : DEFAULT_FIELD_TYPES[type] || :unknown
28
20
  end
29
21
 
30
- end
22
+ def migration_name
23
+ # convert some to _id
24
+ ( relation? || field_type == :dropdown) ? name + '_id' : name
25
+ end
26
+
27
+ def belongs_to?
28
+ relation? || field_type == :dropdown
29
+ end
30
+
31
+ def has_many?
32
+ field_type == :associated
33
+ end
31
34
 
35
+ def relation?
36
+ RELATION_TYPES.has_key?(field_type)
37
+ end
38
+
39
+ def special_relation?
40
+ SPECIAL_RELATION_TYPES.has_key?(field_type)
41
+ end
42
+
43
+ end
32
44
  argument :attributes, :type => :array, :banner => "[name:form_element]..."
33
45
 
34
46
  source_root File.expand_path('../templates', __FILE__)
35
47
 
36
48
  def generate_model
37
49
  #copy_file "stylesheet.css", "public/stylesheets/#{file_name}.css"
38
- template "model.rb", "app/models/#{model_file_name}.rb"
50
+ template "model.erb", "app/models/#{model_file_name}.rb"
39
51
  end
40
52
 
41
53
  def generate_controller
42
- template "controller.rb", "app/controllers/#{controller_file_name}.rb"
54
+ template "controller.erb", "app/controllers/#{controller_file_name}.rb"
43
55
  end
44
56
 
45
57
  def generate_route
@@ -47,7 +59,7 @@ module InlineForms
47
59
  end
48
60
 
49
61
  def generate_migration
50
- template "migration.rb", "db/migrate/#{time_stamp}_inline_forms_create_#{table_name}.rb"
62
+ template "migration.erb", "db/migrate/#{time_stamp}_inline_forms_create_#{table_name}.rb"
51
63
  end
52
64
 
53
65
  private
@@ -2,7 +2,8 @@ class InlineFormsCreate<%= table_name.camelize %> < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :<%= table_name %> do |t|
4
4
  <% for attribute in attributes -%>
5
- t.<%= attribute.migration_type %> :<%= attribute.name %>
5
+ <%= '#' if attribute.migration_type == :unknown || attribute.special_relation? -%>
6
+ t.<%= attribute.migration_type %> :<%= attribute.migration_name %>
6
7
  <% end -%>
7
8
  t.timestamps
8
9
  end
@@ -0,0 +1,22 @@
1
+ class <%= name %> < ActiveRecord::Base
2
+
3
+ <% for attribute in attributes -%>
4
+ <%= 'belongs_to :' + attribute.name if attribute.belongs_to? %>
5
+ <% end %>
6
+ <% for attribute in attributes -%>
7
+ <%= 'has_many :' + attribute.name if attribute.has_many? %>
8
+ <% end %>
9
+
10
+ def presentation
11
+ 'please define presentation!'
12
+ end
13
+
14
+ def inline_forms_field_list
15
+ [
16
+ <% for attribute in attributes -%>
17
+ <%= '#' if attribute.relation? -%>
18
+ <%= '[ :' + attribute.name + ', "' + attribute.name + '", :' + attribute.field_type.to_s + ' ], ' %>
19
+ <% end -%>
20
+ ]
21
+ end
22
+ end
data/lib/inline_forms.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  puts 'loading inline_forms...'
2
2
 
3
3
  module InlineForms
4
- # put the standard types in the list. new form_elements in app/helpers/form_elelemnts add to this.
5
- STANDARD_MIGRATION_COLUMN_TYPES = {
4
+ # convert type to migration_type
5
+ DEFAULT_MIGRATION_TYPES = {
6
6
  :string => :string,
7
7
  :text => :text,
8
8
  :integer => :integer,
@@ -15,7 +15,30 @@ module InlineForms
15
15
  :binary => :binary,
16
16
  :boolean => :boolean,
17
17
  }
18
- MIGRATION_TYPE_CONVERSION_LIST = {}
18
+ # convert type to field_type
19
+ DEFAULT_FIELD_TYPES = {
20
+ :string => :text_field,
21
+ :text => :text_area,
22
+ :integer => :text_field,
23
+ :float => :text_field,
24
+ :decimal => :text_field,
25
+ :datetime => :datetime_select,
26
+ :timestamp => :datetime_select,
27
+ :time => :time_select,
28
+ :date => :date_select,
29
+ :binary => :text_field,
30
+ :boolean => :check_box,
31
+
32
+ }
33
+ # define this so the helpers can add to it
34
+ SPECIAL_MIGRATION_TYPES = {}
35
+ # experimental
36
+ RELATION_TYPES = {
37
+ :belongs_to => :integer,
38
+ }
39
+ SPECIAL_RELATION_TYPES = {
40
+ :associated => :associated,
41
+ }
19
42
 
20
43
  class InlineFormsEngine < Rails::Engine
21
44
  initializer 'inline_forms.helper' do |app|
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inline_forms
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 5
9
- - 3
10
- version: 0.5.3
8
+ - 6
9
+ - 0
10
+ version: 0.6.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ace Suares
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-08 00:00:00 -04:00
18
+ date: 2011-02-10 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -118,9 +118,9 @@ files:
118
118
  - inline_forms.gemspec
119
119
  - lib/generators/inline_forms/USAGE
120
120
  - lib/generators/inline_forms/inline_forms_generator.rb
121
- - lib/generators/inline_forms/templates/controller.rb
122
- - lib/generators/inline_forms/templates/migration.rb
123
- - lib/generators/inline_forms/templates/model.rb
121
+ - lib/generators/inline_forms/templates/controller.erb
122
+ - lib/generators/inline_forms/templates/migration.erb
123
+ - lib/generators/inline_forms/templates/model.erb
124
124
  - lib/inline_forms.rb
125
125
  - test/helper.rb
126
126
  - test/test_inline_forms.rb
@@ -1,14 +0,0 @@
1
- class <%= name %> < ActiveRecord::Base
2
-
3
- def presentation
4
- #define your presentation here
5
- end
6
-
7
- def inline_forms_field_list
8
- [
9
- <% for attribute in attributes %>
10
- [ :<%= attribute.migration_type %>, '<%= attribute.name %>', :<%= attribute.field_type %> ],
11
- <% end %>
12
- ]
13
- end
14
- end