wrapImagesInLinks with <a download> attribute

if the `src` of the `img` does not have an extension, most browsers will trigger a download with whatever filename is set, also without an extension, so when it's opened in any OS, it wont have a default application to open it with.

So, In this case, if the `alt` attribute has an extension (meaning if it looks like filename) - we use that with the html5 [`download` attr](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download)

The PR does not affect any src if they have an extension.
v1.18.x
Aziz Khoury 8 years ago committed by GitHub
parent b6134b160e
commit 6682e048ea

@ -97,19 +97,25 @@ define('forum/topic/images', [
Images.wrapImagesInLinks = function (posts) { Images.wrapImagesInLinks = function (posts) {
posts.find('[component="post/content"] img:not(.emoji)').each(function () { posts.find('[component="post/content"] img:not(.emoji)').each(function () {
var $this = $(this); var $this = $(this);
var src = $this.attr('src'); var src = $this.attr('src') || '';
var alt = $this.attr('alt') || '';
var suffixRegex = /-resized(\.[\w]+)?$/; var suffixRegex = /-resized(\.[\w]+)?$/;
if (src === 'about:blank') { if (src === 'about:blank') {
return; return;
} }
if (utils.isRelativeUrl(src) && suffixRegex.test(src)) { if (utils.isRelativeUrl(src) && suffixRegex.test(src)) {
src = src.replace(suffixRegex, '$1'); src = src.replace(suffixRegex, '$1');
} }
var srcExt = src.split('.').slice(1).pop();
var altFilename = alt.split('/').pop();
var altExt = altFilename.split('.').slice(1).pop();
if (!$this.parent().is('a')) { if (!$this.parent().is('a')) {
$this.wrap('<a href="' + src + '" target="_blank">'); $this.wrap('<a href="' + src + '" '
+ (!srcExt && altExt ? ' download="' + altFilename + '" ' : '')
+ ' target="_blank" >');
} }
}); });
}; };

Loading…
Cancel
Save