drg_cms 0.7.0.2 → 0.7.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/drg_cms/drg_cms.js +110 -35
  3. data/app/assets/javascripts/drg_cms/jquery.bpopup.js +372 -0
  4. data/app/assets/javascripts/drg_cms_application.js +1 -1
  5. data/app/assets/javascripts/drg_cms_cms.js +1 -1
  6. data/app/assets/stylesheets/drg_cms/drg_cms.css +126 -36
  7. data/app/assets/stylesheets/drg_cms/select-multiple.css +6 -7
  8. data/app/controllers/cmsedit_controller.rb +78 -47
  9. data/app/controllers/dc_application_controller.rb +22 -25
  10. data/app/controllers/dc_common_controller.rb +9 -6
  11. data/app/controllers/dc_main_controller.rb +0 -1
  12. data/app/controls/{dc_category_control.rb → dc_gallery_control.rb} +15 -30
  13. data/app/controls/dc_image_control.rb +180 -0
  14. data/app/controls/dc_page_control.rb +3 -3
  15. data/app/controls/dc_poll_result_control.rb +38 -39
  16. data/app/controls/dc_report.rb +9 -4
  17. data/app/controls/dc_setup_control.rb +53 -0
  18. data/app/controls/design_element_settings_control.rb +88 -37
  19. data/app/forms/all_options.yml +20 -9
  20. data/app/forms/cms_menu.yml +14 -2
  21. data/app/forms/dc_gallery.yml +1 -1
  22. data/app/forms/dc_image.yml +122 -0
  23. data/app/forms/dc_image_search.yml +72 -0
  24. data/app/forms/dc_page.yml +11 -8
  25. data/app/forms/dc_poll.yml +2 -1
  26. data/app/forms/dc_poll_result.yml +10 -7
  27. data/app/forms/dc_setup.yml +45 -0
  28. data/app/forms/dc_steps_template.yml +6 -2
  29. data/app/helpers/cms_common_helper.rb +36 -24
  30. data/app/helpers/cms_edit_helper.rb +26 -33
  31. data/app/helpers/cms_helper.rb +29 -12
  32. data/app/helpers/cms_index_helper.rb +109 -80
  33. data/app/helpers/dc_application_helper.rb +108 -86
  34. data/app/helpers/dc_image_helper.rb +127 -0
  35. data/app/models/concerns/dc_policy_rule_concern.rb +1 -1
  36. data/app/models/concerns/dc_user_concern.rb +13 -5
  37. data/app/models/dc_big_table.rb +1 -1
  38. data/app/models/dc_category.rb +12 -0
  39. data/app/models/dc_design.rb +5 -4
  40. data/app/models/dc_filter.rb +24 -27
  41. data/app/models/dc_image.rb +237 -0
  42. data/app/models/dc_internals.rb +5 -9
  43. data/app/models/dc_memory.rb +2 -2
  44. data/app/models/dc_policy_role.rb +8 -8
  45. data/app/models/dc_setup.rb +111 -0
  46. data/app/models/drgcms_form_fields/datetime_picker.rb +1 -1
  47. data/app/models/drgcms_form_fields/drgcms_field.rb +9 -26
  48. data/app/models/drgcms_form_fields/embedded.rb +28 -17
  49. data/app/models/drgcms_form_fields/journal_diff.rb +2 -2
  50. data/app/models/drgcms_form_fields/multitext_autocomplete.rb +88 -76
  51. data/app/models/drgcms_form_fields/select.rb +41 -19
  52. data/app/models/drgcms_form_fields/text_with_select.rb +5 -9
  53. data/app/renderers/dc_big_menu_renderer.rb +18 -20
  54. data/app/renderers/dc_gallery_renderer.rb +10 -4
  55. data/app/renderers/dc_menu_renderer.rb +21 -58
  56. data/app/renderers/dc_page_renderer.rb +7 -7
  57. data/app/renderers/dc_poll_renderer.rb +13 -12
  58. data/app/renderers/dc_simple_menu_renderer.rb +1 -1
  59. data/app/views/cmsedit/_edit_stuff.html.erb +4 -1
  60. data/app/views/cmsedit/edit.html.erb +1 -1
  61. data/app/views/cmsedit/index.html.erb +1 -1
  62. data/app/views/cmsedit/new.html.erb +1 -0
  63. data/config/locales/drgcms_en.yml +22 -2
  64. data/config/locales/drgcms_sl.yml +25 -6
  65. data/config/locales/models_en.yml +50 -1
  66. data/config/locales/models_sl.yml +60 -1
  67. data/drg_cms.gemspec +1 -1
  68. data/lib/drg_cms/version.rb +1 -1
  69. data/lib/drg_cms.rb +40 -27
  70. data/lib/generators/convert_to_ar/USAGE +8 -0
  71. data/lib/generators/convert_to_ar/convert_to_ar_generator.rb +158 -0
  72. data/lib/generators/new_drg_form/new_drg_form_generator.rb +32 -14
  73. metadata +19 -10
  74. data/app/assets/javascripts/drg_cms/jquery.bpopup.min.js +0 -7
  75. data/app/views/layouts/__cmsedit.html.erb +0 -16
