From a89fce27cbc3f3cdfe0cbc10f1ba63a85efa8ebb Mon Sep 17 00:00:00 2001 From: maTh Date: Wed, 16 Mar 2022 23:23:15 +0100 Subject: [PATCH] New sharing service: Web sharing API (#4271) * new optional option: HTMLtag * Update main.js * add: web sharing API * Update gen.php * Update gen.php * Update gen.php * fix spaces * Update shares.php * fixed JavaScript * Update template.rtl.css * Typo * improved: if (!navigator.share) * Update main.js * comma-dangle only for arrays and objects * Update app/i18n/fr/gen.php Co-authored-by: Alexandre Alapetite * i18n: System sharing Co-authored-by: Alexandre Alapetite --- .eslintrc.json | 5 +++- app/Models/Share.php | 14 +++++++++-- app/i18n/cz/gen.php | 13 +++++----- app/i18n/de/gen.php | 9 ++++--- app/i18n/en-us/gen.php | 9 ++++--- app/i18n/en/gen.php | 9 ++++--- app/i18n/es/gen.php | 9 ++++--- app/i18n/fr/gen.php | 9 ++++--- app/i18n/he/gen.php | 9 ++++--- app/i18n/it/gen.php | 9 ++++--- app/i18n/ja/gen.php | 9 ++++--- app/i18n/ko/gen.php | 9 ++++--- app/i18n/nl/gen.php | 9 ++++--- app/i18n/oc/gen.php | 9 ++++--- app/i18n/pl/gen.php | 9 ++++--- app/i18n/pt-br/gen.php | 9 ++++--- app/i18n/ru/gen.php | 9 ++++--- app/i18n/sk/gen.php | 9 ++++--- app/i18n/tr/gen.php | 9 ++++--- app/i18n/zh-cn/gen.php | 9 ++++--- app/shares.php | 9 +++++++ .../helpers/index/normal/entry_bottom.phtml | 9 +++++-- p/scripts/main.js | 25 ++++++++++++++++--- p/themes/base-theme/template.css | 1 - p/themes/base-theme/template.rtl.css | 1 - 25 files changed, 146 insertions(+), 84 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index a528c8f59..449161cd6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -8,7 +8,10 @@ ], "rules": { "camelcase": "off", - "comma-dangle": ["warn", "always-multiline"], + "comma-dangle": ["warn", { + "arrays": "always-multiline", + "objects": "always-multiline" + }], "eqeqeq": "off", "indent": ["warn", "tab", { "SwitchCase": 1 }], "linebreak-style": ["error", "unix"], diff --git a/app/Models/Share.php b/app/Models/Share.php index a36226f69..375b17f01 100644 --- a/app/Models/Share.php +++ b/app/Models/Share.php @@ -20,13 +20,14 @@ class FreshRSS_Share { return; } + $HTMLtag = isset($share_options['HTMLtag']) ? $share_options['HTMLtag'] : 'link'; $isDeprecated = isset($share_options['deprecated']) ? $share_options['deprecated'] : false; $help_url = isset($share_options['help']) ? $share_options['help'] : ''; $field = isset($share_options['field']) ? $share_options['field'] : null; self::$list_sharing[$type] = new FreshRSS_Share( $type, $share_options['url'], $share_options['transform'], $share_options['form'], $help_url, $share_options['method'], - $field, $isDeprecated + $field, $HTMLtag, $isDeprecated ); } @@ -87,6 +88,7 @@ class FreshRSS_Share { private $isDeprecated = false; private $method = 'GET'; private $field; + private $HTMLtag = 'link'; /** * Create a FreshRSS_Share object. @@ -99,11 +101,12 @@ class FreshRSS_Share { * @param string $help_url is an optional url to give help on this option. * @param string $method defines the sharing method (GET or POST) */ - private function __construct($type, $url_transform, $transform, $form_type, $help_url, $method, $field, $isDeprecated = false) { + private function __construct($type, $url_transform, $transform, $form_type, $help_url, $method, $field, $HTMLtag, $isDeprecated = false) { $this->type = $type; $this->name = _t('gen.share.' . $type); $this->url_transform = $url_transform; $this->help_url = $help_url; + $this->HTMLtag = $HTMLtag; $this->isDeprecated = $isDeprecated; if (!is_array($transform)) { @@ -181,6 +184,13 @@ class FreshRSS_Share { return $this->help_url; } + /** + * Return the type of HTML tag of the share option. + */ + public function HTMLtag() { + return $this->HTMLtag; + } + /** * Return the current name of the share option. */ diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php index 5a4a83d81..2a986b86d 100644 --- a/app/i18n/cz/gen.php +++ b/app/i18n/cz/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Tisknout', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE - 'wallabag' => 'Wallabag v1', - 'wallabagv2' => 'Wallabag v2', - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'wallabag' => 'wallabag v1', // IGNORE + 'wallabagv2' => 'wallabag v2', // IGNORE + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Upozornění!', diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index 5aaef1e96..c1b93978d 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Drucken', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'Teilen (Systemstandard)', + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Achtung!', diff --git a/app/i18n/en-us/gen.php b/app/i18n/en-us/gen.php index a4af57eea..52e0f9bf5 100644 --- a/app/i18n/en-us/gen.php +++ b/app/i18n/en-us/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Print', // IGNORE 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Warning!', // IGNORE diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index fadd7c909..ce3a72bc4 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', 'movim' => 'Movim', 'pinboard' => 'Pinboard', - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', 'pocket' => 'Pocket', 'print' => 'Print', 'raindrop' => 'Raindrop.io', - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', 'shaarli' => 'Shaarli', 'twitter' => 'Twitter', 'wallabag' => 'wallabag v1', 'wallabagv2' => 'wallabag v2', - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', + 'whatsapp' => 'Whatsapp', + 'xing' => 'Xing', ), 'short' => array( 'attention' => 'Warning!', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index 122fe135f..eb0c96df3 100755 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Imprimir', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => '¡Aviso!', diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index e43a06d12..b42539047 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Imprimer', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'Partage standard', + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Attention !', diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index 93641e93c..0d0bcfec1 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'הדפסה', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'זהירות!', diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index 3426d264d..7708a9202 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Stampa', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Attenzione!', diff --git a/app/i18n/ja/gen.php b/app/i18n/ja/gen.php index 923be75bc..a1bc830b6 100644 --- a/app/i18n/ja/gen.php +++ b/app/i18n/ja/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => '印刷', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => '警告!', diff --git a/app/i18n/ko/gen.php b/app/i18n/ko/gen.php index a53a496da..eabf43bc9 100644 --- a/app/i18n/ko/gen.php +++ b/app/i18n/ko/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => '인쇄', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => '경고!', diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index 4d6d3b441..41024f7e0 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Print', // IGNORE 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Attentie!', diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index 9250d0105..7028b9fa6 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Imprimir', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Atencion !', diff --git a/app/i18n/pl/gen.php b/app/i18n/pl/gen.php index 38b48b47c..e771917d7 100644 --- a/app/i18n/pl/gen.php +++ b/app/i18n/pl/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Wydruk', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Uwaga!', diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index 54953d063..bbe4e2dda 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Imprimir', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Atenção!', diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index 525a572eb..46fb88372 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Распечатать', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Предупреждение!', diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index f45340918..11a2a4c33 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Print', // IGNORE 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Upozornenie!', diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index d70ac2bb7..121469f55 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => 'Print', // IGNORE 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'wallabag v1', // IGNORE 'wallabagv2' => 'wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => 'Tehlike!', diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 313dfd188..aab05b965 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -198,17 +198,18 @@ return array( 'mastodon' => 'Mastodon', // IGNORE 'movim' => 'Movim', // IGNORE 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // TODO + 'pinterest' => 'Pinterest', // IGNORE 'pocket' => 'Pocket', // IGNORE 'print' => '打印', 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // TODO + 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE 'twitter' => '推特', // IGNORE 'wallabag' => 'Wallabag v1', // IGNORE 'wallabagv2' => 'Wallabag v2', // IGNORE - 'whatsapp' => 'Whatsapp', // TODO - 'xing' => 'Xing', // TODO + 'web-sharing-api' => 'System sharing', // TODO + 'whatsapp' => 'Whatsapp', // IGNORE + 'xing' => 'Xing', // IGNORE ), 'short' => array( 'attention' => '警告!', diff --git a/app/shares.php b/app/shares.php index 16b2787bf..8e0134663 100644 --- a/app/shares.php +++ b/app/shares.php @@ -35,6 +35,7 @@ return array( 'method' => 'GET', ), 'clipboard' => array( + 'HTMLtag' => 'button', 'url' => '~LINK~', 'transform' => array(), 'form' => 'simple', @@ -127,6 +128,7 @@ return array( 'method' => 'GET', ), 'print' => array( + 'HTMLtag' => 'button', 'url' => '#', 'transform' => array(), 'form' => 'simple', @@ -172,6 +174,13 @@ return array( 'form' => 'advanced', 'method' => 'GET', ), + 'web-sharing-api' => array( + 'HTMLtag' => 'button', + 'url' => '~LINK~', + 'transform' => array(), + 'form' => 'simple', + 'method' => 'GET', + ), 'whatsapp' => array( 'url' => 'https://wa.me/?text=~TITLE~ | ~LINK~', 'transform' => array('rawurlencode'), diff --git a/app/views/helpers/index/normal/entry_bottom.phtml b/app/views/helpers/index/normal/entry_bottom.phtml index 9be6b99f7..220fc5f62 100644 --- a/app/views/helpers/index/normal/entry_bottom.phtml +++ b/app/views/helpers/index/normal/entry_bottom.phtml @@ -96,9 +96,14 @@ $share_options['title'] = $title; $share->update($share_options); ?>
  • - method()) {?> + method()) { + if ($share->HTMLtag() !== 'button') {?> name() ?> - + + + name() ?>
    diff --git a/p/scripts/main.js b/p/scripts/main.js index c9627b606..be1f7c924 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -1018,7 +1018,7 @@ function init_stream(stream) { return true; } - el = ev.target.closest('.item.share > a[data-type="print"]'); + el = ev.target.closest('.item.share > button[data-type="print"]'); if (el) { // Print const tmp_window = window.open(); for (let i = 0; i < document.styleSheets.length; i++) { @@ -1032,9 +1032,19 @@ function init_stream(stream) { return false; } - el = ev.target.closest('.item.share > a[data-type="clipboard"]'); + el = ev.target.closest('.item.share > button[data-type="clipboard"]'); if (el && navigator.clipboard) { // Clipboard - navigator.clipboard.writeText(el.href); + navigator.clipboard.writeText(el.dataset.url); + return false; + } + + el = ev.target.closest('.item.share > button[data-type="web-sharing-api"]'); + if (el && navigator.share) { // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share + const shareData = { + url: el.dataset.url, + title: decodeURI(el.dataset.title), + }; + navigator.share(shareData); return false; } @@ -1068,6 +1078,15 @@ function init_stream(stream) { } }; + if (!navigator.share) { + // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share + // do not show the menu entry if browser does not support navigator.share + document.styleSheets[0].insertRule( + 'button.as-link[data-type="web-sharing-api"] {display: none !important;}', + document.styleSheets[0].cssRules.length + ); + } + stream.onmouseup = function (ev) { // Mouseup enables us to catch middle click, and control+click in IE/Edge if (ev.altKey || ev.metaKey || ev.shiftKey) { return; diff --git a/p/themes/base-theme/template.css b/p/themes/base-theme/template.css index d4a052860..8b35175e4 100644 --- a/p/themes/base-theme/template.css +++ b/p/themes/base-theme/template.css @@ -1077,7 +1077,6 @@ a.website:hover .favicon { overflow: hidden; } -.flux .item.share > a, .item.query > a { display: list-item; list-style-position: inside; diff --git a/p/themes/base-theme/template.rtl.css b/p/themes/base-theme/template.rtl.css index eff8ad044..e79bbadfb 100644 --- a/p/themes/base-theme/template.rtl.css +++ b/p/themes/base-theme/template.rtl.css @@ -1077,7 +1077,6 @@ a.website:hover .favicon { overflow: hidden; } -.flux .item.share > a, .item.query > a { display: list-item; list-style-position: inside;