inline_forms 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.1
1
+ 0.7.2
@@ -1,35 +1,40 @@
1
+ # == Generic controller for the inline_forms plugin.
2
+ # === Usage
3
+ # If you have an Example class, make an ExampleController
4
+ # that is a subclass of InlineFormsController
5
+ # class ExampleController < InlineFormsController
6
+ # end
7
+ # That's it! It'll work. But please read about the InlineForms::InlineFormsGenerator first!
8
+ #
9
+ # You can override the methods in your ExampleController
10
+ # def index
11
+ # @objects=@Klass.all
12
+ # end
13
+ #
14
+ #
15
+ # @objects holds the objects (in this case Examples)
16
+ # and @Klass will be set to Example by the getKlass before filter.
17
+ #
18
+ # === How it works
19
+ # The getKlass before_filter extracts the class and puts it in @Klass
20
+ #
21
+ # @Klass is used in the InlineFormsHelper
22
+ #
1
23
  class InlineFormsController < ApplicationController
2
- #unloadable # see http://dev.rubyonrails.org/ticket/6001
3
- # == Generic controller for the inline_forms plugin.
4
- # === Usage
5
- # If you have an Example class, make an ExampleController that is a subclass of InlineFormsController
6
- # <tt>class ExampleController < InlineFormsController
7
- # # add before filters if you want: before_filter :authenticate_user!, :only => :token
8
- # # override methods or make your own, using @Klass instead of Example.
9
- # # def index
10
- # # @objects=@Klass.all
11
- # # end
12
- # === How it works
13
- # The getKlass before_filter extracts the class and puts it in @Klass
14
- # === Limited Access
15
24
  before_filter :getKlass
16
- include InlineFormsHelper # this might also be included in you application_controller with helper :all but it's not needed
17
- # :index shows a list of all objects from class Klass, with all attribute values linked to the 'edit' action.
18
- # Each field (attribute) is edited seperately (so you don't edit an entire object!)
19
- # The link to 'new' allows you to create a new record.
25
+ include InlineFormsHelper
26
+
27
+ # shows a list of all objects from class @Klass, using will_paginate
20
28
  #
21
- # GET /examples
29
+ # The link to 'new' allows you to create a new record.
22
30
  #
23
31
  def index
24
- #@objects = @Klass.all
25
32
  @objects = @Klass.paginate :page => params[:page], :order => 'created_at DESC'
26
-
27
33
  update_span = params[:update]
28
34
  respond_to do |format|
29
35
  # found this here: http://www.ruby-forum.com/topic/211467
30
36
  format.html { render 'inline_forms/index', :layout => 'inline_forms' }
31
- format.js { render(:update) {|page| page.replace_html update_span, :partial => 'inline_forms/index' }
32
- }
37
+ format.js { render(:update) {|page| page.replace_html update_span, :partial => 'inline_forms/index' } }
33
38
  end
34
39
  end
35
40
 
@@ -98,7 +103,7 @@ class InlineFormsController < ApplicationController
98
103
  @values = params[:values]
99
104
  @sub_id = params[:sub_id]
100
105
  @update_span = params[:update]
101
- @values = params[@Klass.to_s.downcase][@field.to_sym]
106
+ #@values = params[@Klass.to_s.downcase].is_a?(Array) ? params[@Klass.to_s.downcase][@field.to_sym] : nil
102
107
  send("#{@form_element.to_s}_update", @object, @field, @values)
103
108
  @object.save
104
109
  respond_to do |format|
@@ -133,6 +138,7 @@ class InlineFormsController < ApplicationController
133
138
  }
134
139
  end
135
140
  else
141
+ @values = params[:values]
136
142
  respond_to do |format|
137
143
  # found this here: http://www.ruby-forum.com/topic/211467
138
144
  format.js { render(:update) {|page| page.replace_html @update_span, :inline => '<%= send("#{@form_element}_show", @object, @field, @values) %>' }
@@ -153,8 +159,7 @@ class InlineFormsController < ApplicationController
153
159
  # end
154
160
 
155
161
  private
156
- # Get the class
157
- # Used in before_filter
162
+ # Get the class from the controller name.
158
163
  def getKlass #:doc:
159
164
  @Klass = self.controller_name.classify.constantize
160
165
  end
@@ -2,14 +2,19 @@ module InlineFormsHelper
2
2
  InlineForms::SPECIAL_MIGRATION_TYPES[:date_select]=:date
3
3
 
4
4
  # date
5
- def date_show(object, attribute, values)
5
+ def date_select_show(object, attribute, values)
6
6
  link_to_inline_edit object, attribute, object.send(attribute), nil
7
7
  end
8
- def date_edit(object, attribute, values)
9
- calendar_date_select_tag attribute, object[attribute], :year_range => 30.years.ago..5.years.from_now, :popup => :force
8
+ def date_select_edit(object, attribute, values)
9
+ out = text_field_tag attribute, object[attribute]
10
+ out << '<SCRIPT>'.html_safe
11
+ out << "$(function() { ".html_safe
12
+ out << '$("#'.html_safe + attribute.to_s.html_safe + '").datepicker();'.html_safe
13
+ out << '});'.html_safe
14
+ out << '</SCRIPT>'.html_safe
15
+ return out
10
16
  end
11
- def date_update(object, attribute, values)
17
+ def date_select_update(object, attribute, values)
12
18
  object[attribute.to_sym] = params[attribute.to_sym]
13
19
  end
14
20
  end
15
-
@@ -0,0 +1,26 @@
1
+ module InlineFormsHelper
2
+ InlineForms::SPECIAL_MIGRATION_TYPES[:dropdown_with_integers]=:integer
3
+ # dropdown_with_integers generates a dropdown menu
4
+ # with the given list of integers as options
5
+ #
6
+ # values must be a Range or a one-dimensional array of Integers
7
+ def dropdown_with_integers_show(object, attribute, values)
8
+ unless values.is_a?(Hash)
9
+ options = Array.new
10
+ values.to_a.each_index do |i|
11
+ options << [ i.to_s, values.to_a[i] ]
12
+ end
13
+ values = Hash[ *options.flatten ]
14
+ end
15
+ link_to_inline_edit object, attribute, values[object.send(attribute).to_s], values
16
+ end
17
+ def dropdown_with_integers_edit(object, attribute, values)
18
+ # 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!
19
+ values = values.sort {|a,b| a[1].to_i<=>b[1].to_i}
20
+ collection_select( ('_' + object.class.to_s.downcase).to_sym, attribute.to_sym, values, 'first', 'last', :selected => object.send(attribute))
21
+ end
22
+ def dropdown_with_integers_update(object, attribute, values)
23
+ object[attribute.to_sym] = params[('_' + object.class.to_s.downcase).to_sym][attribute.to_sym]
24
+ end
25
+ end
26
+
@@ -2,10 +2,18 @@ module InlineFormsHelper
2
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
- link_to_inline_edit object, attribute, values[object.send(attribute)], values
5
+ unless values.is_a?(Hash)
6
+ options = Array.new
7
+ values.to_a.each_index do |i|
8
+ options << [ i.to_s, values.to_a[i] ]
9
+ end
10
+ values = Hash[ *options.flatten ]
11
+ end
12
+ link_to_inline_edit object, attribute, values[object.send(attribute).to_s], values
6
13
  end
7
14
  def dropdown_with_values_edit(object, attribute, values)
8
15
  # 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!
16
+ values = values.sort {|a,b| a[1]<=>b[1]}
9
17
  collection_select( ('_' + object.class.to_s.downcase).to_sym, attribute.to_sym, values, 'first', 'last', :selected => object.send(attribute))
10
18
  end
11
19
  def dropdown_with_values_update(object, attribute, values)
@@ -6,10 +6,9 @@ end
6
6
 
7
7
  module InlineFormsHelper
8
8
  def inline_forms_show_record(object, attributes)
9
- attributes = [ attributes ] if not attributes[0].is_a?(Array) # make sure we have an array of arrays
9
+ attributes = [ attributes ] unless attributes[0].is_a?(Array) # make sure we have an array of arrays
10
10
  out = String.new
11
11
  attributes.each do | attribute, name, form_element, values |
12
- #css_class_id = form_element == :associated ? "subform_#{attribute.to_s}_#{object.id}" : "field_#{attribute.to_s}_#{object.id}"
13
12
  css_class_id = "field_#{attribute.to_s}_#{object.id}"
14
13
  name_cell = content_tag :td, :valign=>'top' do
15
14
  content_tag :div, :class=> "field_name field_#{attribute.to_s} form_element_#{form_element.to_s}" do
@@ -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.1"
8
+ s.version = "0.7.2"
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-28}
12
+ s.date = %q{2011-03-07}
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 = [
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  "app/helpers/form_elements/checklist.rb",
31
31
  "app/helpers/form_elements/date.rb",
32
32
  "app/helpers/form_elements/dropdown.rb",
33
+ "app/helpers/form_elements/dropdown_with_integers.rb",
33
34
  "app/helpers/form_elements/dropdown_with_values.rb",
34
35
  "app/helpers/form_elements/geo_code_curacao.rb",
35
36
  "app/helpers/form_elements/image.rb",
@@ -38,7 +39,6 @@ Gem::Specification.new do |s|
38
39
  "app/helpers/form_elements/text_field.rb",
39
40
  "app/helpers/inline_forms_helper.rb",
40
41
  "app/models/geo_code_curacao.rb",
41
- "app/models/inline_form.rb",
42
42
  "app/views/inline_forms/_edit.html.erb",
43
43
  "app/views/inline_forms/_index.html.erb",
44
44
  "app/views/inline_forms/_new.html.erb",
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: 1
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
- - 1
10
- version: 0.7.1
9
+ - 2
10
+ version: 0.7.2
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-28 00:00:00 -04:00
18
+ date: 2011-03-07 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -101,6 +101,7 @@ files:
101
101
  - app/helpers/form_elements/checklist.rb
102
102
  - app/helpers/form_elements/date.rb
103
103
  - app/helpers/form_elements/dropdown.rb
104
+ - app/helpers/form_elements/dropdown_with_integers.rb
104
105
  - app/helpers/form_elements/dropdown_with_values.rb
105
106
  - app/helpers/form_elements/geo_code_curacao.rb
106
107
  - app/helpers/form_elements/image.rb
@@ -109,7 +110,6 @@ files:
109
110
  - app/helpers/form_elements/text_field.rb
110
111
  - app/helpers/inline_forms_helper.rb
111
112
  - app/models/geo_code_curacao.rb
112
- - app/models/inline_form.rb
113
113
  - app/views/inline_forms/_edit.html.erb
114
114
  - app/views/inline_forms/_index.html.erb
115
115
  - app/views/inline_forms/_new.html.erb
@@ -1,2 +0,0 @@
1
- class InlineForm < ActiveRecord::Base
2
- end