cuca 0.05 → 0.06
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/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
|