mirror of https://github.com/xwiki-labs/cryptpad
Use new asynchrnous clipboard API when available
This commit is contained in:
parent
6f3c8240ad
commit
e5a80afee7
|
@ -5,6 +5,8 @@ CKEDITOR.editorConfig = function( config ) {
|
|||
config.needsBrFiller= fixThings;
|
||||
config.needsNbspFiller= fixThings;
|
||||
|
||||
config.disableObjectResizing = true;
|
||||
|
||||
config.removeButtons= 'Source,Maximize';
|
||||
// magicline plugin inserts html crap into the document which is not part of the
|
||||
// document itself and causes problems when it's sent across the wire and reflected back
|
||||
|
|
|
@ -364,11 +364,10 @@ define([
|
|||
var copyToClipboard = (content) => {
|
||||
var button = primary(Messages.copyToClipboard, () => {
|
||||
var toCopy = JSON.stringify(content, null, 2);
|
||||
if (Clipboard.copy.multiline(toCopy)) {
|
||||
Clipboard.copy(toCopy, (err) => {
|
||||
if (err) { return UI.warn(Messages.error); }
|
||||
UI.log(Messages.genericCopySuccess);
|
||||
} else {
|
||||
UI.warn(Messages.error);
|
||||
}
|
||||
});
|
||||
});
|
||||
return button;
|
||||
};
|
||||
|
@ -505,11 +504,10 @@ define([
|
|||
UI.confirm(table, yes => {
|
||||
if (!yes) { return; }
|
||||
var content = P.join('\n');
|
||||
if (Clipboard.copy.multiline(content)) {
|
||||
Clipboard.copy(content, (err) => {
|
||||
if (err) { return UI.warn(Messages.error); }
|
||||
UI.log(Messages.genericCopySuccess);
|
||||
} else {
|
||||
UI.warn(Messages.error);
|
||||
}
|
||||
});
|
||||
}, {
|
||||
wide: true,
|
||||
ok: Messages.copyToClipboard,
|
||||
|
@ -811,11 +809,10 @@ define([
|
|||
UI.confirm(tableObj.table, (yes) => {
|
||||
if (!yes) { return; }
|
||||
var content = result.map(line => JSON.stringify(line)).join('\n');
|
||||
if (Clipboard.copy.multiline(content)) {
|
||||
Clipboard.copy(content, (err) => {
|
||||
if (err) { return UI.warn(Messages.error); }
|
||||
UI.log(Messages.genericCopySuccess);
|
||||
} else {
|
||||
UI.warn(Messages.error);
|
||||
}
|
||||
});
|
||||
}, {
|
||||
wide: true,
|
||||
ok: Messages.copyToClipboard,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
define(['jquery'], function ($) {
|
||||
var Clipboard = {};
|
||||
|
||||
var copy = function (text, multiline) {
|
||||
var oldCopy = function (text, multiline) {
|
||||
var $ta = $('<input>', {
|
||||
type: 'text',
|
||||
}).val(text);
|
||||
|
@ -32,13 +32,20 @@ define(['jquery'], function ($) {
|
|||
};
|
||||
|
||||
// copy arbitrary text to the clipboard
|
||||
// return boolean indicating success
|
||||
Clipboard.copy = function (text) {
|
||||
return copy(text);
|
||||
};
|
||||
|
||||
Clipboard.copy.multiline = function (text) {
|
||||
return copy(text, true);
|
||||
// call back boolean indicating success
|
||||
Clipboard.copy = function (text, cb) {
|
||||
if (!navigator || !navigator.clipboard || !navigator.clipboard.writeText) {
|
||||
return void setTimeout(() => {
|
||||
var success = oldCopy(text, true);
|
||||
cb(!success);
|
||||
});
|
||||
}
|
||||
navigator.clipboard.writeText(text).then(() => {
|
||||
cb();
|
||||
}).catch((err) => {
|
||||
console.warn(err);
|
||||
cb(err);
|
||||
});
|
||||
};
|
||||
|
||||
return Clipboard;
|
||||
|
|
|
@ -249,8 +249,9 @@ define([
|
|||
name: Messages.share_copyProfileLink,
|
||||
onClick: function () {
|
||||
var profile = data.profile ? (origin + '/profile/#' + data.profile) : '';
|
||||
var success = Clipboard.copy(profile);
|
||||
if (success) { UI.log(Messages.shareSuccess); }
|
||||
Clipboard.copy(profile, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
},
|
||||
keys: [13]
|
||||
}]
|
||||
|
@ -535,8 +536,9 @@ define([
|
|||
name: Messages.team_inviteLinkCopy,
|
||||
onClick: function () {
|
||||
if (!href) { return; }
|
||||
var success = Clipboard.copy(href);
|
||||
if (success) { UI.log(Messages.shareSuccess); }
|
||||
Clipboard.copy(href, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
},
|
||||
keys: []
|
||||
}];
|
||||
|
|
|
@ -462,8 +462,9 @@ define([
|
|||
var v = opts.getLinkValue({
|
||||
embed: Util.isChecked($link.find('#cp-share-embed'))
|
||||
});
|
||||
var success = Clipboard.copy(v);
|
||||
if (success) { UI.log(Messages.shareSuccess); }
|
||||
Clipboard.copy(v, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
},
|
||||
keys: [13]
|
||||
}, {
|
||||
|
@ -569,8 +570,9 @@ define([
|
|||
onClick: function () {
|
||||
Feedback.send('SHARE_EMBED');
|
||||
var v = opts.getEmbedValue();
|
||||
var success = Clipboard.copy(v);
|
||||
if (success) { UI.log(Messages.shareSuccess); }
|
||||
Clipboard.copy(v, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
},
|
||||
keys: [13]
|
||||
}];
|
||||
|
@ -958,9 +960,9 @@ define([
|
|||
iconClass: '.fa.fa-link',
|
||||
onClick: function () {
|
||||
var v = opts.getLinkValue();
|
||||
var success = Clipboard.copy(v);
|
||||
if (success) { UI.log(Messages.shareSuccess);
|
||||
}
|
||||
Clipboard.copy(v, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
},
|
||||
keys: [13]
|
||||
}
|
||||
|
@ -1004,8 +1006,9 @@ define([
|
|||
iconClass: '.fa.fa-link',
|
||||
onClick: function () {
|
||||
var v = common.getMediatagFromHref(opts.fileData);
|
||||
var success = Clipboard.copy(v);
|
||||
if (success) { UI.log(Messages.shareSuccess); }
|
||||
Clipboard.copy(v, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
},
|
||||
keys: [13]
|
||||
}];
|
||||
|
|
|
@ -1985,8 +1985,9 @@ define([
|
|||
require(['/common/clipboard.js'], function (Clipboard) {
|
||||
var url = window.location.origin +
|
||||
Utils.Hash.hashToHref(hashes.viewHash, 'form');
|
||||
var success = Clipboard.copy(url);
|
||||
cb(success);
|
||||
Clipboard.copy(url, (err) => {
|
||||
cb(!err);
|
||||
});
|
||||
});
|
||||
});
|
||||
sframeChan.on('EV_OPEN_VIEW_URL', function () {
|
||||
|
|
|
@ -114,8 +114,9 @@ define([
|
|||
}).append(h('i.fa.fa-shhare-alt'))
|
||||
.append(h('span', Messages.shareButton))
|
||||
.click(function () {
|
||||
var success = Clipboard.copy(url);
|
||||
if (success) { UI.log(Messages.shareSuccess); }
|
||||
Clipboard.copy(url, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
}).appendTo($container);
|
||||
};
|
||||
|
||||
|
@ -521,8 +522,9 @@ define([
|
|||
var metadataMgr = APP.common.getMetadataMgr();
|
||||
var privateData = metadataMgr.getPrivateData();
|
||||
var url = Hash.getPublicSigningKeyString(privateData.origin, data.name, data.edPublic);
|
||||
var success = Clipboard.copy(url);
|
||||
if (success) { UI.log(Messages.genericCopySuccess); }
|
||||
Clipboard.copy(url, (err) => {
|
||||
if (!err) { UI.log(Messages.genericCopySuccess); }
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -82,11 +82,10 @@ define([
|
|||
|
||||
$copyProof.click(function () {
|
||||
if (!proofStr) { return; }
|
||||
if (Clipboard.copy.multiline(proofStr)) {
|
||||
UI.log(Messages.genericCopySuccess);
|
||||
} else {
|
||||
Clipboard.copy(proofStr, (err) => {
|
||||
if (!err) { return UI.log(Messages.genericCopySuccess); }
|
||||
UI.warn(Messages.error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var blockKeys, blockHash, uname;
|
||||
|
|
|
@ -48,11 +48,10 @@ define([
|
|||
};
|
||||
|
||||
var copyToClipboard = function () {
|
||||
if (Clipboard.copy.multiline(getReportContent())) {
|
||||
Clipboard.copy(getReportContent(), (err) => {
|
||||
if (err) { return UI.warn(Messages.error); }
|
||||
UI.log(Messages.genericCopySuccess);
|
||||
} else {
|
||||
UI.warn(Messages.error);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var checkCache = function (chan, cb) {
|
||||
|
|
|
@ -344,8 +344,9 @@ Messages.support_formCategoryError = "Please select a ticket category from the d
|
|||
$(url).click(function (e) {
|
||||
e.stopPropagation();
|
||||
var link = privateData.origin + privateData.pathname + '#' + 'support-' + content.id;
|
||||
var success = Clipboard.copy(link);
|
||||
if (success) { UI.log(Messages.shareSuccess); }
|
||||
Clipboard.copy(link, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
});
|
||||
if (typeof(publicKey) === 'string') {
|
||||
copyKey = h('button.btn', {
|
||||
|
@ -357,11 +358,10 @@ Messages.support_formCategoryError = "Please select a ticket category from the d
|
|||
]);
|
||||
$(copyKey).click(e => {
|
||||
e.stopPropagation();
|
||||
if (Clipboard.copy(publicKey)) {
|
||||
UI.log(Messages.shareSuccess);
|
||||
} else {
|
||||
Clipboard.copy(publicKey, (err) => {
|
||||
if (!err) { return UI.log(Messages.shareSuccess); }
|
||||
UI.warn(Messages.error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -840,8 +840,9 @@ define([
|
|||
var privateData = common.getMetadataMgr().getPrivateData();
|
||||
var origin = privateData.origin;
|
||||
var href = origin + Hash.hashToHref(data.hash, 'teams');
|
||||
var success = Clipboard.copy(href);
|
||||
if (success) { UI.log(Messages.shareSuccess); }
|
||||
Clipboard.copy(href, (err) => {
|
||||
if (!err) { UI.log(Messages.shareSuccess); }
|
||||
});
|
||||
}).prependTo(actions);
|
||||
}
|
||||
content = [
|
||||
|
|
Loading…
Reference in New Issue