confirmable 0.1.0

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/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2011 Mike Bannister
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # Confirmable #
2
+
3
+ Progressively enhanced confirmation dialogs for Rails actions
4
+
5
+ ## Synopsis ##
6
+
7
+ TODO
8
+
9
+ ## Installation ##
10
+
11
+ Install the gem
12
+
13
+ gem install confirmable
14
+
15
+ Mount the engine
16
+
17
+ mount Confirmable::Engine => '/confirm'
18
+
19
+ ## Example usage ##
20
+
21
+ Use the URL helper in your views
22
+
23
+ <%= confirm_link_to 'Destroy', widget, method: :delete %>
24
+
25
+ ## TODO ##
26
+
27
+ * **Progressive enhancements!!**
28
+
29
+ * try to deal with forms
30
+
31
+ * try to deal with model forms
32
+
33
+ * try to deal non-POST actions
data/Rakefile ADDED
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env rake
2
+
3
+ begin
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ end
8
+ begin
9
+ require 'rdoc/task'
10
+ rescue LoadError
11
+ require 'rdoc/rdoc'
12
+ require 'rake/rdoctask'
13
+ RDoc::Task = Rake::RDocTask
14
+ end
15
+
16
+ RDoc::Task.new(:rdoc) do |rdoc|
17
+ rdoc.rdoc_dir = 'rdoc'
18
+ rdoc.title = 'Confirmable'
19
+ rdoc.options << '--line-numbers'
20
+ rdoc.rdoc_files.include('README.rdoc')
21
+ rdoc.rdoc_files.include('lib/**/*.rb')
22
+ end
23
+
24
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
25
+ load 'rails/tasks/engine.rake'
26
+
27
+
28
+ Bundler::GemHelper.install_tasks
29
+
30
+ require 'rspec/core/rake_task'
31
+
32
+ RSpec::Core::RakeTask.new(:spec)
33
+ task :default => :spec
34
+
35
+ require "confirmable/version"
36
+
37
+ require 'jeweler'
38
+ Jeweler::Tasks.new do |s|
39
+ s.name = "confirmable"
40
+ s.version = Confirmable::VERSION
41
+ s.authors = ["Mike Bannister"]
42
+ s.email = ["mikebannister@gmail.com"]
43
+ s.homepage = "https://github.com/mikebannister/confirmable"
44
+ s.summary = "Progressively enhanced confirmation dialogs for Rails actions"
45
+ s.description = "Progressively enhanced confirmation dialogs for Rails actions"
46
+
47
+ s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.md"]
48
+
49
+ s.add_dependency "rails", "~> 3.1.0"
50
+
51
+ s.add_development_dependency "sqlite3", "~> 1.3.4"
52
+ s.add_development_dependency "rspec-rails", "~> 2.6.1"
53
+ s.add_development_dependency "capybara", "~> 1.1.1"
54
+ s.add_development_dependency "launchy", "~> 2.0.5"
55
+ s.add_development_dependency "jeweler", "~> 1.6.4"
56
+ end
57
+ Jeweler::RubygemsDotOrgTasks.new
@@ -0,0 +1,9 @@
1
+ // This is a manifest file that'll be compiled into including all the files listed below.
2
+ // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
+ // be included in the compiled file accessible from http://example.com/assets/application.js
4
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
+ // the compiled file.
6
+ //
7
+ //= require jquery
8
+ //= require jquery_ujs
9
+ //= require_tree .
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,7 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+ *= require_self
6
+ *= require_tree .
7
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,4 @@
1
+ module Confirmable
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,8 @@
1
+ module Confirmable
2
+ class ConfirmsController < ApplicationController
3
+ helper Confirmable::Engine.helpers
4
+
5
+ def confirm
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,20 @@
1
+ module Confirmable
2
+ module ConfirmsHelper
3
+ def confirm_link_to(name, url_options, html_options={})
4
+ @method = html_options.delete(:method) { |opt| 'post' }
5
+ @confirm = html_options.delete(:confirm) #TODO: do something with the return value
6
+ @target_url = url_for(url_options).slice(1..-1)
7
+
8
+ link_to(name, confirm_url, html_options)
9
+ end
10
+
11
+ def confirm_url
12
+ confirmable.confirm_url(target_url: @target_url, method: @method)
13
+ end
14
+
15
+ def confirm_form_tag(&block)
16
+ raise ArgumentError, "Missing block" unless block_given?
17
+ form_tag("/"+params[:target_url], :method => params[:method].try(:to_sym), &block)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ <%= confirm_form_tag do %>
2
+ <p>Are you sure?</p>
3
+ <%= submit_tag "Yes", :id => :confirm %>
4
+ <%= link_to "No", request.env["HTTP_REFERER"], class: 'button' %>
5
+ <% end %>
data/config/routes.rb ADDED
@@ -0,0 +1,6 @@
1
+ Confirmable::Engine.routes.draw do
2
+ match "/:method/*target_url",
3
+ to: 'confirms#confirm',
4
+ as: 'confirm',
5
+ via: 'get'
6
+ end
@@ -0,0 +1,4 @@
1
+ require "confirmable/engine"
2
+
3
+ module Confirmable
4
+ end
@@ -0,0 +1,9 @@
1
+ module Confirmable
2
+ class Engine < Rails::Engine
3
+ isolate_namespace Confirmable
4
+
5
+ initializer 'confirmable.helper' do
6
+ ActionView::Base.send :include, Confirmable::Engine.helpers
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Confirmable
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,251 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: confirmable
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mike Bannister
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-09-21 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: confirmable
16
+ requirement: &2169127300 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2169127300
25
+ - !ruby/object:Gem::Dependency
26
+ name: sqlite3
27
+ requirement: &2169126200 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.4
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2169126200
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec-rails
38
+ requirement: &2169124820 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 2.6.1
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *2169124820
47
+ - !ruby/object:Gem::Dependency
48
+ name: capybara
49
+ requirement: &2169124060 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.1
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *2169124060
58
+ - !ruby/object:Gem::Dependency
59
+ name: launchy
60
+ requirement: &2169123060 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 2.0.5
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2169123060
69
+ - !ruby/object:Gem::Dependency
70
+ name: jeweler
71
+ requirement: &2169121960 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 1.6.4
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2169121960
80
+ - !ruby/object:Gem::Dependency
81
+ name: sqlite3
82
+ requirement: &2169120880 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 1.3.4
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2169120880
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec-rails
93
+ requirement: &2169119540 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: 2.6.1
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *2169119540
102
+ - !ruby/object:Gem::Dependency
103
+ name: capybara
104
+ requirement: &2169118240 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.1.1
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *2169118240
113
+ - !ruby/object:Gem::Dependency
114
+ name: launchy
115
+ requirement: &2169116640 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: 2.0.5
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *2169116640
124
+ - !ruby/object:Gem::Dependency
125
+ name: jeweler
126
+ requirement: &2169115120 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 1.6.4
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *2169115120
135
+ - !ruby/object:Gem::Dependency
136
+ name: rails
137
+ requirement: &2169113740 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ version: 3.1.0
143
+ type: :runtime
144
+ prerelease: false
145
+ version_requirements: *2169113740
146
+ - !ruby/object:Gem::Dependency
147
+ name: sqlite3
148
+ requirement: &2169077100 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: 1.3.4
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *2169077100
157
+ - !ruby/object:Gem::Dependency
158
+ name: rspec-rails
159
+ requirement: &2169075660 !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ~>
163
+ - !ruby/object:Gem::Version
164
+ version: 2.6.1
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: *2169075660
168
+ - !ruby/object:Gem::Dependency
169
+ name: capybara
170
+ requirement: &2169073420 !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ~>
174
+ - !ruby/object:Gem::Version
175
+ version: 1.1.1
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: *2169073420
179
+ - !ruby/object:Gem::Dependency
180
+ name: launchy
181
+ requirement: &2169071220 !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ~>
185
+ - !ruby/object:Gem::Version
186
+ version: 2.0.5
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: *2169071220
190
+ - !ruby/object:Gem::Dependency
191
+ name: jeweler
192
+ requirement: &2169001040 !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ~>
196
+ - !ruby/object:Gem::Version
197
+ version: 1.6.4
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: *2169001040
201
+ description: Progressively enhanced confirmation dialogs for Rails actions
202
+ email:
203
+ - mikebannister@gmail.com
204
+ executables: []
205
+ extensions: []
206
+ extra_rdoc_files:
207
+ - README.md
208
+ files:
209
+ - MIT-LICENSE
210
+ - README.md
211
+ - Rakefile
212
+ - app/assets/javascripts/confirmable/application.js
213
+ - app/assets/javascripts/confirmable/confirm.js
214
+ - app/assets/stylesheets/confirmable/application.css
215
+ - app/assets/stylesheets/confirmable/confirm.css
216
+ - app/controllers/confirmable/application_controller.rb
217
+ - app/controllers/confirmable/confirms_controller.rb
218
+ - app/helpers/confirmable/confirms_helper.rb
219
+ - app/views/confirmable/confirms/confirm.html.erb
220
+ - config/routes.rb
221
+ - lib/confirmable.rb
222
+ - lib/confirmable/engine.rb
223
+ - lib/confirmable/version.rb
224
+ homepage: https://github.com/mikebannister/confirmable
225
+ licenses: []
226
+ post_install_message:
227
+ rdoc_options: []
228
+ require_paths:
229
+ - lib
230
+ required_ruby_version: !ruby/object:Gem::Requirement
231
+ none: false
232
+ requirements:
233
+ - - ! '>='
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ segments:
237
+ - 0
238
+ hash: 3374672677102692032
239
+ required_rubygems_version: !ruby/object:Gem::Requirement
240
+ none: false
241
+ requirements:
242
+ - - ! '>='
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ requirements: []
246
+ rubyforge_project:
247
+ rubygems_version: 1.8.8
248
+ signing_key:
249
+ specification_version: 3
250
+ summary: Progressively enhanced confirmation dialogs for Rails actions
251
+ test_files: []