will_filter 3.1.3 → 3.1.5

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 (64) hide show
  1. data/.gitignore +1 -0
  2. data/.rvmrc +1 -1
  3. data/Gemfile.lock +2 -2
  4. data/README.rdoc +0 -3
  5. data/app/assets/javascripts/will_filter/filter.js +5 -5
  6. data/app/assets/javascripts/will_filter/filter_prototype_effects.js +1 -1
  7. data/app/assets/stylesheets/will_filter/exporter.css.scss +72 -49
  8. data/app/assets/stylesheets/will_filter/filter.css.scss +1 -0
  9. data/app/controllers/will_filter/application_controller.rb +1 -1
  10. data/app/controllers/will_filter/calendar_controller.rb +1 -1
  11. data/app/controllers/will_filter/exporter_controller.rb +15 -26
  12. data/app/controllers/will_filter/filter_controller.rb +7 -1
  13. data/app/models/will_filter/filter.rb +69 -12
  14. data/app/views/will_filter/exporter/export.html.erb +26 -2
  15. data/app/views/will_filter/exporter/index.html.erb +35 -43
  16. data/app/views/will_filter/filter/_conditions.html.erb +13 -32
  17. data/app/views/will_filter/filter/_conditions_footer.html.erb +17 -0
  18. data/app/views/will_filter/filter/_conditions_header.html.erb +38 -0
  19. data/app/views/will_filter/filter/_container.html.erb +3 -25
  20. data/lib/generators/will_filter/templates/config.yml +34 -1
  21. data/lib/generators/will_filter/will_filter_generator.rb +1 -1
  22. data/lib/tasks/will_filter_tasks.rake +1 -5
  23. data/lib/will_filter.rb +1 -1
  24. data/lib/will_filter/calendar.rb +1 -1
  25. data/lib/will_filter/config.rb +9 -1
  26. data/lib/will_filter/containers/boolean.rb +1 -1
  27. data/lib/will_filter/containers/date.rb +2 -8
  28. data/lib/will_filter/containers/date_range.rb +3 -9
  29. data/lib/will_filter/containers/date_time.rb +2 -8
  30. data/lib/will_filter/containers/date_time_range.rb +4 -16
  31. data/lib/will_filter/containers/double.rb +52 -0
  32. data/lib/will_filter/containers/double_delimited.rb +50 -0
  33. data/lib/will_filter/containers/double_range.rb +64 -0
  34. data/lib/will_filter/containers/filter_list.rb +1 -1
  35. data/lib/will_filter/containers/list.rb +1 -1
  36. data/lib/will_filter/containers/nil.rb +1 -1
  37. data/lib/will_filter/containers/numeric.rb +1 -1
  38. data/lib/will_filter/containers/numeric_delimited.rb +1 -1
  39. data/lib/will_filter/containers/numeric_range.rb +1 -1
  40. data/lib/will_filter/containers/single_date.rb +3 -3
  41. data/lib/will_filter/containers/text.rb +1 -1
  42. data/lib/will_filter/containers/text_delimited.rb +1 -1
  43. data/lib/will_filter/engine.rb +1 -1
  44. data/lib/will_filter/extensions/action_controller_extension.rb +1 -1
  45. data/lib/will_filter/extensions/action_view_extension.rb +1 -1
  46. data/lib/will_filter/extensions/active_record_extension.rb +1 -1
  47. data/lib/will_filter/extensions/array_extension.rb +1 -1
  48. data/lib/will_filter/filter_condition.rb +1 -1
  49. data/lib/will_filter/filter_container.rb +21 -3
  50. data/lib/will_filter/filter_exception.rb +1 -1
  51. data/lib/will_filter/railtie.rb +1 -1
  52. data/lib/will_filter/version.rb +2 -2
  53. data/spec/containers/double_spec.rb +16 -0
  54. data/spec/fake_app.rb +6 -12
  55. data/test/dummy/app/models/event.rb +1 -1
  56. data/test/dummy/app/models/event_filter.rb +4 -0
  57. data/test/dummy/app/models/event_user_filter.rb +4 -0
  58. data/test/dummy/app/models/user_filter.rb +31 -2
  59. data/test/dummy/config/will_filter/config.yml +9 -1
  60. data/test/dummy/db/migrate/20120223232000_add_rank_to_events.rb +5 -0
  61. data/test/dummy/db/schema.rb +2 -1
  62. metadata +40 -108
  63. data/config/will_filter/config.yml +0 -97
  64. data/db/migrate/20110924023807_create_will_filter_filters.rb +0 -15
