diff --git a/customize.dist/ckeditor-config.js b/customize.dist/ckeditor-config.js index 9435c3d44..ec2898da1 100644 --- a/customize.dist/ckeditor-config.js +++ b/customize.dist/ckeditor-config.js @@ -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 diff --git a/www/admin/inner.js b/www/admin/inner.js index 4d5ae11b7..5a564e5e0 100644 --- a/www/admin/inner.js +++ b/www/admin/inner.js @@ -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, diff --git a/www/common/clipboard.js b/www/common/clipboard.js index 7d93e15f3..418e27d4e 100644 --- a/www/common/clipboard.js +++ b/www/common/clipboard.js @@ -1,7 +1,7 @@ define(['jquery'], function ($) { var Clipboard = {}; - var copy = function (text, multiline) { + var oldCopy = function (text, multiline) { var $ta = $('', { 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; diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 3a03807f2..f5065484c 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -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: [] }]; diff --git a/www/common/inner/share.js b/www/common/inner/share.js index db25738a6..9747760f4 100644 --- a/www/common/inner/share.js +++ b/www/common/inner/share.js @@ -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,11 +960,11 @@ define([ iconClass: '.fa.fa-link', onClick: function () { var v = opts.getLinkValue(); - var success = Clipboard.copy(v); - if (success) { UI.log(Messages.shareSuccess); - } - }, - keys: [13] + 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] }]; diff --git a/www/common/sframe-common-outer.js b/www/common/sframe-common-outer.js index 4ccda4b68..21db67850 100644 --- a/www/common/sframe-common-outer.js +++ b/www/common/sframe-common-outer.js @@ -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 () { diff --git a/www/profile/inner.js b/www/profile/inner.js index 71d89c3b7..f79f55658 100644 --- a/www/profile/inner.js +++ b/www/profile/inner.js @@ -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); } + }); }; }; diff --git a/www/recovery/main.js b/www/recovery/main.js index 89ee3733f..2cd535721 100644 --- a/www/recovery/main.js +++ b/www/recovery/main.js @@ -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; diff --git a/www/report/main.js b/www/report/main.js index b9baa5e9a..0410ca890 100644 --- a/www/report/main.js +++ b/www/report/main.js @@ -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) { diff --git a/www/support/ui.js b/www/support/ui.js index 200369a95..860f0da92 100644 --- a/www/support/ui.js +++ b/www/support/ui.js @@ -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); - } + }); }); } } diff --git a/www/teams/inner.js b/www/teams/inner.js index 80cad3bd6..b40fca61e 100644 --- a/www/teams/inner.js +++ b/www/teams/inner.js @@ -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 = [