drg_cms 0.6.0.8 → 0.6.1.0
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/drg_cms/drg_cms.js +100 -58
- data/app/assets/stylesheets/drg_cms/drg_cms.css +177 -43
- data/app/controllers/cmsedit_controller.rb +149 -145
- data/app/controllers/dc_application_controller.rb +235 -113
- data/app/controllers/dc_common_controller.rb +32 -3
- data/app/controls/dc_help_control.rb +126 -0
- data/app/controls/dc_report.rb +5 -7
- data/app/forms/all_options.yml +10 -4
- data/app/forms/cms_menu.yml +7 -1
- data/app/forms/dc_category.yml +2 -1
- data/app/forms/dc_design.yml +1 -0
- data/app/forms/dc_help_1.yml +109 -0
- data/app/forms/dc_journal.yml +3 -1
- data/app/forms/dc_link.yml +1 -1
- data/app/forms/dc_menu.yml +2 -0
- data/app/forms/dc_menu_item.yml +1 -0
- data/app/forms/dc_page.yml +2 -0
- data/app/forms/dc_part.yml +1 -0
- data/app/forms/dc_piece.yml +1 -0
- data/app/forms/dc_poll.yml +3 -0
- data/app/forms/dc_simple_menu.yml +2 -0
- data/app/forms/dc_site.yml +2 -6
- data/app/forms/dc_user.yml +27 -11
- data/app/forms/dc_user_role.yml +3 -0
- data/app/helpers/cms_common_helper.rb +69 -4
- data/app/helpers/cms_edit_helper.rb +32 -24
- data/app/helpers/cms_helper.rb +64 -26
- data/app/helpers/cms_index_helper.rb +84 -72
- data/app/helpers/dc_application_helper.rb +33 -24
- data/app/models/concerns/dc_page_concern.rb +11 -2
- data/app/models/concerns/dc_policy_rule_concern.rb +20 -8
- data/app/models/concerns/dc_site_concern.rb +56 -44
- data/app/models/concerns/dc_user_concern.rb +57 -18
- data/app/models/dc_design.rb +29 -19
- data/app/models/dc_key_value_store.rb +1 -0
- data/app/models/dc_permission.rb +19 -9
- data/app/models/dc_policy.rb +25 -14
- data/app/models/dc_policy_role.rb +22 -11
- data/app/models/dc_temp.rb +1 -1
- data/app/models/dc_user_role.rb +2 -2
- data/app/models/drgcms_form_fields/embedded.rb +5 -8
- data/app/models/drgcms_form_fields/file_field.rb +1 -1
- data/app/models/drgcms_form_fields/file_select.rb +2 -2
- data/app/models/drgcms_form_fields/hash_field.rb +11 -7
- data/app/models/drgcms_form_fields/link_to.rb +2 -2
- data/app/models/drgcms_form_fields/method.rb +5 -4
- data/app/models/drgcms_form_fields/multitext_autocomplete.rb +1 -1
- data/app/models/drgcms_form_fields/select.rb +10 -9
- data/app/models/drgcms_form_fields/text_autocomplete.rb +2 -2
- data/app/views/cmsedit/edit.html.erb +2 -0
- data/app/views/cmsedit/index.html.erb +2 -1
- data/app/views/cmsedit/new.html.erb +2 -0
- data/app/views/dc_common/_help.html.erb +8 -0
- data/app/views/layouts/models.html.erb +2 -1
- data/config/locales/drgcms_en.yml +12 -0
- data/config/locales/drgcms_sl.yml +15 -0
- data/config/locales/models_en.yml +5 -5
- data/config/locales/models_sl.yml +7 -6
- data/lib/drg_cms.rb +58 -0
- data/lib/drg_cms/version.rb +1 -1
- metadata +5 -3
- data/app/models/__dc_dummy.rb +0 -102
@@ -1,6 +1,5 @@
|
|
1
|
-
#coding: utf-8
|
2
1
|
#--
|
3
|
-
# Copyright (c) 2012
|
2
|
+
# Copyright (c) 2012+ Damjan Rems
|
4
3
|
#
|
5
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
6
5
|
# a copy of this software and associated documentation files (the
|
@@ -125,6 +124,8 @@ def process_login
|
|
125
124
|
if user and user.authenticate(params[:record][:password])
|
126
125
|
fill_login_data(user, params[:record][:remember_me].to_i == 1)
|
127
126
|
return redirect_to params[:return_to] || '/'
|
127
|
+
else
|
128
|
+
clear_login_data # on the safe side
|
128
129
|
end
|
129
130
|
end
|
130
131
|
flash[:error] = t('drgcms.invalid_username')
|
@@ -149,7 +150,6 @@ def login
|
|
149
150
|
if user and user.active
|
150
151
|
fill_login_data(user, true)
|
151
152
|
return redirect_to params[:return_to]
|
152
|
-
|
153
153
|
else
|
154
154
|
clear_login_data # on the safe side
|
155
155
|
end
|
@@ -269,8 +269,37 @@ def add_json_ld_schema
|
|
269
269
|
render json: {'reload_' => 1}
|
270
270
|
end
|
271
271
|
|
272
|
+
########################################################################
|
273
|
+
# Will provide help data
|
274
|
+
########################################################################
|
275
|
+
def help
|
276
|
+
form_name = params[:form_name] || params[:table]
|
277
|
+
@form = form_name ? YAML.load_file(dc_find_form_file(form_name)) : {}
|
278
|
+
return render json: {} if @form.nil?
|
279
|
+
|
280
|
+
help_file_name = @form['help'] || @form['extend'] || params[:form_name] || params[:table]
|
281
|
+
help_file_name = find_help_file(help_file_name)
|
282
|
+
@help = YAML.load_file(help_file_name) if help_file_name
|
283
|
+
# no auto generated help on index action
|
284
|
+
return render json: {} if params[:type] == 'index' && @help.nil?
|
285
|
+
|
286
|
+
render json: { popup: render_to_string(partial: 'help') }
|
287
|
+
end
|
288
|
+
|
272
289
|
protected
|
273
290
|
|
291
|
+
########################################################################
|
292
|
+
# Will search for help file and return it's path if found
|
293
|
+
########################################################################
|
294
|
+
def find_help_file(help_file_name)
|
295
|
+
file_name = nil
|
296
|
+
DrgCms.paths(:forms).reverse.each do |path|
|
297
|
+
f = "#{path}/help/#{help_file_name}.#{I18n.locale}"
|
298
|
+
file_name = f and break if File.exist?(f)
|
299
|
+
end
|
300
|
+
file_name
|
301
|
+
end
|
302
|
+
|
274
303
|
########################################################################
|
275
304
|
# Subroutine of add_json_ld_schema for adding one element
|
276
305
|
########################################################################
|
@@ -0,0 +1,126 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2021+ Damjan Rems
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
######################################################################
|
25
|
+
# Controls for creating help files
|
26
|
+
######################################################################
|
27
|
+
module DcHelpControl
|
28
|
+
|
29
|
+
######################################################################
|
30
|
+
# Will fill dc_temp with help documents found in a defined project directory.
|
31
|
+
######################################################################
|
32
|
+
def project_refresh
|
33
|
+
DcTemp.clear(temp_key)
|
34
|
+
if params[:record][:select_project].present?
|
35
|
+
# far less complicated if saved to session
|
36
|
+
session[:help_project] = params[:record][:select_project]
|
37
|
+
session[:help_lang] = params[:record][:lang_1]
|
38
|
+
help_dir_name = "#{session[:help_project]}/help/"
|
39
|
+
# create help directory if not yet exists
|
40
|
+
FileUtils.mkdir(help_dir_name) unless File.exist?(help_dir_name)
|
41
|
+
Dir["#{help_dir_name}*"].each do |file_name|
|
42
|
+
lang = File.extname(file_name).sub('.','')
|
43
|
+
next unless lang == session[:help_lang]
|
44
|
+
|
45
|
+
DcTemp.new(key: temp_key,
|
46
|
+
project: session[:help_project],
|
47
|
+
form_name: File.basename(file_name,'.*'),
|
48
|
+
lang: lang,
|
49
|
+
updated_at: File.mtime(file_name)).save
|
50
|
+
end
|
51
|
+
end
|
52
|
+
render json: { url: url_for(controller: :cmsedit, table: :dc_temp, form_name: :dc_help_1) }
|
53
|
+
end
|
54
|
+
|
55
|
+
######################################################################
|
56
|
+
# Will populate fields with default values
|
57
|
+
######################################################################
|
58
|
+
def dc_new_record
|
59
|
+
@record.project = session[:help_project]
|
60
|
+
@record.lang = session[:help_lang]
|
61
|
+
end
|
62
|
+
|
63
|
+
######################################################################
|
64
|
+
# Will read data from help file
|
65
|
+
######################################################################
|
66
|
+
def dc_before_edit
|
67
|
+
file_name = "#{session[:help_project]}/help/#{@record.form_name}.#{session[:help_lang]}"
|
68
|
+
data = YAML.load_file(file_name)
|
69
|
+
@record.index = data['index']
|
70
|
+
@record.form = data['form']
|
71
|
+
flash[:warning] = "Use only in development!" unless Rails.env.development?
|
72
|
+
end
|
73
|
+
|
74
|
+
######################################################################
|
75
|
+
# Will save data to help file
|
76
|
+
######################################################################
|
77
|
+
def dc_before_save
|
78
|
+
rec = params[:record]
|
79
|
+
file_name = "#{session[:help_project]}/help/#{@record.form_name}.#{@record.lang}"
|
80
|
+
data = { 'index' => @record.index, 'form' => @record.form }
|
81
|
+
File.write(file_name, data.to_yaml)
|
82
|
+
end
|
83
|
+
|
84
|
+
######################################################################
|
85
|
+
# Will return query to report data
|
86
|
+
######################################################################
|
87
|
+
def data_filter
|
88
|
+
DcTemp.where(key: temp_key).order_by(order: 1)
|
89
|
+
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
######################################################################
|
94
|
+
# Will return choices for select project input field on a form
|
95
|
+
######################################################################
|
96
|
+
def self.choices_for_project
|
97
|
+
r = DrgCms.paths(:forms).map do |path|
|
98
|
+
path = path.to_s
|
99
|
+
a = path.split('/')
|
100
|
+
project = a[a.size - 3]
|
101
|
+
project = if project == 'app'
|
102
|
+
a[a.size - 4] + ' : ' + a.last(2).join('/')
|
103
|
+
else
|
104
|
+
project + ' : ' + a.last
|
105
|
+
end
|
106
|
+
[project, path]
|
107
|
+
end
|
108
|
+
[[I18n.t('drgcms.dc_help.project'), nil]] + r.sort
|
109
|
+
end
|
110
|
+
|
111
|
+
######################################################################
|
112
|
+
# Will return choices for selecting help file name, based on forms already
|
113
|
+
# present in forms directory.
|
114
|
+
######################################################################
|
115
|
+
def self.choices_for_form_name(session)
|
116
|
+
Dir["#{session[:help_project]}/*.yml"].map { |file_name| File.basename(file_name,'.*') }.sort
|
117
|
+
end
|
118
|
+
|
119
|
+
######################################################################
|
120
|
+
# Will return temp key for data saved in dc_temp file
|
121
|
+
######################################################################
|
122
|
+
def temp_key
|
123
|
+
"dc-help-#{session[:user_id]}"
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
data/app/controls/dc_report.rb
CHANGED
@@ -36,14 +36,12 @@ def dc_new_record
|
|
36
36
|
end
|
37
37
|
|
38
38
|
######################################################################
|
39
|
-
#
|
40
|
-
# be used to display result.
|
39
|
+
# If exists, set report section as form, so it can be used to display result.
|
41
40
|
######################################################################
|
42
41
|
def dc_update_form
|
43
|
-
return unless @form && @form['report'] && params[:table]
|
42
|
+
return unless @form && @form['report'] && params[:table] == 'dc_temp'
|
44
43
|
|
45
|
-
|
46
|
-
@form['report'].each { |key, data| @form[key] = data }
|
44
|
+
@form = @form['report']
|
47
45
|
end
|
48
46
|
|
49
47
|
######################################################################
|
@@ -118,7 +116,7 @@ end
|
|
118
116
|
# Will write bulk data to dc_temp collection.
|
119
117
|
######################################################################
|
120
118
|
def bulk_write(doc, the_end = false)
|
121
|
-
if doc.class == TrueClass
|
119
|
+
if doc.nil? || doc.class == TrueClass
|
122
120
|
the_end = true
|
123
121
|
else
|
124
122
|
@bulk << doc
|
@@ -134,7 +132,7 @@ end
|
|
134
132
|
# Export data to Excel
|
135
133
|
######################################################################
|
136
134
|
def export_to_excel(report_id)
|
137
|
-
|
135
|
+
read_drg_form if @form.blank?
|
138
136
|
# use report options if present
|
139
137
|
columns = (@form['report'] ? @form['report'] : @form)['result_set']['columns'].sort
|
140
138
|
|
data/app/forms/all_options.yml
CHANGED
@@ -17,9 +17,7 @@ javascript code
|
|
17
17
|
|
18
18
|
index:
|
19
19
|
filter: name, id as text_field
|
20
|
-
|
21
|
-
deny_fields: body,email
|
22
|
-
|
20
|
+
|
23
21
|
actions: standard
|
24
22
|
|
25
23
|
actions:
|
@@ -58,6 +56,8 @@ result_set:
|
|
58
56
|
footer: custom_footer
|
59
57
|
actions_width: 100
|
60
58
|
per_page: 10
|
59
|
+
select_fields: id,name
|
60
|
+
deny_fields: body,email
|
61
61
|
|
62
62
|
dblclick:
|
63
63
|
table: model_name
|
@@ -196,7 +196,13 @@ form:
|
|
196
196
|
eval: ModelName.choices4_site
|
197
197
|
eval: dc_big_table 'key-name'
|
198
198
|
html:
|
199
|
-
include_blank: true
|
199
|
+
include_blank: true
|
200
|
+
90:
|
201
|
+
name: kats
|
202
|
+
type: multitext_autocomplete
|
203
|
+
search: dc_category.name
|
204
|
+
with_new: model_name
|
205
|
+
size: 30
|
200
206
|
|
201
207
|
40:
|
202
208
|
name: operation
|
data/app/forms/cms_menu.yml
CHANGED
@@ -127,10 +127,16 @@ menu:
|
|
127
127
|
controller: cmsedit
|
128
128
|
icon: trash-o lg
|
129
129
|
table: dc_removed_url
|
130
|
+
400:
|
131
|
+
caption: drgcms.dc_help.title
|
132
|
+
controller: cmsedit
|
133
|
+
icon: question-circle lg
|
134
|
+
table: dc_temp
|
135
|
+
form_name: dc_help_1
|
130
136
|
500:
|
131
137
|
caption: helpers.label.dc_journal.tabletitle
|
132
138
|
controller: cmsedit
|
133
|
-
icon:
|
139
|
+
icon: history lg
|
134
140
|
table: dc_journal
|
135
141
|
|
136
142
|
600:
|
data/app/forms/dc_category.yml
CHANGED
data/app/forms/dc_design.yml
CHANGED
@@ -0,0 +1,109 @@
|
|
1
|
+
## Form for creating help files
|
2
|
+
---
|
3
|
+
table: dc_temp
|
4
|
+
title: drgcms.dc_help.title
|
5
|
+
control: dc_help
|
6
|
+
|
7
|
+
index:
|
8
|
+
actions:
|
9
|
+
|
10
|
+
10:
|
11
|
+
type: field
|
12
|
+
name: select_project
|
13
|
+
field_type: select
|
14
|
+
caption: drgcms.dc_help.project
|
15
|
+
eval: DcHelpControl.choices_for_project
|
16
|
+
default:
|
17
|
+
eval: '@parent.session[:help_project]'
|
18
|
+
|
19
|
+
20:
|
20
|
+
type: field
|
21
|
+
name: lang_1
|
22
|
+
caption: drgcms.dc_help.lang
|
23
|
+
field_type: text_field
|
24
|
+
size: 5
|
25
|
+
default:
|
26
|
+
eval: '@parent.session[:help_lang]'
|
27
|
+
html:
|
28
|
+
placeholder: drgcms.dc_help.lang
|
29
|
+
|
30
|
+
50:
|
31
|
+
type: ajax
|
32
|
+
caption: drgcms.dc_help.project_refresh
|
33
|
+
title: drgcms.dc_help.project_refresh_title
|
34
|
+
icon: refresh
|
35
|
+
action: run
|
36
|
+
method: post
|
37
|
+
control: dc_help.project_refresh
|
38
|
+
|
39
|
+
60: new
|
40
|
+
|
41
|
+
result_set:
|
42
|
+
filter: data_filter
|
43
|
+
actions:
|
44
|
+
1: edit
|
45
|
+
columns:
|
46
|
+
10:
|
47
|
+
name: form_name
|
48
|
+
caption: drgcms.dc_help.form_name
|
49
|
+
width: 10%
|
50
|
+
20:
|
51
|
+
name: lang
|
52
|
+
caption: drgcms.dc_help.lang
|
53
|
+
width: 10%
|
54
|
+
30:
|
55
|
+
name: updated_at
|
56
|
+
caption: drgcms.dc_help.updated_at
|
57
|
+
width: 10%
|
58
|
+
format: T
|
59
|
+
|
60
|
+
form:
|
61
|
+
actions:
|
62
|
+
1: back
|
63
|
+
2: save
|
64
|
+
|
65
|
+
title:
|
66
|
+
edit: dc_help edit_title
|
67
|
+
show: dc_help show_title
|
68
|
+
|
69
|
+
tabs:
|
70
|
+
1basic:
|
71
|
+
caption: drgcms.dc_help.1basic
|
72
|
+
10:
|
73
|
+
name: project
|
74
|
+
type: readonly
|
75
|
+
size: 20
|
76
|
+
20:
|
77
|
+
name: form_name
|
78
|
+
caption: drgcms.dc_help.form_name
|
79
|
+
type: text_with_select
|
80
|
+
eval: DcHelpControl.choices_for_form_name(@parent.session)
|
81
|
+
size: 20
|
82
|
+
html:
|
83
|
+
minlength: 4
|
84
|
+
30:
|
85
|
+
name: lang
|
86
|
+
caption: drgcms.dc_help.lang
|
87
|
+
type: text_field
|
88
|
+
size: 2
|
89
|
+
html:
|
90
|
+
minlength: 2
|
91
|
+
maxlength: 2
|
92
|
+
|
93
|
+
2index:
|
94
|
+
caption: drgcms.dc_help.2index
|
95
|
+
10:
|
96
|
+
name: index
|
97
|
+
caption: false
|
98
|
+
line: top
|
99
|
+
type: html_field
|
100
|
+
options: "height: 600"
|
101
|
+
|
102
|
+
3form:
|
103
|
+
caption: drgcms.dc_help.3form
|
104
|
+
10:
|
105
|
+
name: form
|
106
|
+
caption: false
|
107
|
+
line: top
|
108
|
+
type: html_field
|
109
|
+
options: "height: 600"
|
data/app/forms/dc_journal.yml
CHANGED
data/app/forms/dc_link.yml
CHANGED
data/app/forms/dc_menu.yml
CHANGED