@@ -3,9 +3,33 @@
3
3
  <head>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
5
5
  <title>Filter Export Data Table</title>
6
- <%=will_filter_scripts_tag %>
6
+ <style>
7
+ body {
8
+ font:Arial 12pt;
9
+ }
10
+ th {
11
+ padding:5px;
12
+ border-bottom:1px solid #ccc;
13
+ }
14
+ td {
15
+ padding:5px;
16
+ }
17
+ </style>
7
18
  </head>
8
19
  <body>
9
- <%= will_filter_table_tag(@wf_filter.results, :columns => @wf_filter.fields) %>
20
+ <table>
21
+ <tr>
22
+ <% @wf_filter.fields.each do |field| %>
23
+ <th><%=field %></th>
24
+ <% end %>
25
+ </tr>
26
+ <% @wf_filter.results.each do |obj| %>
27
+ <tr>
28
+ <% @wf_filter.fields.each do |field| %>
29
+ <td><%=obj.send(field).to_s %></td>
30
+ <% end %>
31
+ </tr>
32
+ <% end %>
33
+ </table>
10
34
  </body>
11
35
  </html>
@@ -1,47 +1,39 @@
1
- <div style="font-size:12px;font-weight:bold;">
2
- <div style="float:right; padding-right:2px;">
3
- <%=link_to_function(image_tag("will_filter/close.gif", :title=>"Close"), "wfExporter.hide()")%>
1
+ <div class="wf_exporter_header">
2
+ <div class="end">
3
+ <%=link_to_function("&times;".html_safe, "wfExporter.hide()", :title=>"Close", :class => "close")%>
4
4
  </div>
5
-
6
5
  Exporter
7
- </div>
6
+ </div>
7
+
8
8
  <div class="wf_exporter_container">
9
- <table style="width:100%" cellpadding="0px" cellspacing="0px;">
10
- <tr>
11
- <td>
12
- <input type="checkbox" id="wf_fld_all" onClick="wfExporter.selectAllFields(this);" style="width:20px;">
13
- </td>
14
- <td>
15
- <b>Name</b>
16
- </td>
17
- <td>
18
- <b>Type</b>
19
- </td>
20
- </tr>
21
- <tr>
22
- <td colspan="3">
23
- <hr style="width:100%">
24
- </td>
25
- </tr><% @wf_filter.model_class.columns.each_with_index do |col, index| %>
26
- <tr>
27
- <td>
28
- <input type="checkbox" id="wf_fld_chk_<%=index%>" onClick="wfExporter.selectField(this);" style="width:20px;"><input type="hidden" id="wf_fld_name_<%=index%>" value="<%=col.name%>">
29
- </td>
30
- <td>
31
- <%=col.name %>
32
- </td>
33
- <td>
34
- <%=col.type %>
35
- </td>
36
- </tr>
37
- <% end %>
38
- </table>
39
- <hr>
40
- <div style="text-align:center; width:100%; padding:3px;">
41
- Format: <%= select_tag("wf_export_format_selector", options_for_select(@wf_filter.export_formats, @wf_filter.format)) %>
42
- </div>
43
- <div style="text-align:center; width:100%; padding:3px;">
44
- <%=link_to_function("<span>Export</span>".html_safe, "wfExporter.exportFilter()", :class => "wf_grey_button wf_pcb") %>
45
- <%=link_to_function("<span>Cancel</span>".html_safe, "wfExporter.hide()", :class => "wf_grey_button wf_pcb") %>
46
- </div>
9
+
10
+ <table style="width:100%" cellpadding="0px" cellspacing="0px;">
11
+ <thead>
12
+ <tr>
13
+ <td><input type="checkbox" id="wf_fld_all" onClick="wfExporter.selectAllFields(this);" style="width:20px;"></td>
14
+ <td>Name</td>
15
+ <td>Type</td>
16
+ </tr>
17
+ </thead>
18
+ <tbody>
19
+ <% @wf_filter.model_class.columns.each_with_index do |col, index| %>
20
+ <tr>
21
+ <td>
22
+ <input type="checkbox" id="wf_fld_chk_<%=index%>" onClick="wfExporter.selectField(this);" style="width:20px;"><input type="hidden" id="wf_fld_name_<%=index%>" value="<%=col.name%>">
23
+ </td>
24
+ <td><%=col.name %></td>
25
+ <td><%=col.type %></td>
26
+ </tr>
27
+ <% end %>
28
+ </tbody>
29
+ </table>
30
+
31
+ <hr>
32
+ <div class="center">
33
+ Format: <%= select_tag("wf_export_format_selector", options_for_select(@wf_filter.export_formats, @wf_filter.format)) %>
34
+ </div>
35
+ <div class="center">
36
+ <%=link_to_function("<span>Export</span>".html_safe, "wfExporter.exportFilter()", :class => "wf_grey_button wf_pcb") %>
37
+ <%=link_to_function("<span>Cancel</span>".html_safe, "wfExporter.hide()", :class => "wf_grey_button wf_pcb") %>
38
+ </div>
47
39
  </div>
