jcnetdev-acts-as-readable 1.0.200807042
Sign up to get free protection for your applications and to get access to all the features.
- data/README +54 -0
- data/acts-as-readable.gemspec +30 -0
- data/generators/acts_as_readable_migration/acts_as_readable_migration_generator.rb +11 -0
- data/generators/acts_as_readable_migration/templates/migration.rb +14 -0
- data/init.rb +1 -0
- data/lib/acts-as-readable.rb +43 -0
- data/lib/reading.rb +7 -0
- data/lib/user_with_readings.rb +3 -0
- data/rails/init.rb +5 -0
- metadata +70 -0
data/README
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
ActsAsReadable
|
2
|
+
==============
|
3
|
+
|
4
|
+
ActsAsReadable allows you to create a generic relationship of items which can
|
5
|
+
be marked as 'read' by users. This is useful for forums or any other kind of
|
6
|
+
situation where you might need to know whether or not a user has seen a particular
|
7
|
+
model.
|
8
|
+
|
9
|
+
Installation
|
10
|
+
============
|
11
|
+
|
12
|
+
To install the plugin from git:
|
13
|
+
|
14
|
+
script/plugin install git://github.com/jcnetdev/acts-as-readable.git
|
15
|
+
|
16
|
+
To install the plugin from a gem, add this to our environment.rb:
|
17
|
+
|
18
|
+
config.gem 'jcnetdev-acts-as-readable', :version => '>= 1.0',
|
19
|
+
:lib => 'acts_as_readable',
|
20
|
+
:source => 'http://gems.github.com'
|
21
|
+
|
22
|
+
|
23
|
+
You will need the readings table to use this plugin. A generator has been included,
|
24
|
+
simply type
|
25
|
+
|
26
|
+
script/generate acts_as_readable_migration
|
27
|
+
|
28
|
+
to get the standard migration created for you.
|
29
|
+
|
30
|
+
Example
|
31
|
+
=======
|
32
|
+
|
33
|
+
class Post < ActiveRecord::Base
|
34
|
+
acts_as_readable
|
35
|
+
end
|
36
|
+
|
37
|
+
bob = User.find_by_name("bob")
|
38
|
+
|
39
|
+
bob.readings # => []
|
40
|
+
|
41
|
+
Post.find_unread_by(bob) # => [<Post 1>,<Post 2>,<Post 3>...]
|
42
|
+
Post.find_read_by(bob) # => []
|
43
|
+
|
44
|
+
Post.find(1).read_by?(bob) # => false
|
45
|
+
Post.find(1).read_by!(bob) # => <Reading 1>
|
46
|
+
Post.find(1).read_by?(bob) # => true
|
47
|
+
Post.find(1).users_who_read # => [<User bob>]
|
48
|
+
|
49
|
+
Post.find_unread_by(bob) # => [<Post 2>,<Post 3>...]
|
50
|
+
Post.find_read_by(bob) # => [<Post 1>]
|
51
|
+
|
52
|
+
bob.readings # => [<Reading 1>]
|
53
|
+
|
54
|
+
Copyright (c) 2008 Michael Bleigh and Intridea, Inc. released under the MIT license
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'acts-as-readable'
|
3
|
+
s.version = '1.0.200807042'
|
4
|
+
s.date = '2008-07-04'
|
5
|
+
|
6
|
+
s.summary = "Makes calling partials in views look better and more fun."
|
7
|
+
s.description = "Wrapper around render :partial that removes the need to use :locals, and allows blocks to be taken easily"
|
8
|
+
|
9
|
+
s.authors = ['Michael Bleigh']
|
10
|
+
s.email = 'michael@intridea.com'
|
11
|
+
s.homepage = 'http://github.com/mbleigh/acts-as-readable'
|
12
|
+
|
13
|
+
s.has_rdoc = true
|
14
|
+
s.rdoc_options = ["--main", "README"]
|
15
|
+
s.extra_rdoc_files = ["README"]
|
16
|
+
|
17
|
+
s.add_dependency 'rails', ['>= 2.1']
|
18
|
+
|
19
|
+
s.files = ["README",
|
20
|
+
"acts-as-readable.gemspec",
|
21
|
+
"generators/acts_as_readable_migration/acts_as_readable_migration_generator.rb",
|
22
|
+
"generators/acts_as_readable_migration/templates/migration.rb",
|
23
|
+
"init.rb",
|
24
|
+
"lib/acts-as-readable.rb",
|
25
|
+
"lib/reading.rb",
|
26
|
+
"lib/user_with_readings.rb",
|
27
|
+
"rails/init.rb"]
|
28
|
+
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class ActsAsReadableMigration < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :readings do |t|
|
4
|
+
t.string :readable_type
|
5
|
+
t.integer :readable_id
|
6
|
+
t.integer :user_id
|
7
|
+
t.timestamps
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
drop_table :readings
|
13
|
+
end
|
14
|
+
end
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/rails/init"
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
module Acts
|
3
|
+
module Readable
|
4
|
+
def self.included(base)
|
5
|
+
base.extend ClassMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def acts_as_readable
|
10
|
+
has_many :readings, :as => :readable
|
11
|
+
has_many :users_who_read, :through => :readings, :source => :user
|
12
|
+
|
13
|
+
include ActiveRecord::Acts::Readable::InstanceMethods
|
14
|
+
extend ActiveRecord::Acts::Readable::SingletonMethods
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module SingletonMethods
|
19
|
+
def find_unread_by(user)
|
20
|
+
find(:all) - find_read_by(user)
|
21
|
+
end
|
22
|
+
|
23
|
+
def find_read_by(user)
|
24
|
+
find(:all, :conditions => ["readings.readable_id = #{table_name}.id AND readings.user_id=?", user.id], :include => :readings)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
module InstanceMethods
|
29
|
+
def read_by!(user)
|
30
|
+
readings << Reading.new(:user_id => user.id)
|
31
|
+
end
|
32
|
+
|
33
|
+
def unread_by!(user)
|
34
|
+
readings.find(:first, :conditions => ["user_id = ?",user.id])
|
35
|
+
end
|
36
|
+
|
37
|
+
def read_by?(user)
|
38
|
+
!!users_who_read.find(:first, :conditions => ["user_id = ?",user.id])
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/reading.rb
ADDED
data/rails/init.rb
ADDED
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jcnetdev-acts-as-readable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.200807042
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Bleigh
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-07-04 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rails
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "2.1"
|
23
|
+
version:
|
24
|
+
description: Wrapper around render :partial that removes the need to use :locals, and allows blocks to be taken easily
|
25
|
+
email: michael@intridea.com
|
26
|
+
executables: []
|
27
|
+
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files:
|
31
|
+
- README
|
32
|
+
files:
|
33
|
+
- README
|
34
|
+
- acts-as-readable.gemspec
|
35
|
+
- generators/acts_as_readable_migration/acts_as_readable_migration_generator.rb
|
36
|
+
- generators/acts_as_readable_migration/templates/migration.rb
|
37
|
+
- init.rb
|
38
|
+
- lib/acts-as-readable.rb
|
39
|
+
- lib/reading.rb
|
40
|
+
- lib/user_with_readings.rb
|
41
|
+
- rails/init.rb
|
42
|
+
has_rdoc: true
|
43
|
+
homepage: http://github.com/mbleigh/acts-as-readable
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options:
|
46
|
+
- --main
|
47
|
+
- README
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: "0"
|
55
|
+
version:
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: "0"
|
61
|
+
version:
|
62
|
+
requirements: []
|
63
|
+
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.2.0
|
66
|
+
signing_key:
|
67
|
+
specification_version: 2
|
68
|
+
summary: Makes calling partials in views look better and more fun.
|
69
|
+
test_files: []
|
70
|
+
|