confirmable 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []