var zlib = require("zlib"); | var zlib = require("zlib"); | ||||
var browserPrefix = require("browser-prefix"); | var browserPrefix = require("browser-prefix"); | ||||
var log = require("mlogger"); | var log = require("mlogger"); | ||||
var jshint = require("jshint").JSHINT; | |||||
var minify = require("./minify.js"); | var minify = require("./minify.js"); | ||||
var includeHtml = require("./includeHtml.js"); | var includeHtml = require("./includeHtml.js"); | ||||
ep.mimeType = "text/html"; | ep.mimeType = "text/html"; | ||||
if (conf.minify) ep.str = minify.html(ep.str); | if (conf.minify) ep.str = minify.html(ep.str); | ||||
} else if (/\.js$/.test(ep.path)) { | } else if (/\.js$/.test(ep.path)) { | ||||
jshint.errors = []; | |||||
jshint(ep.str); | |||||
jshint.errors.forEach(function(err) { | |||||
if (!err) | |||||
return; | |||||
log.warn( | |||||
conf.dir.web+"/"+ep.path+": "+ | |||||
"Line "+err.line+": "+ | |||||
err.reason | |||||
); | |||||
}); | |||||
ep.mimeType = "application/javascript"; | ep.mimeType = "application/javascript"; | ||||
if (conf.minify) ep.str = minify.js(ep.str); | |||||
if (conf.minify && !jshint.errors) ep.str = minify.js(ep.str); | |||||
} | } | ||||
return ep; | return ep; | ||||
log.error("File not found: "+conf.dir.web+"/"+ep.path); | log.error("File not found: "+conf.dir.web+"/"+ep.path); | ||||
errs = true; | errs = true; | ||||
} else { | } else { | ||||
log.warn(conf.dir.web+"/"+ep.path); | |||||
throw err; | throw err; | ||||
} | } | ||||
} | } |
"browser-prefix": "^0.1.0", | "browser-prefix": "^0.1.0", | ||||
"formidable": "^1.0.17", | "formidable": "^1.0.17", | ||||
"html-minifier": "^0.7.2", | "html-minifier": "^0.7.2", | ||||
"jshint": "^2.8.0", | |||||
"mlogger": "^1.1.0", | "mlogger": "^1.1.0", | ||||
"pg": "^4.4.0", | "pg": "^4.4.0", | ||||
"scrypt": "^4.0.7", | "scrypt": "^4.0.7", |
"October", | "October", | ||||
"November", | "November", | ||||
"December" | "December" | ||||
] | |||||
]; | |||||
window.util = {}; | window.util = {}; | ||||
notify.timeout = setTimeout(function() { | notify.timeout = setTimeout(function() { | ||||
elem.removeClass("active"); | elem.removeClass("active"); | ||||
}, 5000); | }, 5000); | ||||
} | |||||
}; | |||||
$(document).ready(function() { | $(document).ready(function() { | ||||
$("#notify-box").on("mouseenter", function() { | $("#notify-box").on("mouseenter", function() { | ||||
clearTimeout(util.notify.timeout); | clearTimeout(util.notify.timeout); | ||||
util.error = function(body) { | util.error = function(body) { | ||||
util.notify("Error: "+body); | util.notify("Error: "+body); | ||||
} | |||||
}; | |||||
util.htmlEntities = function(str) { | util.htmlEntities = function(str) { | ||||
return str.replace(/&/g, "&") | return str.replace(/&/g, "&") | ||||
.replace(/</g, "<") | .replace(/</g, "<") | ||||
.replace(/>/g, ">") | .replace(/>/g, ">") | ||||
.replace(/"/g, """); | .replace(/"/g, """); | ||||
} | |||||
}; | |||||
util.api = function(name, data, cb, getXhr) { | util.api = function(name, data, cb, getXhr) { | ||||
var fd = new FormData(); | var fd = new FormData(); | ||||
else | else | ||||
cb(res.error); | cb(res.error); | ||||
}); | }); | ||||
} | |||||
}; | |||||
util.async = function(n, cb) { | util.async = function(n, cb) { | ||||
if (typeof n !== "number") | if (typeof n !== "number") | ||||
cb(res); | cb(res); | ||||
else | else | ||||
n -= 1; | n -= 1; | ||||
} | |||||
} | |||||
}; | |||||
}; | |||||
util.pad = function(str, length, padChar) { | util.pad = function(str, length, padChar) { | ||||
var missing = (length - str.length) + 1; | var missing = (length - str.length) + 1; | ||||
return str; | return str; | ||||
return new Array(missing).join(padChar) + str; | return new Array(missing).join(padChar) + str; | ||||
} | |||||
}; | |||||
util.dateToString = function(date) { | util.dateToString = function(date) { | ||||
var day = util.pad(date.getDate().toString(), 2, "0"); | var day = util.pad(date.getDate().toString(), 2, "0"); | ||||
date.getFullYear()+", "+ | date.getFullYear()+", "+ | ||||
util.pad(date.getHours().toString(), 2, "0")+":"+ | util.pad(date.getHours().toString(), 2, "0")+":"+ | ||||
util.pad(date.getMinutes().toString(), 2, "0"); | util.pad(date.getMinutes().toString(), 2, "0"); | ||||
} | |||||
}; | |||||
util.prevent = function(evt) { | util.prevent = function(evt) { | ||||
evt.preventDefault(); | evt.preventDefault(); | ||||
evt.stopPropagation(); | evt.stopPropagation(); | ||||
} | |||||
}; | |||||
util.redirect = function(url, timeout) { | util.redirect = function(url, timeout) { | ||||
setTimeout(function() { | setTimeout(function() { | ||||
location.href = url; | location.href = url; | ||||
}, timeout || 1000); | }, timeout || 1000); | ||||
} | |||||
}; | |||||
window.display = {}; | window.display = {}; | ||||
util.notify("Logged In", "You are now logged in."); | util.notify("Logged In", "You are now logged in."); | ||||
}); | }); | ||||
} | |||||
}; | |||||
display.logIn = function() { | display.logIn = function() { | ||||
util.api("template?navbar-login", {}, function(err, res) { | util.api("template?navbar-login", {}, function(err, res) { | ||||
util.notify("Logged Out", "You are now logged out."); | util.notify("Logged Out", "You are now logged out."); | ||||
}); | }); | ||||
} | |||||
}; | |||||
$(document).ready(function() { | $(document).ready(function() { | ||||
$("#login-form").on("submit", function(evt) { | $("#login-form").on("submit", function(evt) { |
'<div class="progress-bar"></div>'+ | '<div class="progress-bar"></div>'+ | ||||
'<button class="btn btn-default delete" onclick="uploaderDelete(this.parentNode)">X</button>'+ | '<button class="btn btn-default delete" onclick="uploaderDelete(this.parentNode)">X</button>'+ | ||||
'<img class="thumbnail" src="'+f.thumbnail+'">'+ | '<img class="thumbnail" src="'+f.thumbnail+'">'+ | ||||
'<span class="name">'+util.htmlEntities(f.name)+'</span>'+ | |||||
'<input class="name" value="'+util.htmlEntities(f.name)+'">'+ | |||||
'</li>' | '</li>' | ||||
); | ); | ||||
}); | }); | ||||
var inputFiles = evt.target.files; | var inputFiles = evt.target.files; | ||||
for (var i = 0; i < inputFiles.length; ++i) (function() { | |||||
function createThumbnail(i) { | |||||
var f = inputFiles[i]; | var f = inputFiles[i]; | ||||
f.thumbnail = ""; | f.thumbnail = ""; | ||||
reader.onload = function(evt) { | reader.onload = function(evt) { | ||||
f.thumbnail = reader.result; | f.thumbnail = reader.result; | ||||
draw(files); | draw(files); | ||||
} | |||||
}; | |||||
files.push(inputFiles[i]); | files.push(inputFiles[i]); | ||||
})(); | |||||
} | |||||
for (var i = 0; i < inputFiles.length; ++i) { | |||||
createThumbnail(i); | |||||
} | |||||
draw(files); | draw(files); | ||||
}); | }); | ||||
var index = elem.getAttribute("data-index"); | var index = elem.getAttribute("data-index"); | ||||
delete files[index]; | delete files[index]; | ||||
draw(files); | draw(files); | ||||
} | |||||
}; | |||||
//Upload things when the upload button is clicked | //Upload things when the upload button is clicked | ||||
$("#uploader-upload").on("click", function(evt) { | $("#uploader-upload").on("click", function(evt) { |