drg_cms 0.6.1.6 → 0.6.1.9
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 +203 -24
- data/app/assets/javascripts/drg_cms/drg_cms.js +183 -95
- data/app/assets/stylesheets/drg_cms/drg_cms.css +542 -509
- data/app/assets/stylesheets/drg_cms_application.css +1 -1
- data/app/assets/stylesheets/drg_cms_cms.css +1 -4
- data/app/controllers/cmsedit_controller.rb +25 -103
- data/app/controllers/dc_common_controller.rb +6 -5
- data/app/controls/browse_models_control.rb +15 -26
- data/app/controls/cmsedit_control.rb +125 -0
- data/app/controls/dc_help_control.rb +1 -1
- data/app/controls/dc_page_control.rb +0 -1
- data/app/controls/dc_poll_result_control.rb +1 -1
- data/app/controls/dc_report.rb +1 -1
- data/app/forms/all_options.yml +1 -1
- data/app/forms/cms_menu.yml +24 -24
- data/app/forms/dc_browse_fields.yml +13 -9
- data/app/forms/dc_poll_result_export.yml +1 -1
- data/app/helpers/cms_common_helper.rb +7 -5
- data/app/helpers/cms_edit_helper.rb +52 -45
- data/app/helpers/cms_helper.rb +76 -40
- data/app/helpers/cms_index_helper.rb +180 -139
- data/app/helpers/dc_application_helper.rb +37 -43
- data/app/models/concerns/dc_page_concern.rb +1 -1
- data/app/models/dc_filter.rb +30 -22
- data/app/models/dc_json_ld.rb +1 -1
- data/app/models/dc_part.rb +19 -9
- data/app/models/drgcms_form_fields/drgcms_field.rb +10 -4
- data/app/models/drgcms_form_fields/link_to.rb +1 -1
- data/app/models/drgcms_form_fields/multitext_autocomplete.rb +5 -5
- data/app/models/drgcms_form_fields/readonly.rb +3 -0
- data/app/models/drgcms_form_fields/select.rb +8 -7
- data/app/models/drgcms_form_fields/text_autocomplete.rb +2 -2
- data/app/renderers/dc_part_renderer.rb +1 -1
- data/app/renderers/dc_poll_renderer.rb +1 -1
- data/app/views/cmsedit/_edit_stuff.html.erb +12 -12
- data/app/views/cmsedit/login.html.erb +1 -1
- data/app/views/dc_common/paste_clipboard.html.erb +1 -1
- data/config/locales/drgcms_en.yml +2 -1
- data/config/locales/drgcms_sl.yml +2 -1
- data/config/locales/kaminari.yml +1 -1
- data/drg_cms.gemspec +1 -1
- data/lib/drg_cms/version.rb +1 -1
- data/lib/drg_cms.rb +4 -4
- metadata +4 -5
- data/app/views/cmsedit/__remove_edit_stuff.js.erb +0 -6
- data/app/views/cmsedit/__show.html.erb +0 -21
@@ -99,7 +99,7 @@ end
|
|
99
99
|
########################################################################
|
100
100
|
# Filter action.
|
101
101
|
########################################################################
|
102
|
-
def
|
102
|
+
def _filter
|
103
103
|
index
|
104
104
|
end
|
105
105
|
|
@@ -128,12 +128,10 @@ end
|
|
128
128
|
# Login can be called directly with url http://site.com/cmsedit/login
|
129
129
|
########################################################################
|
130
130
|
def login
|
131
|
-
if
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
render action: 'login', layout: 'cms'
|
136
|
-
end
|
131
|
+
return set_test_site if params[:id] == 'test'
|
132
|
+
|
133
|
+
session[:edit_mode] = 0 if !params[:ok]
|
134
|
+
render action: 'login', layout: 'cms'
|
137
135
|
end
|
138
136
|
|
139
137
|
########################################################################
|
@@ -259,12 +257,9 @@ def duplicate_document(source)
|
|
259
257
|
end
|
260
258
|
|
261
259
|
########################################################################
|
262
|
-
# Create (or duplicate) action.
|
260
|
+
# Create (or duplicate) action.
|
263
261
|
########################################################################
|
264
262
|
def create
|
265
|
-
# abusing create for turning filter on
|
266
|
-
return index if params[:filter].to_s == 'on'
|
267
|
-
|
268
263
|
# not authorized
|
269
264
|
unless dc_user_can(DcPermission::CAN_CREATE)
|
270
265
|
flash[:error] = t('drgcms.not_authorized')
|
@@ -439,7 +434,7 @@ def run
|
|
439
434
|
control_name, method_name = params[:control].split('.')
|
440
435
|
if method_name.nil?
|
441
436
|
method_name = control_name
|
442
|
-
control_name = params
|
437
|
+
control_name = CmsHelper.table_param(params)
|
443
438
|
end
|
444
439
|
# extend with control methods
|
445
440
|
extend_with_control_module(control_name)
|
@@ -476,7 +471,7 @@ def can_process_run
|
|
476
471
|
response = send(:dc_can_process)
|
477
472
|
return response unless response.class == Array
|
478
473
|
else
|
479
|
-
response = [DcPermission::CAN_VIEW, params
|
474
|
+
response = [DcPermission::CAN_VIEW, CmsHelper.table_param(params) || 'dc_memory']
|
480
475
|
end
|
481
476
|
dc_user_can *response
|
482
477
|
end
|
@@ -569,19 +564,19 @@ end
|
|
569
564
|
# Read DRG form into @form object. Subroutine of check_authorization.
|
570
565
|
########################################################################
|
571
566
|
def read_drg_form
|
572
|
-
table_name = decamelize_type(params
|
573
|
-
@tables = table_name.split(';').inject([]) { |r,v| r << [(v.classify.constantize rescue nil), v] }
|
567
|
+
table_name = decamelize_type(CmsHelper.table_param(params).strip)
|
568
|
+
@tables = table_name.split(';').inject([]) { |r, v| r << [(v.classify.constantize rescue nil), v] }
|
574
569
|
|
575
570
|
# split ids passed when embedded document
|
576
571
|
ids = params[:ids].to_s.strip.downcase
|
577
572
|
@ids = ids.split(';').inject([]) { |r,v| r << v }
|
578
573
|
|
579
574
|
# form_name defaults to last table specified
|
580
|
-
form_name = params
|
575
|
+
form_name = CmsHelper.form_param(params) || @tables.last[1]
|
581
576
|
@form_js = ''
|
582
577
|
|
583
578
|
# dynamically generated form
|
584
|
-
@form = if params
|
579
|
+
@form = if CmsHelper.form_param(params) == 'method'
|
585
580
|
dc_eval_class_method(params[:form_method], params)
|
586
581
|
else
|
587
582
|
form_file_name = dc_find_form_file(form_name)
|
@@ -621,7 +616,7 @@ end
|
|
621
616
|
############################################################################
|
622
617
|
def extend_with_control_module(control_name = @form['controls'] || @form['control'])
|
623
618
|
# May include embedded forms so ; => _
|
624
|
-
control_name ||= params
|
619
|
+
control_name ||= CmsHelper.table_param(params).gsub(';','_')
|
625
620
|
control_name += '_control' unless control_name.match(/control$|report$/i)
|
626
621
|
# p '************', control_name
|
627
622
|
controls = load_controls_module(control_name)
|
@@ -642,9 +637,10 @@ end
|
|
642
637
|
# load DRG form.
|
643
638
|
############################################################################
|
644
639
|
def check_authorization
|
645
|
-
params[:table] ||= params[:
|
640
|
+
params[:table] ||= params[:t] || CmsHelper.form_param(params)
|
646
641
|
# Only show menu
|
647
642
|
return login if params[:id].in?(%w(login logout test))
|
643
|
+
|
648
644
|
table = params[:table].to_s.strip.downcase
|
649
645
|
set_default_guest_user_role if session[:user_roles].nil?
|
650
646
|
# request shouldn't pass
|
@@ -872,23 +868,12 @@ end
|
|
872
868
|
########################################################################
|
873
869
|
# Will check and set sorting options for current result set. Subroutine of index method.
|
874
870
|
########################################################################
|
875
|
-
def check_sort_options
|
871
|
+
def check_sort_options #:nodoc:
|
876
872
|
table_name = @tables.first[1]
|
877
|
-
|
878
|
-
sort, direction = old_sort.split(' ')
|
873
|
+
return if session[table_name][:sort].nil? || @records.class != Mongoid::Criteria
|
879
874
|
|
880
|
-
|
881
|
-
|
882
|
-
if params['sort'] == sort
|
883
|
-
direction = (direction == '1') ? '-1' : '1'
|
884
|
-
end
|
885
|
-
direction ||= '1'
|
886
|
-
sort = params[:sort]
|
887
|
-
session[table_name][:sort] = "#{params['sort']} #{direction}"
|
888
|
-
session[table_name][:page] = 1
|
889
|
-
end
|
890
|
-
@records.sort( sort => direction.to_i ) if session[table_name][:sort] && @records.class == Mongoid::Criteria
|
891
|
-
params['sort'] = nil # otherwise there is problem with other links
|
875
|
+
sort, direction = session[table_name][:sort].split(' ')
|
876
|
+
@records = @records.order_by( sort => direction.to_i )
|
892
877
|
end
|
893
878
|
|
894
879
|
########################################################################
|
@@ -914,82 +899,20 @@ def user_sort_options(model) #:nodoc:
|
|
914
899
|
{ field.to_sym => direction.to_i }
|
915
900
|
end
|
916
901
|
|
917
|
-
########################################################################
|
918
|
-
# Will set session[table_name][:filter] and save last filter settings to session.
|
919
|
-
# subroutine of check_filter_options.
|
920
|
-
########################################################################
|
921
|
-
def set_session_filter(table_name)
|
922
|
-
# models that can not be filtered (for now)
|
923
|
-
return if %w(dc_temp dc_memory).include?(params[:table])
|
924
|
-
# clear filter
|
925
|
-
if params[:filter] == 'off'
|
926
|
-
session[table_name][:filter] = nil
|
927
|
-
return
|
928
|
-
end
|
929
|
-
# field_name should exist on set filter condition
|
930
|
-
return if params[:filter_oper] && params[:filter_field].blank?
|
931
|
-
|
932
|
-
filter_value = if params[:filter_value].nil?
|
933
|
-
#NIL indicates that no filtering is needed
|
934
|
-
'#NIL'
|
935
|
-
else
|
936
|
-
if params[:filter_value].class == String and params[:filter_value][0] == '@'
|
937
|
-
# Internal value. Remove leading @ and evaluate expression
|
938
|
-
expression = DcInternals.get(params[:filter_value])
|
939
|
-
eval(expression) rescue nil
|
940
|
-
else
|
941
|
-
# No filter when empty
|
942
|
-
params[:filter_value] == '' ? '#NIL' : params[:filter_value]
|
943
|
-
end
|
944
|
-
end
|
945
|
-
# if filter field parameter is omitted then just set filter value
|
946
|
-
session[table_name][:filter] =
|
947
|
-
if params[:filter_field].nil?
|
948
|
-
saved = YAML.load(session[table_name][:filter])
|
949
|
-
saved['value'] = filter_value
|
950
|
-
saved.to_yaml
|
951
|
-
else
|
952
|
-
# as field defined. Split name and alternative input field
|
953
|
-
field = if params[:filter_field].match(' as ')
|
954
|
-
params[:filter_input] = params[:filter_field].split(' as ').last.strip
|
955
|
-
params[:filter_field].split(' as ').first.strip
|
956
|
-
else
|
957
|
-
params[:filter_field]
|
958
|
-
end
|
959
|
-
|
960
|
-
{'field' => field,
|
961
|
-
'operation' => params[:filter_oper],
|
962
|
-
'value' => filter_value,
|
963
|
-
'input' => params[:filter_input],
|
964
|
-
'table' => table_name }.to_yaml
|
965
|
-
end
|
966
|
-
# must be. Otherwise kaminari includes parames on paging links
|
967
|
-
params[:filter] = nil
|
968
|
-
params[:filter_id] = nil
|
969
|
-
params[:filter_oper] = nil
|
970
|
-
params[:filter_input] = nil
|
971
|
-
params[:filter_field] = nil
|
972
|
-
end
|
973
|
-
|
974
902
|
########################################################################
|
975
903
|
# Will check and set current filter options for result set. Subroutine of index method.
|
976
904
|
########################################################################
|
977
|
-
def check_filter_options
|
978
|
-
table_name =
|
979
|
-
model =
|
905
|
+
def check_filter_options #:nodoc:
|
906
|
+
table_name = CmsHelper.table_param(params).strip.split(';').first.underscore
|
907
|
+
model = table_name.classify.constantize
|
980
908
|
session[table_name] ||= {}
|
981
909
|
# page is set
|
982
910
|
session[table_name][:page] = params[:page] if params[:page]
|
983
|
-
# new filter is applied
|
984
|
-
if params[:filter]
|
985
|
-
set_session_filter(table_name)
|
986
|
-
session[table_name][:page] = 1
|
987
|
-
end
|
988
911
|
# if data model has field dc_site_id ensure that only documents which belong to the site are selected.
|
989
912
|
site_id = dc_get_site._id if dc_get_site
|
990
913
|
|
991
914
|
# don't filter site if no dc_site_id field or user is ADMIN
|
992
|
-
site_id = nil if !model.method_defined?('dc_site_id')
|
915
|
+
site_id = nil if !model.method_defined?('dc_site_id') || dc_user_can(DcPermission::CAN_ADMIN)
|
993
916
|
site_id = nil if session[table_name][:filter].to_s.match('dc_site_id')
|
994
917
|
|
995
918
|
if @records = DcFilter.get_filter(session[table_name][:filter])
|
@@ -999,7 +922,7 @@ def check_filter_options() #:nodoc:
|
|
999
922
|
end
|
1000
923
|
process_select_and_deny_fields
|
1001
924
|
# pagination if required
|
1002
|
-
per_page = (@form['result_set']['per_page'] ||
|
925
|
+
per_page = (@form['result_set']['per_page'] || 25).to_i
|
1003
926
|
@records = @records.page(session[table_name][:page]).per(per_page) if per_page > 0
|
1004
927
|
end
|
1005
928
|
|
@@ -1035,7 +958,7 @@ def process_collections #:nodoc
|
|
1035
958
|
process_select_and_deny_fields
|
1036
959
|
# pagination but only if not already set
|
1037
960
|
unless (@form['table'] == 'dc_memory' || @records.options[:limit])
|
1038
|
-
per_page = (@form['result_set']['per_page'] ||
|
961
|
+
per_page = (@form['result_set']['per_page'] || 25).to_i
|
1039
962
|
@records = @records.page(params[:page]).per(per_page) if per_page > 0
|
1040
963
|
end
|
1041
964
|
elsif form_filter != 'dc_filter'
|
@@ -1079,5 +1002,4 @@ def process_in_memory #:nodoc
|
|
1079
1002
|
false
|
1080
1003
|
end
|
1081
1004
|
|
1082
|
-
|
1083
1005
|
end
|
@@ -217,8 +217,9 @@ def copy_clipboard
|
|
217
217
|
format.json { dc_render_ajax(operation: 'window', url: request.url ) }
|
218
218
|
|
219
219
|
format.html do
|
220
|
-
|
221
|
-
|
220
|
+
table = CmsHelper.table_param(params)
|
221
|
+
doc = dc_find_document(table, params[:id], params[:ids])
|
222
|
+
text = "<br><br>[#{table},#{params[:id]},#{params[:ids]}]<br>"
|
222
223
|
render plain: text + doc.as_document.to_json
|
223
224
|
end
|
224
225
|
end
|
@@ -266,7 +267,7 @@ end
|
|
266
267
|
# document.
|
267
268
|
########################################################################
|
268
269
|
def add_json_ld_schema
|
269
|
-
edited_document = DcJsonLd.find_document_by_ids(params
|
270
|
+
edited_document = DcJsonLd.find_document_by_ids(CmsHelper.table_param(params), params[:ids])
|
270
271
|
yaml = YAML.load_file( dc_find_form_file('json_ld_schema') )
|
271
272
|
schema_data = yaml[params[:schema]]
|
272
273
|
# Existing document
|
@@ -282,11 +283,11 @@ end
|
|
282
283
|
# Will provide help data
|
283
284
|
########################################################################
|
284
285
|
def help
|
285
|
-
form_name = params
|
286
|
+
form_name = CmsHelper.form_param(params) || CmsHelper.table_param(params)
|
286
287
|
@form = form_name ? YAML.load_file(dc_find_form_file(form_name)) : {}
|
287
288
|
return render json: {} if @form.nil?
|
288
289
|
|
289
|
-
help_file_name = @form['help'] || @form['extend'] ||
|
290
|
+
help_file_name = @form['help'] || @form['extend'] || form_name
|
290
291
|
help_file_name = find_help_file(help_file_name)
|
291
292
|
@help = YAML.load_file(help_file_name) if help_file_name
|
292
293
|
# no auto generated help on index action
|
@@ -1,4 +1,3 @@
|
|
1
|
-
#encoding: utf-8
|
2
1
|
#--
|
3
2
|
# Copyright (c) 2014+ Damjan Rems
|
4
3
|
#
|
@@ -26,31 +25,19 @@
|
|
26
25
|
#
|
27
26
|
######################################################################
|
28
27
|
module BrowseModelsControl
|
29
|
-
include DcApplicationHelper
|
30
|
-
|
31
|
-
#########################################################################
|
32
|
-
# Determine model class from filename.
|
33
|
-
#########################################################################
|
34
|
-
def determine_model(path)
|
35
|
-
path =~ /(.*)\/(.*).rb/
|
36
|
-
begin
|
37
|
-
$2.camelize.constantize
|
38
|
-
$2
|
39
|
-
rescue Exception # it happends
|
40
|
-
nil
|
41
|
-
end
|
42
|
-
end
|
43
28
|
|
44
29
|
#########################################################################
|
45
30
|
# Return array of all models found in application.
|
46
31
|
#########################################################################
|
47
|
-
def all_collections
|
32
|
+
def all_collections
|
48
33
|
collections = []
|
49
34
|
DrgCms.paths(:forms).each do |path|
|
50
35
|
models_dir = File.expand_path("../models", path)
|
51
|
-
Dir["#{models_dir}/*.rb"].each do |model_file|
|
52
|
-
|
53
|
-
|
36
|
+
Dir["#{models_dir}/*.rb"].each do |model_file|
|
37
|
+
model_file =~ /(.*)\/(.*).rb/
|
38
|
+
# check if model exists
|
39
|
+
collection = $2.camelize.constantize.new rescue nil
|
40
|
+
collections << collection.class.to_s.underscore if collection&.respond_to?(:_id)
|
54
41
|
end
|
55
42
|
end
|
56
43
|
collections.sort
|
@@ -59,10 +46,10 @@ end
|
|
59
46
|
######################################################################
|
60
47
|
# List all collections
|
61
48
|
######################################################################
|
62
|
-
def collections
|
49
|
+
def collections
|
63
50
|
@records = []
|
64
51
|
all_collections.each do |collection|
|
65
|
-
@records << {'id' => collection, 'description' => t("helpers.label.#{collection}.tabletitle") }
|
52
|
+
@records << DcMemory.new({'id' => collection, 'description' => t("helpers.label.#{collection}.tabletitle") })
|
66
53
|
end
|
67
54
|
@records
|
68
55
|
end
|
@@ -70,7 +57,7 @@ end
|
|
70
57
|
######################################################################
|
71
58
|
# List field definition for single model
|
72
59
|
######################################################################
|
73
|
-
def all_fields
|
60
|
+
def all_fields
|
74
61
|
@records = []
|
75
62
|
model = params[:id].classify.constantize
|
76
63
|
document = model.new
|
@@ -80,12 +67,13 @@ def all_fields()
|
|
80
67
|
description = I18n.t("helpers.label.#{params[:id]}.#{attribute_name}") if description.match('missing:')
|
81
68
|
description = attribute_name if description.match('missing:')
|
82
69
|
|
83
|
-
@records << {
|
70
|
+
@records << DcMemory.new({id: attribute_name,
|
71
|
+
'collection' => params[:id],
|
84
72
|
'field' => attribute_name,
|
85
73
|
'type' => options[:type],
|
86
74
|
'description' => description,
|
87
75
|
'_default' => options[:default]
|
88
|
-
}
|
76
|
+
})
|
89
77
|
end
|
90
78
|
# embedded documents
|
91
79
|
document.embedded_relations.each do |a_embedded|
|
@@ -94,11 +82,12 @@ def all_fields()
|
|
94
82
|
description = I18n.t("helpers.label.#{params[:id]}.#{embedded.key}") if description.match('missing:')
|
95
83
|
description = embedded.key if description.match('missing:')
|
96
84
|
|
97
|
-
@records << {
|
85
|
+
@records << DcMemory.new({ id: embedded.key,
|
86
|
+
'collection' => params[:id],
|
98
87
|
'field' => embedded.key,
|
99
88
|
'type' => 'Embedded:' + embedded.class_name,
|
100
89
|
'description' => description
|
101
|
-
}
|
90
|
+
})
|
102
91
|
end
|
103
92
|
|
104
93
|
@records
|
@@ -0,0 +1,125 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2022+ Damjan Rems
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
|
24
|
+
######################################################################
|
25
|
+
# Common controls for cms controller
|
26
|
+
######################################################################
|
27
|
+
module CmseditControl
|
28
|
+
|
29
|
+
######################################################################
|
30
|
+
# Clear current form filter
|
31
|
+
######################################################################
|
32
|
+
def filter_off
|
33
|
+
table_name = CmsHelper.table_param(params).strip.split(';').first.underscore
|
34
|
+
session[table_name][:filter] = nil
|
35
|
+
session[table_name][:page] = 1
|
36
|
+
url = url_for( controller: 'cmsedit', t: table_name, f: CmsHelper.form_param(params))
|
37
|
+
|
38
|
+
render json: { url: url }
|
39
|
+
end
|
40
|
+
|
41
|
+
######################################################################
|
42
|
+
# Set current form filter
|
43
|
+
######################################################################
|
44
|
+
def filter_on
|
45
|
+
table_name = CmsHelper.table_param(params).strip.split(';').first.underscore
|
46
|
+
session[table_name][:page] = 1
|
47
|
+
set_session_filter(table_name)
|
48
|
+
url = url_for( controller: 'cmsedit', t: table_name, f: CmsHelper.form_param(params))
|
49
|
+
|
50
|
+
render json: { url: url }
|
51
|
+
end
|
52
|
+
|
53
|
+
########################################################################
|
54
|
+
# Will check and set sorting options for current result set. Subroutine of index method.
|
55
|
+
########################################################################
|
56
|
+
def sort
|
57
|
+
return if params['sort'].nil?
|
58
|
+
|
59
|
+
table_name = CmsHelper.table_param(params).strip.split(';').first.underscore
|
60
|
+
old_sort = session[table_name][:sort].to_s
|
61
|
+
sort, direction = old_sort.split(' ')
|
62
|
+
# reverse sort if same selected
|
63
|
+
direction = (direction == '1') ? '-1' : '1' if params['sort'] == sort
|
64
|
+
direction ||= '1'
|
65
|
+
session[table_name][:sort] = "#{params[:sort]} #{direction}"
|
66
|
+
session[table_name][:page] = 1
|
67
|
+
params['sort'] = nil # otherwise there is problem with other links
|
68
|
+
url = url_for( controller: 'cmsedit', t: table_name, f: CmsHelper.form_param(params))
|
69
|
+
|
70
|
+
render json: { url: url }
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
########################################################################
|
75
|
+
# Will set session[table_name][:filter] and save last filter settings to session.
|
76
|
+
# subroutine of check_filter_options.
|
77
|
+
########################################################################
|
78
|
+
def set_session_filter(table_name)
|
79
|
+
# models that can not be filtered (for now)
|
80
|
+
return if %w(dc_temp dc_memory).include?(CmsHelper.table_param(params))
|
81
|
+
# field_name should exist on set filter condition
|
82
|
+
return if params[:filter_oper] && params[:filter_field].blank?
|
83
|
+
|
84
|
+
filter_value = if params[:filter_value].nil?
|
85
|
+
#NIL indicates that no filtering is needed
|
86
|
+
'#NIL'
|
87
|
+
else
|
88
|
+
if params[:filter_value].class == String && params[:filter_value][0] == '@'
|
89
|
+
# Internal value. Remove leading @ and evaluate expression
|
90
|
+
expression = DcInternals.get(params[:filter_value])
|
91
|
+
eval(expression) rescue '#NIL'
|
92
|
+
else
|
93
|
+
# No filter when empty
|
94
|
+
params[:filter_value] == '' ? '#NIL' : params[:filter_value]
|
95
|
+
end
|
96
|
+
end
|
97
|
+
# if filter field parameter is omitted then just set filter value
|
98
|
+
session[table_name][:filter] =
|
99
|
+
if params[:filter_field].nil?
|
100
|
+
saved = YAML.load(session[table_name][:filter])
|
101
|
+
saved['value'] = filter_value
|
102
|
+
saved.to_yaml
|
103
|
+
else
|
104
|
+
# as field defined. Split name and alternative input field
|
105
|
+
field = if params[:filter_field].match(' as ')
|
106
|
+
params[:filter_input] = params[:filter_field].split(' as ').last.strip
|
107
|
+
params[:filter_field].split(' as ').first.strip
|
108
|
+
else
|
109
|
+
params[:filter_field]
|
110
|
+
end
|
111
|
+
|
112
|
+
{'field' => field,
|
113
|
+
'operation' => params[:filter_oper],
|
114
|
+
'value' => filter_value,
|
115
|
+
'input' => params[:filter_input],
|
116
|
+
'table' => table_name }.to_yaml
|
117
|
+
end
|
118
|
+
# must be. Otherwise kaminari includes parames on paging links
|
119
|
+
params[:filter_id] = nil
|
120
|
+
params[:filter_oper] = nil
|
121
|
+
params[:filter_input] = nil
|
122
|
+
params[:filter_field] = nil
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
@@ -49,7 +49,7 @@ def project_refresh
|
|
49
49
|
updated_at: File.mtime(file_name)).save
|
50
50
|
end
|
51
51
|
end
|
52
|
-
render json: { url: url_for(controller:
|
52
|
+
render json: { url: url_for(controller: 'cmsedit', table: :dc_temp, form_name: :dc_help_1) }
|
53
53
|
end
|
54
54
|
|
55
55
|
######################################################################
|
@@ -38,7 +38,7 @@ end
|
|
38
38
|
# Filter action called. Update url to reflect filter conditions and reload form.
|
39
39
|
######################################################################
|
40
40
|
def do_filter
|
41
|
-
url = url_for(controller:
|
41
|
+
url = url_for(controller: 'cmsedit', action: :index, table: :dc_poll_result,
|
42
42
|
'record[dc_poll_id]' => params[:record][:dc_poll_id],
|
43
43
|
'record[start_date]' => params[:record][:start_date],
|
44
44
|
'record[end_date]' => params[:record][:end_date]
|
data/app/controls/dc_report.rb
CHANGED
@@ -39,7 +39,7 @@ end
|
|
39
39
|
# If exists, set report section as form, so it can be used to display result.
|
40
40
|
######################################################################
|
41
41
|
def dc_update_form
|
42
|
-
return unless @form && @form['report'] && params
|
42
|
+
return unless @form && @form['report'] && CmsHelper.table_param(params) == 'dc_temp'
|
43
43
|
|
44
44
|
@form = @form['report']
|
45
45
|
end
|