@@ -1,31 +1,5 @@
1
- <div style="margin:0;padding:0;display:inline">
2
- <%= hidden_field_tag(:wf_id, wf_filter.id) %>
3
- <%= hidden_field_tag(:wf_type, wf_filter.class.name) %>
4
- <%= hidden_field_tag(:wf_dirty, "false") %>
5
- <%= hidden_field_tag(:wf_submitted, "false") %>
6
- <%= hidden_field_tag(:wf_name, wf_filter.name) %>
7
- <%= hidden_field_tag(:wf_model, wf_filter.model_class_name) %>
8
- <%= hidden_field_tag(:wf_export_format, "") %>
9
- <%= hidden_field_tag(:wf_export_fields, "") %>
10
- </div>
11
1
 
12
- <div class="header">
13
- <% if wf_filter.show_save_options? %>
14
- <div class="end">
15
- <%=link_to_function("<span>Save As New...</span>".html_safe, "wfFilter.saveFilter()", :class => "wf_grey_button wf_pcb") %>
16
- <%=link_to_function("<span>Update</span>".html_safe, "wfFilter.updateFilter()", :class => "wf_grey_button wf_pcb") %>
17
- <%=link_to_function("<span>Delete</span>".html_safe, "wfFilter.deleteFilter()", :class => "wf_grey_button wf_pcb") %>
18
- <% if wf_filter.show_export_options? %>
19
- <%=link_to_function("<span>Export Data...</span>".html_safe, "wfExporter.show(this)", :class => "wf_grey_button wf_pcb") %>
20
- <% end %>
21
- </div>
22
- <% end %>
23
- <div>
24
- <% unless wf_filter.saved_filters.empty? %>
25
- <%= select_tag(:wf_key, options_for_select(wf_filter.saved_filters, wf_filter.key), {:onChange=>"wfFilter.loadSavedFilter()"}) %>
26
- <% end %>
27
- </div>
28
- </div>
2
+ <%= render :partial => '/will_filter/filter/conditions_header', :locals => {:wf_filter => wf_filter} %>
29
3
 
30
4
  <div class="body">
31
5
 
@@ -36,6 +10,11 @@
36
10
  <% end %>
37
11
 
38
12
  <div class="filter_match_type">
13
+ <div class="end">
14
+ <small>
15
+ <%=link_to_function("Toggle Conditions", "wfFilter.toggleDebugger()") %>
16
+ </small>
17
+ </div>
39
18
  Match <%= select_tag(:wf_match, options_for_select(wf_filter.match_options, wf_filter.match), {:onChange=>"wfFilter.markDirty()"}) %>
40
19
  of the following conditions:
