letter_opener-web 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +7 -5
- data/Gemfile +4 -1
- data/README.md +6 -0
- data/letter_opener-web.gemspec +10 -0
- data/lib/letter_opener/web/app.rb +7 -1
- data/lib/letter_opener/web/assets/javascripts/application.js +15 -1
- data/lib/letter_opener/web/assets/javascripts/jquery.searcher.min.js +5 -0
- data/lib/letter_opener/web/assets/stylesheets/application.css +18 -0
- data/lib/letter_opener/web/railtie.rb +1 -1
- data/lib/letter_opener/web/version.rb +1 -1
- data/lib/letter_opener/web/views/index.erb +8 -2
- data/lib/letter_opener/web/views/layout.erb +1 -0
- data/test/helper.rb +14 -1
- data/test/test_app.rb +38 -0
- metadata +66 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c7cdd2eff4d68d396704911da805e669a21a7c4
|
4
|
+
data.tar.gz: 831abdd6403869d3aedecc07a582c9392d625df2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21ce082ff79021ec0b5bd3bb009386b4fc6e8cb11711bdca6cfebf0724118345682f8af918f67e7581962299b267657690f7109cdf26e5d9838e27a3c2a27945
|
7
|
+
data.tar.gz: 5fd0793678165a9c7cbb8bbfed7f60264112f0a454081547566f6d00d86b880a6037aabec4a323c88a640a70fd018c04ac0c71673abfef8f5b2bb2650943fdd3
|
data/.travis.yml
CHANGED
@@ -3,16 +3,18 @@ before_install: gem install bundler --pre
|
|
3
3
|
install:
|
4
4
|
- gem update --system
|
5
5
|
- bundle update
|
6
|
+
script: xvfb-run rake
|
6
7
|
rvm:
|
7
8
|
- 1.9.3
|
8
9
|
- 2.0.0
|
9
|
-
- 2.1
|
10
|
-
-
|
11
|
-
-
|
10
|
+
- 2.1
|
11
|
+
- 2.2
|
12
|
+
- rbx-2
|
13
|
+
- jruby-19mode
|
12
14
|
branches:
|
13
15
|
only:
|
14
16
|
- master
|
15
17
|
matrix:
|
16
18
|
allow_failures:
|
17
|
-
- rvm: rbx
|
18
|
-
- rvm: jruby
|
19
|
+
- rvm: rbx-2
|
20
|
+
- rvm: jruby-19mode
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
# LetterOpener::Web
|
2
2
|
|
3
|
+
## Notice
|
4
|
+
This project moved to [Goatmail](https://github.com/tyabe/goatmail).
|
5
|
+
|
3
6
|
[![Gem Version](https://badge.fury.io/rb/letter_opener-web.svg)](http://badge.fury.io/rb/letter_opener-web)
|
4
7
|
[![Build Status](https://travis-ci.org/tyabe/letter_opener-web.svg)](https://travis-ci.org/tyabe/letter_opener-web)
|
8
|
+
[![Coverage Status](https://coveralls.io/repos/tyabe/letter_opener-web/badge.png)](https://coveralls.io/r/tyabe/letter_opener-web)
|
9
|
+
[![Code Climate](https://codeclimate.com/github/tyabe/letter_opener-web.png)](https://codeclimate.com/github/tyabe/letter_opener-web)
|
10
|
+
[![Dependency Status](https://gemnasium.com/tyabe/letter_opener-web.svg)](https://gemnasium.com/tyabe/letter_opener-web)
|
5
11
|
|
6
12
|
A Sinatra-based frontend to the [letter_opener](https://github.com/ryanb/letter_opener).
|
7
13
|
This provides almost the same feature as the [letter_opener_web](https://github.com/fgrehm/letter_opener_web).
|
data/letter_opener-web.gemspec
CHANGED
@@ -13,6 +13,12 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = "http://github.com/tyabe/letter_opener-web"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
|
+
spec.post_install_message = <<-MESSAGE
|
17
|
+
! The 'letter_opener-web' gem has been deprecated and has been replaced by 'goatmail'.
|
18
|
+
! See: https://rubygems.org/gems/goatmail
|
19
|
+
! And: https://github.com/tyabe/goatmail
|
20
|
+
MESSAGE
|
21
|
+
|
16
22
|
spec.files = `git ls-files -z`.split("\x0")
|
17
23
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
24
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
@@ -27,4 +33,8 @@ Gem::Specification.new do |spec|
|
|
27
33
|
spec.add_development_dependency "minitest-power_assert"
|
28
34
|
spec.add_development_dependency "rack-test"
|
29
35
|
spec.add_development_dependency "mail"
|
36
|
+
spec.add_development_dependency 'capybara'
|
37
|
+
spec.add_development_dependency 'capybara-webkit'
|
38
|
+
spec.add_development_dependency 'capybara_minitest_spec'
|
39
|
+
spec.add_development_dependency 'poltergeist'
|
30
40
|
end
|
@@ -11,7 +11,7 @@ module LetterOpener
|
|
11
11
|
|
12
12
|
enable :method_override
|
13
13
|
|
14
|
-
if defined?(Padrino)
|
14
|
+
if defined?(Padrino) && Padrino.version < '0.13.0'
|
15
15
|
def self.setup_application!; end
|
16
16
|
def self.dependencies; []; end
|
17
17
|
def self.reload!; end
|
@@ -21,6 +21,12 @@ module LetterOpener
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
helpers do
|
25
|
+
def h(text)
|
26
|
+
Rack::Utils.escape_html(text)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
24
30
|
def root_path
|
25
31
|
"#{env['SCRIPT_NAME']}/"
|
26
32
|
end
|
@@ -20,6 +20,20 @@ jQuery(function($) {
|
|
20
20
|
if (ids.length <= 0) { return false; }
|
21
21
|
var self = $(this), message = self.data('confirm');
|
22
22
|
if (message && !confirm(message)) { return false; }
|
23
|
-
|
23
|
+
self.find('button[type=submit]').attr("disabled", "disabled");
|
24
|
+
self.find(':hidden[name=message_ids]').val(ids);
|
25
|
+
});
|
26
|
+
$('#refresh').on('click', function(e) {
|
27
|
+
var self = $(this);
|
28
|
+
var icon = self.find( ".glyphicon" );
|
29
|
+
icon.addClass( "glyphicon-animate" );
|
30
|
+
});
|
31
|
+
$('#search').on('submit', function(e) {
|
32
|
+
e.preventDefault();
|
33
|
+
});
|
34
|
+
$('.message_list').searcher({
|
35
|
+
itemSelector: 'li',
|
36
|
+
textSelector: 'dt',
|
37
|
+
inputSelector: '#search_input'
|
24
38
|
});
|
25
39
|
});
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*! jQuery Searcher Plugin - v0.1.0 - 2014-01-06
|
2
|
+
* https://github.com/lloiser/jquery-searcher/
|
3
|
+
* Copyright (c) 2014 Lukas Beranek; Licensed MIT
|
4
|
+
*/
|
5
|
+
!function(a){"use strict";function b(b,c){this.element=b,this.options=a.extend({},e,c),this._create()}var c="searcher",d="plugin_"+c,e={itemSelector:"tbody > tr",textSelector:"td",inputSelector:"",caseSensitive:!1,toggle:function(b,c){a(b).toggle(c)}};b.prototype={_create:function(){this._$element=a(this.element);var b=a.proxy(this._onValueChange,this);this._$input=a(this.options.inputSelector).bind("input change keyup",b),this._lastValue=""},_onValueChange:function(){var b=this.options,c=b.textSelector,d=b.caseSensitive,e=b.toggle,f=this._$input.val();d||(f=f.toLowerCase()),f!==this._lastValue&&(this._lastValue=f,this._$element.find(b.itemSelector).each(function(){var b=a(this),g=b;c&&(g=b.find(c)),g=g.filter(function(){var b=a(this).text();return d||(b=b.toLowerCase()),b.indexOf(f)>=0}),e(this,g.length>0)}))}},a.fn[c]=function(c){return this.each(function(){var e=a.data(this,d);e?a.extend(e.options,c):a.data(this,d,new b(this,c))})}}(jQuery,window,document);
|
@@ -56,6 +56,14 @@ input[type="checkbox"] + label {
|
|
56
56
|
#delete {
|
57
57
|
display:inline;
|
58
58
|
}
|
59
|
+
#search {
|
60
|
+
top: 0px;
|
61
|
+
left: 128px;
|
62
|
+
position: absolute;
|
63
|
+
}
|
64
|
+
#search .form-control-feedback {
|
65
|
+
right: 0px;
|
66
|
+
}
|
59
67
|
.left {
|
60
68
|
overflow-y: auto;
|
61
69
|
margin-top: 96px;
|
@@ -118,3 +126,13 @@ li.message.active {
|
|
118
126
|
li.message.active a {
|
119
127
|
color: #fff;
|
120
128
|
}
|
129
|
+
.glyphicon-animate {
|
130
|
+
animation-name: rotateThis;
|
131
|
+
animation-duration: .5s;
|
132
|
+
animation-iteration-count: infinite;
|
133
|
+
animation-timing-function: linear;
|
134
|
+
}
|
135
|
+
@keyframes rotateThis {
|
136
|
+
from { transform: scale( 1 ) rotate( 0deg ); }
|
137
|
+
to { transform: scale( 1 ) rotate( 360deg ); }
|
138
|
+
}
|
@@ -19,9 +19,15 @@
|
|
19
19
|
<span class="glyphicon glyphicon-trash"></span>
|
20
20
|
</button>
|
21
21
|
</form>
|
22
|
-
<a class="btn btn-primary refresh" href="<%= root_path %>">
|
22
|
+
<a id="refresh" class="btn btn-primary refresh" href="<%= root_path %>">
|
23
23
|
<span class="glyphicon glyphicon-refresh"></span>
|
24
24
|
</a>
|
25
|
+
<form id="search" class="form-horizontal">
|
26
|
+
<div class="form-group has-feedback">
|
27
|
+
<input id="search_input" class="form-control" />
|
28
|
+
<span class="form-control-feedback glyphicon glyphicon-search"></span>
|
29
|
+
</div>
|
30
|
+
</form>
|
25
31
|
</div>
|
26
32
|
</li>
|
27
33
|
</ul>
|
@@ -35,7 +41,7 @@
|
|
35
41
|
<label for="message_<%= message.id %>"></label>
|
36
42
|
<a href="<%= root_path + message.id %>" target='mail'>
|
37
43
|
<dl>
|
38
|
-
<dt><%= message.info[:subject] || message.id %></dt>
|
44
|
+
<dt><%=h message.info[:subject] || message.id %></dt>
|
39
45
|
<dd class="text-right"><small><%= message.sent_at %></small></dd>
|
40
46
|
</dl>
|
41
47
|
</a>
|
@@ -9,6 +9,7 @@
|
|
9
9
|
<link href="<%= root_path %>stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
|
10
10
|
<script type="text/javascript" src="<%= root_path %>javascripts/jquery.min.js"></script>
|
11
11
|
<script type="text/javascript" src="<%= root_path %>javascripts/bootstrap.min.js"></script>
|
12
|
+
<script type="text/javascript" src="<%= root_path %>javascripts/jquery.searcher.min.js"></script>
|
12
13
|
<script type="text/javascript" src="<%= root_path %>javascripts/application.js"></script>
|
13
14
|
</head>
|
14
15
|
<body>
|
data/test/helper.rb
CHANGED
@@ -3,14 +3,23 @@ require 'rack/test'
|
|
3
3
|
require 'minitest/autorun'
|
4
4
|
require 'minitest/pride'
|
5
5
|
require 'minitest/spec'
|
6
|
+
require 'capybara'
|
7
|
+
require 'capybara/dsl'
|
8
|
+
require 'capybara/webkit'
|
9
|
+
require 'capybara/poltergeist'
|
6
10
|
require 'mail'
|
7
11
|
require 'letter_opener/web'
|
8
|
-
if RUBY_VERSION >= '2.0'
|
12
|
+
if /^ruby/ =~ RUBY_DESCRIPTION && RUBY_VERSION >= '2.0'
|
9
13
|
require 'minitest-power_assert'
|
10
14
|
end
|
15
|
+
if ENV['TRAVIS']
|
16
|
+
require 'coveralls'
|
17
|
+
Coveralls.wear!
|
18
|
+
end
|
11
19
|
|
12
20
|
class MiniTest::Spec
|
13
21
|
include Rack::Test::Methods
|
22
|
+
include Capybara::DSL
|
14
23
|
def app
|
15
24
|
LetterOpener::Web::App
|
16
25
|
end
|
@@ -31,3 +40,7 @@ end
|
|
31
40
|
MiniTest::Spec.after do
|
32
41
|
FileUtils.rm_rf(test_location)
|
33
42
|
end
|
43
|
+
|
44
|
+
Capybara.app = LetterOpener::Web::App
|
45
|
+
Capybara.default_driver = :webkit
|
46
|
+
Capybara.javascript_driver = :poltergeist
|
data/test/test_app.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
|
+
|
3
|
+
describe LetterOpener::Web::App do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Mail.new {
|
7
|
+
from 'foo@example.com'
|
8
|
+
to 'bar@example.com'
|
9
|
+
subject '<h1>Hello</h1>'
|
10
|
+
body 'World!'
|
11
|
+
}.deliver!
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'can display index' do
|
15
|
+
visit '/'
|
16
|
+
|
17
|
+
assert_equal page.status_code, 200
|
18
|
+
assert page.has_content? 'Hello'
|
19
|
+
within_frame 'mail' do
|
20
|
+
assert ! page.has_content?('World!')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'can display message' do
|
25
|
+
visit '/'
|
26
|
+
click_link 'Hello'
|
27
|
+
|
28
|
+
within_frame 'mail' do
|
29
|
+
assert page.has_content? 'World!'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'subject of the message are escaped' do
|
34
|
+
visit '/'
|
35
|
+
assert page.has_content? '<h1>Hello</h1>'
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: letter_opener-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takeshi Yabe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: letter_opener
|
@@ -122,6 +122,62 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: capybara
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: capybara-webkit
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: capybara_minitest_spec
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: poltergeist
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
125
181
|
description: a Sinatra Application to browse the email sent by letter_opener
|
126
182
|
email: tyabe@nilidea.com
|
127
183
|
executables: []
|
@@ -145,6 +201,7 @@ files:
|
|
145
201
|
- lib/letter_opener/web/assets/javascripts/application.js
|
146
202
|
- lib/letter_opener/web/assets/javascripts/bootstrap.min.js
|
147
203
|
- lib/letter_opener/web/assets/javascripts/jquery.min.js
|
204
|
+
- lib/letter_opener/web/assets/javascripts/jquery.searcher.min.js
|
148
205
|
- lib/letter_opener/web/assets/stylesheets/application.css
|
149
206
|
- lib/letter_opener/web/assets/stylesheets/bootstrap.min.css
|
150
207
|
- lib/letter_opener/web/message.rb
|
@@ -153,13 +210,17 @@ files:
|
|
153
210
|
- lib/letter_opener/web/views/index.erb
|
154
211
|
- lib/letter_opener/web/views/layout.erb
|
155
212
|
- test/helper.rb
|
213
|
+
- test/test_app.rb
|
156
214
|
- test/test_delivery_method.rb
|
157
215
|
- test/test_message.rb
|
158
216
|
homepage: http://github.com/tyabe/letter_opener-web
|
159
217
|
licenses:
|
160
218
|
- MIT
|
161
219
|
metadata: {}
|
162
|
-
post_install_message:
|
220
|
+
post_install_message: |2
|
221
|
+
! The 'letter_opener-web' gem has been deprecated and has been replaced by 'goatmail'.
|
222
|
+
! See: https://rubygems.org/gems/goatmail
|
223
|
+
! And: https://github.com/tyabe/goatmail
|
163
224
|
rdoc_options: []
|
164
225
|
require_paths:
|
165
226
|
- lib
|
@@ -175,11 +236,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
236
|
version: '0'
|
176
237
|
requirements: []
|
177
238
|
rubyforge_project:
|
178
|
-
rubygems_version: 2.
|
239
|
+
rubygems_version: 2.4.5
|
179
240
|
signing_key:
|
180
241
|
specification_version: 4
|
181
242
|
summary: Sinatra-based letter_opener web interface
|
182
243
|
test_files:
|
183
244
|
- test/helper.rb
|
245
|
+
- test/test_app.rb
|
184
246
|
- test/test_delivery_method.rb
|
185
247
|
- test/test_message.rb
|