drg_cms 0.5.51.1 → 0.5.52
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 +57 -49
- data/app/controllers/cmsedit_controller.rb +3 -3
- data/app/controllers/dc_application_controller.rb +1 -24
- data/app/controllers/dc_common_controller.rb +2 -2
- data/app/controllers/design_element_settings_control.rb +4 -0
- data/app/forms/dc_page.yml +45 -21
- data/app/helpers/cmsedit_helper.rb +7 -7
- data/app/helpers/dc_application_helper.rb +36 -2
- data/app/helpers/dc_page_renderer.rb +37 -1
- data/app/helpers/dc_part_renderer.rb +4 -1
- data/app/helpers/dc_piece_renderer.rb +1 -0
- data/app/helpers/dc_simple_menu_renderer.rb +8 -6
- data/app/models/concerns/dc_page_concern.rb +9 -0
- data/app/models/dc_filter.rb +2 -2
- data/app/models/drgcms_form_fields.rb +10 -4
- data/config/locales/models_en.yml +19 -0
- data/config/locales/models_sl.yml +19 -3
- data/drg_cms.gemspec +3 -1
- data/lib/drg_cms.rb +1 -1
- data/lib/drg_cms/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a614de80487c062c05877045536c7cb2c5eec76c
|
4
|
+
data.tar.gz: ad4b065e2b97c8c16f1a5024bb7d23b745553071
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97e1cef3db8fd9b1afdf629aa7c24b273522064ed9368c7016f7a6525ca067048fdc2781b4ac403bc86ecf1514591dba01ce9f2460f9ac0bb3837701e256e400
|
7
|
+
data.tar.gz: b5131f8e268aa68f7450e8f50379cce65e3b4938dc95d71bf4ac06febe44fad27f603822b4fab9e4323426a2312ba66afd2a64a95c7df12fc4a3ebb5111f7315
|
@@ -96,61 +96,69 @@ $(function() {
|
|
96
96
|
* render json: {'record_name' => "Damjan", 'record_surname' => 'Rems'}.to_json
|
97
97
|
* will replace values of two fields on the form.
|
98
98
|
*******************************************************************/
|
99
|
+
|
99
100
|
process_json_result = function(json) {
|
100
|
-
var
|
101
|
+
var i,operation,what, selector;
|
101
102
|
$.each(json, function(key, val) {
|
102
103
|
i = key.search('_');
|
103
104
|
if (i > 1) {
|
104
|
-
|
105
|
+
operation = key.substring(0,i);
|
105
106
|
what = key.substring(i+1,100);
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
case '#+div':
|
125
|
-
$('#'+what).prepend(val);
|
126
|
-
break;
|
127
|
-
case '#div':
|
128
|
-
$('#'+what).html(val);
|
129
|
-
break;
|
130
|
-
case '.div+':
|
131
|
-
$('.'+what).append(val);
|
132
|
-
break;
|
133
|
-
case '.+div':
|
134
|
-
$('.'+what).prepend(val);
|
135
|
-
break;
|
136
|
-
case '.div':
|
137
|
-
$('.'+what).html(val);
|
138
|
-
break;
|
139
|
-
/* goto url */
|
140
|
-
case 'url':
|
141
|
-
window.location.href = val;
|
142
|
-
break;
|
143
|
-
case 'alert':
|
144
|
-
alert(val);
|
145
|
-
break;
|
146
|
-
case 'window':
|
147
|
-
w = window.open(val, what);
|
148
|
-
w.focus();
|
149
|
-
break;
|
150
|
-
case 'reload':
|
151
|
-
location.reload();
|
152
|
-
break;
|
107
|
+
} else {
|
108
|
+
operation = key;
|
109
|
+
what = '';
|
110
|
+
}
|
111
|
+
//
|
112
|
+
switch (operation) {
|
113
|
+
// update field
|
114
|
+
case 'record':
|
115
|
+
$('#'+key).val(val);
|
116
|
+
break;
|
117
|
+
// display message
|
118
|
+
case 'msg':
|
119
|
+
selector = 'dc-form-' + what;
|
120
|
+
if ( $('.'+selector).length == 0 ) {
|
121
|
+
val = '<div class="' + selector + '">' + val + '</div>';
|
122
|
+
$('.dc-title').after(val);
|
123
|
+
} else {
|
124
|
+
$('.'+selector).html(val);
|
153
125
|
}
|
126
|
+
break;
|
127
|
+
// update div
|
128
|
+
case '#div+':
|
129
|
+
$('#'+what).append(val);
|
130
|
+
break;
|
131
|
+
case '#+div':
|
132
|
+
$('#'+what).prepend(val);
|
133
|
+
break;
|
134
|
+
case '#div':
|
135
|
+
$('#'+what).html(val);
|
136
|
+
break;
|
137
|
+
case '.div+':
|
138
|
+
$('.'+what).append(val);
|
139
|
+
break;
|
140
|
+
case '.+div':
|
141
|
+
$('.'+what).prepend(val);
|
142
|
+
break;
|
143
|
+
case '.div':
|
144
|
+
$('.'+what).html(val);
|
145
|
+
break;
|
146
|
+
// goto url
|
147
|
+
case 'url':
|
148
|
+
window.location.href = val;
|
149
|
+
break;
|
150
|
+
case 'alert':
|
151
|
+
alert(val);
|
152
|
+
break;
|
153
|
+
case 'window':
|
154
|
+
w = window.open(val, what);
|
155
|
+
w.focus();
|
156
|
+
break;
|
157
|
+
case 'reload':
|
158
|
+
location.reload();
|
159
|
+
break;
|
160
|
+
default:
|
161
|
+
console.log("DRGCMS: Invalid ajax result operation: " + operation);
|
154
162
|
}
|
155
163
|
});
|
156
164
|
};
|
@@ -771,11 +771,11 @@ end
|
|
771
771
|
def fields_on_form() #:nodoc:
|
772
772
|
fields = []
|
773
773
|
if @form['form']['fields']
|
774
|
-
# read only field elements (key is
|
775
|
-
@form['form']['fields'].each {|key,options| fields << options if key.class ==
|
774
|
+
# read only field elements (key is Integer)
|
775
|
+
@form['form']['fields'].each {|key,options| fields << options if key.class == Integer }
|
776
776
|
else
|
777
777
|
@form['form']['tabs'].keys.each do |tab|
|
778
|
-
@form['form']['tabs'][tab].each {|key,options| fields << options if key.class ==
|
778
|
+
@form['form']['tabs'][tab].each {|key,options| fields << options if key.class == Integer }
|
779
779
|
end
|
780
780
|
end
|
781
781
|
fields
|
@@ -327,6 +327,7 @@ def dc_process_default_request()
|
|
327
327
|
params[:path] = @site.homepage_link if params[:id].nil? and params[:path].nil?
|
328
328
|
# some other process request. It shoud fail if not defined
|
329
329
|
return eval(@site.request_processor) if !@site.request_processor.blank?
|
330
|
+
|
330
331
|
# Search for page
|
331
332
|
pageclass = @site.page_table.classify.constantize
|
332
333
|
if params[:id]
|
@@ -365,20 +366,6 @@ def dc_process_default_request()
|
|
365
366
|
dc_log_visit()
|
366
367
|
end
|
367
368
|
@page_title = @page.title.blank? ? "#{@site.page_title}-#{@page.subject}" : @page.title
|
368
|
-
# define design
|
369
|
-
=begin
|
370
|
-
design = @design ? @design.body : @site.design
|
371
|
-
# render view. inline if defined in design
|
372
|
-
view_filename = @design ? @design.rails_view.to_s : ''
|
373
|
-
view_filename = @site.rails_view.to_s if view_filename.blank?
|
374
|
-
if view_filename.size < 5
|
375
|
-
design = "<%= render partial: 'cmsedit/edit_stuff' %>\n" + design if session[:edit_mode] > 0
|
376
|
-
design << '<style type="text/css"><%= @css.html_safe %></style><%= javascript_tag @js %>'
|
377
|
-
render(inline: design, layout: layout)
|
378
|
-
else
|
379
|
-
render view_filename, layout: layout
|
380
|
-
end
|
381
|
-
=end
|
382
369
|
get_design_and_render @design
|
383
370
|
end
|
384
371
|
|
@@ -412,16 +399,6 @@ def dc_single_sitedoc_request
|
|
412
399
|
#
|
413
400
|
@page_title = "#{@site.page_title} #{@part.name}"
|
414
401
|
@js, @css = '', ''
|
415
|
-
=begin
|
416
|
-
layout = @site.site_layout.blank? ? 'content' : @site.site_layout
|
417
|
-
if @site.rails_view.blank?
|
418
|
-
design = @site.design + '<style type="text/css"><%= @css.html_safe %></style><%= javascript_tag @js %>'
|
419
|
-
design = "<%= render partial: 'cmsedit/edit_stuff' %>\n" + design if session[:edit_mode] > 0
|
420
|
-
render(inline: design, layout: layout)
|
421
|
-
else
|
422
|
-
render @site.rails_view, layout: layout
|
423
|
-
end
|
424
|
-
=end
|
425
402
|
get_design_and_render nil
|
426
403
|
end
|
427
404
|
|
@@ -71,7 +71,7 @@ end
|
|
71
71
|
# Register and record click when ad link is clicked.
|
72
72
|
########################################################################
|
73
73
|
def ad_click
|
74
|
-
if (ad = DcAd.find(params[:id]))
|
74
|
+
if params[:id] and (ad = DcAd.find(params[:id]))
|
75
75
|
ad.clicked += 1
|
76
76
|
ad.save
|
77
77
|
DcAdStat.create!(dc_ad_id: params[:id], ip: request.ip, type: 2 )
|
@@ -79,7 +79,7 @@ def ad_click
|
|
79
79
|
logger.error "ERROR ADS: Invalid ad id=#{params[:id]} ip=#{request.ip}."
|
80
80
|
end
|
81
81
|
|
82
|
-
render :
|
82
|
+
render body: nil
|
83
83
|
end
|
84
84
|
|
85
85
|
##########################################################################
|
@@ -119,10 +119,14 @@ def dc_before_save()
|
|
119
119
|
v['readonly'] # fields with readonly option don't return value and would be wiped
|
120
120
|
# return value from form field definition
|
121
121
|
value = DrgcmsFormFields.const_get(v['type'].camelize).get_data(params, v['name'])
|
122
|
+
# set to nil if blank
|
123
|
+
value = nil if value.blank?
|
122
124
|
data['settings'] ||= {}
|
123
125
|
data['settings'][ params[:element] ] ||= {}
|
124
126
|
data['settings'][ params[:element] ][ v['name'] ] = value
|
125
127
|
end
|
128
|
+
# remove nil elements
|
129
|
+
data['settings'][ params[:element] ].compact!
|
126
130
|
# save data to document field
|
127
131
|
document.send("#{params[:field_name]}=", data.to_yaml)
|
128
132
|
document.save
|
data/app/forms/dc_page.yml
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
table: dc_page
|
4
4
|
|
5
5
|
index:
|
6
|
-
filter: subject, sub_subject as text_field, subject_link, author_name, dc_site_id, body as text_field
|
6
|
+
filter: subject, sub_subject as text_field, subject_link, alt_link, author_name, dc_site_id, body as text_field
|
7
7
|
actions: standard
|
8
8
|
|
9
9
|
result_set:
|
@@ -34,23 +34,19 @@ form:
|
|
34
34
|
10:
|
35
35
|
name: subject
|
36
36
|
type: text_field
|
37
|
-
|
38
|
-
size: 50
|
37
|
+
size: 50
|
39
38
|
20:
|
40
39
|
name: subject_link
|
41
40
|
type: text_field
|
42
|
-
|
43
|
-
size: 50
|
41
|
+
size: 50
|
44
42
|
30:
|
45
43
|
name: title
|
46
44
|
type: text_field
|
47
|
-
|
48
|
-
size: 50
|
45
|
+
size: 50
|
49
46
|
40:
|
50
47
|
name: alt_link
|
51
48
|
type: text_field
|
52
|
-
|
53
|
-
size: 50
|
49
|
+
size: 50
|
54
50
|
text: Alternative link
|
55
51
|
50:
|
56
52
|
name: sub_subject
|
@@ -60,8 +56,7 @@ form:
|
|
60
56
|
60:
|
61
57
|
name: author_name
|
62
58
|
type: text_field
|
63
|
-
|
64
|
-
size: 30
|
59
|
+
size: 30
|
65
60
|
|
66
61
|
70:
|
67
62
|
name: publish_date
|
@@ -70,13 +65,11 @@ form:
|
|
70
65
|
80:
|
71
66
|
name: picture
|
72
67
|
type: file_select
|
73
|
-
|
74
|
-
size: 50
|
68
|
+
size: 50
|
75
69
|
90:
|
76
70
|
name: gallery
|
77
71
|
type: text_field
|
78
|
-
|
79
|
-
size: 20
|
72
|
+
size: 20
|
80
73
|
100:
|
81
74
|
name: valid_from
|
82
75
|
type: datetime_select
|
@@ -100,7 +93,7 @@ form:
|
|
100
93
|
type: tree_select
|
101
94
|
eval: "DcCategory.choices4_categories(@parent.dc_get_site)"
|
102
95
|
style: 'max-height: 300px'
|
103
|
-
|
96
|
+
multiple: true
|
104
97
|
|
105
98
|
2advanced:
|
106
99
|
10:
|
@@ -115,7 +108,6 @@ form:
|
|
115
108
|
type: tree_select
|
116
109
|
eval: '@parent.dc_menu_class.choices4_menu_as_tree(@record.dc_site_id)'
|
117
110
|
style: 'max-height: 300px'
|
118
|
-
single: true
|
119
111
|
|
120
112
|
# 20:
|
121
113
|
# name: menu_id
|
@@ -125,8 +117,7 @@ form:
|
|
125
117
|
30:
|
126
118
|
name: params
|
127
119
|
type: text_area
|
128
|
-
|
129
|
-
size: 100x10
|
120
|
+
size: 100x10
|
130
121
|
40:
|
131
122
|
name: dc_site_id
|
132
123
|
type: select
|
@@ -155,8 +146,8 @@ form:
|
|
155
146
|
20:
|
156
147
|
name: css
|
157
148
|
type: text_area
|
158
|
-
|
159
|
-
|
149
|
+
size: 100x20
|
150
|
+
|
160
151
|
4parts:
|
161
152
|
10:
|
162
153
|
name: dc_parts
|
@@ -164,4 +155,37 @@ form:
|
|
164
155
|
formname: dc_part
|
165
156
|
html:
|
166
157
|
height: 1000
|
158
|
+
|
159
|
+
5iframe:
|
160
|
+
10:
|
161
|
+
name: if_url
|
162
|
+
type: text_field
|
163
|
+
size: 80
|
164
|
+
20:
|
165
|
+
name: if_border
|
166
|
+
type: text_field
|
167
|
+
size: 2
|
168
|
+
30:
|
169
|
+
name: if_width
|
170
|
+
type: text_field
|
171
|
+
size: 5
|
172
|
+
40:
|
173
|
+
name: if_height
|
174
|
+
type: text_field
|
175
|
+
size: 5
|
176
|
+
50:
|
177
|
+
name: if_scroll
|
178
|
+
type: select
|
179
|
+
60:
|
180
|
+
name: if_id
|
181
|
+
type: text_field
|
182
|
+
size: 10
|
183
|
+
70:
|
184
|
+
name: if_class
|
185
|
+
type: text_field
|
186
|
+
size: 10
|
187
|
+
80:
|
188
|
+
name: if_params
|
189
|
+
type: text_area
|
190
|
+
size: 80x10
|
167
191
|
|
@@ -53,7 +53,7 @@ def dc_actions_for_index()
|
|
53
53
|
EOT
|
54
54
|
# Remove actions settings and sort
|
55
55
|
only_actions = []
|
56
|
-
actions.each { |key, value| only_actions << [key, value] if key.class ==
|
56
|
+
actions.each { |key, value| only_actions << [key, value] if key.class == Integer }
|
57
57
|
only_actions.sort_by!(&:first)
|
58
58
|
only_actions.each do |element|
|
59
59
|
k,v = element
|
@@ -649,10 +649,10 @@ def dc_fields_for_tab(fields) #:nodoc:
|
|
649
649
|
odd_even = nil
|
650
650
|
reset_cycle()
|
651
651
|
# options and fields must be separated before sorting
|
652
|
-
form_options = fields.select {|field| field.class !=
|
652
|
+
form_options = fields.select {|field| field.class != Integer }
|
653
653
|
columns = form_options.try(:[],'columns') || 1
|
654
654
|
# Select form fields and sort them by key
|
655
|
-
form_fields = fields.select {|field| field.class ==
|
655
|
+
form_fields = fields.select {|field| field.class == Integer }
|
656
656
|
form_fields.to_a.sort.each do |element|
|
657
657
|
options = element.last
|
658
658
|
session[:form_processing] = "form:fields: #{element.first}=#{options}"
|
@@ -671,14 +671,14 @@ def dc_fields_for_tab(fields) #:nodoc:
|
|
671
671
|
# label
|
672
672
|
text = if options['text']
|
673
673
|
t(options['text'], options['text'])
|
674
|
-
|
674
|
+
elsif options['name']
|
675
675
|
t_name(options['name'], options['name'].capitalize.gsub('_',' ') )
|
676
676
|
end
|
677
677
|
# help text can be defined in form or in translations starting with helpers. or as helpers.help.collection.field
|
678
678
|
help = if options['help']
|
679
679
|
options['help'].match('helpers.') ? t(options['help']) : options['help']
|
680
680
|
end
|
681
|
-
help ||= t('helpers.help.' + @form['table'] + '.' + options['name'],' ')
|
681
|
+
help ||= t('helpers.help.' + @form['table'] + '.' + options['name'],' ') if options['name']
|
682
682
|
# create field object from class and call its render method
|
683
683
|
klas_string = options['type'].camelize
|
684
684
|
field_html = if DrgcmsFormFields.const_defined?(klas_string) # check if field type is defined
|
@@ -735,7 +735,7 @@ def dc_fields_for_form()
|
|
735
735
|
next unless is_on_tab
|
736
736
|
end
|
737
737
|
# first div is displayed all other are hidden
|
738
|
-
tdata << "<div id='data_#{tabname}'"
|
738
|
+
tdata << "<div id='data_#{tabname.delete("\s\n")}'"
|
739
739
|
tdata << ' class="div-hidden"' unless first
|
740
740
|
tdata << " style=\"height: #{@form['form']['height']}px;\"" if @form['form']['height']
|
741
741
|
tdata << ">#{dc_fields_for_tab(@form['form']['tabs'][tabname])}</div>"
|
@@ -746,7 +746,7 @@ def dc_fields_for_form()
|
|
746
746
|
html << '<ul class="dc-form-ul" >'
|
747
747
|
first = true # first tab must be selected
|
748
748
|
tabs.each do |tab|
|
749
|
-
html << "<li id='li_#{tab}' data-div='#{tab}' class='dc-form-li #{'dc-form-li-selected' if first }'>#{t_name(tab, tab)}</li>"
|
749
|
+
html << "<li id='li_#{tab}' data-div='#{tab.delete("\s\n")}' class='dc-form-li #{'dc-form-li-selected' if first }'>#{t_name(tab, tab)}</li>"
|
750
750
|
first = false
|
751
751
|
end
|
752
752
|
html << '</ul>'
|
@@ -170,8 +170,9 @@ end
|
|
170
170
|
# This helper is replacement dc_render_from_site method which will soon be deprecated.
|
171
171
|
########################################################################
|
172
172
|
def dc_render_design_part(part)
|
173
|
+
|
173
174
|
case
|
174
|
-
when part.nil? then ''
|
175
|
+
when part.nil? then logger.error('ERROR dc_render_design_part! part is NIL !'); ''
|
175
176
|
# Send as array. Part may be defined with options on page. First element has
|
176
177
|
# name of element which defines what to do. If not defined default behaviour is
|
177
178
|
# called. That is what is defined in second part of array.
|
@@ -506,7 +507,7 @@ def dc_link_for_edit(opts)
|
|
506
507
|
icon = opts.delete('icon') || 'edit lg'
|
507
508
|
opts['controller'] ||= 'cmsedit'
|
508
509
|
opts['action'] ||= 'edit'
|
509
|
-
opts['formname'] ||= opts['table'].split(';').last
|
510
|
+
opts['formname'] ||= opts['table'].to_s.split(';').last
|
510
511
|
js = "$('##{target}').attr('src', '#{_origin.url_for(opts)}'); return false;"
|
511
512
|
dc_link_to(nil, _origin.fa_icon(icon, class: 'dc-inline-link'), '#',
|
512
513
|
{ onclick: js, title: title, alt: 'Edit'})
|
@@ -1226,4 +1227,37 @@ def dc_iframe_edit(table, opts={})
|
|
1226
1227
|
ret.html_safe
|
1227
1228
|
end
|
1228
1229
|
|
1230
|
+
########################################################################
|
1231
|
+
# Will return value from internal DRG variables.
|
1232
|
+
# This objects can be params, session, ...
|
1233
|
+
#
|
1234
|
+
# Parameters:
|
1235
|
+
# [object] String: Internal object holding variable. Current values can be session, params, site, page
|
1236
|
+
# [var_name] String[symbol]: Variable name (:user_name, 'user_id', ...)
|
1237
|
+
#
|
1238
|
+
# Example:
|
1239
|
+
# # called when constructiong iframe for display
|
1240
|
+
# dc_internal_var(session, :user_id)
|
1241
|
+
# dc_internal_var(params, :some_external_parameter)
|
1242
|
+
# dc_internal_var(site, :name)
|
1243
|
+
#
|
1244
|
+
# Returns:
|
1245
|
+
# Value of variable or nil when not found
|
1246
|
+
########################################################################
|
1247
|
+
def dc_internal_var(object, var_name)
|
1248
|
+
begin
|
1249
|
+
case
|
1250
|
+
when object == 'session' then _origin.session[var_name]
|
1251
|
+
when object == 'params' then _origin.params[var_name]
|
1252
|
+
when object == 'site' then _origin.dc_get_site.send(var_name)
|
1253
|
+
when object == 'page' then _origin.page.send(var_name)
|
1254
|
+
else
|
1255
|
+
'VARIABLE: UNKNOWN OBJECT'
|
1256
|
+
end
|
1257
|
+
rescue Exception => e
|
1258
|
+
Rails.logger.debug "Method dc_internal var. Runtime error. #{e.message}"
|
1259
|
+
'VARIABLE: ERROR'
|
1260
|
+
end
|
1261
|
+
end
|
1262
|
+
|
1229
1263
|
end
|
@@ -47,17 +47,53 @@ def initialize( parent, opts={} ) #:nodoc:
|
|
47
47
|
@css = ''
|
48
48
|
end
|
49
49
|
|
50
|
+
#########################################################################
|
51
|
+
# Render IFrame part if defined on page
|
52
|
+
#########################################################################
|
53
|
+
def iframe
|
54
|
+
return '' if @page.if_url.blank?
|
55
|
+
html = "\n<iframe"
|
56
|
+
html << " id=\"#{@page.if_id}\"" unless @page.if_id.blank?
|
57
|
+
html << " class=\"#{@page.if_class}\"" unless @page.if_class.blank?
|
58
|
+
html << " border=\"#{@page.if_border}\""
|
59
|
+
html << " height=\"#{@page.if_height}\"" unless @page.if_height.blank?
|
60
|
+
html << " width=\"#{@page.if_width}\"" unless @page.if_width.blank?
|
61
|
+
html << " scrolling=\"#{@page.if_scroll}\""
|
62
|
+
# Parameters
|
63
|
+
parameters = @page.if_url.match(/\?/) ? '' : '?'
|
64
|
+
params = YAML.load(@page.if_params) rescue {}
|
65
|
+
params = {} unless params.class == Hash
|
66
|
+
params.each do |key, value|
|
67
|
+
val = @parent.dc_internal_var(value['object'], value['variable'])
|
68
|
+
parameters << "&#{key}=#{val}" if val # only when not nil
|
69
|
+
end
|
70
|
+
url = @page.if_url + (parameters.size > 1 ? parameters : '')
|
71
|
+
html << "src=\"#{url}\" ></iframe>\n"
|
72
|
+
html
|
73
|
+
end
|
74
|
+
|
50
75
|
#########################################################################
|
51
76
|
# Default DcPage render method
|
52
77
|
#########################################################################
|
53
78
|
def default
|
54
79
|
can_view, msg = dc_user_can_view(@parent, @page)
|
55
80
|
return msg unless can_view
|
56
|
-
#
|
81
|
+
#
|
57
82
|
html = ''
|
58
83
|
html << dc_page_edit_menu() if @opts[:edit_mode] > 1
|
59
84
|
@parent.page_title = @page.title.blank? ? @page.subject : @page.title
|
60
85
|
html << @page.body
|
86
|
+
# render poll if defined
|
87
|
+
if @page.dc_poll_id
|
88
|
+
@opts.merge!(:poll_id => @page.dc_poll_id, :return_to => @parent.request.url, method: nil)
|
89
|
+
comment = DcPollRenderer.new(@parent, @opts)
|
90
|
+
html << "<div class='wrap row'>#{comment.render_html}</div>"
|
91
|
+
@css << "\n#{comment.render_css}"
|
92
|
+
end
|
93
|
+
# also add iframe
|
94
|
+
html << iframe()
|
95
|
+
html
|
96
|
+
|
61
97
|
end
|
62
98
|
|
63
99
|
#########################################################################
|
@@ -67,6 +67,7 @@ def render_particle(particle, opts)
|
|
67
67
|
html << dc_link_for_edit( opts[:editparams] )
|
68
68
|
end
|
69
69
|
#
|
70
|
+
=begin
|
70
71
|
if particle.piece_id
|
71
72
|
opts[:id] = particle.piece_id
|
72
73
|
piece = DcPieceRenderer.new(@parent, opts)
|
@@ -76,7 +77,9 @@ def render_particle(particle, opts)
|
|
76
77
|
html << particle.body
|
77
78
|
@part_css << particle.css.to_s
|
78
79
|
end
|
79
|
-
|
80
|
+
=end
|
81
|
+
@part_css << particle.css.to_s
|
82
|
+
html << particle.body
|
80
83
|
end
|
81
84
|
|
82
85
|
########################################################################
|
@@ -100,12 +100,14 @@ def link_4menu(item)
|
|
100
100
|
|
101
101
|
caption = ''
|
102
102
|
unless item.picture.blank?
|
103
|
-
caption =
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
103
|
+
caption = case
|
104
|
+
when item.picture[0] == '@' then # call method
|
105
|
+
method = item.picture.sub('@','')
|
106
|
+
return eval(method) rescue 'ERROR!'
|
107
|
+
when item.picture.match(/\./) then @parent.image_tag(item.picture)
|
108
|
+
when item.picture.match('<i') then item.picture
|
109
|
+
else
|
110
|
+
@parent.fa_icon(item.picture)
|
109
111
|
end
|
110
112
|
caption << ' '
|
111
113
|
end
|
@@ -57,6 +57,15 @@ field :created_by, type: BSON::ObjectId
|
|
57
57
|
field :updated_by, type: BSON::ObjectId
|
58
58
|
field :kats, type: Array # Categories
|
59
59
|
|
60
|
+
field :if_url, type: String
|
61
|
+
field :if_border, type: Integer, default: 0
|
62
|
+
field :if_width, type: Integer
|
63
|
+
field :if_height, type: Integer
|
64
|
+
field :if_scroll, type: String
|
65
|
+
field :if_id, type: String
|
66
|
+
field :if_class, type: String
|
67
|
+
field :if_params, type: String
|
68
|
+
|
60
69
|
field :policy_id, type: BSON::ObjectId
|
61
70
|
|
62
71
|
embeds_many :dc_parts
|
data/app/models/dc_filter.rb
CHANGED
@@ -89,11 +89,11 @@ def self.get_field_form_definition(name, parent) #:nodoc:
|
|
89
89
|
form['form']['tabs'].each do |tab|
|
90
90
|
# Array with 2 elements. First is tabname, second is data
|
91
91
|
fields = tab.last
|
92
|
-
fields.each {|k,v| return v if (k.class ==
|
92
|
+
fields.each {|k,v| return v if (k.class == Integer and v['name'] == name) }
|
93
93
|
end if form['form']['tabs'] # I know. But nice.
|
94
94
|
#
|
95
95
|
form['form']['fields'].each do |field|
|
96
|
-
next unless field.first.class ==
|
96
|
+
next unless field.first.class == Integer # options
|
97
97
|
return field.last if field.last['name'] == name
|
98
98
|
end if form['form']['fields']
|
99
99
|
nil
|
@@ -445,7 +445,12 @@ end
|
|
445
445
|
###########################################################################
|
446
446
|
def render
|
447
447
|
# search field name
|
448
|
-
if @yaml['search'].
|
448
|
+
if @yaml['search'].class == Hash
|
449
|
+
table = @yaml['search']['table']
|
450
|
+
field_name = @yaml['search']['field']
|
451
|
+
method = @yaml['search']['method']
|
452
|
+
search = method.nil? ? field_name : "#{field_name}.#{method}"
|
453
|
+
elsif @yaml['search'].to_s.match(/\./)
|
449
454
|
table, field_name, method = @yaml['search'].split(/\.|\,/)
|
450
455
|
search = method.nil? ? field_name : "#{field_name}.#{method}"
|
451
456
|
else # search and table name are separated
|
@@ -765,7 +770,7 @@ class Comment < DrgcmsField
|
|
765
770
|
# Render comment field html code
|
766
771
|
###########################################################################
|
767
772
|
def render
|
768
|
-
@html << t(@yaml['
|
773
|
+
@html << t(@yaml['comment'], @yaml['comment'])
|
769
774
|
self
|
770
775
|
end
|
771
776
|
end
|
@@ -1124,7 +1129,7 @@ end
|
|
1124
1129
|
# * +name:+ field name (required)
|
1125
1130
|
# * +type:+ text_autocomplete (required)
|
1126
1131
|
# * +table+ Collection (table) name. When defined search must contain field name
|
1127
|
-
# * +search:+ Search may consist of three parameters from which are separated either by dot (.)
|
1132
|
+
# * +search:+ Search may consist of three parameters from which are separated either by dot (.)
|
1128
1133
|
# * search_field_name; when table option is defined search must define field name which will be used for search query
|
1129
1134
|
# * collection_name.search_field_name; Same as above except that table options must be ommited.
|
1130
1135
|
# * collection_name.search_field_name.method_name; When searching is more complex custom search
|
@@ -1479,7 +1484,8 @@ def render
|
|
1479
1484
|
$(function(){
|
1480
1485
|
$("##{@yaml['name']}").jstree( {
|
1481
1486
|
"checkbox" : {"three_state" : false},
|
1482
|
-
"core" : { "themes" : { "icons": false }
|
1487
|
+
"core" : { "themes" : { "icons": false },
|
1488
|
+
"multiple" : #{@yaml['multiple'] ? 'true' : 'false'} },
|
1483
1489
|
"plugins" : ["checkbox"]
|
1484
1490
|
});
|
1485
1491
|
});
|
@@ -248,10 +248,12 @@ en:
|
|
248
248
|
dc_page:
|
249
249
|
tabletitle: Pages
|
250
250
|
choices4_comments: 'Allowed:1,Not allowed:0'
|
251
|
+
choices4_if_scroll: 'Auto,Yes,No'
|
251
252
|
1base: Base
|
252
253
|
2advanced: Advanced
|
253
254
|
3content: Content
|
254
255
|
4parts: Parts
|
256
|
+
5iframe: IFrame
|
255
257
|
|
256
258
|
subject: Subject
|
257
259
|
subject_link: Subject link
|
@@ -279,6 +281,14 @@ en:
|
|
279
281
|
kats: Categories
|
280
282
|
gallery: Gallery name
|
281
283
|
updated_at: Updated
|
284
|
+
if_url: URL
|
285
|
+
if_width: Width
|
286
|
+
if_height: Height
|
287
|
+
if_scroll: Scrolling
|
288
|
+
if_border: Border
|
289
|
+
if_params: Parameters
|
290
|
+
if_id: CSS id
|
291
|
+
if_class: CSS class
|
282
292
|
|
283
293
|
dc_part:
|
284
294
|
tabletitle: Parts of page
|
@@ -703,6 +713,15 @@ en:
|
|
703
713
|
kats: Categories for this article
|
704
714
|
gallery: Gallery pictures are defined in parts of page. Value defines name of parts which hold data about pictures in gallary.
|
705
715
|
body: Content of this page
|
716
|
+
if_url: URL adress of page which will be loaded into IFrame
|
717
|
+
if_width: IFrame area width
|
718
|
+
if_height: IFrame area height
|
719
|
+
if_scroll: Scroll bars visibility
|
720
|
+
if_border: Thickness of border around IFrame area. When 0, no border is shown.
|
721
|
+
if_params: Parameters added to URL address
|
722
|
+
if_id: CSS id of IFrame object
|
723
|
+
if_class: CSS class of IFrame object
|
724
|
+
|
706
725
|
|
707
726
|
dc_part:
|
708
727
|
name: Parts can be searched by name or by id
|
@@ -276,10 +276,12 @@ sl:
|
|
276
276
|
dc_page:
|
277
277
|
tabletitle: Strani
|
278
278
|
choices4_comments: 'Dovoljeno:1,Ni dovoljeno:0'
|
279
|
+
choices4_if_scroll: 'Avto:Auto,Da:Yes,Ne:No'
|
279
280
|
1base: Osnovno
|
280
281
|
2advanced: Napredno
|
281
282
|
3content: Vsebina
|
282
283
|
4parts: Elementi
|
284
|
+
5iframe: IFrame
|
283
285
|
|
284
286
|
subject: Zadeva
|
285
287
|
subject_link: Povezava
|
@@ -311,7 +313,15 @@ sl:
|
|
311
313
|
updated_at: Spremenjeno
|
312
314
|
picture: Slika
|
313
315
|
dc_poll_id: Anketa
|
314
|
-
|
316
|
+
if_url: URL naslov
|
317
|
+
if_width: Širina
|
318
|
+
if_height: Višina
|
319
|
+
if_scroll: Pomikanje
|
320
|
+
if_border: Okvir
|
321
|
+
if_params: Parametri
|
322
|
+
if_id: CSS id
|
323
|
+
if_class: CSS class
|
324
|
+
|
315
325
|
dc_part:
|
316
326
|
tabletitle: Elementi strani
|
317
327
|
1base: Osnovno
|
@@ -734,7 +744,14 @@ sl:
|
|
734
744
|
gallery: Posamezne slike so definirane v elementih strani. Podatek določa ime elementov, ki pripadajo galeriji.
|
735
745
|
picture: Slika uporabljena za prikaz sestavka
|
736
746
|
dc_poll_id: Anketa, če sestavek vsebuje tudi anketo
|
737
|
-
|
747
|
+
if_url: URL naslov od koder bo naložena vsebina IFrame-a
|
748
|
+
if_width: Širina IFrame področja
|
749
|
+
if_height: Višina IFrame področja
|
750
|
+
if_scroll: Prikaz drsnikov za pomikanje okna
|
751
|
+
if_border: Debelina okvira IFrame okna. 0 je brez okvirja.
|
752
|
+
if_params: Pramateri posredovani v URL naslovu
|
753
|
+
if_id: CSS id IFrame objekta
|
754
|
+
if_class: CSS class IFrame objekta
|
738
755
|
|
739
756
|
dc_part:
|
740
757
|
name: Naziv elementa
|
@@ -878,4 +895,3 @@ sl:
|
|
878
895
|
filter: Vsebina filtra
|
879
896
|
public: Filter je na voljo vsem uporabnikom
|
880
897
|
sort: Privzeto sortiranje ob izbiri filtra
|
881
|
-
|
data/drg_cms.gemspec
CHANGED
@@ -18,7 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.md", "History.log", "drg_cms.gemspec"]
|
19
19
|
s.test_files = Dir["test/**/*"]
|
20
20
|
|
21
|
-
s.
|
21
|
+
s.required_ruby_version = '>= 2.4'
|
22
|
+
|
23
|
+
s.add_dependency 'rails', '>= 5'
|
22
24
|
s.add_dependency 'jquery-rails'
|
23
25
|
s.add_dependency 'jquery-ui-rails'
|
24
26
|
s.add_dependency 'non-stupid-digest-assets'
|
data/lib/drg_cms.rb
CHANGED
@@ -128,7 +128,7 @@ def self.routes
|
|
128
128
|
get 'dc_common/logout' => :logout
|
129
129
|
get 'dc_common/login' => :login
|
130
130
|
get 'dc_common/copy_clipboard' => :copy_clipboard
|
131
|
-
|
131
|
+
match 'dc_common/paste_clipboard' => :paste_clipboard, via: [:get, :post]
|
132
132
|
put 'dc_common/restore_from_journal' => :restore_from_journal
|
133
133
|
end
|
134
134
|
match 'elfinder' => 'dc_elfinder#connector', via: [:get, :post]
|
data/lib/drg_cms/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drg_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.52
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damjan Rems
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: jquery-rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -387,7 +387,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
387
387
|
requirements:
|
388
388
|
- - ">="
|
389
389
|
- !ruby/object:Gem::Version
|
390
|
-
version: '
|
390
|
+
version: '2.4'
|
391
391
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
392
392
|
requirements:
|
393
393
|
- - ">="
|
@@ -395,7 +395,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
395
395
|
version: '0'
|
396
396
|
requirements: []
|
397
397
|
rubyforge_project:
|
398
|
-
rubygems_version: 2.
|
398
|
+
rubygems_version: 2.6.13
|
399
399
|
signing_key:
|
400
400
|
specification_version: 4
|
401
401
|
summary: 'DRG CMS: Rapid web application development tool for Ruby, Rails and MongoDB'
|