Merge pull request #1590 from Ribas160/adding_attachments_from_clipboard

Adding attachments from clipboard
This commit is contained in:
El RIDO 2025-07-04 18:45:16 +02:00 committed by GitHub
commit 03e0c81fbf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 41 additions and 11 deletions

View file

@ -3,6 +3,7 @@
## 2.0.0 (not yet released)
* CHANGED: Remove page template (#265)
* FIXED: Name mismatches in attached files (#1584)
* FIXED: Unable to paste attachments from clipboard (#1589)
## 1.7.8 (2025-06-30)
* FIXED: Duplicate attachment for every comment (#1577)

View file

@ -628,6 +628,17 @@ jQuery.PrivateBin = (function($, RawDeflate) {
baseUri = null;
};
/**
* check if bootstrap5 object detected
*
* @name Helper.isBootstrap5
* @returns {Boolean}
*/
me.isBootstrap5 = function ()
{
return typeof bootstrap !== 'undefined';
};
return me;
})();
@ -3421,16 +3432,17 @@ jQuery.PrivateBin = (function($, RawDeflate) {
function addClipboardEventHandler() {
$(document).on('paste', function (event) {
const items = (event.clipboardData || event.originalEvent.clipboardData).items;
const lastItem = items[items.length - 1];
if (lastItem.kind === 'file') {
if (TopNav.isAttachmentReadonly()) {
event.stopPropagation();
event.preventDefault();
return false;
} else {
readFileData(lastItem.getAsFile());
}
const files = [...items]
.filter(item => item.kind === 'file')
.map(item => item.getAsFile());
if (TopNav.isAttachmentReadonly()) {
event.stopPropagation();
event.preventDefault();
return false;
}
readFileData(files);
});
}
@ -4631,7 +4643,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
// visually indicate file uploaded
const $attachDropdownToggle = $attach.children('.dropdown-toggle');
if ($attachDropdownToggle.attr('aria-expanded') === 'false') {
$attachDropdownToggle.click();
if (Helper.isBootstrap5()) {
new bootstrap.Dropdown($attachDropdownToggle).toggle();
} else {
$attachDropdownToggle.click();
}
}
$fileWrap.addClass('highlight');
setTimeout(function () {

View file

@ -316,5 +316,18 @@ describe('Helper', function () {
return $.PrivateBin.Helper.formatBytes(1234567) === '1.18 MiB';
});
});
describe('isBootstrap5', function () {
jsc.property('Bootstrap 5 has been detected', function () {
global.bootstrap = {};
return $.PrivateBin.Helper.isBootstrap5() === true;
});
jsc.property('Bootstrap 5 has not been detected', function () {
delete global.bootstrap;
return $.PrivateBin.Helper.isBootstrap5() === false;
});
});
});

View file

@ -118,7 +118,7 @@ class Configuration
'js/kjua-0.9.0.js' => 'sha512-CVn7af+vTMBd9RjoS4QM5fpLFEOtBCoB0zPtaqIDC7sF4F8qgUSRFQQpIyEDGsr6yrjbuOLzdf20tkHHmpaqwQ==',
'js/legacy.js' => 'sha512-UxW/TOZKon83n6dk/09GsYKIyeO5LeBHokxyIq+r7KFS5KMBeIB/EM7NrkVYIezwZBaovnyNtY2d9tKFicRlXg==',
'js/prettify.js' => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==',
'js/privatebin.js' => 'sha512-lP3oQM8eZ6HNCUUZC2HvmNTO3RRNw7WPCCWbVVr0e9DHvgprYr6tYtDYzmWdpD6rzjHOgekHhFMO8LIO9ufyug==',
'js/privatebin.js' => 'sha512-9X1Ns+w/WPlWde118Mbl1UFDPsFmBcXK2zr6ny7oDOuZMVP1hFCPzXjKbC+59xDQW0Q+NmyT4NC6/5B6UzkkDw==',
'js/purify-3.2.6.js' => 'sha512-zqwL4OoBLFx89QPewkz4Lz5CSA2ktU+f31fuECkF0iK3Id5qd3Zpq5dMby8KwHjIEpsUgOqwF58cnmcaNem0EA==',
'js/rawinflate-0.3.js' => 'sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==',
'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==',