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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/drg_cms/drg_cms.js +54 -7
- data/app/assets/javascripts/drg_cms_application.js +1 -1
- data/app/assets/javascripts/drg_cms_cms.js +1 -1
- data/app/assets/stylesheets/drg_cms/drg_cms.css +32 -1
- data/app/controllers/cmsedit_controller.rb +49 -18
- data/app/controllers/dc_application_controller.rb +82 -21
- data/app/controllers/dc_common_controller.rb +64 -5
- data/app/forms/all_options.yml +2 -0
- data/app/forms/dc_ad.yml +11 -22
- data/app/forms/dc_design.yml +13 -13
- data/app/forms/dc_json_ld.yml +59 -0
- data/app/forms/dc_key_value.yml +32 -0
- data/app/forms/dc_menu_item.yml +1 -0
- data/app/forms/dc_page.yml +1 -5
- data/app/forms/dc_seo.yml +33 -0
- data/app/forms/json_ld_schema.yml +168 -0
- data/app/helpers/cmsedit_helper.rb +29 -24
- data/app/helpers/dc_application_helper.rb +105 -4
- data/app/models/concerns/dc_page_concern.rb +30 -5
- data/app/models/concerns/dc_seo_concern.rb +66 -0
- data/app/models/dc_design.rb +2 -0
- data/app/models/dc_json_ld.rb +152 -0
- data/app/models/dc_key_value.rb +48 -0
- data/app/models/dc_page.rb +0 -1
- data/app/models/drgcms_form_fields/hash_field.rb +86 -0
- data/app/models/drgcms_form_fields/select.rb +48 -15
- data/app/models/drgcms_form_fields/text_autocomplete.rb +14 -2
- data/app/models/drgcms_form_fields/tree_select.rb +4 -1
- data/app/{helpers → renderers}/dc_ad_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_big_menu_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_captcha_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_common_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_gallery_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_menu_renderer.rb +10 -4
- data/app/{helpers → renderers}/dc_page_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_part_renderer.rb +4 -4
- data/app/{helpers → renderers}/dc_piece_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_poll_renderer.rb +13 -5
- data/app/{helpers → renderers}/dc_renderer.rb +0 -0
- data/app/{helpers → renderers}/dc_simple_menu_renderer.rb +0 -0
- data/app/views/cmsedit/_edit_stuff.html.erb +3 -22
- data/config/locales/drgcms_en.yml +3 -1
- data/config/locales/drgcms_sl.yml +2 -0
- data/config/locales/models_en.yml +38 -6
- data/config/locales/models_sl.yml +39 -7
- data/lib/drg_cms.rb +2 -1
- data/lib/drg_cms/version.rb +1 -1
- 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
|
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
|
-
|
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
|
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
|
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
|
########################################################################
|
data/app/forms/all_options.yml
CHANGED
data/app/forms/dc_ad.yml
CHANGED
@@ -42,14 +42,12 @@ form:
|
|
42
42
|
name: position
|
43
43
|
type: text_with_select
|
44
44
|
eval: dc_big_table 'ads-positions'
|
45
|
-
|
46
|
-
size: 20
|
45
|
+
size: 20
|
47
46
|
|
48
47
|
20:
|
49
48
|
name: description
|
50
49
|
type: text_field
|
51
|
-
|
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
|
-
|
62
|
-
size: 50
|
59
|
+
size: 50
|
63
60
|
|
64
61
|
50:
|
65
62
|
name: width
|
66
63
|
type: text_field
|
67
|
-
|
68
|
-
size: 5
|
64
|
+
size: 5
|
69
65
|
|
70
66
|
60:
|
71
67
|
name: height
|
72
68
|
type: text_field
|
73
|
-
|
74
|
-
size: 5
|
69
|
+
size: 5
|
75
70
|
|
76
71
|
70:
|
77
72
|
name: link
|
78
73
|
type: text_field
|
79
|
-
|
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
|
-
|
90
|
-
size: 100x20
|
83
|
+
size: 100x20
|
91
84
|
|
92
85
|
90:
|
93
86
|
name: displays
|
94
87
|
type: text_field
|
95
|
-
|
96
|
-
size: 6
|
88
|
+
size: 6
|
97
89
|
|
98
90
|
100:
|
99
91
|
name: clicks
|
100
92
|
type: text_field
|
101
|
-
|
102
|
-
size: 6
|
93
|
+
size: 6
|
103
94
|
|
104
95
|
110:
|
105
96
|
name: priority
|
106
97
|
type: text_field
|
107
|
-
|
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
|
-
|
126
|
-
size: 50
|
115
|
+
size: 50
|
127
116
|
|
128
117
|
150:
|
129
118
|
name: dc_site_id
|
data/app/forms/dc_design.yml
CHANGED
@@ -33,8 +33,7 @@ form:
|
|
33
33
|
10:
|
34
34
|
name: description
|
35
35
|
type: text_field
|
36
|
-
|
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
|
-
|
48
|
-
size: 50
|
46
|
+
size: 50
|
49
47
|
|
50
48
|
40:
|
51
49
|
name: control_method
|
52
50
|
type: text_field
|
53
|
-
|
54
|
-
size: 50
|
51
|
+
size: 50
|
55
52
|
|
56
53
|
50:
|
57
54
|
name: rails_view
|
58
55
|
type: text_field
|
59
|
-
|
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
|
-
|
66
|
-
size: 120x25
|
66
|
+
size: 120x25
|
67
67
|
|
68
|
-
|
68
|
+
80:
|
69
69
|
name: css
|
70
70
|
type: text_area
|
71
|
-
|
72
|
-
|
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
|
data/app/forms/dc_menu_item.yml
CHANGED
data/app/forms/dc_page.yml
CHANGED
@@ -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
|
+
|