drg_cms 0.5.51.1 → 0.5.52
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 +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'
|