stonepath 0.1.0 → 0.1.1

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -0,0 +1,16 @@
1
+ module StonePath
2
+ module EventLogging
3
+
4
+ def log_events
5
+ has_many :logged_events, :as => :auditable, :class_name => "EventRecord"
6
+
7
+ define_method :aasm_event_fired do |event_name, old_state_name, new_state_name|
8
+ current_user_id = current_user && current_user.id
9
+ self.logged_events.create(:event_name => event_name.to_s,
10
+ :old_state_name => old_state_name.to_s,
11
+ :new_state_name => new_state_name.to_s,
12
+ :user_id => current_user_id)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -44,6 +44,7 @@ module StonePath
44
44
 
45
45
  def self.included(base)
46
46
  base.instance_eval do
47
+ include AASM
47
48
 
48
49
  # Tasks are now completely polymorphic between workbenches.
49
50
  # as long as an activerecord model declares itself as a workbench and declares itself
@@ -55,17 +56,30 @@ module StonePath
55
56
  # a workitem for the specific kind of task, everything just works.
56
57
  belongs_to :workitem, :polymorphic => true
57
58
 
58
- def logs_transitions
59
- puts "#{self.class} audits transitions"
60
- # see notes in work_item's version of this method. This ideally should be an includable
61
- # module
62
- end
63
-
64
- include AASM
59
+ #add the ability to log events if the user so specifies
60
+ require File.expand_path(File.dirname(__FILE__)) + "/event_logging.rb"
61
+ extend StonePath::EventLogging
65
62
 
66
63
  end
67
64
  end
68
65
 
66
+ # I don't think this should really be part of Stonepath, but I'm adding it here as a comment
67
+ # to communicate some design intent to my fellow teammembers on a project using stonepath.
68
+ # For the 'timely|imminent|overdue' stuff, at the time the task is created, we would need to
69
+ # set and calculate the imminent_at and due_at times. These methods would then do what
70
+ # we need them to do.
71
+ # def imminent?
72
+ # return false if imminent_at.nil?
73
+ # imminent_at < Time.now
74
+ # end
75
+ #
76
+ # we might also want this method, which would be useful in css styling
77
+ # def timeliness
78
+ # return "overdue" if overdue?
79
+ # return "imminent" if imminent?
80
+ # return "timely"
81
+ # end
82
+
69
83
  def overdue?
70
84
  return false if due_at.nil?
71
85
  due_at < Time.now
@@ -8,19 +8,8 @@ module StonePath
8
8
  base.instance_eval do
9
9
  include AASM
10
10
 
11
- #this method needs to be a mixin so we can share it with tasks...
12
- def log_events
13
- has_many :logged_events, :as => :auditable, :class_name => "EventRecord"
14
-
15
- define_method :aasm_event_fired do |event_name, old_state_name, new_state_name|
16
-
17
- current_user_id = current_user && current_user.id
18
- self.logged_events.create(:event_name => event_name.to_s,
19
- :old_state_name => old_state_name.to_s,
20
- :new_state_name => new_state_name.to_s,
21
- :user_id => current_user_id)
22
- end
23
- end
11
+ require File.expand_path(File.dirname(__FILE__)) + "/event_logging.rb"
12
+ extend StonePath::EventLogging
24
13
 
25
14
  def owned_by(owner, options={})
26
15
  options.merge!(:class_name => owner.to_s.classify)
@@ -1,4 +1,4 @@
1
- class Create<%= args[0].tableize.classify %> < ActiveRecord::Migration
1
+ class Create<%= args[0].tableize.classify.pluralize %> < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :<%= args[0].tableize %> do |t|
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stonepath
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Bock
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-29 00:00:00 -05:00
12
+ date: 2010-01-05 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -44,6 +44,7 @@ files:
44
44
  - lib/stonepath/acl/state.rb
45
45
  - lib/stonepath/config.rb
46
46
  - lib/stonepath/controller_hooks.rb
47
+ - lib/stonepath/event_logging.rb
47
48
  - lib/stonepath/extensions/activerecordbase.rb
48
49
  - lib/stonepath/group.rb
49
50
  - lib/stonepath/role.rb