drg_cms 0.6.0.6 → 0.6.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +25 -10
- data/app/assets/javascripts/drg_cms/drg_cms.js +281 -106
- data/app/assets/stylesheets/drg_cms/drg_cms.css +417 -152
- data/app/assets/stylesheets/drg_cms/select-multiple.css +9 -12
- data/app/assets/stylesheets/drg_cms_cms.css +1 -1
- data/app/controllers/cmsedit_controller.rb +247 -175
- data/app/controllers/dc_application_controller.rb +251 -173
- data/app/controllers/dc_common_controller.rb +81 -48
- data/app/controls/dc_help_control.rb +126 -0
- data/app/controls/dc_report.rb +223 -0
- data/app/forms/all_options.yml +38 -10
- data/app/forms/cms_menu.yml +7 -1
- data/app/forms/dc_big_table.yml +1 -0
- data/app/forms/dc_big_table_value.yml +1 -0
- 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 +6 -0
- data/app/forms/dc_part.yml +1 -0
- data/app/forms/dc_piece.yml +1 -0
- data/app/forms/dc_poll.yml +15 -5
- data/app/forms/dc_poll_item.yml +2 -1
- data/app/forms/dc_poll_result.yml +9 -0
- data/app/forms/dc_simple_menu.yml +2 -0
- data/app/forms/dc_site.yml +4 -12
- data/app/forms/dc_user.yml +27 -11
- data/app/forms/dc_user_role.yml +3 -0
- data/app/helpers/cms_common_helper.rb +375 -0
- data/app/helpers/{cmsedit_edit_helper.rb → cms_edit_helper.rb} +109 -65
- data/app/helpers/{cmsedit_helper.rb → cms_helper.rb} +93 -48
- data/app/helpers/{cmsedit_index_helper.rb → cms_index_helper.rb} +240 -206
- data/app/helpers/dc_application_helper.rb +108 -327
- data/app/models/concerns/dc_page_concern.rb +14 -4
- data/app/models/concerns/dc_piece_concern.rb +1 -1
- data/app/models/concerns/dc_policy_rule_concern.rb +20 -8
- data/app/models/concerns/dc_site_concern.rb +67 -44
- data/app/models/concerns/dc_user_concern.rb +58 -19
- data/app/models/dc_design.rb +29 -19
- data/app/models/dc_filter.rb +26 -18
- data/app/models/dc_key_value_store.rb +1 -0
- data/app/models/dc_permission.rb +49 -9
- data/app/models/dc_policy.rb +25 -14
- data/app/models/dc_policy_role.rb +22 -11
- data/app/models/dc_poll.rb +1 -0
- data/app/models/dc_poll_result.rb +4 -2
- data/app/models/dc_temp.rb +6 -3
- data/app/models/dc_user_role.rb +2 -2
- data/app/models/drgcms_form_fields/date_picker.rb +6 -3
- data/app/models/drgcms_form_fields/datetime_picker.rb +4 -3
- data/app/models/drgcms_form_fields/drgcms_field.rb +20 -5
- data/app/models/drgcms_form_fields/embedded.rb +23 -16
- data/app/models/drgcms_form_fields/file_field.rb +2 -2
- 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/hidden_field.rb +1 -1
- data/app/models/drgcms_form_fields/link_to.rb +2 -2
- data/app/models/drgcms_form_fields/method.rb +66 -0
- data/app/models/drgcms_form_fields/multitext_autocomplete.rb +18 -12
- data/app/models/drgcms_form_fields/number_field.rb +4 -3
- data/app/models/drgcms_form_fields/radio.rb +10 -5
- data/app/models/drgcms_form_fields/readonly.rb +13 -17
- data/app/models/drgcms_form_fields/select.rb +58 -41
- data/app/models/drgcms_form_fields/text_autocomplete.rb +41 -33
- data/app/models/drgcms_form_fields.rb +12 -1
- data/app/renderers/dc_big_menu_renderer.rb +1 -0
- data/app/renderers/dc_gallery_renderer.rb +1 -0
- data/app/renderers/dc_menu_renderer.rb +1 -0
- data/app/renderers/dc_page_renderer.rb +8 -6
- data/app/renderers/dc_part_renderer.rb +1 -0
- data/app/renderers/dc_piece_renderer.rb +1 -1
- data/app/renderers/dc_poll_renderer.rb +56 -55
- data/app/renderers/dc_renderer.rb +1 -0
- data/app/renderers/dc_simple_menu_renderer.rb +1 -0
- data/app/views/cmsedit/_edit_stuff.html.erb +5 -2
- data/app/views/cmsedit/edit.html.erb +4 -1
- data/app/views/cmsedit/index.html.erb +3 -2
- data/app/views/cmsedit/new.html.erb +5 -2
- data/app/views/dc_common/_help.html.erb +17 -0
- data/app/views/layouts/models.html.erb +2 -1
- data/config/locales/drgcms_en.yml +17 -2
- data/config/locales/drgcms_sl.yml +22 -4
- data/config/locales/models_en.yml +16 -7
- data/config/locales/models_sl.yml +21 -12
- data/drg_cms.gemspec +16 -16
- data/lib/drg_cms/version.rb +1 -1
- data/lib/drg_cms.rb +98 -0
- data/lib/generators/new_drg_form/new_drg_form_generator.rb +5 -3
- data/lib/tasks/database.rake +6 -56
- metadata +39 -35
- data/app/helpers/application_helper.rb +0 -2
- data/app/models/__dc_dummy.rb +0 -102
@@ -62,6 +62,8 @@ module DrgcmsFormFields
|
|
62
62
|
# name: company
|
63
63
|
# type: select
|
64
64
|
# choices: Audi,BMW,Mercedes
|
65
|
+
# or
|
66
|
+
# choices: helpers.label.model.choices4_field
|
65
67
|
# 60:
|
66
68
|
# name: type
|
67
69
|
# type: select
|
@@ -75,8 +77,8 @@ class Select < DrgcmsField
|
|
75
77
|
# helper.label.table_name.choices_for_fieldname or
|
76
78
|
# choices4_tablename_fieldname
|
77
79
|
###########################################################################
|
78
|
-
def choices_in_helper(
|
79
|
-
helper
|
80
|
+
def choices_in_helper(helper = nil)
|
81
|
+
helper ||= "helpers.label.#{@form['table']}.choices4_#{@yaml['name']}"
|
80
82
|
c = t(helper)
|
81
83
|
if c.match( 'translation missing' )
|
82
84
|
helper = "choices_for_#{@form['table']}_#{@yaml['name']}"
|
@@ -86,32 +88,28 @@ def choices_in_helper(all)
|
|
86
88
|
end
|
87
89
|
|
88
90
|
###########################################################################
|
89
|
-
# Choices are defined by evaluating an
|
90
|
-
# method defined in a class. SomeClass.get_choices4
|
91
|
+
# Choices are defined by evaluating an expression. This is most common class
|
92
|
+
# method defined in a class. eg. SomeClass.get_choices4
|
91
93
|
###########################################################################
|
92
|
-
def choices_in_eval(e
|
94
|
+
def choices_in_eval(e)
|
93
95
|
e.strip!
|
94
96
|
if @yaml['depend'].nil?
|
95
97
|
method = e.split(/\ |\(/).first
|
96
98
|
return eval(e) if respond_to?(method) # id method defined here
|
97
|
-
return eval('@parent.'+e) if @parent.respond_to?(method) # is method defined in helpers
|
99
|
+
return eval('@parent.' + e) if @parent.respond_to?(method) # is method defined in helpers
|
98
100
|
# eval whatever it is there
|
99
101
|
eval e
|
100
102
|
else
|
101
103
|
# add event listener to depend field
|
102
|
-
@js << %
|
104
|
+
@js << %(
|
103
105
|
$(document).ready(function() {
|
104
106
|
$('#record_#{@yaml['depend']}').change( function(e) { update_select_depend('record_#{@yaml['name']}', 'record_#{@yaml['depend']}','#{e}');});
|
105
107
|
$('#_record_#{@yaml['depend']}').change( function(e) { update_select_depend('record_#{@yaml['name']}', '_record_#{@yaml['depend']}','#{e}');});
|
106
108
|
});
|
107
|
-
|
108
|
-
# depend field might be virtual field.
|
109
|
-
depend_value =
|
110
|
-
|
111
|
-
else
|
112
|
-
@record[@yaml['depend']]
|
113
|
-
end
|
114
|
-
|
109
|
+
)
|
110
|
+
# depend field might be virtual field. It's value should be set in params
|
111
|
+
depend_value = @yaml['depend'][0] == '_' ? @parent.params["p_#{@yaml['depend']}"] : @record[@yaml['depend']]
|
112
|
+
|
115
113
|
e << " '#{depend_value}'"
|
116
114
|
eval e
|
117
115
|
end
|
@@ -120,34 +118,46 @@ end
|
|
120
118
|
###########################################################################
|
121
119
|
# Create choices array for select field.
|
122
120
|
###########################################################################
|
123
|
-
def get_choices
|
121
|
+
def get_choices
|
124
122
|
begin
|
125
|
-
choices = case
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
Rails.logger.debug
|
123
|
+
choices = case
|
124
|
+
when @yaml['eval'] then
|
125
|
+
choices_in_eval(@yaml['eval'])
|
126
|
+
when @yaml['choices'] then
|
127
|
+
@yaml['choices'].match('helpers.') ? choices_in_helper(@yaml['choices']) : @yaml['choices']
|
128
|
+
else
|
129
|
+
choices_in_helper()
|
130
|
+
end
|
131
|
+
return choices unless choices.class == String
|
132
|
+
|
133
|
+
choices.chomp.split(',').map { |e| e.match(':') ? e.split(':') : e }
|
134
|
+
rescue Exception => e
|
135
|
+
Rails.logger.debug "\nError in select eval. #{e.message}\n"
|
136
|
+
Rails.logger.debug(e.backtrace.join($/)) if Rails.env.development?
|
139
137
|
['error'] # return empty array when error occures
|
140
138
|
end
|
141
139
|
end
|
142
140
|
|
141
|
+
###########################################################################
|
142
|
+
# Will add code to view more data about selected option in a window
|
143
|
+
###########################################################################
|
144
|
+
def add_view_code
|
145
|
+
return '' if (data = @record.send(@yaml['name'])).blank?
|
146
|
+
|
147
|
+
ar = @yaml['view'].split(/\ |\,/).delete_if {|e| e.blank?}
|
148
|
+
table, form_name = *ar
|
149
|
+
url = @parent.url_for(controller: :cmsedit, id: data, action: :edit, table: table, form_name: form_name, readonly: true, window_close: 1 )
|
150
|
+
icon = @parent.fa_icon('eye')
|
151
|
+
%(<span class="dc-window-open" data-url="#{url}">#{icon}</span>)
|
152
|
+
end
|
153
|
+
|
143
154
|
###########################################################################
|
144
155
|
# Return value when readonly is required
|
145
156
|
###########################################################################
|
146
157
|
def ro_standard
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
#
|
158
|
+
value = @record.respond_to?(@yaml['name']) ? @record.send(@yaml['name']) : nil
|
159
|
+
return self if value.blank?
|
160
|
+
|
151
161
|
choices = get_choices()
|
152
162
|
if value.class == Array # multiple choices
|
153
163
|
html = ''
|
@@ -177,15 +187,22 @@ end
|
|
177
187
|
###########################################################################
|
178
188
|
def render
|
179
189
|
return ro_standard if @readonly
|
190
|
+
|
180
191
|
set_initial_value('html','selected')
|
181
|
-
#
|
192
|
+
# separate options and html part
|
193
|
+
html_part = {}
|
182
194
|
@yaml['html'].symbolize_keys!
|
195
|
+
%i(class id style required).each { |sym| html_part[sym] = @yaml['html'].delete(sym) if html_part[sym]}
|
196
|
+
html_part[:multiple] = true if @yaml['multiple']
|
197
|
+
|
183
198
|
record = record_text_for(@yaml['name'])
|
184
|
-
if
|
185
|
-
@html << @parent.select(record, @yaml['name'], get_choices, @yaml['html'],
|
199
|
+
if html_part[:multiple]
|
200
|
+
@html << @parent.select(record, @yaml['name'], get_choices, @yaml['html'], html_part)
|
186
201
|
@js << "$('##{record}_#{@yaml['name']}').selectMultiple();"
|
187
202
|
else
|
188
|
-
@html << @parent.select(record, @yaml['name'], get_choices, @yaml['html'])
|
203
|
+
@html << @parent.select(record, @yaml['name'], get_choices, @yaml['html'], html_part)
|
204
|
+
# add code for view more data
|
205
|
+
@html << add_view_code() if @yaml['view']
|
189
206
|
end
|
190
207
|
self
|
191
208
|
end
|
@@ -196,11 +213,11 @@ end
|
|
196
213
|
def self.get_data(params, name)
|
197
214
|
if params['record'][name].class == Array
|
198
215
|
params['record'][name].delete_if {|e| e.blank? }
|
199
|
-
return
|
200
|
-
|
216
|
+
return if params['record'][name].size == 0
|
217
|
+
|
218
|
+
# convert to BSON objects
|
201
219
|
is_id = BSON::ObjectId.legal?(params['record'][name].first)
|
202
220
|
return params['record'][name].map{ |e| BSON::ObjectId.from_string(e) } if is_id
|
203
|
-
return params['record'][name]
|
204
221
|
end
|
205
222
|
params['record'][name]
|
206
223
|
end
|
@@ -30,7 +30,7 @@ module DrgcmsFormFields
|
|
30
30
|
# * +type:+ text_autocomplete (required)
|
31
31
|
# * +table+ Collection (table) name. When defined search must contain field name
|
32
32
|
# * +with_new+ Will add an icon for shortcut to add new document to collection
|
33
|
-
# * +
|
33
|
+
# * +is_id+ Field value represent value as id. If false, field will use entered value and not value selected with autocomplete. Default is true.
|
34
34
|
# * +search:+ Search may consist of three parameters from which are separated either by dot (.)
|
35
35
|
# * search_field_name; when table option is defined search must define field name which will be used for search query
|
36
36
|
# * collection_name.search_field_name; Same as above except that table options must be ommited.
|
@@ -42,6 +42,7 @@ module DrgcmsFormFields
|
|
42
42
|
# name: user_id
|
43
43
|
# type: text_autocomplete
|
44
44
|
# search: dc_user.name
|
45
|
+
# is_id: false
|
45
46
|
# html:
|
46
47
|
# size: 30
|
47
48
|
###########################################################################
|
@@ -51,76 +52,80 @@ class TextAutocomplete < DrgcmsField
|
|
51
52
|
# Render text_autocomplete field html code
|
52
53
|
###########################################################################
|
53
54
|
def render
|
54
|
-
# Return descriptive text and put it into input field
|
55
|
-
# search field name
|
55
|
+
# Return descriptive text and put it into input field
|
56
|
+
# search field name
|
56
57
|
if @yaml['search'].class == Hash
|
57
58
|
table = @yaml['search']['table']
|
58
59
|
ret_name = @yaml['search']['field']
|
59
60
|
method = @yaml['search']['method']
|
60
61
|
elsif @yaml['search'].match(/\./)
|
61
|
-
table, ret_name, method = @yaml['search'].split(
|
62
|
+
table, ret_name, method = @yaml['search'].split(/\.|\,/).map(&:strip)
|
62
63
|
else
|
63
64
|
ret_name = @yaml['search']
|
64
65
|
end
|
65
|
-
# determine table name
|
66
|
+
# determine table name
|
66
67
|
if @yaml['table']
|
67
68
|
table = if @yaml['table'].class == String
|
68
69
|
@yaml['table']
|
69
|
-
# eval(how_to_get_my_table_name)
|
70
70
|
elsif @yaml['table']['eval']
|
71
71
|
eval @yaml['table']['eval']
|
72
72
|
else
|
73
|
-
Rails.logger.error "Field #{@yaml['name']}: Invalid table parameter!"
|
73
|
+
Rails.logger.error "Field #{ @yaml['name'] }: Invalid table parameter!"
|
74
74
|
nil
|
75
75
|
end
|
76
76
|
end
|
77
|
-
return 'Table or field keyword not defined!' unless (table
|
78
|
-
# TODO check if table exists
|
79
|
-
|
80
|
-
# find record and return value of field
|
77
|
+
return ro_standard 'Table or field keyword not defined!' unless (table && ret_name)
|
78
|
+
# TODO check if table exists
|
79
|
+
model_klass = table.classify.constantize
|
80
|
+
# find record and return value of field
|
81
81
|
value_send_as = 'p_' + @yaml['name']
|
82
82
|
value = if @parent.params[value_send_as]
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
83
|
+
@parent.params[value_send_as]
|
84
|
+
elsif @record && @record[@yaml['name']]
|
85
|
+
@record[@yaml['name']]
|
86
|
+
end
|
87
|
+
not_id = @parent.dc_dont?(@yaml['is_id'], false)
|
88
|
+
# Found value to be written in field. If field is not found write out value.
|
89
|
+
value_displayed = value
|
90
|
+
if value && !not_id
|
91
|
+
if BSON::ObjectId.legal?(value)
|
92
|
+
record = model_klass.find(value)
|
93
|
+
value_displayed = record.send(ret_name) if record
|
94
|
+
else
|
95
|
+
value_displayed = model_klass.send(ret_name, method, @parent, value)
|
96
|
+
end
|
91
97
|
end
|
92
|
-
|
93
|
-
|
94
|
-
# Add method back, so autocomplete will know that it must search for method inside class
|
98
|
+
return ro_standard(value_displayed) if @readonly
|
99
|
+
|
100
|
+
# Add method back, so autocomplete will know that it must search for method inside class
|
95
101
|
ret_name = "#{ret_name}.#{method}" if method
|
96
102
|
@yaml['html'] ||= {}
|
97
103
|
@yaml['html']['value'] = value_displayed
|
98
104
|
@yaml['html']['placeholder'] ||= t('drgcms.search_placeholder') || nil
|
99
|
-
#
|
105
|
+
#
|
100
106
|
_name = '_' + @yaml['name']
|
101
107
|
record = record_text_for(@yaml['name'])
|
102
|
-
@html << @parent.text_field(record, _name, @yaml['html'])
|
108
|
+
@html << '<span class="dc-text-autocomplete">' + @parent.text_field(record, _name, @yaml['html']) + '<span></span>'
|
103
109
|
if @yaml['with_new']
|
104
110
|
@html << ' ' +
|
105
111
|
@parent.fa_icon('plus-square lg', class: 'in-edit-add', title: t('drgcms.new'),
|
106
112
|
style: "vertical-align: top;", 'data-table' => @yaml['with_new'] )
|
107
113
|
end
|
108
|
-
@html << @parent.hidden_field(record, @yaml['name'], value: value) # actual value will be in hidden field
|
109
|
-
# JS stuff
|
110
|
-
# allow unselected values on
|
111
|
-
not_id_code = %
|
114
|
+
@html << '</span>' + @parent.hidden_field(record, @yaml['name'], value: value) # actual value will be in hidden field
|
115
|
+
# JS stuff
|
116
|
+
# allow unselected values on is_id: false option
|
117
|
+
not_id_code = %(
|
112
118
|
if (ui.item == null) {
|
113
119
|
$("##{record}_#{@yaml['name']}").val($("##{record}__#{@yaml['name']}").val() );
|
114
120
|
return;
|
115
|
-
}
|
116
|
-
|
117
|
-
#
|
121
|
+
} ) if not_id
|
122
|
+
#
|
118
123
|
@js << <<EOJS
|
119
124
|
$(document).ready(function() {
|
120
125
|
$("##{record}_#{_name}").autocomplete( {
|
121
126
|
source: function(request, response) {
|
122
127
|
$.ajax({
|
123
|
-
url:
|
128
|
+
url: "/dc_common/autocomplete",
|
124
129
|
type: "POST",
|
125
130
|
dataType: "json",
|
126
131
|
data: { input: request.term, table: "#{table}", search: "#{ret_name}" #{(',id: "'+@yaml['id'] + '"') if @yaml['id']} },
|
@@ -131,11 +136,13 @@ $(document).ready(function() {
|
|
131
136
|
}
|
132
137
|
});
|
133
138
|
},
|
139
|
+
|
134
140
|
change: function (event, ui) {
|
135
141
|
#{not_id_code}
|
142
|
+
if (ui.item == null) return;
|
136
143
|
$("##{record}_#{@yaml['name']}").val(ui.item.id);
|
137
|
-
|
138
144
|
},
|
145
|
+
|
139
146
|
minLength: 2
|
140
147
|
});
|
141
148
|
});
|
@@ -152,4 +159,5 @@ def self.get_data(params, name)
|
|
152
159
|
end
|
153
160
|
|
154
161
|
end
|
162
|
+
|
155
163
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c)
|
2
|
+
# Copyright (c) 2020+ Damjan Rems
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
5
5
|
# a copy of this software and associated documentation files (the
|
@@ -22,5 +22,16 @@
|
|
22
22
|
#++
|
23
23
|
|
24
24
|
module DrgcmsFormFields
|
25
|
+
|
26
|
+
def self.field(parent, record, options)
|
27
|
+
klass = options['type'].camelize
|
28
|
+
if DrgcmsFormFields.const_defined?(klass)
|
29
|
+
field = DrgcmsFormFields.const_get(klass).new(parent, record, options).render
|
30
|
+
[field.html + (field.js.size > 0 ? @parent.javascript_tag(field.js) : ''),field.css]
|
31
|
+
else
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
25
36
|
end
|
26
37
|
|
@@ -32,6 +32,7 @@
|
|
32
32
|
class DcBigMenuRenderer
|
33
33
|
|
34
34
|
include DcApplicationHelper
|
35
|
+
include CmsCommonHelper
|
35
36
|
########################################################################
|
36
37
|
# Object initialization.
|
37
38
|
########################################################################
|
@@ -35,6 +35,7 @@
|
|
35
35
|
class DcMenuRenderer
|
36
36
|
|
37
37
|
include DcApplicationHelper
|
38
|
+
include CmsCommonHelper
|
38
39
|
########################################################################
|
39
40
|
# Object initialization. Will also prepare DcMenu document.
|
40
41
|
########################################################################
|
@@ -36,6 +36,7 @@
|
|
36
36
|
class DcPageRenderer
|
37
37
|
|
38
38
|
include DcApplicationHelper
|
39
|
+
include CmsCommonHelper
|
39
40
|
|
40
41
|
########################################################################
|
41
42
|
# Object initialization.
|
@@ -71,6 +72,7 @@ end
|
|
71
72
|
#########################################################################
|
72
73
|
def iframe
|
73
74
|
return '' if @page.if_url.blank?
|
75
|
+
|
74
76
|
html = "\n<iframe"
|
75
77
|
html << " id=\"#{@page.if_id}\"" unless @page.if_id.blank?
|
76
78
|
html << " class=\"#{@page.if_class}\"" unless @page.if_class.blank?
|
@@ -78,7 +80,7 @@ def iframe
|
|
78
80
|
html << " height=\"#{@page.if_height}\"" unless @page.if_height.blank?
|
79
81
|
html << " width=\"#{@page.if_width}\"" unless @page.if_width.blank?
|
80
82
|
html << " scrolling=\"#{@page.if_scroll}\""
|
81
|
-
# Parameters
|
83
|
+
# Parameters
|
82
84
|
parameters = @page.if_url.match(/\?/) ? '' : '?'
|
83
85
|
params = YAML.load(@page.if_params) rescue {}
|
84
86
|
params = {} unless params.class == Hash
|
@@ -97,20 +99,20 @@ end
|
|
97
99
|
def default
|
98
100
|
can_view, msg = dc_user_can_view(@parent, @page)
|
99
101
|
return msg unless can_view
|
100
|
-
|
101
|
-
html =
|
102
|
+
|
103
|
+
html = "<div class=\"#{@page.div_class} #{@opts[:div_class]}\">"
|
102
104
|
html << dc_page_edit_menu() if @opts[:edit_mode] > 1
|
103
105
|
@parent.page_title = @page.title.blank? ? @page.subject : @page.title
|
104
106
|
html << @page.body
|
105
|
-
# render poll if defined
|
107
|
+
# render poll if defined
|
106
108
|
if @page.dc_poll_id
|
107
109
|
@opts.merge!(:poll_id => @page.dc_poll_id, :return_to => @parent.request.url, method: nil)
|
108
110
|
comment = DcPollRenderer.new(@parent, @opts)
|
109
111
|
html << "<div class='wrap row'>#{comment.render_html}</div>"
|
110
112
|
@css << "\n#{comment.render_css}"
|
111
113
|
end
|
112
|
-
# also add iframe
|
113
|
-
html << iframe()
|
114
|
+
# also add iframe
|
115
|
+
html << iframe() << '</div>'
|
114
116
|
end
|
115
117
|
|
116
118
|
#########################################################################
|
@@ -33,7 +33,7 @@
|
|
33
33
|
class DcPieceRenderer
|
34
34
|
|
35
35
|
include DcApplicationHelper
|
36
|
-
|
36
|
+
include CmsCommonHelper
|
37
37
|
########################################################################
|
38
38
|
# Object initialization. It also loads requested dc_piece document.
|
39
39
|
########################################################################
|