41
20
  </div>
@@ -48,13 +27,15 @@
48
27
  </div>
49
28
  <% else %>
50
29
  <table class="table" cellpadding="0" cellspacing="0">
51
- <%
52
- 0.upto(wf_filter.size-1) do |index|
53
- condition = wf_filter.condition_at(index)
54
- %>
55
- <%= render :partial => "/will_filter/filter/condition", :locals => {:wf_filter => wf_filter, :condition => condition, :index => index}%>
30
+ <% 0.upto(wf_filter.size-1) do |index| %>
31
+ <% condition = wf_filter.condition_at(index) %>
32
+ <%= render :partial => "/will_filter/filter/condition", :locals => {:wf_filter => wf_filter, :condition => condition, :index => index}%>
56
33
  <% end %>
57
34
  </table>
58
35
  <% end %>
59
36
 
37
+ <div id="wf_debugger" class="debugger" style="display:none;">
38
+ <%= raw(wf_filter.debug_sql_conditions) %>
39
+ </div>
40
+
60
41
  </div>
@@ -0,0 +1,17 @@
1
+ <div class="actions">
2
+ Order:
3
+ <%= select_tag(:wf_order, options_for_select(wf_filter.condition_options, wf_filter.order), {:onChange=>"markDirty()"}) %>
4
+ <%= select_tag(:wf_order_type, options_for_select(wf_filter.order_type_options, wf_filter.order_type), {:onChange=>"markDirty()"}) %>
5
+ Per Page:
6
+ <%= select_tag(:wf_per_page, options_for_select(wf_filter.per_page_options, wf_filter.per_page.to_s), {:onChange=>"markDirty()"}) %>
7
+ &nbsp;&nbsp;
8
+ <%=link_to_function("<span>Submit Filter</span>".html_safe, "wfFilter.submit()", :class => "wf_grey_button wf_pcb") %>
9
+ </div>
10
+ <div>
11
+ <%=link_to_function("<span><b>&plus;</b> Add</span>".html_safe, "wfFilter.addCondition()", :class => "wf_grey_button wf_pcb") %>
12
+ <%=link_to_function("<span>Clear</span>".html_safe, "wfFilter.removeAllConditions()", :class => "wf_grey_button wf_pcb") %>
13
+ &nbsp;&nbsp;
14
+ <span id="wf_loader" class="spinner" style="display:none;">
15
+ <%=image_tag "will_filter/spinner.gif" %> Loading...
16
+ </span>
17
+ </div>
@@ -0,0 +1,38 @@
1
+ <div style="margin:0;padding:0;display:inline">
2
+ <%= hidden_field_tag(:wf_id, wf_filter.id) %>
3
+ <%= hidden_field_tag(:wf_type, wf_filter.class.name) %>
4
+ <%= hidden_field_tag(:wf_dirty, "false") %>
5
+ <%= hidden_field_tag(:wf_submitted, "false") %>
6
+ <%= hidden_field_tag(:wf_name, wf_filter.name) %>
7
+
8
+ <% unless WillFilter::Config.require_filter_extensions? %>
9
+ <%= hidden_field_tag(:wf_model, wf_filter.model_class_name) %>
10
+ <% end %>
11
+
12
+ <%= hidden_field_tag(:wf_export_format, "") %>
13
+ <%= hidden_field_tag(:wf_export_fields, "") %>
14
+ </div>
15
+
16
+ <div class="header">
17
+ <% if wf_filter.show_export_options? %>
18
+ <div class="end" style="padding-left:3px;">
19
+ <%=link_to_function("<span>Export Data...</span>".html_safe, "wfExporter.show(this)", :class => "wf_grey_button wf_pcb") %>
20
+ </div>
21
+ <% end %>
22
+
23
+ <% if wf_filter.show_save_options? %>
24
+ <div class="end">
25
+ <%=link_to_function("<span>Save As New...</span>".html_safe, "wfFilter.saveFilter()", :class => "wf_grey_button wf_pcb") %>
26
+ <% if params[:wf_id] %>
27
+ <%=link_to_function("<span>Update</span>".html_safe, "wfFilter.updateFilter()", :class => "wf_grey_button wf_pcb") %>
28
+ <%=link_to_function("<span>Delete</span>".html_safe, "wfFilter.deleteFilter()", :class => "wf_grey_button wf_pcb") %>
29
+ <% end %>
30
+ </div>
31
+ <% end %>
32
+
33
+ <div>
34
+ <% unless wf_filter.saved_filters.empty? %>
35
+ <%= select_tag(:wf_key, options_for_select(wf_filter.saved_filters, wf_filter.key), {:onChange=>"wfFilter.loadSavedFilter()"}) %>
36
+ <% end %>
37
+ </div>
38
+ </div>
@@ -2,36 +2,14 @@
2
2
 
