Add Fractal analysis support.
This commit is contained in:
parent
4ba18f7296
commit
0de42cf049
|
@ -8,6 +8,10 @@ class MailCatcher
|
|||
e.preventDefault()
|
||||
@loadMessageBody @selectedMessage(), $($(e.currentTarget).parent('li')).data 'message-format'
|
||||
|
||||
$('#message .views .analysis.tab a').live 'click', (e) =>
|
||||
e.preventDefault()
|
||||
@loadMessageAnalysis @selectedMessage()
|
||||
|
||||
$('#resizer').live
|
||||
mousedown: (e) ->
|
||||
e.preventDefault()
|
||||
|
@ -106,7 +110,12 @@ class MailCatcher
|
|||
|
||||
$('#message .views .download a').attr 'href', "/messages/#{id}.eml"
|
||||
|
||||
@loadMessageBody()
|
||||
if $('#message .views .tab.analysis.selected').length
|
||||
@loadMessageAnalysis()
|
||||
else
|
||||
@loadMessageBody()
|
||||
|
||||
# XXX: These should probably cache their iframes for the current message now we're using a remote service:
|
||||
|
||||
loadMessageBody: (id, format) ->
|
||||
id ||= @selectedMessage()
|
||||
|
@ -119,6 +128,57 @@ class MailCatcher
|
|||
if id?
|
||||
$('#message iframe').attr "src", "/messages/#{id}.#{format}"
|
||||
|
||||
loadMessageAnalysis: (id) ->
|
||||
id ||= @selectedMessage()
|
||||
|
||||
$("#message .views .analysis.tab:not(.selected)").addClass 'selected'
|
||||
$("#message .views :not(.analysis).tab.selected").removeClass 'selected'
|
||||
|
||||
if id?
|
||||
# Makes a new iframe which will have a foreign origin eventually, and populate it with a quick intro and a form to send to Fractal.
|
||||
$iframe = $('#message iframe').contents().children().html("""
|
||||
<html class="mailcatcher"><body><iframe></iframe></body></html>
|
||||
""")
|
||||
.find("head").append($('link[rel="stylesheet"]').clone()).end()
|
||||
.find('iframe').contents().children().html("""
|
||||
<html>
|
||||
<head>
|
||||
<title>Analysis</title>
|
||||
</head>
|
||||
<body class="iframe">
|
||||
<h1>Analyse your email with Fractal</h1>
|
||||
<p><a href="http://getfractal.com/" target="_blank">Fractal</a> is a really neat service that applies common email design and development knowledge from <a href="http://www.email-standards.org/" target="_blank">Email Standards Project</a> to your HTML email and tells you what you've done wrong or what you should do instead.</p>
|
||||
<p>Please note that this <strong>sends your email to the Fractal service</strong> for analysis. Read their <a href="http://getfractal.com/terms" target="_blank">terms of service</a> if you're paranoid.</p>
|
||||
<form action="http://getfractal.com/validate" method="POST">
|
||||
<input type="hidden" name="html" />
|
||||
<input type="submit" value="Analyse" disabled="disabled" /><span class="loading" style="color: #999">Loading your email...</span>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
""")
|
||||
.find("head").append($('link[rel="stylesheet"]').clone()).end()
|
||||
# This should be cached if already accessed, so it's actually quite quick
|
||||
$.get "/messages/#{id}.html", (html) ->
|
||||
$iframe
|
||||
.find('input[name="html"]').attr('value', html).end()
|
||||
.find('.loading').hide().end()
|
||||
.find('input[type="submit"]').attr('disabled', null).end()
|
||||
.find('form').submit ->
|
||||
$(this)
|
||||
.find('input[type="submit"]').attr('disabled', 'disabled').end()
|
||||
.find('.loading').text('Analysing...').show()
|
||||
|
||||
# FIXME: Fractal need to allow GET requests to their JSONP endpoint, then we can use the API:
|
||||
# $.ajax
|
||||
# url: 'http://getfractal.com/api/v1/validate/format/jsonp'
|
||||
# data:
|
||||
# api_key: '59372c4f65426f78282c5c657d'
|
||||
# html: html
|
||||
# dataType: 'jsonp'
|
||||
# success: (json) ->
|
||||
# console.log json
|
||||
# $iframe.children().html json
|
||||
|
||||
refresh: ->
|
||||
$.getJSON '/messages', (messages) =>
|
||||
$.each messages, (i, message) =>
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
e.preventDefault();
|
||||
return this.loadMessageBody(this.selectedMessage(), $($(e.currentTarget).parent('li')).data('message-format'));
|
||||
}, this));
|
||||
$('#message .views .analysis.tab a').live('click', __bind(function(e) {
|
||||
e.preventDefault();
|
||||
return this.loadMessageAnalysis(this.selectedMessage());
|
||||
}, this));
|
||||
$('#resizer').live({
|
||||
mousedown: function(e) {
|
||||
var events;
|
||||
|
@ -124,7 +128,11 @@
|
|||
$('#message .metadata .attachments').hide();
|
||||
}
|
||||
$('#message .views .download a').attr('href', "/messages/" + id + ".eml");
|
||||
return this.loadMessageBody();
|
||||
if ($('#message .views .tab.analysis.selected').length) {
|
||||
return this.loadMessageAnalysis();
|
||||
} else {
|
||||
return this.loadMessageBody();
|
||||
}
|
||||
}, this));
|
||||
}
|
||||
};
|
||||
|
@ -138,6 +146,20 @@
|
|||
return $('#message iframe').attr("src", "/messages/" + id + "." + format);
|
||||
}
|
||||
};
|
||||
MailCatcher.prototype.loadMessageAnalysis = function(id) {
|
||||
var $iframe;
|
||||
id || (id = this.selectedMessage());
|
||||
$("#message .views .analysis.tab:not(.selected)").addClass('selected');
|
||||
$("#message .views :not(.analysis).tab.selected").removeClass('selected');
|
||||
if (id != null) {
|
||||
$iframe = $('#message iframe').contents().children().html("<html class=\"mailcatcher\"><body><iframe></iframe></body></html>").find("head").append($('link[rel="stylesheet"]').clone()).end().find('iframe').contents().children().html("<html>\n<head>\n<title>Analysis</title>\n</head>\n<body class=\"iframe\">\n<h1>Analyse your email with Fractal</h1>\n<p><a href=\"http://getfractal.com/\" target=\"_blank\">Fractal</a> is a really neat service that applies common email design and development knowledge from <a href=\"http://www.email-standards.org/\" target=\"_blank\">Email Standards Project</a> to your HTML email and tells you what you've done wrong or what you should do instead.</p>\n<p>Please note that this <strong>sends your email to the Fractal service</strong> for analysis. Read their <a href=\"http://getfractal.com/terms\" target=\"_blank\">terms of service</a> if you're paranoid.</p>\n<form action=\"http://getfractal.com/validate\" method=\"POST\">\n<input type=\"hidden\" name=\"html\" />\n<input type=\"submit\" value=\"Analyse\" disabled=\"disabled\" /><span class=\"loading\" style=\"color: #999\">Loading your email...</span>\n</form>\n</body>\n</html>").find("head").append($('link[rel="stylesheet"]').clone()).end();
|
||||
return $.get("/messages/" + id + ".html", function(html) {
|
||||
return $iframe.find('input[name="html"]').attr('value', html).end().find('.loading').hide().end().find('input[type="submit"]').attr('disabled', null).end().find('form').submit(function() {
|
||||
return $(this).find('input[type="submit"]').attr('disabled', 'disabled').end().find('.loading').text('Analysing...').show();
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
MailCatcher.prototype.refresh = function() {
|
||||
return $.getJSON('/messages', __bind(function(messages) {
|
||||
return $.each(messages, __bind(function(i, message) {
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/* line 17, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
|
@ -16,40 +17,60 @@ time, mark, audio, video {
|
|||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline; }
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* line 20, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
body {
|
||||
line-height: 1; }
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* line 22, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
ol, ul {
|
||||
list-style: none; }
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
/* line 24, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0; }
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
/* line 26, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
caption, th, td {
|
||||
text-align: left;
|
||||
font-weight: normal;
|
||||
vertical-align: middle; }
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* line 28, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
q, blockquote {
|
||||
quotes: none; }
|
||||
q:before, q:after, blockquote:before, blockquote:after {
|
||||
content: "";
|
||||
content: none; }
|
||||
quotes: none;
|
||||
}
|
||||
/* line 101, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
q:before, q:after, blockquote:before, blockquote:after {
|
||||
content: "";
|
||||
content: none;
|
||||
}
|
||||
|
||||
/* line 30, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
a img {
|
||||
border: none; }
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* line 115, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/reset/_utilities.scss */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block; }
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* line 4, application.sass */
|
||||
html, body {
|
||||
width: 100%;
|
||||
height: 100%; }
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* line 8, application.sass */
|
||||
body {
|
||||
display: -moz-box;
|
||||
display: -webkit-box;
|
||||
|
@ -60,13 +81,37 @@ body {
|
|||
background: #eeeeee;
|
||||
color: black;
|
||||
font-size: 12px;
|
||||
font-family: Helvetica, sans-serif; }
|
||||
body body {
|
||||
font-size: 75%;
|
||||
line-height: 2em; }
|
||||
body html > body {
|
||||
font-size: 12px; }
|
||||
font-family: Helvetica, sans-serif;
|
||||
}
|
||||
/* line 26, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss */
|
||||
body body {
|
||||
font-size: 75%;
|
||||
line-height: 2em;
|
||||
}
|
||||
/* line 30, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss */
|
||||
body html > body {
|
||||
font-size: 12px;
|
||||
}
|
||||
/* line 17, application.sass */
|
||||
body.iframe {
|
||||
background: white;
|
||||
}
|
||||
/* line 20, application.sass */
|
||||
body.iframe h1 {
|
||||
font-size: 1.3em;
|
||||
margin: 12px;
|
||||
}
|
||||
/* line 23, application.sass */
|
||||
body.iframe p, body.iframe form {
|
||||
margin: 0 12px 12px 12px;
|
||||
line-height: 1.25;
|
||||
}
|
||||
/* line 26, application.sass */
|
||||
body.iframe .loading {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
/* line 30, application.sass */
|
||||
.button {
|
||||
padding: 0.5em 1em;
|
||||
border: 1px solid #cccccc;
|
||||
|
@ -83,153 +128,207 @@ body {
|
|||
background: linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
color: #666666;
|
||||
text-shadow: 1px 1px 0 white;
|
||||
text-decoration: none; }
|
||||
.button:hover, .button:focus {
|
||||
border-color: #999999;
|
||||
border-bottom-color: #666666;
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
|
||||
background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
color: #333333;
|
||||
text-decoration: none; }
|
||||
.button:active, .button.active {
|
||||
border-color: #666666;
|
||||
border-bottom-color: #999999;
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
|
||||
background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
color: #333333;
|
||||
text-decoration: none;
|
||||
text-shadow: -1px -1px 0 #eeeeee; }
|
||||
text-decoration: none;
|
||||
}
|
||||
/* line 38, application.sass */
|
||||
.button:hover, .button:focus {
|
||||
border-color: #999999;
|
||||
border-bottom-color: #666666;
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
|
||||
background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
color: #333333;
|
||||
text-decoration: none;
|
||||
}
|
||||
/* line 44, application.sass */
|
||||
.button:active, .button.active {
|
||||
border-color: #666666;
|
||||
border-bottom-color: #999999;
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
|
||||
background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
color: #333333;
|
||||
text-decoration: none;
|
||||
text-shadow: -1px -1px 0 #eeeeee;
|
||||
}
|
||||
|
||||
/* line 52, application.sass */
|
||||
body > header {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
border-bottom: 1px solid #cccccc; }
|
||||
body > header h1 {
|
||||
float: left;
|
||||
margin-left: 6px;
|
||||
padding: 6px;
|
||||
padding-left: 30px;
|
||||
background: url(/images/logo.png) left no-repeat;
|
||||
font-size: 18px;
|
||||
font-weight: bold; }
|
||||
body > header h1 a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 white;
|
||||
-moz-transition-property: 0.1s ease;
|
||||
-webkit-transition-property: 0.1s ease;
|
||||
-o-transition-property: 0.1s ease;
|
||||
transition-property: 0.1s ease;
|
||||
-moz-transition-duration: 1s;
|
||||
-webkit-transition-duration: 1s;
|
||||
-o-transition-duration: 1s;
|
||||
transition-duration: 1s; }
|
||||
body > header h1 a:hover {
|
||||
color: #4183c4; }
|
||||
body > header nav {
|
||||
border-left: 1px solid #cccccc; }
|
||||
body > header nav.project {
|
||||
float: left; }
|
||||
body > header nav.app {
|
||||
float: right; }
|
||||
body > header nav li {
|
||||
display: inline; }
|
||||
body > header nav li a {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
float: left;
|
||||
padding: 9px;
|
||||
border-left: 1px solid white;
|
||||
border-right: 1px solid #cccccc;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 white;
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #ececec)), #ececec;
|
||||
background: -webkit-linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
background: -moz-linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
background: -o-linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
background: linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
color: #666666;
|
||||
text-shadow: 1px 1px 0 white;
|
||||
text-decoration: none; }
|
||||
body > header nav li a {
|
||||
*display: inline; }
|
||||
body > header nav li a:hover, body > header nav li a:focus {
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
|
||||
background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
color: #333333;
|
||||
text-decoration: none; }
|
||||
body > header nav li a:active, body > header nav li a.active {
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
|
||||
background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
color: #333333;
|
||||
text-decoration: none;
|
||||
text-shadow: -1px -1px 0 #eeeeee; }
|
||||
border-bottom: 1px solid #cccccc;
|
||||
}
|
||||
/* line 55, application.sass */
|
||||
body > header h1 {
|
||||
float: left;
|
||||
margin-left: 6px;
|
||||
padding: 6px;
|
||||
padding-left: 30px;
|
||||
background: url(/images/logo.png) left no-repeat;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* line 63, application.sass */
|
||||
body > header h1 a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 white;
|
||||
-moz-transition-property: 0.1s ease;
|
||||
-webkit-transition-property: 0.1s ease;
|
||||
-o-transition-property: 0.1s ease;
|
||||
transition-property: 0.1s ease;
|
||||
-moz-transition-duration: 1s;
|
||||
-webkit-transition-duration: 1s;
|
||||
-o-transition-duration: 1s;
|
||||
transition-duration: 1s;
|
||||
}
|
||||
/* line 68, application.sass */
|
||||
body > header h1 a:hover {
|
||||
color: #4183c4;
|
||||
}
|
||||
/* line 70, application.sass */
|
||||
body > header nav {
|
||||
border-left: 1px solid #cccccc;
|
||||
}
|
||||
/* line 71, application.sass */
|
||||
body > header nav.project {
|
||||
float: left;
|
||||
}
|
||||
/* line 73, application.sass */
|
||||
body > header nav.app {
|
||||
float: right;
|
||||
}
|
||||
/* line 76, application.sass */
|
||||
body > header nav li {
|
||||
display: inline;
|
||||
}
|
||||
/* line 78, application.sass */
|
||||
body > header nav li a {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
float: left;
|
||||
padding: 9px;
|
||||
border-left: 1px solid white;
|
||||
border-right: 1px solid #cccccc;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 white;
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #ececec)), #ececec;
|
||||
background: -webkit-linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
background: -moz-linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
background: -o-linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
background: linear-gradient(#f4f4f4, #ececec), #ececec;
|
||||
color: #666666;
|
||||
text-shadow: 1px 1px 0 white;
|
||||
text-decoration: none;
|
||||
}
|
||||
/* line 7, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
|
||||
body > header nav li a {
|
||||
*display: inline;
|
||||
}
|
||||
/* line 90, application.sass */
|
||||
body > header nav li a:hover, body > header nav li a:focus {
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
|
||||
background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
background: linear-gradient(#eeeeee, #dddddd), #dddddd;
|
||||
color: #333333;
|
||||
text-decoration: none;
|
||||
}
|
||||
/* line 94, application.sass */
|
||||
body > header nav li a:active, body > header nav li a.active {
|
||||
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
|
||||
background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
||||
color: #333333;
|
||||
text-decoration: none;
|
||||
text-shadow: -1px -1px 0 #eeeeee;
|
||||
}
|
||||
|
||||
/* line 100, application.sass */
|
||||
#messages {
|
||||
width: 100%;
|
||||
height: 10em;
|
||||
min-height: 3em;
|
||||
overflow: auto;
|
||||
background: white;
|
||||
border-top: 1px solid white; }
|
||||
#messages table {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
width: 100%; }
|
||||
#messages table thead tr {
|
||||
background: #eeeeee;
|
||||
color: #333333; }
|
||||
#messages table thead tr th {
|
||||
padding: 0.25em;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
text-shadow: 0 1px 0 white; }
|
||||
#messages table tbody tr {
|
||||
cursor: pointer;
|
||||
-moz-transition-property: 0.1s ease;
|
||||
-webkit-transition-property: 0.1s ease;
|
||||
-o-transition-property: 0.1s ease;
|
||||
transition-property: 0.1s ease;
|
||||
-moz-transition-duration: 1s;
|
||||
-webkit-transition-duration: 1s;
|
||||
-o-transition-duration: 1s;
|
||||
transition-duration: 1s;
|
||||
color: #333333; }
|
||||
#messages table tbody tr:hover {
|
||||
color: black; }
|
||||
#messages table tbody tr:nth-child(even) {
|
||||
background: #f0f0f0; }
|
||||
#messages table tbody tr.selected {
|
||||
background: Highlight;
|
||||
color: HighlightText; }
|
||||
#messages table tbody tr td {
|
||||
padding: 0.25em; }
|
||||
#messages table tbody tr td.blank {
|
||||
color: #666666;
|
||||
font-style: italic; }
|
||||
border-top: 1px solid white;
|
||||
}
|
||||
/* line 108, application.sass */
|
||||
#messages table {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
width: 100%;
|
||||
}
|
||||
/* line 111, application.sass */
|
||||
#messages table thead tr {
|
||||
background: #eeeeee;
|
||||
color: #333333;
|
||||
}
|
||||
/* line 114, application.sass */
|
||||
#messages table thead tr th {
|
||||
padding: 0.25em;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
text-shadow: 0 1px 0 white;
|
||||
}
|
||||
/* line 119, application.sass */
|
||||
#messages table tbody tr {
|
||||
cursor: pointer;
|
||||
-moz-transition-property: 0.1s ease;
|
||||
-webkit-transition-property: 0.1s ease;
|
||||
-o-transition-property: 0.1s ease;
|
||||
transition-property: 0.1s ease;
|
||||
-moz-transition-duration: 1s;
|
||||
-webkit-transition-duration: 1s;
|
||||
-o-transition-duration: 1s;
|
||||
transition-duration: 1s;
|
||||
color: #333333;
|
||||
}
|
||||
/* line 123, application.sass */
|
||||
#messages table tbody tr:hover {
|
||||
color: black;
|
||||
}
|
||||
/* line 125, application.sass */
|
||||
#messages table tbody tr:nth-child(even) {
|
||||
background: #f0f0f0;
|
||||
}
|
||||
/* line 127, application.sass */
|
||||
#messages table tbody tr.selected {
|
||||
background: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
/* line 130, application.sass */
|
||||
#messages table tbody tr td {
|
||||
padding: 0.25em;
|
||||
}
|
||||
/* line 132, application.sass */
|
||||
#messages table tbody tr td.blank {
|
||||
color: #666666;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* line 135, application.sass */
|
||||
#resizer {
|
||||
padding-bottom: 5px;
|
||||
cursor: ns-resize; }
|
||||
#resizer .ruler {
|
||||
border-top: 1px solid #cccccc;
|
||||
border-bottom: 1px solid white; }
|
||||
cursor: ns-resize;
|
||||
}
|
||||
/* line 138, application.sass */
|
||||
#resizer .ruler {
|
||||
border-top: 1px solid #cccccc;
|
||||
border-bottom: 1px solid white;
|
||||
}
|
||||
|
||||
/* line 142, application.sass */
|
||||
#message {
|
||||
display: -moz-box;
|
||||
display: -webkit-box;
|
||||
|
@ -239,96 +338,135 @@ body > header {
|
|||
box-orient: vertical;
|
||||
-moz-box-flex: 1;
|
||||
-webkit-box-flex: 1;
|
||||
box-flex: 1; }
|
||||
#message > header {
|
||||
overflow: hidden;
|
||||
*zoom: 1; }
|
||||
#message > header .metadata {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
padding: 0.5em;
|
||||
padding-top: 0; }
|
||||
#message > header .metadata dt, #message > header .metadata dd {
|
||||
padding: 0.25em; }
|
||||
#message > header .metadata dt {
|
||||
float: left;
|
||||
clear: left;
|
||||
width: 8em;
|
||||
margin-right: 0.5em;
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
text-shadow: 0 1px 0 white; }
|
||||
#message > header .metadata dd.subject {
|
||||
font-weight: bold; }
|
||||
#message > header .metadata .attachments {
|
||||
display: none; }
|
||||
#message > header .metadata .attachments ul {
|
||||
display: inline; }
|
||||
#message > header .metadata .attachments ul li {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
margin-right: 0.5em; }
|
||||
#message > header .metadata .attachments ul li {
|
||||
*display: inline; }
|
||||
#message > header .views ul {
|
||||
padding: 0 0.5em;
|
||||
border-bottom: 1px solid #cccccc; }
|
||||
#message > header .views .tab {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto; }
|
||||
#message > header .views .tab {
|
||||
*display: inline; }
|
||||
#message > header .views .tab a {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
padding: 0.5em;
|
||||
border: 1px solid #cccccc;
|
||||
background: #dddddd;
|
||||
color: #333333;
|
||||
border-width: 1px 1px 0 1px;
|
||||
cursor: pointer;
|
||||
text-shadow: 0 1px 0 #eeeeee;
|
||||
text-decoration: none; }
|
||||
#message > header .views .tab a {
|
||||
*display: inline; }
|
||||
#message > header .views .tab:not(.selected):hover a {
|
||||
background-color: #eeeeee; }
|
||||
#message > header .views .tab.selected a {
|
||||
background: white;
|
||||
color: black;
|
||||
height: 13px;
|
||||
-moz-box-shadow: 1px 1px 0 #cccccc;
|
||||
-webkit-box-shadow: 1px 1px 0 #cccccc;
|
||||
-o-box-shadow: 1px 1px 0 #cccccc;
|
||||
box-shadow: 1px 1px 0 #cccccc;
|
||||
margin-bottom: -2px;
|
||||
cursor: default; }
|
||||
#message > header .views .action {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
float: right;
|
||||
margin: 0 0.25em; }
|
||||
#message > header .views .action {
|
||||
*display: inline; }
|
||||
#message .body {
|
||||
display: -moz-box;
|
||||
display: -webkit-box;
|
||||
display: box;
|
||||
-moz-box-flex: 1;
|
||||
-webkit-box-flex: 1;
|
||||
box-flex: 1;
|
||||
width: 100%;
|
||||
background: white; }
|
||||
box-flex: 1;
|
||||
}
|
||||
/* line 146, application.sass */
|
||||
#message > header {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
/* line 148, application.sass */
|
||||
#message > header .metadata {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
padding: 0.5em;
|
||||
padding-top: 0;
|
||||
}
|
||||
/* line 153, application.sass */
|
||||
#message > header .metadata dt, #message > header .metadata dd {
|
||||
padding: 0.25em;
|
||||
}
|
||||
/* line 155, application.sass */
|
||||
#message > header .metadata dt {
|
||||
float: left;
|
||||
clear: left;
|
||||
width: 8em;
|
||||
margin-right: 0.5em;
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
text-shadow: 0 1px 0 white;
|
||||
}
|
||||
/* line 164, application.sass */
|
||||
#message > header .metadata dd.subject {
|
||||
font-weight: bold;
|
||||
}
|
||||
/* line 166, application.sass */
|
||||
#message > header .metadata .attachments {
|
||||
display: none;
|
||||
}
|
||||
/* line 168, application.sass */
|
||||
#message > header .metadata .attachments ul {
|
||||
display: inline;
|
||||
}
|
||||
/* line 170, application.sass */
|
||||
#message > header .metadata .attachments ul li {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
/* line 7, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
|
||||
#message > header .metadata .attachments ul li {
|
||||
*display: inline;
|
||||
}
|
||||
/* line 174, application.sass */
|
||||
#message > header .views ul {
|
||||
padding: 0 0.5em;
|
||||
border-bottom: 1px solid #cccccc;
|
||||
}
|
||||
/* line 177, application.sass */
|
||||
#message > header .views .tab {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
}
|
||||
/* line 7, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
|
||||
#message > header .views .tab {
|
||||
*display: inline;
|
||||
}
|
||||
/* line 179, application.sass */
|
||||
#message > header .views .tab a {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
padding: 0.5em;
|
||||
border: 1px solid #cccccc;
|
||||
background: #dddddd;
|
||||
color: #333333;
|
||||
border-width: 1px 1px 0 1px;
|
||||
cursor: pointer;
|
||||
text-shadow: 0 1px 0 #eeeeee;
|
||||
text-decoration: none;
|
||||
}
|
||||
/* line 7, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
|
||||
#message > header .views .tab a {
|
||||
*display: inline;
|
||||
}
|
||||
/* line 189, application.sass */
|
||||
#message > header .views .tab:not(.selected):hover a {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
/* line 191, application.sass */
|
||||
#message > header .views .tab.selected a {
|
||||
background: white;
|
||||
color: black;
|
||||
height: 13px;
|
||||
-moz-box-shadow: 1px 1px 0 #cccccc;
|
||||
-webkit-box-shadow: 1px 1px 0 #cccccc;
|
||||
-o-box-shadow: 1px 1px 0 #cccccc;
|
||||
box-shadow: 1px 1px 0 #cccccc;
|
||||
margin-bottom: -2px;
|
||||
cursor: default;
|
||||
}
|
||||
/* line 198, application.sass */
|
||||
#message > header .views .action {
|
||||
display: -moz-inline-box;
|
||||
-moz-box-orient: vertical;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
*vertical-align: auto;
|
||||
float: right;
|
||||
margin: 0 0.25em;
|
||||
}
|
||||
/* line 7, ../../../../.rvm/gems/ruby-1.9.2-p180-patched@mailcatcher/gems/compass-0.11.1/frameworks/compass/stylesheets/compass/css3/_inline-block.scss */
|
||||
#message > header .views .action {
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
/* line 203, application.sass */
|
||||
iframe {
|
||||
display: -moz-box;
|
||||
display: -webkit-box;
|
||||
display: box;
|
||||
-moz-box-flex: 1;
|
||||
-webkit-box-flex: 1;
|
||||
box-flex: 1;
|
||||
background: white;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,19 @@ body
|
|||
font-size: 12px
|
||||
font-family: Helvetica, sans-serif
|
||||
|
||||
&.iframe
|
||||
background: #fff
|
||||
|
||||
h1
|
||||
font-size: 1.3em
|
||||
margin: 12px
|
||||
p, form
|
||||
margin: 0 12px 12px 12px
|
||||
line-height: 1.25
|
||||
.loading
|
||||
color #666
|
||||
margin-left: 0.5em
|
||||
|
||||
.button
|
||||
padding: .5em 1em
|
||||
border: 1px solid #ccc
|
||||
|
@ -186,8 +199,8 @@ body > header
|
|||
+inline-block
|
||||
float: right
|
||||
margin: 0 .25em
|
||||
.body
|
||||
+display-box
|
||||
+box-flex(1)
|
||||
width: 100%
|
||||
background: #fff
|
||||
|
||||
iframe
|
||||
+display-box
|
||||
+box-flex(1)
|
||||
background: #fff
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
!!!
|
||||
%html
|
||||
%html.mailcatcher
|
||||
%head
|
||||
%title MailCatcher
|
||||
%link{:rel => "stylesheet", :href => "/stylesheets/application.css"}
|
||||
|
@ -50,8 +50,8 @@
|
|||
%a{:href => '#'}Plain Text
|
||||
%li.format.tab.source{'data-message-format' => 'source'}
|
||||
%a{:href => '#'}Source
|
||||
%li.tab.fractal
|
||||
%a{:href => '#'}Fractal Analysis
|
||||
%li.tab.analysis
|
||||
%a{:href => '#'}Analysis
|
||||
%li.action.download
|
||||
%a.button{:href => '#'}
|
||||
%span Download
|
||||
|
|
Loading…
Reference in New Issue