From 6682e048ea72aa1c5b25a56fc0eaf12a9d131c1b Mon Sep 17 00:00:00 2001 From: Aziz Khoury Date: Wed, 22 Mar 2017 12:19:31 +0200 Subject: [PATCH] wrapImagesInLinks with 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. --- public/src/client/topic/images.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/public/src/client/topic/images.js b/public/src/client/topic/images.js index cd44dd0914..20981f6b80 100644 --- a/public/src/client/topic/images.js +++ b/public/src/client/topic/images.js @@ -97,19 +97,25 @@ define('forum/topic/images', [ Images.wrapImagesInLinks = function (posts) { posts.find('[component="post/content"] img:not(.emoji)').each(function () { var $this = $(this); - var src = $this.attr('src'); + var src = $this.attr('src') || ''; + var alt = $this.attr('alt') || ''; var suffixRegex = /-resized(\.[\w]+)?$/; if (src === 'about:blank') { return; } - + if (utils.isRelativeUrl(src) && suffixRegex.test(src)) { 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')) { - $this.wrap(''); + $this.wrap(''); } }); };