diff --git a/.eslintrc.js b/.eslintrc.js index 39c1af394..9ea6f3872 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -14,5 +14,9 @@ module.exports = { }, globals: { d3: true + }, + parserOptions: { + sourceType: "module", + ecmaVersion: 2015 } }; \ No newline at end of file diff --git a/ietf/static/css/ietf.scss b/ietf/static/css/ietf.scss index c44be8460..08638c39c 100644 --- a/ietf/static/css/ietf.scss +++ b/ietf/static/css/ietf.scss @@ -33,18 +33,18 @@ $enable-negative-margins: true; @import "~/node_modules/bootstrap/scss/card"; @import "~/node_modules/bootstrap/scss/accordion"; // @import "~/node_modules/bootstrap/scss/breadcrumb"; -// @import "~/node_modules/bootstrap/scss/pagination"; +@import "~/node_modules/bootstrap/scss/pagination"; @import "~/node_modules/bootstrap/scss/badge"; -// @import "~/node_modules/bootstrap/scss/alert"; +@import "~/node_modules/bootstrap/scss/alert"; // @import "~/node_modules/bootstrap/scss/progress"; // @import "~/node_modules/bootstrap/scss/list-group"; -// @import "~/node_modules/bootstrap/scss/close"; +@import "~/node_modules/bootstrap/scss/close"; // @import "~/node_modules/bootstrap/scss/toasts"; -// @import "~/node_modules/bootstrap/scss/modal"; -// @import "~/node_modules/bootstrap/scss/tooltip"; +@import "~/node_modules/bootstrap/scss/modal"; +@import "~/node_modules/bootstrap/scss/tooltip"; // @import "~/node_modules/bootstrap/scss/popover"; // @import "~/node_modules/bootstrap/scss/carousel"; -// @import "~/node_modules/bootstrap/scss/spinners"; +@import "~/node_modules/bootstrap/scss/spinners"; // @import "~/node_modules/bootstrap/scss/offcanvas"; // @import "~/node_modules/bootstrap/scss/placeholders"; diff --git a/ietf/static/js/ietf.js b/ietf/static/js/ietf.js index 4d6f7816e..776287faf 100644 --- a/ietf/static/js/ietf.js +++ b/ietf/static/js/ietf.js @@ -1,18 +1,18 @@ // Only import what we need: // https://getbootstrap.com/docs/5.1/customize/optimize/ -// import "bootstrap/js/dist/alert"; +import "bootstrap/js/dist/alert"; import "bootstrap/js/dist/button"; // import "bootstrap/js/dist/carousel"; import "bootstrap/js/dist/collapse"; import "bootstrap/js/dist/dropdown"; -// import "bootstrap/js/dist/modal"; +import "bootstrap/js/dist/modal"; // import "bootstrap/js/dist/offcanvas"; // import "bootstrap/js/dist/popover"; // import "bootstrap/js/dist/scrollspy"; import "bootstrap/js/dist/tab"; // import "bootstrap/js/dist/toast"; -// import "bootstrap/js/dist/tooltip"; +import "bootstrap/js/dist/tooltip"; import jquery from "jquery" @@ -29,6 +29,7 @@ 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) { @@ -38,59 +39,63 @@ jQuery.ajaxSetup({ } }); -function dropdown_hover() { - var navbar = $(this) - .closest(".navbar"); - if (navbar.length === 0 || navbar.find(".navbar-toggler") - .is(":hidden")) { - $(this) - .children(".dropdown-toggle") - .dropdown("toggle"); - } -} +$(document) + .ready(function () { -if (!("ontouchstart" in document.documentElement)) { - $("ul.nav li.dropdown, ul.nav li.dropend") - .on("mouseenter mouseleave", dropdown_hover); -} - -// load data for the menu -$.ajax({ - url: $(document.body) - .data("group-menu-data-url"), - type: "GET", - dataType: "json", - success: function (data) { - for (var parentId in data) { - var attachTo = $(".group-menu.group-parent-" + parentId); - if (attachTo.length == 0) { - console.log("Could not find parent " + parentId); - continue; + function dropdown_hover() { + var navbar = $(this) + .closest(".navbar"); + if (navbar.length === 0 || navbar.find(".navbar-toggler") + .is(":hidden")) { + $(this) + .children(".dropdown-toggle") + .dropdown("toggle"); } - attachTo.find(".dropdown-menu") - .remove(); - var menu = ['
"); - for (var i = 0; i < attachTo.length; i++) { - attachTo.closest(".dropdown-menu"); - } - attachTo.append(menu.join("")); } - } -}); + + // load data for the menu + $.ajax({ + url: $(document.body) + .data("group-menu-data-url"), + type: "GET", + dataType: "json", + success: function (data) { + for (var parentId in data) { + var attachTo = $(".group-menu.group-parent-" + parentId); + if (attachTo.length == 0) { + console.log("Could not find parent " + parentId); + continue; + } + attachTo.find(".dropdown-menu") + .remove(); + var menu = [' "); + for (i = 0; i < attachTo.length; i++) { + attachTo.closest(".dropdown-menu"); + } + attachTo.append(menu.join("")); + } + } + }); + + if (!("ontouchstart" in document.documentElement)) { + $("ul.nav li.dropdown, ul.nav li.dropend") + .on("mouseenter mouseleave", dropdown_hover); + } + }); // This used to be in doc-search.js; consolidate all JS in one file. $(document) @@ -172,15 +177,15 @@ $(document) updateAdvanced(); } - $('.review-wish-add-remove-doc.ajax, .track-untrack-doc') + $(".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', + url: trigger.attr("href"), + type: "POST", cache: false, - dataType: 'json', + dataType: "json", success: function (response) { if (response.success) { trigger.parent() @@ -189,12 +194,11 @@ $(document) 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 (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) @@ -203,5 +207,4 @@ $(document) } }); }); - }); \ No newline at end of file diff --git a/ietf/templates/base.html b/ietf/templates/base.html index 3f6d672f1..c2d732e37 100644 --- a/ietf/templates/base.html +++ b/ietf/templates/base.html @@ -20,6 +20,7 @@ {% block pagehead %}{% endblock pagehead %} @@ -64,29 +65,29 @@+
+ RFC 3935, "A Mission Statement for the IETF" lays out + the goal and the mission of the IETF as follows +
- RFC 3935, "A Mission Statement for the IETF" lays out - the goal and the mission of the IETF as follows: - ++ The goal of the IETF is to make the Internet work better. - The goal of the IETF is to make the Internet work better. + The mission of the IETF is to produce high quality, relevant + technical and engineering documents that influence the way people + design, use, and manage the Internet in such a way as to make the + Internet work better. These documents include protocol standards, + best current practices, and informational documents of various kinds. +- The mission of the IETF is to produce high quality, relevant - technical and engineering documents that influence the way people - design, use, and manage the Internet in such a way as to make the - Internet work better. These documents include protocol standards, - best current practices, and informational documents of various kinds. - + {% comment %} + The following text has been reviewed by legal counsel (Thomas Zych) + on Thu, 26 Apr 2018 17:24:03 -0400 + *** DO NOT CHANGE WITHOUT LEGAL REVIEW *** + {% endcomment %} - +
+ The datatracker treats all personal information derived from draft documents and + documents published as RFC, as well as personal information derived from + processing draft documents through the IETF procedures, in accordance with + applicable law, including the GDPR. This includes author names, + email addresses and other address information provided in draft documents or as + contact information for IETF roles such as Working Group chairs, secretaries, + Area Directors and other roles. +
-+
+ There is however additional personal information held in the datatracker that + is used for other purposes. This information requires the consent of the + individuals whose information is stored and processed which IETF secures + through various means, and the person it relates to may at any time request + its correction or removal. This includes: +
- In order to fulfil its mission, the IETF provides various ways to distribute - and discuss Internet-Drafts, and otherwise process them until there is - consensus that they are ready for publication. ++
+ Most of this information can be edited on the individual's + Account Info page by the individual + after logging in to the account. If the datatracker holds such + information about a person, and they don't have an account, a request to + the IETF secretariat to change + or remove the information will be honoured to the extent feasible and + legally permitted. +
- This makes the information in the content of the draft documents, as well - as contributions related to the draft documents and their processing as - laid out in the "Note - Well" statement, of legitimate interest to the IETF when it pursues - its mission; not only in general terms, but specifically under Article - 6(1) f) of - - EU's General Data Protection Regulation . ++ Please also see the IETF's overall + Statement concerning personal data +
- -- - The datatracker treats all personal information derived from draft documents and - documents published as RFC, as well as personal information derived from - processing draft documents through the IETF procedures, in accordance with - applicable law, including the GDPR. This includes author names, - email addresses and other address information provided in draft documents or as - contact information for IETF roles such as Working Group chairs, secretaries, - Area Directors and other roles. - -
-- - There is however additional personal information held in the datatracker that - is used for other purposes. This information requires the consent of the - individuals whose information is stored and processed which IETF secures - through various means, and the person it relates to may at any time request - its correction or removal. This includes: - -
- -- - Most of this information can be edited on the individual's - Account Info page by the individual - after logging in to the account. If the datatracker holds such - information about a person, and they don't have an account, a request to - the IETF secretariat to change - or remove the information will be honoured to the extent feasible and - legally permitted. - -
- -- Please also see the IETF's overall - Statement concerning personal data. -
- - -- - {{ info|safe }} - +
+ {{ info|striptags }}
- -{% endblock %} +{% endblock content %} \ No newline at end of file diff --git a/ietf/templates/registration/confirm_profile_update.html b/ietf/templates/registration/confirm_profile_update.html index a7fe5b7b3..e71147eb0 100644 --- a/ietf/templates/registration/confirm_profile_update.html +++ b/ietf/templates/registration/confirm_profile_update.html @@ -1,8 +1,10 @@ -{% extends "base.html" %} {# Copyright The IETF Trust 2015, All Rights Reserved #} + +{% extends "base.html" %} + {% load origin %} -{% block title %}Profile update successful{% endblock %} +{% block title %}Profile update successful{% endblock title%} {% block content %} {% origin %} @@ -16,4 +18,4 @@ {% endfor %} Edit profile -{% endblock %} +{% endblock content %} \ No newline at end of file diff --git a/ietf/templates/registration/create.html b/ietf/templates/registration/create.html index c3dbfe78f..ba0c8debc 100644 --- a/ietf/templates/registration/create.html +++ b/ietf/templates/registration/create.html @@ -1,10 +1,12 @@ -{% extends "base.html" %} {# Copyright The IETF Trust 2015, All Rights Reserved #} + +{% extends "base.html" %} + {% load origin %} {% load django_bootstrap5 %} -{% block title %}Account creation{% endblock %} +{% block title %}Account creation{% endblock title %} {% block content %} {% origin %} @@ -17,41 +19,34 @@We have sent an email to {{ to_email }} with instructions on how to complete the process.
{% else %} -- If you already have an account and want to use a new email address, - please go to your account profile page and -
- --
- If you already have an account but forgot your password, - please simply -
- -Please enter your email address in order to create your datatracker account.
- -Please enter your email address in order to create your datatracker account.
+ {% endif %} -{% endblock %} +{% endblock content %} \ No newline at end of file diff --git a/ietf/templates/registration/edit_profile.html b/ietf/templates/registration/edit_profile.html index e7a25e274..4c2427291 100644 --- a/ietf/templates/registration/edit_profile.html +++ b/ietf/templates/registration/edit_profile.html @@ -1,25 +1,23 @@ -{% extends "base.html" %} {# Copyright The IETF Trust 2015, All Rights Reserved #} + +{% extends "base.html" %} + {% load origin %} {% load widget_tweaks django_bootstrap5 %} {% load person_filters %} -{% block title %}Profile for {{ user }}{% endblock %} +{% block title %}Profile for {{ user }}{% endblock title %} {% block content %} {% origin %}-
The information you provide below is used to generate your public datatracker profile page
-