3
3
  <%= form_tag({}, {:method => :get, :name=>'wf_form', :id => 'wf_form', :class => 'wf_form' }) do %>
4
4
  <div class="wf_container">
5
+
5
6
  <div id="wf_filter_conditions" class="conditions">
6
- <%= render :partial=> "/will_filter/filter/conditions", :locals => {:wf_filter => wf_filter} %>
7
+ <%= render :partial=> '/will_filter/filter/conditions', :locals => { :wf_filter => wf_filter } %>
7
8
  </div>
8
9
 
9
10
  <div class="footer">
10
- <div class="actions">
11
- <small>
12
- <%=link_to_function("Toggle Conditions", "wfFilter.toggleDebugger()") %>
13
- </small>
14
- &nbsp;&nbsp;
15
- Order:
16
- <%= select_tag(:wf_order, options_for_select(wf_filter.condition_options, wf_filter.order), {:onChange=>"markDirty()"}) %>
17
- <%= select_tag(:wf_order_type, options_for_select(wf_filter.order_type_options, wf_filter.order_type), {:onChange=>"markDirty()"}) %>
18
- Per Page:
19
- <%= select_tag(:wf_per_page, options_for_select(wf_filter.per_page_options, wf_filter.per_page.to_s), {:onChange=>"markDirty()"}) %>
20
- &nbsp;&nbsp;
21
- <%=link_to_function("<span>Submit Filter</span>".html_safe, "wfFilter.submit()", :class => "wf_grey_button wf_pcb") %>
22
- </div>
23
- <div>
24
- <%=link_to_function("<span>+ Add</span>".html_safe, "wfFilter.addCondition()", :class => "wf_grey_button wf_pcb") %>
25
- <%=link_to_function("<span>- Clear</span>".html_safe, "wfFilter.removeAllConditions()", :class => "wf_grey_button wf_pcb") %>
26
- &nbsp;&nbsp;
27
- <span id="wf_loader" class="spinner" style="display:none;">
28
- <%=image_tag "will_filter/spinner.gif" %> Loading...
29
- </span>
30
- </div>
11
+ <%= render :partial => '/will_filter/filter/conditions_footer', :locals => { :wf_filter => wf_filter } %>
31
12
  </div>
32
13
 
33
- <div id="wf_debugger" class="debugger" style="display:none;">
34
- <%= raw(wf_filter.debug_sql_conditions) %>
35
- </div>
36
14
  </div>
37
15
  <% end %>
@@ -10,6 +10,34 @@
10
10
  #############################################################################
11
11
 
12
12
  defaults: &defaults
13
+
14
+ ###########################################################################
15
+ #
16
+ # require_filter_extension makes the filter into an abstract class
17
+ # and will require you to subclass it in order for the filter to be
18
+ # serializeable. The following will no longer work:
19
+ #
20
+ # @users = User.filter(:params => params)
21
+ #
22
+ # Use your own filter class instead:
23
+ #
24
+ # @users = User.filter(:params => params, :filter => UserFilter)
25
+ #
26
+ # In the subclass you must provide the model name to be filtered by overloading:
27
+ #
28
+ # def model_class
29
+ # User
30
+ # end
31
+ #
32
+ ###########################################################################
33
+
34
+ require_filter_extensions: false
35
+
36
+ ###########################################################################
37
+ # If you would like to see some JavaScript effects
38
+ # provide your own effects class and implement required methods
39
+ ###########################################################################
40
+
13
41
  effects_options:
