mailcatcher 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -4,7 +4,7 @@ Catches mail and serves it through a dream.
4
4
 
5
5
  MailCatcher runs a super simple SMTP server which catches any message sent to it to display in a web interface. Run mailcatcher, set your favourite app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server, then check out http://127.0.0.1:1080 to see the mail that's arrived so far.
6
6
 
7
- ![MailCatcher screenshot](http://f.cl.ly/items/0w3m122B401k3Q2C373Q/Image%202011.06.01%202:06:25%20AM.png)
7
+ ![MailCatcher screenshot](http://cl.ly/1400252J3k313s2b0v1Z/Screen_shot_2011-06-23_at_11.39.03_PM.png)
8
8
 
9
9
  ## Features
10
10
 
@@ -0,0 +1,3 @@
1
+ /** Modernizr 2.0.4 (Custom Build) | MIT & BSD */
2
+ window.Modernizr=function(a,b,c){function x(a,b){return!!~(""+a).indexOf(b)}function w(a,b){return typeof a===b}function v(a,b){return u(prefixes.join(a+";")+(b||""))}function u(a){k.cssText=a}var d="2.0.4",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l,m=Object.prototype.toString,n={},o={},p={},q=[],r,s={}.hasOwnProperty,t;!w(s,c)&&!w(s.call,c)?t=function(a,b){return s.call(a,b)}:t=function(a,b){return b in a&&w(a.constructor.prototype[b],c)};for(var y in n)t(n,y)&&(r=y.toLowerCase(),e[r]=n[y](),q.push((e[r]?"":"no-")+r));u(""),j=l=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b<g)a.createElement(f[b])}a.iepp=a.iepp||{};var d=a.iepp,e=d.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",f=e.split("|"),g=f.length,h=new RegExp("(^|\\s)("+e+")","gi"),i=new RegExp("<(/*)("+e+")","gi"),j=/^\s*[\{\}]\s*$/,k=new RegExp("(^|[^\\n]*?\\s)("+e+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),l=b.createDocumentFragment(),m=b.documentElement,n=m.firstChild,o=b.createElement("body"),p=b.createElement("style"),q=/print|all/,r;d.getCSS=function(a,b){if(a+""===c)return"";var e=-1,f=a.length,g,h=[];while(++e<f){g=a[e];if(g.disabled)continue;b=g.media||b,q.test(b)&&h.push(d.getCSS(g.imports,b),g.cssText),b="all"}return h.join("")},d.parseCSS=function(a){var b=[],c;while((c=k.exec(a))!=null)b.push(((j.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(h,"$1.iepp_$2")+c[4]);return b.join("\n")},d.writeHTML=function(){var a=-1;r=r||b.body;while(++a<g){var c=b.getElementsByTagName(f[a]),d=c.length,e=-1;while(++e<d)c[e].className.indexOf("iepp_")<0&&(c[e].className+=" iepp_"+f[a])}l.appendChild(r),m.appendChild(o),o.className=r.className,o.id=r.id,o.innerHTML=r.innerHTML.replace(i,"<$1font")},d._beforePrint=function(){p.styleSheet.cssText=d.parseCSS(d.getCSS(b.styleSheets,"all")),d.writeHTML()},d.restoreHTML=function(){o.innerHTML="",m.removeChild(o),m.appendChild(r)},d._afterPrint=function(){d.restoreHTML(),p.styleSheet.cssText=""},s(b),s(l);d.disablePP||(n.insertBefore(p,n.firstChild),p.media="print",p.className="iepp-printshim",a.attachEvent("onbeforeprint",d._beforePrint),a.attachEvent("onafterprint",d._afterPrint))}(a,b),e._version=d,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+q.join(" "):"");return e}(this,this.document);
3
+
@@ -67,13 +67,55 @@ body {
67
67
  body html > body {
68
68
  font-size: 12px; }
69
69
 
70
+ .button {
71
+ padding: 0.5em 1em;
72
+ border: 1px solid #cccccc;
73
+ -moz-border-radius: 2px;
74
+ -webkit-border-radius: 2px;
75
+ -o-border-radius: 2px;
76
+ -ms-border-radius: 2px;
77
+ -khtml-border-radius: 2px;
78
+ border-radius: 2px;
79
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #ececec)), #ececec;
80
+ background: -webkit-linear-gradient(#f4f4f4, #ececec), #ececec;
81
+ background: -moz-linear-gradient(#f4f4f4, #ececec), #ececec;
82
+ background: -o-linear-gradient(#f4f4f4, #ececec), #ececec;
83
+ background: linear-gradient(#f4f4f4, #ececec), #ececec;
84
+ color: #666666;
85
+ text-shadow: 1px 1px 0 white;
86
+ text-decoration: none; }
87
+ .button:hover, .button:focus {
88
+ border-color: #999999;
89
+ border-bottom-color: #666666;
90
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
91
+ background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
92
+ background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
93
+ background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
94
+ background: linear-gradient(#eeeeee, #dddddd), #dddddd;
95
+ color: #333333;
96
+ text-decoration: none; }
97
+ .button:active, .button.active {
98
+ border-color: #666666;
99
+ border-bottom-color: #999999;
100
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
101
+ background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
102
+ background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
103
+ background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
104
+ background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
105
+ color: #333333;
106
+ text-decoration: none;
107
+ text-shadow: -1px -1px 0 #eeeeee; }
108
+
70
109
  body > header {
71
110
  overflow: hidden;
72
111
  *zoom: 1;
73
112
  border-bottom: 1px solid #cccccc; }
74
113
  body > header h1 {
75
114
  float: left;
115
+ margin-left: 6px;
76
116
  padding: 6px;
117
+ padding-left: 30px;
118
+ background: url(/images/logo.png) left no-repeat;
77
119
  font-size: 18px;
78
120
  font-weight: bold; }
79
121
  body > header h1 a {
@@ -91,8 +133,7 @@ body > header {
91
133
  body > header h1 a:hover {
92
134
  color: #4183c4; }
93
135
  body > header nav {
94
- border-left: 1px solid #cccccc;
95
- border-right: 1px solid white; }
136
+ border-left: 1px solid #cccccc; }
96
137
  body > header nav.project {
97
138
  float: left; }
98
139
  body > header nav.app {
@@ -100,24 +141,44 @@ body > header {
100
141
  body > header nav li {
101
142
  display: inline; }
102
143
  body > header nav li a {
144
+ display: -moz-inline-box;
145
+ -moz-box-orient: vertical;
103
146
  display: inline-block;
147
+ vertical-align: middle;
148
+ *vertical-align: auto;
104
149
  float: left;
105
150
  padding: 9px;
106
151
  border-left: 1px solid white;
107
152
  border-right: 1px solid #cccccc;
108
- background: #eeeeee;
109
- color: #666666;
110
- font-weight: bold;
111
153
  text-decoration: none;
112
- text-shadow: 0 1px 0 white; }
113
- body > header nav li a:hover {
114
- background: white; }
115
- body > header nav li a:active {
116
- margin: 1px -1px -1px 1px;
117
- -moz-box-shadow: none;
118
- -webkit-box-shadow: none;
119
- -o-box-shadow: none;
120
- box-shadow: none; }
154
+ text-shadow: 0 1px 0 white;
155
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #ececec)), #ececec;
156
+ background: -webkit-linear-gradient(#f4f4f4, #ececec), #ececec;
157
+ background: -moz-linear-gradient(#f4f4f4, #ececec), #ececec;
158
+ background: -o-linear-gradient(#f4f4f4, #ececec), #ececec;
159
+ background: linear-gradient(#f4f4f4, #ececec), #ececec;
160
+ color: #666666;
161
+ text-shadow: 1px 1px 0 white;
162
+ text-decoration: none; }
163
+ body > header nav li a {
164
+ *display: inline; }
165
+ body > header nav li a:hover, body > header nav li a:focus {
166
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
167
+ background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
168
+ background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
169
+ background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
170
+ background: linear-gradient(#eeeeee, #dddddd), #dddddd;
171
+ color: #333333;
172
+ text-decoration: none; }
173
+ body > header nav li a:active, body > header nav li a.active {
174
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
175
+ background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
176
+ background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
177
+ background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
178
+ background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
179
+ color: #333333;
180
+ text-decoration: none;
181
+ text-shadow: -1px -1px 0 #eeeeee; }
121
182
 
122
183
  #messages {
123
184
  width: 100%;
@@ -203,18 +264,24 @@ body > header {
203
264
  *display: inline; }
204
265
  #message > header .views ul {
205
266
  padding: 0 0.5em;
206
- border-bottom: 1px solid #999999; }
267
+ border-bottom: 1px solid #cccccc; }
207
268
  #message > header .views .tab {
269
+ display: -moz-inline-box;
270
+ -moz-box-orient: vertical;
208
271
  display: inline-block;
272
+ vertical-align: middle;
273
+ *vertical-align: auto;
209
274
  padding: 0.5em;
210
- border: 1px solid #999999;
275
+ border: 1px solid #cccccc;
211
276
  background: #dddddd;
212
277
  color: #333333;
213
278
  border-width: 1px 1px 0 1px;
214
279
  cursor: pointer;
215
280
  text-shadow: 0 1px 0 #eeeeee; }
281
+ #message > header .views .tab {
282
+ *display: inline; }
216
283
  #message > header .views .tab:not(.selected):hover {
217
- background-color: #dddddd; }
284
+ background-color: #eeeeee; }
218
285
  #message > header .views .tab.selected {
219
286
  background: white;
220
287
  color: black;
@@ -223,32 +290,18 @@ body > header {
223
290
  -webkit-box-shadow: 1px 1px 0 #cccccc;
224
291
  -o-box-shadow: 1px 1px 0 #cccccc;
225
292
  box-shadow: 1px 1px 0 #cccccc;
226
- margin-bottom: -2px; }
227
- #message > header .views .button {
293
+ margin-bottom: -2px;
294
+ cursor: default; }
295
+ #message > header .views .action {
296
+ display: -moz-inline-box;
297
+ -moz-box-orient: vertical;
228
298
  display: inline-block;
299
+ vertical-align: middle;
300
+ *vertical-align: auto;
229
301
  float: right;
230
302
  margin: 0 0.25em; }
231
- #message > header .views .button a {
232
- display: inline-block;
233
- padding: 0.25em 0.5em;
234
- border: 1px solid #999999;
235
- background: #dddddd;
236
- color: #333333;
237
- text-decoration: none;
238
- text-shadow: 1px 1px 0 #eeeeee;
239
- -moz-box-shadow: 1px 1px 0 #cccccc;
240
- -webkit-box-shadow: 1px 1px 0 #cccccc;
241
- -o-box-shadow: 1px 1px 0 #cccccc;
242
- box-shadow: 1px 1px 0 #cccccc; }
243
- #message > header .views .button a:hover {
244
- background: white;
245
- text-shadow: none; }
246
- #message > header .views .button a:active {
247
- margin: 1px -1px -1px 1px;
248
- -moz-box-shadow: none;
249
- -webkit-box-shadow: none;
250
- -o-box-shadow: none;
251
- box-shadow: none; }
303
+ #message > header .views .action {
304
+ *display: inline; }
252
305
  #message .body {
253
306
  display: -moz-box;
254
307
  display: -webkit-box;
@@ -3,6 +3,7 @@
3
3
  %head
4
4
  %title MailCatcher
5
5
  %link{:rel => "stylesheet", :href => "/stylesheets/application.css"}
6
+ %script{:src => "/javascripts/modernizr.js"}
6
7
  %script{:src => "/javascripts/jquery.js"}
7
8
  %script{:src => "/javascripts/date.js"}
8
9
  %script{:src => "/javascripts/application.js"}
@@ -44,7 +45,7 @@
44
45
  %li.format.tab.html.selected{'data-message-format' => 'html'} HTML
45
46
  %li.format.tab.plain{'data-message-format' => 'plain'} Plain Text
46
47
  %li.format.tab.source{'data-message-format' => 'source'} Source
47
- %li.button.download
48
- %a{:href => '#'}
48
+ %li.action.download
49
+ %a.button{:href => '#'}
49
50
  %span Download
50
51
  %iframe.body
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: mailcatcher
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.5
5
+ version: 0.4.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Samuel Cochran
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-10 00:00:00 Z
13
+ date: 2011-06-23 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -157,9 +157,9 @@ files:
157
157
  - public/javascripts/application.js
158
158
  - public/javascripts/date.js
159
159
  - public/javascripts/jquery.js
160
+ - public/javascripts/modernizr.js
160
161
  - public/stylesheets/application.css
161
162
  - views/index.haml
162
- - views/index.html
163
163
  homepage: http://github.com/sj26/mailcatcher
164
164
  licenses: []
165
165
 
@@ -1,71 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html>
3
- <head>
4
- <title>MailCatcher</title>
5
- <link href='/stylesheets/application.css' rel='stylesheet' />
6
- <script src='/javascripts/jquery.js'></script>
7
- <script src='/javascripts/date.js'></script>
8
- <script src='/javascripts/application.js'></script>
9
- </head>
10
- <body>
11
- <header>
12
- <h1>
13
- <a href='http://mailcatcher.me' target='_blank'>MailCatcher</a>
14
- </h1>
15
- <nav class='app'>
16
- <ul>
17
- <li class='clear'>
18
- <a href='#' title='Clear all messages'>Clear</a>
19
- </li>
20
- <li class='quit'>
21
- <a href='#' title='Quit MailCatcher'>Quit</a>
22
- </li>
23
- </ul>
24
- </nav>
25
- </header>
26
- <nav id='messages'>
27
- <table>
28
- <thead>
29
- <tr>
30
- <th>From</th>
31
- <th>To</th>
32
- <th>Subject</th>
33
- <th>Received</th>
34
- </tr>
35
- </thead>
36
- <tbody></tbody>
37
- </table>
38
- </nav>
39
- <article id='message'>
40
- <header>
41
- <dl class='metadata'>
42
- <dt class='created_at'>Received</dt>
43
- <dd class='created_at'></dd>
44
- <dt class='from'>From</dt>
45
- <dd class='from'></dd>
46
- <dt class='to'>To</dt>
47
- <dd class='to'></dd>
48
- <dt class='subject'>Subject</dt>
49
- <dd class='subject'></dd>
50
- <dt class='attachments'>Attachments</dt>
51
- <dd class='attachments'>
52
- <ul></ul>
53
- </dd>
54
- </dl>
55
- <nav class='views'>
56
- <ul>
57
- <li class='format tab html selected' data-message-format='html'>HTML</li>
58
- <li class='format tab plain' data-message-format='plain'>Plain Text</li>
59
- <li class='format tab source' data-message-format='source'>Source</li>
60
- <li class='button download'>
61
- <a href='#'>
62
- <span>Download</span>
63
- </a>
64
- </li>
65
- </ul>
66
- </nav>
67
- </header>
68
- <iframe class='body'></iframe>
69
- </article>
70
- </body>
71
- </html>