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
data/app/forms/dc_menu_item.yml
CHANGED
data/app/forms/dc_page.yml
CHANGED
data/app/forms/dc_part.yml
CHANGED
data/app/forms/dc_piece.yml
CHANGED
data/app/forms/dc_poll.yml
CHANGED
@@ -102,12 +102,14 @@ form:
|
|
102
102
|
10:
|
103
103
|
name: js
|
104
104
|
type: text_area
|
105
|
+
caption: false
|
105
106
|
html:
|
106
107
|
size: 100x50
|
107
108
|
style: 'font-family:courier;'
|
108
109
|
tab3:
|
109
110
|
20:
|
110
111
|
name: dc_poll_items
|
112
|
+
caption: false
|
111
113
|
type: embedded
|
112
114
|
form_name: dc_poll_item
|
113
115
|
html:
|
@@ -115,6 +117,7 @@ form:
|
|
115
117
|
tab4:
|
116
118
|
10:
|
117
119
|
name: form
|
120
|
+
caption: false
|
118
121
|
type: text_area
|
119
122
|
html:
|
120
123
|
size: 100x50
|
@@ -61,6 +61,7 @@ form:
|
|
61
61
|
10:
|
62
62
|
name: dc_simple_menu_items
|
63
63
|
type: embedded
|
64
|
+
caption: false
|
64
65
|
form_name: dc_simple_menu_item
|
65
66
|
html:
|
66
67
|
height: 800
|
@@ -68,6 +69,7 @@ form:
|
|
68
69
|
tab3:
|
69
70
|
20:
|
70
71
|
name: css
|
72
|
+
caption: false
|
71
73
|
type: text_area
|
72
74
|
size: 100x50
|
73
75
|
|
data/app/forms/dc_site.yml
CHANGED
@@ -143,15 +143,11 @@ form:
|
|
143
143
|
20:
|
144
144
|
name: dc_policies
|
145
145
|
type: embedded
|
146
|
+
caption: false
|
146
147
|
form_name: dc_policy
|
147
|
-
html:
|
148
|
-
height: 800
|
149
148
|
6parts:
|
150
149
|
10:
|
151
150
|
name: dc_parts
|
151
|
+
caption: false
|
152
152
|
type: embedded
|
153
153
|
form_name: dc_part
|
154
|
-
html:
|
155
|
-
height: 1000
|
156
|
-
|
157
|
-
|
data/app/forms/dc_user.yml
CHANGED
@@ -22,8 +22,9 @@ result_set:
|
|
22
22
|
name: last_name
|
23
23
|
width: 20%
|
24
24
|
4:
|
25
|
-
name:
|
26
|
-
|
25
|
+
name: active
|
26
|
+
eval: dc_icon4_boolean
|
27
|
+
width: 5%
|
27
28
|
|
28
29
|
form:
|
29
30
|
title:
|
@@ -32,12 +33,18 @@ form:
|
|
32
33
|
actions: standard
|
33
34
|
|
34
35
|
tabs:
|
35
|
-
|
36
|
+
1base:
|
36
37
|
|
37
38
|
10:
|
38
39
|
name: username
|
39
40
|
type: text_field
|
40
41
|
size: 10
|
42
|
+
group: 2
|
43
|
+
html:
|
44
|
+
autocomplete: 'off'
|
45
|
+
15:
|
46
|
+
name: group
|
47
|
+
type: check_box
|
41
48
|
20:
|
42
49
|
name: title
|
43
50
|
type: text_field
|
@@ -45,7 +52,8 @@ form:
|
|
45
52
|
30:
|
46
53
|
name: first_name
|
47
54
|
type: text_field
|
48
|
-
size:
|
55
|
+
size: 30
|
56
|
+
group: 3
|
49
57
|
|
50
58
|
40:
|
51
59
|
name: middle_name
|
@@ -65,12 +73,13 @@ form:
|
|
65
73
|
70:
|
66
74
|
name: address
|
67
75
|
type: text_field
|
68
|
-
size:
|
76
|
+
size: 30
|
77
|
+
group: 2
|
69
78
|
|
70
79
|
80:
|
71
80
|
name: post
|
72
81
|
type: text_field
|
73
|
-
size:
|
82
|
+
size: 30
|
74
83
|
|
75
84
|
90:
|
76
85
|
name: country
|
@@ -81,11 +90,12 @@ form:
|
|
81
90
|
name: email
|
82
91
|
type: text_field
|
83
92
|
size: 30
|
93
|
+
group: 2
|
84
94
|
|
85
95
|
110:
|
86
96
|
name: phone
|
87
97
|
type: text_field
|
88
|
-
size:
|
98
|
+
size: 20
|
89
99
|
|
90
100
|
120:
|
91
101
|
name: birthdate
|
@@ -101,12 +111,16 @@ form:
|
|
101
111
|
140:
|
102
112
|
name: about
|
103
113
|
type: text_area
|
104
|
-
size:
|
114
|
+
size: 100x5
|
105
115
|
|
106
116
|
150:
|
107
117
|
name: password
|
108
118
|
type: password_field
|
109
119
|
size: 20
|
120
|
+
group: 2
|
121
|
+
line: top
|
122
|
+
html:
|
123
|
+
autocomplete: 'off'
|
110
124
|
|
111
125
|
160:
|
112
126
|
name: password_confirmation
|
@@ -120,6 +134,8 @@ form:
|
|
120
134
|
size: 20
|
121
135
|
|
122
136
|
180:
|
123
|
-
name:
|
124
|
-
type:
|
125
|
-
|
137
|
+
name: member
|
138
|
+
type: select
|
139
|
+
multiple: true
|
140
|
+
eval: DcUser.groups_for_select
|
141
|
+
size: 30
|
data/app/forms/dc_user_role.yml
CHANGED
@@ -44,7 +44,7 @@ module CmsCommonHelper
|
|
44
44
|
# Returns:
|
45
45
|
# String. Translated text.
|
46
46
|
####################################################################
|
47
|
-
def self.t(key, default=nil)
|
47
|
+
def self.t(key, default=nil)
|
48
48
|
c = I18n.t(key)
|
49
49
|
if c.class == Hash or c.match( 'translation missing' )
|
50
50
|
c = I18n.t(key, locale: 'en')
|
@@ -194,12 +194,13 @@ end
|
|
194
194
|
############################################################################
|
195
195
|
def dc_name_for_id(model, field, field_name, id=nil)
|
196
196
|
return '' if id.nil?
|
197
|
+
|
197
198
|
field_name = (field_name || 'id').strip.to_sym
|
198
199
|
field = field.strip.to_sym
|
199
|
-
|
200
200
|
model = model.strip.classify.constantize if model.class == String
|
201
|
-
|
202
|
-
|
201
|
+
doc = Mongoid::QueryCache.cache { model.find_by(field_name => id) }
|
202
|
+
|
203
|
+
doc.nil? ? '' : (doc.send(field) rescue 'not defined')
|
203
204
|
end
|
204
205
|
|
205
206
|
############################################################################
|
@@ -255,6 +256,13 @@ def self.dc_format_date_time(value, format=nil)
|
|
255
256
|
value.strftime(format)
|
256
257
|
end
|
257
258
|
|
259
|
+
############################################################################
|
260
|
+
# Returns html code for displaying date/time formatted by strftime. Will return '' if value is nil.
|
261
|
+
#
|
262
|
+
# Parameters:
|
263
|
+
# [value] Date/DateTime/Time.
|
264
|
+
# [format] String. strftime format mask. Defaults to locale's default format.
|
265
|
+
############################################################################
|
258
266
|
def dc_format_date_time(value, format=nil) #:nodoc:
|
259
267
|
CmsCommonHelper.dc_format_date_time(value, format)
|
260
268
|
end
|
@@ -304,8 +312,65 @@ def self.dc_format_number(value=0, decimals=nil, separator=nil, delimiter=nil, c
|
|
304
312
|
"#{sign}#{ar.reverse.join(delimiter)}#{separator}#{dec}"
|
305
313
|
end
|
306
314
|
|
315
|
+
############################################################################
|
316
|
+
# Returns html code for displaying formatted number.
|
317
|
+
#
|
318
|
+
# Parameters:
|
319
|
+
# [value] Numeric number.
|
320
|
+
# [decimals] Integer. Number of decimals
|
321
|
+
# [separator] String. Decimals separator
|
322
|
+
# [delimiter] String. Thousands delimiter.
|
323
|
+
# [currency] String. Currency symbol if applied to result string.
|
324
|
+
############################################################################
|
307
325
|
def dc_format_number(value=0, decimals=nil, separator=nil, delimiter=nil, currency=nil) #:nodoc:
|
308
326
|
CmsCommonHelper.dc_format_number(value, decimals, separator, delimiter, currency)
|
309
327
|
end
|
310
328
|
|
329
|
+
############################################################################
|
330
|
+
# Create help text for fields on single tab
|
331
|
+
############################################################################
|
332
|
+
def dc_help_for_tab(tab)
|
333
|
+
return '' if tab.nil?
|
334
|
+
|
335
|
+
html = ''
|
336
|
+
if tab.class == Array
|
337
|
+
tab_name = tab.last['caption'] || tab.first
|
338
|
+
tab_label, tab_help = dc_tab_label_help(tab_name)
|
339
|
+
html << %(<div class="help-tab">#{tab_label}</div><div class="help-tab-help">#{tab_help}</div>)
|
340
|
+
|
341
|
+
tab = tab.last
|
342
|
+
end
|
343
|
+
|
344
|
+
tab.each do |field|
|
345
|
+
label, help = dc_label_help(field.last)
|
346
|
+
next if help.blank?
|
347
|
+
|
348
|
+
html << %(<div class="help-field"><div class="help-label">#{label}</div><div class="help-text">#{help}</div></div>)
|
349
|
+
end
|
350
|
+
html
|
351
|
+
end
|
352
|
+
|
353
|
+
############################################################################
|
354
|
+
# Will scoop fields and help text associated with them to create basic help text.
|
355
|
+
############################################################################
|
356
|
+
def dc_help_fields
|
357
|
+
return '' if @form['form'].nil?
|
358
|
+
|
359
|
+
html = '<div class="dc-handle" data-div="#the1"></div><div id="the1">'
|
360
|
+
if @form['form']['tabs']
|
361
|
+
@form['form']['tabs'].each { |tab| html << dc_help_for_tab(tab) }
|
362
|
+
else
|
363
|
+
html << dc_help_for_tab(@form['form']['fields'])
|
364
|
+
end
|
365
|
+
html << '</div>'
|
366
|
+
html.html_safe
|
367
|
+
end
|
368
|
+
|
369
|
+
############################################################################
|
370
|
+
# Will return text from help files
|
371
|
+
############################################################################
|
372
|
+
def dc_help_body
|
373
|
+
(params[:type] == 'index' ? @help['index'] : @help['form']).html_safe
|
374
|
+
end
|
375
|
+
|
311
376
|
end
|
@@ -33,11 +33,13 @@ module CmsEditHelper
|
|
33
33
|
# Will return value when internal or additional parameters are defined in action
|
34
34
|
# Subroutine of dc_actions_for_form.
|
35
35
|
############################################################################
|
36
|
-
def dc_value_for_parameter(param)#:nodoc:
|
36
|
+
def dc_value_for_parameter(param, current_document = nil)#:nodoc:
|
37
37
|
if param.class == Hash
|
38
|
-
dc_internal_var(param['object']
|
38
|
+
dc_internal_var(param['object'] ||= 'record', param['method'], current_document)
|
39
|
+
elsif param.to_s.match(/record|document/)
|
40
|
+
current_document ? current_document : @record
|
39
41
|
else
|
40
|
-
param
|
42
|
+
param
|
41
43
|
end
|
42
44
|
end
|
43
45
|
|
@@ -51,9 +53,10 @@ end
|
|
51
53
|
def dc_is_action_active?(options)
|
52
54
|
if options['when_new']
|
53
55
|
dc_deprecate("when_option will be deprecated and replaced by active: not_new_record! Form #{params[:form_name]}")
|
54
|
-
return !(dc_dont?(options['when_new'])
|
56
|
+
return !(dc_dont?(options['when_new']) && @record.new_record?)
|
55
57
|
end
|
56
58
|
return true unless options['active']
|
59
|
+
|
57
60
|
# alias record and document so both can be used in eval
|
58
61
|
record = document = @record
|
59
62
|
option = options['active']
|
@@ -65,8 +68,7 @@ def dc_is_action_active?(options)
|
|
65
68
|
(@record.new_record? && option == 'new_record') || (!@record.new_record? && option == 'not_new_record')
|
66
69
|
elsif option.match(/\./)
|
67
70
|
# shortcut for method and eval option
|
68
|
-
|
69
|
-
dc_process_eval(option,parms)
|
71
|
+
dc_process_eval(option, self)
|
70
72
|
else
|
71
73
|
eval(option['eval'])
|
72
74
|
end
|
@@ -74,9 +76,8 @@ def dc_is_action_active?(options)
|
|
74
76
|
when option['eval'] then
|
75
77
|
eval(option['eval'])
|
76
78
|
when option['method'] then
|
77
|
-
# if record present send record otherwise send
|
78
|
-
|
79
|
-
dc_process_eval(option['method'],parms)
|
79
|
+
# if record present send record otherwise send self as parameter
|
80
|
+
dc_process_eval(option['method'], self)
|
80
81
|
else
|
81
82
|
false
|
82
83
|
end
|
@@ -233,7 +234,7 @@ def dc_background_for_result(start)
|
|
233
234
|
if start == :start
|
234
235
|
html = '<div class="dc-result-div" '
|
235
236
|
html << (@form['result_set']['table_style'] ? 'style="overflow-x: scroll;" >' : '>')
|
236
|
-
|
237
|
+
|
237
238
|
html << "\n<div class=\"dc-result #{@form['result_set']['table_class']}\" "
|
238
239
|
html << (@form['result_set']['table_style'] ? "style=\"#{@form['result_set']['table_style']}\" >" : '>')
|
239
240
|
else
|
@@ -335,9 +336,9 @@ def dc_fields_for_tab(fields_on_tab) #:nodoc:
|
|
335
336
|
end
|
336
337
|
|
337
338
|
############################################################################
|
338
|
-
# Creates edit form
|
339
|
+
# Creates edit form from fields or tabs options
|
339
340
|
############################################################################
|
340
|
-
def dc_fields_for_form
|
341
|
+
def dc_fields_for_form
|
341
342
|
html, tabs, tab_data = '',[], ''
|
342
343
|
@js ||= ''
|
343
344
|
@css ||= ''
|
@@ -350,10 +351,10 @@ def dc_fields_for_form()
|
|
350
351
|
first = true # first tab
|
351
352
|
@form['form']['tabs'].keys.sort.each do |tab_name|
|
352
353
|
next if tab_name.match('actions')
|
353
|
-
# Tricky. If field
|
354
|
+
# Tricky when editing single field. If field is not present on the tab skip to next tab
|
354
355
|
if params[:edit_only]
|
355
356
|
is_on_tab = false
|
356
|
-
@form['form']['tabs'][tab_name].each {|k,v| is_on_tab = true if params[:edit_only] == v['name'] }
|
357
|
+
@form['form']['tabs'][tab_name].each { |k, v| is_on_tab = true if params[:edit_only] == v['name'] }
|
357
358
|
next unless is_on_tab
|
358
359
|
end
|
359
360
|
# first div is displayed, all others are hidden
|
@@ -361,17 +362,18 @@ def dc_fields_for_form()
|
|
361
362
|
tab_data << ' class="div-hidden"' unless first
|
362
363
|
tab_data << " style=\"height: #{@form['form']['height']}px;\"" if @form['form']['height']
|
363
364
|
tab_data << ">#{dc_fields_for_tab(@form['form']['tabs'][tab_name])}</div>"
|
364
|
-
|
365
|
-
|
365
|
+
|
366
|
+
tab_label, tab_title = dc_tab_label_help(tab_name)
|
367
|
+
tabs << [tab_name, tab_label, tab_title]
|
366
368
|
first = false
|
367
369
|
end
|
368
370
|
# make it all work together
|
369
371
|
html << '<ul class="dc-form-ul" >'
|
370
372
|
first = true # first tab must be selected
|
371
|
-
tabs.each do |tab_name, tab_label|
|
372
|
-
html <<
|
373
|
-
html << ' dc-form-li-selected' if first
|
374
|
-
html << "\">#{
|
373
|
+
tabs.each do |tab_name, tab_label, tab_title|
|
374
|
+
html << %(<li id="li_#{tab_name}" data-div="#{tab_name.delete("\s\n")}" title="#{tab_title}" class="dc-form-li)
|
375
|
+
html << ' dc-form-li-selected' if first
|
376
|
+
html << "\">#{tab_label}</li>"
|
375
377
|
first = false
|
376
378
|
end
|
377
379
|
html << '</ul>'
|
@@ -391,11 +393,11 @@ end
|
|
391
393
|
# Creates head form div. Head form div is used to display header data usefull
|
392
394
|
# to be seen even when tabs are switched.
|
393
395
|
############################################################################
|
394
|
-
def dc_head_for_form
|
396
|
+
def dc_head_for_form
|
395
397
|
@css ||= ''
|
396
398
|
head = @form['form']['head']
|
397
399
|
return '' if head.nil?
|
398
|
-
html = %
|
400
|
+
html = %(<div class="dc-head #{head['class']}">\n<div class="dc-row">)
|
399
401
|
split = head['split'] || 4
|
400
402
|
percent = 100/split
|
401
403
|
current = 0
|
@@ -429,7 +431,7 @@ def dc_head_for_form()
|
|
429
431
|
style = dc_style_or_class(nil, options['style'], field, @record)
|
430
432
|
html << %Q[<div class="dc-column #{klass}" style="width:#{percent*span}%;#{style}">
|
431
433
|
#{label.blank? ? '' : "<span class=\"label\">#{label}</span>"}
|
432
|
-
<span class="field">#{field}</span>
|
434
|
+
<span id="head-#{options['name']}" class="field">#{field}</span>
|
433
435
|
</div>]
|
434
436
|
current += span
|
435
437
|
if current == split
|
@@ -471,8 +473,14 @@ def dc_document_statistics
|
|
471
473
|
parms[:controller] = 'dc_common'
|
472
474
|
parms[:action] = 'copy_clipboard'
|
473
475
|
url = url_for(parms.permit!)
|
474
|
-
html << fa_icon('copy
|
476
|
+
html << fa_icon('copy lg', class: 'dc-link-img dc-link-ajax dc-animate',
|
475
477
|
'data-url' => url, 'data-request' => 'get', title: t('drgcms.doc_copy_clipboard') )
|
478
|
+
|
479
|
+
url = url_for(controller: :cmsedit, action: :index, table: 'dc_journal', filter: 'on',
|
480
|
+
filter_oper: 'eq', filter_field: 'doc_id', filter_value: @record.id)
|
481
|
+
html << fa_icon('history lg', class: 'dc-link-img dc-animate dc-window-open',
|
482
|
+
'data-url' => url, title: t('helpers.label.dc_journal.tabletitle') )
|
483
|
+
|
476
484
|
(html << '</div></div>').html_safe
|
477
485
|
end
|
478
486
|
|