radiant-sphinx_search-extension 0.9.1 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.1
1
+ 0.9.3
@@ -0,0 +1,6 @@
1
+ ---
2
+ en:
3
+ search : 'Search'
4
+ result :
5
+ one : '1 result'
6
+ other : '{{count}} results'
@@ -7,8 +7,9 @@ module SphinxSearch
7
7
  base.define_index do
8
8
  set_property :delta => true, :group_concat_max_len => SphinxSearch.content_length || 8.kilobytes
9
9
  set_property :field_weights => { 'title' => 100 }
10
- indexes title, parts.content
11
- has updated_at, status_id, virtual
10
+ indexes title, :sortable => true
11
+ indexes parts.content
12
+ has created_at, updated_at, status_id, virtual
12
13
  end
13
14
 
14
15
  base.extend ClassMethods
@@ -15,18 +15,18 @@ module SphinxSearch
15
15
  desc %{
16
16
  Renders a basic search form. Takes optional @id@ and @class@ values if
17
17
  you need to target the form with specific CSS or JS; also takes an optional
18
- @value@ tag as the label on the input. If for some reason you don't want
18
+ @button@ tag as the label on the input. If for some reason you don't want
19
19
  to use the default search term paramater @q@, you can override this by
20
20
  defining @SphinxSearch.param_name@ in @/config/initializers/sphinx_search.rb@.
21
21
 
22
22
  *Usage:*
23
23
 
24
- <pre><code><r:search:form [id="form-id"] [class="form-class"] [value="Go"] /></code></pre>
24
+ <pre><code><r:search:form [id="form-id"] [class="form-class"] [button="Go"] /></code></pre>
25
25
  }
26
26
  tag 'search:form' do |tag|
27
27
  form_id = tag.attr['id'] || 'search-form'
28
28
  form_class = tag.attr['class'] || 'search-form'
29
- form_value = tag.attr['value'] || 'Search'
29
+ form_value = tag.attr['button'] || I18n.translate('search')
30
30
  form_input = SphinxSearch.param_name || 'q'
31
31
  return <<-HTML
32
32
  <form action="#{tag.globals.page.url}" method="get" id="#{form_id}" class="#{form_class}">
@@ -41,9 +41,14 @@ module SphinxSearch
41
41
  one result was found. Takes a @paginated@ attribute and all the standard
42
42
  pagination attributes.
43
43
 
44
+ Additional Thinking Sphinx options: @order@ and @sort_mode@ are passed
45
+ directly to Sphinx. Valid orderable attributes are @created_at@,
46
+ @updated_at@, @status_id@, @virtual@, and @title@. @sort_mode@ defaults
47
+ to @asc@ (ascending); to reverse this, use @sort_mode="desc"@.
48
+
44
49
  *Usage:*
45
50
 
46
- <pre><code><r:search:results [paginated="false|true"] [per_page="..."] [...other pagination attributes]>...</r:search:results></code></pre>
51
+ <pre><code><r:search:results [paginated="false|true"] [per_page="..."] [order="..."] [sort_mode="ASC|DESC"] [...other pagination attributes]>...</r:search:results></code></pre>
47
52
  }
48
53
  tag 'search:results' do |tag|
49
54
  options = thinking_sphinx_options(tag)
@@ -73,8 +78,12 @@ module SphinxSearch
73
78
  <pre><code><r:search:results:count [label="..."] /></code></pre>
74
79
  }
75
80
  tag 'search:results:count' do |tag|
76
- label = tag.attr['label'] || 'result'
77
- pluralize tag.globals.results.total_entries, label
81
+ count = tag.globals.results.total_entries
82
+ if label = tag.attr['label']
83
+ pluralize count, label
84
+ else
85
+ I18n.translate('result', :count => count)
86
+ end
78
87
  end
79
88
 
80
89
  desc %{
@@ -159,11 +168,13 @@ module SphinxSearch
159
168
  end
160
169
 
161
170
  def thinking_sphinx_options(tag)
171
+ options = tag.attr.symbolize_keys.slice(:order, :sort_mode)
172
+ [:order, :sort_mode].each { |attr| options[attr] &&= options[attr].to_sym }
162
173
  {
163
174
  :with => { :status_id => 100, :virtual => false },
164
175
  :without => { :class_crc => SphinxSearch.hidden_classes.map(&:to_crc32) },
165
176
  :retry_stale => true
166
- }
177
+ }.merge(options)
167
178
  end
168
179
  end
169
180
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{radiant-sphinx_search-extension}
8
- s.version = "0.9.1"
8
+ s.version = "0.9.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Josh French", "Kunal Shah", "Justin Blecher"]
12
- s.date = %q{2010-08-08}
12
+ s.date = %q{2010-08-14}
13
13
  s.description = %q{Adds fulltext search capability to Radiant content via Thinking Sphinx.}
14
14
  s.email = %q{git@digitalpulp.com}
15
15
  s.extra_rdoc_files = [
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  "Rakefile",
22
22
  "VERSION",
23
23
  "app/models/search_page.rb",
24
- "app/views/admin/pages/_search_toggle.haml",
24
+ "config/locales/en.yml",
25
25
  "db/migrate/20100808155751_add_delta_to_pages.rb",
26
26
  "lib/radiant-sphinx_search-extension.rb",
27
27
  "lib/sphinx_search.rb",
@@ -16,10 +16,18 @@ describe Page do
16
16
  end
17
17
 
18
18
  describe "#thinking_sphinx_options" do
19
- it "should description" do
19
+ before do
20
+ @tag = stub(:tag, :attr => { 'order' => 'title' })
21
+ end
22
+ it "should omit hidden classes" do
20
23
  SphinxSearch.hidden_classes = %w(FileNotFoundPage)
21
- opts = SearchPage.new.send :thinking_sphinx_options, nil
24
+ opts = SearchPage.new.send :thinking_sphinx_options, @tag
22
25
  opts[:without][:class_crc].should include('FileNotFoundPage'.to_crc32)
23
26
  end
27
+
28
+ it "should convert Sphinx options to TS format" do
29
+ opts = SearchPage.new.send :thinking_sphinx_options, @tag
30
+ opts[:order].should == :title
31
+ end
24
32
  end
25
33
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 9
8
- - 1
9
- version: 0.9.1
8
+ - 3
9
+ version: 0.9.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Josh French
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-08-08 00:00:00 -04:00
19
+ date: 2010-08-14 00:00:00 -04:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -59,7 +59,7 @@ files:
59
59
  - Rakefile
60
60
  - VERSION
61
61
  - app/models/search_page.rb
62
- - app/views/admin/pages/_search_toggle.haml
62
+ - config/locales/en.yml
63
63
  - db/migrate/20100808155751_add_delta_to_pages.rb
64
64
  - lib/radiant-sphinx_search-extension.rb
65
65
  - lib/sphinx_search.rb
@@ -1,15 +0,0 @@
1
- - content_for :page_css do
2
- :plain
3
- #page-search-status .BoxFix { padding: 4px 0; }
4
-
5
- %tr#page-search-status
6
- %th.label Search
7
- %td.field
8
- .BoxFix
9
- %ul.Inputs.HorizList
10
- %li
11
- = radio_button :page, :searchable, true, :class => 'RadioInput'
12
- %label{:for => 'page_searchable_true' } Searchable
13
- %li
14
- = radio_button :page, :searchable, false, :class => 'RadioInput'
15
- %label{:for => 'page_searchable_false' } Invisible to Search