ruby_mvc 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/README.md +14 -0
  2. data/lib/ruby_mvc.rb +3 -1
  3. data/lib/ruby_mvc/application.rb +52 -2
  4. data/lib/ruby_mvc/controllers.rb +28 -0
  5. data/lib/ruby_mvc/controllers/action.rb +93 -0
  6. data/lib/ruby_mvc/controllers/action_group.rb +70 -0
  7. data/lib/ruby_mvc/controllers/app_controller.rb +4 -2
  8. data/lib/ruby_mvc/controllers/rails_controller.rb +2 -0
  9. data/lib/ruby_mvc/models.rb +2 -0
  10. data/lib/ruby_mvc/models/ar_table_model.rb +133 -0
  11. data/lib/ruby_mvc/models/array_table_model.rb +81 -13
  12. data/lib/ruby_mvc/models/keyed_array_table_model.rb +1 -1
  13. data/lib/ruby_mvc/models/model.rb +129 -0
  14. data/lib/ruby_mvc/models/table_model.rb +107 -10
  15. data/lib/ruby_mvc/models/view_model_template.rb +140 -0
  16. data/lib/ruby_mvc/renderers.rb +1 -0
  17. data/lib/ruby_mvc/renderers/html4_table_model_renderer.rb +7 -6
  18. data/lib/ruby_mvc/renderers/hyperlink_cell_renderer.rb +47 -0
  19. data/lib/ruby_mvc/toolkit.rb +5 -1
  20. data/lib/ruby_mvc/toolkit/browser_history.rb +115 -0
  21. data/lib/ruby_mvc/toolkit/dialog.rb +12 -1
  22. data/lib/ruby_mvc/toolkit/frame.rb +3 -1
  23. data/lib/ruby_mvc/toolkit/grid_view.rb +46 -0
  24. data/lib/ruby_mvc/toolkit/messagebox.rb +32 -0
  25. data/lib/ruby_mvc/toolkit/peers/wxruby.rb +5 -0
  26. data/lib/ruby_mvc/toolkit/peers/wxruby/app.rb +23 -2
  27. data/lib/ruby_mvc/toolkit/peers/wxruby/common.rb +11 -1
  28. data/lib/ruby_mvc/toolkit/peers/wxruby/dialog.rb +82 -0
  29. data/lib/ruby_mvc/toolkit/peers/wxruby/form_builder.rb +108 -0
  30. data/lib/ruby_mvc/toolkit/peers/wxruby/frame.rb +85 -1
  31. data/lib/ruby_mvc/toolkit/peers/wxruby/grid_model.rb +79 -0
  32. data/lib/ruby_mvc/toolkit/peers/wxruby/grid_view.rb +117 -0
  33. data/lib/ruby_mvc/toolkit/peers/wxruby/messagebox.rb +58 -0
  34. data/lib/ruby_mvc/toolkit/peers/wxruby/web_view.rb +40 -10
  35. data/lib/ruby_mvc/toolkit/property_change_notifier.rb +46 -0
  36. data/lib/ruby_mvc/toolkit/signal_handler.rb +149 -0
  37. data/lib/ruby_mvc/toolkit/web_view.rb +1 -1
  38. data/lib/ruby_mvc/toolkit/widget.rb +13 -6
  39. data/lib/ruby_mvc/views.rb +8 -59
  40. data/lib/ruby_mvc/views/{ar_type_list.rb → ar_form_view.rb} +10 -13
  41. data/lib/ruby_mvc/views/ar_support.rb +29 -0
  42. data/lib/ruby_mvc/views/ar_type_editor.rb +17 -28
  43. data/lib/ruby_mvc/views/ar_web_model_view.rb +59 -0
  44. data/lib/ruby_mvc/views/ar_web_type_list.rb +44 -0
  45. data/lib/ruby_mvc/views/browser_view.rb +185 -0
  46. data/lib/ruby_mvc/views/form_view.rb +111 -0
  47. data/lib/ruby_mvc/views/grid_table_view.rb +96 -0
  48. data/lib/ruby_mvc/views/table_view.rb +0 -39
  49. data/lib/ruby_mvc/views/view.rb +121 -0
  50. data/lib/ruby_mvc/views/web_content_table_view.rb +40 -0
  51. data/lib/ruby_mvc/views/{web_view.rb → web_content_view.rb} +17 -28
  52. data/lib/ruby_mvc/views/web_model_view.rb +67 -0
  53. data/ruby_mvc.gemspec +1 -1
  54. data/sample/browser_view.rb +57 -0
  55. data/sample/form.rb +59 -0
  56. data/sample/form2.rb +63 -0
  57. data/sample/grid_table_view.rb +68 -0
  58. data/sample/grid_view.rb +44 -0
  59. data/sample/grid_view2.rb +57 -0
  60. data/sample/test.html +1 -0
  61. data/sample/test2.html +33 -0
  62. data/sample/web_view.rb +4 -0
  63. data/test/unit/models/test_array_table_model.rb +19 -3
  64. data/test/unit/models/test_keyed_array_table_model.rb +3 -2
  65. data/test/unit/models/test_model.rb +88 -0
  66. metadata +39 -20
  67. data/lib/ruby_mvc/toolkit/notification.rb +0 -202
  68. data/lib/ruby_mvc/views/ar_model_editor.rb +0 -84
