drg_cms 0.6.0.1 → 0.6.0.3

Sign up to get free protection for your applications and to get access to all the features.
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
+