diff --git a/public/src/forum/admin/settings.js b/public/src/forum/admin/settings.js
index 44994930b6..d241508fdc 100644
--- a/public/src/forum/admin/settings.js
+++ b/public/src/forum/admin/settings.js
@@ -82,7 +82,7 @@ define(['uploader'], function(uploader) {
uploader.hideAlerts();
});
- $('#uploadLogoBtn').on('click', function() {
+ $('#uploadFaviconBtn').on('click', function() {
uploader.open(RELATIVE_PATH + '/admin/uploadfavicon', function() {
$('#favicon').attr('src', './../favicon.ico?v=' + new Date().getTime());
});
diff --git a/public/templates/admin/settings.tpl b/public/templates/admin/settings.tpl
index 325d27a71b..3b9d7b973e 100644
--- a/public/templates/admin/settings.tpl
+++ b/public/templates/admin/settings.tpl
@@ -18,7 +18,7 @@
-
+
diff --git a/src/routes/admin.js b/src/routes/admin.js
index 495b341a31..40c3364a36 100644
--- a/src/routes/admin.js
+++ b/src/routes/admin.js
@@ -145,6 +145,53 @@ var nconf = require('nconf'),
is.pipe(os);
});
+ app.post('/uploadfavicon', function(req, res) {
+ if (!req.user)
+ return res.redirect('/403');
+
+ var allowedTypes = ['image/x-icon', 'image/vnd.microsoft.icon'];
+
+ if (allowedTypes.indexOf(req.files.userPhoto.type) === -1) {
+ res.send({
+ error: 'You can only upload icon file type!'
+ });
+ return;
+ }
+
+ var tempPath = req.files.userPhoto.path;
+ var extension = path.extname(req.files.userPhoto.name);
+
+ if (!extension) {
+ res.send({
+ error: 'Error uploading file! Error : Invalid extension!'
+ });
+ return;
+ }
+
+ var filename = 'favicon.ico';
+ var uploadPath = path.join(nconf.get('base_dir'), 'public', filename);
+
+ winston.info('Attempting upload to: ' + uploadPath);
+
+ var is = fs.createReadStream(tempPath);
+ var os = fs.createWriteStream(uploadPath);
+
+ is.on('end', function () {
+ fs.unlinkSync(tempPath);
+
+ res.json({
+ path: nconf.get('upload_url') + filename
+ });
+ });
+
+ os.on('error', function (err) {
+ fs.unlinkSync(tempPath);
+ winston.err(err);
+ });
+
+ is.pipe(os);
+ });
+
app.post('/uploadlogo', function(req, res) {
if (!req.user)