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