Dump a bunch of stuff from my local branch into svn.
- Legacy-Id: 19583
6
.gitignore
vendored
|
@ -16,17 +16,18 @@
|
|||
.DS_store
|
||||
# Simulated Subversion default ignores end here
|
||||
/.coverage
|
||||
/.factoryboy_random_state
|
||||
/.mypy_cache
|
||||
/.parcel-cache
|
||||
/.project
|
||||
/.pydevproject
|
||||
/.Python
|
||||
/.settings
|
||||
/.tmp
|
||||
/.factoryboy_random_state
|
||||
/attic
|
||||
/bin
|
||||
/etc
|
||||
/env
|
||||
/etc
|
||||
/ghostdriver.log
|
||||
/htmlcov
|
||||
/include
|
||||
|
@ -38,6 +39,7 @@
|
|||
/mergelog
|
||||
/mergequeue
|
||||
/minimum-requirements.txt
|
||||
/node_modules
|
||||
/pip-selfcheck.json
|
||||
/selenium
|
||||
/settings_local.py
|
||||
|
|
|
@ -8,18 +8,23 @@ from ietf.name.models import GroupTypeName
|
|||
|
||||
register = template.Library()
|
||||
|
||||
parents = GroupTypeName.objects.filter(slug__in=['ag','area','rag','team','dir','program'])
|
||||
parents = GroupTypeName.objects.filter(
|
||||
slug__in=["ag", "area", "rag", "team", "dir", "program"]
|
||||
)
|
||||
|
||||
others = []
|
||||
for group in Group.objects.filter(acronym__in=('rsoc',), state_id='active'):
|
||||
group.menu_url = reverse('ietf.group.views.group_home', kwargs=dict(acronym=group.acronym)) # type: ignore
|
||||
for group in Group.objects.filter(acronym__in=("rsoc",), state_id="active"):
|
||||
group.menu_url = reverse("ietf.group.views.group_home", kwargs=dict(acronym=group.acronym)) # type: ignore
|
||||
# could use group.about_url() instead
|
||||
others.append(group)
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def active_groups_menu():
|
||||
def active_groups_menu(flavor):
|
||||
global parents, others
|
||||
for p in parents:
|
||||
p.menu_url = '/%s/'%p.slug
|
||||
return render_to_string('base/menu_active_groups.html', { 'parents': parents, 'others': others })
|
||||
|
||||
p.menu_url = "/%s/" % p.slug
|
||||
return render_to_string(
|
||||
"base/menu_active_groups.html",
|
||||
{"parents": parents, "others": others, "flavor": flavor},
|
||||
)
|
|
@ -39,26 +39,30 @@ from ietf.group.models import Group
|
|||
register = template.Library()
|
||||
|
||||
parent_short_names = {
|
||||
'ops':'Ops & Mgmt',
|
||||
'rai':'RAI',
|
||||
'iab':'IAB',
|
||||
'art':'Apps & Realtime',
|
||||
'ietfadminllc' : 'IETF LLC',
|
||||
}
|
||||
"ops": "Ops & Management",
|
||||
"rai": "RAI",
|
||||
"iab": "IAB",
|
||||
"art": "Apps & Realtime",
|
||||
"ietfadminllc": "IETF LLC",
|
||||
}
|
||||
|
||||
parents = Group.objects.filter(
|
||||
models.Q(type="area") | models.Q(type="irtf", acronym="irtf") | models.Q(acronym='iab') | models.Q(acronym='ietfadminllc'),
|
||||
state="active"
|
||||
).order_by('type__order','type_id', 'acronym')
|
||||
models.Q(type="area")
|
||||
| models.Q(type="irtf", acronym="irtf")
|
||||
| models.Q(acronym="iab")
|
||||
| models.Q(acronym="ietfadminllc"),
|
||||
state="active",
|
||||
).order_by("type__order", "type_id", "acronym")
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def wg_menu():
|
||||
def wg_menu(flavor):
|
||||
global parents
|
||||
|
||||
for p in parents:
|
||||
p.short_name = parent_short_names.get(p.acronym) or p.name
|
||||
if p.short_name.endswith(" Area"):
|
||||
p.short_name = p.short_name[:-len(" Area")]
|
||||
p.short_name = p.short_name[: -len(" Area")]
|
||||
|
||||
if p.type_id == "area":
|
||||
p.menu_url = "/wg/#" + p.acronym
|
||||
|
@ -66,7 +70,9 @@ def wg_menu():
|
|||
p.menu_url = "/rg/"
|
||||
elif p.acronym == "iab":
|
||||
p.menu_url = "/program/"
|
||||
elif p.acronym == 'ietfadminllc':
|
||||
elif p.acronym == "ietfadminllc":
|
||||
p.menu_url = "/adm/"
|
||||
|
||||
return render_to_string('base/menu_wg.html', { 'parents': parents })
|
||||
return render_to_string(
|
||||
"base/menu_wg.html", {"parents": parents, "flavor": flavor}
|
||||
)
|
|
@ -415,9 +415,8 @@ ROOT_URLCONF = 'ietf.urls'
|
|||
|
||||
# Additional locations of static files (in addition to each app's static/ dir)
|
||||
STATICFILES_DIRS = (
|
||||
os.path.join(BASE_DIR, 'static'),
|
||||
os.path.join(BASE_DIR, 'secr/static'),
|
||||
os.path.join(BASE_DIR, 'externals/static'),
|
||||
os.path.join(BASE_DIR, 'static/dist'),
|
||||
# os.path.join(BASE_DIR, 'secr/static'),
|
||||
)
|
||||
|
||||
INSTALLED_APPS = [
|
||||
|
@ -433,7 +432,7 @@ INSTALLED_APPS = [
|
|||
'django.contrib.sites',
|
||||
'django.contrib.staticfiles',
|
||||
# External apps
|
||||
'bootstrap3',
|
||||
'django_bootstrap5',
|
||||
'corsheaders',
|
||||
'django_markup',
|
||||
'django_password_strength',
|
||||
|
|
1
ietf/static/css/datatables.scss
Normal file
|
@ -0,0 +1 @@
|
|||
@import "../../../node_modules/datatables.net-bs5/css/dataTables.bootstrap5";
|
87
ietf/static/css/ietf.scss
Normal file
|
@ -0,0 +1,87 @@
|
|||
// Enable negative margin classes.
|
||||
$enable-negative-margins: true;
|
||||
|
||||
// Don't add carets to dropdowns by default.
|
||||
// $enable-caret: false;
|
||||
|
||||
// Only import what we need:
|
||||
// https://getbootstrap.com/docs/5.1/customize/optimize/
|
||||
|
||||
// Configuration
|
||||
@import "~/node_modules/bootstrap/scss/functions";
|
||||
@import "~/node_modules/bootstrap/scss/variables";
|
||||
@import "~/node_modules/bootstrap/scss/mixins";
|
||||
@import "~/node_modules/bootstrap/scss/utilities";
|
||||
|
||||
// Layout & components
|
||||
@import "~/node_modules/bootstrap/scss/root";
|
||||
@import "~/node_modules/bootstrap/scss/reboot";
|
||||
@import "~/node_modules/bootstrap/scss/type";
|
||||
@import "~/node_modules/bootstrap/scss/images";
|
||||
@import "~/node_modules/bootstrap/scss/containers";
|
||||
@import "~/node_modules/bootstrap/scss/grid";
|
||||
@import "~/node_modules/bootstrap/scss/tables";
|
||||
@import "~/node_modules/bootstrap/scss/forms";
|
||||
@import "~/node_modules/bootstrap/scss/buttons";
|
||||
@import "~/node_modules/bootstrap/scss/transitions";
|
||||
@import "~/node_modules/bootstrap/scss/dropdown";
|
||||
@import "~/node_modules/bootstrap/scss/button-group";
|
||||
@import "~/node_modules/bootstrap/scss/nav";
|
||||
@import "~/node_modules/bootstrap/scss/navbar";
|
||||
// @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/badge";
|
||||
// @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/toasts";
|
||||
// @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/offcanvas";
|
||||
// @import "~/node_modules/bootstrap/scss/placeholders";
|
||||
|
||||
// Helpers
|
||||
@import "~/node_modules/bootstrap/scss/helpers";
|
||||
|
||||
// Utilities
|
||||
@import "~/node_modules/bootstrap/scss/utilities/api";
|
||||
|
||||
// Make the bootstrap icons available.
|
||||
// FIXME: This requires cp -r node_modules/bootstrap-icons/font/fonts static/src/css/
|
||||
// to be run manually due to parcel limitations.
|
||||
// @import "../../../node_modules/bootstrap-icons/font/bootstrap-icons";
|
||||
|
||||
// Install the datatables.net bootstrap5 styles.
|
||||
// FIXME: Including this with ~ fails for some odd reason?
|
||||
@import "../../../node_modules/datatables.net-bs5/css/dataTables.bootstrap5";
|
||||
|
||||
// Leave room for fixed-top navbar.
|
||||
body {
|
||||
padding-top: 60px;
|
||||
}
|
||||
|
||||
// Make the font size choice cascade down into group menu dropdowns.
|
||||
.leftmenu li>ul {
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
// Make the long dropdowns in the group menu scrollable.
|
||||
.group-menu .dropdown-menu {
|
||||
height: auto;
|
||||
width: auto;
|
||||
max-height: 35em;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
// Helper to constrain the size of the main logo
|
||||
.ietflogo {
|
||||
width: 75%;
|
||||
max-width: 300px;
|
||||
}
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 156 B After Width: | Height: | Size: 156 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
13
ietf/static/js/datatables.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
require('datatables.net')(window, $);
|
||||
require('datatables.net-bs5')(window, $);
|
||||
|
||||
// Disable datatable paging by default.
|
||||
$.extend($.fn.dataTable.defaults, {
|
||||
info : false,
|
||||
paging : false,
|
||||
"search": {
|
||||
"caseInsensitive": true
|
||||
}
|
||||
});
|
||||
|
||||
$(document).ready(function() { $(".tablesorter").DataTable(); });
|
78
ietf/static/js/ietf.js
Normal file
|
@ -0,0 +1,78 @@
|
|||
// Only import what we need:
|
||||
// https://getbootstrap.com/docs/5.1/customize/optimize/
|
||||
|
||||
// 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/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 jquery from "jquery"
|
||||
|
||||
window.$ = window.jQuery = jquery;
|
||||
if (!process.env.BUILD_DEPLOY) {
|
||||
// get warnings for using deprecated jquery features
|
||||
require("jquery-migrate")
|
||||
}
|
||||
|
||||
function dropdown_hover() {
|
||||
var navbar = $(this)
|
||||
.closest(".navbar");
|
||||
if (navbar.length === 0 || navbar.find(".navbar-toggler")
|
||||
.is(":hidden")) {
|
||||
$(this)
|
||||
.children(".dropdown-toggle")
|
||||
.dropdown("toggle");
|
||||
}
|
||||
}
|
||||
|
||||
if (!("ontouchstart" in document.documentElement)) {
|
||||
$("ul.nav li.dropdown, ul.nav li.dropend")
|
||||
.on("mouseenter", dropdown_hover)
|
||||
.on("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;
|
||||
}
|
||||
attachTo.find(".dropdown-menu")
|
||||
.remove();
|
||||
var menu = ['<ul class="dropdown-menu ms-n1">'];
|
||||
var groups = data[parentId];
|
||||
var gtype = "";
|
||||
for (var i = 0; i < groups.length; ++i) {
|
||||
var g = groups[i];
|
||||
if (g.type != gtype) {
|
||||
if (i > 0)
|
||||
menu.push('<li class="dropdown-divider"></li>');
|
||||
menu.push('<li class="dropdown-header">' + g.type + 's</li>');
|
||||
gtype = g.type;
|
||||
}
|
||||
menu.push('<li><a class="dropdown-item" href="' + g.url + '">' +
|
||||
g.acronym + ' — ' + g.name + '</a></li>');
|
||||
}
|
||||
menu.push("</ul>");
|
||||
for (var i = 0; i < attachTo.length; i++) {
|
||||
attachTo.closest(".dropdown-menu");
|
||||
}
|
||||
attachTo.append(menu.join(""));
|
||||
}
|
||||
}
|
||||
});
|
|
@ -1,33 +1,25 @@
|
|||
<!DOCTYPE html> {% load ietf_filters static %}
|
||||
<!doctype html>
|
||||
{# Copyright The IETF Trust 2015-2021, All Rights Reserved #}
|
||||
|
||||
{% load ietf_filters static %}
|
||||
{% load origin %}{% origin %}
|
||||
{% load bootstrap3 %}
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>{% block title %}No title{% endblock %}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link href="{% static 'ptmono/stylesheet.css' %}" rel='stylesheet' type='text/css'>
|
||||
<link href="{% static 'ptsans/stylesheet.css' %}" rel='stylesheet' type='text/css'>
|
||||
<link href="{% static 'ptserif/stylesheet.css' %}" rel='stylesheet' type='text/css'>
|
||||
{% comment %}
|
||||
<!-- Halloween
|
||||
{% comment Halloween %}
|
||||
<link href='https://fonts.googleapis.com/css?family=IM+Fell+English+SC|IM+Fell+DW+Pica:400,400italic|Nova+Mono|IM+Fell+English:400,400italic&subset=latin-ext,latin' rel='stylesheet' type='text/css'>
|
||||
-->
|
||||
{% endcomment %}
|
||||
|
||||
<link rel="stylesheet" href="{% static 'font-awesome/css/font-awesome.min.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'ietf/font-datatracker/css/font-datatracker.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'ietf/bootstrap/css/bootstrap.min.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'ietf/bootstrap/css/bootstrap-theme.min.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
|
||||
{% if debug %}
|
||||
<link rel="stylesheet" href="{% static 'jquery.tablesorter/css/theme.bootstrap.min.css' %}">
|
||||
{% endif %}
|
||||
<style>
|
||||
{% block morecss %}{% endblock %}
|
||||
{% block morecss %}{% endblock %}
|
||||
</style>
|
||||
|
||||
{% block pagehead %}{% endblock %}
|
||||
|
@ -38,136 +30,109 @@
|
|||
<link rel="shortcut icon" href="{% static 'ietf/images/ietf-icon-red3.png' %}">
|
||||
{% endif %}
|
||||
<link rel="apple-touch-icon" href="{% static 'ietf/images/apple-touch-icon.png' %}">
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body {% block bodyAttrs %}{%endblock%} data-group-menu-data-url="{% url 'ietf.group.views.group_menu_data' %}">
|
||||
<nav class="navbar {% if server_mode and server_mode != "production" %}navbar-default{% else %}navbar-inverse{% endif %} {% if navbar_mode %}{{ navbar_mode }}{% else %}navbar-fixed-top{% endif %}">
|
||||
<body {% block bodyAttrs %}{%endblock%} data-group-menu-data-url="{% url 'ietf.group.views.group_menu_data' %}">
|
||||
<nav class="navbar navbar-expand-lg {% if server_mode and server_mode != " production" %}navbar-light bg-warning{% else %}navbar-dark bg-secondary{% endif %} {% if navbar_mode %}{{ navbar_mode }}{% else %}fixed-top{% endif %}">
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/">
|
||||
<img alt="IETF Logo" src="{% static 'ietf/images/ietflogo-small-transparent.png' %}">
|
||||
{% if not user.is_authenticated %}
|
||||
{% if server_mode and server_mode != "production" %}
|
||||
<b><i><small>Development mode</small></i></b>
|
||||
{% else %}
|
||||
Datatracker
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<noscript>
|
||||
<p class="navbar-text"><small>Enable Javascript for full functionality.</small></p>
|
||||
</noscript>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbar-collapse">
|
||||
<ul class="hidden-nojs nav navbar-nav">
|
||||
{% include "base/menu.html" with flavor="top" %}
|
||||
</ul>
|
||||
{% if not user.is_authenticated %}
|
||||
<p class="navbar-text"></p>
|
||||
<a class="btn {% if server_mode and server_mode == "production" %}btn-warning{% else %}btn-default{% endif %} btn-sm navbar-btn" rel="nofollow" href="/accounts/login/?next={{request.get_full_path|urlencode}}">Sign in</a>
|
||||
{% endif %}
|
||||
|
||||
<form class="navbar-form navbar-right hidden-xs" action="/doc/search/">
|
||||
<div class="form-group">
|
||||
<input class="form-control input-sm" type="text" name="name" placeholder="Document search" required>
|
||||
<input type="hidden" name="activedrafts" value="on">
|
||||
<input type="hidden" name="rfcs" value="on">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<a class="navbar-brand" href="/">
|
||||
<img alt="IETF Logo" src="{% static 'ietf/images/ietflogo-small-transparent.png' %}">
|
||||
Datatracker
|
||||
{% if server_mode and server_mode != "production" %}
|
||||
Dev Mode
|
||||
{% endif %}
|
||||
</a>
|
||||
<div class="collapse navbar-collapse" id="navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
{% include "base/menu.html" with flavor="top" %}
|
||||
</ul>
|
||||
</div>
|
||||
{% if not user.is_authenticated %}
|
||||
<a class="d-none d-sm-block mx-5 btn {% if server_mode and server_mode == " production" %}btn-warning{% else %}btn-info{% endif %}" rel="nofollow" href="/accounts/login/?next={{request.get_full_path|urlencode}}">Sign
|
||||
in</a>
|
||||
{% endif %}
|
||||
<form class="d-flex d-none d-lg-block" action="/doc/search/">
|
||||
<input class="form-control" type="text" name="name" placeholder="Document search" required>
|
||||
<input type="hidden" name="activedrafts" value="on">
|
||||
<input type="hidden" name="rfcs" value="on">
|
||||
</form>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="container-fluid-narrow">
|
||||
</nav>
|
||||
|
||||
<div class="pt-3 container-fluid">
|
||||
{% comment %} {% bootstrap_messages %} {% endcomment %}
|
||||
{% for message in messages %}
|
||||
<div class="alert{% if message.level_tag %} alert-{% if message.level_tag == 'error' %}danger{% else %}{{ message.level_tag }}{% endif %}{% endif %}{% if message.extra_tags %} {{message.extra_tags}}{% endif %} alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>{{ message }}</div>
|
||||
<div class="alert{% if message.level_tag %} alert-{% if message.level_tag == 'error' %}danger{% else %}{{ message.level_tag }}{% endif %}{% endif %}{% if message.extra_tags %} {{message.extra_tags}}{% endif %} alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>{{ message }}</div>
|
||||
{% endfor %}
|
||||
{% if request.COOKIES.left_menu == "on" and not hide_menu %} {# ugly hack for the more or less unported meeting agenda edit pages #}
|
||||
<div class="row">
|
||||
<div class="col-md-2 visible-md visible-lg leftmenu">
|
||||
<ul class="nav nav-pills nav-stacked panel panel-default panel-body">
|
||||
{% include "base/menu.html" with flavor="left" %}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-10" id="content">
|
||||
{% else %}
|
||||
<div class="col-md-12 col-sm-12" id="content">
|
||||
{% endif %}
|
||||
{% block content %}{{ content|safe }}{% endblock %}
|
||||
{% block content_end %}{% endblock %}
|
||||
{% if request.COOKIES.left_menu == "on" and not hide_menu %}
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% block footer %}
|
||||
<hr>
|
||||
<div class="col-md-12 col-sm-12">
|
||||
<div class="text-center padded">
|
||||
<a href="https://www.rfc-editor.org/" class="padded">RFC Editor</a>
|
||||
<a href="https://www.ietf.org/llc/" class="padded">IASA & IETF LLC</a>
|
||||
<a href="https://trustee.ietf.org/" class="padded">IETF Trust</a>
|
||||
<a href="https://www.irtf.org/" class="padded">IRTF</a>
|
||||
<a href="https://www.ietf.org/" class="padded">IETF</a>
|
||||
<a href="https://www.ietf.org/iesg/" class="padded">IESG</a>
|
||||
<a href="https://www.iab.org/" class="padded">IAB</a>
|
||||
<a href="https://www.iana.org/" class="padded">IANA</a>
|
||||
<a href="https://www.ietf.org/privacy-statement/" class="padded">Privacy Statement</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<footer class="col-md-12 col-sm-12">
|
||||
<div class="col-md-12">
|
||||
<div class="text-center">
|
||||
<p class="small text-muted">
|
||||
{% if version_num %}
|
||||
<a href="/release/about">About</a> |
|
||||
IETF Datatracker |
|
||||
<a href="/release/{{version_num}}/">Version {{ version_num }}</a> |
|
||||
{{revision_date}} |
|
||||
{% endif %}
|
||||
Report a bug:
|
||||
<a href="https://trac.ietf.org/trac/ietfdb/newticket">Tracker:<span class="fa fa-bug"></span></a>
|
||||
{% if bugreport_email %}
|
||||
<a href="mailto:{{ bugreport_email }}">Email:<span class="fa fa-envelope"></span></a>
|
||||
{# ugly hack for the more or less unported meeting agenda edit pages #}
|
||||
<div class="row">
|
||||
<div class="d-none d-md-block border-end lh-sm leftmenu small" style="width: 13em;">
|
||||
<ul class="nav nav-pills flex-column">
|
||||
{% include "base/menu.html" with flavor="left" %}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col" id="content">
|
||||
{% else %}
|
||||
<div class="col" id="content">
|
||||
{% endif %}
|
||||
{% block content %}{{ content|safe }}{% endblock %}
|
||||
{% block content_end %}{% endblock %}
|
||||
{% if request.COOKIES.left_menu == "on" and not hide_menu %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<br>
|
||||
{% if python_version %}Python {{ python_version }}{% endif %} |
|
||||
{% if django_version %}Django {{ django_version }}{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% block footer %}
|
||||
<hr>
|
||||
<div class="col-md-12 col-sm-12">
|
||||
<div class="text-center padded">
|
||||
<a href="https://www.rfc-editor.org/" class="padded">RFC Editor</a>
|
||||
<a href="https://www.ietf.org/llc/" class="padded">IASA & IETF LLC</a>
|
||||
<a href="https://trustee.ietf.org/" class="padded">IETF Trust</a>
|
||||
<a href="https://www.irtf.org/" class="padded">IRTF</a>
|
||||
<a href="https://www.ietf.org/" class="padded">IETF</a>
|
||||
<a href="https://www.ietf.org/iesg/" class="padded">IESG</a>
|
||||
<a href="https://www.iab.org/" class="padded">IAB</a>
|
||||
<a href="https://www.iana.org/" class="padded">IANA</a>
|
||||
<a href="https://www.ietf.org/privacy-statement/" class="padded">Privacy Statement</a>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="col-md-12 col-sm-12">
|
||||
<div class="col-md-12">
|
||||
<div class="text-center">
|
||||
<p class="small text-muted">
|
||||
{% if version_num %}
|
||||
<a href="/release/about">About</a> |
|
||||
IETF Datatracker |
|
||||
<a href="/release/{{version_num}}/">Version {{ version_num }}</a>
|
||||
|
|
||||
{{revision_date}} |
|
||||
{% endif %}
|
||||
Report a bug:
|
||||
<a href="https://trac.ietf.org/trac/ietfdb/newticket">Tracker:<span class="fa fa-bug"></span></a>
|
||||
{% if bugreport_email %}
|
||||
<a href="mailto:{{ bugreport_email }}">Email:<span class="fa fa-envelope"></span></a>
|
||||
{% endif %}
|
||||
<br>
|
||||
{% if python_version %}Python {{ python_version }}{% endif %} |
|
||||
{% if django_version %}Django {{ django_version }}{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% include "debug.html" %}
|
||||
|
||||
{% include "debug.html" %}
|
||||
<script src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
{% block js %}{% endblock %}
|
||||
{% if debug %}
|
||||
<script src="{% static 'jquery.tablesorter/js/jquery.tablesorter.combined.min.js' %}"></script>
|
||||
{% endif %}
|
||||
</body>
|
||||
|
||||
<script src="{% static 'jquery/jquery.min.js' %}"></script>
|
||||
{% comment %}
|
||||
<!-- Remove the *-nojs attributes if we are running js. This depends on jQuery's removeClass(): -->
|
||||
<!-- Do this as early as possible (after loading the page and jQuery) to avoid rendering changes -->
|
||||
{% endcomment %}
|
||||
<script>$(".visible-nojs").removeClass("visible-nojs");</script>
|
||||
<script>$(".hidden-nojs").removeClass("hidden-nojs");</script>
|
||||
<script src="{% static 'js-cookie/src/js.cookie.js' %}"></script>
|
||||
<script src="{% static 'ietf/bootstrap/js/bootstrap.min.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
{% block js %}{% endblock %}
|
||||
{% if debug %}
|
||||
<script src="{% static 'jquery.tablesorter/js/jquery.tablesorter.combined.min.js' %}"></script>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
|
@ -1,166 +1,173 @@
|
|||
{# Copyright The IETF Trust 2015-2019, All Rights Reserved #}{% load origin %}{% origin %}
|
||||
{# Copyright The IETF Trust 2015-2019, All Rights Reserved #}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters managed_groups wg_menu active_groups_menu group_filters %}
|
||||
|
||||
{% if flavor != "top" %}
|
||||
{% include "base/menu_user.html" %}
|
||||
{% if flavor != 'top' %}
|
||||
{% include "base/menu_user.html" %}
|
||||
{% endif %}
|
||||
|
||||
<li {% if flavor == "top" %}class="dropdown"{% else %}class="nav-header"{% endif %}>
|
||||
{% if flavor == "top" %}<a href="#" class="dropdown-toggle" data-toggle="dropdown">{% endif %}
|
||||
{#<span class="fa fa-users"></span>#}
|
||||
Groups
|
||||
{% if flavor == "top" %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li class="nav-item dropdown">
|
||||
{% if flavor == "top" %}
|
||||
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-auto-close="false" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
Groups
|
||||
</a>
|
||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||
{% else %}
|
||||
<span class="fw-bolder">Groups</span>
|
||||
{% endif %}
|
||||
{%if flavor == 'top' %}<li class="dropdown-header">By area/parent</li>{% endif %}
|
||||
{% wg_menu flavor %}
|
||||
<li class="dropend">
|
||||
<a class="dropdown-item dropdown-toggle {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.active_groups" %}">Other</a>
|
||||
{% active_groups_menu flavor %}
|
||||
</li>
|
||||
|
||||
<li class="dropdown-header visible-lg-block">By area/parent</li>
|
||||
{% endif %}
|
||||
{% wg_menu %}
|
||||
<li class="dropdown-submenu group-menu"><a href="{% url "ietf.group.views.active_groups" %}">Other</a>{% active_groups_menu %} </li>
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li {%if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>New work</li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.chartering_groups" %}">Chartering groups</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.bofs" group_type="wg" %}">BOFs</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.doc.views_bofreq.bof_requests" %}">BOF Requests</a></li>
|
||||
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>New work</li>
|
||||
<li><a href="{% url "ietf.group.views.chartering_groups" %}">Chartering groups</a></li>
|
||||
<li><a href="{% url "ietf.group.views.bofs" group_type="wg" %}">BOFs</a></li>
|
||||
<li><a href="{% url "ietf.doc.views_bofreq.bof_requests" %}">BOF Requests</a></li>
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li {%if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>Other groups</li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.concluded_groups" %}">Concluded groups</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.mailinglists.views.nonwg' %}">Non-WG lists</a></li>
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
||||
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>Other groups</li>
|
||||
<li><a href="{% url "ietf.group.views.concluded_groups" %}">Concluded groups</a></li>
|
||||
<li><a href="{% url 'ietf.mailinglists.views.nonwg' %}">Non-WG lists</a></li>
|
||||
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
||||
</li>
|
||||
|
||||
<li {% if flavor == "top" %}class="dropdown"{% else %}class="nav-header"{% endif %}>
|
||||
{% if flavor == "top" %}<a href="#" class="dropdown-toggle" data-toggle="dropdown">{% endif %}
|
||||
{#<span class="fa fa-file-text"></span>#}
|
||||
Documents
|
||||
{% if flavor == "top" %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% endif %}
|
||||
<li><a href="{% url "ietf.doc.views_search.search" %}">Search</a></li>
|
||||
<li><a href="{% url "ietf.doc.views_search.recent_drafts" %}">Recent drafts</a></li>
|
||||
<li><a href="{% url "ietf.submit.views.upload_submission" %}">Draft submission</a></li>
|
||||
|
||||
{% if user and user.is_authenticated %}
|
||||
<li><a href="{% url "ietf.community.views.view_list" user.username %}">My tracked docs</a></li>
|
||||
|
||||
{% if user|has_role:"Area Director,Secretariat" %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li><a href="{% url 'ietf.doc.views_status_change.rfc_status_changes' %}">RFC status changes</a></li>
|
||||
<li class="nav-item dropdown">
|
||||
{% if flavor == "top" %}
|
||||
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
Documents
|
||||
</a>
|
||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||
{% else %}
|
||||
<span class="fw-bolder">Documents</span>
|
||||
{% endif %}
|
||||
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li><a href="{% url 'ietf.doc.views_ballot.irsg_ballot_status' %}">IRSG ballot status</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.doc.views_search.search" %}">Search</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.doc.views_search.recent_drafts" %}">Recent drafts</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.submit.views.upload_submission" %}">Draft submission</a></li>
|
||||
|
||||
{% if user|has_role:"WG Chair,RG Chair" %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>Manage</li>
|
||||
<li><a href="{% url "ietf.submit.views.approvals" %}">Approve a draft</a></li>
|
||||
{% if user and user.is_authenticated %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.community.views.view_list" user.username %}">My tracked docs</a></li>
|
||||
|
||||
{% for g in user|docman_groups %}
|
||||
<li><a href="{% url "ietf.group.views.group_documents" g.acronym %}">{{ g.acronym }} {{ g.type.slug }} docs</a></li>
|
||||
{% endfor %}
|
||||
{% for g in user|matman_groups %}
|
||||
<li><a href="{% url "ietf.group.views.meetings" g.acronym %}">{{ g.acronym }} {{ g.type.slug }} meetings</a></li>
|
||||
{% endfor %}
|
||||
{% if user|has_role:"Area Director,Secretariat" %}
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.doc.views_status_change.rfc_status_changes' %}">RFC status changes</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.doc.views_ballot.irsg_ballot_status' %}">IRSG ballot status</a></li>
|
||||
|
||||
{% if user|has_role:"WG Chair,RG Chair" %}
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li {%if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>Manage</li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.submit.views.approvals" %}">Approve a draft</a></li>
|
||||
|
||||
{% for g in user|docman_groups %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.group_documents" g.acronym %}">{{ g.acronym }} {{ g.type.slug }} docs</a></li>
|
||||
{% endfor %}
|
||||
{% for g in user|matman_groups %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.meetings" g.acronym %}">{{ g.acronym }} {{ g.type.slug }} meetings</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Review Team Secretary" %}
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li {%if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>Review Teams</li>
|
||||
{% for g in user|managed_review_groups %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.review_requests" g.acronym %}">{{ g.acronym }} reviews</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if user|active_nomcoms %}
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li {%if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>NomComs</li>
|
||||
{% for g in user|active_nomcoms %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.nomcom.views.private_index" g.nomcom_set.first.year %}">{{ g.acronym|capfirst }}</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Review Team Secretary" %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>Review Teams</li>
|
||||
{% for g in user|managed_review_groups %}
|
||||
<li><a href="{% url "ietf.group.views.review_requests" g.acronym %}">{{ g.acronym }} reviews</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li {%if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>RFC streams</li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.stream_documents" acronym="iab" %}">IAB</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.stream_documents" acronym="irtf" %}">IRTF</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.group.views.stream_documents" acronym="ise" %}">ISE</a></li>
|
||||
|
||||
{% if user|active_nomcoms %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>Nomcoms</li>
|
||||
{% for g in user|active_nomcoms %}
|
||||
<li><a href="{% url "ietf.nomcom.views.private_index" g.nomcom_set.first.year %}">{{ g.acronym|capfirst }}</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>RFC streams</li>
|
||||
<li><a href="{% url "ietf.group.views.stream_documents" acronym="iab" %}">IAB</a></li>
|
||||
<li><a href="{% url "ietf.group.views.stream_documents" acronym="irtf" %}">IRTF</a></li>
|
||||
<li><a href="{% url "ietf.group.views.stream_documents" acronym="ise" %}">ISE</a></li>
|
||||
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
||||
{% if flavor == 'top' %}</ul>{% endif %}
|
||||
</li>
|
||||
|
||||
<li {% if flavor == "top" %}class="dropdown"{% else %}class="nav-header"{% endif %}>
|
||||
{% if flavor == "top" %}<a href="#" class="dropdown-toggle" data-toggle="dropdown">{% endif %}
|
||||
{#<span class="fa fa-comments"></span>#}
|
||||
Meetings
|
||||
{% if flavor == "top" %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% endif %}
|
||||
<li class="nav-item dropdown">
|
||||
{% if flavor == "top" %}
|
||||
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
Meetings
|
||||
</a>
|
||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||
{% else %}
|
||||
<span class="fw-bolder">Meetings</span>
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if flavor == "top" %}
|
||||
<li class="dropdown-header visible-lg-block">Next meeting</li>
|
||||
{% endif %}
|
||||
<li><a href="/meeting/agenda/">Agenda</a></li>
|
||||
<li><a href="/meeting/materials/">Materials</a></li>
|
||||
<li><a href="/meeting/floor-plan/">Floor plan</a></li>
|
||||
<li><a href="https://www.ietf.org/how/meetings/register/">Registration</a></li>
|
||||
<li><a href="{% url 'ietf.meeting.views.important_dates' %}">Important dates</a></li>
|
||||
<li><a href="/secr/sreq/">Request a session</a></li>
|
||||
<li><a href="/meeting/requests">Session requests</a></li>
|
||||
{% if flavor == "top" %}
|
||||
<li class="divider hidden-xs"></li>
|
||||
<li class="dropdown-header visible-lg-block">Upcoming meetings</li>
|
||||
{% endif %}
|
||||
<li><a href="/meeting/upcoming">Upcoming meetings</a></li>
|
||||
{% if flavor == "top" %}
|
||||
<li class="divider hidden-xs"></li>
|
||||
<li class="dropdown-header visible-lg-block">Past meetings</li>
|
||||
{% endif %}
|
||||
<li><a href="/meeting/past">Past meetings</a></li>
|
||||
<li><a href="https://www.ietf.org/how/meetings/past/">Meeting proceedings</a></li>
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/meeting/agenda/">Agenda</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/meeting/materials/">Materials</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/meeting/floor-plan/">Floor plan</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="https://www.ietf.org/how/meetings/register/">Registration</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.meeting.views.important_dates' %}">Important dates</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/secr/sreq/">Request a session</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/meeting/requests">Session requests</a></li>
|
||||
{% if flavor == 'top' %}
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li {%if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>New work</li>
|
||||
<li class="dropdown-header">Upcoming meetings</li>
|
||||
{% endif %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/meeting/upcoming">Upcoming meetings</a></li>
|
||||
{% if flavor == 'top' %}
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li {%if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>New work</li>
|
||||
<li class="dropdown-header">Past meetings</li>
|
||||
{% endif %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/meeting/past">Past meetings</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="https://www.ietf.org/how/meetings/past/">Meeting proceedings</a></li>
|
||||
{% if flavor == 'top' %}</ul>{% endif %}
|
||||
</li>
|
||||
|
||||
<li {% if flavor == "top" %}class="dropdown"{% else %}class="nav-header"{% endif %}>
|
||||
{% if flavor == "top" %}<a href="#" class="dropdown-toggle" data-toggle="dropdown">{% endif %}
|
||||
{#<span class="fa fa-folder"></span>#}
|
||||
Other
|
||||
{% if flavor == "top" %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% endif %}
|
||||
<li class="nav-item dropdown">
|
||||
{% if flavor == "top" %}
|
||||
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
Other
|
||||
</a>
|
||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||
{% else %}
|
||||
<span class="fw-bolder">Other</span>
|
||||
{% endif %}
|
||||
|
||||
<li><a href="/ipr/">IPR disclosures</a></li>
|
||||
<li><a href="/liaison/">Liaison statements</a></li>
|
||||
<li><a href="/iesg/agenda/">IESG agenda</a></li>
|
||||
<li><a href="{% url 'ietf.nomcom.views.index' %}">NomComs</a></li>
|
||||
<li><a href="/doc/downref/">Downref registry</a></li>
|
||||
<li class="dropdown-submenu">
|
||||
<a href="{% url "ietf.stats.views.stats_index" %}">Statistics</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{% url 'ietf.stats.views.document_stats' %}">Drafts/RFCs</a></li>
|
||||
<li><a href="{% url 'ietf.stats.views.meeting_stats' %}">Meetings</a></li>
|
||||
{% if user and user.is_authenticated %}
|
||||
<li><a href="{% url 'ietf.stats.views.review_stats' %}">Reviews</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="/group/edu/materials/">Tutorials</a></li>
|
||||
<li><a href="/api/">API Help</a></li>
|
||||
<li><a href="{% url 'ietf.release.views.release' %}">Release notes</a></li>
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li><a href="https://trac.ietf.org/trac/ietfdb/newticket"><span class="fa fa-bug"></span> Report a bug</a></li>
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/ipr/">IPR disclosures</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/liaison/">Liaison statements</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/iesg/agenda/">IESG agenda</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.nomcom.views.index' %}">NomComs</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/doc/downref/">Downref registry</a></li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.stats.views.stats_index" %}">Statistics</a>
|
||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.stats.views.document_stats' %}">Drafts/RFCs</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.stats.views.meeting_stats' %}">Meetings</a></li>
|
||||
{% if user and user.is_authenticated %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.stats.views.review_stats' %}">Reviews</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/group/edu/materials/">Tutorials</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/api/">API Help</a></li>
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.release.views.release' %}">Release notes</a></li>
|
||||
{% if flavor == 'top' %}<li class="dropdown-divider"></li>{% endif %}
|
||||
<li><a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="https://trac.ietf.org/trac/ietfdb/newticket"><span class="fa fa-bug"></span> Report a bug</a></li>
|
||||
{% if flavor == 'top' %}</ul>{% endif %}
|
||||
</li>
|
||||
|
||||
{% if flavor == "top" %}
|
||||
{% include "base/menu_user.html" %}
|
||||
{% if flavor == 'top' %}
|
||||
{% include "base/menu_user.html" %}
|
||||
{% endif %}
|
|
@ -1,13 +1,17 @@
|
|||
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% for p in parents %}
|
||||
<li>
|
||||
<a href="{{ p.menu_url }}">Active {{ p.name }}s</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% for o in others %}
|
||||
<li>
|
||||
<a href="{{o.menu_url}}">{{ o.acronym|upper }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||
{% for p in parents %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap{% endif %}" href="{{ p.menu_url }}">Active {{ p.name }}s</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% for o in others %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap{% endif %}" href="{{o.menu_url}}">{{ o.acronym|upper }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
|
@ -1,72 +1,192 @@
|
|||
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
<li {% if flavor == "top" %}class="dropdown"{% else %}class="nav-header"{% endif %}>
|
||||
{% if flavor == "top" %}
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
{% if user.is_authenticated %}{{ user }}{% else %} User {% endif %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% else %}
|
||||
User
|
||||
{% endif %}
|
||||
|
||||
{% if request.get_full_path == "/accounts/logout/" %}
|
||||
<li><a rel="nofollow" href="/accounts/login{% if "/accounts/logout/" not in request.get_full_path %}/?next={{request.get_full_path|urlencode}}{% endif %}">Sign in</a></li>
|
||||
{% else %}
|
||||
{% if user.is_authenticated %}
|
||||
<li><a rel="nofollow" href="/accounts/logout/" >Sign out</a></li>
|
||||
<li><a rel="nofollow" href="/accounts/profile/">Account info</a></li>
|
||||
<li><a href="/person/{{user.person.name|urlencode}}">Public profile page</a></li>
|
||||
<li><a href="{%url "ietf.cookies.views.preferences" %}" rel="nofollow">Preferences</a></li>
|
||||
<li><a href="{%url "ietf.ietfauth.views.apikey_index" %}" rel="nofollow">API keys</a></li>
|
||||
<li><a rel="nofollow" href="/accounts/password/">Change password</a></li>
|
||||
<li><a rel="nofollow" href="/accounts/username/">Change username</a></li>
|
||||
<li class="nav-item dropdown">
|
||||
{% if flavor == "top" %}
|
||||
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
{% if user.is_authenticated %}
|
||||
{{ user }}
|
||||
{% else %}
|
||||
User
|
||||
{% endif %}
|
||||
</a>
|
||||
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
|
||||
{% else %}
|
||||
<li><a rel="nofollow" href="/accounts/login/?next={{request.get_full_path|urlencode}}">Sign in</a></li>
|
||||
<li><a rel="nofollow" href="/accounts/reset/">Password reset</a></li>
|
||||
<li><a href="{%url "ietf.cookies.views.preferences" %}" rel="nofollow">Preferences</a></li>
|
||||
<span class="fw-bolder">User</span>
|
||||
{% endif %}
|
||||
<li><a href="{% url 'personal-information' %}">Handling of personal information</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if not request.user.is_authenticated %}
|
||||
<li><a href="{% url "ietf.ietfauth.views.create_account" %}">New account</a></li>
|
||||
{% endif %}
|
||||
{% if request.get_full_path == "/accounts/logout/" %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" rel="nofollow" href="/accounts/login{% if "/accounts/logout/" not in request.get_full_path %}/?next={{request.get_full_path|urlencode}}{% endif %}">
|
||||
Sign in
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
{% if user.is_authenticated %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" rel="nofollow" href="/accounts/logout/">
|
||||
Sign out
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" rel="nofollow" href="/accounts/profile/">
|
||||
Account info
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/person/{{user.person.name|urlencode}}">
|
||||
Public profile page
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{%url "ietf.cookies.views.preferences" %}" rel="nofollow">
|
||||
Preferences
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{%url "ietf.ietfauth.views.apikey_index" %}" rel="nofollow">
|
||||
API keys
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" rel="nofollow" href="/accounts/password/">
|
||||
Change password
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" rel="nofollow" href="/accounts/username/">
|
||||
Change username
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" rel="nofollow" href="/accounts/login/?next={{request.get_full_path|urlencode}}">
|
||||
Sign in
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" rel="nofollow" href="/accounts/reset/">
|
||||
Password reset
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{%url "ietf.cookies.views.preferences" %}" rel="nofollow">
|
||||
Preferences
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'personal-information' %}">Handling of personal information
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Reviewer" %}
|
||||
<li><a href="{% url "ietf.ietfauth.views.review_overview" %}">My reviews</a></li>
|
||||
{% endif %}
|
||||
{% if not request.user.is_authenticated %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.ietfauth.views.create_account" %}">
|
||||
New account
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Area Director" %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>AD dashboard</li>
|
||||
<li><a href="{% url 'ietf.doc.views_search.docs_for_ad' name=user.person.full_name_as_key %}">My docs</a></li>
|
||||
<li><a href="{% url "ietf.iesg.views.agenda_documents" %}">Next telechat</a></li>
|
||||
<li><a href="{% url "ietf.iesg.views.discusses" %}">Discusses</a></li>
|
||||
<li><a href="{% url "ietf.iesg.views.milestones_needing_review" %}">Milestone review</a></li>
|
||||
<li><a href="{% url "ietf.doc.views_search.drafts_in_last_call" %}">Last Call docs</a></li>
|
||||
{% endif %}
|
||||
{% if user|has_role:"Reviewer" %}
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.ietfauth.views.review_overview" %}">
|
||||
My reviews
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>IETF secretariat</li>
|
||||
<li><a href="/admin/iesg/telechatdate/">Telechat dates</a></li>
|
||||
<li><a href="/admin/iesg/telechatagendaitem/">Management items</a></li>
|
||||
<li><a href="{% url "ietf.iesg.views.milestones_needing_review" %}">Milestones</a></li>
|
||||
<li><a href="{% url "ietf.sync.views.discrepancies" %}">Sync discrepancies</a>
|
||||
<li><a href="{% url "ietf.ietfauth.views.add_account_whitelist" %}">Account whitelist</a>
|
||||
{% endif %}
|
||||
{% if user|has_role:"Area Director" %}
|
||||
{% if flavor == "top" %}<li class="divider"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header"{% else %}class="nav-header"{% endif %}>
|
||||
AD dashboard
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url 'ietf.doc.views_search.docs_for_ad' name=user.person.full_name_as_key %}">
|
||||
My docs
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.iesg.views.agenda_documents" %}">
|
||||
Next telechat
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.iesg.views.discusses" %}">
|
||||
Discusses
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.iesg.views.milestones_needing_review" %}">
|
||||
Milestone review
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.doc.views_search.drafts_in_last_call" %}">
|
||||
Last Call docs
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"IANA" %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>IANA</li>
|
||||
<li><a href="{% url "ietf.sync.views.discrepancies" %}">Sync discrepancies</a></li>
|
||||
{% endif %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
{% if flavor == "top" %}<li class="divider"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header"{% else %}class="nav-header"{% endif %}>
|
||||
IETF secretariat
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/admin/iesg/telechatdate/">
|
||||
Telechat dates
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="/admin/iesg/telechatagendaitem/">
|
||||
Management items
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.iesg.views.milestones_needing_review" %}">
|
||||
Milestones
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.sync.views.discrepancies" %}">
|
||||
Sync discrepancies
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.ietfauth.views.add_account_whitelist" %}">
|
||||
Account whitelist
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"RFC Editor" %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header hidden-xs"{% else %}class="nav-header"{% endif %}>RFC Editor</li>
|
||||
<li><a href="{% url "ietf.sync.views.discrepancies" %}">Sync discrepancies</a></li>
|
||||
{% endif %}
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
||||
{% if user|has_role:"IANA" %}
|
||||
{% if flavor == "top" %}<li class="divider"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header"{% else %}class="nav-header"{% endif %}>
|
||||
IANA
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.sync.views.discrepancies" %}">
|
||||
Sync discrepancies
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"RFC Editor" %}
|
||||
{% if flavor == "top" %}<li class="divider"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header"{% else %}class="nav-header"{% endif %}>
|
||||
RFC Editor
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{% url "ietf.sync.views.discrepancies" %}">
|
||||
Sync discrepancies
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
||||
</li>
|
|
@ -1,6 +1,12 @@
|
|||
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
||||
{% for p in parents %}
|
||||
<li class="hidden-nojs dropdown-submenu group-menu group-parent-{{ p.id }}">
|
||||
<a href="{{ p.menu_url }}">{{ p.short_name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<li class="hidden-nojs dropend group-menu group-parent-{{ p.id }}">
|
||||
<a class="dropdown-item dropdown-toggle {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{{ p.menu_url }}">
|
||||
{{ p.short_name }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
14450
package-lock.json
generated
Normal file
29
package.json
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"@popperjs/core": "^2.10.2",
|
||||
"bootstrap": "^5.1.3",
|
||||
"datatables.net": "^1.11.3",
|
||||
"datatables.net-bs5": "^1.11.3",
|
||||
"jquery": "^3.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@parcel/transformer-sass": "^2.0.1",
|
||||
"jquery-migrate": "^3.3.2",
|
||||
"parcel": "^2.0.0"
|
||||
},
|
||||
"source": [
|
||||
"ietf/static/js/ietf.js",
|
||||
"ietf/static/js/datatables.js",
|
||||
"ietf/static/css/ietf.scss",
|
||||
"ietf/static/css/datatables.scss",
|
||||
"ietf/static/images/ietflogo-small-transparent.png",
|
||||
"ietf/static/images/ietflogo.png",
|
||||
"ietf/static/images/apple-touch-icon.png",
|
||||
"ietf/static/images/ietf-icon-red3.png"
|
||||
],
|
||||
"targets": {
|
||||
"default": {
|
||||
"distDir": "ietf/static/dist/ietf"
|
||||
}
|
||||
}
|
||||
}
|