filterrific 1.0.1 → 1.1.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/doc/todo.md DELETED
@@ -1,21 +0,0 @@
1
- To make it work on Rails 3.1:
2
-
3
- * follow kaminari gem for recipe
4
- * implement new model api
5
- * leave view and controller as is
6
- * bump version to 1.0.0 (not backwards compatible)
7
-
8
- Later:
9
- * build filterrific-recipes on github wiki
10
- * update readme
11
- * update view and controller apis
12
-
13
-
14
- # Implementation Plan for Filterrific
15
-
16
- ## Version 0.1.0: Rebuild current Rails2 functionality
17
-
18
- ## Add DSL and scope generator
19
- ## Write specs (http://avdi.org/devblog/2011/04/07/rspec-is-for-the-literate/ also read comments about be_...!)
20
- ## Add Filterrific form builder
21
-
data/doc/workflow.md DELETED
@@ -1,17 +0,0 @@
1
- # Workflow to Maintain This Gem
2
-
3
- 1. Update code and commit it.
4
- 2. Bump the version with one of the rake tasks:
5
- * `rake version:bump:patch` 1.5.3 -> 1.5.4
6
- * `rake version:bump:minor` 1.5.3 -> 1.6.0
7
- * `rake version:bump:major` 1.5.3 -> 2.0.0
8
- * `rake version:write MAJOR=2 MINOR=3 PATCH=6` 1.5.3 -> 2.3.6
9
- 3. Add entry to CHANGELOG:
10
- * h1 for major release
11
- * h2 for minor release
12
- * h3 for patch release
13
- 4. Release it.
14
- * `rake release`
15
- * Optionally release it to Rubyforge: `rake rubyforge:release`
16
- * Optionally release it to Gemcutter: `rake gemcutter:release`
17
- 5. Rinse and repeat
data/filterrific.gemspec DELETED
@@ -1,75 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{filterrific}
8
- s.version = "1.0.1"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jo Hund"]
12
- s.date = %q{2011-11-09}
13
- s.description = %q{
14
- The Rails User Interface solution for filtering your ActiveRecord lists:
15
-
16
- * Built from the ground up for Rails3
17
- * Build filter forms with ease
18
- * Filter ActiveRecord lists using AR scopes
19
- * Shuttle filter parameters from view to controller to model in a RESTful way
20
- * Auto-generate scopes for AR associations (Planned)
21
- * Form builder for filter UI forms (Planned)
22
- }
23
- s.email = %q{jhund@clearcove.ca}
24
- s.extra_rdoc_files = [
25
- "LICENSE",
26
- "README.rdoc"
27
- ]
28
- s.files = [
29
- "CHANGELOG.md",
30
- "LICENSE",
31
- "README.rdoc",
32
- "Rakefile",
33
- "VERSION",
34
- "doc/Overview diagram.graffle/QuickLook/Preview.pdf",
35
- "doc/Overview diagram.graffle/QuickLook/Thumbnail.tiff",
36
- "doc/Overview diagram.graffle/data.plist",
37
- "doc/Overview diagram.graffle/image1.tiff",
38
- "doc/development_notes/api_design.txt",
39
- "doc/development_notes/controller_api.txt",
40
- "doc/development_notes/model_api.rb",
41
- "doc/development_notes/view_api.txt",
42
- "doc/documentation.md",
43
- "doc/ideas.txt",
44
- "doc/todo.md",
45
- "doc/workflow.md",
46
- "filterrific.gemspec",
47
- "lib/filterrific.rb",
48
- "lib/filterrific/model_mixin.rb",
49
- "lib/filterrific/param_set.rb",
50
- "lib/filterrific/railtie.rb",
51
- "lib/filterrific/view_helpers.rb",
52
- "test/helper.rb",
53
- "test/test_filterrific.rb"
54
- ]
55
- s.homepage = %q{http://github.com/jhund/filterrific}
56
- s.require_paths = ["lib"]
57
- s.rubygems_version = %q{1.5.2}
58
- s.summary = %q{The Rails User Interface solution for filtering your ActiveRecord lists.}
59
-
60
- if s.respond_to? :specification_version then
61
- s.specification_version = 3
62
-
63
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
64
- s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
65
- s.add_development_dependency(%q<yard>, [">= 0"])
66
- else
67
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
68
- s.add_dependency(%q<yard>, [">= 0"])
69
- end
70
- else
71
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
72
- s.add_dependency(%q<yard>, [">= 0"])
73
- end
74
- end
75
-
@@ -1,48 +0,0 @@
1
- module Filterrific::ModelMixin
2
-
3
- def self.included(base)
4
- base.send :extend, ClassMethods
5
- end
6
-
7
- module ClassMethods
8
-
9
- # Adds filterrific behavior to class when called like so:
10
- #
11
- # filterrific(
12
- # :defaults => { :sorted_by => "created_at_asc" },
13
- # :scope_names => [:sorted_by, :search_query, :with_state]
14
- # )
15
- #
16
- def filterrific(options = {})
17
- # send :include, InstanceMethods
18
- cattr_accessor :default_filterrific_params
19
- cattr_accessor :filterrific_scope_names
20
- self.default_filterrific_params = (options[:defaults] || {}).stringify_keys
21
- self.filterrific_scope_names = (options[:scope_names] || []).map { |e| e.to_s }
22
- end
23
-
24
- # Returns AR relation based on given filterrific_param_set.
25
- #
26
- # ModelClass.filterrific_find(@filterrific_param_set)
27
- #
28
- def filterrific_find(filterrific_param_set)
29
- unless filterrific_param_set.is_a?(Filterrific::ParamSet)
30
- raise(ArgumentError, "Invalid Filterrific::ParamSet: #{ filterrific_param_set.inspect }")
31
- end
32
-
33
- # set initial ar_proxy to including class
34
- ar_proxy = self
35
-
36
- # apply filterrific params
37
- self.filterrific_scope_names.each do |scope_name|
38
- scope_param = filterrific_param_set.send(scope_name)
39
- next if scope_param.blank? # skip blank scope_params
40
- ar_proxy = ar_proxy.send(scope_name, scope_param)
41
- end
42
-
43
- ar_proxy
44
- end
45
-
46
- end
47
-
48
- end
@@ -1,25 +0,0 @@
1
- require 'filterrific'
2
- require 'rails'
3
-
4
- module Filterrific
5
-
6
- class Railtie < Rails::Railtie
7
-
8
- initializer "filterrific.model_mixin" do |app|
9
- require 'filterrific/model_mixin'
10
- ActiveRecord::Base.send(:include, Filterrific::ModelMixin)
11
- require 'filterrific/param_set'
12
- end
13
-
14
- initializer "filterrific.view_helpers" do |app|
15
- require 'filterrific/view_helpers'
16
- ActionView::Base.send(:include, Filterrific::ViewHelpers)
17
- end
18
-
19
- # to_prepare block is executed once in production and before each request in development
20
- # config.to_prepare do
21
- # end
22
-
23
- end
24
-
25
- end
@@ -1,35 +0,0 @@
1
- module Filterrific::ViewHelpers
2
-
3
- # renders javascript to observe filter form
4
- def observe_list_options_filter(options = {})
5
- # default options
6
- options = {
7
- :form_id => 'list_options_filter',
8
- :method => :get,
9
- :live_field_ids => [],
10
- :url => url_for(:controller => controller.controller_path, :action => controller.action_name)
11
- }.merge(options)
12
- # observe the entire form regularly (triggers e.g. when a select option is clicked)
13
- # observe_form(
14
- # options[:form_id],
15
- # :function => observer_ajax_javascript(options, 'value'),
16
- # :frequency => 0.5
17
- # )
18
- end
19
-
20
- def render_list_options_spinner
21
- %(<span id="list_options_spinner" class="spinner" style="display:none;"> </span>)
22
- end
23
-
24
- private
25
-
26
- def observer_ajax_javascript(options, parameters_to_be_submitted)
27
- # options = {
28
- # :with => parameters_to_be_submitted,
29
- # :loading => "$('#list_options_spinner').show()",
30
- # :complete => "$('#list_options_spinner').hide()"
31
- # }.merge(options)
32
- # remote_function(options)
33
- end
34
-
35
- end
data/test/helper.rb DELETED
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'filterrific'
8
-
9
- class Test::Unit::TestCase
10
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestFilterrific < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end