@@ -1,4 +1,3 @@
1
- #encoding: utf-8
2
1
  #--
3
2
  # Copyright (c) 2014+ Damjan Rems
4
3
  #
@@ -23,7 +22,7 @@
23
22
  #++
24
23
 
25
24
  ######################################################################
26
- # DrgcmsControls for editing settings in a document.
25
+ # DRG Controls for editing settings in a document.
27
26
  #
28
27
  # Parameters to settings call:
29
28
  # :location - model_name where settings document is located. Typicaly dc_page or dc_site.
@@ -40,33 +39,36 @@ module DesignElementSettingsControl
40
39
  # Return:
41
40
  # [document, data] : Mongoid document, yaml as String
42
41
  ######################################################################
43
- def get_settings()
44
- # On save. Set required variables
42
+ def get_settings
43
+ # On save. Set required variables
45
44
  if params[:record]
46
45
  params[:location] = params[:record][:dc_location]
47
46
  params[:field_name] = params[:record][:dc_field_name]
48
47
  params[:element] = params[:record][:dc_element]
49
48
  params[:id] = params[:record][:dc_document_id]
50
49
  end
51
- # Check model
50
+
51
+ # Check model
52
52
  begin
53
53
  model = params[:location].classify.constantize
54
54
  rescue
55
55
  flash[:error] = "Invalid or undefined model name! #{params[:location]}"
56
56
  return false
57
57
  end
58
- # Check fild name
58
+
59
+ # Check fild name
59
60
  begin
60
61
  document = model.find(params[:id])
61
62
  params[:field_name] ||= (params[:location] == 'dc_site' ? 'settings' : 'params')
62
- # field not defined on document
63
+ # field not defined on document
63
64
  raise unless document.respond_to?(params[:field_name])
64
65
  yaml = document[params[:field_name]] || ''
65
66
  rescue
66
67
  flash[:error] = 'Invalid or undefined field name!'
67
68
  return false
68
69
  end
69
- # Check data
70
+
71
+ # Check data
70
72
  begin
71
73
  data = YAML.load(yaml) || {}
72
74
  rescue
@@ -81,14 +83,12 @@ end
81
83
  #
82
84
  # Load fields on form with values from settings document.
83
85
  ######################################################################
84
- def dc_new_record()
86
+ def dc_new_record
85
87
  document, data = get_settings
86
- return false if document.class == FalseClass and data.nil?
87
- # fill values with settings values
88
- if data['settings'] and data['settings'][ params[:element] ]
89
- data['settings'][ params[:element] ].each { |key, value| @record.send("#{key}=", value) }
90
- end
91
- # add some fields required at post as hidden fields to form
88
+ return false if document.class == FalseClass
89
+
90
+ record_fill_with_values(data)
91
+ # add some fields required at post as hidden fields to form
92
92
  form = @form['form']['tabs'] ? @form['form']['tabs'].to_a.last : @form['form']['fields']
93
93
  form[9999] = {'type' => 'hidden_field', 'name' => 'dc_location', 'html' => {'value' => params[:location]}}
94
94
  form[9998] = {'type' => 'hidden_field', 'name' => 'dc_field_name'}
@@ -96,7 +96,6 @@ def dc_new_record()
96
96
  form[9997] = {'type' => 'hidden_field', 'name' => 'dc_element'}
97
97
  @record.dc_element = params[:element]
98
98
  form[9996] = {'type' => 'hidden_field', 'name' => 'dc_document_id', 'html' => {'value' => params[:id]}}
99
- true
100
99
  end
101
100
 
102
101
  ######################################################################
