drg_cms 0.6.0.1 → 0.6.0.3

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/drg_cms/drg_cms.js +54 -7
  3. data/app/assets/javascripts/drg_cms_application.js +1 -1
  4. data/app/assets/javascripts/drg_cms_cms.js +1 -1
  5. data/app/assets/stylesheets/drg_cms/drg_cms.css +32 -1
  6. data/app/controllers/cmsedit_controller.rb +49 -18
  7. data/app/controllers/dc_application_controller.rb +82 -21
  8. data/app/controllers/dc_common_controller.rb +64 -5
  9. data/app/forms/all_options.yml +2 -0
  10. data/app/forms/dc_ad.yml +11 -22
  11. data/app/forms/dc_design.yml +13 -13
  12. data/app/forms/dc_json_ld.yml +59 -0
  13. data/app/forms/dc_key_value.yml +32 -0
  14. data/app/forms/dc_menu_item.yml +1 -0
  15. data/app/forms/dc_page.yml +1 -5
  16. data/app/forms/dc_seo.yml +33 -0
  17. data/app/forms/json_ld_schema.yml +168 -0
  18. data/app/helpers/cmsedit_helper.rb +29 -24
  19. data/app/helpers/dc_application_helper.rb +105 -4
  20. data/app/models/concerns/dc_page_concern.rb +30 -5
  21. data/app/models/concerns/dc_seo_concern.rb +66 -0
  22. data/app/models/dc_design.rb +2 -0
  23. data/app/models/dc_json_ld.rb +152 -0
  24. data/app/models/dc_key_value.rb +48 -0
  25. data/app/models/dc_page.rb +0 -1
  26. data/app/models/drgcms_form_fields/hash_field.rb +86 -0
  27. data/app/models/drgcms_form_fields/select.rb +48 -15
  28. data/app/models/drgcms_form_fields/text_autocomplete.rb +14 -2
  29. data/app/models/drgcms_form_fields/tree_select.rb +4 -1
  30. data/app/{helpers → renderers}/dc_ad_renderer.rb +0 -0
  31. data/app/{helpers → renderers}/dc_big_menu_renderer.rb +0 -0
  32. data/app/{helpers → renderers}/dc_captcha_renderer.rb +0 -0
  33. data/app/{helpers → renderers}/dc_common_renderer.rb +0 -0
  34. data/app/{helpers → renderers}/dc_gallery_renderer.rb +0 -0
  35. data/app/{helpers → renderers}/dc_menu_renderer.rb +10 -4
  36. data/app/{helpers → renderers}/dc_page_renderer.rb +0 -0
  37. data/app/{helpers → renderers}/dc_part_renderer.rb +4 -4
  38. data/app/{helpers → renderers}/dc_piece_renderer.rb +0 -0
  39. data/app/{helpers → renderers}/dc_poll_renderer.rb +13 -5
  40. data/app/{helpers → renderers}/dc_renderer.rb +0 -0
  41. data/app/{helpers → renderers}/dc_simple_menu_renderer.rb +0 -0
  42. data/app/views/cmsedit/_edit_stuff.html.erb +3 -22
  43. data/config/locales/drgcms_en.yml +3 -1
  44. data/config/locales/drgcms_sl.yml +2 -0
  45. data/config/locales/models_en.yml +38 -6
  46. data/config/locales/models_sl.yml +39 -7
  47. data/lib/drg_cms.rb +2 -1
  48. data/lib/drg_cms/version.rb +1 -1
  49. metadata +22 -14
@@ -55,7 +55,7 @@ def autocomplete
55
55
  a = if params['search'].match(/\./)
56
56
  name, method = params['search'].split('.')
57
57
  table.send(method, params['input']).inject([]) do |r,v|
58
- r << { label: v[0], value: v[0], id: v[1].to_s }
58
+ r << { label: v[0], value: v[0], id: (v[1] || v[0]).to_s }
59
59
  end