@@ -23,10 +23,11 @@
23
23
  ######################################################################
24
24
  #++
25
25
 
26
+ $:.unshift File.join(File.dirname(__FILE__), "../../../lib")
26
27
  require 'testy'
27
- require 'shoes_mvc/models'
28
+ require 'ruby_mvc/models'
28
29
 
29
- include ShoesMVC::Models
30
+ include RubyMVC::Models
30
31
 
31
32
  Testy.testing "Core KeyedArrayTableModel tests" do
32
33
  test "Basic functionality" do |result|
@@ -0,0 +1,88 @@
1
+ #--
2
+ ######################################################################
3
+ #
4
+ # Copyright 2011 Andrew S. Townley
5
+ #
6
+ # Permission to use, copy, modify, and disribute this software for
7
+ # any purpose with or without fee is hereby granted, provided that
8
+ # the above copyright notices and this permission notice appear in
9
+ # all copies.
10
+ #
11
+ # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL
12
+ # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
13
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
14
+ # AUTHORS BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT OR
15
+ # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16
+ # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
17
+ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
18
+ # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19
+ #
20
+ # File: test_model.rb
21
+ # Created: Sat 31 Dec 2011 16:07:07 CET
22
+ #
23
+ ######################################################################
24
+ #++
25
+
26
+ $:.unshift File.join(File.dirname(__FILE__), "../../../lib")
27
+
28
+ require 'testy'
29
+ require 'ruby_mvc'
30
+
31
+ include RubyMVC::Models
32
+
33
+ Testy.testing "Core Model tests" do
34
+ test "Basic functionality" do |result|
35
+ model = Model.new
36
+ model[:key1] = "val1"
37
+ model[:key2] = "val2"
38
+
39
+ result.check "keys are correct",
40
+ :expect => [ :key1, :key2 ],
41
+ :actual => model.keys.sort
42
+
43
+ result.check "labels are correct",
44
+ :expect => [ { :key => :key1, :label => "Key1" }, { :key => :key2, :label => "Key2" } ],
45
+ :actual => model.labels
46
+
47
+ result.check ":key1 is editable",
48
+ :expect => true,
49
+ :actual => model.is_editable?(:key1)
50
+
51
+ result.check ":key2 is editable",
52
+ :expect => true,
53
+ :actual => model.is_editable?(:key2)
54
+
55
+ result.check "#[] accessor",
56
+ :expect => "val1",
57
+ :actual => model[:key1]
58
+
59
+ result.check "#size accessor",
60
+ :expect => 2,
61
+ :actual => model.size
62
+
63
+ result.check "#label_for :key1",
64
+ :expect => "Key1",
65
+ :actual => model.label_for(:key1)
66
+
67
+ result.check "#label_for :key2",
68
+ :expect => "Key2",
69
+ :actual => model.label_for(:key2)
70
+ end
71
+
72
+ test "Signal tests" do |result|
73
+ model = Model.new
74
+
75
+ event = {}
76
+ model.signal_connect("property-changed") do |m, k, o, v|
77
+ event[:model] = m
78
+ event[:key] = k
79
+ event[:old] = o
80
+ event[:value] = v
81
+ end
82
+ model[:key1] = "val1"
83
+
84
+ result.check "signal emit",
85
+ :expect => { :model => model, :key => :key1, :old => nil, :value => "val1" },
86
+ :actual => event
87
+ end
88
+ end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_mvc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
4
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- version: 0.0.1
5
+ version: 0.0.2
11
6
  platform: ruby
