recordselect 3.3.6 → 3.3.7

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.
@@ -38,6 +38,11 @@
38
38
  clear: both;
39
39
  }
40
40
 
41
+ .record-select ol.scrollable {
42
+ max-height: 200px;
43
+ overflow: auto;
44
+ }
45
+
41
46
  .record-select .record, .record-select a {
42
47
  cursor: pointer;
43
48
  color: #0066cc;
@@ -5,7 +5,7 @@ pagination_url_params = params.merge(:controller => controller, :action => :brow
5
5
  prev_url = url_for(pagination_url_params.merge(:page => page.prev.number)) if page.prev?
6
6
  next_url = url_for(pagination_url_params.merge(:page => page.next.number)) if page.next?
7
7
  -%>
8
- <ol>
8
+ <%= content_tag :ol, :class => ('scrollable' unless record_select_config.pagination?) do %>
9
9
  <li class="found"><%= rs_(:records_found, :count => page.pager.count,
10
10
  :model => record_select_config.model.model_name.human(:count => page.pager.count).downcase) %></li>
11
11
  <% if page.prev? -%>
@@ -21,11 +21,11 @@ next_url = url_for(pagination_url_params.merge(:page => page.next.number)) if pa
21
21
  <%= render_record_from_config(record) %>
22
22
  </li>
23
23
  <% end -%>
24
- <% if page.next? -%>
24
+ <% if record_select_config.pagination? && page.next? -%>
25
25
  <li class="pagination next">
26
26
  <%= link_to (rs_(:next_items, :count => page.pager.per_page) + " " + image_tag('record_select/next.gif', :alt => rs_(:next))).html_safe,
27
27
  {:url => next_url},
28
28
  {:href => next_url, :method => :get, :remote => true} %>
29
29
  </li>
30
30
  <% end -%>
31
- </ol>
31
+ <% end %>
@@ -4,11 +4,15 @@ module RecordSelect
4
4
  # params => [:page, :search]
5
5
  def browse
6
6
  conditions = record_select_conditions
7
- klass = record_select_model.where(conditions).includes(record_select_includes)
8
- @count = klass.count
7
+ user_includes = record_select_includes
8
+ klass = record_select_model.where(conditions).includes(user_includes)
9
+ klass = klass.references(user_includes) if Rails::VERSION::MAJOR >= 4 && user_includes.present?
10
+ @count = klass.count if record_select_config.pagination?
9
11
  @count = @count.length if @count.is_a? ActiveSupport::OrderedHash
10
12
  pager = ::Paginator.new(@count, record_select_config.per_page) do |offset, per_page|
11
- klass.select(record_select_select).includes(record_select_config.include).order(record_select_config.order_by).limit(per_page).offset(offset).to_a
13
+ search = record_select_select ? klass.select(record_select_select) : klass
14
+ search = search.limit(per_page).offset(offset) if record_select_config.pagination?
15
+ search.includes(record_select_config.include).order(record_select_config.order_by).to_a
12
16
  end
13
17
  @page = pager.page(params[:page] || 1)
14
18
 
@@ -32,7 +32,6 @@ module RecordSelect
32
32
  # mainly to define extra fields that can be used for
33
33
  # specialized sorting.
34
34
  def record_select_select
35
- '*'
36
35
  end
37
36
 
38
37
  # generate conditions from params[:search]
@@ -3,20 +3,14 @@ module RecordSelect
3
3
  class Config
4
4
  def initialize(klass, options = {})
5
5
  @klass = klass
6
-
7
6
  @notify = block_given? ? proc : options[:notify]
8
-
9
7
  @per_page = options[:per_page]
10
-
11
8
  @search_on = [options[:search_on]].flatten unless options[:search_on].nil?
12
-
13
9
  @order_by = options[:order_by]
14
-
15
10
  @full_text_search = options[:full_text_search]
16
-
17
11
  @label = options[:label]
18
-
19
12
  @include = options[:include]
13
+ @pagination = options.include?(:pagination) ? options[:pagination] : true
20
14
  end
21
15
 
22
16
  def self.js_framework=(framework)
@@ -31,6 +25,10 @@ module RecordSelect
31
25
  end
32
26
  end
33
27
 
28
+ def pagination?
29
+ @pagination
30
+ end
31
+
34
32
  # The model object we're browsing
35
33
  def model
36
34
  @model ||= klass.to_s.camelcase.constantize
@@ -13,7 +13,7 @@ module RecordSelectHelper
13
13
 
14
14
  assert_controller_responds(options[:params][:controller])
15
15
 
16
- html = link_to_function(name, '', options[:html])
16
+ html = link_to(name, '#', options[:html])
17
17
  html << javascript_tag("new RecordSelect.Dialog(#{options[:html][:id].to_json}, #{url_for(options[:params]).to_json}, {onselect: #{options[:onselect] || ''}})")
18
18
 
19
19
  return html
@@ -37,8 +37,6 @@ module RecordSelectHelper
37
37
  options[:class] ||= ''
38
38
  options[:class] << ' recordselect'
39
39
 
40
- ActiveSupport::Deprecation.warn 'onchange option is deprecated. Bind recordselect:change event instead.' if options[:onchange]
41
-
42
40
  controller = assert_controller_responds(options.delete(:controller))
43
41
  params = options.delete(:params)
44
42
  record_select_options = {}
@@ -72,8 +70,6 @@ module RecordSelectHelper
72
70
  options[:class] ||= ''
73
71
  options[:class] << ' recordselect'
74
72
 
75
- ActiveSupport::Deprecation.warn 'onchange option is deprecated. Bind recordselect:change event instead.' if options[:onchange]
76
-
77
73
  controller = assert_controller_responds(options.delete(:controller))
78
74
  params = options.delete(:params)
79
75
  record_select_options = {}
@@ -88,23 +84,6 @@ module RecordSelectHelper
88
84
  return html
89
85
  end
90
86
 
91
- # Assists with the creation of an observer for the :onchange option of the record_select_field method.
92
- # Currently only supports building an Ajax.Request based on the id of the selected record.
93
- #
94
- # options[:url] should be a hash with all the necessary options *except* :id. that parameter
95
- # will be provided based on the selected record.
96
- #
97
- # Question: if selecting users, what's more likely?
98
- # /users/5/categories
99
- # /categories?user_id=5
100
- def record_select_observer(options = {})
101
- fn = ""
102
- fn << "function(id, value) {"
103
- fn << "var url = #{url_for(options[:url].merge(:id => ":id:")).to_json}.replace(/:id:/, id);"
104
- fn << "new Ajax.Request(url);"
105
- fn << "}"
106
- end
107
-
108
87
  # Adds a RecordSelect-based form field for multiple selections. The values submit using a list of hidden inputs.
109
88
  #
110
89
  # *Arguments*
@@ -132,10 +111,8 @@ module RecordSelectHelper
132
111
  html << hidden_field_tag("#{name}[]", '', :id => nil)
133
112
  html << content_tag('ul', '', :class => 'record-select-list');
134
113
 
135
- # js identifier so we can talk to it.
136
- widget = "rs_%s" % name.gsub(/[\[\]]/, '_').chomp('_')
137
114
  url = url_for({:action => :browse, :controller => controller.controller_path}.merge(params))
138
- html << javascript_tag("#{widget} = new RecordSelect.Multiple(#{options[:id].to_json}, #{url.to_json}, #{record_select_options.to_json});")
115
+ html << javascript_tag("new RecordSelect.Multiple(#{options[:id].to_json}, #{url.to_json}, #{record_select_options.to_json});")
139
116
 
140
117
  return html
141
118
  end
@@ -2,7 +2,7 @@ module RecordSelect
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 3
5
- PATCH = 6
5
+ PATCH = 7
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recordselect
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.6
4
+ hash: 5
5
+ prerelease:
6
+ segments:
7
+ - 3
8
+ - 3
9
+ - 7
10
+ version: 3.3.7
5
11
  platform: ruby
6
12
  authors:
7
13
  - Sergio Cambra
@@ -11,39 +17,54 @@ autorequire:
11
17
  bindir: bin
12
18
  cert_chain: []
13
19
 
14
- date: 2014-05-20 00:00:00 Z
20
+ date: 2014-09-25 00:00:00 Z
15
21
  dependencies:
16
22
  - !ruby/object:Gem::Dependency
23
+ type: :development
17
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
18
26
  requirements:
19
- - &id004
20
- - ">="
27
+ - - ">="
21
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
22
32
  version: "0"
23
33
  version_requirements: *id001
24
- prerelease: false
25
- type: :development
26
34
  name: shoulda
35
+ prerelease: false
27
36
  - !ruby/object:Gem::Dependency
37
+ type: :development
28
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
29
40
  requirements:
30
41
  - - ~>
31
42
  - !ruby/object:Gem::Version
43
+ hash: 23
44
+ segments:
45
+ - 1
46
+ - 0
47
+ - 0
32
48
  version: 1.0.0
33
49
  version_requirements: *id002
34
- prerelease: false
35
- type: :development
36
50
  name: bundler
51
+ prerelease: false
37
52
  - !ruby/object:Gem::Dependency
53
+ type: :runtime
38
54
  requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
39
56
  requirements:
40
57
  - - ">="
41
58
  - !ruby/object:Gem::Version
59
+ hash: 5
60
+ segments:
61
+ - 3
62
+ - 1
63
+ - 3
42
64
  version: 3.1.3
43
65
  version_requirements: *id003
44
- prerelease: false
45
- type: :runtime
46
66
  name: rails
67
+ prerelease: false
47
68
  description: RecordSelect is a Rails widget to help you pick one record out of many. I designed it as a more usable and performant alternative to generating a massive dropdown list
48
69
  email: activescaffold@googlegroups.com
49
70
  executables: []
@@ -80,31 +101,40 @@ files:
80
101
  - lib/recordselect.rb
81
102
  - vendor/assets/javascripts/jquery.visible.min.js
82
103
  - MIT-LICENSE
83
- - CHANGELOG
84
104
  - README
85
105
  - test/recordselect_test.rb
86
106
  homepage: http://github.com/scambra/recordselect
87
107
  licenses:
88
108
  - MIT
89
- metadata: {}
90
-
91
109
  post_install_message:
92
110
  rdoc_options: []
93
111
 
94
112
  require_paths:
95
113
  - lib
96
114
  required_ruby_version: !ruby/object:Gem::Requirement
115
+ none: false
97
116
  requirements:
98
- - *id004
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ hash: 3
120
+ segments:
121
+ - 0
122
+ version: "0"
99
123
  required_rubygems_version: !ruby/object:Gem::Requirement
124
+ none: false
100
125
  requirements:
101
- - *id004
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
131
+ version: "0"
102
132
  requirements: []
103
133
 
104
134
  rubyforge_project:
105
- rubygems_version: 2.0.7
135
+ rubygems_version: 1.8.29
106
136
  signing_key:
107
- specification_version: 4
137
+ specification_version: 3
108
138
  summary: RecordSelect widget as a replacement for massive drop down lists
109
139
  test_files:
110
140
  - test/recordselect_test.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA512:
3
- metadata.gz: 96e935c1dd9b5a9d862c2ce81b5de91cf93e049579cc44bf86b0c1eccfa3837ff0ac255993179c51c46e406f31ff6a8c568c074a9434c743a630b7089ef19c55
4
- data.tar.gz: 2ff6e3c2b1616188c9ce3cf30972b51d909bc0d94e13e7094e9ebbdf30368d3690c3fc1286cefd94c1e8e8592459588822e6911ad4c729465eea37e2a108e919
5
- SHA1:
6
- metadata.gz: c3f0107ec456816f71388d623c3ed258c0876601
7
- data.tar.gz: efeca11a9905d60ffe6ef1420aa3aaed394dc9ba
data/CHANGELOG DELETED
@@ -1,25 +0,0 @@
1
- 1.0
2
- * record_select_field always searches on the latest string
3
- * R.S. dialog closes on mousedown instead of click (because sometimes clicks are intercepted)
4
- * R.S. layers over <select> boxes in IE 6
5
- * record_select_field now opens R.S. even when the field loads with focus
6
- * new :onchange option for record_select_field, to observe selection events
7
-
8
- 1.0rc1
9
- * helpers complain if the controller they're configured for doesn't use recordselect
10
- * when using keyboard navigation, hitting "enter" to select a record no longer submits the form
11
- * if text field is empty when dialog is closed, then recordselect will empty the hidden field as well (lets you deselect)
12
- * support for multiple selections (record_multi_select_helper)
13
- * param-based search conditions are smarter - can search numeric fields as well
14
- * using record_select_conditions_from_controller instead of conditions_for_collection. also added a new record_select_includes override method.
15
- * helpers now accept a :class option
16
- * fixed bug with url escaping when helpers were configured with multiple parameters
17
- * new :label configuration option. it's a proc - the default one calls record.to_label (for backwards compatibility).
18
- * cleaned up merge_conditions to use activerecord's sanitize_sql.
19
- * div.record-select-container now has a high z-index so it will by default be visible above other absolutely positioned elements.
20
-
21
- 0.9
22
- stuff
23
-
24
- 0.1
25
- stuff