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)