spiderfw 0.6.23 → 0.6.24
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +10 -1
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/apps/config_editor/_init.rb +1 -2
- data/apps/config_editor/controllers/config_editor_controller.rb +1 -7
- data/apps/core/admin/controllers/admin_controller.rb +1 -1
- data/apps/core/admin/public/css/sass/admin.css +35 -31
- data/apps/core/admin/public/sass/admin.scss +6 -1
- data/apps/core/components/widgets/crud/crud.shtml +2 -2
- data/apps/core/components/widgets/table/table.rb +5 -5
- data/apps/core/forms/tags/element_row.erb +15 -10
- data/apps/core/forms/widgets/form/form.rb +35 -22
- data/apps/core/forms/widgets/inputs/checkbox/checkbox.shtml +2 -2
- data/apps/core/forms/widgets/inputs/date_time/date_time.shtml +2 -2
- data/apps/core/forms/widgets/inputs/file_input/file_input.shtml +2 -2
- data/apps/core/forms/widgets/inputs/html_area/html_area.shtml +2 -2
- data/apps/core/forms/widgets/inputs/input/input.shtml +2 -2
- data/apps/core/forms/widgets/inputs/password/password.shtml +2 -2
- data/apps/core/forms/widgets/inputs/search_select/search_select.shtml +1 -1
- data/apps/core/forms/widgets/inputs/select/select.shtml +2 -2
- data/apps/core/forms/widgets/inputs/text/text.shtml +2 -2
- data/apps/core/forms/widgets/inputs/text_area/text_area.shtml +2 -2
- data/apps/core/forms/widgets/inputs/time_span/time_span.shtml +1 -1
- data/blueprints/home/config.ru +8 -0
- data/lib/spiderfw/app.rb +416 -224
- data/lib/spiderfw/cmd/commands/app.rb +243 -239
- data/lib/spiderfw/cmd/commands/cert.rb +421 -417
- data/lib/spiderfw/cmd/commands/config.rb +85 -82
- data/lib/spiderfw/cmd/commands/console.rb +64 -40
- data/lib/spiderfw/cmd/commands/content.rb +29 -25
- data/lib/spiderfw/cmd/commands/create.rb +58 -54
- data/lib/spiderfw/cmd/commands/model.rb +118 -114
- data/lib/spiderfw/cmd/commands/setup.rb +55 -51
- data/lib/spiderfw/cmd/commands/test.rb +63 -59
- data/lib/spiderfw/cmd/commands/webserver.rb +56 -51
- data/lib/spiderfw/config/options/spider.rb +4 -3
- data/lib/spiderfw/controller/controller.rb +2 -0
- data/lib/spiderfw/controller/http_controller.rb +1 -2
- data/lib/spiderfw/controller/mixins/static_content.rb +3 -3
- data/lib/spiderfw/controller/mixins/visual.rb +30 -15
- data/lib/spiderfw/controller/response.rb +84 -0
- data/lib/spiderfw/controller/session/file_session.rb +2 -2
- data/lib/spiderfw/http/adapters/rack.rb +12 -13
- data/lib/spiderfw/http/server.rb +80 -46
- data/lib/spiderfw/i18n/cldr.rb +6 -9
- data/lib/spiderfw/model/base_model.rb +103 -23
- data/lib/spiderfw/model/condition.rb +110 -25
- data/lib/spiderfw/model/mappers/db_mapper.rb +14 -6
- data/lib/spiderfw/model/mappers/mapper.rb +440 -197
- data/lib/spiderfw/model/model.rb +105 -21
- data/lib/spiderfw/model/model_hash.rb +9 -1
- data/lib/spiderfw/model/query.rb +50 -9
- data/lib/spiderfw/model/query_set.rb +211 -44
- data/lib/spiderfw/model/request.rb +28 -21
- data/lib/spiderfw/model/storage/base_storage.rb +125 -10
- data/lib/spiderfw/model/storage/db/db_storage.rb +7 -4
- data/lib/spiderfw/model/storage.rb +8 -1
- data/lib/spiderfw/setup/spider_setup_wizard.rb +9 -7
- data/lib/spiderfw/spider.rb +270 -43
- data/lib/spiderfw/templates/layout.rb +9 -4
- data/lib/spiderfw/templates/resources/sass.rb +3 -2
- data/lib/spiderfw/templates/template.rb +1 -0
- data/lib/spiderfw/utils/annotations.rb +3 -1
- data/lib/spiderfw/utils/logger.rb +1 -1
- data/lib/spiderfw/utils/monkey/symbol.rb +4 -2
- data/lib/spiderfw/utils/shared_store/file_shared_store.rb +2 -2
- data/lib/spiderfw/utils/thread_out.rb +3 -1
- data/public/css/error_page.css +83 -0
- data/public/js/error_page.js +5 -0
- data/spider.gemspec +4 -1
- data/templates/email/error.erb +9 -0
- metadata +28 -12
- data/apps/config_editor/widgets/edit_bool/edit_bool.rb +0 -8
- data/apps/config_editor/widgets/edit_bool/edit_bool.shtml +0 -5
data/CHANGELOG
CHANGED
@@ -1,5 +1,14 @@
|
|
1
|
+
= 0.6.24
|
2
|
+
== 24 February, 2012
|
3
|
+
* Use Rack instead of custom adapters for all servers
|
4
|
+
* Use Pry for spider console if available
|
5
|
+
* Input widgets are no longer wrapped in divs
|
6
|
+
* #before and #after are no longer executed for static files
|
7
|
+
* Various fixes, some api documentation
|
8
|
+
|
9
|
+
|
1
10
|
= 0.6.23
|
2
|
-
== 6 February,
|
11
|
+
== 6 February, 2012
|
3
12
|
* Config options can now have a Proc for :choices; new :fallback param to reuse other config
|
4
13
|
* Added new-link, edit-link attributes to Crud
|
5
14
|
* Added Twitter Bootstrap 2 to core components
|
data/README.rdoc
CHANGED
@@ -4,7 +4,7 @@ Spider is a Model-View-Controller application framework, mainly intended for Web
|
|
4
4
|
|
5
5
|
Its main features are:
|
6
6
|
|
7
|
-
* A
|
7
|
+
* A Model layer that is easy to use, yet flexible enough to adapt to legacy schemas.
|
8
8
|
Models are defined in Ruby: schemas are autogenerated, but can be specified manually when needed.
|
9
9
|
Direct sql is almost never used, but you can embed custom sql behaviour per model for each storage.
|
10
10
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.24
|
data/apps/config_editor/_init.rb
CHANGED
@@ -11,5 +11,4 @@ Spider::Template.register_namespace('config_editor', Spider::ConfigEditor)
|
|
11
11
|
|
12
12
|
|
13
13
|
require 'apps/config_editor/controllers/config_editor_controller'
|
14
|
-
require 'apps/config_editor/widgets/edit/edit'
|
15
|
-
require 'apps/config_editor/widgets/edit_bool/edit_bool'
|
14
|
+
require 'apps/config_editor/widgets/edit/edit'
|
@@ -75,13 +75,7 @@ module Spider; module ConfigEditor
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def create_edit_widget(key, option)
|
78
|
-
|
79
|
-
when 'Spider::Bool', 'Spider::DataTypes::Bool'
|
80
|
-
EditBool
|
81
|
-
else
|
82
|
-
Edit
|
83
|
-
end
|
84
|
-
w = wclass.new(@request, @response, @scene)
|
78
|
+
w = Edit.new(@request, @response, @scene)
|
85
79
|
w.attributes[:name] = key
|
86
80
|
w.attributes[:option] = option
|
87
81
|
w.widget_init
|
@@ -49,7 +49,7 @@ module Spider; module Admin
|
|
49
49
|
end
|
50
50
|
url = self.class.http_url(short_name)
|
51
51
|
@scene.apps << {
|
52
|
-
:icon => app[:module].pub_url+'/'+app[:options][:icon],
|
52
|
+
:icon => app[:options][:icon] ? app[:module].pub_url+'/'+app[:options][:icon] : nil,
|
53
53
|
:url => self.class.http_url(short_name),
|
54
54
|
:name => app[:module].full_name,
|
55
55
|
:description => app[:module].description,
|
@@ -23,27 +23,31 @@ body:after {
|
|
23
23
|
background-position: 0 0;
|
24
24
|
}
|
25
25
|
|
26
|
-
/* line
|
27
|
-
#admin form.form-horizontal
|
26
|
+
/* line 14, ../../sass/admin.scss */
|
27
|
+
#admin form.form-horizontal .help-block {
|
28
|
+
max-width: 550px;
|
29
|
+
}
|
30
|
+
/* line 22, ../../sass/admin.scss */
|
31
|
+
#admin form.form-horizontal input[type="text"],
|
28
32
|
#admin form.form-horizontal textarea,
|
29
33
|
#admin form.form-horizontal select,
|
30
34
|
#admin form.form-horizontal .uneditable-input {
|
31
35
|
width: 300px;
|
32
36
|
}
|
33
|
-
/* line
|
37
|
+
/* line 26, ../../sass/admin.scss */
|
34
38
|
#admin form.form-horizontal select {
|
35
39
|
width: 310px;
|
36
40
|
}
|
37
|
-
/* line
|
41
|
+
/* line 30, ../../sass/admin.scss */
|
38
42
|
#admin form.form-horizontal input.btn {
|
39
43
|
width: auto;
|
40
44
|
}
|
41
|
-
/* line
|
45
|
+
/* line 34, ../../sass/admin.scss */
|
42
46
|
#admin form.form-horizontal .form-actions {
|
43
47
|
padding-left: 250px;
|
44
48
|
}
|
45
49
|
|
46
|
-
/* line
|
50
|
+
/* line 44, ../../sass/admin.scss */
|
47
51
|
#header {
|
48
52
|
padding-bottom: 10px;
|
49
53
|
background: url('../../img/css/header_bg.png?1321971233') repeat-x scroll center top;
|
@@ -51,27 +55,27 @@ body:after {
|
|
51
55
|
position: relative;
|
52
56
|
border-bottom: 2px solid #555555;
|
53
57
|
}
|
54
|
-
/* line
|
58
|
+
/* line 51, ../../sass/admin.scss */
|
55
59
|
#header #header_top {
|
56
60
|
overflow: hidden;
|
57
61
|
*zoom: 1;
|
58
62
|
}
|
59
|
-
/* line
|
63
|
+
/* line 55, ../../sass/admin.scss */
|
60
64
|
#header h1 {
|
61
65
|
font-size: 27px;
|
62
66
|
color: #444444;
|
63
67
|
}
|
64
|
-
/* line
|
68
|
+
/* line 60, ../../sass/admin.scss */
|
65
69
|
#header #main_title {
|
66
70
|
float: left;
|
67
71
|
margin-top: 8px;
|
68
72
|
margin-left: 40px;
|
69
73
|
}
|
70
|
-
/* line
|
74
|
+
/* line 65, ../../sass/admin.scss */
|
71
75
|
#header #main_title h1 {
|
72
76
|
margin-bottom: 8px;
|
73
77
|
}
|
74
|
-
/* line
|
78
|
+
/* line 69, ../../sass/admin.scss */
|
75
79
|
#header #admin_controls {
|
76
80
|
font-size: .95em;
|
77
81
|
float: right;
|
@@ -79,21 +83,21 @@ body:after {
|
|
79
83
|
margin-right: 30px;
|
80
84
|
color: white;
|
81
85
|
}
|
82
|
-
/* line
|
86
|
+
/* line 76, ../../sass/admin.scss */
|
83
87
|
#header #admin_controls a {
|
84
88
|
color: white;
|
85
89
|
}
|
86
|
-
/* line
|
90
|
+
/* line 80, ../../sass/admin.scss */
|
87
91
|
#header #admin_controls .welcome {
|
88
92
|
margin-right: 6px;
|
89
93
|
}
|
90
|
-
/* line
|
94
|
+
/* line 84, ../../sass/admin.scss */
|
91
95
|
#header #admin_controls .logout_link {
|
92
96
|
background-position: right;
|
93
97
|
padding-right: 25px;
|
94
98
|
margin-left: 6px;
|
95
99
|
}
|
96
|
-
/* line
|
100
|
+
/* line 93, ../../sass/admin.scss */
|
97
101
|
#header #app_buttons {
|
98
102
|
height: 68px;
|
99
103
|
min-width: 200px;
|
@@ -121,11 +125,11 @@ body:after {
|
|
121
125
|
#header #app_buttons {
|
122
126
|
*display: inline;
|
123
127
|
}
|
124
|
-
/* line
|
128
|
+
/* line 104, ../../sass/admin.scss */
|
125
129
|
#header #app_buttons a {
|
126
130
|
color: #222222;
|
127
131
|
}
|
128
|
-
/* line
|
132
|
+
/* line 108, ../../sass/admin.scss */
|
129
133
|
#header #app_buttons div {
|
130
134
|
width: 55px;
|
131
135
|
height: 55px;
|
@@ -135,7 +139,7 @@ body:after {
|
|
135
139
|
float: left;
|
136
140
|
background-color: #EEEEEE;
|
137
141
|
}
|
138
|
-
/* line
|
142
|
+
/* line 117, ../../sass/admin.scss */
|
139
143
|
#header #app_buttons div img {
|
140
144
|
margin-left: auto;
|
141
145
|
margin-right: auto;
|
@@ -143,40 +147,40 @@ body:after {
|
|
143
147
|
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
|
144
148
|
opacity: 0.8;
|
145
149
|
}
|
146
|
-
/* line
|
150
|
+
/* line 124, ../../sass/admin.scss */
|
147
151
|
#header #app_buttons div span.name {
|
148
152
|
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90);
|
149
153
|
opacity: 0.9;
|
150
154
|
display: block;
|
151
155
|
font-size: 0.8em;
|
152
156
|
}
|
153
|
-
/* line
|
157
|
+
/* line 131, ../../sass/admin.scss */
|
154
158
|
#header #app_buttons a.active div {
|
155
159
|
border: 1px solid #DDDD00;
|
156
160
|
}
|
157
|
-
/* line
|
161
|
+
/* line 133, ../../sass/admin.scss */
|
158
162
|
#header #app_buttons a.active div img {
|
159
163
|
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
|
160
164
|
opacity: 0.7;
|
161
165
|
}
|
162
|
-
/* line
|
166
|
+
/* line 136, ../../sass/admin.scss */
|
163
167
|
#header #app_buttons a.active div span.name {
|
164
168
|
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
|
165
169
|
opacity: 0.8;
|
166
170
|
}
|
167
171
|
|
168
|
-
/* line
|
172
|
+
/* line 144, ../../sass/admin.scss */
|
169
173
|
#admin-switcher-menu .section_title {
|
170
174
|
font-size: 14px;
|
171
175
|
line-height: 36px;
|
172
176
|
}
|
173
177
|
|
174
|
-
/* line
|
178
|
+
/* line 154, ../../sass/admin.scss */
|
175
179
|
#spider-admin .container-fluid .content {
|
176
180
|
background-color: white;
|
177
181
|
}
|
178
182
|
|
179
|
-
/* line
|
183
|
+
/* line 161, ../../sass/admin.scss */
|
180
184
|
#container, .spider-admin-container {
|
181
185
|
background: url('../../img/css/side_bg.png?1321971233') repeat-y;
|
182
186
|
position: relative;
|
@@ -188,7 +192,7 @@ body:after {
|
|
188
192
|
overflow: hidden;
|
189
193
|
*zoom: 1;
|
190
194
|
}
|
191
|
-
/* line
|
195
|
+
/* line 171, ../../sass/admin.scss */
|
192
196
|
#container #sidebar, #container > .spider-admin-sidebar, .spider-admin-container #sidebar, .spider-admin-container > .spider-admin-sidebar {
|
193
197
|
position: absolute;
|
194
198
|
top: 0;
|
@@ -196,27 +200,27 @@ body:after {
|
|
196
200
|
width: 220px;
|
197
201
|
padding: 20px 10px;
|
198
202
|
}
|
199
|
-
/* line
|
203
|
+
/* line 178, ../../sass/admin.scss */
|
200
204
|
#container #sidebar li.active a, #container > .spider-admin-sidebar li.active a, .spider-admin-container #sidebar li.active a, .spider-admin-container > .spider-admin-sidebar li.active a {
|
201
205
|
text-decoration: underline;
|
202
206
|
}
|
203
|
-
/* line
|
207
|
+
/* line 182, ../../sass/admin.scss */
|
204
208
|
#container #sidebar li, #container > .spider-admin-sidebar li, .spider-admin-container #sidebar li, .spider-admin-container > .spider-admin-sidebar li {
|
205
209
|
margin-bottom: 1px;
|
206
210
|
}
|
207
|
-
/* line
|
211
|
+
/* line 187, ../../sass/admin.scss */
|
208
212
|
#container #content, #container > .spider-admin-content, .spider-admin-container #content, .spider-admin-container > .spider-admin-content {
|
209
213
|
margin-left: 240px;
|
210
214
|
}
|
211
215
|
|
212
|
-
/* line
|
216
|
+
/* line 192, ../../sass/admin.scss */
|
213
217
|
.crud .table {
|
214
218
|
width: auto;
|
215
219
|
min-width: 400px;
|
216
220
|
}
|
217
221
|
|
218
222
|
@media screen and (max-width: 500px) {
|
219
|
-
/* line
|
223
|
+
/* line 201, ../../sass/admin.scss */
|
220
224
|
#header #main_title {
|
221
225
|
font-size: 10px;
|
222
226
|
}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<div class="{ @widget[:css_class] }">
|
2
2
|
<tpl:assets widgets="core:table,forms:form" />
|
3
3
|
<tpl:asset type="css" src="css/crud.css" />
|
4
|
-
<div sp:if="@saved" class="
|
4
|
+
<div sp:if="@saved" class="alert alert-success">
|
5
5
|
Salvataggio effettuato
|
6
6
|
</div>
|
7
|
-
<div sp:if="@deleted" class="
|
7
|
+
<div sp:if="@deleted" class="alert alert-success">
|
8
8
|
Cancellazione effettuata
|
9
9
|
</div>
|
10
10
|
<core:confirm id="ask_delete" sp:if="@ask_delete">
|
@@ -179,21 +179,21 @@ module Spider; module Components
|
|
179
179
|
return list
|
180
180
|
end
|
181
181
|
else
|
182
|
-
format_value(element.type, row[el])
|
182
|
+
format_value(element.type, row[el], element.attributes)
|
183
183
|
end
|
184
184
|
end
|
185
185
|
|
186
|
-
def format_value(type, value)
|
186
|
+
def format_value(type, value, attributes={})
|
187
187
|
if type <= Spider::Bool
|
188
|
-
return
|
188
|
+
return value ? _('Yes') : _('No')
|
189
189
|
elsif !value
|
190
190
|
return ''
|
191
191
|
elsif type <= Date || type <= Time
|
192
192
|
return Spider::I18n.localize_date_time(@request.locale, value, :short)
|
193
193
|
elsif type <= Float || type <= BigDecimal
|
194
194
|
str = Spider::I18n.localize_number(@request.locale, value)
|
195
|
-
if
|
196
|
-
str = "&#{
|
195
|
+
if attributes[:currency]
|
196
|
+
str = "&#{attributes[:currency]}; #{str}"
|
197
197
|
end
|
198
198
|
return str
|
199
199
|
elsif value.respond_to?(:format)
|
@@ -6,14 +6,19 @@
|
|
6
6
|
%>
|
7
7
|
<forms:row error_condition="<%=error_condition%>" required="<%=required%>" element="<%=@attributes['element']%>">
|
8
8
|
<forms:element_label element="<%=@attributes['element']%>" required="<%=required%>" inputs_hash="<%=inputs_hash%>"/>
|
9
|
-
<
|
10
|
-
<sp:
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
9
|
+
<div class="controls">
|
10
|
+
<sp:run obj="@<%=inputs_hash%>[<%=@attributes['element']%>]" widget="<%=@attributes['element']%>">
|
11
|
+
<sp:attribute widget="<%=@attributes['element'][1..-1]%>" name="required" value="<%=(@attributes['required']=='true')? 'true' : ''%>" />
|
12
|
+
<%
|
13
|
+
(@attributes.keys - tag_attrs).each do |k|
|
14
|
+
%>
|
15
|
+
<sp:attribute widget="<%=@attributes['element'][1..-1]%>" name="<%=k%>" value="<%=@attributes[k]%>" />
|
16
|
+
<%
|
17
|
+
end
|
18
|
+
%>
|
19
|
+
</sp:run>
|
20
|
+
<p sp:if="!@model.elements[<%=@attributes['element']%>].attributes[:description].blank?" class="help-block">
|
21
|
+
{ @model.elements[<%=@attributes['element']%>].attributes[:description] }
|
22
|
+
</p>
|
23
|
+
</div>
|
19
24
|
</forms:row>
|
@@ -84,6 +84,7 @@ module Spider; module Forms
|
|
84
84
|
@model = @obj.class
|
85
85
|
end
|
86
86
|
end
|
87
|
+
@scene.model = @model
|
87
88
|
if (@elements.is_a?(String))
|
88
89
|
@elements = @elements.split(',').map{ |e| @model.elements[e.strip.to_sym] }.reject{ |i| i.nil? }
|
89
90
|
@requested_elements = @elements
|
@@ -147,30 +148,42 @@ module Spider; module Forms
|
|
147
148
|
|
148
149
|
def load_widgets(template=@template)
|
149
150
|
super
|
150
|
-
if
|
151
|
-
@
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
151
|
+
if @action == :sub
|
152
|
+
if @sub_element.multiple?
|
153
|
+
@crud = Spider::Components::Crud.new(@request, @response)
|
154
|
+
@crud.id = "crud_#{@sub_element.name.to_s}"
|
155
|
+
@crud.model = @sub_element.model
|
156
|
+
add_widget(@crud)
|
157
|
+
@scene.crud = @crud
|
158
|
+
@obj = load
|
159
|
+
cond = {}
|
160
|
+
debugger
|
161
|
+
if @sub_element.integrated?
|
162
|
+
@sub_element.integrated_from.model.primary_keys.each do |key|
|
163
|
+
cond[@sub_element.reverse.to_s+'.'+key.name.to_s] = @obj.get("#{@sub_element.integrated_from.name}.#{key.name}")
|
164
|
+
end
|
165
|
+
else
|
166
|
+
@model.primary_keys.each do |key|
|
167
|
+
cond[@sub_element.reverse.to_s+'.'+key.name.to_s] = @obj.get(key)
|
168
|
+
end
|
161
169
|
end
|
162
|
-
|
163
|
-
|
164
|
-
|
170
|
+
@crud.fixed = cond
|
171
|
+
sub_elements = []
|
172
|
+
#sub_elements += @sub_element.model.primary_keys.map{ |k| k.name }
|
173
|
+
@sub_element.model.elements_array.each do |el|
|
174
|
+
sub_elements << el.name unless el.integrated? || el.model == @model
|
165
175
|
end
|
176
|
+
@crud.attributes[:table_elements] = sub_elements
|
177
|
+
# else
|
178
|
+
# @crud = Spider::Forms::Form.new(@request, @response)
|
179
|
+
# @form.id = "crud_#{@sub_element.name.to_s}"
|
180
|
+
# @form.model = @sub_element.model
|
181
|
+
# add_widget(@crud)
|
182
|
+
# @scene.crud = @crud
|
183
|
+
# @obj.load
|
184
|
+
# debugger
|
185
|
+
# @form.pk = @obj.get(@sub_element).id
|
166
186
|
end
|
167
|
-
@crud.fixed = cond
|
168
|
-
sub_elements = []
|
169
|
-
#sub_elements += @sub_element.model.primary_keys.map{ |k| k.name }
|
170
|
-
@sub_element.model.elements_array.each do |el|
|
171
|
-
sub_elements << el.name unless el.integrated? || el.model == @model
|
172
|
-
end
|
173
|
-
@crud.attributes[:table_elements] = sub_elements
|
174
187
|
else
|
175
188
|
create_inputs
|
176
189
|
end
|
@@ -250,7 +263,7 @@ module Spider; module Forms
|
|
250
263
|
if ([:choice, :multiple_choice, :state, :multiple_state].include?(el.association) && !el.extended?)
|
251
264
|
widget_type = el.type.attributes[:estimated_size] && el.type.attributes[:estimated_size] > 30 ?
|
252
265
|
SearchSelect : Select
|
253
|
-
elsif @attributes[:show_related] && @pk
|
266
|
+
elsif @attributes[:show_related] && @pk
|
254
267
|
@sub_links[el.name] = sub_link(el)
|
255
268
|
end
|
256
269
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
<input type="checkbox" name="{ @name }" id="input" value="1" size="{ @size }" sp:attr-if="@value,checked">
|
3
|
-
</
|
3
|
+
</sp:template>
|
@@ -1,6 +1,6 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
<tpl:asset type="js" src="input.js" />
|
3
3
|
<tpl:asset name="jquery-ui-datepicker" />
|
4
4
|
<tpl:asset type="js" src="date_time.js" />
|
5
5
|
<input type="text" name="{ @name }" id="input" value="{ @formatted_value }" size="{ @size }" class="{ @mode } { @additional_classes.join(' ') }">
|
6
|
-
</
|
6
|
+
</sp:template>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
<tpl:asset type="css" src="css/file_input.css" />
|
3
3
|
<tpl:asset type="js" src="input.js" />
|
4
4
|
<tpl:asset type="js" src="file_input.js" />
|
@@ -9,4 +9,4 @@
|
|
9
9
|
<div class="change"><span sp:if="@value && !@value.to_s.empty?"><span class="change-label">_(Change)</span>:</span>
|
10
10
|
<input type="file" name="{ @name }[file]" id="input" value="{ @value }" size="{ @size }">
|
11
11
|
</div>
|
12
|
-
</
|
12
|
+
</sp:template>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
<tpl:asset type="js" src="ckeditor/ckeditor.js" compressed="true" copy_dir="true"/>
|
3
3
|
<tpl:asset type="js" src="ckeditor/adapters/jquery.js" compressed="true" />
|
4
4
|
<tpl:asset name="jquery" />
|
@@ -11,4 +11,4 @@
|
|
11
11
|
<div class="css" style="display:none">{ @css }</div>
|
12
12
|
<div class="options" style="display:none">{ @options }</div>
|
13
13
|
<textarea name="{ @name }" id="input" rows="{ @rows }" cols="{ @cols }">{ @value }</textarea>
|
14
|
-
</
|
14
|
+
</sp:template>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
{ @value }
|
3
|
-
</
|
3
|
+
</sp:template>
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
<input type="password" name="{ @name }[pwd1]" id="input" value="" size="{ @size }"><br>
|
3
3
|
<div class="help-block">Ripeti la password:</div>
|
4
4
|
<input type="password" name="{ @name }[pwd2]" id="input2" value="" size="{ @size }"><br>
|
5
|
-
</
|
5
|
+
</sp:template>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
<tpl:asset type="js" src="input.js" />
|
3
3
|
<tpl:asset type="js" src="select.js" />
|
4
4
|
<tpl:asset type="js" app="core/components" src="js/jquery/plugins/bsmselect/js/jquery.bsmselect.js" if="@multiple" />
|
@@ -13,4 +13,4 @@
|
|
13
13
|
{ @data[i].to_s }
|
14
14
|
</option>
|
15
15
|
</select>
|
16
|
-
</
|
16
|
+
</sp:template>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
<input type="text" id="input" name="{ @name }" value="{ @formatted_value }" size="{ @size }">
|
3
|
-
</
|
3
|
+
</sp:template>
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<
|
1
|
+
<sp:template>
|
2
2
|
<tpl:asset type="js" src="input.js" /><tpl:asset type="js" src="text_area.js" />
|
3
3
|
<tpl:asset type="js" app="core/components" src="js/jquery/plugins/autogrow/jquery.autogrow.js" />
|
4
4
|
<textarea name="{ @name }" id="input" rows="{ @rows }" cols="{ @cols }">{ @value }</textarea>
|
5
|
-
</
|
5
|
+
</sp:template>
|