60
60
  # simply search which will search and return field_name defined in params['search']
61
61
  else
@@ -64,7 +64,7 @@ def autocomplete
64
64
  end
65
65
  end
66
66
 
67
- render inline: a.to_json, formats: 'js'
67
+ render plain: a.to_json
68
68
  end
69
69
 
70
70
  ########################################################################
@@ -92,8 +92,21 @@ def toggle_edit_mode
92
92
  if session[:edit_mode] < 1
93
93
  dc_render_404
94
94
  else
95
+ # if return_to_ypos parameter is present it will forward it and thus scroll to
96
+ # aproximate position it was when toggle was clicked
95
97
  session[:edit_mode] = (session[:edit_mode] == 1) ? 2 : 1
96
- redirect_to params[:return_to]
98
+ uri = Rack::Utils.parse_nested_query(request.url)
99
+ # it parses only on & so first (return_to) parameter also contains url
100
+ url = uri.first.last
101
+ if (i = url.index('?return_to_ypos')).to_i > 0
102
+ url = url[0,i]
103
+ end
104
+ # offset CMS menu
105
+ if (ypos = uri['return_to_ypos'].to_i) > 0
106
+ ypos += session[:edit_mode] == 2 ? 250 : -250
107
+ end
108
+ url << "?return_to_ypos=#{ypos}"
109
+ redirect_to url
97
110
  end
98
111
  end
99
112
 
@@ -149,7 +162,7 @@ end
149
162
  def restore_from_journal
150
163
  # Only administrators can perform this operation
151
164
  unless dc_user_has_role('admin')
152
- return render inline: { 'msg_info' => (t ('drgcms.not_authorized')) }.to_json, formats: 'js'
165
+ return render plain: { 'msg_info' => (t ('drgcms.not_authorized')) }.to_json
153
166
  end
154
167
  # selected fields to hash
155
168
  restore = {}
@@ -178,7 +191,7 @@ def restore_from_journal
178
191
  # TODO Error checking
179
192
  { 'msg_info' => (t ('drgcms.dc_journal.restored')) }
180
193
  end
181
- render inline: result.to_json, formats: 'js'
194
+ render plain: result.to_json
182
195
  end
183
196
 
184
197
  ########################################################################
@@ -236,8 +249,54 @@ def paste_clipboard
236
249
  dc_render_ajax(div: 'result', value: result )
237
250
  end
238
251
 
252
+ ########################################################################
253
+ # Will add new json_ld element with blank structure into dc_json_ld field on a
254
+ # document.
255
+ ########################################################################
256
+ def add_json_ld_schema
257
+ edited_document = DcJsonLd.find_document_by_ids(params[:table], params[:ids])
258
+ yaml = YAML.load_file( dc_find_form_file('json_ld_schema') )
259
+ schema_data = yaml[params[:schema]]
260
+ # Existing document
261
+ if edited_document.dc_json_lds.find_by(type: "@#{params[:schema]}")
262
+ return render json: {'msg_error' => t('helpers.help.dc_json_ld.add_error', schema: params[:schema] ) }
263
+ else
264
+ add_empty_json_ld_schema(edited_document, schema_data, params[:schema], params[:schema], yaml)
265
+ end
266
+ render json: {'reload_' => 1}
267
+ end
268
+
239
269
  protected
240
270
 
271
+ ########################################################################
272
+ # Subroutine of add_json_ld_schema for adding one element
273
+ ########################################################################
274
+ def add_empty_json_ld_schema(edited_document, schema, schema_name, schema_type, yaml) #:nodoc
275
+ data = {}
276
+ doc = DcJsonLd.new
277
+ doc.name = schema_name
278
+ doc.type = schema_type
279
+
280
+ edited_document.dc_json_lds << doc
281
+ schema.each do |element_name, element|
282
+ next if element_name == 'level' # skip level element
283
+ if yaml[element['type']]
284
+ if element['n'].to_s == '1'
285
+ # single element
286
+ doc_1 = yaml[element['type'] ]
287
+ data[element_name] = doc_1
288
+ else
289
+ # array
290
+ add_empty_json_ld_schema(doc, yaml[element['type']], element_name, element['type'], yaml)
291
+ end
292
+ else
293
+ data[element_name] = element['text']
294
+ end
295
+ end
296
+ doc.data = data.to_yaml
297
+ doc.save
298
+ end
299
+
241
300
  ########################################################################
