widget_list 1.3.7 → 2.0.1

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.
Files changed (35) hide show
  1. checksums.yaml +5 -13
  2. data/README.md +143 -696
  3. data/app/views/widget_list/administration/_button_row.html.erb +2 -2
  4. data/app/views/widget_list/administration/_field_row.html.erb +2 -2
  5. data/app/views/widget_list/administration/_output.html.erb +89 -55
  6. data/checkin_gem.sh +10 -10
  7. data/docs/legacy-readme.md +757 -0
  8. data/docs/screenshots/admin1.jpg +0 -0
  9. data/docs/screenshots/admin2.jpg +0 -0
  10. data/docs/screenshots/admin3.jpg +0 -0
  11. data/docs/screenshots/admin4.jpg +0 -0
  12. data/docs/screenshots/admin5.png +0 -0
  13. data/docs/screenshots/admin6.png +0 -0
  14. data/docs/screenshots/filtered.png +0 -0
  15. data/docs/screenshots/main.png +0 -0
  16. data/docs/screenshots/ransack1.png +0 -0
  17. data/docs/screenshots/ransack2.png +0 -0
  18. data/docs/screenshots/ransack3.png +0 -0
  19. data/docs/screenshots/search.png +0 -0
  20. data/docs/screenshots/theme_blue_sky_basin.png +0 -0
  21. data/docs/widget-list-demo-thumbnail.png +0 -0
  22. data/lib/extensions/action_controller_base.rb +22 -29
  23. data/lib/widget_list/engine.rb +1 -4
  24. data/lib/widget_list/railtie.rb +10 -33
  25. data/lib/widget_list/request_context.rb +5 -0
  26. data/lib/widget_list/sequel.rb +17 -41
  27. data/lib/widget_list/utils.rb +7 -7
  28. data/lib/widget_list/version.rb +1 -1
  29. data/lib/widget_list/widgets.rb +1 -2
  30. data/lib/widget_list.rb +267 -269
  31. data/publish_gem.sh +14 -35
  32. data/vendor/assets/stylesheets/{widget_list.css → widget_list.css.erb} +21 -21
  33. data/vendor/assets/stylesheets/{widgets.css → widgets.css.erb} +9 -9
  34. data/widget_list.gemspec +8 -10
  35. metadata +58 -32
data/lib/widget_list.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'ransack'
2
+ require 'widget_list/request_context'
2
3
  require 'widget_list/version'
3
4
  require 'widget_list/hash'
4
5
  require 'widget_list/string'
@@ -17,7 +18,7 @@ module WidgetList
17
18
  # WidgetList Administration/Setup
18
19
  #
19
20
  def self.go!()
20
- if $_REQUEST.key?('iframe')
21
+ if WidgetList::RequestContext.request.key?('iframe')
21
22
  eval(WidgetList::Administration.new.translate_config_to_code())
22
23
  return @output
23
24
  else
@@ -30,7 +31,7 @@ module WidgetList
30
31
  def show_interface()
31
32
  config_file = Rails.root.join("config", "widget-list-administration.json")
32
33
  config_file_all = Rails.root.join("config", "widget-list-administration-all.json")
33
- if config_file.file? && !$_REQUEST.key?('ajax') && !$_REQUEST.key?('name')
34
+ if config_file.file? && !WidgetList::RequestContext.request.key?('ajax') && !WidgetList::RequestContext.request.key?('name')
34
35
  File.delete(Rails.root.join("config", "widget-list-administration.json"))
35
36
  end
36
37
 
@@ -42,10 +43,12 @@ module WidgetList
42
43
 
43
44
 
44
45
  #Loop models
45
- models = Dir[ Rails.root.join("app", "models").to_s + '**/*'].reject {|fn| File.directory?(fn) }
46
+ models = Dir[Rails.root.join('app', 'models', '**', '*.rb').to_s].reject do |path|
47
+ File.basename(path) == 'application_record.rb'
48
+ end
46
49
  if !models.empty?
47
50
  model_options = '<option value="">Select a Model</option>' + models.collect { |model|
48
- model_name = model.split('/').last.to_s.camelize.gsub(/.rb/,'')
51
+ model_name = File.basename(model, '.rb').camelize
49
52
  "<option value='#{model_name}' #{((@isEditing && page_config['view'] == model_name) ? 'selected' : '')}>#{model_name}</option>"
50
53
  }.sort.uniq.join('')
51
54
  else
@@ -65,7 +68,7 @@ module WidgetList
65
68
  # INIT PROMPT
66
69
  #
67
70
 
68
- if config_file_all.file? && !$_REQUEST.key?('restore')
71
+ if config_file_all.file? && !WidgetList::RequestContext.request.key?('restore')
69
72
  @fill['<!--BUTTON_CSS-->'] = 'style="display:none"'
70
73
  @fill['<!--START_CSS-->'] = 'style="display:none"'
71
74
  options = ''
@@ -99,7 +102,7 @@ module WidgetList
99
102
  #
100
103
  # BASE
101
104
  #
102
- @fill['<!--POST_URL-->'] = $_SERVER['SCRIPT_NAME'] + $_SERVER['PATH_INFO']
105
+ @fill['<!--POST_URL-->'] = WidgetList::RequestContext.server['SCRIPT_NAME'] + WidgetList::RequestContext.server['PATH_INFO']
103
106
  @fill['<!--BUTTONS-->'] = WidgetList::Widgets::widget_button('Step One - Start ->', {'id' => 'start' , 'onclick' => "ShowStart();" , 'innerClass' => "primary" } ) +
104
107
  WidgetList::Widgets::widget_button('Step Two - Fields ->', {'id' => 'fields' , 'onclick' => "ShowFields();" , 'innerClass' => "primary disabled" } ) +
105
108
  WidgetList::Widgets::widget_button('Step Three - Rows ->', {'id' => 'rows' , 'onclick' => "ShowRows();" , 'innerClass' => "primary disabled" } ) +
@@ -112,13 +115,16 @@ module WidgetList
112
115
  # START
113
116
  #
114
117
  @fill['<!--TITLE-->'] = 'Stub Out A New WidgetList Implementation'
115
- @fill['<!--CONTROLLER_VALUE-->'] = (!@isEditing) ? $_REQUEST['controller'] : page_config['desiredController']
116
- @fill['<!--ACTION_VALUE-->'] = (!@isEditing) ? $_REQUEST['action'] : page_config['desiredAction']
118
+ @fill['<!--CONTROLLER_VALUE-->'] = (!@isEditing) ? WidgetList::RequestContext.request['controller'] : page_config['desiredController']
119
+ @fill['<!--ACTION_VALUE-->'] = (!@isEditing) ? WidgetList::RequestContext.request['action'] : page_config['desiredAction']
117
120
  @fill['<!--NAME_VALUE-->'] = (!@isEditing) ? config_id : page_config['name']
118
121
  @fill['<!--VIEW_OPTIONS-->'] = model_options
119
122
  @fill['<!--TITLE_VALUE-->'] = (!@isEditing) ? '' : page_config['title']
120
123
  @fill['<!--DESC_VALUE-->'] = (!@isEditing) ? '' : page_config['listDescription']
121
- @fill['<!--PRIMARY_CHECKED-->'] = (!@isEditing) ? 'checked' : (page_config['primaryDatabase'] == "1") ? 'checked' : ''
124
+ WidgetList::List.load_widget_list_yml
125
+ primary_is_active_record = !$widget_list_conf[:primary].to_s.include?(':/')
126
+ @fill['<!--PRIMARY_CHECKED-->'] = (!@isEditing) ? (primary_is_active_record ? 'checked' : '') : (page_config['primaryDatabase'] == "1") ? 'checked' : ''
127
+ @fill['<!--AUTH_TOKEN-->'] = ERB::Util.html_escape(WidgetList::RequestContext.csrf_token.to_s)
122
128
 
123
129
  #
124
130
  # FIELD LEVEL
@@ -187,7 +193,8 @@ module WidgetList
187
193
  @fieldFill['<!--DESC-->'] = 'Desc'
188
194
  @fieldFill['<!--DISABLED-->'] = 'disabled'
189
195
  @fieldFill['<!--TR_STYLE-->'] = ''
190
- @fill['<!--HIDDEN_FIELD_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row') )
196
+ @fieldFill['<!--ONBLUR1-->'] = ''
197
+ @fill['<!--HIDDEN_FIELD_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
191
198
  @fill['<!--ADD_HIDDEN_FIELD_BUTTON-->'] = WidgetList::Widgets::widget_button('Add Hidden Field', {'onclick' => "AddHiddenField();", 'innerClass' => "success" } )
192
199
  @fill['<!--ALL_HIDDEN_FIELDS-->'] = (!@isEditing) ? '' : page_json['fields_hidden']
193
200
 
@@ -202,7 +209,8 @@ module WidgetList
202
209
  @fieldFill['<!--DESC-->'] = 'Database Function'
203
210
  @fieldFill['<!--DISABLED-->'] = ''
204
211
  @fieldFill['<!--TR_STYLE-->'] = ''
205
- @fill['<!--FIELD_FUNCTION_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row') )
212
+ @fieldFill['<!--ONBLUR1-->'] = ''
213
+ @fill['<!--FIELD_FUNCTION_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
206
214
  @fill['<!--ADD_FIELD_FUNCTION_BUTTON-->'] = WidgetList::Widgets::widget_button('Add Function', {'onclick' => "AddFieldFunction();", 'innerClass' => "success" } )
207
215
  @fill['<!--ALL_FIELD_FUNCTIONS-->'] = (!@isEditing) ? '' : page_json['fields_function']
208
216
 
@@ -260,7 +268,7 @@ module WidgetList
260
268
  @fieldFill['<!--COLOR_HELP-->'] = ':column_to_show should either be the column or possibly a formatted column like CONCAT or COUNT'
261
269
  @fieldFill['<!--SUBJECT-->'] = 'drill_downs'
262
270
 
263
- @fill['<!--THE_DRILL_DOWN_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row') )
271
+ @fill['<!--THE_DRILL_DOWN_TEMPLATE-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row', :locals => { :middle_column_select => true }) )
264
272
  @fill['<!--ADD_DRILL_DOWN_BUTTON-->'] = WidgetList::Widgets::widget_button('Add New Drill Down', {'onclick' => "AddDrillDown();", 'innerClass' => "success" } )
265
273
  @fill['<!--ALL_DRILL_DOWNS-->'] = page_json['drill_downs']
266
274
 
@@ -277,7 +285,7 @@ module WidgetList
277
285
 
278
286
  @fieldFill = {}
279
287
  @fieldFill['<!--REMOVE_FIELD_BUTTON-->'] = remove_field_button()
280
- @fieldFill['<!--FIELD_VALUE-->'] = 'column_name'
288
+ @fieldFill['<!--FIELD_VALUE-->'] = ''
281
289
  @fieldFill['<!--FIELD_DESC-->'] = 'User Desc'
282
290
  @fieldFill['<!--SUBJECT-->'] = 'group_by'
283
291
  @fieldFill['<!--FIELD-->'] = 'Field'
@@ -285,7 +293,7 @@ module WidgetList
285
293
  @fieldFill['<!--DISABLED-->'] = ''
286
294
  @fieldFill['<!--ONBLUR1-->'] = 'InvalidField(this)'
287
295
  @fieldFill['<!--TR_STYLE-->'] = ''
288
- @fill['<!--DEFAULT_GROUPING-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row') )
296
+ @fill['<!--DEFAULT_GROUPING-->'] = WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
289
297
  @fill['<!--ADD_GROUP_BY_BUTTON-->'] = WidgetList::Widgets::widget_button('Add New Group By', {'onclick' => "AddGroupBy();", 'innerClass' => "success" } )
290
298
  @fill['<!--GROUPING_ITEMS-->'] = (!@isEditing) ? '' : page_json['group_by']
