simple_workflow 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,4 +1,10 @@
1
+ == 0.0.2 2009-05-15
2
+
3
+ === Fixes
4
+ * Added missing simple_workflow_helper.rb file to manifest
5
+
1
6
  == 0.0.1 2009-05-15
2
7
 
3
8
  * 1 major enhancement:
4
9
  * Initial release
10
+
data/Manifest.txt CHANGED
@@ -4,6 +4,7 @@ PostInstall.txt
4
4
  README.rdoc
5
5
  Rakefile
6
6
  lib/simple_workflow.rb
7
+ lib/simple_workflow/simple_workflow_helper.rb
7
8
  script/console
8
9
  script/destroy
9
10
  script/generate
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/lib/simple_workflow'
4
4
 
5
5
  # Generate all the Rake tasks
6
6
  # Run 'rake -T' to see list of generated tasks (from gem root directory)
7
- $hoe = Hoe.new('simple_workflow', RubyShoppe::VERSION) do |p|
7
+ $hoe = Hoe.new('simple_workflow', SimpleWorkflow::VERSION) do |p|
8
8
  p.developer('Uwe Kubosch', 'uwe@kubosch.no')
9
9
  p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
10
10
  p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
@@ -1,8 +1,8 @@
1
1
  $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
- module RubyShoppe
5
- VERSION = '0.0.1'
4
+ module SimpleWorkflow
5
+ VERSION = '0.0.2'
6
6
  end
7
7
 
8
8
  require 'simple_workflow/simple_workflow_helper'
@@ -0,0 +1,131 @@
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uwe Kubosch
@@ -61,6 +61,7 @@ files:
61
61
  - README.rdoc
62
62
  - Rakefile
63
63
  - lib/simple_workflow.rb
64
+ - lib/simple_workflow/simple_workflow_helper.rb
64
65
  - script/console
65
66
  - script/destroy
66
67
  - script/generate