diff --git a/public/src/admin/settings/general.js b/public/src/admin/settings/general.js index 83ecff7907..0c36db401c 100644 --- a/public/src/admin/settings/general.js +++ b/public/src/admin/settings/general.js @@ -14,6 +14,9 @@ define('admin/settings/general', ['admin/settings'], function(Settings) { $('button[data-action="removeTouchIcon"]').on('click', function() { $('input[data-field="brand:touchIcon"]').val(''); }); + $('button[data-action="removeOgImage"]').on('click', function() { + $('input[data-field="removeOgImage"]').val(''); + }); }; return Module; diff --git a/src/controllers/admin/uploads.js b/src/controllers/admin/uploads.js index 0affec8f6b..90dae8a243 100644 --- a/src/controllers/admin/uploads.js +++ b/src/controllers/admin/uploads.js @@ -1,13 +1,13 @@ "use strict"; -var fs = require('fs'), - path = require('path'), - async = require('async'), - nconf = require('nconf'), - winston = require('winston'), - file = require('../../file'), - image = require('../../image'), - plugins = require('../../plugins'); +var fs = require('fs'); +var path = require('path'); +var async = require('async'); +var nconf = require('nconf'); +var winston = require('winston'); +var file = require('../../file'); +var image = require('../../image'); +var plugins = require('../../plugins'); var allowedImageTypes = ['image/png', 'image/jpeg', 'image/pjpeg', 'image/jpg', 'image/gif', 'image/svg+xml']; @@ -124,6 +124,10 @@ uploadsController.uploadDefaultAvatar = function(req, res, next) { upload('avatar-default', req, res, next); }; +uploadsController.uploadOgImage = function(req, res, next) { + upload('og:image', req, res, next); +}; + function upload(name, req, res, next) { var uploadedFile = req.files.files[0]; diff --git a/src/controllers/categories.js b/src/controllers/categories.js index 7e3e4b0efe..642467c6b0 100644 --- a/src/controllers/categories.js +++ b/src/controllers/categories.js @@ -25,14 +25,14 @@ categoriesController.list = function(req, res, next) { content: 'website' }]; - if (meta.config['brand:logo']) { - var brandLogo = meta.config['brand:logo']; - if (!brandLogo.startsWith('http')) { - brandLogo = nconf.get('url') + brandLogo; + var ogImage = meta.config['og:image'] || meta.config['brand:logo'] || ''; + if (ogImage) { + if (!ogImage.startsWith('http')) { + ogImage = nconf.get('url') + ogImage; } res.locals.metaTags.push({ property: 'og:image', - content: brandLogo + content: ogImage }); } diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 02a9017b75..74604c0085 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -170,8 +170,10 @@ topicsController.get = function(req, res, callback) { var ogImageUrl = ''; if (topicData.thumb) { ogImageUrl = topicData.thumb; - } else if (postAtIndex && postAtIndex.user && postAtIndex.user.picture){ + } else if (postAtIndex && postAtIndex.user && postAtIndex.user.picture) { ogImageUrl = postAtIndex.user.picture; + } else if (meta.config['og:image']) { + ogImageUrl = meta.config['og:image']; } else if (meta.config['brand:logo']) { ogImageUrl = meta.config['brand:logo']; } else { diff --git a/src/routes/admin.js b/src/routes/admin.js index 6ce4fb5f48..66391053a7 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -15,6 +15,7 @@ function apiRoutes(router, middleware, controllers) { router.post('/uploadfavicon', middlewares, controllers.admin.uploads.uploadFavicon); router.post('/uploadTouchIcon', middlewares, controllers.admin.uploads.uploadTouchIcon); router.post('/uploadlogo', middlewares, controllers.admin.uploads.uploadLogo); + router.post('/uploadOgImage', middlewares, controllers.admin.uploads.uploadOgImage); router.post('/upload/sound', middlewares, controllers.admin.uploads.uploadSound); router.post('/uploadDefaultAvatar', middlewares, controllers.admin.uploads.uploadDefaultAvatar); } diff --git a/src/views/admin/settings/general.tpl b/src/views/admin/settings/general.tpl index fa41b38f61..79cba3caf7 100644 --- a/src/views/admin/settings/general.tpl +++ b/src/views/admin/settings/general.tpl @@ -50,6 +50,7 @@ +