mailcatcher 0.5.12 → 0.6.0pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +24 -11
- data/bin/catchmail +23 -2
- data/bin/mailcatcher +1 -0
- data/lib/mail_catcher.rb +49 -43
- data/lib/mail_catcher/events.rb +5 -3
- data/lib/mail_catcher/mail.rb +15 -15
- data/lib/mail_catcher/smtp.rb +6 -2
- data/lib/mail_catcher/version.rb +1 -1
- data/lib/mail_catcher/web.rb +14 -141
- data/lib/mail_catcher/web/application.rb +188 -0
- data/lib/mailcatcher.rb +3 -0
- data/public/{images → assets}/logo.png +0 -0
- data/public/{images → assets}/logo_large.png +0 -0
- data/public/assets/mailcatcher.css +1 -0
- data/public/assets/mailcatcher.js +5 -0
- data/views/404.erb +6 -0
- data/views/index.erb +62 -0
- metadata +148 -77
- metadata.gz.sig +0 -0
- data/lib/mail_catcher/growl.rb +0 -16
- data/public/javascripts/application.js +0 -408
- data/public/javascripts/date.js +0 -104
- data/public/javascripts/flexie.min.js +0 -36
- data/public/javascripts/jquery.js +0 -6883
- data/public/javascripts/keymaster.min.js +0 -4
- data/public/javascripts/modernizr.js +0 -3
- data/public/javascripts/xslt-3.2.js +0 -1
- data/public/stylesheets/analysis.xsl +0 -33
- data/public/stylesheets/application.css +0 -375
- data/views/index.haml +0 -63
@@ -1,4 +0,0 @@
|
|
1
|
-
// keymaster.js
|
2
|
-
// (c) 2011 Thomas Fuchs
|
3
|
-
// keymaster.js may be freely distributed under the MIT license.
|
4
|
-
(function(a){function h(a,b){var c=a.length;while(c--)if(a[c]===b)return c;return-1}function i(a){var b,g,i,j,k;b=a.keyCode;if(b==93||b==224)b=91;if(b in d){d[b]=!0;for(i in f)f[i]==b&&(l[i]=!0);return}if(!l.filter.call(this,a))return;if(!(b in c))return;for(j=0;j<c[b].length;j++){g=c[b][j];if(g.scope==e||g.scope=="all"){k=g.mods.length>0;for(i in d)if(!d[i]&&h(g.mods,+i)>-1||d[i]&&h(g.mods,+i)==-1)k=!1;(g.mods.length==0&&!d[16]&&!d[18]&&!d[17]&&!d[91]||k)&&g.method(a,g)===!1&&(a.preventDefault?a.preventDefault():a.returnValue=!1,a.stopPropagation&&a.stopPropagation(),a.cancelBubble&&(a.cancelBubble=!0))}}}function j(a){var b=a.keyCode,c;if(b==93||b==224)b=91;if(b in d){d[b]=!1;for(c in f)f[c]==b&&(l[c]=!1)}}function k(){for(b in d)d[b]=!1;for(b in f)l[b]=!1}function l(a,b,d){var e,h,i,j;d===undefined&&(d=b,b="all"),a=a.replace(/\s/g,""),e=a.split(","),e[e.length-1]==""&&(e[e.length-2]+=",");for(i=0;i<e.length;i++){h=[],a=e[i].split("+");if(a.length>1){h=a.slice(0,a.length-1);for(j=0;j<h.length;j++)h[j]=f[h[j]];a=[a[a.length-1]]}a=a[0],a=g[a]||a.toUpperCase().charCodeAt(0),a in c||(c[a]=[]),c[a].push({shortcut:e[i],scope:b,method:d,key:e[i],mods:h})}}function m(a){var b=(a.target||a.srcElement).tagName;return b!="INPUT"&&b!="SELECT"&&b!="TEXTAREA"}function n(a){e=a||"all"}function o(){return e||"all"}function p(a){var b,d,e;for(b in c){d=c[b];for(e=0;e<d.length;)d[e].scope===a?d.splice(e,1):e++}}function q(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,function(){c(window.event)})}var b,c={},d={16:!1,18:!1,17:!1,91:!1},e="all",f={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,command:91},g={backspace:8,tab:9,clear:12,enter:13,"return":13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,"delete":46,home:36,end:35,pageup:33,pagedown:34,",":188,".":190,"/":191,"`":192,"-":189,"=":187,";":186,"'":222,"[":219,"]":221,"\\":220};for(b=1;b<20;b++)f["f"+b]=111+b;for(b in f)l[b]=!1;q(document,"keydown",i),q(document,"keyup",j),q(window,"focus",k),a.key=l,a.key.setScope=n,a.key.getScope=o,a.key.deleteScope=p,a.key.filter=m,typeof module!="undefined"&&(module.exports=key)})(this);
|
@@ -1,3 +0,0 @@
|
|
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
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(2(C){C.l.h=2(){k 7};0 D=/^\\s*</;1(a.11){C.l.h=2(F,G){0 H=C(7);0 J=2(){0 K="V";1(I.5==K&&E.5==K){b.W(2(){H.z(I.P(E.Q))},R)}};0 I=a.r("6");I.d=J;I[D.f(F)?"n":"o"]=F;0 E=a.r("6");E.d=J;E[D.f(G)?"n":"o"]=G;C("T").g(I).g(E);k 7}}8{1(b.m!=e&&b.U!=e&&b.i!=e){0 B=9 i();0 A=t;1(C.v(B.j)){A=b.M!=e}8{A=q}1(A){C.l.h=2(G,H){0 I=C(7);0 F=t;0 J={5:4};0 E={5:4};0 K=2(){1(J.5==4&&E.5==4&&!F){0 L=9 i();1(C.v(L.j)){c=a.X.Y("","",y);L.j(J.3,E.3,c,y);I.z(9 M().Z(c))}8{L.10(E.3);c=L.O(J.3,a);I.S().g(c)}F=q}};1(D.f(G)){J.3=9 m().x(G,"p/6")}8{J=C.u({w:"6",N:G});J.d=K}1(D.f(H)){E.3=9 m().x(H,"p/6");K()}8{E=C.u({w:"6",N:H});E.d=K}k 7}}}}})(12);',62,65,'var|if|function|responseXML||readyState|xml|this|else|new|document|window|resultDoc|onreadystatechange|undefined|test|append|xslt|XSLTProcessor|transformDocument|return|fn|DOMParser|innerHTML|src|text|true|createElement||false|ajax|isFunction|dataType|parseFromString|null|html|||||||||||||XMLSerializer|url|transformToFragment|transformNode|XMLDocument|50|empty|body|XMLHttpRequest|complete|setTimeout|implementation|createDocument|serializeToString|importStylesheet|recalc|jQuery'.split('|'),0,{}))
|
@@ -1,33 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
-
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
3
|
-
<xsl:template match="/xml">
|
4
|
-
<section class="fractal-analysis">
|
5
|
-
<h1>Fractal Results</h1>
|
6
|
-
<xsl:choose>
|
7
|
-
<xsl:when test="not(result/errors/node())">
|
8
|
-
<p class="report-intro valid">Your HTML and CSS for your email is valid.</p>
|
9
|
-
</xsl:when>
|
10
|
-
<xsl:otherwise>
|
11
|
-
<p class="report-intro invalid">Your HTML and CSS for your email contains potential errors:</p>
|
12
|
-
<ol>
|
13
|
-
<xsl:for-each select="result/errors/error">
|
14
|
-
<li>
|
15
|
-
<p class="error-intro">The <code><xsl:value-of select="rule/rule_name" /></code> near <code><xsl:value-of select="snippet" /></code> on line <code><xsl:value-of select="error_line" /></code> of your code.</p>
|
16
|
-
<dl class="unsupported-clients">
|
17
|
-
<dt>This is unsupported in:</dt>
|
18
|
-
<dd>
|
19
|
-
<ul>
|
20
|
-
<xsl:for-each select="rule/email_client//item">
|
21
|
-
<li><xsl:value-of select="." /></li>
|
22
|
-
</xsl:for-each>
|
23
|
-
</ul>
|
24
|
-
</dd>
|
25
|
-
</dl>
|
26
|
-
</li>
|
27
|
-
</xsl:for-each>
|
28
|
-
</ol>
|
29
|
-
</xsl:otherwise>
|
30
|
-
</xsl:choose>
|
31
|
-
</section>
|
32
|
-
</xsl:template>
|
33
|
-
</xsl:stylesheet>
|
@@ -1,375 +0,0 @@
|
|
1
|
-
html, body, div, span, applet, object, iframe,
|
2
|
-
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
3
|
-
a, abbr, acronym, address, big, cite, code,
|
4
|
-
del, dfn, em, img, ins, kbd, q, s, samp,
|
5
|
-
small, strike, strong, sub, sup, tt, var,
|
6
|
-
b, u, i, center,
|
7
|
-
dl, dt, dd, ol, ul, li,
|
8
|
-
fieldset, form, label, legend,
|
9
|
-
table, caption, tbody, tfoot, thead, tr, th, td,
|
10
|
-
article, aside, canvas, details, embed,
|
11
|
-
figure, figcaption, footer, header, hgroup,
|
12
|
-
menu, nav, output, ruby, section, summary,
|
13
|
-
time, mark, audio, video {
|
14
|
-
margin: 0;
|
15
|
-
padding: 0;
|
16
|
-
border: 0;
|
17
|
-
font: inherit;
|
18
|
-
font-size: 100%;
|
19
|
-
vertical-align: baseline; }
|
20
|
-
|
21
|
-
html {
|
22
|
-
line-height: 1; }
|
23
|
-
|
24
|
-
ol, ul {
|
25
|
-
list-style: none; }
|
26
|
-
|
27
|
-
table {
|
28
|
-
border-collapse: collapse;
|
29
|
-
border-spacing: 0; }
|
30
|
-
|
31
|
-
caption, th, td {
|
32
|
-
text-align: left;
|
33
|
-
font-weight: normal;
|
34
|
-
vertical-align: middle; }
|
35
|
-
|
36
|
-
q, blockquote {
|
37
|
-
quotes: none; }
|
38
|
-
q:before, q:after, blockquote:before, blockquote:after {
|
39
|
-
content: "";
|
40
|
-
content: none; }
|
41
|
-
|
42
|
-
a img {
|
43
|
-
border: none; }
|
44
|
-
|
45
|
-
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
|
46
|
-
display: block; }
|
47
|
-
|
48
|
-
html, body {
|
49
|
-
width: 100%;
|
50
|
-
height: 100%; }
|
51
|
-
|
52
|
-
body {
|
53
|
-
display: -webkit-box;
|
54
|
-
display: -moz-box;
|
55
|
-
display: -ms-box;
|
56
|
-
display: box;
|
57
|
-
-webkit-box-orient: vertical;
|
58
|
-
-moz-box-orient: vertical;
|
59
|
-
-ms-box-orient: vertical;
|
60
|
-
box-orient: vertical;
|
61
|
-
background: #eeeeee;
|
62
|
-
color: black;
|
63
|
-
font-size: 12px;
|
64
|
-
font-family: Helvetica, sans-serif; }
|
65
|
-
body html {
|
66
|
-
font-size: 75%;
|
67
|
-
line-height: 2em; }
|
68
|
-
body.iframe {
|
69
|
-
background: white; }
|
70
|
-
body.iframe h1 {
|
71
|
-
font-size: 1.3em;
|
72
|
-
margin: 12px; }
|
73
|
-
body.iframe p, body.iframe form {
|
74
|
-
margin: 0 12px 12px 12px;
|
75
|
-
line-height: 1.25; }
|
76
|
-
body.iframe .loading {
|
77
|
-
color: #666666;
|
78
|
-
margin-left: 0.5em; }
|
79
|
-
|
80
|
-
.button {
|
81
|
-
padding: 0.5em 1em;
|
82
|
-
border: 1px solid #cccccc;
|
83
|
-
-webkit-border-radius: 2px;
|
84
|
-
-moz-border-radius: 2px;
|
85
|
-
-ms-border-radius: 2px;
|
86
|
-
-o-border-radius: 2px;
|
87
|
-
border-radius: 2px;
|
88
|
-
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #ececec)), #ececec;
|
89
|
-
background: -webkit-linear-gradient(#f4f4f4, #ececec), #ececec;
|
90
|
-
background: -moz-linear-gradient(#f4f4f4, #ececec), #ececec;
|
91
|
-
background: -o-linear-gradient(#f4f4f4, #ececec), #ececec;
|
92
|
-
background: -ms-linear-gradient(#f4f4f4, #ececec), #ececec;
|
93
|
-
background: linear-gradient(#f4f4f4, #ececec), #ececec;
|
94
|
-
color: #666666;
|
95
|
-
text-shadow: 1px 1px 0 white;
|
96
|
-
text-decoration: none; }
|
97
|
-
.button:hover, .button:focus {
|
98
|
-
border-color: #999999;
|
99
|
-
border-bottom-color: #666666;
|
100
|
-
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
|
101
|
-
background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
102
|
-
background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
103
|
-
background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
104
|
-
background: -ms-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
105
|
-
background: linear-gradient(#eeeeee, #dddddd), #dddddd;
|
106
|
-
color: #333333;
|
107
|
-
text-decoration: none; }
|
108
|
-
.button:active, .button.active {
|
109
|
-
border-color: #666666;
|
110
|
-
border-bottom-color: #999999;
|
111
|
-
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
|
112
|
-
background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
113
|
-
background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
114
|
-
background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
115
|
-
background: -ms-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
116
|
-
background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
117
|
-
color: #333333;
|
118
|
-
text-decoration: none;
|
119
|
-
text-shadow: -1px -1px 0 #eeeeee; }
|
120
|
-
|
121
|
-
body > header {
|
122
|
-
overflow: hidden;
|
123
|
-
*zoom: 1;
|
124
|
-
border-bottom: 1px solid #cccccc; }
|
125
|
-
body > header h1 {
|
126
|
-
float: left;
|
127
|
-
margin-left: 6px;
|
128
|
-
padding: 6px;
|
129
|
-
padding-left: 30px;
|
130
|
-
background: url(/images/logo.png) left no-repeat;
|
131
|
-
font-size: 18px;
|
132
|
-
font-weight: bold; }
|
133
|
-
body > header h1 a {
|
134
|
-
color: black;
|
135
|
-
text-decoration: none;
|
136
|
-
text-shadow: 0 1px 0 white;
|
137
|
-
-webkit-transition: 0.1s ease;
|
138
|
-
-moz-transition: 0.1s ease;
|
139
|
-
-ms-transition: 0.1s ease;
|
140
|
-
-o-transition: 0.1s ease;
|
141
|
-
transition: 0.1s ease; }
|
142
|
-
body > header h1 a:hover {
|
143
|
-
color: #4183c4; }
|
144
|
-
body > header nav {
|
145
|
-
border-left: 1px solid #cccccc; }
|
146
|
-
body > header nav.project {
|
147
|
-
float: left; }
|
148
|
-
body > header nav.app {
|
149
|
-
float: right; }
|
150
|
-
body > header nav li {
|
151
|
-
display: block;
|
152
|
-
float: left;
|
153
|
-
border-left: 1px solid white;
|
154
|
-
border-right: 1px solid #cccccc; }
|
155
|
-
body > header nav li input {
|
156
|
-
margin: 6px; }
|
157
|
-
body > header nav li a {
|
158
|
-
display: block;
|
159
|
-
padding: 10px;
|
160
|
-
text-decoration: none;
|
161
|
-
text-shadow: 0 1px 0 white;
|
162
|
-
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #ececec)), #ececec;
|
163
|
-
background: -webkit-linear-gradient(#f4f4f4, #ececec), #ececec;
|
164
|
-
background: -moz-linear-gradient(#f4f4f4, #ececec), #ececec;
|
165
|
-
background: -o-linear-gradient(#f4f4f4, #ececec), #ececec;
|
166
|
-
background: -ms-linear-gradient(#f4f4f4, #ececec), #ececec;
|
167
|
-
background: linear-gradient(#f4f4f4, #ececec), #ececec;
|
168
|
-
color: #666666;
|
169
|
-
text-shadow: 1px 1px 0 white;
|
170
|
-
text-decoration: none; }
|
171
|
-
body > header nav li a:hover, body > header nav li a:focus {
|
172
|
-
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
|
173
|
-
background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
174
|
-
background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
175
|
-
background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
176
|
-
background: -ms-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
177
|
-
background: linear-gradient(#eeeeee, #dddddd), #dddddd;
|
178
|
-
color: #333333;
|
179
|
-
text-decoration: none; }
|
180
|
-
body > header nav li a:active, body > header nav li a.active {
|
181
|
-
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
|
182
|
-
background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
183
|
-
background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
184
|
-
background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
185
|
-
background: -ms-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
186
|
-
background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
187
|
-
color: #333333;
|
188
|
-
text-decoration: none;
|
189
|
-
text-shadow: -1px -1px 0 #eeeeee; }
|
190
|
-
|
191
|
-
#messages {
|
192
|
-
width: 100%;
|
193
|
-
height: 10em;
|
194
|
-
min-height: 3em;
|
195
|
-
overflow: auto;
|
196
|
-
background: white;
|
197
|
-
border-top: 1px solid white; }
|
198
|
-
#messages table {
|
199
|
-
overflow: hidden;
|
200
|
-
*zoom: 1;
|
201
|
-
width: 100%; }
|
202
|
-
#messages table thead tr {
|
203
|
-
background: #eeeeee;
|
204
|
-
color: #333333; }
|
205
|
-
#messages table thead tr th {
|
206
|
-
padding: 0.25em;
|
207
|
-
font-weight: bold;
|
208
|
-
color: #666666;
|
209
|
-
text-shadow: 0 1px 0 white; }
|
210
|
-
#messages table tbody tr {
|
211
|
-
cursor: pointer;
|
212
|
-
-webkit-transition: 0.1s ease;
|
213
|
-
-moz-transition: 0.1s ease;
|
214
|
-
-ms-transition: 0.1s ease;
|
215
|
-
-o-transition: 0.1s ease;
|
216
|
-
transition: 0.1s ease;
|
217
|
-
color: #333333; }
|
218
|
-
#messages table tbody tr:hover {
|
219
|
-
color: black; }
|
220
|
-
#messages table tbody tr:nth-child(even) {
|
221
|
-
background: #f0f0f0; }
|
222
|
-
#messages table tbody tr.selected {
|
223
|
-
background: Highlight;
|
224
|
-
color: HighlightText; }
|
225
|
-
#messages table tbody tr td {
|
226
|
-
padding: 0.25em; }
|
227
|
-
#messages table tbody tr td.blank {
|
228
|
-
color: #666666;
|
229
|
-
font-style: italic; }
|
230
|
-
|
231
|
-
#resizer {
|
232
|
-
padding-bottom: 5px;
|
233
|
-
cursor: ns-resize; }
|
234
|
-
#resizer .ruler {
|
235
|
-
border-top: 1px solid #cccccc;
|
236
|
-
border-bottom: 1px solid white; }
|
237
|
-
|
238
|
-
#message {
|
239
|
-
display: -webkit-box;
|
240
|
-
display: -moz-box;
|
241
|
-
display: -ms-box;
|
242
|
-
display: box;
|
243
|
-
-webkit-box-orient: vertical;
|
244
|
-
-moz-box-orient: vertical;
|
245
|
-
-ms-box-orient: vertical;
|
246
|
-
box-orient: vertical;
|
247
|
-
-webkit-box-flex: 1;
|
248
|
-
-moz-box-flex: 1;
|
249
|
-
-ms-box-flex: 1;
|
250
|
-
box-flex: 1; }
|
251
|
-
#message > header {
|
252
|
-
overflow: hidden;
|
253
|
-
*zoom: 1; }
|
254
|
-
#message > header .metadata {
|
255
|
-
overflow: hidden;
|
256
|
-
*zoom: 1;
|
257
|
-
padding: 0.5em;
|
258
|
-
padding-top: 0; }
|
259
|
-
#message > header .metadata dt, #message > header .metadata dd {
|
260
|
-
padding: 0.25em; }
|
261
|
-
#message > header .metadata dt {
|
262
|
-
float: left;
|
263
|
-
clear: left;
|
264
|
-
width: 8em;
|
265
|
-
margin-right: 0.5em;
|
266
|
-
text-align: right;
|
267
|
-
font-weight: bold;
|
268
|
-
color: #666666;
|
269
|
-
text-shadow: 0 1px 0 white; }
|
270
|
-
#message > header .metadata dd.subject {
|
271
|
-
font-weight: bold; }
|
272
|
-
#message > header .metadata .attachments {
|
273
|
-
display: none; }
|
274
|
-
#message > header .metadata .attachments ul {
|
275
|
-
display: inline; }
|
276
|
-
#message > header .metadata .attachments ul li {
|
277
|
-
display: -moz-inline-box;
|
278
|
-
-moz-box-orient: vertical;
|
279
|
-
display: inline-block;
|
280
|
-
vertical-align: middle;
|
281
|
-
*vertical-align: auto;
|
282
|
-
margin-right: 0.5em; }
|
283
|
-
#message > header .metadata .attachments ul li {
|
284
|
-
*display: inline; }
|
285
|
-
#message > header .views ul {
|
286
|
-
padding: 0 0.5em;
|
287
|
-
border-bottom: 1px solid #cccccc; }
|
288
|
-
#message > header .views .tab {
|
289
|
-
display: -moz-inline-box;
|
290
|
-
-moz-box-orient: vertical;
|
291
|
-
display: inline-block;
|
292
|
-
vertical-align: middle;
|
293
|
-
*vertical-align: auto; }
|
294
|
-
#message > header .views .tab {
|
295
|
-
*display: inline; }
|
296
|
-
#message > header .views .tab a {
|
297
|
-
display: -moz-inline-box;
|
298
|
-
-moz-box-orient: vertical;
|
299
|
-
display: inline-block;
|
300
|
-
vertical-align: middle;
|
301
|
-
*vertical-align: auto;
|
302
|
-
padding: 0.5em;
|
303
|
-
border: 1px solid #cccccc;
|
304
|
-
background: #dddddd;
|
305
|
-
color: #333333;
|
306
|
-
border-width: 1px 1px 0 1px;
|
307
|
-
cursor: pointer;
|
308
|
-
text-shadow: 0 1px 0 #eeeeee;
|
309
|
-
text-decoration: none; }
|
310
|
-
#message > header .views .tab a {
|
311
|
-
*display: inline; }
|
312
|
-
#message > header .views .tab:not(.selected):hover a {
|
313
|
-
background-color: #eeeeee; }
|
314
|
-
#message > header .views .tab.selected a {
|
315
|
-
background: white;
|
316
|
-
color: black;
|
317
|
-
height: 13px;
|
318
|
-
-webkit-box-shadow: 1px 1px 0 #cccccc;
|
319
|
-
-moz-box-shadow: 1px 1px 0 #cccccc;
|
320
|
-
box-shadow: 1px 1px 0 #cccccc;
|
321
|
-
margin-bottom: -2px;
|
322
|
-
cursor: default; }
|
323
|
-
#message > header .views .action {
|
324
|
-
display: -moz-inline-box;
|
325
|
-
-moz-box-orient: vertical;
|
326
|
-
display: inline-block;
|
327
|
-
vertical-align: middle;
|
328
|
-
*vertical-align: auto;
|
329
|
-
float: right;
|
330
|
-
margin: 0 0.25em; }
|
331
|
-
#message > header .views .action {
|
332
|
-
*display: inline; }
|
333
|
-
|
334
|
-
.fractal-analysis {
|
335
|
-
margin: 12px 0; }
|
336
|
-
.fractal-analysis .report-intro {
|
337
|
-
font-weight: bold; }
|
338
|
-
.fractal-analysis .report-intro.valid {
|
339
|
-
color: #009900; }
|
340
|
-
.fractal-analysis .report-intro.invalid {
|
341
|
-
color: #cc3333; }
|
342
|
-
.fractal-analysis code {
|
343
|
-
font-family: Monaco, "Courier New", Courier, monospace;
|
344
|
-
background-color: ghostwhite;
|
345
|
-
color: #444444;
|
346
|
-
padding: 0 0.2em;
|
347
|
-
border: 1px solid #dedede; }
|
348
|
-
.fractal-analysis ul {
|
349
|
-
margin: 1em 0 1em 1em;
|
350
|
-
list-style-type: square; }
|
351
|
-
.fractal-analysis ol {
|
352
|
-
margin: 1em 0 1em 2em;
|
353
|
-
list-style-type: decimal; }
|
354
|
-
.fractal-analysis ul li, .fractal-analysis ol li {
|
355
|
-
display: list-item;
|
356
|
-
margin: 0.5em 0 0.5em 1em; }
|
357
|
-
.fractal-analysis .error-intro strong {
|
358
|
-
font-weight: bold; }
|
359
|
-
.fractal-analysis .unsupported-clients dt {
|
360
|
-
padding-left: 1em; }
|
361
|
-
.fractal-analysis .unsupported-clients dd {
|
362
|
-
padding-left: 2em; }
|
363
|
-
.fractal-analysis .unsupported-clients dd ul li {
|
364
|
-
display: list-item; }
|
365
|
-
|
366
|
-
iframe {
|
367
|
-
display: -webkit-box;
|
368
|
-
display: -moz-box;
|
369
|
-
display: -ms-box;
|
370
|
-
display: box;
|
371
|
-
-webkit-box-flex: 1;
|
372
|
-
-moz-box-flex: 1;
|
373
|
-
-ms-box-flex: 1;
|
374
|
-
box-flex: 1;
|
375
|
-
background: white; }
|
data/views/index.haml
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
!!!
|
2
|
-
%html.mailcatcher
|
3
|
-
%head
|
4
|
-
%title MailCatcher
|
5
|
-
%link{:rel => "stylesheet", :href => "/stylesheets/application.css"}
|
6
|
-
%link{:href => "/favicon.ico", :rel => "shortcut icon" }
|
7
|
-
%script{:src => "/javascripts/modernizr.js"}
|
8
|
-
%script{:src => "/javascripts/jquery.js"}
|
9
|
-
%script{:src => "/javascripts/xslt-3.2.js"}
|
10
|
-
%script{:src => "/javascripts/date.js"}
|
11
|
-
%script{:src => "/javascripts/flexie.min.js"}
|
12
|
-
%script{:src => "/javascripts/keymaster.min.js"}
|
13
|
-
%script{:src => "/javascripts/application.js"}
|
14
|
-
%body
|
15
|
-
%header
|
16
|
-
%h1
|
17
|
-
%a{:href => "http://mailcatcher.me", :target => '_blank'} MailCatcher
|
18
|
-
%nav.app
|
19
|
-
%ul
|
20
|
-
%li.search
|
21
|
-
%input{:type => 'search', :name => 'search', :placeholder => 'Search messages...', :incremental => true}
|
22
|
-
%li.clear
|
23
|
-
%a{:href => '#', :title => 'Clear all messages'} Clear
|
24
|
-
%li.quit
|
25
|
-
%a{:href => '#', :title => 'Quit MailCatcher'} Quit
|
26
|
-
%nav#messages
|
27
|
-
%table
|
28
|
-
%thead
|
29
|
-
%tr
|
30
|
-
%th From
|
31
|
-
%th To
|
32
|
-
%th Subject
|
33
|
-
%th Received
|
34
|
-
%tbody
|
35
|
-
#resizer
|
36
|
-
.ruler
|
37
|
-
%article#message
|
38
|
-
%header
|
39
|
-
%dl.metadata
|
40
|
-
%dt.created_at Received
|
41
|
-
%dd.created_at
|
42
|
-
%dt.from From
|
43
|
-
%dd.from
|
44
|
-
%dt.to To
|
45
|
-
%dd.to
|
46
|
-
%dt.subject Subject
|
47
|
-
%dd.subject
|
48
|
-
%dt.attachments Attachments
|
49
|
-
%dd.attachments
|
50
|
-
%nav.views
|
51
|
-
%ul
|
52
|
-
%li.format.tab.html.selected{'data-message-format' => 'html'}
|
53
|
-
%a{:href => '#'} HTML
|
54
|
-
%li.format.tab.plain{'data-message-format' => 'plain'}
|
55
|
-
%a{:href => '#'}Plain Text
|
56
|
-
%li.format.tab.source{'data-message-format' => 'source'}
|
57
|
-
%a{:href => '#'}Source
|
58
|
-
%li.tab.analysis
|
59
|
-
%a{:href => '#'}Analysis
|
60
|
-
%li.action.download
|
61
|
-
%a.button{:href => '#'}
|
62
|
-
%span Download
|
63
|
-
%iframe.body
|