katsudo 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.
data/README.md CHANGED
@@ -18,7 +18,66 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ First create model by hand: STI and Polymorphic
22
+
23
+ $ rails generate model Activity type:string resource_type:string resource_id:integer user_type:string user_id:integer
24
+ $ rake db:migrate
25
+
26
+ Now define any users models to be a subject of activity:
27
+
28
+ class User < ActiveRecord::Base
29
+ activity_user!
30
+ end
31
+
32
+ class Admin < ActiveRecord::Base
33
+ activity_user!
34
+ end
35
+
36
+ Controller:
37
+
38
+ # application_controller.rb:
39
+
40
+ def activity_user
41
+ current_admin||current_user # an accessor to current activity subject. I use Devise and all helpers built in.
42
+ end
43
+
44
+ # common controller action:
45
+
46
+ def create
47
+ respond_to do |format|
48
+ if @comment.save
49
+ flash << activity_message(:create_object, @comment)
50
+ format.html { redirect_to [@article, @comment] }
51
+ else
52
+ format.html { render action: "new" }
53
+ end
54
+ end
55
+ end
56
+
57
+ Model:
58
+
59
+ class CreateObject < Activity
60
+ def title
61
+ "Saved!"
62
+ end
63
+
64
+ def message
65
+ "#{resource.class.model_name.human} was created"
66
+ end
67
+ end
68
+
69
+ Partial for activity:
70
+
71
+ # views/activities/create_object.html.erb
72
+
73
+ <strong><%= create_object.title %></strong>
74
+ <p><%= create_object.message %></p>
75
+
76
+ If you want store each activity, add in controller as any filter:
77
+
78
+ trace_activity :only => [:create, :update, :destroy]
79
+
80
+
22
81
 
23
82
  ## Contributing
24
83
 
@@ -1,9 +1,8 @@
1
1
  require "katsudo/dispatch/controller_extension"
2
- require "katsudo/dispatch/flash_messages"
2
+ require "katsudo/dispatch/flash_stack"
3
3
 
4
4
  module Katsudo
5
5
  module Dispatch
6
- ActionDispatch::Flash::FlashHash.send(:include, FlashExtension)
7
- ActionDispatch::Flash::FlashNow.send(:include, FlashExtension)
6
+ ActionDispatch::Flash::FlashHash.send(:include, FlashHashExtension)
8
7
  end
9
8
  end
@@ -19,9 +19,6 @@ module Katsudo
19
19
 
20
20
  included do
21
21
  helper_method :#{name}, :#{activity_user}
22
- if Rails.version >= "4.0.0"
23
- add_flash_types(:messages)
24
- end
25
22
  end
26
23
 
27
24
  module ClassMethods
@@ -55,7 +52,8 @@ module Katsudo
55
52
  end
56
53
 
57
54
  def #{name}_message(*args)
58
- render_to_string(#{name}(*args)).html_safe
55
+ activity = #{name}(*args)
56
+ {activity.flash_key => render_to_string(activity)}
59
57
  end
60
58
 
61
59
  def last_#{name}
@@ -0,0 +1,57 @@
1
+ module Katsudo
2
+ module Dispatch
3
+
4
+ class FlashStack
5
+ def initialize(flash)
6
+ @flash = flash
7
+ @stack = {}
8
+ end
9
+
10
+ def []=(k,v)
11
+ @stack[k] = Array(v)
12
+ end
13
+
14
+ def [](k)
15
+ @stack[k] ||= []
16
+ end
17
+
18
+ def method_missing(*args, &block)
19
+ @stack.send(*args, &block)
20
+ end
21
+
22
+ def use
23
+ @stack.dup.tap do
24
+ @stack.clear
25
+ end
26
+ end
27
+
28
+ end
29
+
30
+ module FlashHashExtension
31
+ extend ActiveSupport::Concern
32
+
33
+ included do
34
+ class_eval do
35
+ def empty?
36
+ @flashes.empty? && (@stack.nil? ? true : @stack.empty?)
37
+ end
38
+ end
39
+ end
40
+
41
+ def <<(*hashes)
42
+ hashes.each do |hash|
43
+ hash.each do |k,v|
44
+ Array(v).each do |value|
45
+ stack[k] << value
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+ def stack
52
+ @stack ||= FlashStack.new(self)
53
+ end
54
+ end
55
+
56
+ end
57
+ end
@@ -1,3 +1,3 @@
1
1
  module Katsudo
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katsudo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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: 2013-01-02 00:00:00.000000000 Z
12
+ date: 2013-01-05 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: User activity for Rails
15
15
  email:
@@ -29,7 +29,7 @@ files:
29
29
  - lib/katsudo/configuration.rb
30
30
  - lib/katsudo/dispatch.rb
31
31
  - lib/katsudo/dispatch/controller_extension.rb
32
- - lib/katsudo/dispatch/flash_messages.rb
32
+ - lib/katsudo/dispatch/flash_stack.rb
33
33
  - lib/katsudo/engine.rb
34
34
  - lib/katsudo/models.rb
35
35
  - lib/katsudo/models/activity.rb
@@ -1,44 +0,0 @@
1
- module Katsudo
2
- module Dispatch
3
-
4
- class Messages
5
- class Item
6
- attr_accessor :type, :text
7
- def initialize(type, text)
8
- @type = type.to_sym
9
- @text = text.to_s
10
- end
11
-
12
- def inspect
13
- @text
14
- end
15
- end
16
-
17
- attr_reader :scope
18
- delegate :any?, :many?, :present?, :each, :map, :collect, :group_by, :to => :scope
19
-
20
- def initialize
21
- @scope = []
22
- end
23
-
24
- def add(type, text)
25
- @scope << Item.new(type, text)
26
- end
27
-
28
- def grouped
29
- group_by(&:type)
30
- end
31
-
32
- end
33
-
34
- module FlashExtension
35
- extend ActiveSupport::Concern
36
-
37
- def messages
38
- self[:messages] ||= Messages.new
39
- end
40
-
41
- end
42
-
43
- end
44
- end