Ghost/core/server/data/meta/asset_url.js
Aileen Nowak 4ba5cc862a 🐛 Blog icon improvements (#8298)
refs #7688

- renders the correct `/favicon.ico` or `/favcicon.png` in `{{ghost_head}}`
- removes an regex issue in `serve-favicon`
2017-04-10 12:04:46 +01:00

54 lines
1.6 KiB
JavaScript

var config = require('../../config'),
settingsCache = require('../../settings/cache'),
utils = require('../../utils');
/**
* Serve either uploaded favicon or default
* @return {string}
*/
function getFaviconUrl() {
if (settingsCache.get('icon')) {
return settingsCache.get('icon').match(/\.ico$/i) ? utils.url.urlJoin(utils.url.getSubdir(), '/favicon.ico') : utils.url.urlJoin(utils.url.getSubdir(), '/favicon.png');
}
return utils.url.urlJoin(utils.url.getSubdir(), '/favicon.ico');
}
function getAssetUrl(path, hasMinFile) {
// CASE: favicon - this is special path with its own functionality
if (path.match(/\/?favicon\.(ico|png)$/)) {
// @TODO, resolve this - we should only be resolving subdirectory and extension.
return getFaviconUrl();
}
// CASE: Build the output URL
// Add subdirectory...
var output = utils.url.urlJoin(utils.url.getSubdir(), '/');
// Optionally add /assets/
if (!path.match(/^public/) && !path.match(/^asset/)) {
output = utils.url.urlJoin(output, 'assets/');
}
// replace ".foo" with ".min.foo" if configured
if (hasMinFile && config.get('useMinFiles') !== false) {
path = path.replace(/\.([^\.]*)$/, '.min.$1');
}
// Add the path for the requested asset
output = utils.url.urlJoin(output, path);
// Ensure we have an assetHash
// @TODO rework this!
if (!config.get('assetHash')) {
config.set('assetHash', utils.generateAssetHash());
}
// Finally add the asset hash to the output URL
output += '?v=' + config.get('assetHash');
return output;
}
module.exports = getAssetUrl;