@@ -104,32 +103,84 @@ end
104
103
  #
105
104
  # Convert data from fields on form to yaml and save it to document settings field.
106
105
  ######################################################################
107
- def dc_before_save()
106
+ def dc_before_save
108
107
  document, data = get_settings
109
- return false if document.class == FalseClass and data.nil?
110
- #
111
- fields_on_form.each do |v|
112
- session[:form_processing] = v['name'] # for debuging
113
- next if v['type'].nil? or
114
- v['readonly'] # fields with readonly option don't return value and would be wiped
115
- # return value from form field definition
116
- value = DrgcmsFormFields.const_get(v['type'].camelize).get_data(params, v['name'])
117
- value = value.map {|e| e.to_s} if value.class == Array
118
- # set to nil if blank
119
- value = nil if value.blank?
120
- data['settings'] ||= {}
121
- data['settings'][ params[:element] ] ||= {}
122
- data['settings'][ params[:element] ][ v['name'] ] = value
123
- end
124
- # remove nil elements
125
- data['settings'][ params[:element] ].compact!
126
- # save data to document field
108
+ return false if document.class == FalseClass
109
+
110
+ field_fill_with_values(data)
127
111
  document.send("#{params[:field_name]}=", data.to_yaml)
112
+ # save to journal
113
+ params[:table] = params[:location] # for journal
114
+ save_journal(:update, document.changes)
128
115
  document.save
129
- # to re-set form again
116
+ params[:table] = 'dc_memory' # restore
117
+ # to re-set form again
130
118
  dc_new_record
131
119
  false # must be
132
120
  end
133
121
 
122
+ private
134
123
 
135
- end
124
+ ######################################################################
125
+ # Fill @record with values found in document hash field
126
+ ######################################################################
127
+ def record_fill_with_values(data)
128
+ # settings
129
+ if params[:element]
130
+ if data['settings'] && data['settings'][params[:element]]
131
+ data['settings'][params[:element]].each { |key, value| @record.send("#{key}=", value) }
132
+ end
133
+ else
134
+ # any field
135
+ fields_on_form.each do |field|
136
+ keys = field['key'] ? field['key'].split(/\.|\,|\;/) : [field['name']]
137
+ value = data.dig(*keys)
138
+ @record.send("#{field['name']}=", value)
139
+ end
140
+ end
141
+ end
142
+
143
+ ######################################################################
144
+ # Fill field with values entered on a form
145
+ ######################################################################
146
+ def field_fill_with_values(data)
147
+ fields_on_form.each do |field|
148
+ session[:form_processing] = field['name'] # for debuging
149
+ next if field['type'].nil? || field['readonly']
150
+
151
+ # return value from form field definition
152
+ value = DrgcmsFormFields.const_get(field['type'].camelize).get_data(params, field['name'])
153
+ value = value.map(&:to_s) if value.class == Array
154
+ # set to nil if blank
155
+ value = nil if value.blank?
156
+
157
+ keys = field['key'] ? field['key'].split(/\.|\,|\;/) : [field['name']]
158
+ if params[:element].present?
159
+ keys = ['settings', params[:element]] + keys
160
+ end
161
+
162
+ h = data
163
+ if value.blank?
164
+ # remove field from hash if empty
165
+ keys.each_with_index do |key, i|
166
+ if i + 1 == keys.size
167
+ h.delete(keys.last) if h
168
+ else
169
+ h = h[key]
170
+ end
171
+ break if h.nil?
172
+ end
173
+ # set hash element
174
+ else
175
+ keys.each_with_index do |key, i|
176
+ break if i + 1 == keys.size
177
+
178
+ h[key] = {} unless h.key?(key)
179
+ h = h[key]
180
+ end
181
+ h[keys.last] = value
182
+ end
183
+ end
184
+ end
185
+
186
+ end
@@ -1,15 +1,16 @@
1
1
  ## DRGCMS Form
2
2
  ---
3
- extend: form_name
3
+ extend: form_name,another_form_name
4
4
  table: table_name
5
5
  title: Some title
6
6
  title:
7
- text: Dynamicaly defined title
7
+ text: Same as above
8
8
  eval: SomeClass.title_method
9
9
  controls: controls_file
10
10
  readonly: 1
11
11
  permissions:
12
12
  can_view: role_name
13
+ class: report
13
14
 
14
15
  script: "
15
16
  javascript code