242
301
  # Update some anomalies in json data on paste_clipboard action.
243
302
  ########################################################################
@@ -152,6 +152,8 @@ form:
152
152
 
153
153
  tabs:
154
154
  tab1:
155
+ caption: my_caption
156
+ caption: helpers.label.table.tab1
155
157
 
156
158
  10:
157
159
  name: name
@@ -42,14 +42,12 @@ form:
42
42
  name: position
43
43
  type: text_with_select
44
44
  eval: dc_big_table 'ads-positions'
45
- html:
46
- size: 20
45
+ size: 20
47
46
 
48
47
  20:
49
48
  name: description
50
49
  type: text_field
51
- html:
52
- size: 50
50
+ size: 50
53
51
 
54
52
  30:
55
53
  name: type
@@ -58,26 +56,22 @@ form:
58
56
  40:
59
57
  name: file
60
58
  type: file_select
61
- html:
62
- size: 50
59
+ size: 50
63
60
 
64
61
  50:
65
62
  name: width
66
63
  type: text_field
67
- html:
68
- size: 5
64
+ size: 5
69
65
 
70
66
  60:
71
67
  name: height
72
68
  type: text_field
73
- html:
74
- size: 5
69
+ size: 5
75
70
 
76
71
  70:
77
72
  name: link
78
73
  type: text_field
79
- html:
80
- size: 50
74
+ size: 50
81
75
 
82
76
  75:
83
77
  name: link_target
@@ -86,26 +80,22 @@ form:
86
80
  80:
87
81
  name: script
88
82
  type: text_area
89
- html:
90
- size: 100x20
83
+ size: 100x20
91
84
 
92
85
  90:
93
86
  name: displays
94
87
  type: text_field
95
- html:
96
- size: 6
88
+ size: 6
97
89
 
98
90
  100:
99
91
  name: clicks
100
92
  type: text_field
101
- html:
102
- size: 6
93
+ size: 6
103
94
 
104
95
  110:
105
96
  name: priority
106
97
  type: text_field
107
- html:
108
- size: 6
98
+ size: 6
109
99
 
110
100
  120:
111
101
  name: valid_from
@@ -122,8 +112,7 @@ form:
122
112
  140:
123
113
  name: active
124
114
  type: check_box
125
- html:
126
- size: 50
115
+ size: 50
127
116
 
128
117
  150:
129
118
  name: dc_site_id
@@ -33,8 +33,7 @@ form:
33
33
  10:
34
34
  name: description
35
35
  type: text_field
36
- html:
37
- size: 50
36
+ size: 50
38
37
  20:
39
38
  name: site_id
40
39
  type: select
@@ -44,32 +43,33 @@ form:
44
43
  30:
45
44
  name: control
46
45
  type: text_field
47
- html:
48
- size: 50
46
+ size: 50
49
47
 
50
48
  40:
51
49
  name: control_method
52
50
  type: text_field
53
- html:
54
- size: 50
51
+ size: 50
55
52
 
56
53
  50:
57
54
  name: rails_view
58
55
  type: text_field
59
- html:
60
- size: 50
56
+ size: 50
61
57
 
62
58
  60:
59
+ name: params
60
+ type: text_area
61
+ size: 100x10
62
+
63
+ 70:
63
64
  name: body
64
65
  type: text_area
65
- html:
66
- size: 120x25
66
+ size: 120x25
67
67
 
68
- 70:
68
+ 80:
69
69
  name: css
70
70
  type: text_area
