+@font-face {
+ font-family: 'ChristopherhandRegular';
+ src: url('comesinhandy-webfont.eot');
+ src: url('comesinhandy-webfont.eot?#iefix') format('embedded-opentype'),
+ url('comesinhandy-webfont.woff') format('woff'),
+ url('comesinhandy-webfont.ttf') format('truetype');
+ font-weight: normal;
+ font-style: normal;
+}
body {
background: url('/static/images/bg.jpg') repeat-x scroll 0 0 #F5F6F7;
padding-top:45px;
section {
margin-top:30px;
}
-.motto {
- color: #999999;
- font-size:13px;
- text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);
+.navbar .brand {
+ padding: 2px 20px 4px;
+}
+.logo {
+ font-family: 'ChristopherhandRegular';
+}
+.navbar .brand .logo {
+ height: 34px;
+ padding-left: 68px;
+ line-height: 40px;
+ background: url('/static/images/logo.png') no-repeat 0px -54px;
+ font-size: 25px;
+}
+.page-header .logo {
+ display: inline-block;
+ height: 54px;
+ padding-left: 109px;
+ line-height: 68px;
+ background: url('/static/images/logo.png') no-repeat 0 0;
+ font-size: 34px;
+ color: #0088CC;
}
.navbar .navbar-text {
line-height:19px;
-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);
box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);
}
-.page-header h1 {
- margin-bottom:8px;
- line-height: 36px;
-}
-.page-header h1 small {
- line-height: 1;
- color: #BFBFBF;
-}
input {
margin-bottom: 0;
}
display: inline-block;
}
#total-tracks {
- float:right;
+ float: right;
color: #BFBFBF;
- margin-top:22px;
+ margin-top: 34px;
}
#cassette {
- margin-top:17px;
+ margin-top:22px;
height: 137px;
background: url('/static/images/cassette.png') no-repeat 0 0;
}
margin-left: 77px;
}
#volume {
- height:154px;
+ height:159px;
}
#volume-button, #volume-slider, #volume-total, #volume-current, #volume-handle {
position: absolute;
// Setting up Express
var sessionstore = new redisstore({client:usersdb});
-var http = express.createServer();
+var app = express.createServer();
// Configuration
-http.use(express.static(__dirname + '/public'));
-http.use(express.bodyParser());
-http.use(express.cookieParser());
-http.use(express.session({secret:config.sessionsecret,store:sessionstore}));
-http.set("view options", {layout:false});
-http.set('view engine', 'jade');
+app.use(express.static(__dirname + '/public'), {maxAge: 2592000000});
+app.use(express.favicon(__dirname + '/public/static/images/favicon.ico', {maxAge: 2592000000}));
+app.use(express.bodyParser());
+app.use(express.cookieParser());
+app.use(express.session({secret:config.sessionsecret,store:sessionstore}));
+app.set("view options", {layout:false});
+app.set('view engine', 'jade');
// Routes
-http.get("/", function(req, res) {
+app.get("/", function(req, res) {
if (req.session.user) {
res.local('loggedin', req.session.user.replace(/&/g, "&"));
}
res.render("index", {rooms:config.rooms});
});
-http.get("/signup", function(req, res) {
+app.get("/signup", function(req, res) {
var captcha = new Captcha();
req.session.captchacode = captcha.getCode();
res.render("signup", {captchaurl:captcha.toDataURL()});
});
};
-http.post("/signup",
+app.post("/signup",
form(
form.filter("username").trim().required().not(/binb/, "is reserved")
.is(/^[^\x00-\x1F\x7F]{1,15}$/, "1 to 15 characters required"),
}
);
-http.get("/login", function(req, res) {
+app.get("/login", function(req, res) {
res.render("login");
});
-http.post("/login",
+app.post("/login",
form(
form.filter("username").trim().required(),
form.filter("password").trim().required()
}
);
-http.get("/logout", function(req, res) {
+app.get("/logout", function(req, res) {
req.session.destroy(function() {
res.redirect("/");
});
};
};
-http.get("/artworks", function(req, res) {
+app.get("/artworks", function(req, res) {
var callitems = [];
for (var i=0; i<config.rooms.length; i++) {
for (var j=0; j<6; j++) {
});
});
-http.get("/:room", function(req, res) {
+app.get("/:room", function(req, res) {
if (config.rooms.indexOf(req.params.room) !== -1) {
if (req.session.user) {
res.local('loggedin', req.session.user.replace(/&/g, "&"));
}
});
-http.get("/user/*", function(req, res) {
+app.get("/user/*", function(req, res) {
var key = "user:"+req.params[0];
usersdb.exists(key, function(err, data) {
if (data === 1) {
});
// Starting HTTP server
-http.listen(config.port);
+app.listen(config.port);
// Setting up Socket.IO
-var io = require("socket.io").listen(http);
+var io = require("socket.io").listen(app);
io.enable('browser client minification'); // send minified client
io.enable('browser client etag'); // apply etag caching logic based on version number