12
7
  authors:
13
8
  - Andrew S. Townley
@@ -15,8 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-11-24 00:00:00 +00:00
19
- default_executable:
13
+ date: 2012-01-09 00:00:00 Z
20
14
  dependencies: []
21
15
 
22
16
  description: A simple, cross-platform MVC framework for Ruby
@@ -29,47 +23,78 @@ extra_rdoc_files: []
29
23
 
30
24
  files:
31
25
  - lib/ruby_mvc/application.rb
26
+ - lib/ruby_mvc/controllers/action.rb
27
+ - lib/ruby_mvc/controllers/action_group.rb
32
28
  - lib/ruby_mvc/controllers/app_controller.rb
33
29
  - lib/ruby_mvc/controllers/rails_controller.rb
30
+ - lib/ruby_mvc/controllers.rb
31
+ - lib/ruby_mvc/models/ar_table_model.rb
34
32
  - lib/ruby_mvc/models/array_table_model.rb
35
33
  - lib/ruby_mvc/models/keyed_array_table_model.rb
34
+ - lib/ruby_mvc/models/model.rb
36
35
  - lib/ruby_mvc/models/table_model.rb
36
+ - lib/ruby_mvc/models/view_model_template.rb
37
37
  - lib/ruby_mvc/models.rb
38
38
  - lib/ruby_mvc/module.rb
39
39
  - lib/ruby_mvc/renderers/html4_table_model_renderer.rb
40
+ - lib/ruby_mvc/renderers/hyperlink_cell_renderer.rb
40
41
  - lib/ruby_mvc/renderers.rb
41
42
  - lib/ruby_mvc/toolkit/app.rb
43
+ - lib/ruby_mvc/toolkit/browser_history.rb
42
44
  - lib/ruby_mvc/toolkit/dialog.rb
43
45
  - lib/ruby_mvc/toolkit/frame.rb
44
- - lib/ruby_mvc/toolkit/notification.rb
46
+ - lib/ruby_mvc/toolkit/grid_view.rb
47
+ - lib/ruby_mvc/toolkit/messagebox.rb
45
48
  - lib/ruby_mvc/toolkit/peers/wxruby/app.rb
46
49
  - lib/ruby_mvc/toolkit/peers/wxruby/box_layout.rb
47
50
  - lib/ruby_mvc/toolkit/peers/wxruby/common.rb
51
+ - lib/ruby_mvc/toolkit/peers/wxruby/dialog.rb
52
+ - lib/ruby_mvc/toolkit/peers/wxruby/form_builder.rb
48
53
  - lib/ruby_mvc/toolkit/peers/wxruby/frame.rb