71
- html:
72
- size: 100x10
71
+ size: 100x10
72
+
73
73
  tab2:
74
74
  10:
75
75
  name: dc_parts
@@ -0,0 +1,59 @@
1
+ ## YAML Template for Link
2
+ ---
3
+ table: dc_json_ld
4
+
5
+ index:
6
+ actions:
7
+ 1: new
8
+ 10:
9
+ type: menu
10
+ eval: DcJsonLd.add_schema_menu(self)
11
+ caption: helpers.help.dc_json_ld.add_schema
12
+
13
+ result_set:
14
+ actions:
15
+ 1: edit
16
+ 2: delete
17
+
18
+ columns:
19
+ 10:
20
+ name: name
21
+ width: 20%
22
+ 20:
23
+ name: type
24
+ width: 20%
25
+ 30:
26
+ name: updated_at
27
+ width: 20%
28
+ 40:
29
+ name: active
30
+ eval: dc_icon4_boolean
31
+
32
+ form:
33
+ title:
34
+ field: type
35
+
36
+ actions: standard
37
+
38
+ fields:
39
+ 10:
40
+ name: name
41
+ type: text_field
42
+ size: 20
43
+
44
+ 20:
45
+ name: type
46
+ type: text_with_select
47
+ eval: DcJsonLd.choices4_type
48
+
49
+ 30:
50
+ name: data
51
+ type: text_area
52
+ size: 100x8
53
+ 40:
54
+ name: dc_json_lds
55
+ type: embedded
56
+ table: dc_json_ld
57
+ html:
58
+ height: 400
59
+
@@ -0,0 +1,32 @@
1
+ ## YAML Template for dc_key_value_store
2
+ ---
3
+ table: dc_key_value
4
+
5
+ index:
6
+ actions: standard
7
+
8
+ result_set:
9
+ actions:
10
+ 1: edit
11
+ 2: delete
12
+
13
+ columns:
14
+ 1:
15
+ name: key
16
+ 2:
17
+ name: value
18
+
19
+ form:
20
+ title:
21
+ field: key
22
+
23
+ fields:
24
+ 10:
25
+ name: key
26
+ type: text_field
27
+ size: 30
28
+
29
+ 20:
30
+ name: value
31
+ type: text_field
32
+ size: 50
@@ -41,6 +41,7 @@ form:
41
41
  name: picture
42
42
  type: file_select
43
43
  size: 50
44
+ preview: false
44
45
  30:
45
46
  name: link
46
47
  type: text_with_select
@@ -1,6 +1,7 @@
1
1
  ## YAML Template for page
2
2
  ---
3
3
  table: dc_page
4
+ include: dc_seo
4
5
 
5
6
  index:
6
7
  filter: subject, sub_subject as text_field, subject_link, alt_link, author_name, dc_site_id, body as text_field
@@ -40,10 +41,6 @@ form:
40
41
  name: subject_link
41
42
  type: text_field
42
43
  size: 50
43
- 30:
44
- name: title
45
- type: text_field
46
- size: 50
47
44
  40:
48
45
  name: alt_link
49
46
  type: text_field
@@ -189,4 +186,3 @@ form:
189
186
  name: if_params
190
187
  type: text_area
191
188
  size: 80x10