@@ -129,13 +130,16 @@ result_set:
129
130
  eval: dc_name4_value
130
131
 
131
132
  form:
132
- title:
133
- field: description
134
- height: 600
133
+ title: Title text
134
+ title:
135
+ field: field_name
135
136
  title:
136
- edit: Title for edit
137
- show: Title for show
138
- labels_pos: top
137
+ edit: Title text for edit
138
+ show: Title text for show
139
+
140
+ height: 600
141
+ labels_pos: top
142
+ multipart: true
139
143
 
140
144
  actions: standard
141
145
  actions: none
@@ -214,6 +218,7 @@ form:
214
218
  eval: "dc_choices4('model','description_field_name','_id',site: :with_nil)"
215
219
  eval: ModelName.choices4_site
216
220
  eval: dc_big_table 'key-name'
221
+ depend: field_on_form,another_field_on_form,and_so_on
217
222
  html:
218
223
  include_blank: true
219
224
  90:
@@ -274,12 +279,18 @@ form:
274
279
  html:
275
280
  height: 800
276
281
  20:
277
- name: odhod
282
+ name: time
278
283
  type: datetime_picker
284
+ step: 15
285
+ inline: true
279
286
  20:
280
287
  name: gender
281
288
  type: radio
282
289
  inline: true
290
+ 30:
291
+ name: galery
292
+ type: method
293
+ eval: show_gallery
283
294
 
284
295
  40:
285
296
  name: customer_id
@@ -37,12 +37,17 @@ menu:
37
37
  controller: cmsedit
38
38
  icon: web
39
39
  table: dc_design
40
- 30:
40
+ 30:
41
41
  caption: helpers.label.dc_page.tabletitle
42
42
  controller: cmsedit
43
43
  icon: description-o
44
44
  table: dc_page
45
- 50:
45
+ 40:
46
+ caption: helpers.label.dc_image.tabletitle
47
+ controller: cmsedit
48
+ icon: image-o
49
+ table: dc_image
50
+ 50:
46
51
  caption: helpers.label.dc_piece.tabletitle
47
52
  controller: cmsedit
48
53
  icon: extension-o
@@ -140,6 +145,13 @@ menu:
140
145
  icon: history
141
146
  table: dc_journal
142
147
 
148
+ 510:
149
+ caption: helpers.label.dc_setup.tabletitle
150
+ controller: cmsedit
151
+ icon: cog-o
152
+ table: dc_setup
153
+ form_name: dc_setup
154
+
143
155
  600:
144
156
  caption: drgcms.browse_collections
145
157
  controller: cmsedit
@@ -1,7 +1,7 @@
1
1
  # Form for dc_gallery
2
2
  table: dc_gallery
3
3
  index:
4
- filter: id as text_field, doc_id as text_field
4
+ filter: doc_id as text_field
5
5
  actions: standard
6
6
 
7
7
  result_set:
@@ -0,0 +1,122 @@
1
+ # Form for dc_image
2
+ table: dc_image
3
+
4
+ index:
5
+ actions: standard
6
+
7
+ result_set:
8
+ actions: standard
9
+
10
+ # Choose from
11
+ # _id,created_at,updated_at,name,text,size_l,size_m,size_s,categories,created_by,dc_user_id
12
+ columns:
13
+ 10:
14
+ name: short
15
+ width: 20%
16
+ 20:
17
+ name: created_by
18
+ eval: dc_name4_id,dc_user,name
19
+ 30:
20
+ name: created_at
21
+ format: '%d.%m.%Y'
22
+ 40:
23
+ name: categories_line
24
+ width: 40%
25
+
26
+ form:
27
+ actions: standard
28
+ multipart: true
29
+
30
+ fields:
31
+ 10:
32
+ name: upload_file
33
+ type: file_field
34
+ group: 2
35
+ 20:
36
+ name: image
37
+ type: method
38
+ caption: ' '
39
+ eval: dc_image_preview
40
+ 30:
41
+ name: short
42
+ type: text_field
43
+ size: 50
44
+ 40:
45
+ name: text
46
+ type: text_area
47
+ size: 80x5
48
+ 50:
49
+ name: cats_input
50
+ type: text_area
51
+ size: 50x5
52
+ line: bottom
53
+ 60:
54
+ name: keep_original
55
+ type: check_box
56
+ 70:
57
+ name: size_o
58
+ type: readonly
59
+
60
+ 100:
61
+ name: size_ls
62
+ type: text_with_select
63
+ eval: dc_image_choices_for_image_size
64
+ size: 8
65
+ group: 3
66
+ 110:
67
+ name: size_ms
68
+ type: text_with_select
69
+ eval: dc_image_choices_for_image_size
70
+ size: 8
71
+ 120:
72
+ name: size_ss
73
+ type: text_with_select
74
+ eval: dc_image_choices_for_image_size
75
+ size: 8
76
+ 210:
77
+ name: offset_lx
78
+ type: text_field
79
+ help: helpers.help.dc_image.offset
80
+ size: 3
81
+ group: 3
82
+ 220:
83
+ name: offset_mx
84
+ type: text_field
85
+ help: helpers.help.dc_image.offset
86
+ size: 3
87
+ 230:
88
+ name: offset_sx
89
+ type: text_field
90
+ help: helpers.help.dc_image.offset
91
+ size: 3
92
+
93
+ 310:
94
+ name: offset_ly
95
+ type: text_field
96
+ help: helpers.help.dc_image.offset
97
+ size: 3
98
+ group: 3
99
+ 320:
100
+ name: offset_my
101
+ type: text_field
102
+ help: helpers.help.dc_image.offset
103
+ size: 3
104
+ 330:
105
+ name: offset_sy
106
+ type: text_field
107
+ help: helpers.help.dc_image.offset
108
+ size: 3
109
+
110
+ 410:
111
+ name: preview_l
112
+ type: method
113
+ group: 3
114
+ eval: dc_image_preview_resized
115
+ 420:
116
+ name: preview_m
117
+ type: method
118
+ eval: dc_image_preview_resized
119
+ 430:
120
+ name: preview_s
121
+ type: method
122
+ eval: dc_image_preview_resized
@@ -0,0 +1,72 @@
1
+ # Form for dc_image search
2
+ table: dc_image
3
+ title: drgcms.dc_image.search
4
+
5
+ index:
6
+ actions:
7
+ 1: close
8
+ 2:
9
+ type: window
10
+ action: new
11
+ icon: plus
12
+ caption: drgcms.new
13
+ table: dc_image
14
+ params:
15
+ window_close: 0
16
+ 3:
17
+ type: ajax
18
+ action: run
19
+ icon: search
20
+ caption: drgcms.search
21
+ method: post
22
+ control: dc_image.images_search
23
+ params:
24
+ field_name:
25
+ object: params
26
+ method: field_name
27
+
28
+ 10:
29
+ type: field
30
+ name: short
31
+ field_type: text_field
32
+ size: 20
33
+
34
+ 20:
35
+ type: field
36
+ name: categories
37
+ field_type: text_field
38
+ size: 40
39
+
40
+ 30:
41
+ type: field
42
+ caption: user
43
+ name: created_by
44
+ field_type: select
45
+ eval: DcImage.all_users
46
+ html:
47
+ include_blank: true
48
+
49
+ result_set:
50
+ filter: search_filter
51
+ actions: false
52
+
53
+ # Choose from
54
+ # _id,created_at,updated_at,name,text,size_l,size_m,size_s,categories,created_by,dc_user_id
55
+ columns:
56
+ 10:
57
+ name: preview
58
+ eval: first_dc_image
59
+ caption: drgcms.dc_image.image
60
+ width: 20%
61
+ 20:
62
+ name: short
63
+ 30:
64
+ name: links
65
+ eval: select_links_for_dc_image
66
+ caption: drgcms.dc_image.available
67
+
68
+ css: "
69
+ .img-link {padding: 2px 4px; margin-right: 1rem; background-color: #ddd; border-bottom: 3px solid #222;}
70
+ .dc-image-preview img {max-height: 3rem;}
71
+ .img-link i:hover {color: #2C8EFF; cursor: pointer;}
72
+ "
@@ -58,7 +58,8 @@ form:
58
58
 
59
59
  70:
60
60
  name: publish_date
61
- type: datetime_select
61
+ type: datetime_picker
62
+ step: 15
62
63
 
63
64
  80:
64
65
  name: picture
@@ -69,14 +70,14 @@ form:
69
70
  type: check_box
70
71
  100:
71
72
  name: valid_from
72
- type: datetime_select
73
- options:
74
- include_blank: true
73
+ type: datetime_picker
74
+ step: 15
75
+
75
76
  110:
76
77
  name: valid_to
77
- type: datetime_select
78
- options:
79
- include_blank: true
78
+ type: datetime_picker
79
+ step: 15
80
+
80
81
  # 120:
81
82
  # name: kats
82
83
  # type: select
@@ -96,7 +97,9 @@ form:
96
97
  10:
97
98
  name: dc_design_id
98
99
  type: select
99
- eval: DcDesign.choices4_design(@parent.dc_get_site)
100
+ # eval: DcDesign.choices4_design(@parent.dc_get_site)
101
+ eval: DcDesign.choices4_design
102
+ depend: dc_site_id
100
103
  html:
101
104
  include_blank: true
102
105
  15:
@@ -18,7 +18,8 @@ result_set:
18
18
  columns:
19
19
  1:
20
20
  name: name
21
- 2:
21
+ width: 30%
22
+ 2:
22
23
  name: title
23
24
  width: 40%
24
25
  3:
@@ -9,27 +9,30 @@ index:
9
9
  10:
10
10
  type: field
11
11
  name: dc_poll_id
12
+ position: left
12
13
 
13
14
  30:
14
15
  type: field
15
16
  name: start_date
16
17
  field_type: date_picker
17
-
18
+ position: left
19
+
18
20
  40:
19
21
  type: field
20
22
  name: end_date
21
23
  field_type: date_picker
22
24
  options:
23
25
  openOnFocus: false
24
-
26
+ position: left
27
+
25
28
  50:
26
29
  type: ajax
27
30
  caption: drgcms.filter_poll
28
31
  title: drgcms.filter_poll_title
29
- icon: filter
32
+ icon: filter-alt-o
30
33
  controller: cmsedit
31
34
  action: run
32
- control: dc_poll_result.do_filter
35
+ control: dc_poll_result.filter_set
33
36
  method: post
34
37
 
35
38
  60:
@@ -37,9 +40,9 @@ index:
37
40
  caption: drgcms.export_poll
38
41
  title: drgcms.export_poll_title
39
42
  controller: cmsedit
40
- icon: table
43
+ icon: download-o
41
44
  action: run
42
- control: dc_poll_result.do_export
45
+ control: dc_poll_result.data_export
43
46
  method: post
44
47
 
45
48
  result_set:
@@ -50,7 +53,7 @@ result_set:
50
53
  10:
51
54
  name: dc_poll_id
52
55
  eval: dc_name4_id,dc_poll,name
53
- width: 25%
56
+ width: 40%
54
57
  20:
55
58
  name: created_at
56
59
  format: '%d.%m.%Y %H:%M'
@@ -0,0 +1,45 @@
1
+ table: dc_setup
2
+
3
+ index:
4
+ filter: data as text_field
5
+ actions: standard
6
+
7
+ result_set:
8
+ actions: standard
9
+
10
+ columns:
11
+ 10:
12
+ name: name
13
+ width: 20%
14
+ 20:
15
+ name: updated_at
16
+ format: '%d.%m.%Y'
17
+ width: 10%
18
+
19
+ form:
20
+ title:
21
+ field: name
22
+ actions: standard
23
+
24
+ tabs:
25
+ tab0:
26
+ 10:
27
+ name: name
28
+ type: text_field
29
+ size: 20
30
+
31
+ 20:
32
+ name: editors
33
+ type: multitext_autocomplete
34
+ search: dc_user.name
35
+ size: 30
36
+
37
+ tab00:
38
+ 10:
39
+ name: form
40
+ type: text_area
41
+ size: 80x50
42
+
43
+ css: '
44
+ #record_form {font-family: monospace; font-size: 12px;}
45
+ '
@@ -1,18 +1,22 @@
1
1
  ## Template for standard options on wizard form
2
2
  form:
3
- css: '#dc-form-left {display: block;width: 20%}'
3
+ css: '
4
+ #dc-form-left {display: block;width: 20%;}
5
+ #dc-form-container {display: flex;}'
6
+
4
7
  actions:
5
8
  1:
6
9
  type: ajax
7
10
  caption: drgcms.cancel
8
11
  icon: cancel
9
- method: post
10
12
  form_name: x
11
13
  action: run
12
14
  control: x.steps_cancel
13
15
  params:
14
16
  step: x
15
17
  next_step: x
18
+ html:
19
+ data-validate: false
16
20
 
17
21
  10:
18
22
  type: ajax