New directory layout - DOES NOT COMPILE
BIN
themes/integral/public/images/favicon.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
themes/integral/public/images/img01.gif
Normal file
|
After Width: | Height: | Size: 161 B |
BIN
themes/integral/public/images/img02.gif
Normal file
|
After Width: | Height: | Size: 379 B |
BIN
themes/integral/public/images/img03.gif
Normal file
|
After Width: | Height: | Size: 407 B |
BIN
themes/integral/public/images/img04.gif
Normal file
|
After Width: | Height: | Size: 161 B |
BIN
themes/integral/public/images/img05.gif
Normal file
|
After Width: | Height: | Size: 565 B |
BIN
themes/integral/public/images/img06.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
themes/integral/public/images/img07.gif
Normal file
|
After Width: | Height: | Size: 109 B |
BIN
themes/integral/public/images/img08.gif
Normal file
|
After Width: | Height: | Size: 365 B |
BIN
themes/integral/public/images/img09.gif
Normal file
|
After Width: | Height: | Size: 108 B |
BIN
themes/integral/public/images/img10.jpg
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
themes/integral/public/images/img11.gif
Normal file
|
After Width: | Height: | Size: 276 B |
16
themes/integral/public/jquery-1.5.2.min.js
vendored
Normal file
314
themes/integral/public/main.css
Normal file
@@ -0,0 +1,314 @@
|
||||
/*
|
||||
Design by Free CSS Templates
|
||||
http://www.freecsstemplates.org
|
||||
Released for free under a Creative Commons Attribution 2.5 License
|
||||
*/
|
||||
|
||||
/* Elements */
|
||||
|
||||
body {
|
||||
margin: 20px 0;
|
||||
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
h1 {
|
||||
}
|
||||
|
||||
h2, h3, h4, h5, h6 {
|
||||
color: #2582A4;
|
||||
}
|
||||
|
||||
p, ol, ul {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: bold;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #87A019;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
color: #2582A4;
|
||||
}
|
||||
|
||||
.box {
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
background: url(/public/images/img07.gif) repeat-x left bottom;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
display: block;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 10px;
|
||||
background: url(/public/images/img08.gif) no-repeat left bottom;
|
||||
}
|
||||
|
||||
.image {
|
||||
float: left;
|
||||
margin: 3px 0 0 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.indent {
|
||||
margin-left: 125px;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
|
||||
#header {
|
||||
width: 928px;
|
||||
height: 37px;
|
||||
margin: 0 auto;
|
||||
background: #BECF74 url(/public/images/img01.gif) repeat-x;
|
||||
border-bottom: 3px solid #FFFFFF;
|
||||
}
|
||||
|
||||
/* Menu */
|
||||
|
||||
#menu {
|
||||
float: left;
|
||||
width: 600px;
|
||||
height: 37px;
|
||||
margin: 0;
|
||||
padding: 0 0 0 10px;
|
||||
list-style: none;
|
||||
background: url(/public/images/img02.gif) no-repeat;
|
||||
}
|
||||
|
||||
#menu li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#menu a {
|
||||
display: block;
|
||||
float: left;
|
||||
height: 27px;
|
||||
padding: 10px 15px 0px 15px;
|
||||
text-transform: lowercase;
|
||||
text-decoration: none;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
#menu a:hover {
|
||||
background: #A4B74C url(/public/images/img04.gif) repeat-x;
|
||||
}
|
||||
|
||||
/* Search */
|
||||
|
||||
#search {
|
||||
float: right;
|
||||
height: 28px;
|
||||
margin: 0;
|
||||
padding: 9px 25px 0 0;
|
||||
background: url(/public/images/img03.gif) no-repeat right top;
|
||||
}
|
||||
|
||||
#search fieldset {
|
||||
display: inline;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#input1 {
|
||||
width: 164px;
|
||||
padding: 2px 5px;
|
||||
background: #FFFFFF;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#input2 {
|
||||
height: 20px;
|
||||
background: #87C4DB;
|
||||
border: none;
|
||||
text-transform: lowercase;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* Content */
|
||||
|
||||
#content {
|
||||
width: 928px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#colOne {
|
||||
float: left;
|
||||
width: 238px;
|
||||
background: url(/public/images/img05.gif) repeat-x;
|
||||
}
|
||||
|
||||
#colOne h3 {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
#colOne ul {
|
||||
margin-left: 0;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#colOne li {
|
||||
padding: 5px 0;
|
||||
border-top: 1px solid #EFEFEF;
|
||||
}
|
||||
|
||||
#colOne li.first {
|
||||
border: none;
|
||||
}
|
||||
|
||||
#colTwo {
|
||||
float: right;
|
||||
width: 617px;
|
||||
padding: 30px 40px 0 30px;
|
||||
background: url(/public/images/img09.gif) repeat-x;
|
||||
}
|
||||
|
||||
#colTwo h2 {
|
||||
margin-top: 0;
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
#colTwo h3 {
|
||||
margin-bottom: 0;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
#colTwo h4 {
|
||||
margin-top: 0;
|
||||
font-size: 11px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
#colTwo .box {
|
||||
margin: 0 -30px 30px -20px;
|
||||
padding: 0 30px 0 20px;
|
||||
}
|
||||
|
||||
#colTwo .bottom {
|
||||
margin: 0 0 20px -20px;
|
||||
padding: 0 0 20px 20px;
|
||||
}
|
||||
|
||||
/* Logo */
|
||||
|
||||
#logo {
|
||||
height: 150px;
|
||||
background: url(/public/images/img06.gif) no-repeat;
|
||||
}
|
||||
|
||||
#logo h1, #logo h2, #logo a {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
text-transform: lowercase;
|
||||
text-align: center;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
#logo h1 {
|
||||
padding-top: 25px;
|
||||
font-size: 34px;
|
||||
}
|
||||
|
||||
#logo h2 {
|
||||
margin-top: -5px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
|
||||
#footer {
|
||||
clear: both;
|
||||
width: 928px;
|
||||
margin: 0 auto;
|
||||
padding-top: 40px;
|
||||
background: url(/public/images/img11.gif) repeat-x;
|
||||
}
|
||||
|
||||
#footer p {
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.listEntry {
|
||||
color: #909090;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.listEntry > .subject {
|
||||
color: #2582A4;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.listEntrySelected {
|
||||
background: #becf74;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.listEntryHover {
|
||||
background: #8ac6dc;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
#emailContent {
|
||||
padding-bottom: 20px;
|
||||
min-height: 300px;
|
||||
}
|
||||
|
||||
#emailHeader {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
#emailHeader th, #emailHeader td {
|
||||
text-align: left;
|
||||
padding: 0 3px 3px 0;
|
||||
}
|
||||
|
||||
#emailSubject {
|
||||
border-bottom: 1px #606060 solid;
|
||||
margin: 0;
|
||||
width: 617px;
|
||||
}
|
||||
|
||||
#emailBody {
|
||||
color: #000000;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
#emailActions {
|
||||
padding: 5px 0;
|
||||
margin: 0 0 10px 0;
|
||||
}
|
||||
|
||||
#emailActions a {
|
||||
background: #8ac6dc;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#emailActions a:hover {
|
||||
background: #becf74;
|
||||
}
|
||||
|
||||
.errors {
|
||||
background-color: #ffa0a0;
|
||||
color: #333;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
15
themes/integral/templates/Application/Index.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{{set "title" "Inbucket" .}}
|
||||
{{template "header.html" .}}
|
||||
{{template "menu.html" .}}
|
||||
|
||||
<div id="colTwo">
|
||||
{{template "errors.html" .}}
|
||||
|
||||
<p>Inbucket is an email testing service; it will accept email for any email
|
||||
address and make it available to view without a password.</p>
|
||||
<p>To view email for a particular address, enter the username portion
|
||||
of the address into the box on the upper right and click <em>go</em>.</p>
|
||||
</div>
|
||||
|
||||
{{template "footer.html" .}}
|
||||
|
||||
1
themes/integral/templates/Mailbox/Html.html
Normal file
@@ -0,0 +1 @@
|
||||
{{.body}}
|
||||
82
themes/integral/templates/Mailbox/Index.html
Normal file
@@ -0,0 +1,82 @@
|
||||
{{$title := printf "Inbucket for %v" .name}}
|
||||
{{set "title" $title .}}
|
||||
{{template "header.html" .}}
|
||||
{{$name := .name}}
|
||||
<script>
|
||||
function listLoaded() {
|
||||
$('.listEntry').hover(
|
||||
function() {
|
||||
$(this).addClass("listEntryHover")
|
||||
},
|
||||
function() {
|
||||
$(this).removeClass("listEntryHover")
|
||||
}
|
||||
).click(
|
||||
function() {
|
||||
$('.listEntry').removeClass("listEntrySelected")
|
||||
$(this).addClass("listEntrySelected")
|
||||
$('#emailContent').load('/mailbox/show/{{$name}}/' + this.id)
|
||||
}
|
||||
)
|
||||
$("#messageList").slideDown()
|
||||
}
|
||||
|
||||
function loadList() {
|
||||
$('#messageList').load("/mailbox/list/{{$name}}", listLoaded)
|
||||
}
|
||||
|
||||
function reloadList() {
|
||||
$('#messageList').hide()
|
||||
loadList()
|
||||
}
|
||||
|
||||
function listInit() {
|
||||
$("#messageList").hide()
|
||||
loadList()
|
||||
}
|
||||
|
||||
function deleteMessage(id) {
|
||||
$('#emailContent').empty()
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/mailbox/delete/{{$name}}/' + id,
|
||||
success: reloadList
|
||||
})
|
||||
}
|
||||
|
||||
function htmlView(id) {
|
||||
window.open('/mailbox/html/{{$name}}/' + id, '_blank',
|
||||
'width=800,height=600,' +
|
||||
'menubar=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes')
|
||||
}
|
||||
|
||||
function messageSource(id) {
|
||||
window.open('/mailbox/source/{{$name}}/' + id, '_blank',
|
||||
'width=800,height=600,' +
|
||||
'menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no')
|
||||
}
|
||||
|
||||
$(document).ready(listInit)
|
||||
</script>
|
||||
|
||||
<div id="colOne">
|
||||
<div id="logo">
|
||||
<h1><a href="#">inbucket</a></h1>
|
||||
<h2>mail for {{.name}}</h2>
|
||||
</div>
|
||||
<div class="box" style="text-align:center; padding-bottom:10px;">
|
||||
<a href="javascript:reloadList()">Refresh List</a>
|
||||
</div>
|
||||
<div id="messageList"></div>
|
||||
</div>
|
||||
|
||||
<div id="colTwo">
|
||||
{{template "errors.html" .}}
|
||||
|
||||
<div id="emailContent">
|
||||
<p>Select a message at left, or enter a different username into the box on upper right.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{template "footer.html" .}}
|
||||
|
||||
12
themes/integral/templates/Mailbox/List.html
Normal file
@@ -0,0 +1,12 @@
|
||||
{{$name := .name}}
|
||||
{{range .messages}}
|
||||
<div class="box listEntry" id="{{.Id}}">
|
||||
<div class="subject">{{.Subject}}</div>
|
||||
<div class="from">{{.From}}</div>
|
||||
<div class="date">{{friendlyTime .Date}}</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="box">
|
||||
<p style="height: 30px; padding-left: 10px;">No messages!</p>
|
||||
</div>
|
||||
{{end}}
|
||||
21
themes/integral/templates/Mailbox/Show.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<div id="emailActions">
|
||||
<a href="javascript:deleteMessage('{{.message.Id}}');">Delete</a>
|
||||
<a href="javascript:messageSource('{{.message.Id}}');">Source</a>
|
||||
{{if .htmlAvailable}}
|
||||
<a href="javascript:htmlView('{{.message.Id}}');">HTML</a>
|
||||
{{end}}
|
||||
</div>
|
||||
<table id="emailHeader">
|
||||
<tr>
|
||||
<th>From:</th>
|
||||
<td>{{.message.From}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Date:</th>
|
||||
<td>{{.message.Date}}</td>
|
||||
</tr>
|
||||
<table>
|
||||
<div id="emailSubject"><h3>{{.message.Subject}}</h3></div>
|
||||
|
||||
<div id="emailBody">{{.body}}</div>
|
||||
|
||||
10
themes/integral/templates/errors.html
Normal file
@@ -0,0 +1,10 @@
|
||||
{{if .errors}}
|
||||
<div class="errors">
|
||||
<p>Please fix the following errors and resubmit:<p>
|
||||
<ul>
|
||||
{{range .errors}}
|
||||
<li>{{.Message}}</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
{{end}}
|
||||
20
themes/integral/templates/errors/404.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Not found</title>
|
||||
</head>
|
||||
<body>
|
||||
{{if eq .RunMode "dev"}}
|
||||
{{template "errors/404-dev.html" .}}
|
||||
{{else}}
|
||||
{{with .Error}}
|
||||
<h1>
|
||||
{{.Title}}
|
||||
</h1>
|
||||
<p>
|
||||
{{.Description}}
|
||||
</p>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</body>
|
||||
</html>
|
||||
16
themes/integral/templates/errors/500.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Application error</title>
|
||||
</head>
|
||||
<body>
|
||||
{{if eq .RunMode "dev"}}
|
||||
{{template "errors/500-dev.html" .}}
|
||||
{{else}}
|
||||
<h1>Oops, an error occured</h1>
|
||||
<p>
|
||||
This exception has been logged.
|
||||
</p>
|
||||
{{end}}
|
||||
</body>
|
||||
</html>
|
||||
8
themes/integral/templates/footer.html
Normal file
@@ -0,0 +1,8 @@
|
||||
</div>
|
||||
<div id="footer">
|
||||
<p>Inbucket is an open source project hosted at
|
||||
<a href="http://github.com/jhillyerd/inbucket/">github</a>.
|
||||
Design by <a href="http://www.freecsstemplates.org/">FCT</a>.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
34
themes/integral/templates/header.html
Normal file
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<!--
|
||||
Design by Free CSS Templates
|
||||
http://www.freecsstemplates.org
|
||||
Released for free under a Creative Commons Attribution 2.5 License
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>{{.title}}</title>
|
||||
<link href="/public/stylesheets/main.css" rel="stylesheet" type="text/css" />
|
||||
<link rel="shortcut icon" type="image/png" href="/public/images/favicon.png">
|
||||
<script src="/public/js/jquery-1.5.2.min.js" type="text/javascript" charset="utf-8"></script>
|
||||
{{range .moreStyles}}
|
||||
<link rel="stylesheet" type="text/css" href="/public/{{.}}">
|
||||
{{end}}
|
||||
{{range .moreScripts}}
|
||||
<script src="/public/{{.}}" type="text/javascript" charset="utf-8"></script>
|
||||
{{end}}
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<ul id="menu">
|
||||
<li><a href="/" accesskey="1" title="">Home</a></li>
|
||||
<li><a href="/" accesskey="2" title="">About</a></li>
|
||||
</ul>
|
||||
<form id="search" action="/mailbox" method="GET">
|
||||
<fieldset>
|
||||
<input name="name" type="text" id="input1" />
|
||||
<input name="submit" type="submit" id="input2" value="Go" />
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div id="content">
|
||||
6
themes/integral/templates/menu.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<div id="colOne">
|
||||
<div id="logo">
|
||||
<h1><a href="#">inbucket</a></h1>
|
||||
<h2>email testing service</h2>
|
||||
</div>
|
||||
</div>
|
||||