mailcatcher 0.5.5 → 0.5.6
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +3 -3
- data/VERSION +1 -1
- data/bin/catchmail +7 -1
- data/public/javascripts/application.js +45 -2
- data/public/javascripts/flexie.min.js +36 -0
- data/public/stylesheets/application.css +346 -273
- data/views/index.haml +3 -0
- metadata +30 -28
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://cl.ly/
|
7
|
+
![MailCatcher screenshot](http://f.cl.ly/items/3w2T1p0F3g003b2i1F2z/Screen%20shot%202011-06-23%20at%2011.39.03%20PM.png)
|
8
8
|
|
9
9
|
## Features
|
10
10
|
|
@@ -32,7 +32,7 @@ The brave can get the source from [the GitHub repository][mailcatcher-github].
|
|
32
32
|
|
33
33
|
### RVM
|
34
34
|
|
35
|
-
Under RVM your mailcatcher command may only available under the ruby you install mailcatcher into. To prevent this, and to prevent gem conflicts, install mailcatcher into a dedicated gemset and create wrapper scripts:
|
35
|
+
Under RVM your mailcatcher command may only be available under the ruby you install mailcatcher into. To prevent this, and to prevent gem conflicts, install mailcatcher into a dedicated gemset and create wrapper scripts:
|
36
36
|
|
37
37
|
rvm default@mailcatcher --create gem install mailcatcher
|
38
38
|
rvm wrapper default@mailcatcher --no-prefix mailcatcher catchmail
|
@@ -42,7 +42,7 @@ Under RVM your mailcatcher command may only available under the ruby you install
|
|
42
42
|
To set up your rails app, I recommend adding this to your `environment/development.rb`:
|
43
43
|
|
44
44
|
config.action_mailer.delivery_method = :smtp
|
45
|
-
config.action_mailer.smtp_settings = { :
|
45
|
+
config.action_mailer.smtp_settings = { :address => "localhost", :port => 1025 }
|
46
46
|
|
47
47
|
### PHP
|
48
48
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.6
|
data/bin/catchmail
CHANGED
@@ -29,6 +29,10 @@ OptionParser.new do |parser|
|
|
29
29
|
options[:smtp_port] = port
|
30
30
|
end
|
31
31
|
|
32
|
+
parser.on('-f FROM', 'Set the sending address') do |from|
|
33
|
+
options[:from] = from
|
34
|
+
end
|
35
|
+
|
32
36
|
parser.on('-h', '--help', 'Display this help information') do
|
33
37
|
puts parser
|
34
38
|
exit!
|
@@ -41,4 +45,6 @@ Mail.defaults do
|
|
41
45
|
:port => options[:smtp_port]
|
42
46
|
end
|
43
47
|
|
44
|
-
Mail.
|
48
|
+
message = Mail.new ARGF.read
|
49
|
+
message.return_path = options[:from] if options[:from]
|
50
|
+
message.deliver
|
@@ -1,6 +1,11 @@
|
|
1
1
|
(function() {
|
2
2
|
var MailCatcher;
|
3
3
|
|
4
|
+
jQuery.expr[':'].icontains = function(a, i, m) {
|
5
|
+
var _ref, _ref2;
|
6
|
+
return ((_ref = (_ref2 = a.textContent) != null ? _ref2 : a.innerText) != null ? _ref : "").toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
|
7
|
+
};
|
8
|
+
|
4
9
|
MailCatcher = (function() {
|
5
10
|
|
6
11
|
function MailCatcher() {
|
@@ -9,6 +14,15 @@
|
|
9
14
|
e.preventDefault();
|
10
15
|
return _this.loadMessage($(e.currentTarget).attr('data-message-id'));
|
11
16
|
});
|
17
|
+
$('input[name=search]').keyup(function(e) {
|
18
|
+
var query;
|
19
|
+
query = $.trim($(e.currentTarget).val());
|
20
|
+
if (query) {
|
21
|
+
return _this.searchMessages(query);
|
22
|
+
} else {
|
23
|
+
return _this.clearSearch();
|
24
|
+
}
|
25
|
+
});
|
12
26
|
$('#message .views .format.tab a').live('click', function(e) {
|
13
27
|
e.preventDefault();
|
14
28
|
return _this.loadMessageBody(_this.selectedMessage(), $($(e.currentTarget).parent('li')).data('message-format'));
|
@@ -79,8 +93,16 @@
|
|
79
93
|
}
|
80
94
|
};
|
81
95
|
|
96
|
+
MailCatcher.prototype.offsetTimeZone = function(date) {
|
97
|
+
var offset;
|
98
|
+
offset = Date.now().getTimezoneOffset() * 60000;
|
99
|
+
date.setTime(date.getTime() - offset);
|
100
|
+
return date;
|
101
|
+
};
|
102
|
+
|
82
103
|
MailCatcher.prototype.formatDate = function(date) {
|
83
104
|
if (typeof date === "string") date && (date = this.parseDate(date));
|
105
|
+
date && (date = this.offsetTimeZone(date));
|
84
106
|
return date && (date = date.toString("dddd, d MMM yyyy h:mm:ss tt"));
|
85
107
|
};
|
86
108
|
|
@@ -93,6 +115,27 @@
|
|
93
115
|
return $('#messages tr.selected').data('message-id');
|
94
116
|
};
|
95
117
|
|
118
|
+
MailCatcher.prototype.searchMessages = function(query) {
|
119
|
+
var $rows, selector, token;
|
120
|
+
selector = ((function() {
|
121
|
+
var _i, _len, _ref, _results;
|
122
|
+
_ref = query.split(/\s+/);
|
123
|
+
_results = [];
|
124
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
125
|
+
token = _ref[_i];
|
126
|
+
_results.push(":icontains('" + token + "')");
|
127
|
+
}
|
128
|
+
return _results;
|
129
|
+
})()).join("");
|
130
|
+
$rows = $("#messages tbody tr");
|
131
|
+
$rows.not(selector).hide();
|
132
|
+
return $rows.filter(selector).show();
|
133
|
+
};
|
134
|
+
|
135
|
+
MailCatcher.prototype.clearSearch = function() {
|
136
|
+
return $('#messages tbody tr').show();
|
137
|
+
};
|
138
|
+
|
96
139
|
MailCatcher.prototype.addMessage = function(message) {
|
97
140
|
return $('#messages tbody').append($('<tr />').attr('data-message-id', message.id.toString()).append($('<td/>').text(message.sender || "No sender").toggleClass("blank", !message.sender)).append($('<td/>').text((message.recipients || []).join(', ') || "No receipients").toggleClass("blank", !message.recipients.length)).append($('<td/>').text(message.subject || "No subject").toggleClass("blank", !message.subject)).append($('<td/>').text(this.formatDate(message.created_at))));
|
98
141
|
};
|
@@ -188,8 +231,8 @@
|
|
188
231
|
};
|
189
232
|
|
190
233
|
MailCatcher.prototype.subscribeWebSocket = function() {
|
191
|
-
var secure
|
192
|
-
|
234
|
+
var secure,
|
235
|
+
_this = this;
|
193
236
|
secure = window.location.scheme === 'https';
|
194
237
|
this.websocket = new WebSocket("" + (secure ? 'wss' : 'ws') + "://" + window.location.host + "/messages");
|
195
238
|
return this.websocket.onmessage = function(event) {
|
@@ -0,0 +1,36 @@
|
|
1
|
+
var Flexie=function(H,R){function O(a){if(a)a=a.replace(Ha,E).replace(Ia,E);return a}function ia(a,d){a="on"+a;var c=H[a];H[a]=typeof H[a]!=="function"?d:function(){c&&c();d()}}function ja(a){var d=a.nodeName.toLowerCase();if(a.id)d+="#"+a.id;else if(a.FLX_DOM_ID)d+="["+ka+"='"+a.FLX_DOM_ID+"']";return d}function ca(a){if(!a.FLX_DOM_ID){da+=1;a.FLX_DOM_ID=da;a.setAttribute(ka,a.FLX_DOM_ID)}}function Ja(a){var d,c,b,e,f=/\s?,\s?/,g,h,k,i={},n={},r,p,j,l,m,o,y,v;g=function(s,w,q,A){var z,C,I;s={selector:O(s),
|
2
|
+
properties:[]};z=0;for(C=w.properties.length;z<C;z++){I=w.properties[z];s.properties.push({property:O(I.property),value:O(I.value)})}if(q&&A)s[q]=A;return s};h=function(s,w,q,A){var z=q&&A?i[s]:n[s],C,I,P,L,t;if(z){C=0;for(I=w.properties.length;C<I;C++){P=w.properties[C];L=0;for(t=z.properties.length;L<t;L++){s=z.properties[L];if(P.property===s.property)return false}z.properties.push(P)}if(q&&A)z[q]=A}else if(q&&A)i[s]=g(s,w,q,A);else n[s]=g(s,w,x,x)};r=0;for(p=a.length;r<p;r++){j=a[r];d=O(j.selector).replace(f,
|
3
|
+
",").split(f);l=0;for(m=d.length;l<m;l++){o=O(d[l]);c=j.properties;y=0;for(v=c.length;y<v;y++){e=c[y];b=O(e.property);e=O(e.value);if(b){b=b.replace("box-",E);switch(b){case "display":e==="box"&&h(o,j,x,x);break;case "orient":case "align":case "direction":case "pack":h(o,j,x,x);break;case "flex":case "flex-group":case "ordinal-group":h(o,j,b,e)}}}}}for(k in n)n.hasOwnProperty(k)&&B.push(n[k]);for(k in i)i.hasOwnProperty(k)&&la.push(i[k]);return{boxes:B,children:la}}function ma(a,d,c){var b,e,f=[],
|
4
|
+
g,h,k,i,n,r,p;g=0;for(h=c.length;g<h;g++){k=c[g];if(k.selector){b=d(k.selector);b=b[0]?b:[b];if(b[0]){i=0;for(n=b.length;i<n;i++){r=b[i];if(r.nodeName!==na)switch(r.nodeName.toLowerCase()){case "script":case "style":case "link":break;default:if(r.parentNode===a){ca(r);e={};for(p in k)if(k.hasOwnProperty(p))e[p]=k[p];e.match=r;f.push(e)}}}}}else{ca(k);f.push({match:k,selector:ja(k)})}}return f}function oa(a,d,c){c=c.replace(c.charAt(0),c.charAt(0).toUpperCase());c=a["offset"+c]||0;var b,e,f;if(c){b=
|
5
|
+
0;for(e=d.length;b<e;b++){f=parseFloat(a.currentStyle[d[b]]);isNaN(f)||(c-=f)}}return c}function pa(a,d){var c,b,e=a.currentStyle&&a.currentStyle[d],f=a.style;if(!qa.test(e)&&Ka.test(e)){c=f.left;b=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;f.left=e||0;e=f.pixelLeft+"px";f.left=c||0;a.runtimeStyle.left=b}return e}function D(a,d,c){if(a!==na){if(H.getComputedStyle)a=H.getComputedStyle(a,x)[d];else if(La.test(d)){var b=a&&a.currentStyle?a.currentStyle[d]:0;if(!qa.test(b)){if(b==="auto"||
|
6
|
+
b==="medium"){switch(d){case "width":b=[ra,sa,ta,ua];b=oa(a,b,d);break;case "height":b=[ea,va,wa,xa];b=oa(a,b,d);break;default:b=pa(a,d)}a=b}else a=pa(a,d);b=a}a=b}else a=a.currentStyle[d];if(c){a=parseInt(a,10);if(isNaN(a))a=0}return a}}function Ma(a){return a.innerWidth||a.clientWidth}function Na(a){return a.innerHeight||a.clientHeight}function fa(a,d,c,b){var e=[],f,g,h;f=0;for(g=ya.length;f<g;f++){h=ya[f];e.push((b?h:E)+d+":"+(!b?h:E)+c)}a.style.cssText+=e.join(";");return a}function M(a,d,c){var b=
|
7
|
+
a&&a[0]?a:[a],e,f;e=0;for(f=b.length;e<f;e++)if((a=b[e])&&a.style)a.style[d]=c?c+"px":E}function Oa(a){var d,c,b,e,f;a=a.replace(Pa,function(g,h){return"%"+h}).replace(/\s|\>|\+|\~/g,"%").split(/%/g);d={_id:100,_class:10,_tag:1};b=c=0;for(e=a.length;b<e;b++){f=a[b];if(/#/.test(f))c+=d._id;else if(/\.|\[|\:/.test(f))c+=d._class;else if(/[a-zA-Z]+/.test(f))c+=d._tag}return c}function Qa(a,d,c){d=[];var b,e=(c?"ordinal":"flex")+"Specificity",f,g,h,k,i,n;f=0;for(g=a.length;f<g;f++){h=a[f];if(!c&&h.flex||
|
8
|
+
c&&h["ordinal-group"]){h[e]=h[e]||Oa(h.selector);b=U;k=0;for(i=d.length;k<i;k++){n=d[k];if(n.match===h.match){if(n[e]<h[e])d[g]=h;return U}}b||d.push(h)}}return d}function Z(a,d,c){var b={},e=[],f=0,g,h,k,i,n,r,p,j;a=Qa(a,d,c);h=0;for(k=d.length;h<k;h++){i=d[h];n=0;for(r=a.length;n<r;n++){p=a[n];if(c){g=p["ordinal-group"]||"1";if(p.match===i){p.match.setAttribute("data-ordinal-group",g);b[g]=b[g]||[];b[g].push(p)}}else{g=p.flex||"0";if(p.match===i&&(!p[g]||p[g]&&parseInt(p[g],10)<=1)){f+=parseInt(g,
|
9
|
+
10);b[g]=b[g]||[];b[g].push(p)}}}if(c&&!i.getAttribute("data-ordinal-group")){g="1";i.setAttribute("data-ordinal-group",g);b[g]=b[g]||[];b[g].push({match:i})}}for(j in b)b.hasOwnProperty(j)&&e.push(j);e.sort(function(l,m){return m-l});return{keys:e,groups:b,total:f}}function Ra(){if(!za){var a,d,c,b,e=R.body,f=R.documentElement,g;ia("resize",function(){g&&window.clearTimeout(g);g=window.setTimeout(function(){c=H.innerWidth||f.innerWidth||f.clientWidth||e.clientWidth;b=H.innerHeight||f.innerHeight||
|
10
|
+
f.clientHeight||e.clientHeight;if(a!==c||d!==b){J.updateInstance(x,x);a=c;d=b}},250)});za=u}}function Aa(a){var d,c,b,e,f;d=0;for(c=a.length;d<c;d++){b=a[d];e=b.style.width;f=b.style.height;b.style.cssText=E;b.style.width=e;b.style.height=f}}function Y(a,d){var c=[],b,e,f;e=0;for(f=d.length;e<f;e++)if(b=d[e])switch(b.nodeName.toLowerCase()){case "script":case "style":case "link":break;default:if(b.nodeType===1)c.push(b);else if(b.nodeType===3&&(b.isElementContentWhitespace||Sa.test(b.data))){a.removeChild(b);
|
11
|
+
e--}}return c}function Ba(a){var d=0;a=a.parentNode;for(var c;a.FLX_DOM_ID;){c=B[a.FLX_DOM_ID];c=Z(c.children,Y(a,a.childNodes),x);d+=c.total;c=u;a=a.parentNode}return{nested:c,flex:d}}function Ta(a,d){var c=a.target;if(!c.FLX_DOM_ID)c.FLX_DOM_ID=c.FLX_DOM_ID||++da;if(!a.nodes)a.nodes=Y(c,c.childNodes);if(!a.selector){a.selector=ja(c);c.setAttribute($,u)}if(!a.properties)a.properties=[];if(!a.children)a.children=ma(c,T,Y(c,c.childNodes));if(!a.nested)a.nested=a.selector+" ["+$+"]";a.target=c;a._instance=
|
12
|
+
d;return a}var J={},da=0,ka="data-flexie-id",$="data-flexie-parent",Q,Ca,V={NW:{s:"*.Dom.select"},DOMAssistant:{s:"*.$",m:"*.DOMReady"},Prototype:{s:"$$",m:"document.observe",p:"dom:loaded",c:"document"},YAHOO:{s:"*.util.Selector.query",m:"*.util.Event.onDOMReady",c:"*.util.Event"},MooTools:{s:"$$",m:"window.addEvent",p:"domready"},Sizzle:{s:"*"},jQuery:{s:"*",m:"*(document).ready"},dojo:{s:"*.query",m:"*.addOnLoad"}},T,qa=/^-?\d+(?:px)?$/i,Ka=/^-?\d/,La=/width|height|margin|padding|border/,Ua=/(msie) ([\w.]+)/,
|
13
|
+
Va=/\t|\n|\r/g,Wa=/^max\-([a-z]+)/,Xa=/^https?:\/\//i,Ha=/^\s\s*/,Ia=/\s\s*$/,Sa=/^\s*$/,Pa=/\s?(\#|\.|\[|\:(\:)?[^first\-(line|letter)|before|after]+)/g,E="",Da=" ",aa="$1",sa="paddingRight",va="paddingBottom",ra="paddingLeft",ea="paddingTop",ua="borderRightWidth",xa="borderBottomWidth",ta="borderLeftWidth",wa="borderTopWidth",ya=" -o- -moz- -ms- -webkit- -khtml- ".split(Da),Ya={orient:"horizontal",align:"stretch",direction:"inherit",pack:"start"},B=[],la=[],ga,za,u=true,U=false,x=null,na,W={IE:function(){var a,
|
14
|
+
d=Ua.exec(H.navigator.userAgent.toLowerCase());if(d)a=parseInt(d[2],10);return a}()},Ea;Ea=function(){function a(j){return j.replace(k,function(l,m,o){var y,v;l=o.split(",");o=0;for(y=l.length;o<y;o++){v=l[o];v.replace(i,aa).replace(n,aa).replace(p,aa).replace(r,Da)}return m+l.join(",")})}function d(){if(H.XMLHttpRequest)return new H.XMLHttpRequest;try{return new H.ActiveXObject("Microsoft.XMLHTTP")}catch(j){return x}}function c(j){var l=d();l.open("GET",j,U);l.send();l=l.status===200?l.responseText:
|
15
|
+
E;if(j===window.location.href){j=l;l=/<style[^<>]*>([^<>]*)<\/style[\s]?>/img;for(var m=l.exec(j),o=[];m;){(m=m[1])&&o.push(m);m=l.exec(j)}l=o.join("\n\n")}return l}function b(j,l){if(j){if(Xa.test(j))return l.substring(0,l.indexOf("/",8))===j.substring(0,j.indexOf("/",8))?j:x;if(j.charAt(0)==="/")return l.substring(0,l.indexOf("/",8))+j;var m=l.split("?")[0];if(j.charAt(0)!=="?"&&m.charAt(m.length-1)!=="/")m=m.substring(0,m.lastIndexOf("/")+1);return m+j}}function e(j){if(j)return c(j).replace(f,
|
16
|
+
E).replace(g,function(l,m,o,y,v,s){l=e(b(o||v,j));return s?"@media "+s+" {"+l+"}":l}).replace(h,function(l,m,o,y){o=o||E;return m?l:" url("+o+b(y,j,true)+o+") "});return E}var f=/(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*?/g,g=/@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))\s*([^;]*);/g,h=/(behavior\s*?:\s*)?\burl\(\s*(["']?)(?!data:)([^"')]+)\2\s*\)/g,k=/((?:^|(?:\s*\})+)(?:\s*@media[^\{]+\{)?)\s*([^\{]*?[\[:][^{]+)/g,i=/([(\[+~])\s+/g,n=/\s+([)\]+~])/g,r=/\s+/g,p=/^\s*((?:[\S\s]*\S)?)\s*$/;
|
17
|
+
return function(){var j,l=[],m,o;m=R.getElementsByTagName("BASE");var y=m.length>0?m[0].href:R.location.href,v=R.styleSheets,s,w;m=0;for(o=v.length;m<o;m++){j=v[m];j!=x&&l.push(j)}l.push(window.location);m=0;for(o=l.length;m<o;m++)if(j=l[m]){if(j=b(j.href,y))s=a(e(j));if(s){w=s;j=[];v=void 0;var q=void 0,A=void 0;q=void 0;A=void 0;var z=void 0,C=void 0,I=void 0,P=void 0;z=void 0;w=w.replace(Va,E);w=w.replace(/\s?(\{|\:|\})\s?/g,aa);v=w.split("}");for(I in v)if(v.hasOwnProperty(I))if(w=v[I]){q=[w,
|
18
|
+
"}"].join(E);if((A=/(\@media[^\{]+\{)?(.*)\{(.*)\}/.exec(q))&&A[3]){q=A[2];A=A[3].split(";");C=[];for(P in A)if(A.hasOwnProperty(P)){z=A[P];z=z.split(":");z.length&&z[1]&&C.push({property:z[0],value:z[1]})}q&&C.length&&j.push({selector:q,properties:C})}}w=j;w=Ja(w)}}l=w;var L,t,F,G;I={};var N;P="["+$+"]";var K,X,S,ha,ba,Fa,Ga;if(l){q=0;for(A=l.boxes.length;q<A;q++){F=l.boxes[q];F.selector=O(F.selector);s=F.selector;m=F.properties;o=y=w=j=v=x;C=0;for(z=m.length;C<z;C++){G=m[C];L=O(G.property);t=O(G.value);
|
19
|
+
if(L){L=L.replace("box-",E);switch(L){case "display":if(t==="box")o=t;break;case "orient":y=t;break;case "align":w=t;break;case "direction":j=t;break;case "pack":v=t}}}L=T;F=L(F.selector);F=F[0]?F:[F];C=0;for(z=F.length;C<z;C++){t=F[C];if(t.nodeType){ca(t);G=ma(t,L,l.children);N=s+" "+P;G={target:t,selector:s,properties:m,children:G,display:o,orient:y,align:w,direction:j,pack:v,nested:N};if(N=I[t.FLX_DOM_ID])for(K in G){if(G.hasOwnProperty(K)){t=G[K];switch(K){case "selector":if(t&&!RegExp(t).test(N[K]))N[K]+=
|
20
|
+
", "+t;break;case "children":X=0;for(S=G[K].length;X<S;X++){ha=G[K][X];t=U;ba=0;for(Fa=N[K].length;ba<Fa;ba++){Ga=N[K][ba];if(ha.match.FLX_DOM_ID===Ga.match.FLX_DOM_ID)t=u}t||N[K].push(ha)}break;default:if(t)N[K]=t}}}else{N=I;X=t.FLX_DOM_ID;S=void 0;for(S in G)if(G.hasOwnProperty(S))G[S]=G[S]||Ya[S];N[X]=G;I[t.FLX_DOM_ID].target.setAttribute($,u)}}}}ga=T(P);B={};q=0;for(A=ga.length;q<A;q++){t=ga[q];B[t.FLX_DOM_ID]=I[t.FLX_DOM_ID]}for(K in B)if(B.hasOwnProperty(K)){F=B[K];F.display==="box"&&new J.box(F)}}}}();
|
21
|
+
J.box=function(a){return this.renderModel(a)};J.box.prototype={properties:{boxModel:function(a,d,c){var b,e,f,g,h;a.style.display="block";if(W.IE===8)a.style.overflow="hidden";if(!c.cleared){d=c.selector.split(/\s?,\s?/);b=R.styleSheets;b=b[b.length-1];e="padding-top:"+(D(a,ea,x)||"0.1px;");f=0;for(g=d.length;f<g;f++){h=d[f];if(b.addRule)if(W.IE<8){a.style.zoom="1";if(W.IE===6)b.addRule(h.replace(/\>|\+|\~/g,""),e+"zoom:1;",0);else W.IE===7&&b.addRule(h,e+"display:inline-block;",0)}else{b.addRule(h,
|
22
|
+
e,0);b.addRule(h+":before","content: '.';display: block;height: 0;overflow: hidden",0);b.addRule(h+":after","content: '.';display: block;height: 0;overflow: hidden;clear:both;",0)}else if(b.insertRule){b.insertRule(h+"{"+e+"}",0);b.insertRule(h+":after{content: '.';display: block;height: 0;overflow: hidden;clear:both;}",0)}}c.cleared=u}},boxDirection:function(a,d,c){var b,e,f;if(c.direction==="reverse"&&!c.reversed||c.direction==="normal"&&c.reversed){d=d.reverse();b=0;for(e=d.length;b<e;b++){f=d[b];
|
23
|
+
a.appendChild(f)}a=T(c.nested);b=0;for(e=a.length;b<e;b++){d=a[b];if((d=B[d.FLX_DOM_ID])&&d.direction==="inherit")d.direction=c.direction}c.reversed=!c.reversed}},boxOrient:function(a,d,c){var b,e,f,g;a={pos:"marginLeft",opp:"marginRight",dim:"width",out:"offsetWidth",func:Ma,pad:[ra,sa,ta,ua]};b={pos:"marginTop",opp:"marginBottom",dim:"height",out:"offsetHeight",func:Na,pad:[ea,va,wa,xa]};if(!Q){e=0;for(f=d.length;e<f;e++){g=d[e];g.style[W.IE>=9?"cssFloat":"styleFloat"]="left";if(c.orient==="vertical"||
|
24
|
+
c.orient==="block-axis")g.style.clear="left";if(W.IE===6)g.style.display="inline"}}switch(c.orient){case "vertical":case "block-axis":this.props=b;this.anti=a;break;default:this.props=a;this.anti=b}},boxOrdinalGroup:function(a,d,c){var b,e;if(d.length){b=function(f){f=f.keys;f=c.reversed?f:f.reverse();var g,h,k,i,n,r;g=0;for(h=f.length;g<h;g++){k=f[g];i=0;for(n=d.length;i<n;i++){r=d[i];k===r.getAttribute("data-ordinal-group")&&a.appendChild(r)}}};e=Z(c.children,d,u);e.keys.length>1&&b(e)}},boxFlex:function(a,
|
25
|
+
d,c){var b=this,e,f,g,h;if(d.length){e=function(k){var i=k.groups;k=k.keys;var n,r,p,j,l,m,o,y,v,s;r=0;for(p=k.length;r<p;r++){j=k[r];l=0;for(m=i[j].length;l<m;l++){o=i[j][l];n=x;y=0;for(v=o.properties.length;y<v;y++){s=o.properties[y];if(Wa.test(s.property))n=parseFloat(s.value)}if(!n||o.match[b.props.out]>n)M(o.match,b.props.pos,x)}}};f=function(k){var i=0,n,r,p,j,l,m;n=0;for(r=d.length;n<r;n++){p=d[n];i+=D(p,b.props.dim,u);j=0;for(l=b.props.pad.length;j<l;j++){m=b.props.pad[j];i+=D(p,m,u)}i+=D(p,
|
26
|
+
b.props.pos,u);i+=D(p,b.props.opp,u)}i=a[b.props.out]-i;n=0;for(r=b.props.pad.length;n<r;n++){m=b.props.pad[n];i-=D(a,m,u)}return{whitespace:i,ration:i/k.total}};g=function(k,i){var n=k.groups,r=k.keys,p,j,l=i.ration,m,o,y,v,s,w,q;o=0;for(y=r.length;o<y;o++){v=r[o];m=l*v;s=0;for(w=n[v].length;s<w;s++){q=n[v][s];if(q.match){p=q.match.getAttribute("data-flex");j=q.match.getAttribute("data-specificity");if(!p||j<=q.flexSpecificity){q.match.setAttribute("data-flex",v);q.match.setAttribute("data-specificity",
|
27
|
+
q.flexSpecificity);p=D(q.match,b.props.dim,u);p=Math.max(0,p+m);M(q.match,b.props.dim,p)}}}}};h=Z(c.children,d,x);if(h.total){c.hasFlex=u;e(h);c=f(h);g(h,c)}}},boxAlign:function(a,d,c){var b,e;b=Ba(a);var f,g,h,k,i;if(!Q&&!b.flex&&(c.orient==="vertical"||c.orient==="block-axis")){a:{b=this.anti.dim;f=a.parentNode;if(f.FLX_DOM_ID){f=B[f.FLX_DOM_ID];g=0;for(h=f.properties.length;g<h;g++){k=f.properties[g];if(RegExp(b).test(k.property)){b=U;break a}}}b=void 0}b||M(a,this.anti.dim,x);M(d,this.anti.dim,
|
28
|
+
x)}b=a[this.anti.out];f=0;for(g=this.anti.pad.length;f<g;f++){h=this.anti.pad[f];b-=D(a,h,u)}switch(c.align){case "start":break;case "end":f=0;for(g=d.length;f<g;f++){i=d[f];e=b-i[this.anti.out];e-=D(i,this.anti.opp,u);M(i,this.anti.pos,e)}break;case "center":f=0;for(g=d.length;f<g;f++){i=d[f];e=(b-i[this.anti.out])/2;M(i,this.anti.pos,e)}break;default:f=0;for(g=d.length;f<g;f++){i=d[f];switch(i.nodeName.toLowerCase()){case "button":case "input":case "select":break;default:c=e=0;for(k=this.anti.pad.length;c<
|
29
|
+
k;c++){h=this.anti.pad[c];e+=D(i,h,u);e+=D(a,h,u)}i.style[this.anti.dim]="100%";M(i,this.anti.dim,x);e=b;e-=D(i,this.anti.pos,u);c=0;for(k=this.anti.pad.length;c<k;c++){h=this.anti.pad[c];e-=D(i,h,u)}e-=D(i,this.anti.opp,u);e=Math.max(0,e);M(i,this.anti.dim,e)}}}},boxPack:function(a,d,c){var b=0,e=0,f=0,g;g=d.length-1;var h,k,i;h=0;for(k=d.length;h<k;h++){e=d[h];b+=e[this.props.out];b+=D(e,this.props.pos,u);b+=D(e,this.props.opp,u)}e=D(d[0],this.props.pos,u);b=a[this.props.out]-b;h=0;for(k=this.props.pad.length;h<
|
30
|
+
k;h++){i=this.props.pad[h];b-=D(a,i,u)}if(b<0)b=Math.max(0,b);switch(c.pack){case "end":M(d[0],this.props.pos,f+e+b);break;case "center":if(f)f/=2;M(d[0],this.props.pos,f+e+Math.floor(b/2));break;case "justify":c=Math.floor((f+b)/g);g=c*g-b;for(h=d.length-1;h;){e=d[h];f=c;if(g){f++;g++}f=D(e,this.props.pos,u)+f;M(e,this.props.pos,f);h--}}a.style.overflow=""}},setup:function(a,d,c){var b,e;if(!(!a||!d||!c))if(Q&&Q.partialSupport){b=Z(c.children,d,x);e=Ba(a);d=Y(a,a.childNodes);this.properties.boxOrient.call(this,
|
31
|
+
a,d,c);if(!b.total||!T(c.nested).length){if(c.align==="stretch"&&!Q.boxAlignStretch&&(!e.nested||!e.flex))this.properties.boxAlign.call(this,a,d,c);c.pack==="justify"&&!Q.boxPackJustify&&!b.total&&this.properties.boxPack.call(this,a,d,c)}}else if(!Q)for(b in this.properties)if(this.properties.hasOwnProperty(b)){d=this.properties[b];d.call(this,a,Y(a,a.childNodes),c)}},trackDOM:function(a){Ra(this,a)},updateModel:function(a){var d=a.target,c=a.nodes;Aa(c);if(a.flexMatrix||a.ordinalMatrix){var b,e,
|
32
|
+
f;if(a.flexMatrix){b=0;for(e=a.children.length;b<e;b++){f=a.children[b];f.flex=a.flexMatrix[b]}}if(a.ordinalMatrix){b=0;for(e=a.children.length;b<e;b++){f=a.children[b];f["ordinal-group"]=a.ordinalMatrix[b]}}}this.setup(d,c,a);this.bubbleUp(d,a)},renderModel:function(a){var d=this,c=a.target,b=c.childNodes;if(!c.length&&!b)return false;a=Ta(a,this);d.updateModel(a);H.setTimeout(function(){d.trackDOM(a)},0);return d},bubbleUp:function(a,d){for(var c,b=d.target.parentNode;b;){if(c=B[b.FLX_DOM_ID]){Aa(c.nodes);
|
33
|
+
this.setup(c.target,c.nodes,c)}b=b.parentNode}}};J.updateInstance=function(a,d){var c,b;if(a)if(c=B[a.FLX_DOM_ID])c._instance.updateModel(c);else new J.box(d);else for(b in B)if(B.hasOwnProperty(b)){c=B[b];c._instance.updateModel(c)}};J.getInstance=function(a){return B[a.FLX_DOM_ID]};J.destroyInstance=function(a){var d,c,b,e,f;d=function(g){g.target.FLX_DOM_ID=x;g.target.style.cssText=E;c=0;for(b=g.children.length;c<b;c++){e=g.children[c];e.match.style.cssText=E}};if(a)(a=B[a.FLX_DOM_ID])&&d(a);else{for(f in B)B.hasOwnProperty(f)&&
|
34
|
+
d(B[f]);B=[]}};J.flexboxSupport=function(){var a={},d,c=R.createElement("flxbox"),b,e,f;c.style.width=c.style.height="100px";c.innerHTML='<b style="margin: 0; padding: 0; display:block; width: 10px; height:50px"></b><b style="margin: 0; padding: 0; display:block; width: 10px; height:50px"></b><b style="margin: 0; padding: 0; display:block; width: 10px; height:50px"></b>';fa(c,"display","box",x);fa(c,"box-align","stretch",u);fa(c,"box-pack","justify",u);R.body.appendChild(c);d=c.firstChild.offsetHeight;
|
35
|
+
b={boxAlignStretch:function(){return d===100},boxPackJustify:function(){var g=0,h,k;h=0;for(k=c.childNodes.length;h<k;h++)g+=c.childNodes[h].offsetLeft;return g===135}};for(f in b)if(b.hasOwnProperty(f)){e=b[f];e=e();if(!e)a.partialSupport=u;a[f]=e}R.body.removeChild(c);return~c.style.display.indexOf("box")?a:U};J.init=function(){J.flexboxSupported=Q=J.flexboxSupport();if((!Q||Q.partialSupport)&&T)Ea()};J.version="1.0.3";(function(a){if(!Ca){var d,c,b;for(c in V)if(V.hasOwnProperty(c)){b=V[c];if(H[c]&&
|
36
|
+
!d)if(d=eval(b.s.replace("*",c))){Ca=c;break}}T=d}var e,f;for(f in V)if(V.hasOwnProperty(f)){b=V[f];if(H[f]&&!e&&b.m){e=eval(b.m.replace("*",f));d=b.c?eval(b.c.replace("*",f)):H;c=[];if(e&&d){b.p&&c.push(b.p);c.push(a);e.apply(d,c);break}}}e||ia("load",a)})(J.init);return J}(this,document);
|
@@ -16,38 +16,48 @@ time, mark, audio, video {
|
|
16
16
|
border: 0;
|
17
17
|
font-size: 100%;
|
18
18
|
font: inherit;
|
19
|
-
vertical-align: baseline;
|
19
|
+
vertical-align: baseline;
|
20
|
+
}
|
20
21
|
|
21
22
|
body {
|
22
|
-
line-height: 1;
|
23
|
+
line-height: 1;
|
24
|
+
}
|
23
25
|
|
24
26
|
ol, ul {
|
25
|
-
list-style: none;
|
27
|
+
list-style: none;
|
28
|
+
}
|
26
29
|
|
27
30
|
table {
|
28
31
|
border-collapse: collapse;
|
29
|
-
border-spacing: 0;
|
32
|
+
border-spacing: 0;
|
33
|
+
}
|
30
34
|
|
31
35
|
caption, th, td {
|
32
36
|
text-align: left;
|
33
37
|
font-weight: normal;
|
34
|
-
vertical-align: middle;
|
38
|
+
vertical-align: middle;
|
39
|
+
}
|
35
40
|
|
36
41
|
q, blockquote {
|
37
|
-
quotes: none;
|
38
|
-
|
39
|
-
|
40
|
-
|
42
|
+
quotes: none;
|
43
|
+
}
|
44
|
+
q:before, q:after, blockquote:before, blockquote:after {
|
45
|
+
content: "";
|
46
|
+
content: none;
|
47
|
+
}
|
41
48
|
|
42
49
|
a img {
|
43
|
-
border: none;
|
50
|
+
border: none;
|
51
|
+
}
|
44
52
|
|
45
53
|
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
|
46
|
-
display: block;
|
54
|
+
display: block;
|
55
|
+
}
|
47
56
|
|
48
57
|
html, body {
|
49
58
|
width: 100%;
|
50
|
-
height: 100%;
|
59
|
+
height: 100%;
|
60
|
+
}
|
51
61
|
|
52
62
|
body {
|
53
63
|
display: -webkit-box;
|
@@ -61,23 +71,30 @@ body {
|
|
61
71
|
background: #eeeeee;
|
62
72
|
color: black;
|
63
73
|
font-size: 12px;
|
64
|
-
font-family: Helvetica, sans-serif;
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
74
|
+
font-family: Helvetica, sans-serif;
|
75
|
+
}
|
76
|
+
body body {
|
77
|
+
font-size: 75%;
|
78
|
+
line-height: 2em;
|
79
|
+
}
|
80
|
+
body html > body {
|
81
|
+
font-size: 12px;
|
82
|
+
}
|
83
|
+
body.iframe {
|
84
|
+
background: white;
|
85
|
+
}
|
86
|
+
body.iframe h1 {
|
87
|
+
font-size: 1.3em;
|
88
|
+
margin: 12px;
|
89
|
+
}
|
90
|
+
body.iframe p, body.iframe form {
|
91
|
+
margin: 0 12px 12px 12px;
|
92
|
+
line-height: 1.25;
|
93
|
+
}
|
94
|
+
body.iframe .loading {
|
95
|
+
color: #666666;
|
96
|
+
margin-left: 0.5em;
|
97
|
+
}
|
81
98
|
|
82
99
|
.button {
|
83
100
|
padding: 0.5em 1em;
|
@@ -95,103 +112,115 @@ body {
|
|
95
112
|
background: linear-gradient(#f4f4f4, #ececec), #ececec;
|
96
113
|
color: #666666;
|
97
114
|
text-shadow: 1px 1px 0 white;
|
98
|
-
text-decoration: none;
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
115
|
+
text-decoration: none;
|
116
|
+
}
|
117
|
+
.button:hover, .button:focus {
|
118
|
+
border-color: #999999;
|
119
|
+
border-bottom-color: #666666;
|
120
|
+
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
|
121
|
+
background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
122
|
+
background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
123
|
+
background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
124
|
+
background: -ms-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
125
|
+
background: linear-gradient(#eeeeee, #dddddd), #dddddd;
|
126
|
+
color: #333333;
|
127
|
+
text-decoration: none;
|
128
|
+
}
|
129
|
+
.button:active, .button.active {
|
130
|
+
border-color: #666666;
|
131
|
+
border-bottom-color: #999999;
|
132
|
+
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
|
133
|
+
background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
134
|
+
background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
135
|
+
background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
136
|
+
background: -ms-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
137
|
+
background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
138
|
+
color: #333333;
|
139
|
+
text-decoration: none;
|
140
|
+
text-shadow: -1px -1px 0 #eeeeee;
|
141
|
+
}
|
122
142
|
|
123
143
|
body > header {
|
124
144
|
overflow: hidden;
|
125
145
|
*zoom: 1;
|
126
|
-
border-bottom: 1px solid #cccccc;
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
146
|
+
border-bottom: 1px solid #cccccc;
|
147
|
+
}
|
148
|
+
body > header h1 {
|
149
|
+
float: left;
|
150
|
+
margin-left: 6px;
|
151
|
+
padding: 6px;
|
152
|
+
padding-left: 30px;
|
153
|
+
background: url(/images/logo.png) left no-repeat;
|
154
|
+
font-size: 18px;
|
155
|
+
font-weight: bold;
|
156
|
+
}
|
157
|
+
body > header h1 a {
|
158
|
+
color: black;
|
159
|
+
text-decoration: none;
|
160
|
+
text-shadow: 0 1px 0 white;
|
161
|
+
-webkit-transition: 0.1s ease;
|
162
|
+
-moz-transition: 0.1s ease;
|
163
|
+
-ms-transition: 0.1s ease;
|
164
|
+
-o-transition: 0.1s ease;
|
165
|
+
transition: 0.1s ease;
|
166
|
+
}
|
167
|
+
body > header h1 a:hover {
|
168
|
+
color: #4183c4;
|
169
|
+
}
|
170
|
+
body > header nav {
|
171
|
+
border-left: 1px solid #cccccc;
|
172
|
+
}
|
173
|
+
body > header nav.project {
|
174
|
+
float: left;
|
175
|
+
}
|
176
|
+
body > header nav.app {
|
177
|
+
float: right;
|
178
|
+
}
|
179
|
+
body > header nav li {
|
180
|
+
display: block;
|
181
|
+
float: left;
|
182
|
+
border-left: 1px solid white;
|
183
|
+
border-right: 1px solid #cccccc;
|
184
|
+
}
|
185
|
+
body > header nav li input {
|
186
|
+
margin: 6px;
|
187
|
+
}
|
188
|
+
body > header nav li a {
|
189
|
+
display: block;
|
190
|
+
padding: 10px;
|
191
|
+
text-decoration: none;
|
192
|
+
text-shadow: 0 1px 0 white;
|
193
|
+
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f4f4f4), color-stop(100%, #ececec)), #ececec;
|
194
|
+
background: -webkit-linear-gradient(#f4f4f4, #ececec), #ececec;
|
195
|
+
background: -moz-linear-gradient(#f4f4f4, #ececec), #ececec;
|
196
|
+
background: -o-linear-gradient(#f4f4f4, #ececec), #ececec;
|
197
|
+
background: -ms-linear-gradient(#f4f4f4, #ececec), #ececec;
|
198
|
+
background: linear-gradient(#f4f4f4, #ececec), #ececec;
|
199
|
+
color: #666666;
|
200
|
+
text-shadow: 1px 1px 0 white;
|
201
|
+
text-decoration: none;
|
202
|
+
}
|
203
|
+
body > header nav li a:hover, body > header nav li a:focus {
|
204
|
+
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)), #dddddd;
|
205
|
+
background: -webkit-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
206
|
+
background: -moz-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
207
|
+
background: -o-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
208
|
+
background: -ms-linear-gradient(#eeeeee, #dddddd), #dddddd;
|
209
|
+
background: linear-gradient(#eeeeee, #dddddd), #dddddd;
|
210
|
+
color: #333333;
|
211
|
+
text-decoration: none;
|
212
|
+
}
|
213
|
+
body > header nav li a:active, body > header nav li a.active {
|
214
|
+
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #eeeeee)), #eeeeee;
|
215
|
+
background: -webkit-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
216
|
+
background: -moz-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
217
|
+
background: -o-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
218
|
+
background: -ms-linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
219
|
+
background: linear-gradient(#dddddd, #eeeeee), #eeeeee;
|
220
|
+
color: #333333;
|
221
|
+
text-decoration: none;
|
222
|
+
text-shadow: -1px -1px 0 #eeeeee;
|
223
|
+
}
|
195
224
|
|
196
225
|
#messages {
|
197
226
|
width: 100%;
|
@@ -199,45 +228,58 @@ body > header {
|
|
199
228
|
min-height: 3em;
|
200
229
|
overflow: auto;
|
201
230
|
background: white;
|
202
|
-
border-top: 1px solid white;
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
231
|
+
border-top: 1px solid white;
|
232
|
+
}
|
233
|
+
#messages table {
|
234
|
+
overflow: hidden;
|
235
|
+
*zoom: 1;
|
236
|
+
width: 100%;
|
237
|
+
}
|
238
|
+
#messages table thead tr {
|
239
|
+
background: #eeeeee;
|
240
|
+
color: #333333;
|
241
|
+
}
|
242
|
+
#messages table thead tr th {
|
243
|
+
padding: 0.25em;
|
244
|
+
font-weight: bold;
|
245
|
+
color: #666666;
|
246
|
+
text-shadow: 0 1px 0 white;
|
247
|
+
}
|
248
|
+
#messages table tbody tr {
|
249
|
+
cursor: pointer;
|
250
|
+
-webkit-transition: 0.1s ease;
|
251
|
+
-moz-transition: 0.1s ease;
|
252
|
+
-ms-transition: 0.1s ease;
|
253
|
+
-o-transition: 0.1s ease;
|
254
|
+
transition: 0.1s ease;
|
255
|
+
color: #333333;
|
256
|
+
}
|
257
|
+
#messages table tbody tr:hover {
|
258
|
+
color: black;
|
259
|
+
}
|
260
|
+
#messages table tbody tr:nth-child(even) {
|
261
|
+
background: #f0f0f0;
|
262
|
+
}
|
263
|
+
#messages table tbody tr.selected {
|
264
|
+
background: Highlight;
|
265
|
+
color: HighlightText;
|
266
|
+
}
|
267
|
+
#messages table tbody tr td {
|
268
|
+
padding: 0.25em;
|
269
|
+
}
|
270
|
+
#messages table tbody tr td.blank {
|
271
|
+
color: #666666;
|
272
|
+
font-style: italic;
|
273
|
+
}
|
234
274
|
|
235
275
|
#resizer {
|
236
276
|
padding-bottom: 5px;
|
237
|
-
cursor: ns-resize;
|
238
|
-
|
239
|
-
|
240
|
-
|
277
|
+
cursor: ns-resize;
|
278
|
+
}
|
279
|
+
#resizer .ruler {
|
280
|
+
border-top: 1px solid #cccccc;
|
281
|
+
border-bottom: 1px solid white;
|
282
|
+
}
|
241
283
|
|
242
284
|
#message {
|
243
285
|
display: -webkit-box;
|
@@ -251,122 +293,152 @@ body > header {
|
|
251
293
|
-webkit-box-flex: 1;
|
252
294
|
-moz-box-flex: 1;
|
253
295
|
-ms-box-flex: 1;
|
254
|
-
box-flex: 1;
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
296
|
+
box-flex: 1;
|
297
|
+
}
|
298
|
+
#message > header {
|
299
|
+
overflow: hidden;
|
300
|
+
*zoom: 1;
|
301
|
+
}
|
302
|
+
#message > header .metadata {
|
303
|
+
overflow: hidden;
|
304
|
+
*zoom: 1;
|
305
|
+
padding: 0.5em;
|
306
|
+
padding-top: 0;
|
307
|
+
}
|
308
|
+
#message > header .metadata dt, #message > header .metadata dd {
|
309
|
+
padding: 0.25em;
|
310
|
+
}
|
311
|
+
#message > header .metadata dt {
|
312
|
+
float: left;
|
313
|
+
clear: left;
|
314
|
+
width: 8em;
|
315
|
+
margin-right: 0.5em;
|
316
|
+
text-align: right;
|
317
|
+
font-weight: bold;
|
318
|
+
color: #666666;
|
319
|
+
text-shadow: 0 1px 0 white;
|
320
|
+
}
|
321
|
+
#message > header .metadata dd.subject {
|
322
|
+
font-weight: bold;
|
323
|
+
}
|
324
|
+
#message > header .metadata .attachments {
|
325
|
+
display: none;
|
326
|
+
}
|
327
|
+
#message > header .metadata .attachments ul {
|
328
|
+
display: inline;
|
329
|
+
}
|
330
|
+
#message > header .metadata .attachments ul li {
|
331
|
+
display: -moz-inline-box;
|
332
|
+
-moz-box-orient: vertical;
|
333
|
+
display: inline-block;
|
334
|
+
vertical-align: middle;
|
335
|
+
*vertical-align: auto;
|
336
|
+
margin-right: 0.5em;
|
337
|
+
}
|
338
|
+
#message > header .metadata .attachments ul li {
|
339
|
+
*display: inline;
|
340
|
+
}
|
341
|
+
#message > header .views ul {
|
342
|
+
padding: 0 0.5em;
|
343
|
+
border-bottom: 1px solid #cccccc;
|
344
|
+
}
|
345
|
+
#message > header .views .tab {
|
346
|
+
display: -moz-inline-box;
|
347
|
+
-moz-box-orient: vertical;
|
348
|
+
display: inline-block;
|
349
|
+
vertical-align: middle;
|
350
|
+
*vertical-align: auto;
|
351
|
+
}
|
352
|
+
#message > header .views .tab {
|
353
|
+
*display: inline;
|
354
|
+
}
|
355
|
+
#message > header .views .tab a {
|
356
|
+
display: -moz-inline-box;
|
357
|
+
-moz-box-orient: vertical;
|
358
|
+
display: inline-block;
|
359
|
+
vertical-align: middle;
|
360
|
+
*vertical-align: auto;
|
361
|
+
padding: 0.5em;
|
362
|
+
border: 1px solid #cccccc;
|
363
|
+
background: #dddddd;
|
364
|
+
color: #333333;
|
365
|
+
border-width: 1px 1px 0 1px;
|
366
|
+
cursor: pointer;
|
367
|
+
text-shadow: 0 1px 0 #eeeeee;
|
368
|
+
text-decoration: none;
|
369
|
+
}
|
370
|
+
#message > header .views .tab a {
|
371
|
+
*display: inline;
|
372
|
+
}
|
373
|
+
#message > header .views .tab:not(.selected):hover a {
|
374
|
+
background-color: #eeeeee;
|
375
|
+
}
|
376
|
+
#message > header .views .tab.selected a {
|
377
|
+
background: white;
|
378
|
+
color: black;
|
379
|
+
height: 13px;
|
380
|
+
-webkit-box-shadow: 1px 1px 0 #cccccc;
|
381
|
+
-moz-box-shadow: 1px 1px 0 #cccccc;
|
382
|
+
box-shadow: 1px 1px 0 #cccccc;
|
383
|
+
margin-bottom: -2px;
|
384
|
+
cursor: default;
|
385
|
+
}
|
386
|
+
#message > header .views .action {
|
387
|
+
display: -moz-inline-box;
|
388
|
+
-moz-box-orient: vertical;
|
389
|
+
display: inline-block;
|
390
|
+
vertical-align: middle;
|
391
|
+
*vertical-align: auto;
|
392
|
+
float: right;
|
393
|
+
margin: 0 0.25em;
|
394
|
+
}
|
395
|
+
#message > header .views .action {
|
396
|
+
*display: inline;
|
397
|
+
}
|
338
398
|
|
339
399
|
.fractal-analysis {
|
340
|
-
margin: 12px 0;
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
400
|
+
margin: 12px 0;
|
401
|
+
}
|
402
|
+
.fractal-analysis .report-intro {
|
403
|
+
font-weight: bold;
|
404
|
+
}
|
405
|
+
.fractal-analysis .report-intro.valid {
|
406
|
+
color: #009900;
|
407
|
+
}
|
408
|
+
.fractal-analysis .report-intro.invalid {
|
409
|
+
color: #cc3333;
|
410
|
+
}
|
411
|
+
.fractal-analysis code {
|
412
|
+
font-family: Monaco, "Courier New", Courier, monospace;
|
413
|
+
background-color: #f8f8ff;
|
414
|
+
color: #444444;
|
415
|
+
padding: 0 0.2em;
|
416
|
+
border: 1px solid #dedede;
|
417
|
+
}
|
418
|
+
.fractal-analysis ul {
|
419
|
+
margin: 1em 0 1em 1em;
|
420
|
+
list-style-type: square;
|
421
|
+
}
|
422
|
+
.fractal-analysis ol {
|
423
|
+
margin: 1em 0 1em 2em;
|
424
|
+
list-style-type: decimal;
|
425
|
+
}
|
426
|
+
.fractal-analysis ul li, .fractal-analysis ol li {
|
427
|
+
display: list-item;
|
428
|
+
margin: 0.5em 0 0.5em 1em;
|
429
|
+
}
|
430
|
+
.fractal-analysis .error-intro strong {
|
431
|
+
font-weight: bold;
|
432
|
+
}
|
433
|
+
.fractal-analysis .unsupported-clients dt {
|
434
|
+
padding-left: 1em;
|
435
|
+
}
|
436
|
+
.fractal-analysis .unsupported-clients dd {
|
437
|
+
padding-left: 2em;
|
438
|
+
}
|
439
|
+
.fractal-analysis .unsupported-clients dd ul li {
|
440
|
+
display: list-item;
|
441
|
+
}
|
370
442
|
|
371
443
|
iframe {
|
372
444
|
display: -webkit-box;
|
@@ -377,4 +449,5 @@ iframe {
|
|
377
449
|
-moz-box-flex: 1;
|
378
450
|
-ms-box-flex: 1;
|
379
451
|
box-flex: 1;
|
380
|
-
background: white;
|
452
|
+
background: white;
|
453
|
+
}
|
data/views/index.haml
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
%script{:src => "/javascripts/jquery.js"}
|
8
8
|
%script{:src => "/javascripts/xslt-3.2.js"}
|
9
9
|
%script{:src => "/javascripts/date.js"}
|
10
|
+
%script{:src => "/javascripts/flexie.min.js"}
|
10
11
|
%script{:src => "/javascripts/application.js"}
|
11
12
|
%body
|
12
13
|
%header
|
@@ -14,6 +15,8 @@
|
|
14
15
|
%a{:href => "http://mailcatcher.me", :target => '_blank'} MailCatcher
|
15
16
|
%nav.app
|
16
17
|
%ul
|
18
|
+
%li.search
|
19
|
+
%input{:type => 'search', :name => 'search', :placeholder => 'Search messages...', :incremental => true}
|
17
20
|
%li.clear
|
18
21
|
%a{:href => '#', :title => 'Clear all messages'} Clear
|
19
22
|
%li.quit
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailcatcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-03-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70178931095400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70178931095400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: eventmachine
|
27
|
-
requirement: &
|
27
|
+
requirement: &70178931094740 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.12'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70178931094740
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: haml
|
38
|
-
requirement: &
|
38
|
+
requirement: &70178931093560 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3.1'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70178931093560
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: mail
|
49
|
-
requirement: &
|
49
|
+
requirement: &70178931092220 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '2.3'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70178931092220
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sinatra
|
60
|
-
requirement: &
|
60
|
+
requirement: &70178931091100 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '1.2'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70178931091100
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: skinny
|
71
|
-
requirement: &
|
71
|
+
requirement: &70178931089960 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0.2'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70178931089960
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: sqlite3
|
82
|
-
requirement: &
|
82
|
+
requirement: &70178931089260 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '1.3'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70178931089260
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: thin
|
93
|
-
requirement: &
|
93
|
+
requirement: &70178931088420 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '1.2'
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70178931088420
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: coffee-script
|
104
|
-
requirement: &
|
104
|
+
requirement: &70178931087740 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '2.2'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70178931087740
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: compass
|
115
|
-
requirement: &
|
115
|
+
requirement: &70178931087000 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 0.11.1
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70178931087000
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: rake
|
126
|
-
requirement: &
|
126
|
+
requirement: &70178931086540 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70178931086540
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: rdoc
|
137
|
-
requirement: &
|
137
|
+
requirement: &70178931085980 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70178931085980
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: sass
|
148
|
-
requirement: &
|
148
|
+
requirement: &70178931085200 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ~>
|
@@ -153,7 +153,7 @@ dependencies:
|
|
153
153
|
version: '3.1'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70178931085200
|
157
157
|
description: ! " MailCatcher runs a super simple SMTP server which catches any\n
|
158
158
|
\ message sent to it to display in a web interface. Run\n mailcatcher, set
|
159
159
|
your favourite app to deliver to\n smtp://127.0.0.1:1025 instead of your default
|
@@ -182,6 +182,7 @@ files:
|
|
182
182
|
- public/images/logo_large.png
|
183
183
|
- public/javascripts/application.js
|
184
184
|
- public/javascripts/date.js
|
185
|
+
- public/javascripts/flexie.min.js
|
185
186
|
- public/javascripts/jquery.js
|
186
187
|
- public/javascripts/modernizr.js
|
187
188
|
- public/javascripts/xslt-3.2.js
|
@@ -213,3 +214,4 @@ signing_key:
|
|
213
214
|
specification_version: 3
|
214
215
|
summary: Runs an SMTP server, catches and displays email in a web interface.
|
215
216
|
test_files: []
|
217
|
+
has_rdoc:
|