291
299
 
@@ -370,7 +378,7 @@ module WidgetList
370
378
  end
371
379
 
372
380
  def escape_code(code)
373
- if $_REQUEST.key?('iframe')
381
+ if WidgetList::RequestContext.request.key?('iframe')
374
382
  #It is so weird, during output return, you need an extra slash to populate the code properly, but during rendering this is needed
375
383
  code.gsub(/'/,"\\\\'")
376
384
  else
@@ -414,6 +422,7 @@ module WidgetList
414
422
  list_parms['searchFieldsOut']#{add_pointer(field[1]['column_to_show'],9)} true"
415
423
 
416
424
  column_to_show = "'#{field[1]['column_to_show'].gsub(/_linked/,'')}'"
425
+ data_to_pass = "'#{field[1]['data_to_pass_from_view'].gsub(/_linked/,'')}'"
417
426
  if using_grouping
418
427
  if database_type == 'oracle'
419
428
  column_to_show = "groupByFilter == 'none' ? '#{escape_code field[1]['column_to_show'].gsub(/_linked/,'')}' : 'MAX(#{escape_code field[1]['column_to_show'].gsub(/_linked/,'')})'"
@@ -424,22 +433,17 @@ module WidgetList
424
433
  list_parms['fieldFunction']#{add_pointer(field[1]['column_to_show'],7)} WidgetList::List::build_drill_down(
425
434
  :list_id => list_parms['name'],
426
435
  :drill_down_name => '#{escape_code field[0]}',
427
- :data_to_pass_from_view => #{column_to_show},
436
+ :data_to_pass_from_view => #{data_to_pass},
428
437
  :column_to_show => #{column_to_show},
429
438
  :column_alias => '#{escape_code field[1]['column_to_show']}',
430
439
  :primary_database => #{page_config['primaryDatabase'] == '1' ? 'true' : 'false'}
431
440
  )"
432
- if $is_mongo
433
- code = "filterValue"
434
- else
435
- code = "#{page_config['view']}.sanitize(filterValue)"
436
- end
437
441
  case_statements += <<-EOD
438
442
 
439
443
  when '#{field[0]}'
440
- list_parms['filter'] << " #{field[1]['column_to_show'].gsub(/_linked/,'')} = ? "
441
- list_parms['bindVars'] << #{code}
442
- list_parms['listDescription'] = drillDownBackLink + ' Filtered by #{escape_code field[1]['column_to_show'].gsub(/_linked/,'').camelize} (' + filterValue + ')'
444
+ list_parms['filter'] << " #{field[1]['data_to_pass_from_view'].gsub(/_linked/,'')} = ? "
445
+ list_parms['bindVars'] << filterValue
446
+ list_parms['listDescription'] = drillDownBackLink + ' Filtered by #{escape_code field[1]['data_to_pass_from_view'].gsub(/_linked/,'').camelize} (' + filterValue + ')'
443
447
  EOD
444
448
  }
445
449
 
@@ -594,7 +598,7 @@ module WidgetList
594
598
 
595
599
  if page_config['useRansack'] == '1' && page_config['showSearch'] == '1' && $is_mongo == false
596
600
  view_code = "
597
- list_parms#{add_pointer('ransackSearch',-10)} #{page_config['view']}.search(#{($_REQUEST.key?('iframe')) ? '$_REQUEST' : 'params'}[:q])
601
+ list_parms#{add_pointer('ransackSearch',-10)} #{page_config['view']}.ransack(#{(WidgetList::RequestContext.request.key?('iframe')) ? 'WidgetList::RequestContext.request' : 'params'}[:q])
598
602
  list_parms#{add_pointer('view',-10)} list_parms['ransackSearch'].result
599
603
  "
600
604
  if page_config['ransackAdvancedForm'] == '1'
@@ -621,7 +625,7 @@ module WidgetList
621
625
 
622
626
  else
623
627
  view_code = "
624
- list_parms#{add_pointer('view',-10)} #{page_config['view']}
628
+ list_parms#{add_pointer('view',-10)} #{page_config['view']}.all
625
629
  "
626
630
  end
627
631
 
@@ -806,8 +810,6 @@ module WidgetList
806
810
  end
807
811
 
808
812
  <<-EOD
809
- begin
810
-
811
813
  #{variable_code}
812
814
  list_parms = WidgetList::List::init_config()
813
815
  list_parms['name'] = '#{escape_code page_config['name']}'
@@ -848,35 +850,14 @@ module WidgetList
848
850
  when 'html'
849
851
  @output = output
850
852
  when 'json'
851
- return render :inline => output
852
- when 'export'
853
- send_data(output, :filename => list_parms['name'] + '.csv')
854
- return
855
- end
856
-
857
- rescue Exception => e
858
-
859
- #
860
- # Rescue Errors
861
- #
862
- Rails.logger.info e.to_s + "\\n\\n" + $!.backtrace.join("\\n\\n")
863
-
864
- if Rails.env == 'development'
865
- list_parms['errors'] << '<br/><br/><strong style="color:maroon;">(Ruby Exception - Still attempted to render list with given config ' + list_parms.inspect + ') Exception ==> ' + e.to_s + "<br/><br/>Backtrace:<br/><br/>" + $!.backtrace.join("<br/><br/>") + "</strong>"
866
- end
867
-
868
- output_type, output = WidgetList::List.build_list(list_parms)
869
-
870
- case output_type
871
- when 'html'
872
- @output = output
873
- when 'json'
874
- return render :inline => output
853
+ if WidgetList::RequestContext.request.key?('iframe')
854
+ @output = output
855
+ else
856
+ render json: JSON.parse(output)
857
+ end
875
858
  when 'export'
876
- send_data(output, :filename => list_parms['name'] + '.csv')
877
- return
859
+ send_data output, filename: list_parms['name'] + '.csv', type: 'text/csv'
878
860
  end
879
- end
880
861
  EOD
881
862
  end
882
863
 
@@ -888,9 +869,9 @@ module WidgetList
888
869
  config_file = Rails.root.join("config", "widget-list-administration.json")
889
870
  config_file_all = Rails.root.join("config", "widget-list-administration-all.json")
890
871
 
891
- if config_file.file? && ($_REQUEST.key?('iframe') || $_REQUEST.key?('name'))
872
+ if config_file.file? && (WidgetList::RequestContext.request.key?('iframe') || WidgetList::RequestContext.request.key?('name'))
892
873
  configuration = JSON.parse(File.new(Rails.root.join("config", "widget-list-administration.json")).read)
893
- elsif $_REQUEST.key?('restore')
874
+ elsif WidgetList::RequestContext.request.key?('restore')
894
875
  configuration = JSON.parse(File.new(Rails.root.join("config", "widget-list-administration-all.json")).read)
895
876
  else
896
877
  configuration = {}
@@ -1039,9 +1020,9 @@ module WidgetList
1039
1020
 
1040
1021
  fields,fields_hidden,fields_function,buttons,footer_buttons,group_by,drill_downs,flags,misc = normalize_configs(page_config)
1041
1022
  else
1042
- controller = ($_REQUEST.key?('desiredController') ? $_REQUEST['desiredController'] : $_REQUEST['controller'] )
1023
+ controller = (WidgetList::RequestContext.request.key?('desiredController') ? WidgetList::RequestContext.request['desiredController'] : WidgetList::RequestContext.request['controller'] )
1043
1024
 
1044
- if $_REQUEST.key?('ajax')
1025
+ if WidgetList::RequestContext.request.key?('ajax')
1045
1026
  model = model_name.constantize
