spiderfw 0.6.23 → 0.6.24
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 +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>
|