padrino-contrib 0.0.1 → 0.0.2
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.
Potentially problematic release.
This version of padrino-contrib might be problematic. Click here for more details.
data/README.rdoc
CHANGED
@@ -8,6 +8,8 @@ This package includes a variety of add-on components for Padrino Framework:
|
|
8
8
|
* orm_ar_translate - Translate for you your ActiveRecord columns
|
9
9
|
* auto_locale - Switch for you automatically the I18n.locale
|
10
10
|
* flash_session - Middleware that help you in passing your session in the URI, when it should be in the cookie.
|
11
|
+
* orm_mm_permalink - Generate permalink for a specified column on MongoMapper
|
12
|
+
* orm_mm_search - Full text search in MongoMapper in specified columns
|
11
13
|
|
12
14
|
=== Use
|
13
15
|
|
@@ -11,8 +11,8 @@
|
|
11
11
|
# set :exceptions_page, :errors # => views/errors.haml/erb
|
12
12
|
# set :redmine, :project => "My Bugs", :tracker => "Bugs", :priority => "High"
|
13
13
|
# # Uncomment this for test in development
|
14
|
-
# #
|
15
|
-
# #
|
14
|
+
# # disable :raise_errors
|
15
|
+
# # disable :show_exceptions
|
16
16
|
# end
|
17
17
|
#
|
18
18
|
module Padrino
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Padrino
|
2
|
+
module Contrib
|
3
|
+
module Orm
|
4
|
+
module Mm
|
5
|
+
##
|
6
|
+
# This module extend ActiveRecord.
|
7
|
+
#
|
8
|
+
# You need to to your model a column called +:permalink+
|
9
|
+
#
|
10
|
+
# then use +has_permalink :title like:
|
11
|
+
#
|
12
|
+
# class Page < ActiveRecord::Base
|
13
|
+
# has_permalink :page
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
module Permalink
|
17
|
+
module ClassMethods
|
18
|
+
def has_permalink(field)
|
19
|
+
include InstanceMethods
|
20
|
+
class_inheritable_accessor :permalink_field
|
21
|
+
write_inheritable_attribute :permalink_field, field
|
22
|
+
before_save :generate_permalink
|
23
|
+
validates_uniqueness_of field
|
24
|
+
key :permalink, String
|
25
|
+
end
|
26
|
+
|
27
|
+
def permalink_for(name)
|
28
|
+
name.downcase.gsub(/\W/, '-').
|
29
|
+
gsub(/-+/, '-').
|
30
|
+
gsub(/-$/, '').
|
31
|
+
gsub(/^-/, '')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module InstanceMethods
|
36
|
+
def to_param
|
37
|
+
permalink
|
38
|
+
end
|
39
|
+
|
40
|
+
protected
|
41
|
+
def generate_permalink
|
42
|
+
self.permalink = self.class.permalink_for(self[permalink_field])
|
43
|
+
end
|
44
|
+
end # InstanceMethods
|
45
|
+
end # Permalink
|
46
|
+
end # Mm
|
47
|
+
end # Orm
|
48
|
+
end # Contrib
|
49
|
+
end # Padrino
|
50
|
+
MongoMapper::Document.append_extensions(Padrino::Contrib::Orm::Mm::Permalink::ClassMethods)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Padrino
|
2
|
+
module Contrib
|
3
|
+
module Orm
|
4
|
+
module Mm
|
5
|
+
module Search
|
6
|
+
##
|
7
|
+
# This module provides full text search in specified fileds with pagination support.
|
8
|
+
#
|
9
|
+
# == Examples
|
10
|
+
#
|
11
|
+
# # model.rb
|
12
|
+
# has_search :title, :body
|
13
|
+
#
|
14
|
+
# # controller.rb
|
15
|
+
# Model.search("some thing")
|
16
|
+
# Model.search("some thing", :order => "position", :page => (params[:page] || 1), :draft => false, :paginate => true)
|
17
|
+
#
|
18
|
+
module ClassMethods
|
19
|
+
def has_search(*fields)
|
20
|
+
class_inheritable_accessor :search_fields
|
21
|
+
write_inheritable_attribute :search_fields, fields
|
22
|
+
end
|
23
|
+
|
24
|
+
def search(text, options={})
|
25
|
+
if text
|
26
|
+
re = Regexp.new(Regexp.escape(text), 'i').to_json
|
27
|
+
where = search_fields.map { |field| "this.#{field}.match(#{re})" }.join(" || ")
|
28
|
+
options.merge!("$where" => where)
|
29
|
+
end
|
30
|
+
options.delete(:paginate) ? paginate(options) : all(options)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end # Permalink
|
34
|
+
end # Mm
|
35
|
+
end # Orm
|
36
|
+
end # Contrib
|
37
|
+
end # Padrino
|
38
|
+
MongoMapper::Document.append_extensions(Padrino::Contrib::Orm::Mm::Search::ClassMethods)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-contrib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Padrino Team
|
@@ -42,6 +42,8 @@ files:
|
|
42
42
|
- lib/padrino-contrib/orm/ar/permalink_i18n.rb
|
43
43
|
- lib/padrino-contrib/orm/ar/textile.rb
|
44
44
|
- lib/padrino-contrib/orm/ar/translate.rb
|
45
|
+
- lib/padrino-contrib/orm/mm/permalink.rb
|
46
|
+
- lib/padrino-contrib/orm/mm/search.rb
|
45
47
|
- lib/padrino-contrib/version.rb
|
46
48
|
has_rdoc: true
|
47
49
|
homepage: http://www.padrinorb.com
|