diff --git a/plugins/share/init.php b/plugins/share/init.php
index 846e1f39c..a569393fe 100644
--- a/plugins/share/init.php
+++ b/plugins/share/init.php
@@ -17,18 +17,17 @@ class Share extends Plugin {
}
function get_js() {
- return file_get_contents(dirname(__FILE__) . "/share.js");
+ return file_get_contents(__DIR__ . "/share.js");
}
function get_css() {
- return file_get_contents(dirname(__FILE__) . "/share.css");
+ return file_get_contents(__DIR__ . "/share.css");
}
function get_prefs_js() {
- return file_get_contents(dirname(__FILE__) . "/share_prefs.js");
+ return file_get_contents(__DIR__ . "/share_prefs.js");
}
-
function unshare() {
$id = $_REQUEST['id'];
@@ -36,7 +35,7 @@ class Share extends Plugin {
AND owner_uid = ?");
$sth->execute([$id, $_SESSION['uid']]);
- print "OK";
+ print __("Article unshared");
}
function hook_prefs_tab_section($id) {
@@ -52,16 +51,14 @@ class Share extends Plugin {
}
}
- // Silent
function clearArticleKeys() {
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET uuid = '' WHERE
owner_uid = ?");
$sth->execute([$_SESSION['uid']]);
- return;
+ print __("Shared URLs cleared.");
}
-
function newkey() {
$id = $_REQUEST['id'];
$uuid = uniqid_short();
@@ -70,26 +67,25 @@ class Share extends Plugin {
AND owner_uid = ?");
$sth->execute([$uuid, $id, $_SESSION['uid']]);
- print json_encode(array("link" => $uuid));
+ print json_encode(["link" => $uuid]);
}
function hook_article_button($line) {
- $img_class = $line['uuid'] ? "shared" : "";
+ $icon_class = !empty($line['uuid']) ? "is-shared" : "";
- return "link";
}
- function shareArticle() {
- $param = $_REQUEST['param'];
+ function shareDialog() {
+ $id = (int)clean($_REQUEST['id'] ?? 0);
$sth = $this->pdo->prepare("SELECT uuid FROM ttrss_user_entries WHERE int_id = ?
AND owner_uid = ?");
- $sth->execute([$param, $_SESSION['uid']]);
+ $sth->execute([$id, $_SESSION['uid']]);
if ($row = $sth->fetch()) {
-
$uuid = $row['uuid'];
if (!$uuid) {
@@ -97,27 +93,26 @@ class Share extends Plugin {
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET uuid = ? WHERE int_id = ?
AND owner_uid = ?");
- $sth->execute([$uuid, $param, $_SESSION['uid']]);
+ $sth->execute([$uuid, $id, $_SESSION['uid']]);
}
- $url_path = htmlspecialchars(get_self_url_prefix() . "/public.php?op=share&key=$uuid");
+ $url_path = get_self_url_prefix() . "/public.php?op=share&key=$uuid";
?>
= __("You can share this article by the following unique URL:") ?>
-
diff --git a/plugins/share/share.css b/plugins/share/share.css
index 00bad68dd..ac9247a54 100644
--- a/plugins/share/share.css
+++ b/plugins/share/share.css
@@ -1,3 +1,3 @@
-i.icon-share.shared {
+i.material-icons.icon-share.is-shared {
color : #0a0;
}
\ No newline at end of file
diff --git a/plugins/share/share.js b/plugins/share/share.js
index 3fc42d654..09fb145c9 100644
--- a/plugins/share/share.js
+++ b/plugins/share/share.js
@@ -1,9 +1,7 @@
-/* global Plugins, xhrJson, Notify, fox, xhrPost, __ */
+/* global dojo, Effect, Plugins, xhrJson, Notify, fox, xhrPost, __ */
Plugins.Share = {
shareArticle: function(id) {
- const query = "backend.php?op=pluginhandler&plugin=share&method=shareArticle¶m=" + encodeURIComponent(id);
-
const dialog = new fox.SingleUseDialog({
id: "shareArticleDlg",
title: __("Share article by URL"),
@@ -17,20 +15,23 @@ Plugins.Share = {
xhrJson("backend.php", query, (reply) => {
if (reply) {
const new_link = reply.link;
- const e = $('gen_article_url');
+ const target = dialog.domNode.querySelector(".target-url");
- if (new_link) {
+ if (new_link && target) {
- e.innerHTML = e.innerHTML.replace(/\&key=.*$/,
+ target.innerHTML = target.innerHTML.replace(/&key=.*$/,
"&key=" + new_link);
- e.href = e.href.replace(/\&key=.*$/,
+ target.href = target.href.replace(/&key=.*$/,
"&key=" + new_link);
- new Effect.Highlight(e);
+ // eslint-disable-next-line no-new
+ new Effect.Highlight(target);
- const img = $("SHARE-IMG-" + id);
- img.addClassName("shared");
+ const icon = document.querySelector(".share-icon-" + id);
+
+ if (icon)
+ icon.addClassName("is-shared");
Notify.close();
@@ -44,32 +45,35 @@ Plugins.Share = {
},
unshare: function () {
if (confirm(__("Remove sharing for this article?"))) {
+ xhrPost("backend.php", {op: "pluginhandler", plugin: "share", method: "unshare", id: id}, (transport) => {
+ Notify.info(transport.responseText);
- const query = {op: "pluginhandler", plugin: "share", method: "unshare", id: id};
+ const icon = document.querySelector(".share-icon-" + id);
- xhrPost("backend.php", query, () => {
- try {
- const img = $("SHARE-IMG-" + id);
+ if (icon)
+ icon.removeClassName("is-shared");
- if (img) {
- img.removeClassName("shared");
- img.up("div[id*=RROW]").removeClassName("shared");
- }
-
- dialog.hide();
- } catch (e) {
- console.error(e);
- }
+ dialog.hide();
});
}
},
- href: query
+ content: __("Loading, please wait...")
+ });
+
+ const tmph = dojo.connect(dialog, 'onShow', function () {
+ dojo.disconnect(tmph);
+
+ xhrPost("backend.php", {op: "pluginhandler", plugin: "share", method: "shareDialog", id: id}, (transport) => {
+ dialog.attr('content', transport.responseText)
+
+ const icon = document.querySelector(".share-icon-" + id);
+
+ if (icon)
+ icon.addClassName("is-shared");
+ });
});
dialog.show();
-
- const img = $("SHARE-IMG-" + id);
- img.addClassName("shared");
}
}
diff --git a/plugins/share/share_prefs.js b/plugins/share/share_prefs.js
index 071a6667c..29c9aeaf8 100644
--- a/plugins/share/share_prefs.js
+++ b/plugins/share/share_prefs.js
@@ -1,12 +1,12 @@
+/* global Plugins, Notify, xhrPost */
+
Plugins.Share = {
clearKeys: function() {
if (confirm(__("This will invalidate all previously shared article URLs. Continue?"))) {
Notify.progress("Clearing URLs...");
- const query = {op: "pluginhandler", plugin: "share", method: "clearArticleKeys"};
-
- xhrPost("backend.php", query, () => {
- Notify.info("Shared URLs cleared.");
+ xhrPost("backend.php", {op: "pluginhandler", plugin: "share", method: "clearArticleKeys"}, (transport) => {
+ Notify.info(transport.responseText);
});
}