meta_search 0.9.11 → 1.0.0

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.
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ Changes since 0.9.11 (2011-01-06):
2
+ * Doc updates only.
3
+
1
4
  Changes since 0.9.10 (2010-11-18):
2
5
  * Skip attempts to sort if someone passes an empty string to meta_sort
3
6
  * Allow conditions on search_methods, (attr|assoc)_(un)?searchable using :if.
data/README.rdoc CHANGED
@@ -273,12 +273,12 @@ MetaSearch adds a helper for this:
273
273
  lets you sandwich a list of fields, each in hash format, between the attribute and the usual
274
274
  options hash. See MetaSearch::Helpers::FormBuilder for more info.
275
275
 
276
- === check_boxes and collection_check_boxes
276
+ === checks and collection_checks
277
277
 
278
278
  If you need to get an array into your where, and you don't care about parameter order,
279
279
  you might choose to use a select or collection_select with multiple selection enabled,
280
280
  but everyone hates multiple selection boxes. MetaSearch adds a couple of additional
281
- helpers, +check_boxes+ and +collection_check_boxes+ to handle multiple selections in a
281
+ helpers, +checks+ and +collection_checks+ to handle multiple selections in a
282
282
  more visually appealing manner. They can be called with or without a block. Without a
283
283
  block, you get an array of MetaSearch::Check objects to do with as you please.
284
284
 
@@ -286,7 +286,7 @@ With a block, each check is yielded to your template, like so:
286
286
 
287
287
  <h4>How many heads?</h4>
288
288
  <ul>
289
- <% f.check_boxes :number_of_heads_in,
289
+ <% f.checks :number_of_heads_in,
290
290
  [['One', 1], ['Two', 2], ['Three', 3]], :class => 'checkboxy' do |check| %>
291
291
  <li>
292
292
  <%= check.box %>
@@ -363,6 +363,50 @@ Excluded attributes on a model will be honored across associations, so if an Art
363
363
  Then your call to <tt>Article.search</tt> will allow <tt>:comments_body_contains</tt>
364
364
  but not <tt>:comments_user_id_equals</tt> to be passed.
365
365
 
366
+ === Conditional access to searches
367
+
368
+ <tt>search_methods</tt>, <tt>attr_searchable</tt>, <tt>attr_unsearchable</tt>,
369
+ <tt>assoc_searchable</tt>, and <tt>assoc_unsearchable</tt> all accept an <tt>:if</tt>
370
+ option. If present, it should specify a Proc (or other object responding to <tt>call</tt>)
371
+ that accepts a single parameter. This parameter will be the instance of the MetaSearch::Builder
372
+ that gets created by a call to Model.search. Any unused search options (the second hash param)
373
+ that get passed to Model.search will be available via the Builder object's <tt>options</tt>
374
+ reader, and can be used for access control via this proc/object.
375
+
376
+ Example:
377
+
378
+ assoc_unsearchable :notes,
379
+ :if => proc {|s| s.options[:access] == 'blocked' || !s.options[:access]}
380
+
381
+ === Localization
382
+
383
+ MetaSearch supports i18n localization in a few different ways. Consider this abbreviated
384
+ example "flanders" locale:
385
+
386
+ flanders:
387
+ activerecord:
388
+ attributes:
389
+ company:
390
+ name: "Company name-diddly"
391
+ developer:
392
+ name: "Developer name-diddly"
393
+ salary: "Developer salary-doodly"
394
+ meta_search:
395
+ or: 'or-diddly'
396
+ predicates:
397
+ contains: "%{attribute} contains-diddly"
398
+ equals: "%{attribute} equals-diddly"
399
+ attributes:
400
+ company:
401
+ reverse_name: "Company reverse name-diddly"
402
+ developer:
403
+ name_contains: "Developer name-diddly contains-aroonie"
404
+
405
+ First, MetaSearch will use a key found under meta_search.attributes.model_name.attribute_name,
406
+ if it exists. As a fallback, it will use a localization based on the predicate type, along with
407
+ the usual ActiveRecord attribute localization (the activerecord.attributes.model_name keys above).
408
+ Additionally, a localized "or" can be specified for multi-column searches.
409
+
366
410
  == Contributions
367
411
 
368
412
  There are several ways you can help MetaSearch continue to improve.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.11
1
+ 1.0.0
data/meta_search.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{meta_search}
8
- s.version = "0.9.11"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ernie Miller"]
12
- s.date = %q{2011-01-06}
12
+ s.date = %q{2011-01-17}
13
13
  s.description = %q{
14
14
  Allows simple search forms to be created against an AR3 model
15
15
  and its associations, has useful view helpers for sort links
@@ -17,19 +17,7 @@ class TestViewHelpers < ActionView::TestCase
17
17
  include router.url_helpers
18
18
 
19
19
  def setup
20
- @controller = Class.new do
21
-
22
- attr_reader :url_for_options
23
- def url_for(options)
24
- @url_for_options = options
25
- "http://www.example.com"
26
- end
27
-
28
- def _routes
29
- @routes ||= ActionDispatch::Routing::RouteSet.new
30
- end
31
- end
32
- @controller = @controller.new
20
+ @controller = ActionView::TestCase::TestController.new
33
21
  end
34
22
 
35
23
  context "A search against Company and a search against Developer" do
metadata CHANGED
@@ -3,10 +3,10 @@ name: meta_search
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
+ - 1
6
7
  - 0
7
- - 9
8
- - 11
9
- version: 0.9.11
8
+ - 0
9
+ version: 1.0.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ernie Miller
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-06 00:00:00 -05:00
17
+ date: 2011-01-17 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency