drg_cms 0.6.1.0 → 0.6.1.1.1
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 +10 -3
- data/app/assets/stylesheets/drg_cms/drg_cms.css +29 -15
- data/app/assets/stylesheets/drg_cms/select-multiple.css +1 -1
- data/app/controllers/dc_application_controller.rb +1 -1
- data/app/controls/dc_report.rb +7 -9
- data/app/helpers/cms_common_helper.rb +1 -2
- data/app/helpers/cms_edit_helper.rb +1 -1
- data/app/helpers/cms_helper.rb +3 -3
- data/app/helpers/cms_index_helper.rb +14 -10
- data/app/helpers/dc_application_helper.rb +35 -36
- data/app/models/drgcms_form_fields/text_autocomplete.rb +3 -1
- data/app/renderers/dc_poll_renderer.rb +16 -20
- data/app/views/dc_common/_help.html.erb +12 -3
- data/config/locales/drgcms_en.yml +2 -0
- data/config/locales/drgcms_sl.yml +2 -0
- data/lib/drg_cms/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a424c5a9f1d427b775dfb3a6a7bfa8ea0624c47fb2f4381c0fd19120a2c8c678
|
4
|
+
data.tar.gz: 6f0918c0365fbed1ff81e31bcd55be432ae8c02520f3811b18087941913957f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 149a134733c8190f6b29003493f664e16fa2efad6608fb04a8bb607b9e00cd11a1752ec3b860d57af76789868667de12597b2023391879ad683ace066f71c1ec
|
7
|
+
data.tar.gz: 104ba8f48a7ad665da2f8ea99d833e04c94db4dc89a6d6ccecfe313ee5a082d7800691a31b805fb5cd35450e7350750ed68c073ef3e2bbafc971cfc8ff1180f2
|
@@ -832,9 +832,16 @@ $(document).ready( function() {
|
|
832
832
|
* work on all field types.
|
833
833
|
*******************************************************************/
|
834
834
|
$('.record_filter_field_icon').on('click', function(e) {
|
835
|
-
|
836
|
-
|
837
|
-
|
835
|
+
let field = $('#_record__filter_field');
|
836
|
+
let url = $(this).parents('span').attr("data-url");
|
837
|
+
let value = null;
|
838
|
+
|
839
|
+
if (field.is(':checkbox')) {
|
840
|
+
value = field.is(':checked'); }
|
841
|
+
else {
|
842
|
+
value = field.val();
|
843
|
+
}
|
844
|
+
url = url + "&filter_value=" + value;
|
838
845
|
location.href = url;
|
839
846
|
});
|
840
847
|
|
@@ -188,7 +188,7 @@ a.dc-animate:hover { color: #000; background: transparent;}
|
|
188
188
|
.dc-image-preview img { max-height: 2rem; padding-left: 0.5rem;}
|
189
189
|
.dc-image-preview img:hover { cursor: zoom-in;}
|
190
190
|
|
191
|
-
.text-with-select { width:
|
191
|
+
.text-with-select { width: 20px; }
|
192
192
|
|
193
193
|
.no-borders {
|
194
194
|
padding: 0;
|
@@ -795,6 +795,9 @@ border-top: 1px solid #ddd;
|
|
795
795
|
display: flex;
|
796
796
|
}
|
797
797
|
.dc-head .dc-column {
|
798
|
+
white-space: nowrap;
|
799
|
+
overflow: hidden;
|
800
|
+
margin-right: 2px;
|
798
801
|
}
|
799
802
|
.dc-head .text {
|
800
803
|
font-weight: normal;
|
@@ -1217,6 +1220,16 @@ background-color: transparent;
|
|
1217
1220
|
min-width: 50%;
|
1218
1221
|
}
|
1219
1222
|
|
1223
|
+
#popup .dc-help .help-top {
|
1224
|
+
position: absolute;
|
1225
|
+
bottom: 1rem;
|
1226
|
+
right: 1rem;
|
1227
|
+
padding: 2px 4px;
|
1228
|
+
border: 1px dotted #ccc;
|
1229
|
+
border-radius: 4px;
|
1230
|
+
background: rgba(76,154,255,0.2);
|
1231
|
+
}
|
1232
|
+
|
1220
1233
|
#popup .dc-help {
|
1221
1234
|
background: #fff;
|
1222
1235
|
padding: 8px;
|
@@ -1228,8 +1241,10 @@ background-color: transparent;
|
|
1228
1241
|
#popup .dc-help h1 {
|
1229
1242
|
background: darkred;
|
1230
1243
|
color: #fff;
|
1231
|
-
font-weight:
|
1232
|
-
padding: 4px
|
1244
|
+
font-weight: 600;
|
1245
|
+
padding: 4px;
|
1246
|
+
font-size: 1.2em;
|
1247
|
+
border-radius: 2px;
|
1233
1248
|
}
|
1234
1249
|
|
1235
1250
|
#popup .dc-help h2 {
|
@@ -1246,21 +1261,12 @@ background-color: transparent;
|
|
1246
1261
|
padding: 4px
|
1247
1262
|
}
|
1248
1263
|
|
1249
|
-
/*
|
1250
|
-
#popup .dc-help .help-tab {
|
1251
|
-
display: table;
|
1252
|
-
padding-top: 4px;
|
1253
|
-
border-bottom: 3px solid #000;
|
1254
|
-
margin: 8px 0;
|
1255
|
-
font-weight: 600;
|
1256
|
-
}
|
1257
|
-
*/
|
1258
1264
|
#popup .dc-help .help-tab {
|
1259
1265
|
display: table;
|
1260
1266
|
margin: 8px 0 0;
|
1261
1267
|
padding: 3px 12px;
|
1262
1268
|
color: #fff;
|
1263
|
-
background: #
|
1269
|
+
background: #555;
|
1264
1270
|
border-radius: 5px 5px 0 0;
|
1265
1271
|
font-weight: 600;
|
1266
1272
|
}
|
@@ -1268,10 +1274,15 @@ background-color: transparent;
|
|
1268
1274
|
#popup .dc-help .help-tab-help {
|
1269
1275
|
font-weight: 600;
|
1270
1276
|
color: #fff;
|
1271
|
-
background: #
|
1277
|
+
background: #777;
|
1272
1278
|
padding: 3px 12px;
|
1273
1279
|
}
|
1274
1280
|
|
1281
|
+
#popup .dc-help .help-fields {
|
1282
|
+
margin-top: 1rem;
|
1283
|
+
border-top: 1px solid #222;
|
1284
|
+
}
|
1285
|
+
|
1275
1286
|
#popup .dc-help .help-field {
|
1276
1287
|
display: flex;
|
1277
1288
|
background-color: #eee;
|
@@ -1291,11 +1302,14 @@ background-color: transparent;
|
|
1291
1302
|
}
|
1292
1303
|
|
1293
1304
|
#popup .dc-help .help-body {
|
1294
|
-
margin-top: 8px;
|
1295
1305
|
border-top: 1px solid #222;
|
1296
1306
|
padding-top: 8px;
|
1297
1307
|
}
|
1298
1308
|
|
1309
|
+
#popup .dc-help .help-buttons {
|
1310
|
+
padding: 4px 0;
|
1311
|
+
}
|
1312
|
+
|
1299
1313
|
#popup .dc-help .dc-link {
|
1300
1314
|
display: inline-flex;
|
1301
1315
|
}
|
@@ -28,7 +28,7 @@
|
|
28
28
|
-ms-transition: border linear 0.2s, box-shadow linear 0.2s;
|
29
29
|
-o-transition: border linear 0.2s, box-shadow linear 0.2s;
|
30
30
|
transition: border linear 0.2s, box-shadow linear 0.2s;
|
31
|
-
border: 1px
|
31
|
+
border: 1px dashed #888;
|
32
32
|
-webkit-border-radius: 1px;
|
33
33
|
-moz-border-radius: 1px;
|
34
34
|
border-radius: 1px;
|
@@ -528,7 +528,7 @@ end
|
|
528
528
|
#
|
529
529
|
####################################################################
|
530
530
|
def dc_check_model(document, crash=false)
|
531
|
-
DrgCms.
|
531
|
+
DrgCms.model_check(document, crash)
|
532
532
|
end
|
533
533
|
|
534
534
|
######################################################################
|
data/app/controls/dc_report.rb
CHANGED
@@ -153,8 +153,9 @@ def export_to_excel(report_id)
|
|
153
153
|
excel[n, i] = value
|
154
154
|
end
|
155
155
|
end
|
156
|
-
|
157
|
-
|
156
|
+
file_name = "#{report_id}-#{Time.now.to_i}.xls"
|
157
|
+
workbook.write Rails.root.join('public', 'tmp', file_name)
|
158
|
+
dc_render_ajax(operation: :window, value: "/tmp/#{file_name}")
|
158
159
|
end
|
159
160
|
|
160
161
|
############################################################################
|
@@ -200,15 +201,12 @@ end
|
|
200
201
|
# @param [Object] txt : Text or object. Result of to_s method of the object is
|
201
202
|
# @param [Hash] opts
|
202
203
|
###############################################################################
|
203
|
-
def pdf_text(txt, opts={})
|
204
|
-
box_opts =
|
204
|
+
def pdf_text(txt, opts = {})
|
205
|
+
box_opts = opts.dup
|
205
206
|
ypos = @pdf.cursor
|
206
207
|
xpos = opts.delete(:atx) || 0
|
207
|
-
box_opts
|
208
|
-
box_opts
|
209
|
-
box_opts.merge!(width: opts[:width]) if opts[:width]
|
210
|
-
box_opts.merge!(align: opts[:align]) if opts[:align]
|
211
|
-
box_opts.merge!(inline_format: opts[:inline_format]) if opts[:inline_format]
|
208
|
+
box_opts[:single_line] ||= true
|
209
|
+
box_opts[:at] ||= [xpos, ypos]
|
212
210
|
|
213
211
|
@pdf.text_box(txt.to_s, box_opts)
|
214
212
|
end
|
@@ -356,13 +356,12 @@ end
|
|
356
356
|
def dc_help_fields
|
357
357
|
return '' if @form['form'].nil?
|
358
358
|
|
359
|
-
html = '<
|
359
|
+
html = '<a id="fields"></a>'
|
360
360
|
if @form['form']['tabs']
|
361
361
|
@form['form']['tabs'].each { |tab| html << dc_help_for_tab(tab) }
|
362
362
|
else
|
363
363
|
html << dc_help_for_tab(@form['form']['fields'])
|
364
364
|
end
|
365
|
-
html << '</div>'
|
366
365
|
html.html_safe
|
367
366
|
end
|
368
367
|
|
data/app/helpers/cms_helper.rb
CHANGED
@@ -256,10 +256,10 @@ def dc_link_ajax_window_submit_action(yaml, record=nil, action_active=true)
|
|
256
256
|
end
|
257
257
|
|
258
258
|
############################################################################
|
259
|
-
#
|
259
|
+
# Log exception to rails log. Usefull for debugging eval errors.
|
260
260
|
############################################################################
|
261
|
-
def dc_log_exception(exception)
|
262
|
-
log = exception ? "\n
|
261
|
+
def dc_log_exception(exception, where = '')
|
262
|
+
log = exception ? "\n*** Error:#{where + ':'} #{exception.message}\n#{exception.backtrace.first.inspect}\n" : ''
|
263
263
|
log << "DRG Form processing line: #{session[:form_processing]}\n"
|
264
264
|
|
265
265
|
logger.error log
|
@@ -291,7 +291,7 @@ def dc_actions_for_result(document)
|
|
291
291
|
when yaml['type'] == 'delete' then
|
292
292
|
parms['action'] = 'destroy'
|
293
293
|
parms['id'] = document.id
|
294
|
-
parms['return_to'] = request.url
|
294
|
+
#parms['return_to'] = request.url
|
295
295
|
dc_link_to( nil, 'remove lg', parms, data: { confirm: t('drgcms.confirm_delete') }, method: :delete )
|
296
296
|
# undocumented so far
|
297
297
|
when yaml['type'] == 'edit_embedded'
|
@@ -438,7 +438,7 @@ def dc_columns_for_result(document)
|
|
438
438
|
"??? #{v['name']}"
|
439
439
|
end
|
440
440
|
rescue Exception => e
|
441
|
-
dc_log_exception(e)
|
441
|
+
dc_log_exception(e, 'dc_columns_for_result')
|
442
442
|
value = '!!!Error'
|
443
443
|
end
|
444
444
|
html << '<div class="spacer"></div>'
|
@@ -540,15 +540,19 @@ def dc_style_or_class(selector, yaml, value, record)
|
|
540
540
|
# alias record and value so both names can be used in eval
|
541
541
|
field, document = value, record
|
542
542
|
html = selector ? "#{selector}=\"" : ''
|
543
|
-
|
544
|
-
yaml
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
543
|
+
begin
|
544
|
+
html << if yaml.class == String
|
545
|
+
yaml
|
546
|
+
# direct evaluate expression
|
547
|
+
elsif yaml['eval']
|
548
|
+
eval(yaml['eval'])
|
549
|
+
elsif yaml['method']
|
550
|
+
dc_process_eval(yaml['method'], record)
|
551
|
+
end
|
552
|
+
rescue Exception => e
|
553
|
+
dc_log_exception(e, 'dc_style_or_class')
|
550
554
|
end
|
551
|
-
html << '"' if selector
|
555
|
+
html << '"' if selector
|
552
556
|
html
|
553
557
|
end
|
554
558
|
|
@@ -596,10 +596,11 @@ end
|
|
596
596
|
# Returns:
|
597
597
|
# String. HTML code required for manipulation of currently processed document.
|
598
598
|
########################################################################
|
599
|
-
def dc_page_edit_menu(opts
|
599
|
+
def dc_page_edit_menu(opts = @opts)
|
600
600
|
opts[:edit_mode] ||= _origin.session[:edit_mode]
|
601
601
|
return '' if opts[:edit_mode] < 2
|
602
|
-
|
602
|
+
|
603
|
+
# save some data to cookie. This can not go to session.
|
603
604
|
page = opts[:page] || @page
|
604
605
|
table = _origin.site.page_class.underscore
|
605
606
|
kukis = { "#{table}.dc_design_id" => page.dc_design_id,
|
@@ -616,11 +617,9 @@ def dc_page_edit_menu(opts=@opts)
|
|
616
617
|
opts[:editparams].merge!( :id => page.id, :table => _origin.site.page_class.underscore, form_name: opts[:form_name], edit_only: 'body' )
|
617
618
|
html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_content') )
|
618
619
|
|
619
|
-
# opts[:editparams][:edit_only] = nil
|
620
620
|
opts[:editparams].merge!( edit_only: nil, 'icon' => 'pencil' )
|
621
621
|
html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_advanced') )
|
622
622
|
|
623
|
-
# opts[:editparams][:action] = 'new'
|
624
623
|
opts[:editparams].merge!( action: 'new', 'icon' => 'plus' )
|
625
624
|
html << dc_link_for_edit1( opts[:editparams], t('drgcms.edit_new_page') )
|
626
625
|
|
@@ -642,8 +641,7 @@ end
|
|
642
641
|
# type: text_with_select
|
643
642
|
# eval: 'dc_page_class.all_pages_for_site(@parent.dc_get_site)'
|
644
643
|
########################################################################
|
645
|
-
def dc_page_class
|
646
|
-
# dc_get_site.page_class.classify.constantize
|
644
|
+
def dc_page_class
|
647
645
|
dc_get_site.page_klass
|
648
646
|
end
|
649
647
|
|
@@ -658,7 +656,7 @@ end
|
|
658
656
|
# type: tree_view
|
659
657
|
# eval: 'dc_menu_class.all_menus_for_site(@parent.dc_get_site)'
|
660
658
|
########################################################################
|
661
|
-
def dc_menu_class
|
659
|
+
def dc_menu_class
|
662
660
|
dc_get_site.menu_class.classify.constantize
|
663
661
|
end
|
664
662
|
|
@@ -672,23 +670,20 @@ end
|
|
672
670
|
# Returns:
|
673
671
|
# DCSite. Site document.
|
674
672
|
####################################################################
|
675
|
-
def dc_get_site
|
673
|
+
def dc_get_site
|
676
674
|
return @site if @site # already cached
|
677
|
-
|
675
|
+
|
678
676
|
req = _origin.request.url # different when called from renderer
|
679
677
|
uri = URI.parse(req)
|
680
678
|
@site = DcSite.find_by(name: uri.host)
|
681
|
-
# Site can be aliased
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
# Development environment. Check if site with name test exists and use
|
686
|
-
# alias_for field as pointer to real site name.
|
687
|
-
if @site.nil? and ENV["RAILS_ENV"] != 'production'
|
679
|
+
# Site can be aliased
|
680
|
+
@site = DcSite.find_by(name: @site.alias_for) if @site&.alias_for.present?
|
681
|
+
# Development. If site with name test exists use alias_for field as pointer to real site data
|
682
|
+
if @site.nil? && ENV["RAILS_ENV"] != 'production'
|
688
683
|
@site = DcSite.find_by(name: 'test')
|
689
684
|
@site = DcSite.find_by(name: @site.alias_for) if @site
|
690
685
|
end
|
691
|
-
@site = nil if @site
|
686
|
+
@site = nil if @site && !@site.active # site is disabled
|
692
687
|
@site
|
693
688
|
end
|
694
689
|
|
@@ -704,9 +699,9 @@ end
|
|
704
699
|
# html:
|
705
700
|
# include_blank: true
|
706
701
|
############################################################################
|
707
|
-
def dc_choices4_site_policies
|
702
|
+
def dc_choices4_site_policies
|
708
703
|
site = dc_get_site()
|
709
|
-
site.dc_policies.
|
704
|
+
site.dc_policies.where(active: true).order_by(name: 1).map { |policy| [ policy.name, policy.id] }
|
710
705
|
end
|
711
706
|
|
712
707
|
############################################################################
|
@@ -727,7 +722,7 @@ def dc_choices4_all_collections
|
|
727
722
|
DrgCms.paths(:forms).reverse.each do |path|
|
728
723
|
filename = "#{path}/cms_menu.yml"
|
729
724
|
next unless File.exist?(filename)
|
730
|
-
|
725
|
+
|
731
726
|
menu = YAML.load_file(filename) rescue nil # load menu
|
732
727
|
next if menu.nil? or !menu['menu'] # not menu or error
|
733
728
|
menu['menu'].each do |section|
|
@@ -754,8 +749,8 @@ def forms_merge(hash1, hash2) #:nodoc:
|
|
754
749
|
end
|
755
750
|
target[key] = hash2[key] == '/' ? nil : hash2[key]
|
756
751
|
end
|
757
|
-
# delete keys with nil value
|
758
|
-
target.delete_if{ |k,v| v.nil? }
|
752
|
+
# delete keys with nil value
|
753
|
+
target.delete_if{ |k, v| v.nil? }
|
759
754
|
end
|
760
755
|
|
761
756
|
##########################################################################
|
@@ -770,7 +765,7 @@ def dc_choices4_cmsmenu()
|
|
770
765
|
next if menu.nil? or !menu['menu'] # not menu or error
|
771
766
|
menus = forms_merge(menu['menu'], menus) # ignore top level part
|
772
767
|
end
|
773
|
-
|
768
|
+
|
774
769
|
html = '<ul>'
|
775
770
|
menus.to_a.sort.each do |index, menu| # sort menus, result is array of sorted hashes
|
776
771
|
next unless menu['caption']
|
@@ -835,9 +830,11 @@ def dc_choices4(model, name, id='_id', options = {})
|
|
835
830
|
sites << nil if param == :with_nil
|
836
831
|
qry = qry.in(dc_site_id: sites) if sites
|
837
832
|
end
|
838
|
-
qry
|
839
|
-
|
840
|
-
choices.
|
833
|
+
qry = qry.and(active: true) if model.method_defined?(:active)
|
834
|
+
qry = qry.order_by(name => 1).collation(locale: I18n.locale.to_s)
|
835
|
+
#choices = qry.inject([]) {|result,e| result << [ e[name], e[id] ]}
|
836
|
+
#choices.sort_alphabetical_by(&:first) # use UTF-8 sort
|
837
|
+
qry.map { |e| [e[name], e[id]] }
|
841
838
|
end
|
842
839
|
|
843
840
|
############################################################################
|
@@ -898,35 +895,35 @@ end
|
|
898
895
|
############################################################################
|
899
896
|
def dc_user_can_view(ctrl, policy_id)
|
900
897
|
policy_id = policy_id.policy_id if policy_id and policy_id.respond_to?(:policy_id)
|
901
|
-
# Eventualy object without policy_id will be checked. This is to prevent error
|
898
|
+
# Eventualy object without policy_id will be checked. This is to prevent error
|
902
899
|
policy_id = nil unless policy_id.class == BSON::ObjectId
|
903
|
-
|
900
|
+
|
904
901
|
site = ctrl.site
|
905
902
|
policies = if site.inherit_policy.blank?
|
906
903
|
site.dc_policies
|
907
904
|
else
|
908
905
|
Mongoid::QueryCache.cache { DcSite.find(site.inherit_policy) }.dc_policies
|
909
906
|
end
|
910
|
-
# permission defined by default policy
|
907
|
+
# permission defined by default policy
|
911
908
|
default_policy = Mongoid::QueryCache.cache { policies.find_by(is_default: true) }
|
912
909
|
return false, 'Default access policy not found for the site!' unless default_policy
|
913
|
-
|
910
|
+
|
914
911
|
permissions = {}
|
915
912
|
default_policy.dc_policy_rules.to_a.each { |v| permissions[v.dc_policy_role_id] = v.permission }
|
916
|
-
# update permissions with defined policy
|
913
|
+
# update permissions with defined policy
|
917
914
|
part_policy = nil
|
918
915
|
if policy_id
|
919
916
|
part_policy = Mongoid::QueryCache.cache { policies.find(policy_id) }
|
920
917
|
return false, 'Access policy not found for part!' unless part_policy
|
921
918
|
part_policy.dc_policy_rules.to_a.each { |v| permissions[v.dc_policy_role_id] = v.permission }
|
922
919
|
end
|
923
|
-
# apply guest role if no roles defined
|
920
|
+
# apply guest role if no roles defined
|
924
921
|
if ctrl.session[:user_roles].nil?
|
925
922
|
role = Mongoid::QueryCache.cache { DcPolicyRole.find_by(system_name: 'guest', active: true) }
|
926
923
|
return false, 'System guest role not defined!' unless role
|
927
924
|
ctrl.session[:user_roles] = [role.id]
|
928
925
|
end
|
929
|
-
# Check if user has any role that allows him to view part
|
926
|
+
# Check if user has any role that allows him to view part
|
930
927
|
can_view, msg = false,''
|
931
928
|
ctrl.session[:user_roles].each do |role|
|
932
929
|
next unless permissions[role] # role not yet defined. Will die in next line.
|
@@ -962,10 +959,10 @@ def dc_user_has_role( role, user=nil, roles=nil )
|
|
962
959
|
roles = _origin.session[:user_roles] if roles.nil?
|
963
960
|
user = _origin.session[:user_id] if user.nil?
|
964
961
|
return false if user.nil? or roles.nil?
|
965
|
-
|
962
|
+
|
966
963
|
role = DcPolicyRole.get_role(role)
|
967
964
|
return false if role.nil?
|
968
|
-
# role is included in roles array
|
965
|
+
# role is included in roles array
|
969
966
|
roles.include?(role._id)
|
970
967
|
end
|
971
968
|
|
@@ -1004,6 +1001,7 @@ end
|
|
1004
1001
|
############################################################################
|
1005
1002
|
def dc_limit_string(string, size)
|
1006
1003
|
return string if string.size < size
|
1004
|
+
|
1007
1005
|
string = string[0,size]
|
1008
1006
|
string.chop! until (string[-1,1] == ' ' or string == '')
|
1009
1007
|
string << '...'
|
@@ -1031,10 +1029,11 @@ def dc_big_table(key)
|
|
1031
1029
|
bt = DcBigTable.find_by(key: key, site: dc_get_site._id, active: true)
|
1032
1030
|
bt = DcBigTable.find_by(key: key, site: nil, active: true) if bt.nil?
|
1033
1031
|
return ret if bt.nil?
|
1034
|
-
|
1032
|
+
|
1035
1033
|
locale = I18n.locale.to_s
|
1036
1034
|
bt.dc_big_table_values.each do |v| # iterate each value
|
1037
1035
|
next unless v.active
|
1036
|
+
|
1038
1037
|
desc = ''
|
1039
1038
|
v.dc_big_table_locales.each do |l| # iterate each locale
|
1040
1039
|
if l.locale == locale
|
@@ -131,11 +131,13 @@ $(document).ready(function() {
|
|
131
131
|
}
|
132
132
|
});
|
133
133
|
},
|
134
|
+
|
134
135
|
change: function (event, ui) {
|
135
136
|
#{not_id_code}
|
137
|
+
if (ui.item == null) return;
|
136
138
|
$("##{record}_#{@yaml['name']}").val(ui.item.id);
|
137
|
-
|
138
139
|
},
|
140
|
+
|
139
141
|
minLength: 2
|
140
142
|
});
|
141
143
|
});
|
@@ -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
|
@@ -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>
|
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.6.1.
|
4
|
+
version: 0.6.1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damjan Rems
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|