From fede7c1779dfce9194b0e04aeaaa545cc51169ed Mon Sep 17 00:00:00 2001 From: Lars Eggert Date: Wed, 10 Nov 2021 20:02:45 +0000 Subject: [PATCH] Fix tracking/untracking docs. - Legacy-Id: 19626 --- ietf/static/js/ietf.js | 49 +++++++++++++++++++ .../doc/search/search_result_row.html | 8 +-- package-lock.json | 16 +++++- package.json | 5 +- 4 files changed, 71 insertions(+), 7 deletions(-) diff --git a/ietf/static/js/ietf.js b/ietf/static/js/ietf.js index 15001629d..4d6f7816e 100644 --- a/ietf/static/js/ietf.js +++ b/ietf/static/js/ietf.js @@ -22,6 +22,22 @@ if (!process.env.BUILD_DEPLOY) { require("jquery-migrate") } +import Cookies from "js-cookie"; + +// setup CSRF protection using jQuery +function csrfSafeMethod(method) { + // these HTTP methods do not require CSRF protection + return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); +} +jQuery.ajaxSetup({ + crossDomain: false, // obviates need for sameOrigin test + beforeSend: function (xhr, settings) { + if (!csrfSafeMethod(settings.type)) { + xhr.setRequestHeader("X-CSRFToken", Cookies.get("csrftoken")); + } + } +}); + function dropdown_hover() { var navbar = $(this) .closest(".navbar"); @@ -155,4 +171,37 @@ $(document) updateAdvanced(); } + + $('.review-wish-add-remove-doc.ajax, .track-untrack-doc') + .on("click", function (e) { + e.preventDefault(); + var trigger = $(this); + $.ajax({ + url: trigger.attr('href'), + type: 'POST', + cache: false, + dataType: 'json', + success: function (response) { + if (response.success) { + trigger.parent() + .find(".tooltip") + .remove(); + trigger.attr("hidden", true); + + var target_unhide = null; + if (trigger.hasClass('review-wish-add-remove-doc')) { + target_unhide = '.review-wish-add-remove-doc'; + } else if (trigger.hasClass('track-untrack-doc')) { + target_unhide = '.track-untrack-doc'; + } + if (target_unhide) {} + trigger.parent() + .find(target_unhide) + .not(trigger) + .removeAttr("hidden"); + } + } + }); + }); + }); \ No newline at end of file diff --git a/ietf/templates/doc/search/search_result_row.html b/ietf/templates/doc/search/search_result_row.html index 5c9fbe71a..f70a6e3d0 100644 --- a/ietf/templates/doc/search/search_result_row.html +++ b/ietf/templates/doc/search/search_result_row.html @@ -14,19 +14,19 @@ {% if user.is_authenticated %} - + - +
{% endif %} {% if user.review_teams %} - + - +
diff --git a/package-lock.json b/package-lock.json index 4f8c920b3..e6e374d85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,8 @@ "d3": "^3.5.17", "datatables.net": "^1.11.3", "datatables.net-bs5": "^1.11.3", - "jquery": "^3.6.0" + "jquery": "^3.6.0", + "js-cookie": "^3.0.1" }, "devDependencies": { "@parcel/transformer-sass": "^2.0.1", @@ -4895,6 +4896,14 @@ "jquery": ">=3 <4" } }, + "node_modules/js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==", + "engines": { + "node": ">=12" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11860,6 +11869,11 @@ "dev": true, "requires": {} }, + "js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index 13909a758..93c2e4f23 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "d3": "^3.5.17", "datatables.net": "^1.11.3", "datatables.net-bs5": "^1.11.3", - "jquery": "^3.6.0" + "jquery": "^3.6.0", + "js-cookie": "^3.0.1" }, "devDependencies": { "@parcel/transformer-sass": "^2.0.1", @@ -30,4 +31,4 @@ "distDir": "ietf/static/dist/ietf" } } -} \ No newline at end of file +}