drg_cms 0.6.1.0 → 0.6.1.6
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/README.md +25 -10
- data/app/assets/fonts/ibm-plex-sans-300.woff2 +0 -0
- data/app/assets/fonts/ibm-plex-sans-400.woff2 +0 -0
- data/app/assets/fonts/ibm-plex-sans-500.woff2 +0 -0
- data/app/assets/fonts/ibm-plex-sans-600.woff2 +0 -0
- data/app/assets/fonts/ibm-plex-sans-700.woff2 +0 -0
- data/app/assets/fonts/ibm-plex-sans-italic.woff2 +0 -0
- data/app/assets/javascripts/drg_cms/drg_cms.js +178 -55
- data/app/assets/stylesheets/drg_cms/drg_cms.css +218 -94
- data/app/assets/stylesheets/drg_cms/select-multiple.css +1 -1
- data/app/controllers/cmsedit_controller.rb +29 -24
- data/app/controllers/dc_application_controller.rb +78 -166
- data/app/controllers/dc_common_controller.rb +56 -47
- data/app/controls/dc_help_control.rb +12 -0
- data/app/controls/dc_report.rb +7 -9
- data/app/controls/design_element_settings_control.rb +1 -1
- data/app/forms/all_options.yml +25 -6
- data/app/forms/dc_big_table.yml +0 -2
- data/app/forms/dc_big_table_value.yml +0 -2
- data/app/forms/dc_design.yml +1 -2
- data/app/forms/dc_folder_permission.yml +0 -2
- data/app/forms/dc_help_1.yml +2 -1
- data/app/forms/dc_json_ld.yml +0 -3
- data/app/forms/dc_menu.yml +6 -12
- data/app/forms/dc_menu_item.yml +1 -3
- data/app/forms/dc_page.yml +5 -2
- data/app/forms/dc_policy.yml +2 -5
- data/app/forms/dc_poll.yml +10 -16
- data/app/forms/dc_seo.yml +1 -2
- data/app/forms/dc_simple_menu.yml +1 -2
- data/app/forms/dc_site.yml +5 -7
- data/app/helpers/cms_common_helper.rb +2 -3
- data/app/helpers/cms_edit_helper.rb +41 -31
- data/app/helpers/cms_helper.rb +6 -6
- data/app/helpers/cms_index_helper.rb +79 -34
- data/app/helpers/dc_application_helper.rb +99 -85
- data/app/models/concerns/dc_page_concern.rb +3 -2
- data/app/models/concerns/dc_piece_concern.rb +1 -1
- data/app/models/concerns/dc_site_concern.rb +10 -4
- data/app/models/concerns/dc_user_concern.rb +3 -3
- data/app/models/dc_big_table.rb +2 -2
- data/app/models/dc_filter.rb +28 -22
- data/app/models/dc_site.rb +0 -1
- data/app/models/dc_temp.rb +7 -0
- data/app/models/drgcms_form_fields/comment.rb +11 -2
- data/app/models/drgcms_form_fields/date_picker.rb +2 -0
- data/app/models/drgcms_form_fields/drgcms_field.rb +2 -1
- data/app/models/drgcms_form_fields/embedded.rb +4 -2
- data/app/models/drgcms_form_fields/number_field.rb +4 -3
- data/app/models/drgcms_form_fields/readonly.rb +13 -17
- data/app/models/drgcms_form_fields/select.rb +16 -18
- data/app/models/drgcms_form_fields/text_autocomplete.rb +39 -23
- data/app/renderers/dc_page_renderer.rb +7 -6
- data/app/renderers/dc_poll_renderer.rb +16 -20
- data/app/views/cmsedit/_edit_stuff.html.erb +5 -2
- data/app/views/cmsedit/_form.html.erb +3 -2
- data/app/views/cmsedit/_result.html.erb +21 -18
- data/app/views/cmsedit/edit.html.erb +2 -1
- data/app/views/cmsedit/index.html.erb +1 -1
- data/app/views/cmsedit/new.html.erb +3 -2
- data/app/views/dc_common/_help.html.erb +12 -3
- data/app/views/layouts/cms.html.erb +3 -5
- data/config/locales/drgcms_en.yml +5 -2
- data/config/locales/drgcms_sl.yml +5 -2
- data/config/locales/models_en.yml +2 -0
- data/config/locales/models_sl.yml +5 -3
- data/drg_cms.gemspec +16 -16
- data/lib/drg_cms/version.rb +1 -1
- data/lib/drg_cms.rb +46 -12
- metadata +35 -29
@@ -31,12 +31,17 @@ module DrgcmsFormFields
|
|
31
31
|
# * +type:+ comment (required)
|
32
32
|
# * +caption:+ Caption text written in label place. If set to false comment
|
33
33
|
# will occupy whole row. (required)
|
34
|
-
#
|
34
|
+
# * +html:+ Optional html attributes will be added to div surrounding the comment.
|
35
|
+
#
|
35
36
|
# Form example:
|
36
37
|
# 30:
|
37
38
|
# type: comment
|
38
39
|
# text: myapp.comment_text
|
39
40
|
# caption: false
|
41
|
+
# html:
|
42
|
+
# style: 'color: red'
|
43
|
+
# class: some_class
|
44
|
+
# id: some_id
|
40
45
|
###########################################################################
|
41
46
|
class Comment < DrgcmsField
|
42
47
|
|
@@ -45,7 +50,11 @@ class Comment < DrgcmsField
|
|
45
50
|
###########################################################################
|
46
51
|
def render
|
47
52
|
comment = @yaml['comment'] || @yaml['text']
|
48
|
-
@html
|
53
|
+
@yaml['html'] ||= {}
|
54
|
+
@yaml['html']['class'] = 'dc-comment ' + @yaml['html']['class'].to_s
|
55
|
+
html = @yaml['html'].inject('') { |r, e| r << %( #{e[0]}="#{e[1]}") }
|
56
|
+
|
57
|
+
@html << %(<div #{html}>#{t(comment, comment).gsub("\n",'<br>')}</div>)
|
49
58
|
self
|
50
59
|
end
|
51
60
|
end
|
@@ -78,6 +78,8 @@ def render
|
|
78
78
|
@yaml['options']['lang'] ||= "'#{I18n.locale}'"
|
79
79
|
@yaml['options']['format'] ||= "'#{t('datetimepicker.formats.date')}'"
|
80
80
|
@yaml['options']['timepicker'] = false
|
81
|
+
@yaml['options']['scrollMonth'] ||= false
|
82
|
+
@yaml['options']['scrollInput'] ||= false
|
81
83
|
|
82
84
|
record = record_text_for(@yaml['name'])
|
83
85
|
@html << @parent.text_field(record, @yaml['name'], @yaml['html'])
|
@@ -135,7 +135,8 @@ def ro_standard(value=nil)
|
|
135
135
|
@record.respond_to?(@yaml['name']) ? @record.send(@yaml['name']) : nil
|
136
136
|
end
|
137
137
|
end
|
138
|
-
|
138
|
+
#@html << (value.blank? ? '' : "<div class='dc-readonly'>#{value}</div>")
|
139
|
+
@html << %(<div id="#{@yaml['name']}" class="dc-readonly">#{value}</div>)
|
139
140
|
self
|
140
141
|
end
|
141
142
|
|
@@ -67,9 +67,11 @@ def render
|
|
67
67
|
tables = @parent.tables.inject('') { |r,v| r << "#{v[1]};" } + @yaml['table']
|
68
68
|
ids = @parent.ids.inject('') { |r,v| r << "#{v};" } + @record.id
|
69
69
|
end
|
70
|
-
|
70
|
+
# edit enabled embedded form on a readonly form
|
71
|
+
readonly = @yaml['readonly'].class == FalseClass ? nil : @readonly
|
72
|
+
opts = { controller: 'cmsedit', action: @yaml['action'],
|
71
73
|
ids: ids, table: tables, form_name: @yaml['form_name'],
|
72
|
-
field_name: @yaml['name'], iframe: "if_#{@yaml['name']}", readonly:
|
74
|
+
field_name: @yaml['name'], iframe: "if_#{@yaml['name']}", readonly: readonly }
|
73
75
|
# additional parameters if specified
|
74
76
|
@yaml['params'].each { |k,v| opts[k] = @parent.dc_value_for_parameter(v) } if @yaml['params']
|
75
77
|
|
@@ -69,14 +69,14 @@ def render
|
|
69
69
|
@yaml['html']['data-delimiter'] = @yaml.dig('format','delimiter') || I18n.t('number.currency.format.delimiter')
|
70
70
|
@yaml['html']['data-separator'] = @yaml.dig('format','separator') || I18n.t('number.currency.format.separator')
|
71
71
|
# @yaml['html']['data-currency'] = @yaml.dig('format','currency') == 'yes' ? I18n.t('number.currency.format.currency') : @yaml.dig('format','currency')
|
72
|
-
value = @record[@yaml['name']] || 0
|
72
|
+
value = @yaml['html']['value'] || @record[@yaml['name']] || 0
|
73
73
|
@yaml['html']['value'] = @parent.dc_format_number(value, @yaml['html']['data-decimal'], @yaml['html']['data-separator'], @yaml['html']['data-delimiter'] )
|
74
74
|
|
75
75
|
return ro_standard(@yaml['html']['value']) if @readonly
|
76
76
|
|
77
77
|
@yaml['html']['autocomplete'] ||= 'off'
|
78
78
|
@html << @parent.hidden_field( record, @yaml['name'], value: value )
|
79
|
-
@html << @parent.text_field( nil,"record_#{@yaml['name']}_", @yaml['html'])
|
79
|
+
@html << @parent.text_field( nil, "record_#{@yaml['name']}_", @yaml['html'])
|
80
80
|
self
|
81
81
|
end
|
82
82
|
|
@@ -85,7 +85,8 @@ end
|
|
85
85
|
###########################################################################
|
86
86
|
def self.get_data(params, name)
|
87
87
|
return 0 if params['record'][name].blank?
|
88
|
-
|
88
|
+
|
89
|
+
params['record'][name].match('.') ? params['record'][name].to_f : params['record'][name].to_i
|
89
90
|
end
|
90
91
|
|
91
92
|
end
|
@@ -51,29 +51,25 @@ class Readonly < DrgcmsField
|
|
51
51
|
###########################################################################
|
52
52
|
# Render readonly field html code
|
53
53
|
###########################################################################
|
54
|
-
def render
|
54
|
+
def render
|
55
55
|
@html << @parent.hidden_field('record', @yaml['name']) # retain field as hidden field
|
56
56
|
@html << '<div class="dc-readonly">'
|
57
|
-
|
57
|
+
|
58
58
|
@html << if @yaml['eval']
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
eval( "#{@yaml['eval']} '#{@record.send(@yaml['name'])}'")
|
70
|
-
end
|
71
|
-
else
|
72
|
-
@parent.dc_format_value(@record.send(@yaml['name']),@yaml['format'])
|
73
|
-
end
|
59
|
+
if @yaml['eval'].match(/dc_name4_id|dc_name_for_id/)
|
60
|
+
parms = @parent.dc_eval_to_array(@yaml['eval'])
|
61
|
+
parms << nil if parms.size == 3
|
62
|
+
@parent.dc_name_for_id(parms[1], parms[2], parms[3], @record[@yaml['name']])
|
63
|
+
else
|
64
|
+
eval( "#{@yaml['eval']} '#{@record.send(@yaml['name'])}'")
|
65
|
+
end
|
66
|
+
else
|
67
|
+
@parent.dc_format_value(@record.send(@yaml['name']), @yaml['format'])
|
68
|
+
end
|
74
69
|
@html << '</div>'
|
75
70
|
self
|
76
71
|
end
|
72
|
+
|
77
73
|
end
|
78
74
|
|
79
75
|
end
|
@@ -96,7 +96,7 @@ def choices_in_eval(e)
|
|
96
96
|
if @yaml['depend'].nil?
|
97
97
|
method = e.split(/\ |\(/).first
|
98
98
|
return eval(e) if respond_to?(method) # id method defined here
|
99
|
-
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
|
100
100
|
# eval whatever it is there
|
101
101
|
eval e
|
102
102
|
else
|
@@ -120,19 +120,18 @@ end
|
|
120
120
|
###########################################################################
|
121
121
|
def get_choices
|
122
122
|
begin
|
123
|
-
choices = case
|
124
|
-
when @yaml['choices'] then
|
125
|
-
@yaml['choices'].match('helpers.') ? choices_in_helper(@yaml['choices']) : @yaml['choices']
|
123
|
+
choices = case
|
126
124
|
when @yaml['eval'] then
|
127
125
|
choices_in_eval(@yaml['eval'])
|
126
|
+
when @yaml['choices'] then
|
127
|
+
@yaml['choices'].match('helpers.') ? choices_in_helper(@yaml['choices']) : @yaml['choices']
|
128
128
|
else
|
129
129
|
choices_in_helper()
|
130
130
|
end
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
rescue Exception => e
|
131
|
+
return choices unless choices.class == String
|
132
|
+
|
133
|
+
choices.chomp.split(',').map { |e| e.match(':') ? e.split(':') : e }
|
134
|
+
rescue Exception => e
|
136
135
|
Rails.logger.debug "\nError in select eval. #{e.message}\n"
|
137
136
|
Rails.logger.debug(e.backtrace.join($/)) if Rails.env.development?
|
138
137
|
['error'] # return empty array when error occures
|
@@ -145,8 +144,7 @@ end
|
|
145
144
|
def add_view_code
|
146
145
|
return '' if (data = @record.send(@yaml['name'])).blank?
|
147
146
|
|
148
|
-
|
149
|
-
table, form_name = *ar
|
147
|
+
table, form_name = @yaml['view'].split(/\ |\,/).delete_if { |e| e.blank? }
|
150
148
|
url = @parent.url_for(controller: :cmsedit, id: data, action: :edit, table: table, form_name: form_name, readonly: true, window_close: 1 )
|
151
149
|
icon = @parent.fa_icon('eye')
|
152
150
|
%(<span class="dc-window-open" data-url="#{url}">#{icon}</span>)
|
@@ -159,9 +157,9 @@ def ro_standard
|
|
159
157
|
value = @record.respond_to?(@yaml['name']) ? @record.send(@yaml['name']) : nil
|
160
158
|
return self if value.blank?
|
161
159
|
|
160
|
+
html = ''
|
162
161
|
choices = get_choices()
|
163
162
|
if value.class == Array # multiple choices
|
164
|
-
html = ''
|
165
163
|
value.each do |element|
|
166
164
|
choices.each do |choice|
|
167
165
|
if choice.to_s == element.to_s
|
@@ -170,17 +168,17 @@ def ro_standard
|
|
170
168
|
end
|
171
169
|
end
|
172
170
|
end
|
173
|
-
return super(html)
|
174
171
|
else
|
175
172
|
choices.each do |choice|
|
176
173
|
if choice.class == Array
|
177
|
-
|
174
|
+
(html = choice.first; break) if choice.last.to_s == value.to_s
|
178
175
|
else
|
179
|
-
|
176
|
+
(html = choice; break) if choice.to_s == value.to_s
|
180
177
|
end
|
181
178
|
end
|
179
|
+
html << add_view_code if @yaml['view']
|
182
180
|
end
|
183
|
-
super(
|
181
|
+
super(html)
|
184
182
|
end
|
185
183
|
|
186
184
|
###########################################################################
|
@@ -193,9 +191,8 @@ def render
|
|
193
191
|
# separate options and html part
|
194
192
|
html_part = {}
|
195
193
|
@yaml['html'].symbolize_keys!
|
196
|
-
%i(class id style required).each { |sym| html_part[sym] = @yaml['html'].delete(sym) if
|
194
|
+
%i(class id style required).each { |sym| html_part[sym] = @yaml['html'].delete(sym) if @yaml['html'][sym] }
|
197
195
|
html_part[:multiple] = true if @yaml['multiple']
|
198
|
-
|
199
196
|
record = record_text_for(@yaml['name'])
|
200
197
|
if html_part[:multiple]
|
201
198
|
@html << @parent.select(record, @yaml['name'], get_choices, @yaml['html'], html_part)
|
@@ -224,4 +221,5 @@ def self.get_data(params, name)
|
|
224
221
|
end
|
225
222
|
|
226
223
|
end
|
224
|
+
|
227
225
|
end
|
@@ -29,7 +29,8 @@ module DrgcmsFormFields
|
|
29
29
|
# * +name:+ field name (required)
|
30
30
|
# * +type:+ text_autocomplete (required)
|
31
31
|
# * +table+ Collection (table) name. When defined search must contain field name
|
32
|
-
# * +with_new+ Will add an icon for shortcut to add new document to collection
|
32
|
+
# * +with_new+ Will add an icon for shortcut to add new document to related collection
|
33
|
+
# * +with_edit+ Will add an icon for shortcut to edit (view) related document
|
33
34
|
# * +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
35
|
# * +search:+ Search may consist of three parameters from which are separated either by dot (.)
|
35
36
|
# * search_field_name; when table option is defined search must define field name which will be used for search query
|
@@ -43,8 +44,9 @@ module DrgcmsFormFields
|
|
43
44
|
# type: text_autocomplete
|
44
45
|
# search: dc_user.name
|
45
46
|
# is_id: false
|
46
|
-
#
|
47
|
-
#
|
47
|
+
# size: 30
|
48
|
+
# with_new: user
|
49
|
+
# with_edit: user
|
48
50
|
###########################################################################
|
49
51
|
class TextAutocomplete < DrgcmsField
|
50
52
|
|
@@ -58,8 +60,8 @@ def render
|
|
58
60
|
table = @yaml['search']['table']
|
59
61
|
ret_name = @yaml['search']['field']
|
60
62
|
method = @yaml['search']['method']
|
61
|
-
elsif @yaml['search'].match(
|
62
|
-
table, ret_name, method = @yaml['search'].split(
|
63
|
+
elsif @yaml['search'].match(/\.|\,| /)
|
64
|
+
table, ret_name, method = @yaml['search'].split(/\.|\,| /).map(&:strip)
|
63
65
|
else
|
64
66
|
ret_name = @yaml['search']
|
65
67
|
end
|
@@ -76,51 +78,62 @@ def render
|
|
76
78
|
end
|
77
79
|
return ro_standard 'Table or field keyword not defined!' unless (table && ret_name)
|
78
80
|
# TODO check if table exists
|
79
|
-
|
81
|
+
model_klass = table.classify.constantize
|
80
82
|
# find record and return value of field
|
81
83
|
value_send_as = 'p_' + @yaml['name']
|
82
84
|
value = if @parent.params[value_send_as]
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
85
|
+
@parent.params[value_send_as]
|
86
|
+
elsif @record && @record[@yaml['name']]
|
87
|
+
@record[@yaml['name']]
|
88
|
+
end
|
89
|
+
not_id = @parent.dc_dont?(@yaml['is_id'], false)
|
87
90
|
# Found value to be written in field. If field is not found write out value.
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
+
value_displayed = value
|
92
|
+
if value && !not_id
|
93
|
+
if BSON::ObjectId.legal?(value)
|
94
|
+
record = model_klass.find(value)
|
95
|
+
value_displayed = record.send(ret_name) if record
|
96
|
+
else
|
97
|
+
value_displayed = model_klass.send(ret_name, method, @parent, value)
|
98
|
+
end
|
91
99
|
end
|
92
|
-
# return if readonly
|
93
100
|
return ro_standard(value_displayed) if @readonly
|
101
|
+
|
94
102
|
# Add method back, so autocomplete will know that it must search for method inside class
|
95
103
|
ret_name = "#{ret_name}.#{method}" if method
|
96
104
|
@yaml['html'] ||= {}
|
97
105
|
@yaml['html']['value'] = value_displayed
|
98
106
|
@yaml['html']['placeholder'] ||= t('drgcms.search_placeholder') || nil
|
99
|
-
|
107
|
+
|
100
108
|
_name = '_' + @yaml['name']
|
101
109
|
record = record_text_for(@yaml['name'])
|
102
110
|
@html << '<span class="dc-text-autocomplete">' + @parent.text_field(record, _name, @yaml['html']) + '<span></span>'
|
111
|
+
# with new icon
|
103
112
|
if @yaml['with_new']
|
104
|
-
@html << ' ' +
|
105
|
-
|
106
|
-
|
113
|
+
@html << ' ' + @parent.fa_icon('plus-square lg', class: 'in-edit-add', title: t('drgcms.new'),
|
114
|
+
style: "vertical-align: top;", 'data-table' => @yaml['with_new'] )
|
115
|
+
end
|
116
|
+
# with edit icon
|
117
|
+
if @yaml['with_edit'] && @record[@yaml['name']].present?
|
118
|
+
@html << ' ' + @parent.fa_icon('edit lg', class: 'in-edit-add', title: t('drgcms.edit'),
|
119
|
+
style: "vertical-align: top;", 'data-table' => @yaml['with_edit'], 'data-id' => @record[@yaml['name']] )
|
107
120
|
end
|
108
|
-
@html << '</span>' + @parent.hidden_field(record, @yaml['name'], value: value)
|
121
|
+
@html << '</span>' + @parent.hidden_field(record, @yaml['name'], value: value) # actual value will be in hidden field
|
122
|
+
|
109
123
|
# JS stuff
|
110
124
|
# allow unselected values on is_id: false option
|
111
|
-
not_id = @parent.dc_dont?(@yaml['is_id'], false)
|
112
125
|
not_id_code = %(
|
113
126
|
if (ui.item == null) {
|
114
127
|
$("##{record}_#{@yaml['name']}").val($("##{record}__#{@yaml['name']}").val() );
|
115
128
|
return;
|
116
129
|
} ) if not_id
|
117
|
-
|
130
|
+
|
118
131
|
@js << <<EOJS
|
119
132
|
$(document).ready(function() {
|
120
133
|
$("##{record}_#{_name}").autocomplete( {
|
121
134
|
source: function(request, response) {
|
122
135
|
$.ajax({
|
123
|
-
url:
|
136
|
+
url: "/dc_common/autocomplete",
|
124
137
|
type: "POST",
|
125
138
|
dataType: "json",
|
126
139
|
data: { input: request.term, table: "#{table}", search: "#{ret_name}" #{(',id: "'+@yaml['id'] + '"') if @yaml['id']} },
|
@@ -131,11 +144,13 @@ $(document).ready(function() {
|
|
131
144
|
}
|
132
145
|
});
|
133
146
|
},
|
147
|
+
|
134
148
|
change: function (event, ui) {
|
135
149
|
#{not_id_code}
|
150
|
+
if (ui.item == null) return;
|
136
151
|
$("##{record}_#{@yaml['name']}").val(ui.item.id);
|
137
|
-
|
138
152
|
},
|
153
|
+
|
139
154
|
minLength: 2
|
140
155
|
});
|
141
156
|
});
|
@@ -152,4 +167,5 @@ def self.get_data(params, name)
|
|
152
167
|
end
|
153
168
|
|
154
169
|
end
|
170
|
+
|
155
171
|
end
|
@@ -72,6 +72,7 @@ end
|
|
72
72
|
#########################################################################
|
73
73
|
def iframe
|
74
74
|
return '' if @page.if_url.blank?
|
75
|
+
|
75
76
|
html = "\n<iframe"
|
76
77
|
html << " id=\"#{@page.if_id}\"" unless @page.if_id.blank?
|
77
78
|
html << " class=\"#{@page.if_class}\"" unless @page.if_class.blank?
|
@@ -79,7 +80,7 @@ def iframe
|
|
79
80
|
html << " height=\"#{@page.if_height}\"" unless @page.if_height.blank?
|
80
81
|
html << " width=\"#{@page.if_width}\"" unless @page.if_width.blank?
|
81
82
|
html << " scrolling=\"#{@page.if_scroll}\""
|
82
|
-
# Parameters
|
83
|
+
# Parameters
|
83
84
|
parameters = @page.if_url.match(/\?/) ? '' : '?'
|
84
85
|
params = YAML.load(@page.if_params) rescue {}
|
85
86
|
params = {} unless params.class == Hash
|
@@ -98,20 +99,20 @@ end
|
|
98
99
|
def default
|
99
100
|
can_view, msg = dc_user_can_view(@parent, @page)
|
100
101
|
return msg unless can_view
|
101
|
-
|
102
|
-
html =
|
102
|
+
|
103
|
+
html = "<div class=\"#{@page.div_class} #{@opts[:div_class]}\">"
|
103
104
|
html << dc_page_edit_menu() if @opts[:edit_mode] > 1
|
104
105
|
@parent.page_title = @page.title.blank? ? @page.subject : @page.title
|
105
106
|
html << @page.body
|
106
|
-
# render poll if defined
|
107
|
+
# render poll if defined
|
107
108
|
if @page.dc_poll_id
|
108
109
|
@opts.merge!(:poll_id => @page.dc_poll_id, :return_to => @parent.request.url, method: nil)
|
109
110
|
comment = DcPollRenderer.new(@parent, @opts)
|
110
111
|
html << "<div class='wrap row'>#{comment.render_html}</div>"
|
111
112
|
@css << "\n#{comment.render_css}"
|
112
113
|
end
|
113
|
-
# also add iframe
|
114
|
-
html << iframe()
|
114
|
+
# also add iframe
|
115
|
+
html << iframe() << '</div>'
|
115
116
|
end
|
116
117
|
|
117
118
|
#########################################################################
|
@@ -60,7 +60,7 @@ def do_one_item(poll, yaml)
|
|
60
60
|
# label
|
61
61
|
text = yaml['text'].match(/\./) ? t(yaml['text']) : yaml['text']
|
62
62
|
if yaml['mandatory']
|
63
|
-
text << ( poll.display == 'in' ? ' *' : '<
|
63
|
+
text << ( poll.display == 'in' ? ' *' : '<span class="required"> *</span>' )
|
64
64
|
yaml['html'] ||= {}
|
65
65
|
yaml['html']['required'] = true
|
66
66
|
else
|
@@ -108,11 +108,7 @@ def do_one_item(poll, yaml)
|
|
108
108
|
if yaml['type'].match(/submit_tag|link_to/)
|
109
109
|
# There can be more than one links on form. End the data at first link or submit.
|
110
110
|
if !@end_of_data
|
111
|
-
html <<
|
112
|
-
"</div><br>\n"
|
113
|
-
else
|
114
|
-
"</div>\n"
|
115
|
-
end
|
111
|
+
html << (poll.display == 'lr' ? "</div><br>\n" : "</div>\n")
|
116
112
|
# captcha
|
117
113
|
if poll.captcha_type.to_s.size > 1
|
118
114
|
@opts.merge!(:captcha_type => poll.captcha_type)
|
@@ -166,18 +162,18 @@ def default
|
|
166
162
|
|
167
163
|
poll = DcPoll.find(poll_id)
|
168
164
|
poll = DcPoll.find_by(name: poll_id) if poll.nil? # name instead of id
|
169
|
-
return
|
165
|
+
return %(<div class="dc-form-error">Invalid Poll id #{poll_id}</div>) if poll.nil?
|
170
166
|
# If parent cant be seen. so cant be polls
|
171
167
|
can_view, message = dc_user_can_view(@parent, @parent.page)
|
172
|
-
return
|
168
|
+
return %(<div class="dc-form-error">#{message}</div>) unless can_view
|
173
169
|
|
174
|
-
html = @opts[:div] ?
|
170
|
+
html = @opts[:div] ? %(<div id="#{@opts[:div]}"'>) : ''
|
175
171
|
html << '<a name="poll-top"></a>'
|
176
172
|
unless poll.pre_display.blank?
|
177
173
|
begin
|
178
174
|
continue, message = eval_pre_display(poll.pre_display)
|
179
175
|
rescue Exception => e
|
180
|
-
return
|
176
|
+
return %(<div class="dc-form-error">Error! Poll pre display. Error: #{e.message}</div>)
|
181
177
|
end
|
182
178
|
return message unless continue
|
183
179
|
|
@@ -188,11 +184,11 @@ def default
|
|
188
184
|
# If flash[:record] is present copy content to params record hash
|
189
185
|
@parent.flash[:record].each {|k,v| @parent.params["p_#{k}"] = v } if @parent.flash[:record]
|
190
186
|
# Error during procesing request
|
191
|
-
html <<
|
192
|
-
html <<
|
187
|
+
html << %(<div class="dc-form-error">#{@parent.flash[:error]}</div>\n) if @parent.flash[:error].to_s.size > 0
|
188
|
+
html << %(<div class="dc-form-info">#{@parent.flash[:info]}</div>\n) if @parent.flash[:info]
|
193
189
|
end
|
194
190
|
# div and form tag
|
195
|
-
html <<
|
191
|
+
html << %(<div class="poll-div">\n)
|
196
192
|
# edit link
|
197
193
|
if @opts[:edit_mode] > 1
|
198
194
|
@opts[:editparams].merge!( controller: 'cmsedit', action: 'edit', id: poll._id, table: 'dc_poll', form_name: 'dc_poll' )
|
@@ -208,13 +204,13 @@ def default
|
|
208
204
|
@parent.form_tag( poll.parameters, method: :put)
|
209
205
|
end
|
210
206
|
# header, - on first position will not display title
|
211
|
-
html <<
|
212
|
-
html << poll.sub_text
|
207
|
+
html << %(<div class="poll-title">#{poll.title}</div>) unless poll.title[0] == '-'
|
208
|
+
html << %(<div class="poll-text">#{poll.sub_text}</div>)
|
213
209
|
html << if poll.display == 'lr'
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
210
|
+
%(\n<div class="poll-data-table">)
|
211
|
+
else
|
212
|
+
%(<div class="poll-data-div">\n)
|
213
|
+
end
|
218
214
|
# items. Convert each item to yaml
|
219
215
|
@end_od_data = false
|
220
216
|
if poll.form.to_s.size < 10
|
@@ -232,9 +228,9 @@ def default
|
|
232
228
|
yaml['text'] = item.text
|
233
229
|
yaml['mandatory'] = item.mandatory
|
234
230
|
yaml['type'] = item.type
|
231
|
+
|
235
232
|
html << do_one_item(poll, yaml)
|
236
233
|
end
|
237
|
-
# FORM. Just call do_one_item for each form item
|
238
234
|
else
|
239
235
|
yaml = YAML.load(poll.form.gsub(' ',' ')) # very annoying. They come with copy&paste ;-)
|
240
236
|
# if entered without numbering yaml is returned as Hash otherwise as Array
|
@@ -38,11 +38,14 @@
|
|
38
38
|
|
39
39
|
</div>
|
40
40
|
</div>
|
41
|
-
|
42
|
-
<div
|
41
|
+
|
42
|
+
<div id="menu-hamburger"><%= fa_icon('bars') %></div>
|
43
|
+
|
44
|
+
<div class="cmsedit-container">
|
43
45
|
<div id="menu">
|
44
46
|
<%= dc_choices4_cmsmenu.html_safe %>
|
45
47
|
</div>
|
48
|
+
|
46
49
|
<div class="cmsedit-iframe" style="width: 99%;">
|
47
50
|
<iframe id="iframe_cms" name="iframe_cms"></iframe>
|
48
51
|
</div>
|
@@ -1,24 +1,27 @@
|
|
1
1
|
|
2
2
|
<div class="dc-table-frame">
|
3
3
|
|
4
|
-
<%
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
4
|
+
<% if @form['result_set']['type'] == 'method' %>
|
5
|
+
<%= dc_process_result_set_method %>
|
6
|
+
<% elsif @records %>
|
7
|
+
<%= dc_background_for_result(:start) %>
|
8
|
+
<%= dc_header_for_result %>
|
9
|
+
|
10
|
+
<% for document in @records %>
|
11
|
+
<%= dc_row_for_result(document) %>
|
12
|
+
<%= dc_actions_for_result(document) %>
|
13
|
+
<%= dc_columns_for_result(document) %>
|
14
|
+
</div>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<% if @record_footer %>
|
18
|
+
<div class="dc-result-data footer">
|
19
|
+
<%= dc_actions_column_for_footer() %>
|
20
|
+
<%= dc_columns_for_result(@record_footer) %>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<%= dc_background_for_result(:end) %>
|
22
25
|
<% end %>
|
23
26
|
<%= dc_filter_popup() %>
|
24
27
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
<%= dc_head_for_form %>
|
2
2
|
<%= dc_table_title dc_edit_title() %>
|
3
3
|
|
4
|
-
<%= form_tag( @parms, method: :put, id: '
|
4
|
+
<%= form_tag( @parms, method: :put, id: params['form_name'] || params['table'],
|
5
|
+
class: 'cmsform', multipart: @form['form']['multipart'] ) do %>
|
5
6
|
<%= render partial: 'form' %>
|
6
7
|
<% end %>
|
7
8
|
|
@@ -1,6 +1,7 @@
|
|
1
|
-
<%= dc_table_title dc_new_title
|
1
|
+
<%= dc_table_title dc_new_title %>
|
2
2
|
|
3
|
-
<%= form_tag(
|
3
|
+
<%= form_tag(@parms, method: :post, id: params['form_name'] || params['table'],
|
4
|
+
class: 'cmsform', multipart: @form['form']['multipart']) do %>
|
4
5
|
<%= render partial: 'form' %>
|
5
6
|
<% end %>
|
6
7
|
|
@@ -1,8 +1,17 @@
|
|
1
|
-
<%= javascript_include_tag "cms" %>
|
2
1
|
|
3
|
-
<div class="dc-help">
|
2
|
+
<div class="dc-help"><a id="help-top"></a>
|
4
3
|
<h1><%= t('drgcms.dc_help.help') %>: <%= dc_form_title %></h1>
|
4
|
+
<div class="help-buttons">
|
5
|
+
<% if params[:type] == 'form' %>
|
6
|
+
<button onclick="location.href='#fields'; return false;"><%= t('drgcms.dc_help.fields_button') %></button>
|
7
|
+
<% end %>
|
8
|
+
<% if @commnets %>
|
9
|
+
<button onclick="location.href='#comments'; return false;"><%= t('drgcms.dc_help.comments_button') %></button>
|
10
|
+
<% end %>
|
11
|
+
</div>
|
5
12
|
|
6
|
-
<div class="help-fields"><%= dc_help_fields if params[:type] == 'form' %></div>
|
7
13
|
<div class="help-body"><%= dc_help_body if @help %></div>
|
14
|
+
<div class="help-fields"><%= dc_help_fields if params[:type] == 'form' %></div>
|
15
|
+
|
16
|
+
<div class="help-top" onclick="location.href='#help-top'; return false;"><%= fa_icon('arrow-up') %></div>
|
8
17
|
</div>
|
@@ -3,15 +3,13 @@
|
|
3
3
|
<head>
|
4
4
|
<title><%= @page_title %></title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7
|
+
|
6
8
|
<%= stylesheet_link_tag "cms", media: 'all' %>
|
7
|
-
<% if false %> not require in cms mode
|
8
|
-
<style type="text/css" media="all"><%= "#{@site.css if @site}#{@design.css if @design}\n#{@page.css if @page}".html_safe %></style>
|
9
|
-
<%= @site.header.html_safe if @site %>
|
10
|
-
<% end %>
|
11
9
|
<%= javascript_include_tag "cms" %>
|
12
10
|
<%= csrf_meta_tags %>
|
13
11
|
</head>
|
14
|
-
<body>
|
12
|
+
<body id="body-cms">
|
15
13
|
|
16
14
|
<%= yield %>
|
17
15
|
|