spiderfw 0.6.23 → 0.6.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/CHANGELOG +10 -1
  2. data/README.rdoc +1 -1
  3. data/VERSION +1 -1
  4. data/apps/config_editor/_init.rb +1 -2
  5. data/apps/config_editor/controllers/config_editor_controller.rb +1 -7
  6. data/apps/core/admin/controllers/admin_controller.rb +1 -1
  7. data/apps/core/admin/public/css/sass/admin.css +35 -31
  8. data/apps/core/admin/public/sass/admin.scss +6 -1
  9. data/apps/core/components/widgets/crud/crud.shtml +2 -2
  10. data/apps/core/components/widgets/table/table.rb +5 -5
  11. data/apps/core/forms/tags/element_row.erb +15 -10
  12. data/apps/core/forms/widgets/form/form.rb +35 -22
  13. data/apps/core/forms/widgets/inputs/checkbox/checkbox.shtml +2 -2
  14. data/apps/core/forms/widgets/inputs/date_time/date_time.shtml +2 -2
  15. data/apps/core/forms/widgets/inputs/file_input/file_input.shtml +2 -2
  16. data/apps/core/forms/widgets/inputs/html_area/html_area.shtml +2 -2
  17. data/apps/core/forms/widgets/inputs/input/input.shtml +2 -2
  18. data/apps/core/forms/widgets/inputs/password/password.shtml +2 -2
  19. data/apps/core/forms/widgets/inputs/search_select/search_select.shtml +1 -1
  20. data/apps/core/forms/widgets/inputs/select/select.shtml +2 -2
  21. data/apps/core/forms/widgets/inputs/text/text.shtml +2 -2
  22. data/apps/core/forms/widgets/inputs/text_area/text_area.shtml +2 -2
  23. data/apps/core/forms/widgets/inputs/time_span/time_span.shtml +1 -1
  24. data/blueprints/home/config.ru +8 -0
  25. data/lib/spiderfw/app.rb +416 -224
  26. data/lib/spiderfw/cmd/commands/app.rb +243 -239
  27. data/lib/spiderfw/cmd/commands/cert.rb +421 -417
  28. data/lib/spiderfw/cmd/commands/config.rb +85 -82
  29. data/lib/spiderfw/cmd/commands/console.rb +64 -40
  30. data/lib/spiderfw/cmd/commands/content.rb +29 -25
  31. data/lib/spiderfw/cmd/commands/create.rb +58 -54
  32. data/lib/spiderfw/cmd/commands/model.rb +118 -114
  33. data/lib/spiderfw/cmd/commands/setup.rb +55 -51
  34. data/lib/spiderfw/cmd/commands/test.rb +63 -59
  35. data/lib/spiderfw/cmd/commands/webserver.rb +56 -51
  36. data/lib/spiderfw/config/options/spider.rb +4 -3
  37. data/lib/spiderfw/controller/controller.rb +2 -0
  38. data/lib/spiderfw/controller/http_controller.rb +1 -2
  39. data/lib/spiderfw/controller/mixins/static_content.rb +3 -3
  40. data/lib/spiderfw/controller/mixins/visual.rb +30 -15
  41. data/lib/spiderfw/controller/response.rb +84 -0
  42. data/lib/spiderfw/controller/session/file_session.rb +2 -2
  43. data/lib/spiderfw/http/adapters/rack.rb +12 -13
  44. data/lib/spiderfw/http/server.rb +80 -46
  45. data/lib/spiderfw/i18n/cldr.rb +6 -9
  46. data/lib/spiderfw/model/base_model.rb +103 -23
  47. data/lib/spiderfw/model/condition.rb +110 -25
  48. data/lib/spiderfw/model/mappers/db_mapper.rb +14 -6
  49. data/lib/spiderfw/model/mappers/mapper.rb +440 -197
  50. data/lib/spiderfw/model/model.rb +105 -21
  51. data/lib/spiderfw/model/model_hash.rb +9 -1
  52. data/lib/spiderfw/model/query.rb +50 -9
  53. data/lib/spiderfw/model/query_set.rb +211 -44
  54. data/lib/spiderfw/model/request.rb +28 -21
  55. data/lib/spiderfw/model/storage/base_storage.rb +125 -10
  56. data/lib/spiderfw/model/storage/db/db_storage.rb +7 -4
  57. data/lib/spiderfw/model/storage.rb +8 -1
  58. data/lib/spiderfw/setup/spider_setup_wizard.rb +9 -7
  59. data/lib/spiderfw/spider.rb +270 -43
  60. data/lib/spiderfw/templates/layout.rb +9 -4
  61. data/lib/spiderfw/templates/resources/sass.rb +3 -2
  62. data/lib/spiderfw/templates/template.rb +1 -0
  63. data/lib/spiderfw/utils/annotations.rb +3 -1
  64. data/lib/spiderfw/utils/logger.rb +1 -1
  65. data/lib/spiderfw/utils/monkey/symbol.rb +4 -2
  66. data/lib/spiderfw/utils/shared_store/file_shared_store.rb +2 -2
  67. data/lib/spiderfw/utils/thread_out.rb +3 -1
  68. data/public/css/error_page.css +83 -0
  69. data/public/js/error_page.js +5 -0
  70. data/spider.gemspec +4 -1
  71. data/templates/email/error.erb +9 -0
  72. metadata +28 -12
  73. data/apps/config_editor/widgets/edit_bool/edit_bool.rb +0 -8
  74. 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, 2011
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 model layer that is easy to use, yet flexible enough to adapt to legacy schemas.
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.23
1
+ 0.6.24
@@ -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
- wclass = case option[:params][:type].name
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 17, ../../sass/admin.scss */
27
- #admin form.form-horizontal input,
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 21, ../../sass/admin.scss */
37
+ /* line 26, ../../sass/admin.scss */
34
38
  #admin form.form-horizontal select {