54
+ - lib/ruby_mvc/toolkit/peers/wxruby/grid_model.rb
55
+ - lib/ruby_mvc/toolkit/peers/wxruby/grid_view.rb
56
+ - lib/ruby_mvc/toolkit/peers/wxruby/messagebox.rb
49
57
  - lib/ruby_mvc/toolkit/peers/wxruby/web_view.rb
50
58
  - lib/ruby_mvc/toolkit/peers/wxruby.rb
59
+ - lib/ruby_mvc/toolkit/property_change_notifier.rb
60
+ - lib/ruby_mvc/toolkit/signal_handler.rb
51
61
  - lib/ruby_mvc/toolkit/web_view.rb
52
62
  - lib/ruby_mvc/toolkit/widget.rb
53
63
  - lib/ruby_mvc/toolkit.rb
54
- - lib/ruby_mvc/views/ar_model_editor.rb
64
+ - lib/ruby_mvc/views/ar_form_view.rb
65
+ - lib/ruby_mvc/views/ar_support.rb
55
66
  - lib/ruby_mvc/views/ar_type_editor.rb
56
- - lib/ruby_mvc/views/ar_type_list.rb
67
+ - lib/ruby_mvc/views/ar_web_model_view.rb
68
+ - lib/ruby_mvc/views/ar_web_type_list.rb
69
+ - lib/ruby_mvc/views/browser_view.rb
70
+ - lib/ruby_mvc/views/form_view.rb
71
+ - lib/ruby_mvc/views/grid_table_view.rb
57
72
  - lib/ruby_mvc/views/table_view.rb
58
- - lib/ruby_mvc/views/web_view.rb
73
+ - lib/ruby_mvc/views/view.rb
74
+ - lib/ruby_mvc/views/web_content_table_view.rb
75
+ - lib/ruby_mvc/views/web_content_view.rb
76
+ - lib/ruby_mvc/views/web_model_view.rb
59
77
  - lib/ruby_mvc/views.rb
60
78
  - lib/ruby_mvc/wx.rb
61
79
  - lib/ruby_mvc.rb
80
+ - sample/browser_view.rb
81
+ - sample/form.rb
82
+ - sample/form2.rb
62
83
  - sample/frame.rb
84
+ - sample/grid_table_view.rb
85
+ - sample/grid_view.rb
86
+ - sample/grid_view2.rb
63
87
  - sample/mvc.rb
64
88
  - sample/test.html
89
+ - sample/test2.html
65
90
  - sample/web_view.rb
66
91
  - test/unit/models/test_array_table_model.rb
67
92
  - test/unit/models/test_keyed_array_table_model.rb
93
+ - test/unit/models/test_model.rb
68
94
  - test/unit/test_array_table_model.rb
69
95
  - LICENSE
70
96
  - README.md
71
97
  - ruby_mvc.gemspec
72
- has_rdoc: true
73
98
  homepage: https://github.com/atownley/ruby_mvc
74
99
  licenses: []
75
100
 
@@ -83,23 +108,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
108
  requirements:
84
109
  - - ">="
85
110
  - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
111
  version: "0"
90
112
  required_rubygems_version: !ruby/object:Gem::Requirement
91
113
  none: false
92
114
  requirements:
93
115
  - - ">="
94
116
  - !ruby/object:Gem::Version
95
- hash: 3
96
- segments:
97
- - 0
98
117
  version: "0"
99
118
  requirements: []
100
119
 
101
120
  rubyforge_project:
102
- rubygems_version: 1.6.2
121
+ rubygems_version: 1.8.10
103
122
  signing_key:
104
123
  specification_version: 3
105
124
  summary: Ruby MVC
