inline_forms 0.7.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,20 +1,17 @@
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.to_s.singularize}_#{@sub_id}" : "list_#{@field}_#{@object.id.to_s}" : "field_#{@field}_#{@object.id.to_s}",
3
- :field => @field,
2
+ :attribute => @attribute,
4
3
  :form_element => @form_element,
5
- :values => @values,
6
4
  :sub_id => @sub_id ),
7
5
  :method => :put, # this is going to the update method!
8
- :multipart => true,
6
+ :multipart => true,
9
7
  :class => "edit_form",
10
8
  :remote => true do -%>
11
9
  <div class="edit_form_field">
12
- <%= send("#{@form_element.to_s}_edit", @object, @field, @values) %>
10
+ <%= send("#{@form_element.to_s}_edit", @object, @attribute) %>
13
11
  </div>
14
- <%= link_to( send( @Klass.to_s.underscore + '_path', :update => @update_span || "field_#{@field}_#{@object.id.to_s}",
15
- :field => @field,
12
+ <%= link_to( send( @Klass.to_s.underscore + '_path', :update => @update_span || "field_#{@attribute}_#{@object.id.to_s}",
13
+ :attribute => @attribute,
16
14
  :form_element => @form_element,
17
- :values => @values,
18
15
  :sub_id => @sub_id ),
19
16
  :method => :get, # this is going to the show method!
20
17
  :class => "edit_form_cancel",
@@ -1,5 +1,6 @@
1
- <li class="inline_form_new_item">
2
- <%= inline_form_new_record @field, @form_element %>
1
+ <li class="inline_forms_new_record">
2
+ <%= inline_forms_new_record_link %>
3
3
  </li>
4
- <%= inline_form_display_list(@objects) %>
5
- <%#= will_paginate @objects %>
4
+ <%= inline_forms_list(@objects) %>
5
+ <%= will_paginate @objects %>
6
+ <%= page_entries_info @objects %>
@@ -1,9 +1,9 @@
1
- <% form_tag send(@Klass.to_s.underscore.pluralize + '_path', :update => @update_span || 'inline_form_list' ),
1
+ <% form_tag send(@Klass.to_s.underscore.pluralize + '_path', :update => @update_span || 'inline_forms_list' ),
2
2
  :multipart => true, :remote => true, :class => "edit_form" do -%>
3
3
  <div class="edit_form_field">
4
- <%= inline_form_display_new(@object, @object.respond_to?(:inline_forms_field_list) ? @object.inline_forms_field_list : [ :name, 'name', :text ] ) %>
4
+ <%= inline_forms_new_record @object %>
5
5
  </div>
6
- <%= link_to( send(@Klass.to_s.underscore.pluralize + '_path',:update => @update_span || 'inline_form_list'), :remote => true,
6
+ <%= link_to( send(@Klass.to_s.underscore.pluralize + '_path',:update => @update_span || 'inline_forms_list'), :remote => true,
7
7
  :class => "edit_form_cancel" ) do %>
8
8
  <input type="button" name="cancel" value="cancel" />
9
9
  <% end %>
@@ -1,5 +1,5 @@
1
1
  <table cellpadding="0" cellspacing="0" class="subform">
2
- <% @associated_record.inline_forms_field_list.each do | @subform_field, @subform_description, @subform_element, @values | %>
2
+ <% @associated_record.inline_forms_field_list.each do | @subform_field, (@subform_description, @subform_element, @values) | %>
3
3
  <tr>
4
4
  <td valign="top">
5
5
  <div class="subform_field-name">
@@ -1,5 +1,6 @@
1
- <li class="inline_form_new_item">
2
- <%= inline_form_new_record @field, @form_element %>
1
+ <li class="inline_forms_new_record_link">
2
+ <%= inline_forms_new_record_link %>
3
3
  </li>
4
- <%= inline_form_display_list(@objects) %>
4
+ <%= inline_forms_list(@objects) %>
5
5
  <%= will_paginate @objects %>
6
+ <%= page_entries_info @objects %>
@@ -11,7 +11,7 @@
11
11
  <%#= calendar_date_select_includes "red" %>
12
12
  <body>
13
13
  <%= render "/inline_forms_tabs" %>
14
- <ul id="inline_form_list">
14
+ <ul id="inline_forms_list">
15
15
  <%= yield %>
16
16
  </ul>
17
17
  </body>
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.7.4"
8
+ s.version = "0.8.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-03-09}
12
+ s.date = %q{2011-03-13}
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 = [
@@ -34,8 +34,8 @@ Gem::Specification.new do |s|
34
34
  "app/helpers/form_elements/dropdown_with_values.rb",
35
35
  "app/helpers/form_elements/geo_code_curacao.rb",
36
36
  "app/helpers/form_elements/image.rb",
37
- "app/helpers/form_elements/range.rb",
38
37
  "app/helpers/form_elements/scale_with_integers.rb",
38
+ "app/helpers/form_elements/scale_with_values.rb",
39
39
  "app/helpers/form_elements/text_area.rb",
40
40
  "app/helpers/form_elements/text_field.rb",
41
41
  "app/helpers/inline_forms_helper.rb",
@@ -11,8 +11,8 @@ module InlineForms
11
11
  # rails g example_generator Modelname attribute:type attribute:type ...
12
12
  # an array with attributes and types is created for use in the generator.
13
13
  #
14
- # Rails::Generators::GeneratedAttribute creates, among others, a field_type.
15
- # This field_type maps column types to form field helpers like text_field.
14
+ # Rails::Generators::GeneratedAttribute creates, among others, a attribute_type.
15
+ # This attribute_type maps column types to form attribute helpers like text_field.
16
16
  # We override it here to make our own.
17
17
  #
18
18
  class InlineFormsGenerator < Rails::Generators::NamedBase
@@ -32,13 +32,13 @@ module InlineForms
32
32
  SPECIAL_COLUMN_TYPES.merge(DEFAULT_COLUMN_TYPES).merge(RELATIONS).merge(SPECIAL_RELATIONS)[type] || :unknown
33
33
  end
34
34
 
35
- # Override the field_type to include our special column types.
35
+ # Override the attribute_type to include our special column types.
36
36
  #
37
37
  # If a type is not in the Special Column Type hash, then the default
38
- # column type hash is used, and if that fails, the field_type
38
+ # column type hash is used, and if that fails, the attribute_type
39
39
  # will be :unknown. Make sure to check your models for the :unknown.
40
40
  #
41
- def field_type
41
+ def attribute_type
42
42
  SPECIAL_COLUMN_TYPES.merge(RELATIONS).has_key?(type) ? type : DEFAULT_FORM_ELEMENTS[type] || :unknown
43
43
  end
44
44
 
@@ -51,7 +51,7 @@ module InlineForms
51
51
  end
52
52
 
53
53
  def has_many?
54
- field_type == :associated
54
+ attribute_type == :associated
55
55
  end
56
56
 
57
57
 
@@ -71,7 +71,7 @@ module InlineForms
71
71
  @habtm = "\n"
72
72
  @has_attached_files = "\n"
73
73
  @presentation = "\n"
74
- @inline_forms_field_list = String.new
74
+ @inline_forms_attribute_list = String.new
75
75
 
76
76
  for attribute in attributes
77
77
  if attribute.column_type == :belongs_to # :drop_down, :references and :belongs_to all end up with the column_type :belongs_to
@@ -98,20 +98,20 @@ module InlineForms
98
98
  "\n"
99
99
  end
100
100
  unless attribute.name == '_presentation' || attribute.relation?
101
- attribute.field_type == :unknown ? commenter = '#' : commenter = ' '
102
- @inline_forms_field_list << commenter +
101
+ attribute.attribute_type == :unknown ? commenter = '#' : commenter = ' '
102
+ @inline_forms_attribute_list << commenter +
103
103
  ' [ :' +
104
104
  attribute.name +
105
- ', "' + attribute.name +
106
- '", :' + attribute.field_type.to_s +
105
+ ' , "' + attribute.name +
106
+ '", :' + attribute.attribute_type.to_s +
107
107
  " ], \n"
108
108
  end
109
109
  end
110
- unless @inline_forms_field_list.empty?
111
- @inline_forms_field_list = "\n" +
112
- " def inline_forms_field_list\n" +
110
+ unless @inline_forms_attribute_list.empty?
111
+ @inline_forms_attribute_list = "\n" +
112
+ " def inline_forms_attribute_list\n" +
113
113
  " [\n" +
114
- @inline_forms_field_list +
114
+ @inline_forms_attribute_list +
115
115
  " ]\n" +
116
116
  " end\n" +
117
117
  "\n"
@@ -138,7 +138,7 @@ module InlineForms
138
138
  @columns << ' t.datetime :' + attribute.name + "_updated_at\n"
139
139
  else
140
140
  unless attribute.name == '_presentation' || attribute.special_relation?
141
- attribute.field_type == :unknown ? commenter = '#' : commenter = ' '
141
+ attribute.attribute_type == :unknown ? commenter = '#' : commenter = ' '
142
142
  @columns << commenter +
143
143
  ' t.' +
144
144
  attribute.column_type.to_s +
@@ -1,9 +1,13 @@
1
1
  class <%= name %> < ActiveRecord::Base
2
+ cattr_reader :per_page
3
+ @@per_page = 10
4
+
2
5
  <%= @belongs_to if @belongs_to.length > 1 -%>
3
6
  <%= @has_many if @has_many.length > 1 -%>
4
7
  <%= @has_one if @has_one.length > 1 -%>
5
8
  <%= @habtm if @habtm.length > 1 -%>
6
9
  <%= @has_attached_files if @has_attached_files.length > 1 -%>
7
10
  <%= @presentation if @presentation.length > 1 -%>
8
- <%= @inline_forms_field_list -%>
11
+ <%= @inline_forms_attribute_list -%>
12
+
9
13
  end
data/lib/inline_forms.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  puts 'loading inline_forms...'
2
2
 
3
3
  module InlineForms
4
+
4
5
  # ActiveRecord::Migration comes with a set of column types.
5
- # They are listed here so they can be uses alongside our Special Column Types.
6
+ # They are listed here so they can be used alongside our Special Column Types.
6
7
  #
7
8
  # These types will override the Special Column Types, so don't declare
8
9
  # types with these names as Special Column Types!
@@ -13,7 +14,7 @@ module InlineForms
13
14
  # class InlineFormsCreateExamples < ActiveRecord::Migration
14
15
  # def self.up
15
16
  # create_table :examples do |t|
16
- # t.string :name
17
+ # t.string :name
17
18
  # t.integer :price
18
19
  # t.timestamps
19
20
  # end
@@ -24,20 +25,21 @@ module InlineForms
24
25
  # end
25
26
  #
26
27
  DEFAULT_COLUMN_TYPES = {
27
- :string => :string,
28
- :text => :text,
29
- :integer => :integer,
30
- :float => :float,
31
- :decimal => :decimal,
32
- :datetime => :datetime,
33
- :timestamp => :timestamp,
34
- :time => :time,
35
- :date => :date,
36
- :binary => :binary,
37
- :boolean => :boolean,
38
- # :references => :belongs_to,
39
- # :belongs_to => :belongs_to,
28
+ :string => :string,
29
+ :text => :text,
30
+ :integer => :integer,
31
+ :float => :float,
32
+ :decimal => :decimal,
33
+ :datetime => :datetime,
34
+ :timestamp => :timestamp,
35
+ :time => :time,
36
+ :date => :date,
37
+ :binary => :binary,
38
+ :boolean => :boolean,
39
+ # :references => :belongs_to,
40
+ # :belongs_to => :belongs_to,
40
41
  }
42
+
41
43
  # For each Default Column Type, we need to specify a Form Element for use in form creation.
42
44
  #
43
45
  # Example:
@@ -45,28 +47,29 @@ module InlineForms
45
47
  # will result in the following model:
46
48
  #
47
49
  # class Example < ActiveRecord::Base
48
- # def inline_forms_field_list
49
- # [
50
- # [ :name, "name", :text_field ],
51
- # [ :price, "price", :text_field ],
52
- # ]
50
+ # def inline_forms_attribute_list
51
+ # {
52
+ # :name => [ "name", :text_field ],
53
+ # :price => [ "price", :text_field ],
54
+ # }
53
55
  # end
54
56
  # end
55
57
  # as you see, both :string and :integer are mapped to a :text_field
56
58
  #
57
59
  DEFAULT_FORM_ELEMENTS = {
58
- :string => :text_field,
59
- :text => :text_area,
60
- :integer => :text_field,
61
- :float => :text_field,
62
- :decimal => :text_field,
63
- :datetime => :datetime_select,
64
- :timestamp => :datetime_select,
65
- :time => :time_select,
66
- :date => :date_select,
67
- :binary => :text_field,
68
- :boolean => :check_box,
60
+ :string => :text_field,
61
+ :text => :text_area,
62
+ :integer => :text_field,
63
+ :float => :text_field,
64
+ :decimal => :text_field,
65
+ :datetime => :datetime_select,
66
+ :timestamp => :datetime_select,
67
+ :time => :time_select,
68
+ :date => :date_select,
69
+ :binary => :text_field,
70
+ :boolean => :check_box,
69
71
  }
72
+
70
73
  # This Hash will be used to map our Special Column Types to
71
74
  # ActiveRecord::Migration Column Types.
72
75
  #
@@ -80,35 +83,37 @@ module InlineForms
80
83
  # t.belongs_to :country
81
84
  # to the migration. (In fact AR will add t.integer :country_id). And
82
85
  # it will add
83
- # [ :country, "country", :dropdown ],
84
- # to the inline_forms_field_list in the model.
86
+ # :country => [ "country", :dropdown ],
87
+ # to the inline_forms_attribute_list in the model.
85
88
  #
86
89
  SPECIAL_COLUMN_TYPES = {}
90
+
87
91
  # When a column has the type of :references or :belongs_to, then
88
92
  # there will be a line in the migration reflecting that, but not in the model.
89
93
  # == Why?
90
- # * Let's say we have a customer that has_many numbers.
91
- # * Let's say that a number belongs_to a customer.
94
+ # * Let's say we have a customer that has_many phone_numbers.
95
+ # * Let's say that a phone_number belongs_to a customer.
92
96
  # * Let's say that every number has_one type_of_number (like 'private','gsm' etc.)
93
97
  # * Let's say a type_of_number belongs_to a number.
94
98
  #
95
99
  # Wait a minute... thats sounds right... but it ain't!
96
100
  #
97
- # In fact, a type_of_number has_many numbers and a number belongs_to a type_of_number!
101
+ # In fact, a type_of_number has_many phone_numbers and a phone_number belongs_to a type_of_number!
98
102
  #
99
103
  # In a form, it's quite logical to use a dropdown for type_of_number. So, in the generator, use
100
104
  # type_of_number:dropdown
101
105
  # This creates the correct migration (t.integer :type_of_number_id) and the correct model.
102
- # (It adds 'belongs_to :type_of_number' and adds a dropdown in the inline_forms_field_list)
106
+ # (It adds 'belongs_to :type_of_number' and adds a dropdown in the inline_forms_attribute_list)
103
107
  #
104
108
  # But, you also want to have a client_id in the migration, and a 'belongs_to :client' in the model.
105
109
  # In such cases, you need to use :belongs_to, like this:
106
- # rails g inline_forms Example number:string type_of_number:dropdown client:belongs_to
110
+ # rails g inline_forms Example phone_number:string type_of_number:dropdown client:belongs_to
107
111
  #
108
112
  RELATIONS = {
109
113
  :belongs_to => :belongs_to,
110
114
  :references => :belongs_to,
111
115
  }
116
+
112
117
  # The stuff in this hash will add a line to the model, but little else.
113
118
  SPECIAL_RELATIONS = {
114
119
  :has_many => :has_many,
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: 11
4
+ hash: 63
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 7
9
- - 4
10
- version: 0.7.4
8
+ - 8
9
+ - 0
10
+ version: 0.8.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-03-09 00:00:00 -04:00
18
+ date: 2011-03-13 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -105,8 +105,8 @@ files:
105
105
  - app/helpers/form_elements/dropdown_with_values.rb
106
106
  - app/helpers/form_elements/geo_code_curacao.rb
107
107
  - app/helpers/form_elements/image.rb
108
- - app/helpers/form_elements/range.rb
109
108
  - app/helpers/form_elements/scale_with_integers.rb
109
+ - app/helpers/form_elements/scale_with_values.rb
110
110
  - app/helpers/form_elements/text_area.rb
111
111
  - app/helpers/form_elements/text_field.rb
112
112
  - app/helpers/inline_forms_helper.rb
@@ -1,15 +0,0 @@
1
- module InlineFormsHelper
2
- InlineForms::SPECIAL_COLUMN_TYPES[:range]=:integer
3
- # range
4
- def range_show(object, attribute, values)
5
- link_to_inline_edit object, attribute, object.send(attribute), nil
6
- end
7
- def range_edit(object, attribute, values)
8
- # the leading underscore is to avoid name conflicts, like 'email' and 'email_type' will result in 'email' and 'email[email_type_id]' in the form!
9
- collection_select( ('_' + object.class.to_s.downcase).to_sym, attribute.to_sym, values, 'to_i', 'to_s', :selected => object.send(attribute))
10
- end
11
- def range_update(object, attribute, values)
12
- object[attribute.to_sym] = params[('_' + object.class.to_s.downcase).to_sym][attribute.to_sym]
13
- end
14
- end
15
-