From a45c545ee30db7d8e98f6ddd276fe736031d97ac Mon Sep 17 00:00:00 2001 From: Garvin Hicking Date: Thu, 17 Oct 2019 13:14:00 +0200 Subject: [PATCH] [TASK] Uses single-asset insertion when only one asset has been selected to be inserted See #651. Backported from master branch. Signed-off-by: Thomas Hochstein --- docs/NEWS | 6 ++++ .../2k11/admin/serendipity_editor.js.tpl | 33 ++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/docs/NEWS b/docs/NEWS index 052dc541..1b0b2769 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -10,6 +10,12 @@ Version 2.3.3-beta1 () published blog entries and ability to prepend a mail body. Also fixes missing "keep strip tags" configuration option + * #651: When using checkboxes to insert multiple media files, if only + one asset has been selected, do not use the gallery mode, + but instead single-asset view. Also improves to click the title + of an asset to select its checkbox, and hides the 'Insert all' + button when no assets are selected. (garvinhicking) + * Fix: [bbcode] Get roman numerals working in bbcode plugin. Thanks to Fabien Chabreuil! diff --git a/templates/2k11/admin/serendipity_editor.js.tpl b/templates/2k11/admin/serendipity_editor.js.tpl index 41cd6b67..c3a89e79 100644 --- a/templates/2k11/admin/serendipity_editor.js.tpl +++ b/templates/2k11/admin/serendipity_editor.js.tpl @@ -1387,8 +1387,39 @@ $(function() { $('.multidelete, .multiinsert').click(function() { var $el = $(this); serendipity.highlightComment($el.attr('data-multidelid'), $el.attr('checked')); - $('#media_galleryinsert').fadeIn(); + var selectionAmount = $('.multidelete:checked, .multiinsert:checked').length; + if (selectionAmount > 0) { + $('#media_galleryinsert').fadeIn(); + } else { + $('#media_galleryinsert').fadeOut(); + } }); + + // Also marks checkbox when header is clicked + $('.media_file h3').on('click', function() { + $(this).parent().find('.multiinsert').click(); + }); + + // When clicking the 'Insert all' button, check whether only one or multiple + // images are selected + $('#media_galleryinsert .image_insert').on('click', function(e) { + var selectionAmount = $('.multidelete:checked, .multiinsert:checked').length; + if (selectionAmount == 0) { + e.preventDefault(); + return false; + } + + // Actually do a single insert + if (selectionAmount == 1) { + e.preventDefault(); + var actualTargetElement = $('.multidelete:checked, .multiinsert:checked').closest('.media_file').find('.media_file_preview a').first(); + // This below is a hack. Triggering actualTargetElement.click() does not work. Probably because MFP overrides click events within a modal popup. + // So we need to do something dirty and directly access the location href. Don't tell my mom. + location.href = actualTargetElement.attr('href'); + return false; + } + }); + // hide gallery insert button until an image is selected $('#media_galleryinsert').hide();