simple_workflow 0.0.2 → 0.0.3
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/History.txt +9 -0
- data/Rakefile +15 -26
- data/lib/simple_workflow.rb +10 -3
- data/lib/simple_workflow/controller.rb +76 -0
- data/lib/simple_workflow/helper.rb +55 -0
- data/lib/simple_workflow/version.rb +3 -0
- metadata +42 -53
- data/lib/simple_workflow/simple_workflow_helper.rb +0 -131
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
data/History.txt
CHANGED
@@ -1,8 +1,17 @@
|
|
1
|
+
== 0.0.3 2012-01-05
|
2
|
+
|
3
|
+
=== Fixes
|
4
|
+
|
5
|
+
* Allow input to with_detour to be a URL string
|
6
|
+
|
7
|
+
|
1
8
|
== 0.0.2 2009-05-15
|
2
9
|
|
3
10
|
=== Fixes
|
11
|
+
|
4
12
|
* Added missing simple_workflow_helper.rb file to manifest
|
5
13
|
|
14
|
+
|
6
15
|
== 0.0.1 2009-05-15
|
7
16
|
|
8
17
|
* 1 major enhancement:
|
data/Rakefile
CHANGED
@@ -1,29 +1,18 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
require File.dirname(__FILE__) + '/lib/simple_workflow'
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/clean'
|
3
|
+
require File.dirname(__FILE__) + '/lib/simple_workflow/version'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
10
|
-
p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
11
|
-
p.rubyforge_name = 'ruby-shoppe'
|
12
|
-
p.extra_deps = [
|
13
|
-
['rails','>= 2.3.2'],
|
14
|
-
]
|
15
|
-
p.extra_dev_deps = [
|
16
|
-
['newgem', ">= #{::Newgem::VERSION}"]
|
17
|
-
]
|
18
|
-
|
19
|
-
p.clean_globs |= %w[**/.DS_Store tmp *.log]
|
20
|
-
path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
|
21
|
-
p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
|
22
|
-
p.rsync_args = '-av --delete --ignore-errors'
|
23
|
-
end
|
5
|
+
GEM_FILE = "simple_workflow-#{SimpleWorkflow::VERSION}.gem"
|
6
|
+
GEM_SPEC_FILE = 'simple_workflow.gemspec'
|
7
|
+
|
8
|
+
CLEAN.include('simple_workflow-*.gem', 'tmp')
|
24
9
|
|
25
|
-
|
26
|
-
Dir['tasks/**/*.rake'].each { |t| load t }
|
10
|
+
task :default => :gem
|
27
11
|
|
28
|
-
|
29
|
-
|
12
|
+
desc "Generate a gem"
|
13
|
+
task :gem => GEM_FILE
|
14
|
+
|
15
|
+
file GEM_FILE => GEM_SPEC_FILE do
|
16
|
+
puts "Generating #{GEM_FILE}"
|
17
|
+
`gem build #{GEM_SPEC_FILE}`
|
18
|
+
end
|
data/lib/simple_workflow.rb
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__)) unless
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
require 'simple_workflow/version'
|
5
|
+
require 'simple_workflow/helper'
|
6
|
+
require 'simple_workflow/controller'
|
7
|
+
|
8
|
+
module ApplicationHelper
|
9
|
+
include SimpleWorkflow::Helper
|
6
10
|
end
|
7
11
|
|
8
|
-
|
12
|
+
class ApplicationController
|
13
|
+
include SimpleWorkflow::Helper
|
14
|
+
include SimpleWorkflow::Controller
|
15
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module SimpleWorkflow::Controller
|
2
|
+
def detour_to(options)
|
3
|
+
store_detour(params)
|
4
|
+
redirect_to(options)
|
5
|
+
end
|
6
|
+
|
7
|
+
def rjs_detour_to(options)
|
8
|
+
store_detour(params, request.post?)
|
9
|
+
rjs_redirect_to(options)
|
10
|
+
end
|
11
|
+
|
12
|
+
def rjs_redirect_to(options)
|
13
|
+
@options = options
|
14
|
+
render :template => 'redirect', :layout => false
|
15
|
+
end
|
16
|
+
|
17
|
+
def store_detour(options, post = false)
|
18
|
+
options[:request_method] = :post if post
|
19
|
+
if session[:detours] && session[:detours].last == options
|
20
|
+
logger.debug "duplicate detour: #{options}"
|
21
|
+
return
|
22
|
+
end
|
23
|
+
logger.debug "adding detour: #{options}"
|
24
|
+
session[:detours] ||= []
|
25
|
+
session[:detours] << options
|
26
|
+
end
|
27
|
+
|
28
|
+
def store_detour_from_params
|
29
|
+
if params[:detour]
|
30
|
+
store_detour(params[:detour])
|
31
|
+
end
|
32
|
+
if params[:return_from_detour] && session[:detours]
|
33
|
+
pop_detour
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def back
|
38
|
+
return false if session[:detours].nil?
|
39
|
+
detour = pop_detour
|
40
|
+
post = detour.delete(:request_method) == :post
|
41
|
+
if post
|
42
|
+
redirect_to_post(detour)
|
43
|
+
else
|
44
|
+
redirect_to detour
|
45
|
+
end
|
46
|
+
return true
|
47
|
+
end
|
48
|
+
|
49
|
+
def back_or_redirect_to(options)
|
50
|
+
back or redirect_to options
|
51
|
+
end
|
52
|
+
|
53
|
+
def pop_detour
|
54
|
+
detours = session[:detours]
|
55
|
+
return nil unless detours
|
56
|
+
detour = detours.pop
|
57
|
+
logger.debug "popped detour: #{detour.inspect} #{session[:detours].size} more"
|
58
|
+
if detours.empty?
|
59
|
+
session[:detours] = nil
|
60
|
+
end
|
61
|
+
detour
|
62
|
+
end
|
63
|
+
|
64
|
+
def redirect_to_post(options)
|
65
|
+
url = url_for options
|
66
|
+
render :text => <<EOF, :layout => false
|
67
|
+
<html>
|
68
|
+
<body onload="document.getElementById('form').submit()">
|
69
|
+
<form id="form" action="#{url}" method="POST">
|
70
|
+
</form>
|
71
|
+
</body>
|
72
|
+
</html>
|
73
|
+
EOF
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module SimpleWorkflow::Helper
|
2
|
+
def image_button_to(image_source, title, options, html_options = {})
|
3
|
+
image_submit_tag image_source, {:class => 'image-submit', :alt => title, :title => title,
|
4
|
+
:id => "#{title}_#{options[:id]}", :name => title,
|
5
|
+
:onclick => "form.action='#{url_for(options)}'"}.update(html_options)
|
6
|
+
end
|
7
|
+
|
8
|
+
def detour_to(title, options, html_options = nil)
|
9
|
+
link_to title, with_detour(options), html_options
|
10
|
+
end
|
11
|
+
|
12
|
+
def with_detour(options)
|
13
|
+
detour_options = {:detour => params.reject { |k, v| [:detour, :return_from_detour].include? k.to_sym }}.update(options)
|
14
|
+
if options[:layout]== false
|
15
|
+
if params[:action] !~ /_no_layout$/
|
16
|
+
detour_options[:detour].update({:action => params[:action] + '_no_layout'})
|
17
|
+
end
|
18
|
+
elsif params[:action] =~ /_no_layout$/
|
19
|
+
detour_options[:detour].update({:action => params[:action][0..-11]})
|
20
|
+
end
|
21
|
+
detour_options
|
22
|
+
end
|
23
|
+
|
24
|
+
def image_detour_to(image_source, title, url_options, image_options = nil, post = false)
|
25
|
+
image_options ||= {:class => 'image-submit'}
|
26
|
+
image_options.update :alt => title, :title => title
|
27
|
+
detour_to image_tag(image_source, image_options), url_options, post ? {:method => :post} : nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def image_link_to(image_source, title, url_options, image_options = nil, post = false)
|
31
|
+
image_options ||= {:class => 'image-submit'}
|
32
|
+
image_options.update :alt => title, :title => title
|
33
|
+
link_to image_tag(image_source, image_options), url_options, post ? {:method => :post} : nil
|
34
|
+
end
|
35
|
+
|
36
|
+
def image_link_to_remote(image_source, title, link_options, image_options = nil, post = false)
|
37
|
+
image_options ||= {:class => 'image-submit'}
|
38
|
+
image_options.update :alt => title, :title => title
|
39
|
+
with_params = link_options.delete(:with)
|
40
|
+
link_to_remote image_tag(image_source, image_options), :url => link_options, :with => with_params, :html => post ? {:method => :post} : {}
|
41
|
+
end
|
42
|
+
|
43
|
+
def detour?
|
44
|
+
not session[:detours].nil?
|
45
|
+
end
|
46
|
+
|
47
|
+
def back_or_link_to(title, options = nil)
|
48
|
+
if session[:detours]
|
49
|
+
options = {:return_from_detour => true}.update(session[:detours].last)
|
50
|
+
logger.debug "linked return from detour: #{options}"
|
51
|
+
end
|
52
|
+
link_to(title, options) if options
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_workflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Uwe Kubosch
|
@@ -9,93 +15,76 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
13
|
-
default_executable:
|
18
|
+
date: 2012-01-05 00:00:00 Z
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rails
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
20
25
|
requirements:
|
21
26
|
- - ">="
|
22
27
|
- !ruby/object:Gem::Version
|
28
|
+
hash: 7
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 3
|
32
|
+
- 2
|
23
33
|
version: 2.3.2
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
version_requirement:
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.4.1
|
34
|
-
version:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: hoe
|
37
|
-
type: :development
|
38
|
-
version_requirement:
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.8.0
|
44
|
-
version:
|
45
|
-
description: FIX (describe your package)
|
46
|
-
email:
|
47
|
-
- uwe@kubosch.no
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
description: Expands Ruby On Rails to allow simple detour workflows.
|
37
|
+
email: uwe@kubosch.no
|
48
38
|
executables: []
|
49
39
|
|
50
40
|
extensions: []
|
51
41
|
|
52
|
-
extra_rdoc_files:
|
53
|
-
|
54
|
-
- Manifest.txt
|
55
|
-
- PostInstall.txt
|
56
|
-
- README.rdoc
|
42
|
+
extra_rdoc_files: []
|
43
|
+
|
57
44
|
files:
|
58
45
|
- History.txt
|
59
46
|
- Manifest.txt
|
60
47
|
- PostInstall.txt
|
61
|
-
- README.rdoc
|
62
48
|
- Rakefile
|
49
|
+
- README.rdoc
|
50
|
+
- lib/simple_workflow/controller.rb
|
51
|
+
- lib/simple_workflow/helper.rb
|
52
|
+
- lib/simple_workflow/version.rb
|
63
53
|
- lib/simple_workflow.rb
|
64
|
-
- lib/simple_workflow/simple_workflow_helper.rb
|
65
|
-
- script/console
|
66
|
-
- script/destroy
|
67
|
-
- script/generate
|
68
54
|
- test/test_helper.rb
|
69
55
|
- test/test_simple_workflow.rb
|
70
|
-
|
71
|
-
homepage: http://github.com/#{github_username}/#{project_name}
|
56
|
+
homepage: https://github.com/donv/simple_workflow
|
72
57
|
licenses: []
|
73
58
|
|
74
|
-
post_install_message:
|
75
|
-
rdoc_options:
|
76
|
-
|
77
|
-
- README.rdoc
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
|
78
62
|
require_paths:
|
79
63
|
- lib
|
80
64
|
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
81
66
|
requirements:
|
82
67
|
- - ">="
|
83
68
|
- !ruby/object:Gem::Version
|
69
|
+
hash: 3
|
70
|
+
segments:
|
71
|
+
- 0
|
84
72
|
version: "0"
|
85
|
-
version:
|
86
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
87
75
|
requirements:
|
88
76
|
- - ">="
|
89
77
|
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
79
|
+
segments:
|
80
|
+
- 0
|
90
81
|
version: "0"
|
91
|
-
version:
|
92
82
|
requirements: []
|
93
83
|
|
94
84
|
rubyforge_project: ruby-shoppe
|
95
|
-
rubygems_version: 1.
|
85
|
+
rubygems_version: 1.8.8
|
96
86
|
signing_key:
|
97
87
|
specification_version: 3
|
98
|
-
summary:
|
99
|
-
test_files:
|
100
|
-
|
101
|
-
- test/test_simple_workflow.rb
|
88
|
+
summary: Add simple "detour" workflow to Ruby On Rails.
|
89
|
+
test_files: []
|
90
|
+
|
@@ -1,131 +0,0 @@
|
|
1
|
-
module SimpleWorkflowHelper
|
2
|
-
def image_button_to(image_source, title, options, html_options = {})
|
3
|
-
image_submit_tag image_source, {:class => 'image-submit', :alt => title, :title => title,
|
4
|
-
:id => "#{title}_#{options[:id]}", :name => title,
|
5
|
-
:onclick => "form.action='#{url_for(options)}'"}.update(html_options)
|
6
|
-
end
|
7
|
-
|
8
|
-
def detour_to(title, options, html_options = nil)
|
9
|
-
link_to title, with_detour(options), html_options
|
10
|
-
end
|
11
|
-
|
12
|
-
def with_detour(options)
|
13
|
-
detour_options = {:detour => params.reject {|k, v| [:detour, :return_from_detour].include? k.to_sym}}.update(options)
|
14
|
-
if options[:layout]== false
|
15
|
-
if params[:action] !~ /_no_layout$/
|
16
|
-
detour_options[:detour].update({:action => params[:action] + '_no_layout'})
|
17
|
-
end
|
18
|
-
elsif params[:action] =~ /_no_layout$/
|
19
|
-
detour_options[:detour].update({:action => params[:action][0..-11]})
|
20
|
-
end
|
21
|
-
detour_options
|
22
|
-
end
|
23
|
-
|
24
|
-
def image_detour_to(image_source, title, url_options, image_options = nil, post = false)
|
25
|
-
image_options ||= {:class => 'image-submit'}
|
26
|
-
image_options.update :alt => title, :title => title
|
27
|
-
detour_to image_tag(image_source, image_options), url_options, post ? {:method => :post} : nil
|
28
|
-
end
|
29
|
-
|
30
|
-
def image_link_to(image_source, title, url_options, image_options = nil, post = false)
|
31
|
-
image_options ||= {:class => 'image-submit'}
|
32
|
-
image_options.update :alt => title, :title => title
|
33
|
-
link_to image_tag(image_source, image_options), url_options, post ? {:method => :post} : nil
|
34
|
-
end
|
35
|
-
|
36
|
-
def image_link_to_remote(image_source, title, url_options, image_options = nil, post = false)
|
37
|
-
image_options ||= {:class => 'image-submit'}
|
38
|
-
image_options.update :alt => title, :title => title
|
39
|
-
link_to_remote image_tag(image_source, image_options), {:url => url_options}, post ? {:method => :post} : nil
|
40
|
-
end
|
41
|
-
|
42
|
-
def detour?
|
43
|
-
not session[:detours].nil?
|
44
|
-
end
|
45
|
-
|
46
|
-
def back_or_link_to(title, options = nil, html_options = nil)
|
47
|
-
if session[:detours]
|
48
|
-
options = {:return_from_detour => true}.update(session[:detours].last)
|
49
|
-
logger.debug "linked return from detour: #{options}"
|
50
|
-
end
|
51
|
-
link_to(title, options, html_options) if options
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
module SimpleWorkflowController
|
57
|
-
def detour_to(options)
|
58
|
-
store_detour(params)
|
59
|
-
redirect_to(options)
|
60
|
-
end
|
61
|
-
|
62
|
-
def rjs_detour_to(options)
|
63
|
-
store_detour(params, request.post?)
|
64
|
-
rjs_redirect_to(options)
|
65
|
-
end
|
66
|
-
|
67
|
-
def rjs_redirect_to(options)
|
68
|
-
@options = options
|
69
|
-
render :template => 'redirect', :layout => false
|
70
|
-
end
|
71
|
-
|
72
|
-
def store_detour(options, post = false)
|
73
|
-
options[:request_method] = :post if post
|
74
|
-
if session[:detours] && session[:detours].last == options
|
75
|
-
logger.debug "duplicate detour: #{options}"
|
76
|
-
return
|
77
|
-
end
|
78
|
-
logger.debug "adding detour: #{options}"
|
79
|
-
session[:detours] ||= []
|
80
|
-
session[:detours] << options
|
81
|
-
end
|
82
|
-
|
83
|
-
def store_detour_from_params
|
84
|
-
if params[:detour]
|
85
|
-
store_detour(params[:detour])
|
86
|
-
end
|
87
|
-
if params[:return_from_detour] && session[:detours]
|
88
|
-
pop_detour
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def back
|
93
|
-
return false if session[:detours].nil?
|
94
|
-
detour = pop_detour
|
95
|
-
post = detour.delete(:request_method) == :post
|
96
|
-
if post
|
97
|
-
redirect_to_post(detour)
|
98
|
-
else
|
99
|
-
redirect_to detour
|
100
|
-
end
|
101
|
-
return true
|
102
|
-
end
|
103
|
-
|
104
|
-
def back_or_redirect_to(options)
|
105
|
-
back or redirect_to options
|
106
|
-
end
|
107
|
-
|
108
|
-
def pop_detour
|
109
|
-
detours = session[:detours]
|
110
|
-
return nil unless detours
|
111
|
-
detour = detours.pop
|
112
|
-
logger.debug "popped detour: #{detour.inspect} #{session[:detours].size} more"
|
113
|
-
if detours.empty?
|
114
|
-
session[:detours] = nil
|
115
|
-
end
|
116
|
-
detour
|
117
|
-
end
|
118
|
-
|
119
|
-
def redirect_to_post(options)
|
120
|
-
url = url_for options
|
121
|
-
render :text => <<EOF, :layout => false
|
122
|
-
<html>
|
123
|
-
<body onload="document.getElementById('form').submit()">
|
124
|
-
<form id="form" action="#{url}" method="POST">
|
125
|
-
</form>
|
126
|
-
</body>
|
127
|
-
</html>
|
128
|
-
EOF
|
129
|
-
end
|
130
|
-
|
131
|
-
end
|
data/script/console
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# File: script/console
|
3
|
-
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
-
|
5
|
-
libs = " -r irb/completion"
|
6
|
-
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
-
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
-
libs << " -r #{File.dirname(__FILE__) + '/../lib/simple_workflow.rb'}"
|
9
|
-
puts "Loading simple_workflow gem"
|
10
|
-
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/destroy'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/generate'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Generate.new.run(ARGV)
|