1046
1027
  model.columns.each { |field|
1047
1028
  fields[field.name] = field.name.gsub(/_/,' _').camelize
@@ -1059,9 +1040,8 @@ module WidgetList
1059
1040
  buttons['Delete']['url'] = '/' + controller + '/delete/id/'
1060
1041
  buttons['Edit']['url'] = '/' + controller + '/edit/id/'
1061
1042
  buttons['Edit']['class'] = 'info'
1062
- if $_REQUEST.key?('ajax')
1043
+ if WidgetList::RequestContext.request.key?('ajax')
1063
1044
  group_by[''] = 'All ' + model_name + 's'
1064
- group_by['field_name'] = 'This will group by field_name and show Count'
1065
1045
  buttons['Delete']['url'] = '/' + controller + '/delete/' + fields.keys.first + '/'
1066
1046
  buttons['Edit']['url'] = '/' + controller + '/edit/' + fields.keys.first + '/'
1067
1047
  end
@@ -1170,7 +1150,8 @@ module WidgetList
1170
1150
  @fieldFill['<!--FIELD-->'] = 'Field'
1171
1151
  @fieldFill['<!--DISABLED-->'] = 'disabled'
1172
1152
  @fieldFill['<!--TR_STYLE-->'] = ''
1173
- @response['fields_hidden'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row') )
1153
+ @fieldFill['<!--ONBLUR1-->'] = ''
1154
+ @response['fields_hidden'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
1174
1155
  }
1175
1156
 
1176
1157
  group_by.each { |field,description|
@@ -1185,7 +1166,7 @@ module WidgetList
1185
1166
  @fieldFill['<!--DISABLED-->'] = ''
1186
1167
  @fieldFill['<!--ONBLUR1-->'] = 'InvalidField(this)'
1187
1168
  @fieldFill['<!--TR_STYLE-->'] = ''
1188
- @response['group_by'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row') )
1169
+ @response['group_by'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
1189
1170
  }
1190
1171
 
1191
1172
  fields_function.each { |field,description|
@@ -1198,7 +1179,8 @@ module WidgetList
1198
1179
  @fieldFill['<!--FIELD-->'] = 'Field'
1199
1180
  @fieldFill['<!--DISABLED-->'] = ''
1200
1181
  @fieldFill['<!--TR_STYLE-->'] = ''
1201
- @response['fields_function'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row') )
1182
+ @fieldFill['<!--ONBLUR1-->'] = ''
1183
+ @response['fields_function'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/field_row', :locals => { :key_select => true }) )
1202
1184
  }
1203
1185
 
1204
1186
  buttons.each { |field|
@@ -1248,7 +1230,7 @@ module WidgetList
1248
1230
  @fieldFill['<!--COLOR_HELP-->'] = ':column_to_show should either be the column or possibly a formatted column like CONCAT or COUNT'
1249
1231
  @fieldFill['<!--SUBJECT-->'] = 'drill_downs'
1250
1232
 
1251
- @response['drill_downs'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row') )
1233
+ @response['drill_downs'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row', :locals => { :middle_column_select => true }) )
1252
1234
  }
1253
1235
 
1254
1236
  footer_buttons.each { |field|
@@ -1275,7 +1257,7 @@ module WidgetList
1275
1257
  @response['footer_buttons'] += WidgetList::Utils::fill(@fieldFill , ac.render_to_string(:partial => 'widget_list/administration/button_row') )
1276
1258
  }
1277
1259
 
1278
- if $_REQUEST.key?('ajax') || @isEditing
1260
+ if WidgetList::RequestContext.request.key?('ajax') || @isEditing
1279
1261
  @response['all_fields'] = all_fields
1280
1262
  @response['checked_fields'] = build_field_options(all_fields, page_config.key?('checkboxField') ? page_config['checkboxField'] : '')
1281
1263
  end
@@ -1289,13 +1271,13 @@ module WidgetList
1289
1271
 
1290
1272
  def config_id()
1291
1273
  config_id = ''
1292
- if $_REQUEST.key?('restore')
1293
- config_id = $_REQUEST['restore']
1274
+ if WidgetList::RequestContext.request.key?('restore')
1275
+ config_id = WidgetList::RequestContext.request['restore']
1294
1276
  else
1295
- config_id += $_REQUEST['controller'] if $_REQUEST.key?('controller')
1296
- config_id += $_REQUEST['action'] if $_REQUEST.key?('action')
1297
- config_id += '|' + $_REQUEST['desiredController'] if $_REQUEST.key?('desiredController')
1298
- config_id += '-' + $_REQUEST['desiredAction'] if $_REQUEST.key?('desiredAction')
1277
+ config_id += WidgetList::RequestContext.request['controller'] if WidgetList::RequestContext.request.key?('controller')
1278
+ config_id += WidgetList::RequestContext.request['action'] if WidgetList::RequestContext.request.key?('action')
1279
+ config_id += '|' + WidgetList::RequestContext.request['desiredController'] if WidgetList::RequestContext.request.key?('desiredController')
1280
+ config_id += '-' + WidgetList::RequestContext.request['desiredAction'] if WidgetList::RequestContext.request.key?('desiredAction')
1299
1281
  end
1300
1282
  return config_id
1301
1283
  end
@@ -1311,7 +1293,7 @@ module WidgetList
1311
1293
  else
1312
1294
  configuration = {}
1313
1295
  end
1314
- configuration[config_id] = $_REQUEST
1296
+ configuration[config_id] = WidgetList::RequestContext.request
1315
1297
  time = Time.new
1316
1298
  configuration[config_id]['savedOn'] = time.year.to_s + '-' + time.month.to_s.rjust(2, "0") + '-' + time.day.to_s.rjust(2, "0")
1317
1299
 
@@ -1319,14 +1301,14 @@ module WidgetList
1319
1301
  file.puts configuration.to_json
1320
1302
  end
1321
1303
 
1322
- if !$_REQUEST.key?('iframe') && !$_REQUEST.key?('ajax')
1304
+ if !WidgetList::RequestContext.request.key?('iframe') && !WidgetList::RequestContext.request.key?('ajax')
1323
1305
  config_file_all = Rails.root.join("config", "widget-list-administration-all.json")
1324
1306
  if config_file_all.file?
1325
1307
  configuration_all = JSON.parse(File.new(Rails.root.join("config", "widget-list-administration-all.json")).read)
1326
1308
  else
1327
1309
  configuration_all = {}
1328
1310
  end
1329
- configuration_all[config_id] = $_REQUEST
1311
+ configuration_all[config_id] = WidgetList::RequestContext.request
1330
1312
  configuration_all[config_id]['savedOn'] = time.year.to_s + '-' + time.month.to_s.rjust(2, "0") + '-' + time.day.to_s.rjust(2, "0")
1331
1313
 
1332
1314
  File.open(Rails.root.join("config", "widget-list-administration-all.json"), "w") do |file|
@@ -1336,10 +1318,10 @@ module WidgetList
1336
1318
 
1337
1319
 
1338
1320
  @fill = {}
1339
- unless $_REQUEST.key?('ajax')
1321
+ unless WidgetList::RequestContext.request.key?('ajax')
1340
1322
  @fill['<!--CODE-->'] = translate_config_to_code()
1341
1323
  end
1342
- return WidgetList::Utils::fill(@fill ,ac.render_to_string(:partial => 'widget_list/administration/output_save') ) unless $_REQUEST.key?('ajax')
1324
+ return WidgetList::Utils::fill(@fill ,ac.render_to_string(:partial => 'widget_list/administration/output_save') ) unless WidgetList::RequestContext.request.key?('ajax')
1343
1325
  return @fill.to_json
1344
1326
  end
1345
1327
  end
@@ -1366,6 +1348,7 @@ module WidgetList
1366
1348
 
1367
1349
  # @param [Hash] list
1368
1350
  def initialize(list={})
1351
+ WidgetList::RequestContext.used = true
1369
1352
 
1370
1353
  # Defaults for all configs
1371
1354
  # See https://github.com/davidrenne/widget_list/blob/master/README.md#feature-configurations
@@ -1498,7 +1481,7 @@ module WidgetList
1498
1481
  end
1499
1482
 
1500
1483
 
1501
- if $_REQUEST.key?('searchClear')
1484
+ if WidgetList::RequestContext.request.key?('searchClear')
1502
1485
  clear_search_session()
1503
1486
  end
1504
1487
 
@@ -1506,41 +1489,41 @@ module WidgetList
1506
1489
  @isJumpingList = false
1507
1490
 
1508
1491
  #Ajax ListJump
1509
- if ! $_REQUEST.empty?
1510
- if $_REQUEST.key?('LIST_FILTER_ALL') && !$_REQUEST['LIST_FILTER_ALL'].empty?
1511
- @items['LIST_FILTER_ALL'] = $_REQUEST['LIST_FILTER_ALL']
1492
+ if ! WidgetList::RequestContext.request.empty?
1493
+ if WidgetList::RequestContext.request.key?('LIST_FILTER_ALL') && !WidgetList::RequestContext.request['LIST_FILTER_ALL'].empty?
1494
+ @items['LIST_FILTER_ALL'] = WidgetList::RequestContext.request['LIST_FILTER_ALL']
1512
1495
  @isJumpingList = true
1513
1496
  end
1514
1497
 
1515
- if $_REQUEST.key?('LIST_COL_SORT') && !$_REQUEST['LIST_COL_SORT'].empty?
1516
- @items['LIST_COL_SORT'] = $_REQUEST['LIST_COL_SORT']
1498
+ if WidgetList::RequestContext.request.key?('LIST_COL_SORT') && !WidgetList::RequestContext.request['LIST_COL_SORT'].empty?
1499
+ @items['LIST_COL_SORT'] = WidgetList::RequestContext.request['LIST_COL_SORT']
1517
1500
  @isJumpingList = true
1518
1501
  end
1519
1502
 
1520
- if $_REQUEST.key?('LIST_COL_SORT_ORDER') && !$_REQUEST['LIST_COL_SORT_ORDER'].empty?
1521
- @items['LIST_COL_SORT_ORDER'] = $_REQUEST['LIST_COL_SORT_ORDER']
1503
+ if WidgetList::RequestContext.request.key?('LIST_COL_SORT_ORDER') && !WidgetList::RequestContext.request['LIST_COL_SORT_ORDER'].empty?
1504
+ @items['LIST_COL_SORT_ORDER'] = WidgetList::RequestContext.request['LIST_COL_SORT_ORDER']
1522
1505
  @isJumpingList = true
1523
1506
  end
1524
1507
 
1525
- if $_REQUEST.key?('LIST_SEQUENCE') && !$_REQUEST['LIST_SEQUENCE'].empty?
1526
- @items['LIST_SEQUENCE'] = $_REQUEST['LIST_SEQUENCE'].to_i
1508
+ if WidgetList::RequestContext.request.key?('LIST_SEQUENCE') && !WidgetList::RequestContext.request['LIST_SEQUENCE'].empty?
1509
+ @items['LIST_SEQUENCE'] = WidgetList::RequestContext.request['LIST_SEQUENCE'].to_i
1527
1510
  @isJumpingList = true
1528
1511
  end
1529
1512
 
1530
- if $_REQUEST.key?('ROW_LIMIT') && !$_REQUEST['ROW_LIMIT'].empty?
1531
- @items['ROW_LIMIT'] = $_REQUEST['ROW_LIMIT']
1513
+ if WidgetList::RequestContext.request.key?('ROW_LIMIT') && !WidgetList::RequestContext.request['ROW_LIMIT'].empty?
1514
+ @items['ROW_LIMIT'] = WidgetList::RequestContext.request['ROW_LIMIT']
1532
1515
  @isJumpingList = true
1533
1516
 
1534
1517
  if @items['showPagination']
1535
- $_SESSION['pageDisplayLimit'] = $_REQUEST['ROW_LIMIT']
1536
- $_SESSION.deep_merge!({'ROW_LIMIT' => { @items['name'] => $_REQUEST['ROW_LIMIT']} })
1518
+ WidgetList::RequestContext.session['pageDisplayLimit'] = WidgetList::RequestContext.request['ROW_LIMIT']
1519
+ WidgetList::RequestContext.session.deep_merge!({'ROW_LIMIT' => { @items['name'] => WidgetList::RequestContext.request['ROW_LIMIT']} })
1537
1520
  end
1538
1521
 
1539
1522
  end
1540
1523
 
1541
1524
  clear_sort_get_vars()
1542
1525
 
1543
- if $_REQUEST.key?('list_action') && $_REQUEST['list_action'] == 'ajax_widgetlist_checks' && @items['storeSessionChecks']
1526
+ if WidgetList::RequestContext.request.key?('list_action') && WidgetList::RequestContext.request['list_action'] == 'ajax_widgetlist_checks' && @items['storeSessionChecks']
1544
1527
  ajax_maintain_checks()
1545
1528
  end
1546
1529
 
@@ -1553,14 +1536,14 @@ module WidgetList
1553
1536
  clear_search_session(@items.key?('searchClearAll'))
1554
1537
  end
1555
1538
 
1556
- matchesCurrentList = $_REQUEST.key?('BUTTON_VALUE') && $_REQUEST['BUTTON_VALUE'] == @items['buttonVal']
1557
- isSearchRequest = $_REQUEST.key?('search_filter') && $_REQUEST['search_filter'] != 'undefined'
1539
+ matchesCurrentList = WidgetList::RequestContext.request.key?('BUTTON_VALUE') && WidgetList::RequestContext.request['BUTTON_VALUE'] == @items['buttonVal']
1540
+ isSearchRequest = WidgetList::RequestContext.request.key?('search_filter') && WidgetList::RequestContext.request['search_filter'] != 'undefined'
1558
1541
  templateCustomSearch = !@items['templateFilter'].empty? # if you define templateFilter WidgetList will not attempt to build a where clause with search
1559
1542
 
1560
1543
  #
1561
1544
  # Search restore
1562
1545
  #
1563
- if !isSearchRequest && !$_SESSION.empty? && $_SESSION.key?('SEARCH_FILTER') && $_SESSION['SEARCH_FILTER'].key?(@items['name']) && @items['searchSession']
1546
+ if !isSearchRequest && !WidgetList::RequestContext.session.empty? && WidgetList::RequestContext.session.key?('SEARCH_FILTER') && WidgetList::RequestContext.session['SEARCH_FILTER'].key?(@items['name']) && @items['searchSession']
1564
1547
  isSearchRestore = true
1565
1548
  end
1566
1549
 
@@ -1570,10 +1553,10 @@ module WidgetList
1570
1553
  get_view() if $is_mongo # call function to fill in @active_record_model
1571
1554
 
1572
1555
  if !isSearchRestore
1573
- $_SESSION.deep_merge!({'SEARCH_FILTER' => { @items['name'] => $_REQUEST['search_filter']} })
1574
- searchFilter = $_REQUEST['search_filter'].strip_or_self()
1556
+ WidgetList::RequestContext.session.deep_merge!({'SEARCH_FILTER' => { @items['name'] => WidgetList::RequestContext.request['search_filter']} })
1557
+ searchFilter = WidgetList::RequestContext.request['search_filter'].strip_or_self()
1575
1558
  else
1576
- searchFilter = $_SESSION['SEARCH_FILTER'][@items['name']]
1559
+ searchFilter = WidgetList::RequestContext.session['SEARCH_FILTER'][@items['name']]
1577
1560
  end
1578
1561
 
1579
1562
  if ! searchFilter.empty?
@@ -1794,7 +1777,7 @@ module WidgetList
1794
1777
  @templateFill['<!--DATA-->'] = '<tr><td colspan="50"><div id="noListResults">' + generate_error_output(e) + @items['noDataMessage'] + '</div></td></tr>'
1795
1778
  end
1796
1779
 
1797
- if !$_REQUEST.key?('BUTTON_VALUE')
1780
+ if !WidgetList::RequestContext.request.key?('BUTTON_VALUE')
1798
1781
 
1799
1782
  #Initialize page load/Session stuff whe list first loads
1800
1783
  #
@@ -1809,12 +1792,12 @@ module WidgetList
1809
1792
  #Set a list title if it exists
1810
1793
  #
1811
1794
 
1812
- if ! $_REQUEST.key?('BUTTON_VALUE') && !@items['title'].empty?
1795
+ if ! WidgetList::RequestContext.request.key?('BUTTON_VALUE') && !@items['title'].empty?
1813
1796
  @items['templateHeader'] = '
1814
1797
  <h1 style="font-size:' + get_header_px_value() + ';"><!--TITLE--></h1><div class="horizontal_rule"></div>
1815
1798
  <!--FILTER_HEADER-->
1816
1799
  '
1817
- elsif !$_REQUEST.key?('BUTTON_VALUE')
1800
+ elsif !WidgetList::RequestContext.request.key?('BUTTON_VALUE')
1818
1801
  # Only if not in ajax would we want to output the filter header
1819
1802
  #
1820
1803
  @items['templateHeader'] = '<!--FILTER_HEADER-->'
@@ -1844,8 +1827,8 @@ module WidgetList
1844
1827
  @items['rowLimit'] = @items['ROW_LIMIT'].to_i
1845
1828
  end
1846
1829
 
1847
- if $_SESSION.key?('ROW_LIMIT') && !$_SESSION['ROW_LIMIT'].nil? && $_SESSION['ROW_LIMIT'].key?(@items['name']) && !$_SESSION['ROW_LIMIT'][@items['name']].empty?
1848
- @items['rowLimit'] = $_SESSION['ROW_LIMIT'][@items['name']].to_i
1830
+ if WidgetList::RequestContext.session.key?('ROW_LIMIT') && !WidgetList::RequestContext.session['ROW_LIMIT'].nil? && WidgetList::RequestContext.session['ROW_LIMIT'].key?(@items['name']) && !WidgetList::RequestContext.session['ROW_LIMIT'][@items['name']].empty?
1831
+ @items['rowLimit'] = WidgetList::RequestContext.session['ROW_LIMIT'][@items['name']].to_i
1849
1832
  end
1850
1833
 
1851
1834
  if ! @items['LIST_COL_SORT'].empty?
@@ -1920,7 +1903,7 @@ module WidgetList
1920
1903
  'database' => 'primary', #
1921
1904
  'title' => '',
1922
1905
  'listDescription' => '',
1923
- 'pageId' => $_SERVER['SCRIPT_NAME'] + $_SERVER['PATH_INFO'],
1906
+ 'pageId' => WidgetList::RequestContext.server['SCRIPT_NAME'] + WidgetList::RequestContext.server['PATH_INFO'],
1924
1907
  'view' => '',
1925
1908
  'data' => {},
1926
1909
  'bindVars' => [],
@@ -2150,17 +2133,17 @@ module WidgetList
2150
2133
 
2151
2134
  def ajax_maintain_checks()
2152
2135
 
2153
- if !$_SESSION.key?('list_checks')
2154
- $_SESSION['list_checks'] = {}
2136
+ if !WidgetList::RequestContext.session.key?('list_checks')
2137
+ WidgetList::RequestContext.session['list_checks'] = {}
2155
2138
  end
2156
2139
 
2157
2140
  #
2158
2141
  # A list must be provided
2159
2142
  #
2160
- if $_REQUEST.key?('LIST_NAME')
2161
- listName = $_REQUEST['LIST_NAME']
2162
- sqlHash = $_REQUEST['SQL_HASH']
2163
- sequence = $_REQUEST['LIST_SEQUENCE'].to_s
2143
+ if WidgetList::RequestContext.request.key?('LIST_NAME')
2144
+ listName = WidgetList::RequestContext.request['LIST_NAME']
2145
+ sqlHash = WidgetList::RequestContext.request['SQL_HASH']
2146
+ sequence = WidgetList::RequestContext.request['LIST_SEQUENCE'].to_s
2164
2147
 
2165
2148
  #
2166
2149
  # The placeholder is created when the list initially forms. This validates it and makes it so
@@ -2171,18 +2154,18 @@ module WidgetList
2171
2154
  # For each posted check box
2172
2155
  #
2173
2156
 
2174
- $_REQUEST.each { |value, checked|
2157
+ WidgetList::RequestContext.request.each { |value, checked|
2175
2158
  if checked.to_s == '1'
2176
2159
  #
2177
2160
  # Set it as checked
2178
2161
  #
2179
- $_SESSION.deep_merge!({'list_checks' => { listName + sqlHash + value => true } })
2162
+ WidgetList::RequestContext.session.deep_merge!({'list_checks' => { listName + sqlHash + value => true } })
2180
2163
  else
2181
2164
  #
2182
2165
  # Unset if it exists and is unchecked
2183
2166
  #
2184
- if $_SESSION['list_checks'].key?(listName + sqlHash + value)
2185
- $_SESSION['list_checks'].delete(listName + sqlHash + value)
2167
+ if WidgetList::RequestContext.session['list_checks'].key?(listName + sqlHash + value)
2168
+ WidgetList::RequestContext.session['list_checks'].delete(listName + sqlHash + value)
2186
2169
  end
2187
2170
  end
2188
2171
  }
@@ -2190,18 +2173,18 @@ module WidgetList
2190
2173
  #
2191
2174
  # Check All
2192
2175
  #
2193
- if $_REQUEST.key?('checked_all') && $_REQUEST['checked_all'] == '1'
2194
- if $_SESSION.key?('list_checks')
2176
+ if WidgetList::RequestContext.request.key?('checked_all') && WidgetList::RequestContext.request['checked_all'] == '1'
2177
+ if WidgetList::RequestContext.session.key?('list_checks')
2195
2178
 
2196
- if $_SESSION['list_checks'].key?('check_all_' + sqlHash + listName + sequence)
2197
- if $_REQUEST['checked_all'].empty?
2198
- $_SESSION['list_checks'].delete('check_all_' + sqlHash + listName + sequence)
2179
+ if WidgetList::RequestContext.session['list_checks'].key?('check_all_' + sqlHash + listName + sequence)
2180
+ if WidgetList::RequestContext.request['checked_all'].empty?
2181
+ WidgetList::RequestContext.session['list_checks'].delete('check_all_' + sqlHash + listName + sequence)
2199
2182
  else
2200
- $_SESSION.deep_merge!({'list_checks' => { 'check_all_' + sqlHash + listName + sequence => true } })
2183
+ WidgetList::RequestContext.session.deep_merge!({'list_checks' => { 'check_all_' + sqlHash + listName + sequence => true } })
2201
2184
  end
2202
2185
  else
2203
- if ! $_REQUEST['checked_all'].empty?
2204
- $_SESSION.deep_merge!({'list_checks' => { 'check_all_' + sqlHash + listName + $_REQUEST['LIST_SEQUENCE'] => true } })
2186
+ if ! WidgetList::RequestContext.request['checked_all'].empty?
2187
+ WidgetList::RequestContext.session.deep_merge!({'list_checks' => { 'check_all_' + sqlHash + listName + WidgetList::RequestContext.request['LIST_SEQUENCE'] => true } })
2205
2188
  end
2206
2189
  end
2207
2190
  end
@@ -2211,82 +2194,82 @@ module WidgetList
2211
2194
 
2212
2195
  def self.clear_check_box_session(name='')
2213
2196
 
2214
- if $_SESSION.key?('DRILL_DOWN_FILTERS')
2215
- $_SESSION.delete('DRILL_DOWN_FILTERS')
2197
+ if WidgetList::RequestContext.session.key?('DRILL_DOWN_FILTERS')
2198
+ WidgetList::RequestContext.session.delete('DRILL_DOWN_FILTERS')
2216
2199
  end
2217
2200
 
2218
- if $_SESSION.key?('DRILL_DOWNS')
2219
- $_SESSION.delete('DRILL_DOWNS')
2201
+ if WidgetList::RequestContext.session.key?('DRILL_DOWNS')
2202
+ WidgetList::RequestContext.session.delete('DRILL_DOWNS')
2220
2203
  end
2221
2204
 
2222
- $_SESSION['list_checks'].keys.each { |key|
2205
+ WidgetList::RequestContext.session['list_checks'].keys.each { |key|
2223
2206
  if key.include?(name)
2224
- $_SESSION['list_checks'].delete(key)
2207
+ WidgetList::RequestContext.session['list_checks'].delete(key)
2225
2208
  end
2226
- } if $_SESSION.key?('list_checks') && !$_SESSION['list_checks'].nil? && !$_SESSION['list_checks'].empty?
2209
+ } if WidgetList::RequestContext.session.key?('list_checks') && !WidgetList::RequestContext.session['list_checks'].nil? && !WidgetList::RequestContext.session['list_checks'].empty?
2227
2210
 
2228
2211
  end
2229
2212
 
2230
2213
  def clear_search_session(all=false)
2231
2214
 
2232
- if $_SESSION.key?('SEARCH_FILTER') && $_SESSION['SEARCH_FILTER'].key?(@items['name'])
2233
- $_SESSION['SEARCH_FILTER'].delete(@items['name'])
2215
+ if WidgetList::RequestContext.session.key?('SEARCH_FILTER') && WidgetList::RequestContext.session['SEARCH_FILTER'].key?(@items['name'])
2216
+ WidgetList::RequestContext.session['SEARCH_FILTER'].delete(@items['name'])
2234
2217
  end
2235
2218
 
2236
- if $_SESSION.key?('ROW_LIMIT') && $_SESSION['ROW_LIMIT'].key?(@items['name'])
2237
- $_SESSION['ROW_LIMIT'].delete(@items['name'])
2219
+ if WidgetList::RequestContext.session.key?('ROW_LIMIT') && WidgetList::RequestContext.session['ROW_LIMIT'].key?(@items['name'])
2220
+ WidgetList::RequestContext.session['ROW_LIMIT'].delete(@items['name'])
2238
2221
  end
2239
2222
 
2240
- if $_SESSION.key?('DRILL_DOWNS') && $_SESSION['DRILL_DOWNS'].key?(@items['name'])
2241
- $_SESSION['DRILL_DOWNS'].delete(@items['name'])
2223
+ if WidgetList::RequestContext.session.key?('DRILL_DOWNS') && WidgetList::RequestContext.session['DRILL_DOWNS'].key?(@items['name'])
2224
+ WidgetList::RequestContext.session['DRILL_DOWNS'].delete(@items['name'])
2242
2225
  end
2243
2226
 
2244
- if $_SESSION.key?('DRILL_DOWN_FILTERS') && $_SESSION['DRILL_DOWN_FILTERS'].key?(@items['name'])
2245
- $_SESSION['DRILL_DOWN_FILTERS'].delete(@items['name'])
2227
+ if WidgetList::RequestContext.session.key?('DRILL_DOWN_FILTERS') && WidgetList::RequestContext.session['DRILL_DOWN_FILTERS'].key?(@items['name'])
2228
+ WidgetList::RequestContext.session['DRILL_DOWN_FILTERS'].delete(@items['name'])
2246
2229
  end
2247
2230
 
2248
- if all && $_SESSION.key?('SEARCH_FILTER')
2249
- $_SESSION.delete('SEARCH_FILTER')
2231
+ if all && WidgetList::RequestContext.session.key?('SEARCH_FILTER')
2232
+ WidgetList::RequestContext.session.delete('SEARCH_FILTER')
2250
2233
  end
2251
2234
 
2252
- if all && $_SESSION.key?('ROW_LIMIT')
2253
- $_SESSION.delete('ROW_LIMIT')
2235
+ if all && WidgetList::RequestContext.session.key?('ROW_LIMIT')
2236
+ WidgetList::RequestContext.session.delete('ROW_LIMIT')
2254
2237
  end
2255
2238
 
2256
- if $_REQUEST.key?('LIST_FILTER_ALL')
2257
- $_REQUEST.delete('LIST_FILTER_ALL')
2239
+ if WidgetList::RequestContext.request.key?('LIST_FILTER_ALL')
2240
+ WidgetList::RequestContext.request.delete('LIST_FILTER_ALL')
2258
2241
  end
2259
2242
 
2260
- if $_REQUEST.key?('LIST_COL_SORT')
2261
- $_REQUEST.delete('LIST_COL_SORT')
2243
+ if WidgetList::RequestContext.request.key?('LIST_COL_SORT')
2244
+ WidgetList::RequestContext.request.delete('LIST_COL_SORT')
2262
2245
  end
2263
2246
 
2264
- if $_REQUEST.key?('LIST_COL_SORT_ORDER')
2265
- $_REQUEST.delete('LIST_COL_SORT_ORDER')
2247
+ if WidgetList::RequestContext.request.key?('LIST_COL_SORT_ORDER')
2248
+ WidgetList::RequestContext.request.delete('LIST_COL_SORT_ORDER')
2266
2249
  end
2267
2250
 
2268
- if $_REQUEST.key?('LIST_SEQUENCE')
2269
- $_REQUEST.delete('LIST_SEQUENCE')
2251
+ if WidgetList::RequestContext.request.key?('LIST_SEQUENCE')
2252
+ WidgetList::RequestContext.request.delete('LIST_SEQUENCE')
2270
2253
  end
2271
2254
 
2272
2255
  end
2273
2256
 
2274
2257
  def clear_sql_session(all=false)
2275
2258
 
2276
- if $_SESSION.key?('LIST_SEQUENCE') && $_SESSION['LIST_SEQUENCE'].key?(@sqlHash)
2277
- $_SESSION['LIST_SEQUENCE'].delete(@sqlHash)
2259
+ if WidgetList::RequestContext.session.key?('LIST_SEQUENCE') && WidgetList::RequestContext.session['LIST_SEQUENCE'].key?(@sqlHash)
2260
+ WidgetList::RequestContext.session['LIST_SEQUENCE'].delete(@sqlHash)
2278
2261
  end
2279
2262
 
2280
- if $_SESSION.key?('LIST_COL_SORT') && $_SESSION['LIST_COL_SORT'].key?(@sqlHash)
2281
- $_SESSION['LIST_COL_SORT'].delete(@sqlHash)
2263
+ if WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash)
2264
+ WidgetList::RequestContext.session['LIST_COL_SORT'].delete(@sqlHash)
2282
2265
  end
2283
2266
 
2284
- if all && $_SESSION.key?('LIST_COL_SORT')
2285
- $_SESSION.delete('LIST_COL_SORT')
2267
+ if all && WidgetList::RequestContext.session.key?('LIST_COL_SORT')
2268
+ WidgetList::RequestContext.session.delete('LIST_COL_SORT')
2286
2269
  end
2287
2270
 
2288
- if all && $_SESSION.key?('LIST_SEQUENCE')
2289
- $_SESSION.delete('LIST_SEQUENCE')
2271
+ if all && WidgetList::RequestContext.session.key?('LIST_SEQUENCE')
2272
+ WidgetList::RequestContext.session.delete('LIST_SEQUENCE')
2290
2273
  end
2291
2274
 
2292
2275
  end
@@ -2294,26 +2277,26 @@ module WidgetList
2294
2277
  def self.get_filter_and_drilldown(listId)
2295
2278
  filter = ''
2296
2279
  drillDown = ''
2297
- if !$_REQUEST.key?('BUTTON_VALUE')
2280
+ if !WidgetList::RequestContext.request.key?('BUTTON_VALUE')
2298
2281
  # Initialize page load/Session stuff whe list first loads
2299
2282
  #
2300
2283
  WidgetList::List::clear_check_box_session(listId)
2301
2284
  end
2302
2285
 
2303
- if $_REQUEST.key?('drill_down') && !$_REQUEST.key?('searchClear')
2304
- drillDown = $_REQUEST['drill_down']
2305
- $_SESSION.deep_merge!({'DRILL_DOWNS' => { listId => drillDown} })
2306
- elsif $_SESSION.key?('DRILL_DOWNS') && $_SESSION['DRILL_DOWNS'].key?(listId) && !$_REQUEST.key?('searchClear')
2307
- drillDown = $_SESSION['DRILL_DOWNS'][listId]
2286
+ if WidgetList::RequestContext.request.key?('drill_down') && !WidgetList::RequestContext.request.key?('searchClear')
2287
+ drillDown = WidgetList::RequestContext.request['drill_down']
2288
+ WidgetList::RequestContext.session.deep_merge!({'DRILL_DOWNS' => { listId => drillDown} })
2289
+ elsif WidgetList::RequestContext.session.key?('DRILL_DOWNS') && WidgetList::RequestContext.session['DRILL_DOWNS'].key?(listId) && !WidgetList::RequestContext.request.key?('searchClear')
2290
+ drillDown = WidgetList::RequestContext.session['DRILL_DOWNS'][listId]
2308
2291
  else
2309
2292
  drillDown = 'default'
2310
2293
  end
2311
2294
 
2312
- if $_REQUEST.key?('filter') && !$_REQUEST.key?('searchClear')
2313
- filter = $_REQUEST['filter']
2314
- $_SESSION.deep_merge!({'DRILL_DOWN_FILTERS' => { listId => filter} })
2315
- elsif $_SESSION.key?('DRILL_DOWN_FILTERS') && $_SESSION['DRILL_DOWN_FILTERS'].key?(listId) && !$_REQUEST.key?('searchClear')
2316
- filter = $_SESSION['DRILL_DOWN_FILTERS'][listId]
2295
+ if WidgetList::RequestContext.request.key?('filter') && !WidgetList::RequestContext.request.key?('searchClear')
2296
+ filter = WidgetList::RequestContext.request['filter']
2297
+ WidgetList::RequestContext.session.deep_merge!({'DRILL_DOWN_FILTERS' => { listId => filter} })
2298
+ elsif WidgetList::RequestContext.session.key?('DRILL_DOWN_FILTERS') && WidgetList::RequestContext.session['DRILL_DOWN_FILTERS'].key?(listId) && !WidgetList::RequestContext.request.key?('searchClear')
2299
+ filter = WidgetList::RequestContext.session['DRILL_DOWN_FILTERS'][listId]
2317
2300
  end
2318
2301
  return drillDown, filter
2319
2302
  end
@@ -2321,11 +2304,11 @@ module WidgetList
2321
2304
  def self.get_group_by_selection(list_parms)
2322
2305
  groupBy = ''
2323
2306
 
2324
- if $_REQUEST.key?('switch_grouping')
2325
- groupBy = $_REQUEST['switch_grouping']
2326
- $_SESSION.deep_merge!({'CURRENT_GROUPING' => { list_parms['name'] => groupBy} })
2327
- elsif $_SESSION.key?('CURRENT_GROUPING') && !$_SESSION['CURRENT_GROUPING'].nil? && $_SESSION['CURRENT_GROUPING'].key?(list_parms['name'])
2328
- groupBy = $_SESSION['CURRENT_GROUPING'][list_parms['name']]
2307
+ if WidgetList::RequestContext.request.key?('switch_grouping')
2308
+ groupBy = WidgetList::RequestContext.request['switch_grouping']
2309
+ WidgetList::RequestContext.session.deep_merge!({'CURRENT_GROUPING' => { list_parms['name'] => groupBy} })
2310
+ elsif WidgetList::RequestContext.session.key?('CURRENT_GROUPING') && !WidgetList::RequestContext.session['CURRENT_GROUPING'].nil? && WidgetList::RequestContext.session['CURRENT_GROUPING'].key?(list_parms['name'])
2311
+ groupBy = WidgetList::RequestContext.session['CURRENT_GROUPING'][list_parms['name']]
2329
2312
  list_parms['groupBySelected'] = groupBy
2330
2313
  else
2331
2314
  groupBy = ''
@@ -2335,12 +2318,12 @@ module WidgetList
2335
2318
  end
2336
2319
 
2337
2320
  def clear_sort_get_vars()
2338
- $_REQUEST.delete('LIST_FILTER_ALL')
2339
- $_REQUEST.delete('ROW_LIMIT')
2340
- $_REQUEST.delete('LIST_SEQUENCE')
2341
- $_REQUEST.delete('LIST_COL_SORT_ORDER')
2342
- $_REQUEST.delete('LIST_COL_SORT')
2343
- $_REQUEST.delete('LIST_FILTER_ALL')
2321
+ WidgetList::RequestContext.request.delete('LIST_FILTER_ALL')
2322
+ WidgetList::RequestContext.request.delete('ROW_LIMIT')
2323
+ WidgetList::RequestContext.request.delete('LIST_SEQUENCE')
2324
+ WidgetList::RequestContext.request.delete('LIST_COL_SORT_ORDER')
2325
+ WidgetList::RequestContext.request.delete('LIST_COL_SORT')
2326
+ WidgetList::RequestContext.request.delete('LIST_FILTER_ALL')
2344
2327
  end
2345
2328
 
2346
2329
  def generate_limits()
@@ -2369,11 +2352,11 @@ module WidgetList
2369
2352
  def render(results={})
2370
2353
 
2371
2354
  if @isAdministrating
2372
- if $_REQUEST.key?('name')
2355
+ if WidgetList::RequestContext.request.key?('name')
2373
2356
  return WidgetList::Administration.new.save_and_show_code()
2374
- elsif $_REQUEST.key?('ajax') && $_REQUEST.key?('model')
2375
- return WidgetList::Administration.new.ajax_get_field_json($_REQUEST['model'])
2376
- elsif $_REQUEST.key?('ajax') && $_REQUEST.key?('save')
2357
+ elsif WidgetList::RequestContext.request.key?('ajax') && WidgetList::RequestContext.request.key?('model')
2358
+ return WidgetList::Administration.new.ajax_get_field_json(WidgetList::RequestContext.request['model'])
2359
+ elsif WidgetList::RequestContext.request.key?('ajax') && WidgetList::RequestContext.request.key?('save')
2377
2360
  return WidgetList::Administration.new.save_and_show_code()
2378
2361
  else
2379
2362
  return WidgetList::Administration.new.show_interface()
@@ -2424,8 +2407,18 @@ module WidgetList
2424
2407
  listJumpUrl['LIST_NAME'] = @items['name']
2425
2408
  listJumpUrl['SQL_HASH'] = @sqlHash
2426
2409
 
2427
- if $_REQUEST.key?('switch_grouping')
2428
- listJumpUrl['switch_grouping'] = $_REQUEST['switch_grouping']
2410
+ # Initial links inherit request parameters in build_url. Ajax links
2411
+ # need the preview context copied because build_url skips that step.
2412
+ if WidgetList::RequestContext.request.key?('BUTTON_VALUE')
2413
+ %w[iframe desiredController desiredAction].each do |key|
2414
+ if WidgetList::RequestContext.request.key?(key)
2415
+ listJumpUrl[key] = WidgetList::RequestContext.request[key]
2416
+ end
2417
+ end
2418
+ end
2419
+
2420
+ if WidgetList::RequestContext.request.key?('switch_grouping')
2421
+ listJumpUrl['switch_grouping'] = WidgetList::RequestContext.request['switch_grouping']
2429
2422
  end
2430
2423
 
2431
2424
  @templateFill['<!--CORNER_RADIUS-->'] = get_radius_value()
@@ -2444,7 +2437,7 @@ module WidgetList
2444
2437
  @templateFill['<!--CUSTOM_CONTENT_TOP-->'] = @items['customHeader']
2445
2438
  @templateFill['<!--WRAP_START-->'] = ''
2446
2439
  @templateFill['<!--WRAP_END-->'] = ''
2447
- if !$_REQUEST.key?('BUTTON_VALUE')
2440
+ if !WidgetList::RequestContext.request.key?('BUTTON_VALUE')
2448
2441
  @templateFill['<!--WRAP_START-->'] = '<div class="widget_list_outer">
2449
2442
  <input type="hidden" id="<!--NAME-->_jump_url_original" value="<!--JUMP_URL-->"/>'
2450
2443
  @templateFill['<!--WRAP_END-->'] = '</div>'
@@ -2475,7 +2468,7 @@ module WidgetList
2475
2468
 
2476
2469
  @templateFill['<!--FILTER_HEADER-->'] = ''
2477
2470
 
2478
- if !$_REQUEST.key?('search_filter') && !@isJumpingList
2471
+ if !WidgetList::RequestContext.request.key?('search_filter') && !@isJumpingList
2479
2472
 
2480
2473
  #Search page url
2481
2474
  #
@@ -2495,12 +2488,12 @@ module WidgetList
2495
2488
  filterParameters['SQL_HASH'] = @sqlHash
2496
2489
 
2497
2490
  @items['carryOverRequsts'].each { |value|
2498
- if $_REQUEST.key?(value)
2499
- filterParameters[value] = $_REQUEST[value]
2491
+ if WidgetList::RequestContext.request.key?(value)
2492
+ filterParameters[value] = WidgetList::RequestContext.request[value]
2500
2493
  end
2501
2494
  }
2502
2495
 
2503
- searchUrl = WidgetList::Utils::build_url(@items['pageId'], filterParameters, (!$_REQUEST.key?('BUTTON_VALUE')))
2496
+ searchUrl = WidgetList::Utils::build_url(@items['pageId'], filterParameters, (!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
2504
2497
 
2505
2498
  list_search = {}
2506
2499
  #
@@ -2509,8 +2502,8 @@ module WidgetList
2509
2502
  list_search['value'] = ''
2510
2503
 
2511
2504
  if @items['searchSession']
2512
- if $_SESSION.key?('SEARCH_FILTER') && !$_SESSION['SEARCH_FILTER'].nil? && $_SESSION['SEARCH_FILTER'].key?(@items['name'])
2513
- list_search['value'] = $_SESSION['SEARCH_FILTER'][@items['name']]
2505
+ if WidgetList::RequestContext.session.key?('SEARCH_FILTER') && !WidgetList::RequestContext.session['SEARCH_FILTER'].nil? && WidgetList::RequestContext.session['SEARCH_FILTER'].key?(@items['name'])
2506
+ list_search['value'] = WidgetList::RequestContext.session['SEARCH_FILTER'][@items['name']]
2514
2507
  end
2515
2508
  end
2516
2509
 
@@ -2551,8 +2544,8 @@ module WidgetList
2551
2544
  list_group['readonly'] = true
2552
2545
  if @items['groupBySelected']
2553
2546
  list_group['value'] = @items['groupBySelected']
2554
- elsif $_REQUEST.key?('group_row_id')
2555
- tmp = $_REQUEST['group_row_id'].gsub(@items['name'] + '_row_','')
2547
+ elsif WidgetList::RequestContext.request.key?('group_row_id')
2548
+ tmp = WidgetList::RequestContext.request['group_row_id'].gsub(@items['name'] + '_row_','')
2556
2549
  if Float(tmp.to_i) != nil
2557
2550
  list_group['value'] = @items['groupByItems'][tmp.to_i - 1]
2558
2551
  end
@@ -2609,7 +2602,7 @@ module WidgetList
2609
2602
  end
2610
2603
 
2611
2604
  @templateFill['<!--NAME-->'] = @items['name']
2612
- @templateFill['<!--JUMP_URL-->'] = WidgetList::Utils::build_url(@items['pageId'],listJumpUrl,(!$_REQUEST.key?('BUTTON_VALUE')))
2605
+ @templateFill['<!--JUMP_URL-->'] = WidgetList::Utils::build_url(@items['pageId'],listJumpUrl,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
2613
2606
  @templateFill['--JUMP_URL--'] = @templateFill['<!--JUMP_URL-->']
2614
2607
  @templateFill['<!--JUMP_URL_NAME-->'] = @items['name'] + '_jump_url'
2615
2608
 
@@ -2622,7 +2615,7 @@ module WidgetList
2622
2615
  end
2623
2616
  end
2624
2617
 
2625
- if $_REQUEST.key?('export_widget_list')
2618
+ if WidgetList::RequestContext.request.key?('export_widget_list')
2626
2619
  csv = ''
2627
2620
  @csv.each{ |v|
2628
2621
  csv += v.to_csv
@@ -2674,8 +2667,8 @@ module WidgetList
2674
2667
  templates['btn_previous'] = @items['template_pagination_previous_disabled']
2675
2668
  templates['btn_next'] = @items['template_pagination_next_active']
2676
2669
 
2677
- if $_REQUEST.key?('search_filter') && ! $_REQUEST['search_filter'].empty?
2678
- urlTags['search_filter'] = $_REQUEST['search_filter']
2670
+ if WidgetList::RequestContext.request.key?('search_filter') && ! WidgetList::RequestContext.request['search_filter'].empty?
2671
+ urlTags['search_filter'] = WidgetList::RequestContext.request['search_filter']
2679
2672
  end
2680
2673
 
2681
2674
  if @items['LIST_COL_SORT'].empty?
@@ -2691,21 +2684,21 @@ module WidgetList
2691
2684
  end
2692
2685
 
2693
2686
  @items['carryOverRequsts'].each { |value|
2694
- if $_REQUEST.key?(value)
2695
- urlTags[value] = $_REQUEST[value]
2687
+ if WidgetList::RequestContext.request.key?(value)
2688
+ urlTags[value] = WidgetList::RequestContext.request[value]
2696
2689
  end
2697
2690
  }
2698
2691
  if (@sequence == @totalPages || ! (@totalPages > 0))
2699
2692
  showNext = false
2700
2693
  else
2701
2694
  urlTags['LIST_SEQUENCE'] = @sequence + 1
2702
- nextUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!$_REQUEST.key?('BUTTON_VALUE')))
2695
+ nextUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
2703
2696
  end
2704
2697
 
2705
2698
  if @sequence > 1
2706
2699
  pagePrev = @sequence - 1
2707
2700
  urlTags['LIST_SEQUENCE'] = pagePrev
2708
- prevUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!$_REQUEST.key?('BUTTON_VALUE')))
2701
+ prevUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
2709
2702
  showPrev = true
2710
2703
  end
2711
2704
 
@@ -2739,8 +2732,8 @@ module WidgetList
2739
2732
  urlTags['ROW_LIMIT'] = 10
2740
2733
 
2741
2734
  @items['carryOverRequsts'].each { |value|
2742
- if $_REQUEST.key?(value)
2743
- urlTags[value] = $_REQUEST[value]
2735
+ if WidgetList::RequestContext.request.key?(value)
2736
+ urlTags[value] = WidgetList::RequestContext.request[value]
2744
2737
  end
2745
2738
  }
2746
2739
 
@@ -2758,7 +2751,7 @@ module WidgetList
2758
2751
  if (@totalRows >= jumpCount || @totalRows > rowLimitSelect[key-1])
2759
2752
  urlTags['ROW_LIMIT'] = jumpCount
2760
2753
 
2761
- rowLimitUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!$_REQUEST.key?('BUTTON_VALUE')))
2754
+ rowLimitUrl = WidgetList::Utils::build_url(@items['pageId'],urlTags,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
2762
2755
  selected = ''
2763
2756
  if (@items['rowLimit'] == jumpCount)
2764
2757
  selected = 'selected'
@@ -2818,7 +2811,7 @@ module WidgetList
2818
2811
  urlTags['SQL_HASH'] = @sqlHash
2819
2812
  jumpTemplate = ''
2820
2813
  jumpUrl = ''
2821
- jumpUrl = WidgetList::Utils::build_url(@items['pageId'], urlTags, (!$_REQUEST.key?('BUTTON_VALUE')))
2814
+ jumpUrl = WidgetList::Utils::build_url(@items['pageId'], urlTags, (!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
2822
2815
 
2823
2816
  if page == @sequence
2824
2817
  jumpTemplate = @items['template_pagination_jump_active']
@@ -2867,8 +2860,8 @@ module WidgetList
2867
2860
 
2868
2861
  if list_parms.key?('carryOverRequsts')
2869
2862
  list_parms['carryOverRequsts'].each { |value|
2870
- if $_REQUEST.key?(value)
2871
- filterParameters[value] = $_REQUEST[value]
2863
+ if WidgetList::RequestContext.request.key?(value)
2864
+ filterParameters[value] = WidgetList::RequestContext.request[value]
2872
2865
  end
2873
2866
  }
2874
2867
  extra_get_vars = WidgetList::Utils::build_query_string(filterParameters)
@@ -2909,7 +2902,7 @@ module WidgetList
2909
2902
 
2910
2903
  colWidthStyle += @items['borderHeadFoot'] ? 'border-bottom:' + @items['headFootBorderStyle'] + ';' : ''
2911
2904
 
2912
- $_SESSION.deep_merge!({'LIST_SEQUENCE' => { @sqlHash => @sequence} })
2905
+ WidgetList::RequestContext.session.deep_merge!({'LIST_SEQUENCE' => { @sqlHash => @sequence} })
2913
2906
 
2914
2907
  #Hover Title
2915
2908
  #
@@ -2954,7 +2947,7 @@ module WidgetList
2954
2947
 
2955
2948
  else
2956
2949
 
2957
- if $_REQUEST.key?('export_widget_list') && !skip_column(field)
2950
+ if WidgetList::RequestContext.request.key?('export_widget_list') && !skip_column(field)
2958
2951
  @csv[0] << fieldTitle
2959
2952
  end
2960
2953
 
@@ -2994,15 +2987,15 @@ module WidgetList
2994
2987
 
2995
2988
  if (
2996
2989
  ( (@items.key?('LIST_COL_SORT') && !@items['LIST_COL_SORT'].empty?) && @items['LIST_COL_SORT'] == colSort['LIST_COL_SORT']) ||
2997
- ( $_SESSION.key?('LIST_COL_SORT') && !$_SESSION['LIST_COL_SORT'].nil? && $_SESSION['LIST_COL_SORT'].key?(@sqlHash) && $_SESSION['LIST_COL_SORT'][@sqlHash].key?(field))
2990
+ ( WidgetList::RequestContext.session.key?('LIST_COL_SORT') && !WidgetList::RequestContext.session['LIST_COL_SORT'].nil? && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash) && WidgetList::RequestContext.session['LIST_COL_SORT'][@sqlHash].key?(field))
2998
2991
  )
2999
2992
  changedSession = false
3000
2993
  if @items.key?('LIST_COL_SORT') && !@items['LIST_COL_SORT'].empty?
3001
- changedSession = ( $_SESSION.key?('LIST_COL_SORT') && $_SESSION['LIST_COL_SORT'].key?(@sqlHash) && ! $_SESSION['LIST_COL_SORT'][@sqlHash].key?(@items['LIST_COL_SORT']) )
3002
- if $_SESSION.key?('LIST_COL_SORT') && $_SESSION['LIST_COL_SORT'].key?(@sqlHash)
3003
- $_SESSION['LIST_COL_SORT'].delete(@sqlHash)
2994
+ changedSession = ( WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash) && ! WidgetList::RequestContext.session['LIST_COL_SORT'][@sqlHash].key?(@items['LIST_COL_SORT']) )
2995
+ if WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash)
2996
+ WidgetList::RequestContext.session['LIST_COL_SORT'].delete(@sqlHash)
3004
2997
  end
3005
- $_SESSION.deep_merge!({'LIST_COL_SORT' => { @sqlHash => {@items['LIST_COL_SORT']=> @items['LIST_COL_SORT_ORDER'] } } })
2998
+ WidgetList::RequestContext.session.deep_merge!({'LIST_COL_SORT' => { @sqlHash => {@items['LIST_COL_SORT']=> @items['LIST_COL_SORT_ORDER'] } } })
3006
2999
  end
3007
3000
 
3008
3001
  if !changedSession && @items.key?('LIST_COL_SORT') && ! @items['LIST_COL_SORT'].empty?
@@ -3011,9 +3004,9 @@ module WidgetList
3011
3004
  else
3012
3005
  icon = "&darr;"
3013
3006
  end
3014
- elsif !changedSession && $_SESSION['LIST_COL_SORT'].class.name == 'Hash' && $_SESSION['LIST_COL_SORT'].key?(@sqlHash)
3007
+ elsif !changedSession && WidgetList::RequestContext.session['LIST_COL_SORT'].class.name == 'Hash' && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash)
3015
3008
  #load sort from session
3016
- $_SESSION['LIST_COL_SORT'][@sqlHash].each_with_index { |order,void|
3009
+ WidgetList::RequestContext.session['LIST_COL_SORT'][@sqlHash].each_with_index { |order,void|
3017
3010
  if order[1] == 'DESC'
3018
3011
  colSort['LIST_COL_SORT_ORDER'] = "ASC"
3019
3012
  icon = "&uarr;"
@@ -3027,21 +3020,21 @@ module WidgetList
3027
3020
 
3028
3021
  #Carry over any search criteria on a sort to SORT URL
3029
3022
  #
3030
- if $_REQUEST.key?('search_filter') && ! $_REQUEST['search_filter'].empty?
3031
- if $_REQUEST['search_filter'].empty?
3032
- colSort['search_filter'] = $_REQUEST['search_filter']
3023
+ if WidgetList::RequestContext.request.key?('search_filter') && ! WidgetList::RequestContext.request['search_filter'].empty?
3024
+ if WidgetList::RequestContext.request['search_filter'].empty?
3025
+ colSort['search_filter'] = WidgetList::RequestContext.request['search_filter']
3033
3026
  end
3034
3027
  end
3035
3028
 
3036
3029
  @items['carryOverRequsts'].each { |value|
3037
- if $_REQUEST.key?(value)
3038
- colSort[value] = $_REQUEST[value]
3030
+ if WidgetList::RequestContext.request.key?(value)
3031
+ colSort[value] = WidgetList::RequestContext.request[value]
3039
3032
  end
3040
3033
  }
3041
3034
 
3042
3035
  colSort['SQL_HASH'] = @sqlHash
3043
3036
 
3044
- pieces = { '<!--COLSORTURL-->' => WidgetList::Utils::build_url(@items['pageId'],colSort,(!$_REQUEST.key?('BUTTON_VALUE'))),
3037
+ pieces = { '<!--COLSORTURL-->' => WidgetList::Utils::build_url(@items['pageId'],colSort,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE'))),
3045
3038
  '<!--NAME-->' => @items['name'],
3046
3039
  '<!--COLSORTICON->' => icon,
3047
3040
  '<!--COL_HEADER_ID-->' => strip_tags(field).gsub(/\s/,'_'),
@@ -3139,7 +3132,7 @@ module WidgetList
3139
3132
 
3140
3133
  if input['check_all']
3141
3134
  checkAllId = input['id']
3142
- if $_SESSION.key?('list_checks') && !$_SESSION['list_checks'].nil? && $_SESSION['list_checks'].key?('check_all_' + @sqlHash.to_s + @items['name'].to_s + @sequence.to_s)
3135
+ if WidgetList::RequestContext.session.key?('list_checks') && !WidgetList::RequestContext.session['list_checks'].nil? && WidgetList::RequestContext.session['list_checks'].key?('check_all_' + @sqlHash.to_s + @items['name'].to_s + @sequence.to_s)
3143
3136
  input['checked'] = true
3144
3137
  end
3145
3138
 
@@ -3147,7 +3140,7 @@ module WidgetList
3147
3140
  # Set header class
3148
3141
  #
3149
3142
  if @items['headerClass'].class.name == 'Array' && @items['headerClass'].key?('checkbox')
3150
- if $_SESSION['list_checks'].key?('check_all_' + @sqlHash.to_s + @items['name'].to_s + @sequence.to_s)
3143
+ if WidgetList::RequestContext.session['list_checks'].key?('check_all_' + @sqlHash.to_s + @items['name'].to_s + @sequence.to_s)
3151
3144
  input['checked'] = true
3152
3145
  end
3153
3146
  end
@@ -3170,7 +3163,7 @@ module WidgetList
3170
3163
  listJumpUrl['SQL_HASH'] = @sqlHash
3171
3164
  listJumpUrl['list_action'] = 'ajax_widgetlist_checks'
3172
3165
 
3173
- onClick << "AjaxMaintainChecks(this, '#{input['class_handle']}', '#{@items['name']}', '" + WidgetList::Utils::build_url(@items['pageId'],listJumpUrl,(!$_REQUEST.key?('BUTTON_VALUE'))) + "', '#{checkAllId}');"
3166
+ onClick << "AjaxMaintainChecks(this, '#{input['class_handle']}', '#{@items['name']}', '" + WidgetList::Utils::build_url(@items['pageId'],listJumpUrl,(!WidgetList::RequestContext.request.key?('BUTTON_VALUE'))) + "', '#{checkAllId}');"
3174
3167
  end
3175
3168
 
3176
3169
  input['onclick'] = onClick.join(' ')
@@ -3187,7 +3180,7 @@ module WidgetList
3187
3180
  #
3188
3181
  # Checkbox is checked or not per session (overwrites query)
3189
3182
  #
3190
- if $_SESSION.key?('list_checks') && !$_SESSION['list_checks'].nil? && $_SESSION['list_checks'].key?(@items['name'] + @sqlHash + input['value'].to_s)
3183
+ if WidgetList::RequestContext.session.key?('list_checks') && !WidgetList::RequestContext.session['list_checks'].nil? && WidgetList::RequestContext.session['list_checks'].key?(@items['name'] + @sqlHash + input['value'].to_s)
3191
3184
  input['checked'] = true
3192
3185
  end
3193
3186
 
@@ -3219,13 +3212,13 @@ module WidgetList
3219
3212
  #
3220
3213
  # If AJAX, send back JSON
3221
3214
  #
3222
- if $_REQUEST.key?('BUTTON_VALUE') && $_REQUEST['LIST_NAME'] == list_parms['name']
3215
+ if WidgetList::RequestContext.request.key?('BUTTON_VALUE') && WidgetList::RequestContext.request['LIST_NAME'] == list_parms['name']
3223
3216
 
3224
- if $_REQUEST.key?('export_widget_list')
3217
+ if WidgetList::RequestContext.request.key?('export_widget_list')
3225
3218
  return ['export',list.render()]
3226
3219
  end
3227
3220
 
3228
- if $_REQUEST['list_action'] != 'ajax_widgetlist_checks'
3221
+ if WidgetList::RequestContext.request['list_action'] != 'ajax_widgetlist_checks'
3229
3222
  ret['list'] = list.render()
3230
3223
  ret['search_bar'] = list.get_header_pieces['searchBar']
3231
3224
  ret['group_by_items'] = list.get_header_pieces['groupByItems']
@@ -3390,7 +3383,7 @@ module WidgetList
3390
3383
  def self.build_drill_down(*params)
3391
3384
  required_params = {
3392
3385
  :list_id => true, # -- your widget_list name (used for JS)
3393
- :drill_down_name => true, # -- an identifier that is pass for the "column" or "type of drill down" which is passed as $_REQUEST['drill_down'] when the user clicks and returned from get_filter_and_drilldown based on session or request
3386
+ :drill_down_name => true, # -- an identifier that is pass for the "column" or "type of drill down" which is passed as WidgetList::RequestContext.request['drill_down'] when the user clicks and returned from get_filter_and_drilldown based on session or request
3394
3387
  :data_to_pass_from_view => true, # -- Any SQL function or column name/value in the resultset in which would be the value passed when the user clicks the drill down
3395
3388
  :column_to_show => true, # -- The visible column or SQL functions to display to user for the link
3396
3389
  }
@@ -3419,14 +3412,20 @@ module WidgetList
3419
3412
  if WidgetList::List.get_db_type(items[:primary_database]) == 'oracle'
3420
3413
  link = %[q'[<a style='cursor:pointer;color:#{items[:link_color]};' class='#{items[:column_alias]}_drill#{items[:column_class]}' onclick='#{items[:js_function_name]}("#{items[:drill_down_name]}", ListDrillDownGetRowValue(this) ,"#{items[:list_id]}"#{items[:extra_js_func_params]});#{items[:extra_function]}'>]' #{WidgetList::List::concat_string(items[:primary_database])}#{items[:column_to_show]}#{WidgetList::List::concat_string(items[:primary_database])}q'[</a><script class='val-db' type='text'>]' #{WidgetList::List::concat_string(items[:primary_database])} #{items[:data_to_pass_from_view]} #{WidgetList::List::concat_string(items[:primary_database])} q'[</script>]' #{WidgetList::List::concat_outer(items[:primary_database])} #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}]
3421
3414
  else
3422
- if WidgetList::List.get_db_type(items[:primary_database]) == 'postgres'
3415
+ if WidgetList::List.get_db_type(items[:primary_database]) == 'sqlite'
3416
+ sql_literal = ->(value) { "'#{value.gsub("'", "''")}'" }
3417
+ prefix = %(<a style="cursor:pointer;color:#{items[:link_color]};" class="#{items[:column_alias]}_drill#{items[:column_class]}" onclick="#{items[:js_function_name]}('#{items[:drill_down_name]}', ListDrillDownGetRowValue(this) ,'#{items[:list_id]}'#{items[:extra_js_func_params]});#{items[:extra_function]}">)
3418
+ middle = '</a><script class="val-db" type="text">'
3419
+ suffix = '</script>'
3420
+ link = "#{sql_literal.call(prefix)} || #{items[:column_to_show]} || #{sql_literal.call(middle)} || #{items[:data_to_pass_from_view]} || #{sql_literal.call(suffix)}#{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]}" : ''}"
3421
+ elsif WidgetList::List.get_db_type(items[:primary_database]) == 'postgres'
3423
3422
  link = %['<a style="cursor:pointer;color:#{items[:link_color]};" class="#{items[:column_alias]}_drill#{items[:column_class]}" onclick="#{items[:js_function_name]}(''#{items[:drill_down_name]}'', ListDrillDownGetRowValue(this) ,''#{items[:list_id]}''#{items[:extra_js_func_params]});#{items[:extra_function]}">"' #{WidgetList::List::concat_string(items[:primary_database])}#{items[:column_to_show]}#{WidgetList::List::concat_string(items[:primary_database])}'</a><script class="val-db" type="text">' #{WidgetList::List::concat_string(items[:primary_database])} #{items[:data_to_pass_from_view]} #{WidgetList::List::concat_string(items[:primary_database])}'</script>' #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}]
3424
3423
  else
3425
3424
  link = %[#{WidgetList::List::concat_inner(items[:primary_database])}"<a style='cursor:pointer;color:#{items[:link_color]};' class='#{items[:column_alias]}_drill#{items[:column_class]}' onclick='#{items[:js_function_name]}(#{WidgetList::List::double_quote(items[:primary_database])}#{items[:drill_down_name]}#{WidgetList::List::double_quote(items[:primary_database])}, ListDrillDownGetRowValue(this) ,#{WidgetList::List::double_quote(items[:primary_database])}#{items[:list_id]}#{WidgetList::List::double_quote(items[:primary_database])}#{items[:extra_js_func_params]});#{items[:extra_function]}'>"#{WidgetList::List::concat_string(items[:primary_database])}#{items[:column_to_show]}#{WidgetList::List::concat_string(items[:primary_database])}"</a><script class='val-db' type='text'>"#{WidgetList::List::concat_string(items[:primary_database])} #{items[:data_to_pass_from_view]} #{WidgetList::List::concat_string(items[:primary_database])}"</script>"#{WidgetList::List::concat_outer(items[:primary_database])} #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}]
3426
3425
  end
3427
3426
  end
3428
3427
 
3429
- if $_REQUEST.key?('export_widget_list')
3428
+ if WidgetList::RequestContext.request.key?('export_widget_list')
3430
3429
  link = "#{items[:column_to_show]} #{WidgetList::List::is_sequel(items[:primary_database]) ? " as #{items[:column_alias]} " : ""}"
3431
3430
  end
3432
3431
 
@@ -3620,7 +3619,7 @@ module WidgetList
3620
3619
  return "#{function}('#{linkUrl}')"
3621
3620
  else
3622
3621
  url['SQL_HASH'] = @sqlHash
3623
- linkUrl = WidgetList::Utils::build_url(@items['pageId'], url, (!$_REQUEST.key?('BUTTON_VALUE')))
3622
+ linkUrl = WidgetList::Utils::build_url(@items['pageId'], url, (!WidgetList::RequestContext.request.key?('BUTTON_VALUE')))
3624
3623
  if !parameters.empty?
3625
3624
  return "#{function}(#{parameters.join(',')})"
3626
3625
  else
@@ -3839,7 +3838,7 @@ module WidgetList
3839
3838
  }
3840
3839
 
3841
3840
 
3842
- if $_REQUEST.key?('export_widget_list')
3841
+ if WidgetList::RequestContext.request.key?('export_widget_list')
3843
3842
  @csv << row_values
3844
3843
  end
3845
3844
 
@@ -4053,7 +4052,7 @@ module WidgetList
4053
4052
  }
4054
4053
 
4055
4054
 
4056
- if $_REQUEST.key?('export_widget_list')
4055
+ if WidgetList::RequestContext.request.key?('export_widget_list')
4057
4056
  @csv << row_values
4058
4057
  end
4059
4058
 
@@ -4186,8 +4185,8 @@ module WidgetList
4186
4185
  clear_sql_session(@items.key?('searchClearAll'))
4187
4186
  end
4188
4187
 
4189
- if !$_REQUEST.key?('BUTTON_VALUE') && !$_SESSION['LIST_SEQUENCE'].nil? && $_SESSION.key?('LIST_SEQUENCE') && $_SESSION['LIST_SEQUENCE'].key?(@sqlHash) && $_SESSION['LIST_SEQUENCE'][@sqlHash] > 0
4190
- @sequence = $_SESSION['LIST_SEQUENCE'][@sqlHash]
4188
+ if !WidgetList::RequestContext.request.key?('BUTTON_VALUE') && !WidgetList::RequestContext.session['LIST_SEQUENCE'].nil? && WidgetList::RequestContext.session.key?('LIST_SEQUENCE') && WidgetList::RequestContext.session['LIST_SEQUENCE'].key?(@sqlHash) && WidgetList::RequestContext.session['LIST_SEQUENCE'][@sqlHash] > 0
4189
+ @sequence = WidgetList::RequestContext.session['LIST_SEQUENCE'][@sqlHash]
4191
4190
  generate_limits
4192
4191
  end
4193
4192
 
@@ -4201,7 +4200,7 @@ module WidgetList
4201
4200
  pieces['<!--GROUPBY-->'] = ''
4202
4201
  end
4203
4202
 
4204
- if !@items['LIST_COL_SORT'].empty? || ($_SESSION.key?('LIST_COL_SORT') && $_SESSION['LIST_COL_SORT'].class.name == 'Hash' && $_SESSION['LIST_COL_SORT'].key?(@sqlHash))
4203
+ if !@items['LIST_COL_SORT'].empty? || (WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].class.name == 'Hash' && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash))
4205
4204
  pieces['<!--ORDERBY-->'] += ' ORDER BY '
4206
4205
  foundColumn = false
4207
4206
  if ! @items['LIST_COL_SORT'].empty?
@@ -4209,13 +4208,13 @@ module WidgetList
4209
4208
  @mongo_sort[(( @items['LIST_COL_SORT'] != 'cnt') ? '_id.' : '') + @items['LIST_COL_SORT']] = (@items['LIST_COL_SORT_ORDER'] == 'ASC') ? 1 : -1 if $is_mongo
4210
4209
  pieces['<!--ORDERBY-->'] += tick_field() + strip_aliases(@items['LIST_COL_SORT']) + tick_field() + " " + @items['LIST_COL_SORT_ORDER']
4211
4210
  else
4212
- $_SESSION['LIST_COL_SORT'][@sqlHash].each_with_index { |order,void|
4211
+ WidgetList::RequestContext.session['LIST_COL_SORT'][@sqlHash].each_with_index { |order,void|
4213
4212
  if @items['fields'].key?(order[0])
4214
4213
  foundColumn = true
4215
4214
  @mongo_sort[((order[0] != 'cnt') ? '_id.' : '') + order[0]] = (order[1] == 'ASC') ? 1 : -1 if $is_mongo
4216
4215
  pieces['<!--ORDERBY-->'] += tick_field() + strip_aliases(order[0]) + tick_field() + " " + order[1]
4217
4216
  end
4218
- } if $_SESSION.key?('LIST_COL_SORT') && $_SESSION['LIST_COL_SORT'].class.name == 'Hash' && $_SESSION['LIST_COL_SORT'].key?(@sqlHash)
4217
+ } if WidgetList::RequestContext.session.key?('LIST_COL_SORT') && WidgetList::RequestContext.session['LIST_COL_SORT'].class.name == 'Hash' && WidgetList::RequestContext.session['LIST_COL_SORT'].key?(@sqlHash)
4219
4218
  end
4220
4219
 
4221
4220
  # Add base order by
@@ -4468,17 +4467,20 @@ module WidgetList
4468
4467
  return 'mongo'
4469
4468
  else
4470
4469
  if $widget_list_db_conf.key?(db_type)
4471
- if $widget_list_db_conf[db_type]['adapter'].include?('mysql')
4470
+ database_config = $widget_list_db_conf[db_type]
4471
+ database_config = database_config['primary'] if database_config.key?('primary')
4472
+ adapter = database_config.fetch('adapter', '').to_s
4473
+ if adapter.include?('mysql')
4472
4474
  return 'mysql'
4473
- elsif $widget_list_db_conf[db_type]['adapter'].include?('postgres')
4475
+ elsif adapter.include?('postgres')
4474
4476
  return 'postgres'
4475
- elsif $widget_list_db_conf[db_type]['adapter'].include?('oracle')
4477
+ elsif adapter.include?('oracle')
4476
4478
  return 'oracle'
4477
- elsif $widget_list_db_conf[db_type]['adapter'].include?('sqlite')
4479
+ elsif adapter.include?('sqlite')
4478
4480
  return 'sqlite'
4479
- elsif $widget_list_db_conf[db_type]['adapter'].include?('sqlserver')
4481
+ elsif adapter.include?('sqlserver')
4480
4482
  return 'sqlserver'
4481
- elsif $widget_list_db_conf[db_type]['adapter'].include?('ibm')
4483
+ elsif adapter.include?('ibm')
4482
4484
  return 'db2'
4483
4485
  end
4484
4486
  end
@@ -4492,7 +4494,13 @@ module WidgetList
4492
4494
 
4493
4495
  def self.load_widget_list_yml
4494
4496
  if $widget_list_conf.nil?
4495
- $widget_list_conf = YAML.load(ERB.new(File.new(Rails.root.join("config", "widget-list.yml")).read).result)[Rails.env]
4497
+ config_file = Rails.root.join('config', 'widget-list.yml')
4498
+ $widget_list_conf = if config_file.file?
4499
+ YAML.safe_load(ERB.new(File.read(config_file)).result,
4500
+ permitted_classes: [Symbol], aliases: true).fetch(Rails.env).transform_keys(&:to_sym)
4501
+ else
4502
+ { primary: Rails.env, secondary: false, api_mode: false }
4503
+ end
4496
4504
  if Rails.root.join("app/helpers", "widget_list_helper.rb").file?
4497
4505
  require Rails.root.join("app/helpers", "widget_list_helper.rb")
4498
4506
  end
@@ -4503,10 +4511,11 @@ module WidgetList
4503
4511
  if $widget_list_db_conf.nil?
4504
4512
  if Rails.root.join("config", "mongoid.yml").file?
4505
4513
  $is_mongo = true
4506
- $widget_list_db_conf = YAML.load(ERB.new(File.new(Rails.root.join("config", "mongoid.yml")).read).result)
4514
+ $widget_list_db_conf = YAML.safe_load(ERB.new(File.read(Rails.root.join("config", "mongoid.yml"))).result,
4515
+ aliases: true)
4507
4516
  else
4508
4517
  $is_mongo = false
4509
- $widget_list_db_conf = YAML.load(ERB.new(File.new(Rails.root.join("config", "database.yml")).read).result)
4518
+ $widget_list_db_conf = Rails.application.config.database_configuration
4510
4519
  end
4511
4520
  end
4512
4521
  end
@@ -4533,8 +4542,8 @@ module WidgetList
4533
4542
  end
4534
4543
  if (@is_primary_sequel && @items['database'] == 'primary') || (@is_secondary_sequel && @items['database'] == 'secondary')
4535
4544
  return @items['view']
4536
- elsif $is_mongo || (@items['view'].respond_to?('scoped') && @items['view'].scoped.respond_to?('to_sql'))
4537
- @active_record_model = @items['view'].name.constantize if initializing
4545
+ elsif $is_mongo || @items['view'].respond_to?(:to_sql)
4546
+ @active_record_model = @items['view'].klass if initializing && @items['view'].respond_to?(:klass)
4538
4547
  new_columns = []
4539
4548
 
4540
4549
  @items['fields'].each { |column, fieldTitle|
@@ -4570,7 +4579,7 @@ module WidgetList
4570
4579
  if $is_mongo
4571
4580
  return ''
4572
4581
  else
4573
- view = @items['view'].scoped.to_sql
4582
+ view = @items['view'].to_sql
4574
4583
  sql_from = view[view.index(/FROM/),view.length]
4575
4584
  view = "SELECT #{new_columns.join(',')} " + sql_from
4576
4585
  where = ''
@@ -4589,16 +4598,9 @@ module WidgetList
4589
4598
 
4590
4599
  @has_connected = true
4591
4600
  begin
4592
- if Rails.root.join("config", "widget-list.yml").file?
4593
- WidgetList::List::load_widget_list_yml()
4594
- if $widget_list_conf.nil?
4595
- throw 'Configuration file widget-list.yml has no data. Check that (' + Rails.env + ') Rails.env matches the pointers in the file'
4596
- end
4597
- @primary_conn = $widget_list_conf[:primary]
4598
- @secondary_conn = $widget_list_conf[:secondary]
4599
- else
4600
- throw 'widget-list.yml not found'
4601
- end
4601
+ WidgetList::List.load_widget_list_yml
4602
+ @primary_conn = $widget_list_conf[:primary]
4603
+ @secondary_conn = $widget_list_conf[:secondary]
4602
4604
 
4603
4605
  @is_primary_sequel = true
4604
4606
  @is_secondary_sequel = true
@@ -4644,11 +4646,7 @@ module WidgetList
4644
4646
  else
4645
4647
  database_conn = $widget_list_conf[:secondary]
4646
4648
  end
4647
- is_sequel = true
4648
- if database_conn != false && ! database_conn.include?('://')
4649
- is_sequel = false
4650
- end
4651
- return is_sequel
4649
+ database_conn.is_a?(String) && database_conn.include?('://')
4652
4650
  end
4653
4651
 
4654
4652
  def self.get_sequel(primary=true)
@@ -4687,4 +4685,4 @@ module WidgetList
4687
4685
 
4688
4686
  end
4689
4687
 
4690
- end
4688
+ end