mailcatcher-jruby 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.
@@ -0,0 +1,4 @@
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);
@@ -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
+
@@ -0,0 +1 @@
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,{}))
@@ -0,0 +1,33 @@
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>
@@ -0,0 +1,375 @@
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 ADDED
@@ -0,0 +1,64 @@
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
+ - unless MailCatcher.options[:no_exit]
25
+ %li.quit
26
+ %a{:href => '#', :title => 'Quit MailCatcher'} Quit
27
+ %nav#messages
28
+ %table
29
+ %thead
30
+ %tr
31
+ %th From
32
+ %th To
33
+ %th Subject
34
+ %th Received
35
+ %tbody
36
+ #resizer
37
+ .ruler
38
+ %article#message
39
+ %header
40
+ %dl.metadata
41
+ %dt.created_at Received
42
+ %dd.created_at
43
+ %dt.from From
44
+ %dd.from
45
+ %dt.to To
46
+ %dd.to
47
+ %dt.subject Subject
48
+ %dd.subject
49
+ %dt.attachments Attachments
50
+ %dd.attachments
51
+ %nav.views
52
+ %ul
53
+ %li.format.tab.html.selected{'data-message-format' => 'html'}
54
+ %a{:href => '#'} HTML
55
+ %li.format.tab.plain{'data-message-format' => 'plain'}
56
+ %a{:href => '#'}Plain Text
57
+ %li.format.tab.source{'data-message-format' => 'source'}
58
+ %a{:href => '#'}Source
59
+ %li.tab.analysis
60
+ %a{:href => '#'}Analysis
61
+ %li.action.download
62
+ %a.button{:href => '#'}
63
+ %span Download
64
+ %iframe.body