ransack_ui 0.0.2 → 0.0.3

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.
@@ -1,10 +1,10 @@
1
1
  = search_form_for search, :url => url_for(:action => :index), :html => {:method => :get, :class => "advanced_search"}, :remote => true do |f|
2
2
 
3
3
  = f.grouping_fields do |g|
4
- = render 'ransack/grouping_fields', :f => g, :options => options
4
+ = render 'ransack/grouping_fields', :f => g
5
5
 
6
6
  %p
7
- = link_to_add_fields t(:advanced_search_add_group), f, :grouping, options
7
+ = link_to_add_fields t(:advanced_search_add_group), f, :grouping
8
8
 
9
9
  %p
10
10
  = hidden_field_tag :distinct, '1'
@@ -4,9 +4,9 @@
4
4
 
5
5
  = f.attribute_fields do |a|
6
6
  %span.fields{ "data-object-name" => f.object_name }
7
- = a.attribute_select({:associations => %w(account tags activities emails addresses)}, :class => 'ransack_attribute')
7
+ = a.attribute_select({}, :class => 'ransack_attribute')
8
8
 
9
- = f.predicate_select options[:predicate_options] || {}, :class => 'ransack_predicate'
9
+ = f.predicate_select({}, :class => 'ransack_predicate')
10
10
 
11
11
  = f.value_fields do |v|
12
12
  %span.fields.value{ 'data-object-name' => f.object_name }
@@ -6,7 +6,7 @@
6
6
  .filters
7
7
  - f.object.build_condition unless f.object.conditions.any?
8
8
  = f.condition_fields do |c|
9
- = render 'ransack/condition_fields', :f => c, :options => options
9
+ = render 'ransack/condition_fields', :f => c
10
10
 
11
11
  %p
12
- = link_to_add_fields t(:advanced_search_add_condition), f, :condition, options
12
+ = link_to_add_fields t(:advanced_search_add_condition), f, :condition
@@ -6,8 +6,8 @@
6
6
  %li
7
7
  = link_to 'Advanced Search', '#', :"data-search-form" => "advanced_search", :class => (!params[:q] ? "" : " active")
8
8
 
9
- .search_form#basic_search{ hidden_if(params[:q]) }
10
- = render "ransack/basic_search", :options => options
9
+ .search_form#basic_search{ :style => (params[:q] ? 'display: none;' : '') }
10
+ = render "ransack/basic_search"
11
11
 
12
- .search_form#advanced_search{ hidden_if(!params[:q]) }
13
- = render "ransack/advanced_search", :options => options
12
+ .search_form#advanced_search{ :style => (!params[:q] ? 'display: none;' : '') }
13
+ = render "ransack/advanced_search"
@@ -10,7 +10,32 @@ module Ransack
10
10
  columns.map{|c| [c.name, c.type] } +
11
11
  _ransackers.keys.map {|k| [k, :string] }
12
12
  end
13
+
14
+ def self.extended(base)
15
+ alias :search :ransack unless base.method_defined? :search
16
+ base.class_eval do
17
+ class_attribute :_ransackers
18
+ class_attribute :_ransackable_associations
19
+ self._ransackers ||= {}
20
+ self._ransackable_associations ||= []
21
+ end
22
+ end
23
+
24
+ def has_ransackable_associations(associations)
25
+ self._ransackable_associations = associations
26
+ end
27
+
28
+ def ransackable_associations(auth_object = nil)
29
+ all_associations = reflect_on_all_associations.map {|a| a.name.to_s}
30
+ if self._ransackable_associations.any?
31
+ # Return intersection of all associations, and associations defined on the model
32
+ all_associations & self._ransackable_associations
33
+ else
34
+ all_associations
35
+ end
36
+ end
37
+
13
38
  end
14
39
  end
15
40
  end
16
- end
41
+ end
@@ -0,0 +1,11 @@
1
+ require 'ransack/configuration'
2
+
3
+ module Ransack
4
+ Configuration.class_eval do
5
+ # Set default predicate options for predicate_select in form builder
6
+ # This is ignored if any options are passed
7
+ def default_predicates=(options)
8
+ self.options[:default_predicates] = options
9
+ end
10
+ end
11
+ end
@@ -6,6 +6,12 @@ module Ransack
6
6
  def attribute_select(options = {}, html_options = {})
7
7
  raise ArgumentError, "attribute_select must be called inside a search FormBuilder!" unless object.respond_to?(:context)
8
8
  options[:include_blank] = true unless options.has_key?(:include_blank)
9
+
10
+ # Set default associations set on model with 'has_ransackable_associations'
11
+ if options[:associations].nil?
12
+ options[:associations] = object.context.klass.ransackable_associations
13
+ end
14
+
9
15
  bases = [''] + association_array(options[:associations])
10
16
  if bases.size > 1
11
17
  @template.select(
@@ -27,6 +33,20 @@ module Ransack
27
33
  end
28
34
  end
29
35
 
36
+ def predicate_select(options = {}, html_options = {})
37
+ options = Ransack.options[:default_predicates] || {} if options.blank?
38
+
39
+ options[:compounds] = true if options[:compounds].nil?
40
+ keys = predicate_keys(options)
41
+ # If condition is newly built with build_condition(),
42
+ # then replace the default predicate with the first in the ordered list
43
+ @object.predicate_name = keys.first if @object.default?
44
+ @template.collection_select(
45
+ @object_name, :p, keys.map {|k| [k, Translate.predicate(k)]}, :first, :last,
46
+ objectify_options(options), @default_options.merge(html_options)
47
+ )
48
+ end
49
+
30
50
  def attribute_collection_for_bases(bases)
31
51
  bases.map do |base|
32
52
  begin
@@ -1,3 +1,3 @@
1
1
  module RansackUI
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,13 +1,13 @@
1
1
  module RansackUI
2
2
  module ViewHelpers
3
- def ransack_search_form(options={})
4
- render 'ransack/search', :options => options
3
+ def ransack_search_form
4
+ render 'ransack/search'
5
5
  end
6
6
 
7
- def link_to_add_fields(name, f, type, options={})
7
+ def link_to_add_fields(name, f, type)
8
8
  new_object = f.object.send "build_#{type}"
9
9
  fields = f.send("#{type}_fields", new_object, :child_index => "new_#{type}") do |builder|
10
- render "ransack/#{type.to_s}_fields", :f => builder, :options => options
10
+ render "ransack/#{type.to_s}_fields", :f => builder
11
11
  end
12
12
  link_to name, nil, :class => "add_fields", "data-field-type" => type, "data-content" => "#{fields}"
13
13
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ransack_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-05 00:00:00.000000000 Z
12
+ date: 2012-11-06 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Framework for building a search UI with Ransack
15
15
  email:
@@ -36,6 +36,7 @@ files:
36
36
  - lib/ransack_ui.rb
37
37
  - lib/ransack_ui/rails/engine.rb
38
38
  - lib/ransack_ui/ransack_overrides/adapters/active_record/base.rb
39
+ - lib/ransack_ui/ransack_overrides/configuration.rb
39
40
  - lib/ransack_ui/ransack_overrides/context.rb
40
41
  - lib/ransack_ui/ransack_overrides/helpers/form_builder.rb
41
42
  - lib/ransack_ui/version.rb
@@ -56,7 +57,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
57
  version: '0'
57
58
  segments:
58
59
  - 0
59
- hash: -3873248513587750645
60
+ hash: -2955605175423395892
60
61
  required_rubygems_version: !ruby/object:Gem::Requirement
61
62
  none: false
62
63
  requirements:
@@ -65,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
66
  version: '0'
66
67
  segments:
67
68
  - 0
68
- hash: -3873248513587750645
69
+ hash: -2955605175423395892
69
70
  requirements: []
70
71
  rubyforge_project:
71
72
  rubygems_version: 1.8.24