192
-
@@ -0,0 +1,33 @@
1
+ form:
2
+ tabs:
3
+ seo:
4
+ caption: helpers.label.dc_seo.seo
5
+ 10:
6
+ name: title
7
+ text: helpers.label.dc_seo.title
8
+ help: helpers.help.dc_seo.title
9
+ type: text_field
10
+ size: 70
11
+
12
+ 20:
13
+ name: meta_description
14
+ text: helpers.label.dc_seo.meta_description
15
+ help: helpers.help.dc_seo.meta_description
16
+ type: text_area
17
+ size: 100x2
18
+
19
+ 30:
20
+ name: canonical_link
21
+ text: helpers.label.dc_seo.canonical_link
22
+ help: helpers.help.dc_seo.canonical_link
23
+ type: text_field
24
+ size: 100
25
+
26
+ 40:
27
+ name: dc_json_lds
28
+ text: helpers.label.dc_seo.dc_json_lds
29
+ help: helpers.help.dc_seo.dc_json_lds
30
+ type: embedded
31
+ table: dc_json_ld
32
+ html:
33
+ height: 600
@@ -0,0 +1,168 @@
1
+ ## JSON/LD schema description
2
+ ---
3
+ # Organization
4
+ Organization:
5
+ level: 1
6
+ name:
7
+ type: String
8
+ text: Organization name
9
+
10
+ legalName:
11
+ type: String
12
+ text: Organization legal name
13
+
14
+ '@id':
15
+ type: String
16
+ text: https://www.example.com
17
+
18
+ url:
19
+ type: String
20
+ text: https://www.example.com
21
+
22
+ logo:
23
+ type: String
24
+ text: https://www.example.com/logo.jpg
25
+
26
+ foundingDate:
27
+ type: String
28
+ text: Year
29
+
30
+ founders:
31
+ type: Person
32
+
33
+ address:
34
+ type: PostalAddress
35
+
36
+ contactPoint:
37
+ type: ContactPoint
38
+
39
+ sameAs:
40
+ type: Array
41
+
42
+ # Person
43
+ Person:
44
+
45
+ name:
46
+ type: String
47
+ text: Name
48
+
49
+ address:
50
+ type: PostalAddress
51
+
52
+ collegue:
53
+ type: Array
54
+
55
+ email:
56
+ type: String
57
+ text: eMail address
58
+
59
+ image:
60
+ type: String
61
+ text: Image filename
62
+
63
+ jobTitle:
64
+ type: String
65
+ text: Job title
66
+
67
+ alumniOf:
68
+ type: String
69
+ text: School name
70
+
71
+ birthPlace:
72
+ type: String
73
+ text: City of birth
74
+
75
+ birthDate:
76
+ type: String
77
+ text: 1999-31-12
78
+
79
+ jobTitle:
80
+ type: String
81
+ text: Job title
82
+
83
+ gender:
84
+ type: String
85
+ text: male/female
86
+
87
+ telephone:
88
+ type: String
89
+ text: (123) 456-6789
90
+
91
+ url:
92
+ type: String
93
+ text: http://www.example.com
94
+
95
+ sameAs:
96
+ type: Array
97
+
98
+ #PostalAddress
99
+ PostalAddress:
100
+
101
+
102
+ streetAddress:
103
+ type: String
104
+ text: address
105
+
106
+ postalCode:
107
+ type: String
108
+ text: 1234
109
+
110
+ addressLocality:
111
+ type: String
112
+ text: CityName
113
+
114
+ addressRegion:
115
+ type: String
116
+ text: CA
117
+
118
+ addressCountry:
119
+ type: String
120
+ text: SI or Slovenia
121
+
122
+ #ContactPoint
123
+ ContactPoint:
124
+
125
+ telephone:
126
+ type: String
127
+ text: +1-877-453-1304
128
+
129
+ contactType:
130
+ type: String
131
+ text: technical support
132
+
133
+ contactOption:
134
+ type: String
135
+ text: TollFree
136
+
137
+ areaServed:
138
+ type: Array
139
+ text: [US,CA]
140
+
141
+ availableLanguage:
142
+ type: String
143
+ text: [English,French]
144
+
145
+ FAQPage:
146
+ level: 1
147
+
148
+ dummy:
149
+ type: String
150
+ text: yes
151
+
152
+ mainEntity:
153
+ type: Question
154
+
155
+ Question:
156
+
157
+ name:
158
+ type: String
159
+ text: Question?
160
+
161
+ acceptedAnswer:
162
+ type: Answer
163
+ n: 1
164
+
165
+ Answer:
166
+ '@type': Answer
167
+ text: Your answer
168
+