From 46c8f6e77b74c97993414af1c3a3a8a047414baf Mon Sep 17 00:00:00 2001 From: Alexis Degrugillier Date: Sun, 3 Jan 2021 12:20:15 -0500 Subject: Add clipboard sharing (#3330) When the discussion #3327 started, I thought that the clipboard share is a good idea. It never occurred to me because I do not use a smartphone. It might need some polishing but it seems pretty usable as-is. See #3327 --- app/i18n/cz/gen.php | 1 + app/i18n/de/gen.php | 1 + app/i18n/en-us/gen.php | 1 + app/i18n/en/gen.php | 1 + app/i18n/es/gen.php | 1 + app/i18n/fr/gen.php | 3 ++- app/i18n/he/gen.php | 1 + app/i18n/it/gen.php | 1 + app/i18n/kr/gen.php | 1 + app/i18n/nl/gen.php | 1 + app/i18n/oc/gen.php | 1 + app/i18n/pl/gen.php | 1 + app/i18n/pt-br/gen.php | 1 + app/i18n/ru/gen.php | 1 + app/i18n/sk/gen.php | 1 + app/i18n/tr/gen.php | 1 + app/i18n/zh-cn/gen.php | 1 + app/shares.php | 6 ++++++ app/views/helpers/index/normal/entry_bottom.phtml | 2 +- cli/i18n/ignore/en-us.php | 1 + cli/i18n/ignore/fr.php | 1 + p/scripts/main.js | 8 +++++++- 22 files changed, 34 insertions(+), 3 deletions(-) diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php index 6c186520c..05ff2f782 100644 --- a/app/i18n/cz/gen.php +++ b/app/i18n/cz/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', // TODO - Translation 'blogotext' => 'Blogotext', // TODO - Translation + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', // TODO - Translation 'email' => 'Email', // TODO - Translation 'facebook' => 'Facebook', // TODO - Translation diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index 2a080ecb9..1c66b1230 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known-Seite (https://withknown.com)', 'blogotext' => 'Blogotext', + 'clipboard' => 'Zwischenablage', 'diaspora' => 'Diaspora*', 'email' => 'E-Mail', 'facebook' => 'Facebook', diff --git a/app/i18n/en-us/gen.php b/app/i18n/en-us/gen.php index 738fd8d22..6dcab8046 100644 --- a/app/i18n/en-us/gen.php +++ b/app/i18n/en-us/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', 'blogotext' => 'Blogotext', + 'clipboard' => 'Clipboard', 'diaspora' => 'Diaspora*', 'email' => 'Email', 'facebook' => 'Facebook', diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index c37d7b6bd..c347801ff 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', 'blogotext' => 'Blogotext', + 'clipboard' => 'Clipboard', 'diaspora' => 'Diaspora*', 'email' => 'Email', 'facebook' => 'Facebook', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index 370ecd733..274088975 100755 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', // TODO - Translation 'blogotext' => 'Blogotext', // TODO - Translation + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', // TODO - Translation 'email' => 'Email', // TODO - Translation 'facebook' => 'Facebook', // TODO - Translation diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index f872614df..daef6d6bc 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Sites basés sur Known', 'blogotext' => 'Blogotext', + 'clipboard' => 'Presse-papier', 'diaspora' => 'Diaspora*', 'email' => 'Courriel', 'facebook' => 'Facebook', @@ -195,7 +196,7 @@ return array( 'mastodon' => 'Mastodon', 'movim' => 'Movim', 'pinboard' => 'Pinboard', // TODO - Translation - 'pocket' => 'Pocket', // TODO - Translation + 'pocket' => 'Pocket', 'print' => 'Imprimer', 'shaarli' => 'Shaarli', 'twitter' => 'Twitter', diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index ba6c4523f..205c4d028 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', // TODO - Translation 'blogotext' => 'Blogotext', // TODO - Translation + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', // TODO - Translation 'email' => 'דואר אלקטרוני', 'facebook' => 'Facebook', // TODO - Translation diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index 721d34dbc..94e68d7e3 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Siti basati su Known', 'blogotext' => 'Blogotext', // TODO - Translation + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', // TODO - Translation 'email' => 'Email', // TODO - Translation 'facebook' => 'Facebook', // TODO - Translation diff --git a/app/i18n/kr/gen.php b/app/i18n/kr/gen.php index e95686e2a..5cd0340a1 100644 --- a/app/i18n/kr/gen.php +++ b/app/i18n/kr/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', 'blogotext' => 'Blogotext', + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', 'email' => '메일', 'facebook' => 'Facebook', diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index dd7009f98..93dba87df 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known-gebaseerde sites', 'blogotext' => 'Blogotext', + 'clipboard' => 'Klembord', 'diaspora' => 'Diaspora*', 'email' => 'Email', 'facebook' => 'Facebook', diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index 3a6a2ada6..71d0ccf56 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Sites basats sus Known', 'blogotext' => 'Blogotext', + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', 'email' => 'Corrièl', 'facebook' => 'Facebook', diff --git a/app/i18n/pl/gen.php b/app/i18n/pl/gen.php index 97743ff33..e291573af 100644 --- a/app/i18n/pl/gen.php +++ b/app/i18n/pl/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Strony bazujące na usłudze Known', 'blogotext' => 'Blogotext', + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', 'email' => 'E-mail', 'facebook' => 'Facebook', diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index 9a4774e22..3d1b212f8 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', // TODO - Translation 'blogotext' => 'Blogotext', + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', 'email' => 'Email', // TODO - Translation 'facebook' => 'Facebook', diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index 335f6d9aa..70d798d6d 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', // TODO - Translation 'blogotext' => 'Blogotext', // TODO - Translation + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', // TODO - Translation 'email' => 'Email', // TODO - Translation 'facebook' => 'Facebook', // TODO - Translation diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index e8e61c5eb..085446706 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Stránky založené na Known', 'blogotext' => 'Blogotext', + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', 'email' => 'E-mail', 'facebook' => 'Facebook', diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index 0078acaf7..9ddfd96b3 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => 'Known based sites', // TODO - Translation 'blogotext' => 'Blogotext', // TODO - Translation + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', // TODO - Translation 'email' => 'Email', // TODO - Translation 'facebook' => 'Facebook', // TODO - Translation diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 3ee88b4c7..05c807989 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -185,6 +185,7 @@ return array( 'share' => array( 'Known' => '基于 Known 的站点', 'blogotext' => 'Blogotext', + 'clipboard' => 'Clipboard', // TODO - Translation 'diaspora' => 'Diaspora*', 'email' => '邮箱', 'facebook' => '脸书', diff --git a/app/shares.php b/app/shares.php index daca836bf..472934008 100644 --- a/app/shares.php +++ b/app/shares.php @@ -140,4 +140,10 @@ return array( 'form' => 'advanced', 'method' => 'GET', ), + 'clipboard' => array( + 'url' => '~LINK~', + 'transform' => array(), + 'form' => 'simple', + 'method' => 'GET', + ), ); diff --git a/app/views/helpers/index/normal/entry_bottom.phtml b/app/views/helpers/index/normal/entry_bottom.phtml index 88fa578de..bf1dc7b3d 100644 --- a/app/views/helpers/index/normal/entry_bottom.phtml +++ b/app/views/helpers/index/normal/entry_bottom.phtml @@ -93,7 +93,7 @@ $share->update($share_options); ?>
  • method()) {?> - name() ?> + name() ?> name() ?>
    diff --git a/cli/i18n/ignore/en-us.php b/cli/i18n/ignore/en-us.php index 518ca705b..fa3f11590 100644 --- a/cli/i18n/ignore/en-us.php +++ b/cli/i18n/ignore/en-us.php @@ -538,6 +538,7 @@ return array( 'gen.period.years', 'gen.share.Known', 'gen.share.blogotext', + 'gen.share.clipboard', 'gen.share.diaspora', 'gen.share.email', 'gen.share.facebook', diff --git a/cli/i18n/ignore/fr.php b/cli/i18n/ignore/fr.php index 8b0857bb0..09fbd5456 100644 --- a/cli/i18n/ignore/fr.php +++ b/cli/i18n/ignore/fr.php @@ -50,6 +50,7 @@ return array( 'gen.share.linkedin', 'gen.share.mastodon', 'gen.share.movim', + 'gen.share.pocket', 'gen.share.shaarli', 'gen.share.twitter', 'gen.share.wallabag', diff --git a/p/scripts/main.js b/p/scripts/main.js index 1a3b02c2a..f8d20a622 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -946,7 +946,7 @@ function init_stream(stream) { return true; } - el = ev.target.closest('.item.share > a[href="#"]'); + el = ev.target.closest('.item.share > a[data-type="print"]'); if (el) { //Print const tmp_window = window.open(); for (var i = 0; i < document.styleSheets.length; i++) { @@ -960,6 +960,12 @@ function init_stream(stream) { return false; } + el = ev.target.closest('.item.share > a[data-type="clipboard"]'); + if (el && navigator.clipboard) { //Clipboard + navigator.clipboard.writeText(el.href); + return false; + } + el = ev.target.closest('.item.share > a[href="POST"]'); if (el) { //Share by POST const f = el.parentElement.querySelector('form'); -- cgit v1.2.3