35
39
  width: 310px;
36
40
  }
37
- /* line 25, ../../sass/admin.scss */
41
+ /* line 30, ../../sass/admin.scss */
38
42
  #admin form.form-horizontal input.btn {
39
43
  width: auto;
40
44
  }
41
- /* line 29, ../../sass/admin.scss */
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 39, ../../sass/admin.scss */
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 46, ../../sass/admin.scss */
58
+ /* line 51, ../../sass/admin.scss */
55
59
  #header #header_top {
56
60
  overflow: hidden;
57
61
  *zoom: 1;
58
62
  }
59
- /* line 50, ../../sass/admin.scss */
63
+ /* line 55, ../../sass/admin.scss */
60
64
  #header h1 {
61
65
  font-size: 27px;
62
66
  color: #444444;
63
67
  }
64
- /* line 55, ../../sass/admin.scss */
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 60, ../../sass/admin.scss */
74
+ /* line 65, ../../sass/admin.scss */
71
75
  #header #main_title h1 {
72
76
  margin-bottom: 8px;
73
77
  }
74
- /* line 64, ../../sass/admin.scss */
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 71, ../../sass/admin.scss */
86
+ /* line 76, ../../sass/admin.scss */
83
87
  #header #admin_controls a {
84
88
  color: white;
85
89
  }
86
- /* line 75, ../../sass/admin.scss */
90
+ /* line 80, ../../sass/admin.scss */
87
91
  #header #admin_controls .welcome {
88
92
  margin-right: 6px;
89
93
  }
90
- /* line 79, ../../sass/admin.scss */
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 88, ../../sass/admin.scss */
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 99, ../../sass/admin.scss */
128
+ /* line 104, ../../sass/admin.scss */
125
129
  #header #app_buttons a {
126
130
  color: #222222;
127
131
  }
128
- /* line 103, ../../sass/admin.scss */
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 112, ../../sass/admin.scss */
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 119, ../../sass/admin.scss */
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 126, ../../sass/admin.scss */
157
+ /* line 131, ../../sass/admin.scss */
154
158
  #header #app_buttons a.active div {
155
159
  border: 1px solid #DDDD00;
156
160
  }
157
- /* line 128, ../../sass/admin.scss */
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 131, ../../sass/admin.scss */
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 139, ../../sass/admin.scss */
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 149, ../../sass/admin.scss */
178
+ /* line 154, ../../sass/admin.scss */
175
179
  #spider-admin .container-fluid .content {
176
180
  background-color: white;
177
181
  }
178
182
 
179
- /* line 156, ../../sass/admin.scss */
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 166, ../../sass/admin.scss */
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 173, ../../sass/admin.scss */
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 177, ../../sass/admin.scss */
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 182, ../../sass/admin.scss */
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 187, ../../sass/admin.scss */
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 196, ../../sass/admin.scss */
223
+ /* line 201, ../../sass/admin.scss */
220
224
  #header #main_title {
221
225
  font-size: 10px;
222
226
  }
@@ -11,7 +11,12 @@ $sidebar_color: #DFDFDF;
11
11
  #admin {
