cuca 0.05 → 0.06
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +12 -3
- data/README +34 -0
- data/application_skeleton/app/index.rb +1 -1
- data/application_skeleton/scripts/console.rb +1 -1
- data/lib/cuca/app.rb +9 -11
- data/lib/cuca/const.rb +1 -1
- data/lib/cuca/controller.rb +9 -3
- data/lib/cuca/generator/markaby.rb +16 -13
- data/lib/cuca/generator/view.rb +17 -18
- data/lib/cuca/sessionpage.rb +6 -1
- data/lib/cuca/stdlib/arform.rb +54 -178
- data/lib/cuca/stdlib/form.rb +120 -90
- data/lib/cuca/stdlib/formelements.rb +135 -0
- data/lib/cuca/stdlib/listwidget/dblist.rb +10 -5
- data/lib/cuca/stdlib/listwidget/list.rb +37 -68
- data/lib/cuca/stdlib/listwidget/querydef.rb +5 -4
- data/lib/cuca/stdlib/old_arform.rb +254 -0
- data/lib/cuca/test/helpers.rb +3 -2
- data/lib/cuca_console.rb +2 -0
- data/tests/controller.rb +37 -0
- metadata +71 -65
@@ -0,0 +1,254 @@
|
|
1
|
+
require 'cuca/stdlib/form'
|
2
|
+
require 'cuca/stdlib/formerrors'
|
3
|
+
require 'cuca/generator/markaby'
|
4
|
+
|
5
|
+
# == Form's for ActiveRecord
|
6
|
+
# AR Form build a form by providing one model of ActiveRecord.
|
7
|
+
# Likly that you want to overwrite the form method to
|
8
|
+
# run a custom layout.
|
9
|
+
#
|
10
|
+
# This Widget will call <form_name>_submit(model) if Form is submitted
|
11
|
+
# and validation passed. You still have to ::save the model.
|
12
|
+
#
|
13
|
+
# = Example:
|
14
|
+
#
|
15
|
+
# ARForm('user_edit', User.find_by_username('bones'),
|
16
|
+
# :disable_on_update => ['username', 'created'])
|
17
|
+
#
|
18
|
+
class ARFormWidget < FormWidget
|
19
|
+
|
20
|
+
include Cuca::Generator::Markaby
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
# valid options
|
26
|
+
# * :disabled_on_create => ['field_name_1', 'field_name_2', ..]
|
27
|
+
# switch off fields on new records
|
28
|
+
# * :diabled_on_update => ['field_name_1', 'field_name_2', ..]
|
29
|
+
# switch off fields on existing records
|
30
|
+
def output(form_name, model, options = {})
|
31
|
+
@model = model
|
32
|
+
@disabled_on_update = options[:disabled_on_update] || []
|
33
|
+
@disabled_on_create = options[:disabled_on_create] || []
|
34
|
+
@hidden_on_update = options[:hidden_on_update] || []
|
35
|
+
@hidden_on_create = options[:hidden_on_create] || []
|
36
|
+
super(form_name, options)
|
37
|
+
end
|
38
|
+
|
39
|
+
def on_submit
|
40
|
+
controller.send(@form_name+'_submit', @model) unless controller.nil?
|
41
|
+
|
42
|
+
# this is to reload the form with the new values in case the formname_submit did
|
43
|
+
# save something:
|
44
|
+
clear
|
45
|
+
# form
|
46
|
+
end
|
47
|
+
|
48
|
+
def validate
|
49
|
+
form if @_content.empty? # password fields might write hints to the validator...
|
50
|
+
clear
|
51
|
+
@form_erros = {}
|
52
|
+
p = request_parameters.dup
|
53
|
+
p.delete(@submit_name)
|
54
|
+
|
55
|
+
if @model.new_record? then
|
56
|
+
@disabled_on_create.each { |d| p.delete(d) }
|
57
|
+
@hidden_on_create.each { |d| p.delete(d) }
|
58
|
+
else
|
59
|
+
@disabled_on_update.each { |d| p.delete(d) }
|
60
|
+
@hidden_on_update.each { |d| p.delete(d) }
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
# don't save empty passwords!!
|
65
|
+
@password_fields ||= []
|
66
|
+
@password_fields.each do |pwf|
|
67
|
+
p.delete(pwf) if p[pwf].chomp.empty?
|
68
|
+
end
|
69
|
+
# $stderr.puts p.inspect
|
70
|
+
@model.attributes = p
|
71
|
+
|
72
|
+
return true if @model.valid?
|
73
|
+
|
74
|
+
@model.errors.each do |k,v|
|
75
|
+
@form_errors[k] = v
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# to make a 2 digit string out a number
|
80
|
+
private
|
81
|
+
def twodig(n)
|
82
|
+
n.to_s.length == 1 ? "0"+n.to_s : n.to_s
|
83
|
+
end
|
84
|
+
|
85
|
+
def field_enable?(fname)
|
86
|
+
if @model.new_record? then
|
87
|
+
return @disabled_on_create.include?(fname) ? false : true
|
88
|
+
else
|
89
|
+
return @disabled_on_update.include?(fname) ? false : true
|
90
|
+
end
|
91
|
+
end
|
92
|
+
def field_hidden?(fname)
|
93
|
+
if @model.new_record? then
|
94
|
+
return @hidden_on_create.include?(fname) ? true : false
|
95
|
+
else
|
96
|
+
return @hidden_on_update.include?(fname) ? true : false
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
private
|
102
|
+
def fe_text(name, value,enabled)
|
103
|
+
"<input type='text' name='#{name}' value='#{value}' #{'disabled' unless enabled}>"
|
104
|
+
end
|
105
|
+
|
106
|
+
private
|
107
|
+
def fe_textarea(name, value, enabled, rows=4, cols = 50)
|
108
|
+
"<textarea name='#{name}' rows='#{rows}' cols='#{cols}'>#{value}</textarea>"
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
# the fe-password is special: will never contain a value and will not save the
|
113
|
+
# password if nothing was typed into the field
|
114
|
+
private
|
115
|
+
def fe_password(name,enabled)
|
116
|
+
@password_fields ||= []
|
117
|
+
@password_fields << name
|
118
|
+
r = "<input type='password' name='#{name}' #{'disabled' unless enabled}>"
|
119
|
+
if !@model.new_record? then
|
120
|
+
r << "<br><small>Leave empty to keep current password</small>"
|
121
|
+
end
|
122
|
+
return r
|
123
|
+
end
|
124
|
+
|
125
|
+
# this is to build a select box, example:
|
126
|
+
# fe_select('gender', [['f', 'female'],['m','Male']], true) or
|
127
|
+
# fe_select('gender', ['f','m'], true)
|
128
|
+
private
|
129
|
+
def fe_select(name, options, enabled)
|
130
|
+
r = "<select name='#{name}' #{'disabled' unless enabled}>\n"
|
131
|
+
options.each do |o|
|
132
|
+
ov = o.instance_of?(Array) ? o[0] : o
|
133
|
+
sel = ''
|
134
|
+
sel = ' selected' if @model.send(name.intern) == ov
|
135
|
+
if o.instance_of?(Array) then
|
136
|
+
r+="<option value='#{o[0]}'#{sel}>#{o[1]}</option>\n"
|
137
|
+
else
|
138
|
+
r+="<option value='#{o}'#{sel}>#{o}</option>\n"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
r+="</option>\n"
|
142
|
+
end
|
143
|
+
|
144
|
+
|
145
|
+
def fe_datetime(name, v,enabled)
|
146
|
+
v = Time.now unless v
|
147
|
+
r = <<-EOS
|
148
|
+
<input type='text' name='#{name}' id='i_#{name}' value='#{v.year}/#{twodig(v.month)}/#{twodig(v.day)} #{v.hour}:#{v.min}' #{'disabled' unless enabled}>
|
149
|
+
EOS
|
150
|
+
if enabled then
|
151
|
+
r << <<-EOS
|
152
|
+
<input type='submit' id='s_#{name}' value='...'>
|
153
|
+
<script type="text/javascript">
|
154
|
+
Calendar.setup({
|
155
|
+
inputField : "i_#{name}", // id of the input field
|
156
|
+
ifFormat : "%Y/%m/%d %H:%M", // format of the input field
|
157
|
+
showsTime : true, // will display a time selector
|
158
|
+
button : "s_#{name}", // trigger for the calendar (button ID)
|
159
|
+
singleClick : true, // double-click mode
|
160
|
+
step : 1 // show all years in drop-down boxes (instead of every other year as default)
|
161
|
+
});
|
162
|
+
</script>
|
163
|
+
</input>
|
164
|
+
EOS
|
165
|
+
end
|
166
|
+
return r
|
167
|
+
end
|
168
|
+
|
169
|
+
# select date.. no time
|
170
|
+
def fe_date(name, v,enabled)
|
171
|
+
v = Time.now unless v
|
172
|
+
r = <<-EOS
|
173
|
+
<input type='text' name='#{name}' id='i_#{name}' value='#{v.year}/#{twodig(v.month)}/#{twodig(v.day)}' #{'disabled' unless enabled}>
|
174
|
+
EOS
|
175
|
+
if enabled then
|
176
|
+
r << <<-EOS
|
177
|
+
<input type='submit' id='s_#{name}' value='...'>
|
178
|
+
<script type="text/javascript">
|
179
|
+
Calendar.setup({
|
180
|
+
inputField : "i_#{name}", // id of the input field
|
181
|
+
ifFormat : "%Y/%m/%d", // format of the input field
|
182
|
+
showsTime : false, // will display a time selector
|
183
|
+
button : "s_#{name}", // trigger for the calendar (button ID)
|
184
|
+
singleClick : true, // double-click mode
|
185
|
+
step : 1 // show all years in drop-down boxes (instead of every other year as default)
|
186
|
+
});
|
187
|
+
</script>
|
188
|
+
</input>
|
189
|
+
EOS
|
190
|
+
end
|
191
|
+
return r
|
192
|
+
end
|
193
|
+
|
194
|
+
def fe_bool(name,v,enabled)
|
195
|
+
r = ''
|
196
|
+
r << "<select name='#{name}' #{'disabled' unless enabled}>\n"
|
197
|
+
r << "<option #{"selected" if v} value='t'>true</option>\n"
|
198
|
+
r << "<option #{"selected" if !v} value='f'>false</option>\n"
|
199
|
+
r << "</select>\n"
|
200
|
+
end
|
201
|
+
|
202
|
+
def fe_int(name,v,enabled)
|
203
|
+
"<input type='text' name='#{name}' value='#{v}' #{'disabled' unless enabled} size=5>"
|
204
|
+
end
|
205
|
+
|
206
|
+
def fe(type, name, value='')
|
207
|
+
return '' if field_hidden?(name)
|
208
|
+
enabled = field_enable?(name)
|
209
|
+
r = ""
|
210
|
+
case(type)
|
211
|
+
when :string
|
212
|
+
r << fe_text(name,value,enabled)
|
213
|
+
when :boolean
|
214
|
+
r << fe_bool(name,value,enabled)
|
215
|
+
when :integer
|
216
|
+
r << fe_int(name,value,enabled)
|
217
|
+
when :datetime
|
218
|
+
r << fe_datetime(name,value,enabled)
|
219
|
+
when :date
|
220
|
+
r << fe_date(name,value,enabled)
|
221
|
+
when :password
|
222
|
+
r << fe_password(name, enabled)
|
223
|
+
end
|
224
|
+
return r
|
225
|
+
end
|
226
|
+
|
227
|
+
# build a form element for column name
|
228
|
+
def fe_for(column_name, hint='')
|
229
|
+
col = @model.column_for_attribute(column_name)
|
230
|
+
fe(col.type, col.name, @model.send(column_name.intern))
|
231
|
+
end
|
232
|
+
|
233
|
+
|
234
|
+
# you might want to replace this method
|
235
|
+
public
|
236
|
+
def form
|
237
|
+
r = mabtext { FormErrors(@form_errors) }
|
238
|
+
r << "<form action='#{@post_to}' method='POST'>\n"
|
239
|
+
r << "<table>"
|
240
|
+
@model.class.columns.each do |col|
|
241
|
+
next if field_hidden?(col.name)
|
242
|
+
k = col.name
|
243
|
+
v = @model.send(k.intern) # this allows us to overwrite accessors
|
244
|
+
r << "<tr><td>#{k}</td><td>#{fe(col.type,k,v)}</td></tr>"
|
245
|
+
end
|
246
|
+
r << "<tr><td><br/></td></tr>"
|
247
|
+
r << "<tr><td></td><td><input type='submit' value=#{@model.new_record? ? 'Save' : 'Update'} name='#{@submit_name}'></td></tr>"
|
248
|
+
r << "</table>\n</form>\n"
|
249
|
+
@_content = r
|
250
|
+
end
|
251
|
+
|
252
|
+
|
253
|
+
end
|
254
|
+
|
data/lib/cuca/test/helpers.rb
CHANGED
@@ -11,9 +11,10 @@ module Helpers
|
|
11
11
|
# init the application. call this from the setup method.
|
12
12
|
def init(app_path = '/', params = {})
|
13
13
|
require 'cuca/cgi_emu'
|
14
|
+
require 'cuca/urlmap'
|
14
15
|
@cgi = CGIEmu.new({'PATH_INFO' => app_path, 'QUERY_PARAMS' => params})
|
15
|
-
@app = Cuca::App.new
|
16
|
-
@app.load_support_files
|
16
|
+
@app = Cuca::App.new
|
17
|
+
@app.load_support_files(Cuca::URLMap.new($cuca_path+'/app', app_path))
|
17
18
|
end
|
18
19
|
|
19
20
|
|
data/lib/cuca_console.rb
CHANGED
data/tests/controller.rb
CHANGED
@@ -101,6 +101,36 @@ class ReturnOtherMimeController < Cuca::Controller
|
|
101
101
|
end
|
102
102
|
|
103
103
|
|
104
|
+
|
105
|
+
class ChainAController < Cuca::Controller
|
106
|
+
before_filter 'a', 1
|
107
|
+
def a
|
108
|
+
@out ||= ''
|
109
|
+
@out << 'a'
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
class ChainBController < ChainAController
|
115
|
+
before_filter 'b',100
|
116
|
+
def b
|
117
|
+
@out ||= ''
|
118
|
+
@out << 'b'
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
class ChainCController < ChainBController
|
123
|
+
before_filter 'c',2
|
124
|
+
attr :out
|
125
|
+
def c
|
126
|
+
@out ||= ''
|
127
|
+
@out << 'c'
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
104
134
|
class ControllerTests < Test::Unit::TestCase
|
105
135
|
|
106
136
|
def test_basic
|
@@ -160,4 +190,11 @@ class ControllerTests < Test::Unit::TestCase
|
|
160
190
|
end
|
161
191
|
|
162
192
|
|
193
|
+
def test_chain_filters
|
194
|
+
c = ChainCController.new
|
195
|
+
c.run_before_filters
|
196
|
+
assert_equal 'acb', c.out
|
197
|
+
end
|
198
|
+
|
199
|
+
|
163
200
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "0.
|
4
|
+
version: "0.06"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Boese
|
@@ -9,11 +9,12 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-03-04 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: markaby
|
17
|
+
type: :runtime
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
@@ -23,6 +24,7 @@ dependencies:
|
|
23
24
|
version:
|
24
25
|
- !ruby/object:Gem::Dependency
|
25
26
|
name: fcgi
|
27
|
+
type: :runtime
|
26
28
|
version_requirement:
|
27
29
|
version_requirements: !ruby/object:Gem::Requirement
|
28
30
|
requirements:
|
@@ -38,106 +40,110 @@ extensions: []
|
|
38
40
|
|
39
41
|
extra_rdoc_files:
|
40
42
|
- CHANGELOG
|
43
|
+
- README
|
41
44
|
files:
|
42
45
|
- bin/cuca
|
43
|
-
- lib/cuca.rb
|
44
|
-
- lib/cuca_console.rb
|
45
46
|
- lib/cuca
|
47
|
+
- lib/cuca/mimetypes.rb
|
48
|
+
- lib/cuca/sessionpage.rb
|
49
|
+
- lib/cuca/urlmap.rb
|
50
|
+
- lib/cuca/layout.rb
|
51
|
+
- lib/cuca/widget.rb
|
46
52
|
- lib/cuca/cgi_fix.rb
|
53
|
+
- lib/cuca/const.rb
|
54
|
+
- lib/cuca/sessionflash.rb
|
47
55
|
- lib/cuca/controller.rb
|
56
|
+
- lib/cuca/session.rb
|
57
|
+
- lib/cuca/app.rb
|
48
58
|
- lib/cuca/config.rb
|
59
|
+
- lib/cuca/test
|
60
|
+
- lib/cuca/test/helpers.rb
|
49
61
|
- lib/cuca/stdlib
|
50
|
-
- lib/cuca/stdlib/arview.rb
|
51
|
-
- lib/cuca/stdlib/form.rb
|
52
|
-
- lib/cuca/stdlib/link.rb
|
53
62
|
- lib/cuca/stdlib/slink.rb
|
63
|
+
- lib/cuca/stdlib/link.rb
|
64
|
+
- lib/cuca/stdlib/form.rb
|
65
|
+
- lib/cuca/stdlib/list.rb
|
66
|
+
- lib/cuca/stdlib/arview.rb
|
54
67
|
- lib/cuca/stdlib/arform.rb
|
68
|
+
- lib/cuca/stdlib/old_arform.rb
|
55
69
|
- lib/cuca/stdlib/listwidget
|
56
|
-
- lib/cuca/stdlib/listwidget/
|
70
|
+
- lib/cuca/stdlib/listwidget/list.rb
|
57
71
|
- lib/cuca/stdlib/listwidget/dblist.rb
|
72
|
+
- lib/cuca/stdlib/listwidget/querydef.rb
|
58
73
|
- lib/cuca/stdlib/listwidget/staticdatalist.rb
|
59
|
-
- lib/cuca/stdlib/listwidget/list.rb
|
60
|
-
- lib/cuca/stdlib/list.rb
|
61
74
|
- lib/cuca/stdlib/formerrors.rb
|
75
|
+
- lib/cuca/stdlib/formelements.rb
|
62
76
|
- lib/cuca/generator
|
63
77
|
- lib/cuca/generator/markaby.rb
|
64
78
|
- lib/cuca/generator/view.rb
|
65
|
-
- lib/cuca/sessionflash.rb
|
66
|
-
- lib/cuca/widget.rb
|
67
|
-
- lib/cuca/mimetypes.rb
|
68
|
-
- lib/cuca/test
|
69
|
-
- lib/cuca/test/helpers.rb
|
70
|
-
- lib/cuca/sessionpage.rb
|
71
|
-
- lib/cuca/session.rb
|
72
79
|
- lib/cuca/cgi_emu.rb
|
73
|
-
- lib/
|
74
|
-
- lib/cuca
|
75
|
-
-
|
76
|
-
-
|
80
|
+
- lib/cuca_console.rb
|
81
|
+
- lib/cuca.rb
|
82
|
+
- tests/mimetypes.rb
|
83
|
+
- tests/urlmap.rb
|
77
84
|
- tests/generator_markaby.rb
|
78
|
-
- tests/
|
85
|
+
- tests/all.rb
|
79
86
|
- tests/widget.rb
|
80
|
-
- tests/
|
87
|
+
- tests/generator_view.rb
|
88
|
+
- tests/controller.rb
|
81
89
|
- tests/app.rb
|
82
90
|
- tests/test_app
|
91
|
+
- tests/test_app/conf
|
92
|
+
- tests/test_app/conf/environment.rb
|
93
|
+
- tests/test_app/conf/config.rb
|
83
94
|
- tests/test_app/log
|
84
95
|
- tests/test_app/log/messages
|
85
96
|
- tests/test_app/README
|
86
97
|
- tests/test_app/app
|
98
|
+
- tests/test_app/app/agent
|
99
|
+
- tests/test_app/app/agent/index.rb
|
100
|
+
- tests/test_app/app/agent/list.rb
|
101
|
+
- tests/test_app/app/_views
|
102
|
+
- tests/test_app/app/_views/test_template.rhtml
|
87
103
|
- tests/test_app/app/user
|
88
104
|
- tests/test_app/app/user/__username
|
89
105
|
- tests/test_app/app/user/__username/index.rb
|
90
106
|
- tests/test_app/app/user/list.rb
|
91
|
-
- tests/test_app/app/_views
|
92
|
-
- tests/test_app/app/_views/test_template.rhtml
|
93
|
-
- tests/test_app/app/agent
|
94
|
-
- tests/test_app/app/agent/index.rb
|
95
|
-
- tests/test_app/app/agent/list.rb
|
96
|
-
- tests/test_app/conf
|
97
|
-
- tests/test_app/conf/config.rb
|
98
|
-
- tests/test_app/conf/environment.rb
|
99
|
-
- tests/urlmap.rb
|
100
|
-
- tests/generator_view.rb
|
101
|
-
- tests/all.rb
|
102
|
-
- application_skeleton/log
|
103
|
-
- application_skeleton/log/messages
|
104
|
-
- application_skeleton/log/error.log
|
105
|
-
- application_skeleton/log/access.log
|
106
|
-
- application_skeleton/README
|
107
107
|
- application_skeleton/tests
|
108
108
|
- application_skeleton/tests/widgets
|
109
109
|
- application_skeleton/tests/widgets/link.rb
|
110
|
-
- application_skeleton/
|
111
|
-
- application_skeleton/
|
112
|
-
- application_skeleton/
|
113
|
-
- application_skeleton/
|
114
|
-
- application_skeleton/
|
115
|
-
- application_skeleton/
|
116
|
-
- application_skeleton/
|
117
|
-
- application_skeleton/
|
118
|
-
- application_skeleton/
|
119
|
-
- application_skeleton/
|
120
|
-
- application_skeleton/
|
110
|
+
- application_skeleton/conf
|
111
|
+
- application_skeleton/conf/environment.rb
|
112
|
+
- application_skeleton/conf/config.rb
|
113
|
+
- application_skeleton/public
|
114
|
+
- application_skeleton/public/img
|
115
|
+
- application_skeleton/public/img/cuca-seagull.png
|
116
|
+
- application_skeleton/public/dispatch.cgi
|
117
|
+
- application_skeleton/public/dispatch.fcgi
|
118
|
+
- application_skeleton/public/500.html
|
119
|
+
- application_skeleton/public/css
|
120
|
+
- application_skeleton/public/css/style.css
|
121
|
+
- application_skeleton/public/404.html
|
121
122
|
- application_skeleton/scripts
|
122
123
|
- application_skeleton/scripts/server-lighttpd-fcgi.rb
|
124
|
+
- application_skeleton/scripts/server-webrick.rb
|
123
125
|
- application_skeleton/scripts/console.rb
|
124
|
-
- application_skeleton/scripts/test.rb
|
125
126
|
- application_skeleton/scripts/server-lighttpd.rb
|
126
|
-
- application_skeleton/scripts/
|
127
|
+
- application_skeleton/scripts/test.rb
|
127
128
|
- application_skeleton/lib
|
128
|
-
- application_skeleton/
|
129
|
-
- application_skeleton/
|
130
|
-
- application_skeleton/
|
131
|
-
- application_skeleton/
|
132
|
-
- application_skeleton/
|
133
|
-
- application_skeleton/
|
134
|
-
- application_skeleton/
|
135
|
-
- application_skeleton/
|
136
|
-
- application_skeleton/
|
137
|
-
- application_skeleton/
|
138
|
-
- application_skeleton/
|
139
|
-
- application_skeleton/
|
129
|
+
- application_skeleton/log
|
130
|
+
- application_skeleton/log/access.log
|
131
|
+
- application_skeleton/log/error.log
|
132
|
+
- application_skeleton/log/messages
|
133
|
+
- application_skeleton/README
|
134
|
+
- application_skeleton/app
|
135
|
+
- application_skeleton/app/_widgets
|
136
|
+
- application_skeleton/app/_widgets/sourcecode.rb
|
137
|
+
- application_skeleton/app/_widgets/test.rb
|
138
|
+
- application_skeleton/app/index.rb
|
139
|
+
- application_skeleton/app/_views
|
140
|
+
- application_skeleton/app/_layouts
|
141
|
+
- application_skeleton/app/_layouts/simple.rb
|
142
|
+
- application_skeleton/app/demo.rb
|
143
|
+
- application_skeleton/app/_controllers
|
144
|
+
- application_skeleton/app/_controllers/application.rb
|
140
145
|
- CHANGELOG
|
146
|
+
- README
|
141
147
|
has_rdoc: true
|
142
148
|
homepage: http://cuca.rubyforge.org/
|
143
149
|
post_install_message:
|
@@ -160,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
166
|
requirements: []
|
161
167
|
|
162
168
|
rubyforge_project: cuca
|
163
|
-
rubygems_version: 1.
|
169
|
+
rubygems_version: 1.2.0
|
164
170
|
signing_key:
|
165
171
|
specification_version: 2
|
166
172
|
summary: A widget-based web framework
|