14
42
  enabled: false
15
43
  script_path: "will_filter/filter_prototype_effects.js"
@@ -29,6 +57,9 @@ defaults: &defaults
29
57
  numeric: WillFilter::Containers::Numeric
30
58
  numeric_range: WillFilter::Containers::NumericRange
31
59
  numeric_delimited: WillFilter::Containers::NumericDelimited
60
+ double: WillFilter::Containers::Double
61
+ double_range: WillFilter::Containers::DoubleRange
62
+ double_delimited: WillFilter::Containers::DoubleDelimited
32
63
  date_time_range: WillFilter::Containers::DateTimeRange
33
64
  single_date: WillFilter::Containers::SingleDate
34
65
  date: WillFilter::Containers::Date
@@ -46,10 +77,12 @@ defaults: &defaults
46
77
  smallint: [nil, numeric, numeric_range, numeric_delimited]
47
78
  integer: [nil, numeric, numeric_range, numeric_delimited]
48
79
  int: [nil, numeric, numeric_range, numeric_delimited]
49
- double: [nil, numeric, numeric_range, numeric_delimited]
80
+ float: [nil, double, double_range, double_delimited]
81
+ double: [nil, double, double_range, double_delimited]
50
82
  timestamp: [nil, date_time, date_time_range, single_date]
51
83
  datetime: [nil, date_time, date_time_range, single_date]
52
84
  date: [nil, date, date_range]
85
+ char: [nil, text, text_delimited]
53
86
  character: [nil, text, text_delimited]
54
87
  varchar: [nil, text, text_delimited]
55
88
  text: [nil, text, text_delimited]
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2012 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2012 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -23,9 +23,5 @@
23
23
 
24
24
  namespace :will_filter do
25
25
 
26
- desc "Sync extra files from will_filter plugin."
27
- task :sync do
28
- system "rsync -ruv vendor/plugins/will_filter/config/wf ./config"
29
- end
30
26
 
31
27
  end
data/lib/will_filter.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2012 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2012 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2012 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -44,6 +44,14 @@ module WillFilter
44
44
  @config ||= load_yml("/config/will_filter/config.yml")
45
45
  end
46
46
 
47
+ def self.require_filter_extensions?
48
+ config[:require_filter_extensions]
49
+ end
50
+
51
+ def self.disable_filter_saving?
52
+ config[:disable_filter_saving]
53
+ end
54
+
47
55
  def self.effects_options
48
56
  config[:effects_options]
49
57
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2011 Michael Berkovich
2
+ # Copyright (c) 2010-2012 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2011 Michael Berkovich
2
+ # Copyright (c) 2010-2012 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -30,13 +30,7 @@ module WillFilter
30
30
 
31
31
  def validate
32
32
  return "Value must be provided" if value.blank?
33
- return "Value must be a valid date (2008-01-01)" if date == nil
34
- end
35
-
36
- def date
37
- @date ||= Time.parse(value).to_date
38
- rescue ArgumentError
39
- nil
33
+ return "Value must be a valid date (2008-01-01)" if date.nil?
40
34
  end
41
35
 
42
36
  def sql_condition
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2011 Michael Berkovich
2
+ # Copyright (c) 2010-2012 Michael Berkovich
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -36,15 +36,9 @@ module WillFilter
36
36
 
37
37
  def validate
38
38
  return "Start value must be provided" if @start_date.blank?
39
- return "Start value must be a valid date (2008-01-01)" if date(@start_date) == nil
39
+ return "Start value must be a valid date (2008-01-01)" if date(@start_date).nil?
40
40
  return "End value must be provided" if @end_date.blank?
41
- return "End value must be a valid date (2008-01-01)" if date(@end_date) == nil
42
- end
43
-
44
- def date(dt)
45
- Time.parse(dt).to_date
46
- rescue ArgumentError
47
- nil
41
+ return "End value must be a valid date (2008-01-01)" if date(@end_date).nil?
48
42
  end
49
43
 
50
44
  def sql_condition