@@ -1,202 +0,0 @@
1
- #--
2
- ######################################################################
3
- #
4
- # Copyright 2008, Andrew S. Townley
5
- #
6
- # Permission to use, copy, modify, and disribute this software for
7
- # any purpose with or without fee is hereby granted, provided that
8
- # the above copyright notices and this permission notice appear in
9
- # all copies.
10
- #
11
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL
12
- # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
13
- # WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
14
- # AUTHORS BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT OR
15
- # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16
- # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
17
- # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
18
- # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19
- #
20
- # File: notification.rb
21
- # Author: Andrew S. Townley
22
- # Created: Sat Nov 1 14:27:10 GMT 2008
23
- # Borrowed: Wed 23 Nov 2011 22:29:22 GMT
24
- #
25
- ######################################################################
26
- #++
27
-
28
- module RubyMVC
29
- module Toolkit
30
-
31
- # This class allows obsevers to register a single block
32
- # rather than implementing public observer methods (which
33
- # can get messy and unnecessarily pollute the public API
34
- # of the class)
35
- #
36
- # Each registered block will be called with the following
37
- # arguments:
38
- #
39
- # 1) The notification name (or the method name to be called)
40
- # 2) The sender of the notification
41
- # 3) The notification parameters.
42
-
43
- class ObserverReference
44
- attr_reader :observer
45
-
46
- def initialize(observer, &block)
47
- @observer = observer
48
- @block = block
49
- end
50
-
51
- def method_missing(method, *args, &block)
52
- if @observer.respond_to? method
53
- @observer.send(method, *args, &block)
54
- elsif !@block.nil?
55
- @block.call(method, *args)
56
- else
57
- super
58
- end
59
- end
60
- end
61
-
62
- class ObserverList
63
- def initialize
64
- @observers = {}
65
- end
66
-
67
- def <<(val)
68
- if !val.is_a? ObserverReference
69
- raise ArgumentError, "can only have observer references in the list!"
70
- end
71
-
72
- @observers[val.observer] = val if !@observers.include? val.observer
73
- end
74
-
75
- def delete(val)
76
- @observers.delete(val)
77
- end
78
-
79
- def each(&block)
80
- @observers.each_value(&block)
81
- end
82
- end
83
-
84
- # This class is used to relay notifications from one sender
85
- # to another sender's registered listeners.
86
-
87
- class NotificationRelay
88
- def initialize(sender, listeners)
89
- @listeners = listeners
90
- @sender = sender
91
- end
92
-
93
- def method_missing(method, *args, &block)
94
- args[0] = @sender
95
- @listeners.each { |l| l.send(method, *args, &block) }
96
- end
97
- end
98
-
99
- module ViewChangeNotifier
100
- def register_view_change_observer(observer, &block)
101
- observers = (@view_change_observers ||= ObserverList.new)
102
- observers << ObserverReference.new(observer, &block)
103
- end
104
-
105
- def unregister_view_change_observer(observer)
106
- observers = (@view_change_observers ||= ObserverList.new)
107
- observers.delete(observer)
108
- end
109
-
110
- protected
111
- def fire_view_changed
112
- observers = (@view_change_observers ||= [])
113
- observers.each { |o| o.view_changed(self) }
114
- end
115
- end
116
-
117
- module ChangeNotifier
118
- def register_change_observer(observer, &block)
119
- observers = (@change_observers ||= ObserverList.new)
120
- observers << ObserverReference.new(observer, &block)
121
- end
122
-
123
- def unregister_change_observer(observer)
124
- observers = (@change_observers ||= [])
125
- observers.delete(observer)
126
- end
127
-
128
- def squelch=(val)
129
- @notification_squelch = val
130
- end
131
-
132
- protected
133
- def fire_changed
134
- return if @notification_squelch
135
- observers = (@change_observers ||= [])
136
- observers.each { |o| o.changed(self) }
137
- end
138
- end
139
-
140
- module PropertyChangeNotifier
141
- def register_property_change_observer(observer, &block)
142
- observers = (@property_change_observers ||= [])
143
- observers << ObserverReference.new(observer, &block)
144
- end
145
-
146
- def unregister_property_change_observer(observer)
147
- observers = (@property_change_observers ||= [])
148
- observers.delete(observer)
149
- end
150
-
151
- def squelch=(val)
152
- @notification_squelch = val
153
- end
154
-
155
- protected
156
- def fire_property_changed(property, old_val, new_val)
157
- return if @notification_squelch
158
- observers = (@property_change_observers ||= [])
159
- observers.each { |o| o.property_changed(self, property, old_val, new_val) }
160
- end
161
- end
162
-
163
- module SignalHandler
164
- module ClassMethods
165
- def signals
166
- @signals ||= {}
167
- end
168
-
169
- def signal(signal, options = { :vetoable => false })
170
- signals[signal] = options
171
- end
172
-
173
- def valid_signal?(signal)
174
- if !signals.has_key? signal
175
- raise ArgumentError, "class #{self} does not support signal '#{signal}'"
176
- end
177
- end
178
- end
179
-
180
- def signal_connect(signal, &block)
181
- self.class.valid_signal? signal if self.class.respond_to? :signals
182
- signals = (@signals ||= {})
183
- signals[signal] = block
184
- end
185
-
186
- def signal_disconnect(signal)
187
- self.class.valid_signal? signal if self.class.respond_to? :signals
188
- signals = (@signals ||= {})
189
- signals.delete(signal)
190
- end
191
-
192
- def signal_emit(signal, *args)
193
- self.class.valid_signal? signal if self.class.respond_to? :signals
194
- signals = (@signals ||= {})
195
- if signals.key? signal
196
- proc = signals[signal]
197
- proc.call(*args) if !proc.nil?
198
- end
199
- end
200
- end
201
- end
202
- end
@@ -1,84 +0,0 @@
1
- #--
2
- ######################################################################
3
- #
4
- # Copyright 2011 Andrew S. Townley
5
- #
6
- # Permission to use, copy, modify, and disribute this software for
7
- # any purpose with or without fee is hereby granted, provided that
8
- # the above copyright notices and this permission notice appear in
9
- # all copies.
10
- #
11
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL
12
- # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
13
- # WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
14
- # AUTHORS BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT OR
15
- # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16
- # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
17
- # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
18
- # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19
- #
20
- # File: ar_model_editor.rb
21
- # Created: Sat 19 Nov 2011 11:26:37 GMT
22
- #
23
- #####################################################################
24
- #++
25
-
26
- module RubyMVC
27
- module Views
28
-
29
- # This class is responsible for building a form for the
30
- # given ActiveRecord model
31
-
32
- class ActiveRecordModelEditor < View
33
- DEFAULTS = { :label_width => 0.3 }.freeze
34
-
35
- def initialize(model, options = {}, &block)
36
- super(options, &block)
37
- load(model, options, &block)
38
- end
39
-
40
- # This method is used to load the view with the
41
- # information in the AR model.
42
-
43
- def load(model, options = {}, &block)
44
- lwidth = options[:label_width] || DEFAULTS[:label_width]
45
-
46
- stack :width => "100%" do
47
- flow :width => "100%" do
48
- model.attributes.keys.sort.each do |key|
49
- # FIXME: I can't believe that you have to do this
50
- # this way with AR. I'm surely missing
51
- # something...
52
- m = "#{key}=".to_sym
53
- value = model.attributes[key]
54
- flow :width => lwidth, :margin_top => 2 do
55
- para key, :weight => 'bold', :align => "right"
56
- end
57
- flow :width => 1 - lwidth do
58
- edit_line model.attributes[key] do |e|
59
- model.send(m, e.text)
60
- end
61
- end
62
- end
63
- end
64
- end
65
-
66
- @model = model
67
- @options = options
68
- end
69
-
70
- def save
71
- @model.save!
72
- end
73
-
74
- def create
75
- if @model
76
- load(@model.class.new, options)
77
- else
78
- alert("No template model.\nUse the #load method instead.")
79
- end
80
- end
81
- end
82
-
83
- end
84
- end