12
12
  form.form-horizontal {
13
13
 
14
- input,
14
+ .help-block {
15
+ max-width: 550px;
16
+ }
17
+
18
+
19
+ input[type="text"],
15
20
  textarea,
16
21
  select,
17
22
  .uneditable-input {
@@ -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="flash">
4
+ <div sp:if="@saved" class="alert alert-success">
5
5
  Salvataggio effettuato
6
6
  </div>
7
- <div sp:if="@deleted" class="flash">
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 row[el] ? _('Yes') : _('No')
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 element.attributes[:currency]
196
- str = "&#{element.attributes[:currency]}; #{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
- <sp:run obj="@<%=inputs_hash%>[<%=@attributes['element']%>]" widget="<%=@attributes['element']%>">
10
- <sp:attribute widget="<%=@attributes['element'][1..-1]%>" name="required" value="<%=(@attributes['required']=='true')? 'true' : ''%>" />
11
- <%
12
- (@attributes.keys - tag_attrs).each do |k|
13
- %>
14
- <sp:attribute widget="<%=@attributes['element'][1..-1]%>" name="<%=k%>" value="<%=@attributes[k]%>" />
15
- <%
16
- end
17
- %>
18
- </sp:run>
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 (@action == :sub)
151
- @crud = Spider::Components::Crud.new(@request, @response)
152
- @crud.id = "crud_#{@sub_element.name.to_s}"
153
- @crud.model = @sub_element.model
154
- add_widget(@crud)
155
- @scene.crud = @crud
156
- @obj = load
157
- cond = {}
158
- if @sub_element.integrated?
159
- @sub_element.integrated_from.model.primary_keys.each do |key|
160
- cond[@sub_element.reverse.to_s+'.'+key.name.to_s] = @obj.get("#{@sub_element.integrated_from.name}.#{key.name}")
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
- else
163
- @model.primary_keys.each do |key|
164
- cond[@sub_element.reverse.to_s+'.'+key.name.to_s] = @obj.get(key)
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 && el.multiple?
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
- <div class="controls">
1
+ <sp:template>
2
2
  <input type="checkbox" name="{ @name }" id="input" value="1" size="{ @size }" sp:attr-if="@value,checked">
3
- </div>
3
+ </sp:template>
@@ -1,6 +1,6 @@
1
- <div class="controls">
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
- </div>
6
+ </sp:template>
@@ -1,4 +1,4 @@
1
- <div class="controls">
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
- </div>
12
+ </sp:template>
@@ -1,4 +1,4 @@
1
- <div class="controls">
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
- </div>
14
+ </sp:template>
@@ -1,3 +1,3 @@
1
- <div class="controls">
1
+ <sp:template>
2
2
  { @value }
3
- </div>
3
+ </sp:template>
@@ -1,5 +1,5 @@
1
- <div class="controls">
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
- </div>
5
+ </sp:template>
@@ -1,4 +1,4 @@
1
- <div class="controls{ @multiple ? ' multiple' : '' }">
1
+ <div class="{ @multiple ? ' multiple' : '' }">
2
2
  <tpl:asset type="js" name="jquery-ui-autocomplete" />
3
3
  <tpl:asset type="js" src="input.js" />
4
4
  <tpl:asset type="js" src="search_select.js" />
@@ -1,4 +1,4 @@
1
- <div class="controls">
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
- </div>
16
+ </sp:template>
@@ -1,3 +1,3 @@
1
- <div class="controls">
1
+ <sp:template>
2
2
  <input type="text" id="input" name="{ @name }" value="{ @formatted_value }" size="{ @size }">
3
- </div>
3
+ </sp:template>
@@ -1,5 +1,5 @@
1
- <div class="controls">
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
- </div>
5
+ </sp:template>
@@ -1,4 +1,4 @@
1
- <div class="controls">
1
+ <div class="time-span-input">
2
2
  <input type="text" name="{ @name }[val]" id="input" value="{ @formatted_value }" size="8" >
3
3
  <select name="{ @name }[unit]">
4
4
  <option value="sec" sp:attr-if="(@unit == 'sec'),selected">_(Seconds)</option>
@@ -0,0 +1,8 @@
1
+ require 'spiderfw/init'
2
+ require 'spiderfw/http/adapters/rack'
3
+ if defined?(PhusionPassenger)
4
+ PhusionPassenger.on_event(:starting_worker_process) do
5
+ Spider.startup
6
+ end
7
+ end
8
+ run Spider::HTTP::RackApplication.new