Reverted erroneous commit [8495] to the tags branch.
- Legacy-Id: 8496
Note: SVN reference [8495] has been migrated to Git commit c706413064
This commit is contained in:
parent
c706413064
commit
ad2777972d
25
README
25
README
|
@ -1,25 +0,0 @@
|
|||
This is the "facelift" datatracker branch that uses Twitter Bootstrap for
|
||||
the UI.
|
||||
|
||||
You need to install a few new django extensions:
|
||||
https://pypi.python.org/pypi/django-widget-tweaks
|
||||
https://pypi.python.org/pypi/django-bootstrap3
|
||||
https://pypi.python.org/pypi/django-typogrify
|
||||
|
||||
The meta goal of this effort is: *** NO CHANGES TO THE PYTHON CODE ***
|
||||
|
||||
Whenever changes to the python code are made, they can only fix HTML bugs,
|
||||
or add comments (tagged with "FACELIFT") about functionality that can be
|
||||
removed once the facelift templates become default. Or they need to add
|
||||
functionality that is only called from the new facelift templates.
|
||||
|
||||
Javascript that is only used on one template goes into that template.
|
||||
Javascript that is used by more than one template goes into ietf.js.
|
||||
|
||||
CSS that is only used on one template goes into that template.
|
||||
CSS that is used by more than one template goes into ietf.css. No CSS in the
|
||||
templates or - god forbid - style tags! (And no CSS or HTML styling in
|
||||
python code!!)
|
||||
|
||||
Templates that use jquery or bootstrap plugins include the css in the pagehead
|
||||
block, and the js in the js block.
|
11
TODO
11
TODO
|
@ -1,11 +0,0 @@
|
|||
Major pieces not facelifted: milestone editing, liaison editing, WG workflow customization
|
||||
|
||||
Use affix for navigation on active_wgs.html
|
||||
|
||||
Figure out why {% if debug %} does not work in the text templates under ietf/templates_facelift/community/public.
|
||||
|
||||
Make django generate HTML5 date inputs or use a js-based datepicker.
|
||||
|
||||
Deferring ballots does not work. (Seems to be an upstream bug.)
|
||||
|
||||
Make tables that are too wide to usefully work on small screens responsive. See http://getbootstrap.com/css/#tables-responsive
|
|
@ -1,6 +1,5 @@
|
|||
from django import template
|
||||
from django.template.loader import render_to_string
|
||||
from django.conf import settings
|
||||
|
||||
from ietf.community.models import CommunityList
|
||||
from ietf.group.models import Role
|
||||
|
@ -10,7 +9,7 @@ register = template.Library()
|
|||
|
||||
|
||||
class CommunityListNode(template.Node):
|
||||
|
||||
|
||||
def __init__(self, user, var_name):
|
||||
self.user = user
|
||||
self.var_name = var_name
|
||||
|
@ -58,13 +57,13 @@ def show_field(field, doc):
|
|||
|
||||
|
||||
class CommunityListViewNode(template.Node):
|
||||
|
||||
|
||||
def __init__(self, clist):
|
||||
self.clist = clist
|
||||
|
||||
def render(self, context):
|
||||
clist = self.clist.resolve(context)
|
||||
if settings.DEBUG or not clist.cached:
|
||||
if not clist.cached:
|
||||
clist.cached = render_to_string('community/raw_view.html',
|
||||
{'cl': clist,
|
||||
'dc': clist.get_display_config()})
|
||||
|
|
|
@ -87,32 +87,35 @@ def ballot_icon(context, doc):
|
|||
positions = list(doc.active_ballot().active_ad_positions().items())
|
||||
positions.sort(key=sort_key)
|
||||
|
||||
res = ['<a href="%s" data-toggle="modal" data-target="#modal-%d" title="IESG positions (click to show more)" class="ballot-icon"><table>' % (
|
||||
edit_position_url = ""
|
||||
if has_role(user, "Area Director"):
|
||||
edit_position_url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=doc.name, ballot_id=ballot.pk))
|
||||
|
||||
title = "IESG positions (click to show more%s)" % (", right-click to edit position" if edit_position_url else "")
|
||||
|
||||
res = ['<a href="%s" data-popup="%s" data-edit="%s" title="%s" class="ballot-icon"><table>' % (
|
||||
urlreverse("doc_ballot", kwargs=dict(name=doc.name, ballot_id=ballot.pk)),
|
||||
urlreverse("ietf.doc.views_doc.ballot_popup", kwargs=dict(name=doc.name, ballot_id=ballot.pk)),
|
||||
ballot.pk)]
|
||||
edit_position_url,
|
||||
title
|
||||
)]
|
||||
|
||||
res.append("<tr>")
|
||||
|
||||
for i, (ad, pos) in enumerate(positions):
|
||||
if i > 0 and i % 5 == 0:
|
||||
res.append("</tr><tr>")
|
||||
res.append("</tr>")
|
||||
res.append("<tr>")
|
||||
|
||||
c = "position-%s" % (pos.pos.slug if pos else "norecord")
|
||||
|
||||
if user_is_person(user, ad):
|
||||
c += " my"
|
||||
|
||||
res.append('<td class="%s"></td>' % c)
|
||||
res.append('<td class="%s" />' % c)
|
||||
|
||||
# add sufficient table calls to last row to avoid HTML validation warning
|
||||
while (i + 1) % 5 != 0:
|
||||
res.append('<td class="empty"></td>')
|
||||
i = i + 1
|
||||
|
||||
res.append("</tr></table></a>")
|
||||
# XXX FACELIFT: Loading via href will go away in bootstrap 4.
|
||||
# See http://getbootstrap.com/javascript/#modals-usage
|
||||
res.append('<div id="modal-%d" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"><div class="modal-dialog modal-lg"><div class="modal-content"></div></div></div>' % ballot.pk)
|
||||
res.append("</tr>")
|
||||
res.append("</table></a>")
|
||||
|
||||
return "".join(res)
|
||||
|
||||
|
@ -134,8 +137,7 @@ def ballotposition(doc, user):
|
|||
|
||||
|
||||
@register.filter
|
||||
# FACELIFT: added flavor argument for styling
|
||||
def state_age_colored(doc, flavor=""):
|
||||
def state_age_colored(doc):
|
||||
if doc.type_id == 'draft':
|
||||
if not doc.get_state_slug() in ["active", "rfc"]:
|
||||
# Don't show anything for expired/withdrawn/replaced drafts
|
||||
|
@ -154,7 +156,7 @@ def state_age_colored(doc, flavor=""):
|
|||
except IndexError:
|
||||
state_date = datetime.date(1990,1,1)
|
||||
days = (datetime.date.today() - state_date).days
|
||||
# loosely based on
|
||||
# loosely based on
|
||||
# http://trac.tools.ietf.org/group/iesg/trac/wiki/PublishPath
|
||||
if iesg_state == "lc":
|
||||
goal1 = 30
|
||||
|
@ -178,26 +180,16 @@ def state_age_colored(doc, flavor=""):
|
|||
goal1 = 14
|
||||
goal2 = 28
|
||||
if days > goal2:
|
||||
if flavor == "facelift":
|
||||
class_name = "label label-danger"
|
||||
else:
|
||||
class_name = "ietf-small ietf-highlight-r"
|
||||
class_name = "ietf-small ietf-highlight-r"
|
||||
elif days > goal1:
|
||||
if flavor == "facelift":
|
||||
class_name = "label label-warning"
|
||||
else:
|
||||
class_name = "ietf-small ietf-highlight-y"
|
||||
class_name = "ietf-small ietf-highlight-y"
|
||||
else:
|
||||
class_name = "ietf-small"
|
||||
if days > goal1:
|
||||
title = ' title="Goal is <%d days"' % (goal1,)
|
||||
else:
|
||||
title = ''
|
||||
# It's too bad that this function returns HTML; this makes it hard to
|
||||
# style. For the facelift, I therefore needed to add a new "flavor"
|
||||
# parameter, which is ugly.
|
||||
return mark_safe('<span class="%s"%s>%sfor %d day%s%s</span>' % (
|
||||
class_name, title, '(' if flavor != "facelift" else "", days,
|
||||
's' if days != 1 else '', '(' if flavor != "facelift" else "" ))
|
||||
return mark_safe('<span class="%s"%s>(for %d day%s)</span>' % (
|
||||
class_name, title, days, 's' if days != 1 else ''))
|
||||
else:
|
||||
return ""
|
||||
|
|
|
@ -9,7 +9,7 @@ from email.utils import parseaddr
|
|||
from ietf.doc.models import ConsensusDocEvent
|
||||
from django import template
|
||||
from django.utils.html import escape, fix_ampersands
|
||||
from django.template.defaultfilters import truncatewords_html, linebreaksbr, stringfilter, urlize, striptags
|
||||
from django.template.defaultfilters import truncatewords_html, linebreaksbr, stringfilter, urlize
|
||||
from django.template import resolve_variable
|
||||
from django.utils.safestring import mark_safe, SafeData
|
||||
from django.utils.html import strip_tags
|
||||
|
@ -48,12 +48,12 @@ def parse_email_list(value):
|
|||
u'<a href="mailto:joe@example.org">joe@example.org</a>, <a href="mailto:fred@example.com">fred@example.com</a>'
|
||||
|
||||
Parsing a non-string should return the input value, rather than fail:
|
||||
|
||||
|
||||
>>> parse_email_list(['joe@example.org', 'fred@example.com'])
|
||||
['joe@example.org', 'fred@example.com']
|
||||
|
||||
|
||||
Null input values should pass through silently:
|
||||
|
||||
|
||||
>>> parse_email_list('')
|
||||
''
|
||||
|
||||
|
@ -87,7 +87,7 @@ def fix_angle_quotes(value):
|
|||
if "<" in value:
|
||||
value = re.sub("<([\w\-\.]+@[\w\-\.]+)>", "<\1>", value)
|
||||
return value
|
||||
|
||||
|
||||
# there's an "ahref -> a href" in GEN_UTIL
|
||||
# but let's wait until we understand what that's for.
|
||||
@register.filter(name='make_one_per_line')
|
||||
|
@ -99,7 +99,7 @@ def make_one_per_line(value):
|
|||
'a\\nb\\nc'
|
||||
|
||||
Pass through non-strings:
|
||||
|
||||
|
||||
>>> make_one_per_line([1, 2])
|
||||
[1, 2]
|
||||
|
||||
|
@ -110,7 +110,7 @@ def make_one_per_line(value):
|
|||
return re.sub(", ?", "\n", value)
|
||||
else:
|
||||
return value
|
||||
|
||||
|
||||
@register.filter(name='timesum')
|
||||
def timesum(value):
|
||||
"""
|
||||
|
@ -222,7 +222,7 @@ def rfclink(string):
|
|||
URL for that RFC.
|
||||
"""
|
||||
string = str(string);
|
||||
return "//tools.ietf.org/html/rfc" + string;
|
||||
return "http://tools.ietf.org/html/rfc" + string;
|
||||
|
||||
@register.filter(name='urlize_ietf_docs', is_safe=True, needs_autoescape=True)
|
||||
def urlize_ietf_docs(string, autoescape=None):
|
||||
|
@ -274,7 +274,7 @@ def truncate_ellipsis(text, arg):
|
|||
return escape(text[:num-1])+"…"
|
||||
else:
|
||||
return escape(text)
|
||||
|
||||
|
||||
@register.filter
|
||||
def split(text, splitter=None):
|
||||
return text.split(splitter)
|
||||
|
@ -375,7 +375,7 @@ def linebreaks_lf(text):
|
|||
@register.filter(name='clean_whitespace')
|
||||
def clean_whitespace(text):
|
||||
"""
|
||||
Map all ASCII control characters (0x00-0x1F) to spaces, and
|
||||
Map all ASCII control characters (0x00-0x1F) to spaces, and
|
||||
remove unnecessary spaces.
|
||||
"""
|
||||
text = re.sub("[\000-\040]+", " ", text)
|
||||
|
@ -384,7 +384,7 @@ def clean_whitespace(text):
|
|||
@register.filter(name='unescape')
|
||||
def unescape(text):
|
||||
"""
|
||||
Unescape />/<
|
||||
Unescape />/<
|
||||
"""
|
||||
text = text.replace(">", ">")
|
||||
text = text.replace("<", "<")
|
||||
|
@ -423,7 +423,7 @@ def has_role(user, role_names):
|
|||
@register.filter
|
||||
def stable_dictsort(value, arg):
|
||||
"""
|
||||
Like dictsort, except it's stable (preserves the order of items
|
||||
Like dictsort, except it's stable (preserves the order of items
|
||||
whose sort key is the same). See also bug report
|
||||
http://code.djangoproject.com/ticket/12110
|
||||
"""
|
||||
|
@ -448,10 +448,10 @@ def format_history_text(text):
|
|||
if text.startswith("This was part of a ballot set with:"):
|
||||
full = urlize_ietf_docs(full)
|
||||
|
||||
full = mark_safe(keep_spacing(linebreaksbr(urlize_html(sanitize_html(full)))))
|
||||
full = mark_safe(keep_spacing(linebreaksbr(urlize(sanitize_html(full)))))
|
||||
snippet = truncatewords_html(full, 25)
|
||||
if snippet != full:
|
||||
return mark_safe(u'<div class="snippet">%s<button class="btn btn-xs btn-default show-all"><span class="fa fa-caret-down"></span></button></div><div class="hidden full">%s</div>' % (snippet, full))
|
||||
return mark_safe(u'<div class="snippet">%s<span class="show-all">[show all]</span></div><div style="display:none" class="full">%s</div>' % (snippet, full))
|
||||
return full
|
||||
|
||||
@register.filter
|
||||
|
@ -512,66 +512,3 @@ def consensus(doc):
|
|||
else:
|
||||
return "Unknown"
|
||||
|
||||
# FACELIFT: The following filters are only used by the facelift UI:
|
||||
|
||||
@register.filter
|
||||
def pos_to_label(text):
|
||||
"""Return a valid Bootstrap3 label type for a ballot position."""
|
||||
return {
|
||||
'Yes': 'success',
|
||||
'No Objection': 'info',
|
||||
'Abstain': 'warning',
|
||||
'Discuss': 'danger',
|
||||
'Block': 'danger',
|
||||
'Recuse': 'default',
|
||||
}.get(str(text), 'blank')
|
||||
|
||||
@register.filter
|
||||
def capfirst_allcaps(text):
|
||||
from django.template import defaultfilters
|
||||
"""Like capfirst, except it doesn't lowercase words in ALL CAPS."""
|
||||
result = text
|
||||
i = False
|
||||
for token in re.split("(\W+)", striptags(text)):
|
||||
if not re.match("^[A-Z]+$", token):
|
||||
if not i:
|
||||
result = result.replace(token, token.capitalize())
|
||||
i = True
|
||||
else:
|
||||
result = result.replace(token, token.lower())
|
||||
return result
|
||||
|
||||
@register.filter
|
||||
def lower_allcaps(text):
|
||||
from django.template import defaultfilters
|
||||
"""Like lower, except it doesn't lowercase words in ALL CAPS."""
|
||||
result = text
|
||||
i = False
|
||||
for token in re.split("(\W+)", striptags(text)):
|
||||
if not re.match("^[A-Z]+$", token):
|
||||
result = result.replace(token, token.lower())
|
||||
return result
|
||||
|
||||
# See https://djangosnippets.org/snippets/2072/ and
|
||||
# https://stackoverflow.com/questions/9939248/how-to-prevent-django-basic-inlines-from-autoescaping
|
||||
@register.filter
|
||||
def urlize_html(html, autoescape=False):
|
||||
"""
|
||||
Returns urls found in an (X)HTML text node element as urls via Django urlize filter.
|
||||
"""
|
||||
try:
|
||||
from BeautifulSoup import BeautifulSoup
|
||||
from django.utils.html import urlize
|
||||
except ImportError:
|
||||
if settings.DEBUG:
|
||||
raise template.TemplateSyntaxError, "Error in urlize_html The Python BeautifulSoup libraries aren't installed."
|
||||
return html
|
||||
else:
|
||||
soup = BeautifulSoup(html)
|
||||
|
||||
textNodes = soup.findAll(text=True)
|
||||
for textNode in textNodes:
|
||||
urlizedText = urlize(textNode, autoescape=autoescape)
|
||||
textNode.replaceWith(BeautifulSoup(urlizedText))
|
||||
|
||||
return str(soup)
|
||||
|
|
|
@ -43,32 +43,24 @@ area_short_names = {
|
|||
'rai':'RAI'
|
||||
}
|
||||
|
||||
# FACELIFT: Function is called with "facelift" flavor from the new UI code.
|
||||
# The old code (and flavoring) can be remove eventually.
|
||||
@register.simple_tag
|
||||
def wg_menu(flavor=""):
|
||||
res = cache.get('wgmenu' + flavor)
|
||||
def wg_menu():
|
||||
res = cache.get('base_left_wgmenu')
|
||||
if res:
|
||||
return res
|
||||
|
||||
areas = Group.objects.filter(type="area", state="active").order_by('acronym')
|
||||
wgs = Group.objects.filter(type="wg", state="active", parent__in=areas).order_by("acronym")
|
||||
rgs = Group.objects.filter(type="rg", state="active").order_by("acronym")
|
||||
groups = Group.objects.filter(type="wg", state="active", parent__in=areas).order_by("acronym")
|
||||
|
||||
for a in areas:
|
||||
a.short_area_name = area_short_names.get(a.acronym) or a.name
|
||||
if a.short_area_name.endswith(" Area"):
|
||||
a.short_area_name = a.short_area_name[:-len(" Area")]
|
||||
|
||||
a.active_groups = [g for g in wgs if g.parent_id == a.id]
|
||||
a.active_groups = [g for g in groups if g.parent_id == a.id]
|
||||
|
||||
areas = [a for a in areas if a.active_groups]
|
||||
|
||||
if flavor == "facelift":
|
||||
res = render_to_string('base/menu_wg.html', {'areas':areas, 'rgs':rgs})
|
||||
elif flavor == "modal":
|
||||
res = render_to_string('base/menu_wg_modal.html', {'areas':areas, 'rgs':rgs})
|
||||
else:
|
||||
res = render_to_string('base/wg_menu.html', {'areas':areas, 'rgs':rgs})
|
||||
cache.set('wgmenu' + flavor, res, 30*60)
|
||||
res = render_to_string('base/wg_menu.html', {'areas':areas})
|
||||
cache.set('base_left_wgmenu', res, 30*60)
|
||||
return res
|
||||
|
|
|
@ -13,7 +13,7 @@ from django.contrib.auth.decorators import login_required
|
|||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.doc.models import ( Document, DocHistory, State, DocEvent, BallotDocEvent,
|
||||
BallotPositionDocEvent, InitialReviewDocEvent, NewRevisionDocEvent,
|
||||
BallotPositionDocEvent, InitialReviewDocEvent, NewRevisionDocEvent,
|
||||
WriteupDocEvent, save_document_in_history )
|
||||
from ietf.doc.utils import ( add_state_change_event, close_open_ballots,
|
||||
create_ballot_if_not_open, get_chartering_type )
|
||||
|
@ -33,7 +33,7 @@ from ietf.group.mails import email_iesg_secretary_re_charter
|
|||
class ChangeStateForm(forms.Form):
|
||||
charter_state = forms.ModelChoiceField(State.objects.filter(used=True, type="charter"), label="Charter state", empty_label=None, required=False)
|
||||
initial_time = forms.IntegerField(initial=0, label="Review time", help_text="(in weeks)", required=False)
|
||||
message = forms.CharField(widget=forms.Textarea, help_text="Leave blank to change state without notifying the Secretariat", required=False, label=mark_safe("Message to the Secretariat"))
|
||||
message = forms.CharField(widget=forms.Textarea, help_text="Leave blank to change state without notifying the Secretariat", required=False, label=mark_safe("Message to<br> Secretariat"))
|
||||
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the charter history", required=False)
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.hide = kwargs.pop('hide', None)
|
||||
|
@ -47,7 +47,7 @@ class ChangeStateForm(forms.Form):
|
|||
# hide requested fields
|
||||
if self.hide:
|
||||
for f in self.hide:
|
||||
self.fields[f].widget = forms.HiddenInput()
|
||||
self.fields[f].widget = forms.HiddenInput
|
||||
|
||||
@login_required
|
||||
def change_state(request, name, option=None):
|
||||
|
@ -101,7 +101,7 @@ def change_state(request, name, option=None):
|
|||
e.state_id = group.state.slug
|
||||
e.desc = "Group state changed to %s from %s" % (group.state, oldstate)
|
||||
e.save()
|
||||
|
||||
|
||||
else:
|
||||
charter_state = State.objects.get(used=True, type="charter", slug="approved")
|
||||
charter_rev = approved_revision(charter.rev)
|
||||
|
@ -327,12 +327,12 @@ def submit(request, name=None, option=None):
|
|||
e.desc = "New version available: <b>%s-%s.txt</b>" % (charter.canonical_name(), charter.rev)
|
||||
e.rev = charter.rev
|
||||
e.save()
|
||||
|
||||
|
||||
# Save file on disk
|
||||
form.save(group, charter.rev)
|
||||
|
||||
if option in ['initcharter','recharter'] and charter.ad == None:
|
||||
charter.ad = group.ad
|
||||
charter.ad = group.ad
|
||||
|
||||
charter.time = datetime.datetime.now()
|
||||
charter.save()
|
||||
|
@ -405,7 +405,7 @@ def announcement_text(request, name, ann):
|
|||
e.desc = "%s %s text was changed" % (group.type.name, ann)
|
||||
e.text = t
|
||||
e.save()
|
||||
|
||||
|
||||
charter.time = e.time
|
||||
charter.save()
|
||||
|
||||
|
@ -440,7 +440,7 @@ class BallotWriteupForm(forms.Form):
|
|||
|
||||
def clean_ballot_writeup(self):
|
||||
return self.cleaned_data["ballot_writeup"].replace("\r", "")
|
||||
|
||||
|
||||
@role_required('Area Director','Secretariat')
|
||||
def ballot_writeupnotes(request, name):
|
||||
"""Editing of ballot write-up and notes"""
|
||||
|
@ -453,13 +453,13 @@ def ballot_writeupnotes(request, name):
|
|||
login = request.user.person
|
||||
|
||||
approval = charter.latest_event(WriteupDocEvent, type="changed_action_announcement")
|
||||
|
||||
|
||||
existing = charter.latest_event(WriteupDocEvent, type="changed_ballot_writeup_text")
|
||||
if not existing:
|
||||
existing = generate_ballot_writeup(request, charter)
|
||||
|
||||
reissue = charter.latest_event(DocEvent, type="sent_ballot_announcement")
|
||||
|
||||
|
||||
form = BallotWriteupForm(initial=dict(ballot_writeup=existing.text))
|
||||
|
||||
if request.method == 'POST' and ("save_ballot_writeup" in request.POST or "send_ballot" in request.POST):
|
||||
|
@ -644,7 +644,7 @@ def approve(request, name):
|
|||
send_mail_preformatted(request, announcement)
|
||||
|
||||
return HttpResponseRedirect(charter.get_absolute_url())
|
||||
|
||||
|
||||
return render_to_response('doc/charter/approve.html',
|
||||
dict(charter=charter,
|
||||
announcement=announcement),
|
||||
|
|
|
@ -148,7 +148,7 @@ def fill_in_search_attributes(docs):
|
|||
for d in docs:
|
||||
if isinstance(d,DocAlias):
|
||||
d = d.document
|
||||
rel_this_doc = d.all_related_that_doc(['replaces','obs'])
|
||||
rel_this_doc = d.all_related_that_doc(['replaces','obs'])
|
||||
for rel in rel_this_doc:
|
||||
rel_id_camefrom.setdefault(rel.document.pk,[]).append(d.pk)
|
||||
rel_docs += [x.document for x in rel_this_doc]
|
||||
|
@ -240,7 +240,7 @@ def retrieve_search_results(form, all_types=False):
|
|||
"""Takes a validated SearchForm and return the results."""
|
||||
if not form.is_valid():
|
||||
raise ValueError("SearchForm doesn't validate: %s" % form.errors)
|
||||
|
||||
|
||||
query = form.cleaned_data
|
||||
|
||||
types=[];
|
||||
|
@ -282,7 +282,7 @@ def retrieve_search_results(form, all_types=False):
|
|||
if query["olddrafts"]:
|
||||
allowed_draft_states.extend(['repl', 'expired', 'auth-rm', 'ietf-rm'])
|
||||
|
||||
docs = docs.filter(Q(states__slug__in=allowed_draft_states) |
|
||||
docs = docs.filter(Q(states__slug__in=allowed_draft_states) |
|
||||
~Q(type__slug='draft')).distinct()
|
||||
|
||||
# radio choices
|
||||
|
@ -365,7 +365,7 @@ def retrieve_search_results(form, all_types=False):
|
|||
meta['headers'] = [{'title': 'Document', 'key':'document'},
|
||||
{'title': 'Title', 'key':'title'},
|
||||
{'title': 'Date', 'key':'date'},
|
||||
{'title': 'Status', 'key':'status'},
|
||||
{'title': 'Status', 'key':'status', 'colspan':'2'},
|
||||
{'title': 'IPR', 'key':'ipr'},
|
||||
{'title': 'AD / Shepherd', 'key':'ad'}]
|
||||
|
||||
|
@ -440,14 +440,14 @@ def ad_dashboard_group(doc):
|
|||
return '%s Internet-Draft' % doc.get_state('draft').name
|
||||
elif doc.type.slug=='conflrev':
|
||||
if doc.get_state_slug('conflrev') in ('appr-reqnopub-sent','appr-noprob-sent'):
|
||||
return 'Approved Conflict Review'
|
||||
return 'Approved Conflict Review'
|
||||
elif doc.get_state_slug('conflrev') in ('appr-reqnopub-pend','appr-noprob-pend','appr-reqnopub-pr','appr-noprob-pr'):
|
||||
return "%s Conflict Review" % State.objects.get(type__slug='draft-iesg',slug='approved')
|
||||
else:
|
||||
return '%s Conflict Review' % doc.get_state('conflrev')
|
||||
elif doc.type.slug=='statchg':
|
||||
if doc.get_state_slug('statchg') in ('appr-sent',):
|
||||
return 'Approved Status Change'
|
||||
return 'Approved Status Change'
|
||||
if doc.get_state_slug('statchg') in ('appr-pend','appr-pr'):
|
||||
return '%s Status Change' % State.objects.get(type__slug='draft-iesg',slug='approved')
|
||||
else:
|
||||
|
@ -461,7 +461,7 @@ def ad_dashboard_group(doc):
|
|||
return "Document"
|
||||
|
||||
def ad_dashboard_sort_key(doc):
|
||||
|
||||
|
||||
if doc.type.slug=='draft' and doc.get_state_slug('draft') == 'rfc':
|
||||
return "21%04d" % int(doc.rfc_number())
|
||||
if doc.type.slug=='statchg' and doc.get_state_slug('statchg') == 'appr-sent':
|
||||
|
@ -474,26 +474,26 @@ def ad_dashboard_sort_key(doc):
|
|||
seed = ad_dashboard_group(doc)
|
||||
|
||||
if doc.type.slug=='conflrev' and doc.get_state_slug('conflrev') == 'adrev':
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='ad-eval')
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='ad-eval')
|
||||
return "1%d%s" % (state.order,seed)
|
||||
|
||||
if doc.type.slug=='charter':
|
||||
if doc.get_state_slug('charter') in ('notrev','infrev'):
|
||||
return "100%s" % seed
|
||||
elif doc.get_state_slug('charter') == 'intrev':
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='ad-eval')
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='ad-eval')
|
||||
return "1%d%s" % (state.order,seed)
|
||||
elif doc.get_state_slug('charter') == 'extrev':
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='lc')
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='lc')
|
||||
return "1%d%s" % (state.order,seed)
|
||||
elif doc.get_state_slug('charter') == 'iesgrev':
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='iesg-eva')
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='iesg-eva')
|
||||
return "1%d%s" % (state.order,seed)
|
||||
|
||||
if doc.type.slug=='statchg' and doc.get_state_slug('statchg') == 'adrev':
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='ad-eval')
|
||||
state = State.objects.get(type__slug='draft-iesg',slug='ad-eval')
|
||||
return "1%d%s" % (state.order,seed)
|
||||
|
||||
|
||||
if seed.startswith('Needs Shepherd'):
|
||||
return "100%s" % seed
|
||||
if seed.endswith(' Document'):
|
||||
|
|
|
@ -39,7 +39,7 @@ class GroupForm(forms.Form):
|
|||
list_email = forms.CharField(max_length=64, required=False)
|
||||
list_subscribe = forms.CharField(max_length=255, required=False)
|
||||
list_archive = forms.CharField(max_length=255, required=False)
|
||||
urls = forms.CharField(widget=forms.Textarea, label="Additional URLs", help_text="Format: https://site/path (Optional description). Separate multiple entries with newline. Prefer HTTPS URLs where possible.", required=False)
|
||||
urls = forms.CharField(widget=forms.Textarea, label="Additional URLs", help_text="Format: http://site/path (Optional description). Separate multiple entries with newline.", required=False)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.group = kwargs.pop('group', None)
|
||||
|
@ -60,7 +60,7 @@ class GroupForm(forms.Form):
|
|||
self.confirm_msg = ""
|
||||
self.autoenable_confirm = False
|
||||
if self.group:
|
||||
self.fields['acronym'].widget.attrs['readonly'] = ""
|
||||
self.fields['acronym'].widget.attrs['readonly'] = True
|
||||
|
||||
if self.group_type == "rg":
|
||||
self.fields['ad'].widget = forms.HiddenInput()
|
||||
|
@ -149,7 +149,7 @@ def get_or_create_initial_charter(group, group_type):
|
|||
)
|
||||
charter.save()
|
||||
charter.set_state(State.objects.get(used=True, type="charter", slug="notrev"))
|
||||
|
||||
|
||||
# Create an alias as well
|
||||
DocAlias.objects.create(name=charter.name, document=charter)
|
||||
|
||||
|
@ -220,12 +220,12 @@ def edit(request, group_type=None, acronym=None, action="edit"):
|
|||
group.charter = get_or_create_initial_charter(group, group_type)
|
||||
|
||||
changes = []
|
||||
|
||||
|
||||
def desc(attr, new, old):
|
||||
entry = "%(attr)s changed to <b>%(new)s</b> from %(old)s"
|
||||
if new_group:
|
||||
entry = "%(attr)s changed to <b>%(new)s</b>"
|
||||
|
||||
|
||||
return entry % dict(attr=attr, new=new, old=old)
|
||||
|
||||
def diff(attr, name):
|
||||
|
|
|
@ -24,13 +24,11 @@ def stream_documents(request, acronym):
|
|||
streams = [ s.slug for s in StreamName.objects.all().exclude(slug__in=['ietf', 'legacy']) ]
|
||||
if not acronym in streams:
|
||||
raise Http404("No such stream: %s" % acronym)
|
||||
group = get_object_or_404(Group, acronym=acronym)
|
||||
editable = has_role(request.user, "Secretariat") or group.has_role(request.user, "chair")
|
||||
stream = StreamName.objects.get(slug=acronym)
|
||||
form = SearchForm({'by':'stream', 'stream':acronym,
|
||||
'rfcs':'on', 'activedrafts':'on'})
|
||||
docs, meta = retrieve_search_results(form)
|
||||
return render_to_response('group/stream_documents.html', {'stream':stream, 'docs':docs, 'meta':meta, 'editable':editable }, context_instance=RequestContext(request))
|
||||
return render_to_response('group/stream_documents.html', {'stream':stream, 'docs':docs, 'meta':meta }, context_instance=RequestContext(request))
|
||||
|
||||
class StreamEditForm(forms.Form):
|
||||
delegates = AutocompletedEmailsField(required=False, only_users=True)
|
||||
|
@ -64,7 +62,7 @@ def stream_edit(request, acronym):
|
|||
for e in new:
|
||||
Role.objects.get_or_create(name_id=slug, email=e, group=group, person=e.person)
|
||||
|
||||
return redirect("ietf.group.views_stream.streams")
|
||||
return redirect("ietf.group.views.streams")
|
||||
else:
|
||||
form = StreamEditForm(initial=dict(delegates=Email.objects.filter(role__group=group, role__name="delegate")))
|
||||
|
||||
|
@ -74,4 +72,4 @@ def stream_edit(request, acronym):
|
|||
'form': form,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
|
|
|
@ -85,50 +85,50 @@ def get_doc_section(doc):
|
|||
def agenda_sections():
|
||||
return OrderedDict([
|
||||
('1', {'title':"Administrivia"}),
|
||||
('1.1', {'title':"Roll call"}),
|
||||
('1.2', {'title':"Bash the agenda"}),
|
||||
('1.3', {'title':"Approval of the minutes of past telechats"}),
|
||||
('1.4', {'title':"List of remaining action items from last telechat"}),
|
||||
('2', {'title':"Protocol actions"}),
|
||||
('2.1', {'title':"WG submissions"}),
|
||||
('2.1.1', {'title':"New items", 'docs': []}),
|
||||
('2.1.2', {'title':"Returning items", 'docs':[]}),
|
||||
('2.1.3', {'title':"For action", 'docs':[]}),
|
||||
('2.2', {'title':"Individual submissions"}),
|
||||
('2.2.1', {'title':"New items", 'docs':[]}),
|
||||
('2.2.2', {'title':"Returning items", 'docs':[]}),
|
||||
('2.2.3', {'title':"For action", 'docs':[]}),
|
||||
('2.3', {'title':"Status changes"}),
|
||||
('2.3.1', {'title':"New items", 'docs':[]}),
|
||||
('2.3.2', {'title':"Returning items", 'docs':[]}),
|
||||
('2.3.3', {'title':"For action", 'docs':[]}),
|
||||
('3', {'title':"Document actions"}),
|
||||
('3.1', {'title':"WG submissions"}),
|
||||
('3.1.1', {'title':"New items", 'docs':[]}),
|
||||
('3.1.2', {'title':"Returning items", 'docs':[]}),
|
||||
('3.1.3', {'title':"For action", 'docs':[]}),
|
||||
('3.2', {'title':"Individual submissions via AD"}),
|
||||
('3.2.1', {'title':"New items", 'docs':[]}),
|
||||
('3.2.2', {'title':"Returning items", 'docs':[]}),
|
||||
('3.2.3', {'title':"For action", 'docs':[]}),
|
||||
('3.3', {'title':"Status changes"}),
|
||||
('3.3.1', {'title':"New items", 'docs':[]}),
|
||||
('3.3.2', {'title':"Returning items", 'docs':[]}),
|
||||
('3.3.3', {'title':"For action", 'docs':[]}),
|
||||
('3.4', {'title':"IRTF and Independent Submission stream documents"}),
|
||||
('3.4.1', {'title':"New items", 'docs':[]}),
|
||||
('3.4.2', {'title':"Returning items", 'docs':[]}),
|
||||
('3.4.3', {'title':"For action", 'docs':[]}),
|
||||
('4', {'title':"Working Group actions"}),
|
||||
('4.1', {'title':"WG creation"}),
|
||||
('4.1.1', {'title':"Proposed for IETF review", 'docs':[]}),
|
||||
('4.1.2', {'title':"Proposed for approval", 'docs':[]}),
|
||||
('4.2', {'title':"WG rechartering"}),
|
||||
('4.2.1', {'title':"Under evaluation for IETF review", 'docs':[]}),
|
||||
('4.2.2', {'title':"Proposed for approval", 'docs':[]}),
|
||||
('5', {'title':"IAB news we can use"}),
|
||||
('6', {'title':"Management issues"}),
|
||||
('7', {'title':"Working Group news"}),
|
||||
('1.1', {'title':"Roll Call"}),
|
||||
('1.2', {'title':"Bash the Agenda"}),
|
||||
('1.3', {'title':"Approval of the Minutes of Past Telechats"}),
|
||||
('1.4', {'title':"List of Remaining Action Items from Last Telechat"}),
|
||||
('2', {'title':"Protocol Actions"}),
|
||||
('2.1', {'title':"WG Submissions"}),
|
||||
('2.1.1', {'title':"New Items", 'docs': []}),
|
||||
('2.1.2', {'title':"Returning Items", 'docs':[]}),
|
||||
('2.1.3', {'title':"For Action", 'docs':[]}),
|
||||
('2.2', {'title':"Individual Submissions"}),
|
||||
('2.2.1', {'title':"New Items", 'docs':[]}),
|
||||
('2.2.2', {'title':"Returning Items", 'docs':[]}),
|
||||
('2.2.3', {'title':"For Action", 'docs':[]}),
|
||||
('2.3', {'title':"Status Changes"}),
|
||||
('2.3.1', {'title':"New Items", 'docs':[]}),
|
||||
('2.3.2', {'title':"Returning Items", 'docs':[]}),
|
||||
('2.3.3', {'title':"For Action", 'docs':[]}),
|
||||
('3', {'title':"Document Actions"}),
|
||||
('3.1', {'title':"WG Submissions"}),
|
||||
('3.1.1', {'title':"New Items", 'docs':[]}),
|
||||
('3.1.2', {'title':"Returning Items", 'docs':[]}),
|
||||
('3.1.3', {'title':"For Action", 'docs':[]}),
|
||||
('3.2', {'title':"Individual Submissions Via AD"}),
|
||||
('3.2.1', {'title':"New Items", 'docs':[]}),
|
||||
('3.2.2', {'title':"Returning Items", 'docs':[]}),
|
||||
('3.2.3', {'title':"For Action", 'docs':[]}),
|
||||
('3.3', {'title':"Status Changes"}),
|
||||
('3.3.1', {'title':"New Items", 'docs':[]}),
|
||||
('3.3.2', {'title':"Returning Items", 'docs':[]}),
|
||||
('3.3.3', {'title':"For Action", 'docs':[]}),
|
||||
('3.4', {'title':"IRTF and Independent Submission Stream Documents"}),
|
||||
('3.4.1', {'title':"New Items", 'docs':[]}),
|
||||
('3.4.2', {'title':"Returning Items", 'docs':[]}),
|
||||
('3.4.3', {'title':"For Action", 'docs':[]}),
|
||||
('4', {'title':"Working Group Actions"}),
|
||||
('4.1', {'title':"WG Creation"}),
|
||||
('4.1.1', {'title':"Proposed for IETF Review", 'docs':[]}),
|
||||
('4.1.2', {'title':"Proposed for Approval", 'docs':[]}),
|
||||
('4.2', {'title':"WG Rechartering"}),
|
||||
('4.2.1', {'title':"Under Evaluation for IETF Review", 'docs':[]}),
|
||||
('4.2.2', {'title':"Proposed for Approval", 'docs':[]}),
|
||||
('5', {'title':"IAB News We Can Use"}),
|
||||
('6', {'title':"Management Issues"}),
|
||||
('7', {'title':"Working Group News"}),
|
||||
])
|
||||
|
||||
def fill_in_agenda_administrivia(date, sections):
|
||||
|
@ -185,7 +185,7 @@ def fill_in_agenda_docs(date, sections, matches=None):
|
|||
|
||||
# prune empty "For action" sections
|
||||
empty_for_action = [n for n, section in sections.iteritems()
|
||||
if section["title"] == "For action" and not section["docs"]]
|
||||
if section["title"] == "For Action" and not section["docs"]]
|
||||
for num in empty_for_action:
|
||||
del sections[num]
|
||||
|
||||
|
|
|
@ -2,24 +2,24 @@
|
|||
|
||||
# Portion Copyright (C) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
# All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
|
||||
#
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
#
|
||||
# * Neither the name of the Nokia Corporation and/or its
|
||||
# subsidiary(-ies) nor the names of its contributors may be used
|
||||
# to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
|
@ -58,9 +58,6 @@ from ietf.iesg.models import TelechatDate
|
|||
from ietf.ietfauth.utils import has_role, role_required, user_is_person
|
||||
from ietf.person.models import Person
|
||||
|
||||
# FACELIFT:
|
||||
from ietf.doc.views_search import fill_in_search_attributes
|
||||
|
||||
def review_decisions(request, year=None):
|
||||
events = DocEvent.objects.filter(type__in=("iesg_disapproved", "iesg_approved"))
|
||||
|
||||
|
@ -179,8 +176,8 @@ def agenda(request, date=None):
|
|||
data = agenda_data(date)
|
||||
|
||||
if has_role(request.user, ["Area Director", "IAB Chair", "Secretariat"]):
|
||||
data["sections"]["1.1"]["title"] = data["sections"]["1.1"]["title"].replace("Roll call", '<a href="https://www.ietf.org/iesg/internal/rollcall.txt">Roll Call</a>')
|
||||
data["sections"]["1.3"]["title"] = data["sections"]["1.3"]["title"].replace("minutes", '<a href="https://www.ietf.org/iesg/internal/minutes.txt">Minutes</a>')
|
||||
data["sections"]["1.1"]["title"] = data["sections"]["1.1"]["title"].replace("Roll Call", '<a href="https://www.ietf.org/iesg/internal/rollcall.txt">Roll Call</a>')
|
||||
data["sections"]["1.3"]["title"] = data["sections"]["1.3"]["title"].replace("Minutes", '<a href="https://www.ietf.org/iesg/internal/minutes.txt">Minutes</a>')
|
||||
|
||||
request.session['ballot_edit_return_point'] = request.path_info
|
||||
return render_to_response("iesg/agenda.html", {
|
||||
|
@ -306,7 +303,7 @@ class RescheduleForm(forms.Form):
|
|||
|
||||
def __init__(self, *args, **kwargs):
|
||||
dates = kwargs.pop('telechat_dates')
|
||||
|
||||
|
||||
super(self.__class__, self).__init__(*args, **kwargs)
|
||||
|
||||
# telechat choices
|
||||
|
@ -363,9 +360,6 @@ def agenda_documents(request):
|
|||
telechats = []
|
||||
for date in dates:
|
||||
sections = agenda_sections()
|
||||
# FACELIFT: augment the docs with the search attributes, since we're using
|
||||
# the search_result_row view to display them (which expects them)
|
||||
fill_in_search_attributes(docs_by_date[date])
|
||||
fill_in_agenda_docs(date, sections, docs_by_date[date])
|
||||
|
||||
telechats.append({
|
||||
|
|
|
@ -217,7 +217,7 @@ class PersonForm(ModelForm):
|
|||
|
||||
# Make sure the alias table contains any new and/or old names.
|
||||
old_names = set([x.name for x in Alias.objects.filter(person=self.instance)])
|
||||
curr_names = set([x for x in [self.instance.name,
|
||||
curr_names = set([x for x in [self.instance.name,
|
||||
self.instance.ascii,
|
||||
self.instance.ascii_short,
|
||||
self.data['name'],
|
||||
|
|
|
@ -12,8 +12,8 @@ LICENSE_CHOICES = (
|
|||
(3, 'c) Reasonable and Non-Discriminatory License to All Implementers with Possible Royalty/Fee.'),
|
||||
(4, 'd) Licensing Declaration to be Provided Later (implies a willingness'
|
||||
' to commit to the provisions of a), b), or c) above to all implementers;'
|
||||
' otherwise, the next option - "Unwilling to Commit to the Provisions of'
|
||||
' a), b), or c) Above" - must be selected).'),
|
||||
' otherwise, the next option "Unwilling to Commit to the Provisions of'
|
||||
' a), b), or c) Above". - must be selected).'),
|
||||
(5, 'e) Unwilling to Commit to the Provisions of a), b), or c) Above.'),
|
||||
(6, 'f) See Text Below for Licensing Declaration.'),
|
||||
)
|
||||
|
@ -27,10 +27,10 @@ SELECT_CHOICES = (
|
|||
(2, 'NO'),
|
||||
)
|
||||
STATUS_CHOICES = (
|
||||
( 0, "Waiting for approval" ),
|
||||
( 1, "Approved and Posted" ),
|
||||
( 2, "Rejected by Administrator" ),
|
||||
( 3, "Removed by Request" ),
|
||||
( 0, "Waiting for approval" ),
|
||||
( 1, "Approved and Posted" ),
|
||||
( 2, "Rejected by Administrator" ),
|
||||
( 3, "Removed by Request" ),
|
||||
)
|
||||
|
||||
class IprDetail(models.Model):
|
||||
|
@ -45,35 +45,35 @@ class IprDetail(models.Model):
|
|||
legacy_title_2 = models.CharField(blank=True, null=True, db_column="additional_old_title2", max_length=255)
|
||||
|
||||
# Patent holder fieldset
|
||||
legal_name = models.CharField("Legal name", db_column="p_h_legal_name", max_length=255)
|
||||
legal_name = models.CharField("Legal Name", db_column="p_h_legal_name", max_length=255)
|
||||
|
||||
# Patent Holder Contact fieldset
|
||||
# self.contact.filter(contact_type=1)
|
||||
|
||||
# IETF Contact fieldset
|
||||
# self.contact.filter(contact_type=3)
|
||||
|
||||
|
||||
# Related IETF Documents fieldset
|
||||
rfc_number = models.IntegerField(null=True, editable=False, blank=True) # always NULL
|
||||
id_document_tag = models.IntegerField(null=True, editable=False, blank=True) # always NULL
|
||||
other_designations = models.CharField("Designations for other contributions", blank=True, max_length=255)
|
||||
other_designations = models.CharField(blank=True, max_length=255)
|
||||
document_sections = models.TextField("Specific document sections covered", blank=True, max_length=255, db_column='disclouser_identify')
|
||||
|
||||
# Patent Information fieldset
|
||||
patents = models.TextField("Patent, serial, publication, registration, or application/file number(s)", db_column="p_applications", max_length=255)
|
||||
date_applied = models.CharField("Date(s) granted or applied for", max_length=255)
|
||||
patents = models.TextField("Patent Applications", db_column="p_applications", max_length=255)
|
||||
date_applied = models.CharField(max_length=255)
|
||||
country = models.CharField(max_length=255)
|
||||
notes = models.TextField("Additional notes", db_column="p_notes", blank=True)
|
||||
is_pending = models.IntegerField("Unpublished pending patent application", blank=True, null=True, choices=SELECT_CHOICES, db_column="selecttype")
|
||||
applies_to_all = models.IntegerField("Applies to all IPR owned by submitter", blank=True, null=True, choices=SELECT_CHOICES, db_column="selectowned")
|
||||
is_pending = models.IntegerField("Unpublished Pending Patent Application", blank=True, null=True, choices=SELECT_CHOICES, db_column="selecttype")
|
||||
applies_to_all = models.IntegerField("Applies to all IPR owned by Submitter", blank=True, null=True, choices=SELECT_CHOICES, db_column="selectowned")
|
||||
|
||||
# Licensing Declaration fieldset
|
||||
licensing_option = models.IntegerField(null=True, blank=True, choices=LICENSE_CHOICES)
|
||||
lic_opt_a_sub = models.IntegerField(null=True, editable=False, choices=STDONLY_CHOICES)
|
||||
lic_opt_b_sub = models.IntegerField(null=True, editable=False, choices=STDONLY_CHOICES)
|
||||
lic_opt_c_sub = models.IntegerField(null=True, editable=False, choices=STDONLY_CHOICES)
|
||||
comments = models.TextField("Licensing comments", blank=True)
|
||||
lic_checkbox = models.BooleanField("The individual submitting this template represents and warrants that all terms and conditions that must be satisfied for implementers of any covered IETF specification to obtain a license have been disclosed in this IPR disclosure statement.", default=False)
|
||||
comments = models.TextField("Licensing Comments", blank=True)
|
||||
lic_checkbox = models.BooleanField("All terms and conditions has been disclosed", default=False)
|
||||
|
||||
|
||||
# Other notes fieldset
|
||||
|
@ -119,8 +119,8 @@ class IprContact(models.Model):
|
|||
name = models.CharField(max_length=255)
|
||||
title = models.CharField(blank=True, max_length=255)
|
||||
department = models.CharField(blank=True, max_length=255)
|
||||
address1 = models.CharField("Address", blank=True, max_length=255)
|
||||
address2 = models.CharField("Address (continued)", blank=True, max_length=255)
|
||||
address1 = models.CharField(blank=True, max_length=255)
|
||||
address2 = models.CharField(blank=True, max_length=255)
|
||||
telephone = models.CharField(blank=True, max_length=25)
|
||||
fax = models.CharField(blank=True, max_length=25)
|
||||
email = models.EmailField(max_length=255)
|
||||
|
|
|
@ -16,19 +16,19 @@ from ietf.ipr.view_sections import section_table
|
|||
|
||||
# ----------------------------------------------------------------
|
||||
# Create base forms from models
|
||||
# ----------------------------------------------------------------
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
phone_re = re.compile(r'^\+?[0-9 ]*(\([0-9]+\))?[0-9 -]+( ?x ?[0-9]+)?$')
|
||||
phone_error_message = """Phone numbers may have a leading "+", and otherwise only contain numbers [0-9]; dash, period or space; parentheses, and an optional extension number indicated by 'x'."""
|
||||
|
||||
class BaseIprForm(forms.ModelForm):
|
||||
licensing_option = forms.IntegerField(widget=forms.RadioSelect(choices=LICENSE_CHOICES), required=False)
|
||||
is_pending = forms.IntegerField(widget=forms.RadioSelect(choices=((1, "Yes"), (2, "No"))), required=False)
|
||||
applies_to_all = forms.IntegerField(widget=forms.RadioSelect(choices=((1, "Yes"), (2, "No"))), required=False)
|
||||
is_pending = forms.IntegerField(widget=forms.RadioSelect(choices=((1, "YES"), (2, "NO"))), required=False)
|
||||
applies_to_all = forms.IntegerField(widget=forms.RadioSelect(choices=((1, "YES"), (2, "NO"))), required=False)
|
||||
class Meta:
|
||||
model = IprDetail
|
||||
exclude = ('rfc_document', 'id_document_tag') # 'legacy_url_0','legacy_url_1','legacy_title_1','legacy_url_2','legacy_title_2')
|
||||
|
||||
|
||||
class BaseContactForm(forms.ModelForm):
|
||||
telephone = forms.RegexField(phone_re, error_message=phone_error_message, required=False)
|
||||
fax = forms.RegexField(phone_re, error_message=phone_error_message, required=False)
|
||||
|
@ -68,9 +68,9 @@ def new(request, type, update=None, submitter=None):
|
|||
|
||||
class IprForm(BaseIprForm):
|
||||
holder_contact = None
|
||||
rfclist = forms.CharField(label="RFC numbers", required=False)
|
||||
draftlist = forms.CharField(label="Internet-Draft filenames (draft-...)", required=False)
|
||||
stdonly_license = forms.BooleanField(label="Above licensing declaration is limited solely to standards-track IETF documents", required=False)
|
||||
rfclist = forms.CharField(required=False)
|
||||
draftlist = forms.CharField(required=False)
|
||||
stdonly_license = forms.BooleanField(required=False)
|
||||
hold_contact_is_submitter = forms.BooleanField(required=False)
|
||||
ietf_contact_is_submitter = forms.BooleanField(required=False)
|
||||
if section_list.get("holder_contact", False):
|
||||
|
@ -98,16 +98,16 @@ def new(request, type, update=None, submitter=None):
|
|||
rfclist_initial = ""
|
||||
if update:
|
||||
rfclist_initial = " ".join(a.doc_alias.name.upper() for a in IprDocAlias.objects.filter(doc_alias__name__startswith="rfc", ipr=update))
|
||||
self.base_fields["rfclist"] = forms.CharField(label="RFC numbers", required=False, initial=rfclist_initial)
|
||||
self.base_fields["rfclist"] = forms.CharField(required=False, initial=rfclist_initial)
|
||||
draftlist_initial = ""
|
||||
if update:
|
||||
draftlist_initial = " ".join(a.doc_alias.name + ("-%s" % a.rev if a.rev else "") for a in IprDocAlias.objects.filter(ipr=update).exclude(doc_alias__name__startswith="rfc"))
|
||||
self.base_fields["draftlist"] = forms.CharField(label="Internet-Draft filenames (draft-...)", required=False, initial=draftlist_initial)
|
||||
self.base_fields["draftlist"] = forms.CharField(required=False, initial=draftlist_initial)
|
||||
if section_list.get("holder_contact", False):
|
||||
self.base_fields["hold_contact_is_submitter"] = forms.BooleanField(required=False)
|
||||
if section_list.get("ietf_contact", False):
|
||||
self.base_fields["ietf_contact_is_submitter"] = forms.BooleanField(required=False)
|
||||
self.base_fields["stdonly_license"] = forms.BooleanField(label="Above licensing declaration is limited solely to standards-track IETF documents", required=False)
|
||||
self.base_fields["stdonly_license"] = forms.BooleanField(required=False)
|
||||
|
||||
BaseIprForm.__init__(self, *args, **kw)
|
||||
# Special validation code
|
||||
|
@ -184,7 +184,7 @@ def new(request, type, update=None, submitter=None):
|
|||
data["generic"] = section_list["generic"]
|
||||
data["status"] = "0"
|
||||
data["comply"] = "1"
|
||||
|
||||
|
||||
for src in ["hold", "ietf"]:
|
||||
if "%s_contact_is_submitter" % src in data:
|
||||
for subfield in ["name", "title", "department", "address1", "address2", "telephone", "fax", "email"]:
|
||||
|
@ -202,7 +202,7 @@ def new(request, type, update=None, submitter=None):
|
|||
|
||||
legal_name_genitive = data['legal_name'] + "'" if data['legal_name'].endswith('s') else data['legal_name'] + "'s"
|
||||
if type == "generic":
|
||||
instance.title = legal_name_genitive + " General License Statement"
|
||||
instance.title = legal_name_genitive + " General License Statement"
|
||||
elif type == "specific":
|
||||
data["ipr_summary"] = get_ipr_summary(form.cleaned_data)
|
||||
instance.title = legal_name_genitive + """ Statement about IPR related to %(ipr_summary)s""" % data
|
||||
|
@ -295,7 +295,7 @@ def update(request, ipr_id=None):
|
|||
"""Update a specific IPR disclosure"""
|
||||
ipr = get_object_or_404(IprDetail, ipr_id=ipr_id)
|
||||
if not ipr.status in [1,3]:
|
||||
raise Http404
|
||||
raise Http404
|
||||
type = "specific"
|
||||
if ipr.generic:
|
||||
type = "generic"
|
||||
|
@ -311,8 +311,8 @@ def update(request, ipr_id=None):
|
|||
class UpdateForm(BaseContactForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(UpdateForm, self).__init__(*args, **kwargs)
|
||||
self.fields["update_auth"] = forms.BooleanField(label="I am authorized to update this IPR disclosure, and I understand that notification of this update will be provided to the submitter of the original IPR disclosure and to the Patent Holder's Contact.")
|
||||
|
||||
self.fields["update_auth"] = forms.BooleanField()
|
||||
|
||||
if request.method == 'POST':
|
||||
form = UpdateForm(request.POST)
|
||||
else:
|
||||
|
|
|
@ -9,7 +9,8 @@ from ietf.meeting import ajax
|
|||
urlpatterns = patterns('',
|
||||
(r'^(?P<meeting_num>\d+)/materials.html$', views.materials),
|
||||
(r'^agenda/$', views.agenda),
|
||||
(r'^agenda(-utc)?(?P<ext>.html)?$', views.agenda),
|
||||
(r'^(?P<base>agenda-utc)(?P<ext>.html)?$', views.agenda),
|
||||
(r'^agenda(?P<ext>.html)?$', views.agenda),
|
||||
(r'^agenda(?P<ext>.txt)$', views.agenda),
|
||||
(r'^agenda(?P<ext>.csv)$', views.agenda),
|
||||
(r'^agenda/edit$', views.edit_agenda),
|
||||
|
@ -27,7 +28,8 @@ urlpatterns = patterns('',
|
|||
(r'^(?P<num>\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+)/sessions.json$', ajax.scheduledsessions_json),
|
||||
(r'^(?P<num>\d+)/agenda/(?P<owner>[A-Za-z0-9-.+_]+@[A-Za-z0-9._]+)/(?P<name>[A-Za-z0-9-:_]+).json$', ajax.agenda_infourl),
|
||||
(r'^(?P<num>\d+)/agenda/edit$', views.edit_agenda),
|
||||
(r'^(?P<num>\d+)/agenda(-utc)?(?P<ext>.html)?/?$', views.agenda),
|
||||
(r'^(?P<num>\d+)/agenda(?P<ext>.html)?/?$', views.agenda),
|
||||
(r'^(?P<num>\d+)/(?P<base>agenda-utc)(?P<ext>.html)?/?$', views.agenda),
|
||||
(r'^(?P<num>\d+)/requests.html$', RedirectView.as_view(url='/meeting/%(num)s/requests', permanent=True)),
|
||||
(r'^(?P<num>\d+)/requests$', views.meeting_requests),
|
||||
(r'^(?P<num>\d+)/agenda(?P<ext>.txt)$', views.agenda),
|
||||
|
|
|
@ -11,7 +11,7 @@ from ietf.dbtemplate.forms import DBTemplateForm
|
|||
from ietf.group.models import Group, Role
|
||||
from ietf.ietfauth.utils import role_required
|
||||
from ietf.name.models import RoleName, FeedbackTypeName, NomineePositionStateName
|
||||
from ietf.nomcom.models import ( NomCom, Nomination, Nominee, NomineePosition,
|
||||
from ietf.nomcom.models import ( NomCom, Nomination, Nominee, NomineePosition,
|
||||
Position, Feedback, ReminderDates )
|
||||
from ietf.nomcom.utils import (NOMINATION_RECEIPT_TEMPLATE, FEEDBACK_RECEIPT_TEMPLATE,
|
||||
get_user_email, validate_private_key, validate_public_key,
|
||||
|
@ -378,7 +378,7 @@ class MergeForm(BaseNomcomForm, forms.Form):
|
|||
|
||||
|
||||
class NominateForm(BaseNomcomForm, forms.ModelForm):
|
||||
comments = forms.CharField(label="Candidate's qualifications for the position",
|
||||
comments = forms.CharField(label="Candidate's Qualifications for the Position:",
|
||||
widget=forms.Textarea())
|
||||
confirmation = forms.BooleanField(label='Email comments back to me as confirmation',
|
||||
help_text="If you want to get a confirmation mail containing your feedback in cleartext, \
|
||||
|
@ -400,7 +400,6 @@ class NominateForm(BaseNomcomForm, forms.ModelForm):
|
|||
'candidate_email', 'candidate_phone',
|
||||
'comments']
|
||||
|
||||
self.fields['nominator_email'].label = 'Nominator email'
|
||||
if self.nomcom:
|
||||
self.fields['position'].queryset = Position.objects.get_by_nomcom(self.nomcom).opened()
|
||||
self.fields['comments'].help_text = self.nomcom.initial_text
|
||||
|
@ -462,7 +461,7 @@ class NominateForm(BaseNomcomForm, forms.ModelForm):
|
|||
# send receipt email to nominator
|
||||
if confirmation:
|
||||
if author:
|
||||
subject = 'Nomination receipt'
|
||||
subject = 'Nomination Receipt'
|
||||
from_email = settings.NOMCOM_FROM_EMAIL
|
||||
to_email = author.address
|
||||
context = {'nominee': nominee.email.person.name,
|
||||
|
@ -480,15 +479,15 @@ class NominateForm(BaseNomcomForm, forms.ModelForm):
|
|||
|
||||
|
||||
class FeedbackForm(BaseNomcomForm, forms.ModelForm):
|
||||
position_name = forms.CharField(label='Position',
|
||||
position_name = forms.CharField(label='position',
|
||||
widget=forms.TextInput(attrs={'size': '40'}))
|
||||
nominee_name = forms.CharField(label='Nominee name',
|
||||
nominee_name = forms.CharField(label='nominee name',
|
||||
widget=forms.TextInput(attrs={'size': '40'}))
|
||||
nominee_email = forms.CharField(label='Nominee email',
|
||||
nominee_email = forms.CharField(label='nominee email',
|
||||
widget=forms.TextInput(attrs={'size': '40'}))
|
||||
nominator_email = forms.CharField(label='Commenter email')
|
||||
nominator_email = forms.CharField(label='commenter email')
|
||||
|
||||
comments = forms.CharField(label='Comments on this nominee',
|
||||
comments = forms.CharField(label='Comments on this candidate',
|
||||
widget=forms.Textarea())
|
||||
confirmation = forms.BooleanField(label='Email comments back to me as confirmation',
|
||||
help_text="If you want to get a confirmation mail containing your feedback in cleartext, \
|
||||
|
|
|
@ -38,7 +38,7 @@ class NomCom(models.Model):
|
|||
upload_to=upload_path_handler, blank=True, null=True)
|
||||
|
||||
group = models.ForeignKey(Group)
|
||||
send_questionnaire = models.BooleanField(verbose_name='Send questionnaires automatically', default=False,
|
||||
send_questionnaire = models.BooleanField(verbose_name='Send questionnaires automatically"', default=False,
|
||||
help_text='If you check this box, questionnaires are sent automatically after nominations')
|
||||
reminder_interval = models.PositiveIntegerField(help_text='If the nomcom user sets the interval field then a cron command will \
|
||||
send reminders to the nominees who have not responded using \
|
||||
|
|
|
@ -41,8 +41,12 @@ def add_num_nominations(user, position, nominee):
|
|||
nominees__in=[nominee],
|
||||
author=author,
|
||||
type='comment').count()
|
||||
if count:
|
||||
mark = """<span style="white-space: pre; color: red;">*</span>"""
|
||||
else:
|
||||
mark = """<span style="white-space: pre;"> </span> """
|
||||
|
||||
return '<span class="badge" title="%d earlier comments from you on %s as %s">%s</span> ' % (count, nominee.email.address, position, count)
|
||||
return '<span title="%d earlier comments from you on %s as %s">%s</span> ' % (count, nominee.email.address, position, mark)
|
||||
|
||||
|
||||
@register.filter
|
||||
|
@ -72,7 +76,7 @@ def decrypt(string, request, year, plain=False):
|
|||
code, out, error = pipe(command % (settings.OPENSSL_COMMAND,
|
||||
encrypted_file.name), key)
|
||||
if code != 0:
|
||||
log("openssl error: %s:\n Error %s: %s" %(command, code, error))
|
||||
log("openssl error: %s:\n Error %s: %s" %(command, code, error))
|
||||
|
||||
os.unlink(encrypted_file.name)
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ def index(request):
|
|||
nomcom.ann_url = None
|
||||
return render_to_response('nomcom/index.html',
|
||||
{'nomcom_list': nomcom_list,}, RequestContext(request))
|
||||
|
||||
|
||||
|
||||
def year_index(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
|
@ -70,21 +70,21 @@ def year_index(request, year):
|
|||
|
||||
def announcements(request):
|
||||
address_re = re.compile("<.*>")
|
||||
|
||||
|
||||
nomcoms = Group.objects.filter(type="nomcom")
|
||||
|
||||
regimes = []
|
||||
|
||||
|
||||
for n in nomcoms:
|
||||
e = GroupEvent.objects.filter(group=n, type="changed_state", changestategroupevent__state="active").order_by('time')[:1]
|
||||
n.start_year = e[0].time.year if e else 0
|
||||
e = GroupEvent.objects.filter(group=n, type="changed_state", changestategroupevent__state="conclude").order_by('time')[:1]
|
||||
n.end_year = e[0].time.year if e else n.start_year + 1
|
||||
|
||||
r = n.role_set.select_related().filter(name="chair")
|
||||
chair = None
|
||||
if r:
|
||||
chair = r[0]
|
||||
r = n.role_set.select_related().filter(name="chair")
|
||||
chair = None
|
||||
if r:
|
||||
chair = r[0]
|
||||
|
||||
announcements = Message.objects.filter(related_groups=n).order_by('-time')
|
||||
for a in announcements:
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
import json
|
||||
|
||||
from django.utils.html import escape
|
||||
from django.utils.functional import lazy
|
||||
from django import forms
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.person.models import Email
|
||||
|
||||
def json_emails(emails):
|
||||
if isinstance(emails, basestring):
|
||||
emails = Email.objects.filter(address__in=[x.strip() for x in emails.split(",") if x.strip()]).select_related("person")
|
||||
return json.dumps([{"id": e.address + "", "name": escape(u"%s <%s>" % (e.person.name, e.address))} for e in emails])
|
||||
|
||||
class EmailsField(forms.CharField):
|
||||
"""Multi-select field using jquery.tokeninput.js. Since the API of
|
||||
tokeninput" is asymmetric, we have to pass it a JSON
|
||||
representation on the way out and parse the ids coming back as a
|
||||
comma-separated list on the way in."""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
kwargs["max_length"] = 1000
|
||||
if not "help_text" in kwargs:
|
||||
kwargs["help_text"] = "Type in name to search for person."
|
||||
super(EmailsField, self).__init__(*args, **kwargs)
|
||||
self.widget.attrs["class"] = "tokenized-field"
|
||||
self.widget.attrs["data-ajax-url"] = lazy(urlreverse, str)("ajax_search_emails") # make this lazy to prevent initialization problem
|
||||
|
||||
def parse_tokenized_value(self, value):
|
||||
return Email.objects.filter(address__in=[x.strip() for x in value.split(",") if x.strip()]).select_related("person")
|
||||
|
||||
def prepare_value(self, value):
|
||||
if not value:
|
||||
return ""
|
||||
if isinstance(value, str) or isinstance(value, unicode):
|
||||
value = self.parse_tokenized_value(value)
|
||||
return json_emails(value)
|
||||
|
||||
def clean(self, value):
|
||||
value = super(EmailsField, self).clean(value)
|
||||
return self.parse_tokenized_value(value)
|
||||
|
|
@ -14,7 +14,7 @@ except ImportError:
|
|||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# a place to put ajax logs if necessary.
|
||||
LOG_DIR = '/var/log/datatracker'
|
||||
LOG_DIR = '/var/log/datatracker'
|
||||
|
||||
import sys
|
||||
sys.path.append(os.path.abspath(BASE_DIR + "/.."))
|
||||
|
@ -63,9 +63,9 @@ DATABASES = {
|
|||
}
|
||||
|
||||
DATABASE_TEST_OPTIONS = {
|
||||
# Comment this out if your database doesn't support InnoDB
|
||||
'init_command': 'SET storage_engine=InnoDB',
|
||||
}
|
||||
# Comment this out if your database doesn't support InnoDB
|
||||
'init_command': 'SET storage_engine=InnoDB',
|
||||
}
|
||||
|
||||
# Local time zone for this installation. Choices can be found here:
|
||||
# http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE
|
||||
|
@ -87,11 +87,10 @@ USE_I18N = False
|
|||
|
||||
USE_TZ = False
|
||||
|
||||
MEDIA_URL = '//www.ietf.org/'
|
||||
MEDIA_URL = 'http://www.ietf.org/'
|
||||
|
||||
STATIC_URL = "/"
|
||||
STATIC_ROOT = os.path.abspath(BASE_DIR + "/../static/")
|
||||
STATIC_URL = STATIC_ROOT + '/'
|
||||
|
||||
WSGI_APPLICATION = "ietf.wsgi.application"
|
||||
|
||||
|
@ -234,35 +233,8 @@ INSTALLED_APPS = (
|
|||
'ietf.secr.sreq',
|
||||
'ietf.nomcom',
|
||||
'ietf.dbtemplate',
|
||||
# FACELIFT: apps for facelift UI
|
||||
'widget_tweaks',
|
||||
'typogrify',
|
||||
'bootstrap3',
|
||||
'mathfilters',
|
||||
)
|
||||
|
||||
# Settings for django-bootstrap3
|
||||
# See http://django-bootstrap3.readthedocs.org/en/latest/settings.html
|
||||
BOOTSTRAP3 = {
|
||||
# Label class to use in horizontal forms
|
||||
'horizontal_label_class': 'col-md-2',
|
||||
|
||||
# Field class to use in horiozntal forms
|
||||
'horizontal_field_class': 'col-md-10',
|
||||
|
||||
# Set HTML required attribute on required fields
|
||||
'set_required': True,
|
||||
|
||||
# Set placeholder attributes to label if no placeholder is provided
|
||||
'set_placeholder': False,
|
||||
|
||||
# Class to indicate required
|
||||
'form_required_class': 'bootstrap3-required',
|
||||
|
||||
# Class to indicate error
|
||||
'form_error_class': 'bootstrap3-error',
|
||||
}
|
||||
|
||||
INTERNAL_IPS = (
|
||||
# AMS servers
|
||||
'64.170.98.32',
|
||||
|
@ -274,7 +246,7 @@ INTERNAL_IPS = (
|
|||
)
|
||||
|
||||
# no slash at end
|
||||
IDTRACKER_BASE_URL = "//datatracker.ietf.org"
|
||||
IDTRACKER_BASE_URL = "http://datatracker.ietf.org"
|
||||
RFCDIFF_PREFIX = "//www.ietf.org/rfcdiff"
|
||||
|
||||
# Valid values:
|
||||
|
@ -315,22 +287,22 @@ INTERNET_DRAFT_ARCHIVE_DIR = '/a/www/www6s/draft-archive'
|
|||
MEETING_RECORDINGS_DIR = '/a/www/audio'
|
||||
|
||||
# Mailing list info URL for lists hosted on the IETF servers
|
||||
MAILING_LIST_INFO_URL = "//www.ietf.org/mailman/listinfo/%(list_addr)s"
|
||||
MAILING_LIST_INFO_URL = "https://www.ietf.org/mailman/listinfo/%(list_addr)s"
|
||||
|
||||
# Ideally, more of these would be local -- but since we don't support
|
||||
# versions right now, we'll point to external websites
|
||||
DOC_HREFS = {
|
||||
"charter": "//www.ietf.org/charter/{doc.name}-{doc.rev}.txt",
|
||||
"draft": "//www.ietf.org/archive/id/{doc.name}-{doc.rev}.txt",
|
||||
"slides": "//www.ietf.org/slides/{doc.name}-{doc.rev}",
|
||||
"conflrev": "//www.ietf.org/cr/{doc.name}-{doc.rev}.txt",
|
||||
"statchg": "//www.ietf.org/sc/{doc.name}-{doc.rev}.txt",
|
||||
"charter": "http://www.ietf.org/charter/{doc.name}-{doc.rev}.txt",
|
||||
"draft": "http://www.ietf.org/archive/id/{doc.name}-{doc.rev}.txt",
|
||||
"slides": "http://www.ietf.org/slides/{doc.name}-{doc.rev}",
|
||||
"conflrev": "http://www.ietf.org/cr/{doc.name}-{doc.rev}.txt",
|
||||
"statchg": "http://www.ietf.org/sc/{doc.name}-{doc.rev}.txt",
|
||||
}
|
||||
|
||||
MEETING_DOC_HREFS = {
|
||||
"agenda": "/meeting/{meeting}/agenda/{doc.group.acronym}/",
|
||||
"minutes": "/www.ietf.org/proceedings/{meeting}/minutes/{doc.external_url}",
|
||||
"slides": "/www.ietf.org/proceedings/{meeting}/slides/{doc.external_url}",
|
||||
"minutes": "http://www.ietf.org/proceedings/{meeting}/minutes/{doc.external_url}",
|
||||
"slides": "http://www.ietf.org/proceedings/{meeting}/slides/{doc.external_url}",
|
||||
"recording": "{doc.external_url}",
|
||||
}
|
||||
|
||||
|
@ -355,15 +327,15 @@ IANA_APPROVE_EMAIL = "drafts-approval@icann.org"
|
|||
|
||||
# Put real password in settings_local.py
|
||||
IANA_SYNC_PASSWORD = "secret"
|
||||
IANA_SYNC_CHANGES_URL = "//datatracker.iana.org:4443/data-tracker/changes"
|
||||
IANA_SYNC_PROTOCOLS_URL = "//www.iana.org/protocols/"
|
||||
IANA_SYNC_CHANGES_URL = "https://datatracker.iana.org:4443/data-tracker/changes"
|
||||
IANA_SYNC_PROTOCOLS_URL = "http://www.iana.org/protocols/"
|
||||
|
||||
RFC_TEXT_RSYNC_SOURCE="ftp.rfc-editor.org::rfcs-text-only"
|
||||
|
||||
RFC_EDITOR_SYNC_PASSWORD="secret"
|
||||
RFC_EDITOR_SYNC_NOTIFICATION_URL = "//www.rfc-editor.org/parser/parser.php"
|
||||
RFC_EDITOR_QUEUE_URL = "//www.rfc-editor.org/queue2.xml"
|
||||
RFC_EDITOR_INDEX_URL = "//www.rfc-editor.org/rfc/rfc-index.xml"
|
||||
RFC_EDITOR_SYNC_NOTIFICATION_URL = "http://www.rfc-editor.org/parser/parser.php"
|
||||
RFC_EDITOR_QUEUE_URL = "http://www.rfc-editor.org/queue2.xml"
|
||||
RFC_EDITOR_INDEX_URL = "http://www.rfc-editor.org/rfc/rfc-index.xml"
|
||||
|
||||
# Liaison Statement Tool settings
|
||||
LIAISON_UNIVERSAL_FROM = 'Liaison Statement Management Tool <lsmt@' + IETF_DOMAIN + '>'
|
||||
|
@ -399,7 +371,7 @@ INTERNET_DRAFT_DAYS_TO_EXPIRE = 185
|
|||
|
||||
IDSUBMIT_REPOSITORY_PATH = INTERNET_DRAFT_PATH
|
||||
IDSUBMIT_STAGING_PATH = '/a/www/www6s/staging/'
|
||||
IDSUBMIT_STAGING_URL = '//www.ietf.org/staging/'
|
||||
IDSUBMIT_STAGING_URL = 'http://www.ietf.org/staging/'
|
||||
IDSUBMIT_IDNITS_BINARY = '/a/www/ietf-datatracker/scripts/idnits'
|
||||
|
||||
IDSUBMIT_MAX_PLAIN_DRAFT_SIZE = 6291456 # Max size of the txt draft in bytes
|
||||
|
@ -442,7 +414,7 @@ SECR_AUTH_UNRESTRICTED_URLS = (
|
|||
(r'^/secr/sreq/'),
|
||||
)
|
||||
SECR_BLUE_SHEET_PATH = '/a/www/ietf-datatracker/documents/blue_sheet.rtf'
|
||||
SECR_BLUE_SHEET_URL = '//datatracker.ietf.org/documents/blue_sheet.rtf'
|
||||
SECR_BLUE_SHEET_URL = 'https://datatracker.ietf.org/documents/blue_sheet.rtf'
|
||||
SECR_INTERIM_LISTING_DIR = '/a/www/www6/meeting/interim'
|
||||
SECR_MAX_UPLOAD_SIZE = 40960000
|
||||
SECR_PROCEEDINGS_DIR = '/a/www/www6s/proceedings/'
|
||||
|
@ -479,16 +451,19 @@ BADNESS_MUCHTOOBIG = 500
|
|||
SELENIUM_TESTS = False
|
||||
SELENIUM_TESTS_ONLY = False
|
||||
|
||||
# Set debug apps in DEV_APPS settings_local
|
||||
DEV_APPS = ()
|
||||
# Path to the email alias lists. Used by ietf.utils.aliases
|
||||
DRAFT_ALIASES_PATH = "/a/postfix/draft-aliases"
|
||||
DRAFT_VIRTUAL_PATH = "/a/postfix/draft-virtual"
|
||||
|
||||
GROUP_ALIASES_PATH = "/a/postfix/group-aliases"
|
||||
GROUP_VIRTUAL_PATH = "/a/postfix/group-virtual"
|
||||
|
||||
POSTCONFIRM_PATH = "/a/postconfirm/test-wrapper"
|
||||
|
||||
# Put the production SECRET_KEY in settings_local.py, and also any other
|
||||
# sensitive or site-specific changes. DO NOT commit settings_local.py to svn.
|
||||
from settings_local import * # pyflakes:ignore
|
||||
|
||||
# Add DEV_APPS to INSTALLED_APPS
|
||||
INSTALLED_APPS += DEV_APPS
|
||||
|
||||
# We provide a secret key only for test and development modes. It's
|
||||
# absolutely vital that django fails to start in production mode unless a
|
||||
# secret key has been provided elsewhere, not in this file which is
|
||||
|
|
|
@ -47,20 +47,20 @@ class UploadForm(forms.Form):
|
|||
ietf_monday = Meeting.get_ietf_monday()
|
||||
|
||||
if now.date() >= (first_cut_off-timedelta(days=settings.CUTOFF_WARNING_DAYS)) and now.date() < first_cut_off:
|
||||
self.cutoff_warning = ( 'The pre-meeting cut-off date for new documents (i.e., version -00 Internet-Drafts) is %s at %02sh UTC.' % (first_cut_off, settings.CUTOFF_HOUR) +
|
||||
'The pre-meeting cut-off date for revisions to existing documents is %s at %02sh UTC.' % (second_cut_off, settings.CUTOFF_HOUR) )
|
||||
self.cutoff_warning = ( 'The pre-meeting cut-off date for new documents (i.e., version -00 Internet-Drafts) is %s at %02sh UTC.<br/>' % (first_cut_off, settings.CUTOFF_HOUR) +
|
||||
'The pre-meeting cut-off date for revisions to existing documents is %s at %02sh UTC.<br/>' % (second_cut_off, settings.CUTOFF_HOUR) )
|
||||
elif now.date() >= first_cut_off and now.date() < second_cut_off: # We are in the first_cut_off
|
||||
if now.date() == first_cut_off and now.hour < settings.CUTOFF_HOUR:
|
||||
self.cutoff_warning = 'The pre-meeting cut-off date for new documents (i.e., version -00 Internet-Drafts) is %s, at %02sh UTC. After that, you will not be able to submit a new document until %s, at %sh UTC' % (first_cut_off, settings.CUTOFF_HOUR, ietf_monday, settings.CUTOFF_HOUR, )
|
||||
else: # No 00 version allowed
|
||||
self.cutoff_warning = 'The pre-meeting cut-off date for new documents (i.e., version -00 Internet-Drafts) was %s at %sh UTC. You will not be able to submit a new document until %s, at %sh UTC. You can still submit a version -01 or higher Internet-Draft until %sh UTC, %s' % (first_cut_off, settings.CUTOFF_HOUR, ietf_monday, settings.CUTOFF_HOUR, settings.CUTOFF_HOUR, second_cut_off, )
|
||||
self.cutoff_warning = 'The pre-meeting cut-off date for new documents (i.e., version -00 Internet-Drafts) was %s at %sh UTC. You will not be able to submit a new document until %s, at %sh UTC.<br>You can still submit a version -01 or higher Internet-Draft until %sh UTC, %s' % (first_cut_off, settings.CUTOFF_HOUR, ietf_monday, settings.CUTOFF_HOUR, settings.CUTOFF_HOUR, second_cut_off, )
|
||||
self.in_first_cut_off = True
|
||||
elif now.date() >= second_cut_off and now.date() < ietf_monday:
|
||||
if now.date() == second_cut_off and now.hour < settings.CUTOFF_HOUR: # We are in the first_cut_off yet
|
||||
self.cutoff_warning = 'The pre-meeting cut-off date for new documents (i.e., version -00 Internet-Drafts) was %s at %02sh UTC. You will not be able to submit a new document until %s, at %02sh UTC. The I-D submission tool will be shut down at %02sh UTC today, and reopened at %02sh UTC on %s' % (first_cut_off, settings.CUTOFF_HOUR, ietf_monday, settings.CUTOFF_HOUR, settings.CUTOFF_HOUR, settings.CUTOFF_HOUR, ietf_monday)
|
||||
self.cutoff_warning = 'The pre-meeting cut-off date for new documents (i.e., version -00 Internet-Drafts) was %s at %02sh UTC. You will not be able to submit a new document until %s, at %02sh UTC.<br>The I-D submission tool will be shut down at %02sh UTC today, and reopened at %02sh UTC on %s' % (first_cut_off, settings.CUTOFF_HOUR, ietf_monday, settings.CUTOFF_HOUR, settings.CUTOFF_HOUR, settings.CUTOFF_HOUR, ietf_monday)
|
||||
self.in_first_cut_off = True
|
||||
else: # Completely shut down of the tool
|
||||
self.cutoff_warning = 'The cut-off time for the I-D submission was %02dh UTC, %s. The I-D submission tool will be reopened at %02dh local time at the IETF meeting location, %s.' % (settings.CUTOFF_HOUR, second_cut_off, settings.CUTOFF_HOUR, ietf_monday)
|
||||
self.cutoff_warning = 'The cut-off time for the I-D submission was %02dh UTC, %s.<br>The I-D submission tool will be reopened at %02dh local time at the IETF meeting location, %s.' % (settings.CUTOFF_HOUR, second_cut_off, settings.CUTOFF_HOUR, ietf_monday)
|
||||
self.shutdown = True
|
||||
|
||||
def clean_file(self, field_name, parser_class):
|
||||
|
@ -116,7 +116,7 @@ class UploadForm(forms.Form):
|
|||
# check existing
|
||||
existing = Submission.objects.filter(name=self.parsed_draft.filename, rev=self.parsed_draft.revision).exclude(state__in=("posted", "cancel"))
|
||||
if existing:
|
||||
raise forms.ValidationError(mark_safe('Submission with same name and revision is currently being processed. <a href="%s">Check the status here.</a>' % urlreverse("submit_submission_status", kwargs={ 'submission_id': existing[0].pk })))
|
||||
raise forms.ValidationError(mark_safe('Submission with same name and revision is currently being processed. <a href="%s">Check the status here</a>' % urlreverse("submit_submission_status", kwargs={ 'submission_id': existing[0].pk })))
|
||||
|
||||
# cut-off
|
||||
if self.parsed_draft.revision == '00' and self.in_first_cut_off:
|
||||
|
@ -227,7 +227,7 @@ class EditSubmissionForm(forms.ModelForm):
|
|||
pages = forms.IntegerField(required=True)
|
||||
abstract = forms.CharField(widget=forms.Textarea, required=True)
|
||||
|
||||
note = forms.CharField(label=mark_safe(u'Comment to the Secretariat'), widget=forms.Textarea, required=False)
|
||||
note = forms.CharField(label=mark_safe(u'Comment to<br/> the Secretariat'), widget=forms.Textarea, required=False)
|
||||
|
||||
class Meta:
|
||||
model = Submission
|
||||
|
|
|
@ -17,7 +17,7 @@ def show_submission_files(context, submission):
|
|||
exists = True
|
||||
elif submission.state_id == "posted":
|
||||
continue
|
||||
result.append({'name': '%s' % ext[1:],
|
||||
result.append({'name': '[%s version]' % ext[1:].upper(),
|
||||
'exists': exists,
|
||||
'url': '%s%s-%s%s' % (settings.IDSUBMIT_STAGING_URL, submission.name, submission.rev, ext)})
|
||||
return {'files': result}
|
||||
|
@ -27,16 +27,15 @@ def show_submission_files(context, submission):
|
|||
def two_pages_decorated_with_errors(submission, errors):
|
||||
pages = submission.first_two_pages or ''
|
||||
if 'rev' not in errors.keys():
|
||||
return mark_safe('<pre>%s</pre>' % escape(pages))
|
||||
result = '<pre>\n'
|
||||
return mark_safe('<pre class="twopages">%s</pre>' % escape(pages))
|
||||
result = '<pre class="twopages">\n'
|
||||
for line in pages.split('\n'):
|
||||
if line.find('%s-%s' % (submission.name, submission.rev)) > -1:
|
||||
result += '<div class="bg-danger"><b>'
|
||||
result += '</pre><pre class="twopages" style="background: red;">'
|
||||
result += escape(line)
|
||||
result += '\n'
|
||||
result += '</b></div>\n'
|
||||
result += '</pre><pre class="twopages">\n'
|
||||
else:
|
||||
result += escape(line)
|
||||
result += '\n'
|
||||
result += '</pre>pre>\n'
|
||||
return mark_safe(result)
|
||||
|
|
|
@ -39,7 +39,7 @@ def validate_submission(submission):
|
|||
for ext in submission.file_types.split(','):
|
||||
source = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s%s' % (submission.name, submission.rev, ext))
|
||||
if not os.path.exists(source):
|
||||
errors['files'] = '"%s" was not found in the staging area. We recommend you that you cancel this submission and upload your files again.' % os.path.basename(source)
|
||||
errors['files'] = '"%s" was not found in the staging area.<br />We recommend you that you cancel this submission and upload your files again.' % os.path.basename(source)
|
||||
break
|
||||
|
||||
if not submission.title:
|
||||
|
|
|
@ -1,153 +0,0 @@
|
|||
{% load wg_menu %}
|
||||
{% load streams_menu %}
|
||||
{% load ietf_filters community_tags %}
|
||||
|
||||
<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-user"></span>#}
|
||||
{% if user.is_authenticated %} {{ user }} {% else %} User {% endif %}
|
||||
{% if flavor == "top" %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% 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/">Edit profile</a></li>
|
||||
{% else %}
|
||||
<li><a rel="nofollow" href="/accounts/login/?next={{request.get_full_path|urlencode}}">Sign in</a></li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<li><a href="{% url "account_index" %}">{% if request.user.is_authenticated %}Manage account{% else %}New account{% endif %}</a></li>
|
||||
<li><a href="{%url "ietf.cookies.views.settings" %}" rel="nofollow">Settings</a></li>
|
||||
|
||||
{% 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 "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>
|
||||
{% 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>
|
||||
{% 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:"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 %}
|
||||
|
||||
<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">
|
||||
{% endif %}
|
||||
|
||||
<li><a href="{% url "ietf.group.info.active_groups" group_type="wg" %}">Active WGs</a></li>
|
||||
<li><a href="{% url "ietf.group.info.active_groups" group_type="rg" %}">Active RGs</a></li>
|
||||
|
||||
{% if flavor == "top" %}<li class="divider visible-lg-block"></li>{% endif %}
|
||||
<li {%if flavor == "top" %}class="dropdown-header visible-lg-block"{% else %}class="nav-header hidden-nojs"{% endif %}>By area/parent</li>
|
||||
{% wg_menu "facelift" %}
|
||||
<li class="hidden-lg hidden-nojs"><a href="#" data-toggle="modal" data-target="#navmodal">Jump to group</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.info.chartering_groups" %}">Chartering WGs</a></li>
|
||||
<li><a href="{% url "ietf.group.info.bofs" group_type="wg" %}">BOFs</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 %}>Other groups</li>
|
||||
<li><a href="{% url "ietf.group.info.concluded_groups" %}">Concluded WGs</a></li>
|
||||
<li><a href="//www.ietf.org/list/nonwg.html">Non-WG lists</a></li>
|
||||
|
||||
{% if flavor == "top" %}</ul>{% 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-file-text"></span>#}
|
||||
Documents
|
||||
{% if flavor == "top" %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% endif %}
|
||||
<li><a href="{% url "submit_upload_submission" %}">Submit a draft</a></li>
|
||||
|
||||
{% if user|has_role:"WG 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 %}>WG chair</li>
|
||||
<li><a href="{% url "submit_approvals" %}">Approve a draft</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% get_user_managed_lists user as community_lists %}
|
||||
{% if community_lists %}
|
||||
<li><a href="{{ community_lists.personal.get_manage_url }}">My tracked docs</a></li>
|
||||
{% for cl in community_lists.group %}
|
||||
<li><a href="{{ cl.get_manage_url }}">WG {{ cl.short_name }} docs</a></li>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<li><a rel="nofollow" href="/accounts/login/?next={{request.get_full_path|urlencode}}">Sign in to track docs</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Area Director,Secretariat" %}
|
||||
{% if flavor == "top" %}<li class="divider hidden-xs"></li>{% endif %}
|
||||
<li><a href="{% url "rfc_status_changes" %}">RFC status changes</a></li>
|
||||
{% 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.streams" %}iab/">IAB</a></li>
|
||||
<li><a href="{% url "ietf.group.views_stream.streams" %}irtf/">IRTF</a></li>
|
||||
<li><a href="{% url "ietf.group.views_stream.streams" %}ise/">ISE</a></li>
|
||||
|
||||
{% if flavor == "top" %}</ul>{% 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-comments"></span>#}
|
||||
Meetings
|
||||
{% if flavor == "top" %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% endif %}
|
||||
|
||||
<li><a href="/meeting/agenda/">Agenda</a></li>
|
||||
<li><a href="/meeting/">Materials</a></li>
|
||||
<li><a href="//www.ietf.org/meeting/proceedings.html">Past proceedings</a></li>
|
||||
<li><a href="//www.ietf.org/meeting/upcoming.html">Upcoming</a></li>
|
||||
<li><a href="/meeting/requests">Session requests</a></li>
|
||||
{% if flavor == "top" %}</ul>{% 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-folder"></span>#}
|
||||
Other
|
||||
{% if flavor == "top" %}
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% 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>
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
|
@ -1,19 +0,0 @@
|
|||
{% for area in areas %}
|
||||
<li class="hidden-nojs dropdown-submenu visible-lg-block">
|
||||
<a href="/wg/#{{ area.acronym }}">{{ area.short_area_name }}</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% for g in area.active_groups %}
|
||||
<li><a href="{% url "ietf.group.info.group_home" group_type=g.type_id acronym=g.acronym %}">{{ g.acronym }} — {{ g.name}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
||||
<li class="hidden-nojs dropdown-submenu visible-lg-block">
|
||||
<a href="">IRTF</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% for group in rgs %}
|
||||
<li><a href="{% url "ietf.group.info.group_home" group_type=group.type_id acronym=group.acronym %}">{{ group.acronym }} — {{ group.name}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
|
@ -1,51 +0,0 @@
|
|||
{# widthratio rounds up, is useless #}
|
||||
{% load mathfilters %}
|
||||
|
||||
{% with cols=areas|length|add:1 %}
|
||||
{% with colw=100|div:cols %}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
{% for area in areas %}
|
||||
<th class="text-center" style="width:{{colw}}%">
|
||||
{{area.acronym|upper}}
|
||||
</th>
|
||||
{% endfor %}
|
||||
<th class="text-center" style="width:{{colw}}%">
|
||||
IRTF
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
{% for area in areas %}
|
||||
<td>
|
||||
<div class="btn-group-vertical btn-block">
|
||||
{% for group in area.active_groups %}
|
||||
<div class="btn-group btn-group-xs btn-group-justified">
|
||||
<a href="{% url "ietf.group.info.group_home" group_type=group.type_id acronym=group.acronym %}" class="btn btn-default">
|
||||
{{group.acronym}}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</td>
|
||||
{% endfor %}
|
||||
<td>
|
||||
<div class="btn-group-vertical btn-block">
|
||||
{% for group in rgs %}
|
||||
<div class="btn-group btn-group-xs btn-group-justified">
|
||||
<a href="{% url "ietf.group.info.group_home" group_type=group.type_id acronym=group.acronym %}" class="btn btn-default">
|
||||
{{group.acronym}}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endwith %}
|
||||
{% endwith %}
|
|
@ -1,24 +1,18 @@
|
|||
{% load bootstrap3 %}
|
||||
<h2>Display customization</h2>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<form action="#custom" method="post" />{% csrf_token %}
|
||||
<h3>Sort method</h2>
|
||||
{{ display_form.sort_method }}
|
||||
|
||||
<form role="form" method="post" action="#custom">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form display_form %}
|
||||
|
||||
<div class="form-group">
|
||||
<label>Show fields</label>
|
||||
{% for field in dc.get_display_fields_config %}
|
||||
<div class="checkbox">
|
||||
<label for="id_{{ field.codename }}">
|
||||
<input id="id_{{ field.codename }}" type="checkbox" name="{{ field.codename }}" {% if field.active %}checked{% endif %}>
|
||||
{{ field.description }}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% buttons %}
|
||||
<input type="submit" class="btn btn-primary" name="save_display">
|
||||
{% endbuttons %}
|
||||
<h3>Show fields</h2>
|
||||
<div>
|
||||
{% for field in dc.get_display_fields_config %}
|
||||
<div style="float: left; width: 30%;">
|
||||
<input id="id_{{ field.codename }}" type="checkbox" name="{{ field.codename }}"{% if field.active %} checked="checked"{% endif %} />
|
||||
<label for="id_{{ field.codename }}">{{ field.description }}</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div style="clear: both;"><br /></div>
|
||||
<input type="submit" value="Save configuration" name="save_display" />
|
||||
</form>
|
||||
|
|
|
@ -1,130 +1,124 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ cl.long_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{{ cl.long_name }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<ul class="nav nav-tabs nav-memory">
|
||||
<li class="active"><a href="#view" data-toggle="tab">Documents</a></li>
|
||||
<li><a href="#documents" data-toggle="tab">Explicitly added</a></li>
|
||||
<li><a href="#rules" data-toggle="tab">Rules</a></li>
|
||||
<li><a href="#custom" data-toggle="tab">Display customization</a></li>
|
||||
<li><a href="#info" data-toggle="tab">Exports</a></li>
|
||||
<div id="mytabs" class="yui-navset">
|
||||
<ul class="yui-nav">
|
||||
<li class="selected"><a href="#view"><em>Documents</em></a></li>
|
||||
<li><a href="#documents"><em>Explicitly added</em></a></li>
|
||||
<li><a href="#rules"><em>Rules</em></a></li>
|
||||
<li><a href="#custom"><em>Display customization</em></a></li>
|
||||
<li><a href="#info"><em>Exports</em></a></li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="yui-content">
|
||||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="view">
|
||||
{% include "community/view_list.html" %}
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="documents">
|
||||
<p>
|
||||
In order to add some individual documents to your list, you have to:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Search for the document or documents you want to add using the datatracker search form.</li>
|
||||
<li>In the search results, you'll find a link to add individual documents to your list.</li>
|
||||
</ul>
|
||||
<a class="btn btn-default" href="/doc/search">Search documents</a>
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th><th>State</th><th>Title</th><th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for doc in cl.added_ids.all %}
|
||||
<tr>
|
||||
<td>{{ doc.display_name }}</td>
|
||||
<td>{{ doc.get_state }}</td>
|
||||
<td><a href="{{ doc.get_absolute_url }}">{{ doc.title }}</a></td>
|
||||
<td><a class="btn btn-danger btn-xs" href="{% url "community_remove_document" cl.pk doc.pk %}">Remove</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="rules">
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr><th>Rule</th><th>Value</th><th>Documents</th><th></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for rule in cl.rule_set.all %}
|
||||
{% with rule.get_callable_rule as callable %}
|
||||
<tr>
|
||||
<td>{{ callable.description }}</td>
|
||||
<td>{{ callable.show_value }}</td>
|
||||
<td>{% with rule.cached_ids.count as count %}{{ count }} document{{ count|pluralize }}{% endwith %}</td>
|
||||
<td><a class="btn btn-danger btn-xs" href="{% url "community_remove_rule" cl.pk rule.pk %}">Remove</a></td>
|
||||
</tr>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Add a new rule</h3>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form rule_form %}
|
||||
|
||||
{% buttons %}
|
||||
<input type="submit" class="btn btn-primary" name="save_rule" value="Add rule">
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="custom">
|
||||
{% include "community/customize_display.html" %}
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="info">
|
||||
<p>Feel free to share the following links if you need to:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="{{ cl.secret }}/view/">Read only view for {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/changes/feed/">Feed for every change in status of {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/changes/significant/feed/">Feed for significant change in status of {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/subscribe/">Subscribe to the mailing list for every change in status of {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/subscribe/significant/">Subscribe to the mailing list for significant change in status of {{ cl.long_name }}</a></li>
|
||||
</ul>
|
||||
|
||||
<p>Export your list to CSV format:</p>
|
||||
<ul>
|
||||
<li><a href="csv/">CSV for {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/csv/">Read only CSV for {{ cl.long_name }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="view">
|
||||
{% include "community/view_list.html" %}
|
||||
</div>
|
||||
|
||||
<div id="documents">
|
||||
<h2>Documents explicitly included, from a document search.</a></h2>
|
||||
<p>
|
||||
In order to add some individual documents to your list you have to:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Search for the document or documents you want to add using the datatracker search form.</li>
|
||||
<li>In the search result you'll find a link to add individual documents to your list.</li>
|
||||
</ul>
|
||||
<p>
|
||||
<a href="/doc/search"><b>Go to the Search Form to search for and add specific documents</b></a>
|
||||
</p>
|
||||
|
||||
<table class="ietf-table">
|
||||
<tr><th>Name</th><th>State</th><th>Title</th><th>Remove from list</th></tr>
|
||||
{% for doc in cl.added_ids.all %}
|
||||
<tr class="{% cycle oddrow,evenrow %}">
|
||||
<td>{{ doc.display_name }}</td>
|
||||
<td>{{ doc.get_state }}</td>
|
||||
<td><a href="{{ doc.get_absolute_url }}"</a>{{ doc.title }}</td>
|
||||
<td><a href="{% url "community_remove_document" cl.pk doc.pk %}">Remove</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="rules">
|
||||
<h2>Rules added to this list</h2>
|
||||
<table class="ietf-table">
|
||||
<tr><th>Rule</th><th>Value</th><th>Documents</th><th>Remove from list</th></tr>
|
||||
{% for rule in cl.rule_set.all %}
|
||||
{% with rule.get_callable_rule as callable %}
|
||||
<tr class="{% cycle oddrow,evenrow %}">
|
||||
<td>{{ callable.description }}</td>
|
||||
<td>{{ callable.show_value }}</td>
|
||||
<td>{% with rule.cached_ids.count as count %}{{ count }} document{{ count|pluralize }}{% endwith %}</td>
|
||||
<td><a href="{% url "community_remove_rule" cl.pk rule.pk %}">Remove</a></td>
|
||||
</tr>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
<h3>Add a new rule</h3>
|
||||
<form method="post" action="#rules">{% csrf_token %}
|
||||
{{ rule_form.as_p }}
|
||||
<input type="submit" name="save_rule" value="Add rule" />
|
||||
</form>
|
||||
<div class="rule_values" style="display: none;">
|
||||
{% for entry in rule_form.get_all_options %}
|
||||
<div class="{{ entry.type }}">
|
||||
<select>
|
||||
{% for option in entry.options %}
|
||||
<option value={{ option.0 }}>{{ option.1|safe }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="custom">
|
||||
{% include "community/customize_display.html" %}
|
||||
</div>
|
||||
|
||||
<div id="info">
|
||||
<p>Feel free to share the following links if you need it.</p>
|
||||
<ul>
|
||||
<li><a href="{{ cl.secret }}/view/">Read only view for {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/changes/feed/">Feed for every change in status of {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/changes/significant/feed/">Feed for significant change in status of {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/subscribe/">Subscribe to the mailing list for every change in status of {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/subscribe/significant/">Subscribe to the mailing list for significant change in status of {{ cl.long_name }}</a></li>
|
||||
</ul>
|
||||
|
||||
<p>Export your list to CSV format</p>
|
||||
<ul>
|
||||
<li><a href="csv/">CSV for {{ cl.long_name }}</a></li>
|
||||
<li><a href="{{ cl.secret }}/csv/">Read only CSV for {{ cl.long_name }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% comment %}
|
||||
XXX scrolling jumps around when using this, unfortunately
|
||||
<script>
|
||||
$('.nav-memory a').click(function (e) {
|
||||
e.preventDefault();
|
||||
$(this).tab('show');
|
||||
});
|
||||
{% block js %}
|
||||
<script type="text/javascript" src="/js/community.js"></script>
|
||||
{% endblock js %}
|
||||
|
||||
// store the currently selected tab in the hash value
|
||||
$("ul.nav-tabs > li > a").on("shown.bs.tab", function (e) {
|
||||
var id = $(e.target).attr("href").substr(1);
|
||||
window.location.hash = id;
|
||||
});
|
||||
|
||||
// on load of the page: switch to the currently selected tab
|
||||
var hash = window.location.hash;
|
||||
$('.nav-memory a[href="' + hash + '"]').tab('show');
|
||||
</script>
|
||||
{% endcomment %}
|
||||
{% block scripts %}
|
||||
var tabView = new YAHOO.widget.TabView('mytabs');
|
||||
var url = location.href.split('#');
|
||||
if (url[1]) {
|
||||
url[1] = "#"+url[1];
|
||||
var tabs = tabView.get('tabs');
|
||||
for (var i = 0; i < tabs.length; i++) {
|
||||
if (url[1].indexOf(tabs[i].get('href')) == 0) {
|
||||
tabView.set('activeIndex', i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,29 +1,22 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Subscribe to {{ cl.long_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1>Subscribe to {{ cl.long_name }}</h1>
|
||||
{% if success %}
|
||||
<h1>Subscription successful</h1>
|
||||
|
||||
<p>We have sent an email to your email address with instructions to complete your subscription.</p>
|
||||
<p>
|
||||
We have sent an email to your email address with instructions to complete your subscription.
|
||||
</p>
|
||||
{% else %}
|
||||
<h1>Subscribe to {{ cl.long_name }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<p>Subscribe to the email list for notifications of {% if significant %}significant {% endif %}changes on {{ cl.long_name }}.</p>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Subscribe</button>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
<p>
|
||||
Subscribe to the email list for notifications of {% if significant %}significant {% endif %}changes on {{ cl.long_name }}.
|
||||
</p>
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form }}
|
||||
</table>
|
||||
<input type="submit" value="Subscribe" />
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Subscription to {{ cl.long_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Subscription to {{ cl.long_name }}</h1>
|
||||
|
||||
<p>Your email address {{ email }} has been successfully subscribed to {{ cl.long_name }}.</p>
|
||||
|
||||
<p>
|
||||
<a class="btn btn-primary" href="{% url "view_personal_list" secret=cl.secret %}">Back</a>
|
||||
You email address {{ email }} has been successfully subscribed to {{ cl.long_name }}
|
||||
</p>
|
||||
<p>
|
||||
<a href="{% url "view_personal_list" secret=cl.secret %}">Return to the list view</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,33 +1,22 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Cancel subscription to {{ cl.long_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1>Cancel subscription to {{ cl.long_name }}</h1>
|
||||
{% if success %}
|
||||
<h1>Cancellation successful</h1>
|
||||
|
||||
<p>
|
||||
You will receive a confirmation email shortly containing further instructions on how to cancel your subscription.
|
||||
</p>
|
||||
<p>
|
||||
You will receive a confirmation email shortly containing further instructions on how to cancel your subscription.
|
||||
</p>
|
||||
{% else %}
|
||||
<h1>Cancel subscription to {{ cl.long_name }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<p>
|
||||
Cancel your subscription to the email list for notifications of {% if significant %}significant {% endif %}changes on {{ cl.long_name }}.
|
||||
</p>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Subscribe</button>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
<p>
|
||||
Cancel your subscription to the email list for notifications of {% if significant %}significant {% endif %}changes on {{ cl.long_name }}.
|
||||
</p>
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form }}
|
||||
</table>
|
||||
<input type="submit" value="Cancel subscription" />
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Cancelled subscription to {{ cl.long_name }}{% endblock %}
|
||||
{% block title %}Canceled subscription to {{ cl.long_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Cancelled subscription to {{ cl.long_name }}</h1>
|
||||
|
||||
<h1>Canceled subscription to {{ cl.long_name }}</h1>
|
||||
<p>
|
||||
Your email address {{ email }} has been successfully removed from the {{ cl.long_name }} {% if significant %}significant {% endif %}changes mailing list.
|
||||
You email address {{ email }} has been successfully removed form {{ cl.long_name }} {% if significant %}significant {% endif %}changes mailing list.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a class="btn btn-primary" href="{{ cl.get_public_url }}">Back</a>
|
||||
<a href="{{ cl.get_public_url }}">Return to the list view</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="alternate" type="application/atom+xml" title="Changes on {{ cl.long_name }}" href="../changes/feed/" />
|
||||
<link rel="alternate" type="application/atom+xml" title="Significant changes on {{ cl.long_name }}" href="../changes/significant/feed/" />
|
||||
<link rel="alternate" type="application/rss+xml" title="Changes on {{ cl.long_name }} RSS Feed" href="../changes/feed/" />
|
||||
<link rel="alternate" type="application/rss+xml" title="Significant changes on {{ cl.long_name }} RSS Feed" href="../changes/significant/feed/" />
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ cl.long_name }}{% endblock %}
|
||||
|
@ -10,7 +10,7 @@
|
|||
{% block content %}
|
||||
<h1>{{ cl.long_name }}</h1>
|
||||
<p>
|
||||
Subscribe to notification email lists:
|
||||
Subscribe to notification email list:
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="../subscribe/">All changes email list</a></li>
|
||||
|
|
|
@ -3,45 +3,42 @@
|
|||
{% with cl.get_rfcs_and_drafts as documents %}
|
||||
{% with dc.get_active_fields as fields %}
|
||||
<h2>Drafts</h2>
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
{% for field in fields %}
|
||||
<th>{{ field.description }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for doc in documents.1 %}
|
||||
<tr>
|
||||
{% for field in fields %}
|
||||
<td>{% show_field field doc %}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<table class="ietf-table">
|
||||
<tr>
|
||||
{% for field in fields %}
|
||||
<th>{{ field.description }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% for doc in documents.1 %}
|
||||
<tr class="{% cycle oddrow,evenrow %}">
|
||||
{% for field in fields %}
|
||||
<td>
|
||||
{% show_field field doc %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endwith %}
|
||||
|
||||
{% with dc.get_active_fields as fields %}
|
||||
<h2>RFCs</h2>
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
{% for field in fields %}
|
||||
<th>{{ field.rfcDescription }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for doc in documents.0 %}
|
||||
<tr>
|
||||
{% for field in fields %}
|
||||
<td>{% show_field field doc %}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
{% with dc.get_active_fields as fields %}
|
||||
<table class="ietf-table">
|
||||
<tr>
|
||||
{% for field in fields %}
|
||||
<th>{{ field.rfcDescription }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% for doc in documents.0 %}
|
||||
<tr class="{% cycle oddrow,evenrow %}">
|
||||
{% for field in fields %}
|
||||
<td>
|
||||
{% show_field field doc %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endwith %}
|
||||
|
||||
{% endwith %}
|
||||
|
|
|
@ -1,51 +1,68 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{# Copyright The IETF Trust 2010, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load ietf_filters %}
|
||||
{% block title %}User settings{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1>User settings</h1>
|
||||
<h2>Cookie settings for the IETF datatracker</h2>
|
||||
|
||||
<p>
|
||||
The following settings are implemented using cookies, so if you have
|
||||
cookies disabled then you will not be able to change the settings
|
||||
(everything still continues to work by using default settings).
|
||||
</p>
|
||||
<p> Following settings are implemented using cookies, so if you have
|
||||
cookies disabled then you are not able to change the settings
|
||||
(everything still continues to work by using default settings).</p>
|
||||
|
||||
<h2>How many days is considered "new"?</h2>
|
||||
<table id="settings">
|
||||
<tr class="setting-header">
|
||||
<td colspan="6">
|
||||
<h2 class="ietf-divider">How many days is considered new</h2>
|
||||
</td>
|
||||
<tr>
|
||||
<tr class="setting-description">
|
||||
<td colspan="6">
|
||||
<p>This setting affects how many days is considered new enough to get the special marking in the drafts page. Default setting is 14 days.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="settings-values">
|
||||
<td>{% if new_enough == 7 %}<span class="ietf-highlight-y"><a href="/accounts/settings/new_enough/7">7 days</a></span>{%else%}<a href="/accounts/settings/new_enough/7">7 days</a>{% endif %}</td></td>
|
||||
<td>{% if new_enough == 14 %}<span class="ietf-highlight-y"><a href="/accounts/settings/new_enough/14">14 days</a></span>{%else%}<a href="/accounts/settings/new_enough/14">14 days</a>{% endif %}</td>
|
||||
<td>{% if new_enough == 21 %}<span class="ietf-highlight-y"><a href="/accounts/settings/new_enough/21">21 days</a></span>{%else%}<a href="/accounts/settings/new_enough/21">21 days</a>{% endif %}</td>
|
||||
<td>{% if new_enough == 30 %}<span class="ietf-highlight-y"><a href="/accounts/settings/new_enough/30">30 days</a></span>{%else%}<a href="/accounts/settings/new_enough/30">30 days</a>{% endif %}</td>
|
||||
<td>{% if new_enough == 60 %}<span class="ietf-highlight-y"><a href="/accounts/settings/new_enough/60">60 days</a></span>{%else%}<a href="/accounts/settings/new_enough/60">60 days</a>{% endif %}</td>
|
||||
<td>{% if new_enough == 90 %}<span class="ietf-highlight-y"><a href="/accounts/settings/new_enough/90">90 days</a></span>{%else%}<a href="/accounts/settings/new_enough/90">90 days</a>{% endif %}</td>
|
||||
</tr>
|
||||
|
||||
<p>This setting affects how many days are considered "new enough" to get the special highlighting in the documents table. Default setting is 14 days.</p>
|
||||
|
||||
<div class="btn-group btn-group-justified">
|
||||
<a class="btn btn-default {% if new_enough == 7 %}active{% endif %}" href="/accounts/settings/new_enough/7">7 days</a>
|
||||
<a class="btn btn-default {% if new_enough == 14 %}active{% endif %}" href="/accounts/settings/new_enough/14">14 days</a>
|
||||
<a class="btn btn-default {% if new_enough == 21 %}active{% endif %}" href="/accounts/settings/new_enough/21">21 days</a>
|
||||
<a class="btn btn-default {% if new_enough == 30 %}active{% endif %}" href="/accounts/settings/new_enough/30">30 days</a>
|
||||
<a class="btn btn-default {% if new_enough == 60 %}active{% endif %}" href="/accounts/settings/new_enough/60">60 days</a>
|
||||
<a class="btn btn-default {% if new_enough == 90 %}active{% endif %}" href="/accounts/settings/new_enough/90">90 days</a>
|
||||
</div>
|
||||
|
||||
<h2 class="ietf-divider">How many days is considered "soon"?</h2>
|
||||
|
||||
<p>This setting tells what is considered "soon" when showing documents that are going to be expire soon. Default setting is 14 days.</p>
|
||||
|
||||
<div class="btn-group btn-group-justified">
|
||||
<a class="btn btn-default {% if expires_soon == 7 %}active{% endif %}" href="/accounts/settings/expires_soon/7">7 days</a>
|
||||
<a class="btn btn-default {% if expires_soon == 14 %}active{% endif %}" href="/accounts/settings/expires_soon/14">14 days</a>
|
||||
<a class="btn btn-default {% if expires_soon == 21 %}active{% endif %}" href="/accounts/settings/expires_soon/21">21 days</a>
|
||||
<a class="btn btn-default {% if expires_soon == 30 %}active{% endif %}" href="/accounts/settings/expires_soon/30">30 days</a>
|
||||
<a class="btn btn-default {% if expires_soon == 60 %}active{% endif %}" href="/accounts/settings/expires_soon/60">60 days</a>
|
||||
<a class="btn btn-default {% if expires_soon == 90 %}active{% endif %}" href="/accounts/settings/expires_soon/90">90 days</a>
|
||||
</div>
|
||||
|
||||
<h2 class="ietf-divider">Show full document text by default?</h2>
|
||||
|
||||
<p>Show the full text immediately on the document page instead of only showing beginning of it. This defaults to off.</p>
|
||||
|
||||
<div class="btn-group btn-group-justified">
|
||||
<a class="btn btn-default {% if full_draft == "off" %}active{% endif %}" href="/accounts/settings/full_draft/off">Off</a>
|
||||
<a class="btn btn-default {% if full_draft == "on" %}active{% endif %}" href="/accounts/settings/full_draft/on">On</a>
|
||||
</div>
|
||||
<tr class="setting-header">
|
||||
<td colspan="6">
|
||||
<h2 class="ietf-divider">How many days is considered soon</h2>
|
||||
</td>
|
||||
<tr>
|
||||
<tr class="setting-description">
|
||||
<td colspan="6">
|
||||
<p>This setting tells what is considered soon when showing document which is going to be expire soon. Default setting is 14 days.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="settings-values">
|
||||
<td>{% if expires_soon == 7 %}<span class="ietf-highlight-y"><a href="/accounts/settings/expires_soon/7">7 days</a></span>{%else%}<a href="/accounts/settings/expires_soon/7">7 days</a>{% endif %}</td></td>
|
||||
<td>{% if expires_soon == 14 %}<span class="ietf-highlight-y"><a href="/accounts/settings/expires_soon/14">14 days</a></span>{%else%}<a href="/accounts/settings/expires_soon/14">14 days</a>{% endif %}</td>
|
||||
<td>{% if expires_soon == 21 %}<span class="ietf-highlight-y"><a href="/accounts/settings/expires_soon/21">21 days</a></span>{%else%}<a href="/accounts/settings/expires_soon/21">21 days</a>{% endif %}</td>
|
||||
<td>{% if expires_soon == 30 %}<span class="ietf-highlight-y"><a href="/accounts/settings/expires_soon/30">30 days</a></span>{%else%}<a href="/accounts/settings/expires_soon/30">30 days</a>{% endif %}</td>
|
||||
<td>{% if expires_soon == 60 %}<span class="ietf-highlight-y"><a href="/accounts/settings/expires_soon/60">60 days</a></span>{%else%}<a href="/accounts/settings/expires_soon/60">60 days</a>{% endif %}</td>
|
||||
<td>{% if expires_soon == 90 %}<span class="ietf-highlight-y"><a href="/accounts/settings/expires_soon/90">90 days</a></span>{%else%}<a href="/accounts/settings/expires_soon/90">90 days</a>{% endif %}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="setting-header">
|
||||
<td colspan="6">
|
||||
<h2 class="ietf-divider">Show full document text in document page</h2>
|
||||
</td>
|
||||
<tr>
|
||||
<tr class="setting-description">
|
||||
<td colspan="6">
|
||||
<p>Show the full draft immediately on the document page instead of only showing beginning of it. This defaults to off.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="settings-values">
|
||||
<td>{% if full_draft == "off" %}<span class="ietf-highlight-y"><a href="/accounts/settings/full_draft/off">off</a></span>{%else%}<a href="/accounts/settings/full_draft/off">off</a>{% endif %}</td></td>
|
||||
<td>{% if full_draft == "on" %}<span class="ietf-highlight-y"><a href="/accounts/settings/full_draft/on">on</a></span>{%else%}<a href="/accounts/settings/full_draft/on">on</a>{% endif %}</td></td>
|
||||
</tr>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -1,23 +1,33 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block title %}Add comment on {{ doc }}{% endblock %}
|
||||
|
||||
{% block title %}Add comment for {{ doc }}{% endblock %}
|
||||
{% block morecss %}
|
||||
form.add-comment #id_comment {
|
||||
width: 600px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
form.add-comment .actions {
|
||||
padding-top: 20px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Add comment<br><small>{{ doc }}</small></h1>
|
||||
<h1>Add comment on {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<p>The comment will be added to the history trail.</p>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
<p class="help-block">The comment will be added to the history trail.</p>
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="add-comment" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_history" name=doc.name %}">Back</a>
|
||||
<input type="submit" value="Add comment"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,27 +1,36 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% load ietf_filters %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Approval announcement writeup for {{ doc }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form #id_approval_text {
|
||||
width: 700px;
|
||||
height: 600px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Approval announcement writeup<br><small>{{ doc }}</small></h1>
|
||||
<h1>Approval announcement writeup for {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form approval_text_form %}
|
||||
<p>Sent after approval.</p>
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="save_approval_text">Save text</button>
|
||||
<button type="submit" class="btn btn-warning" name="regenerate_approval_text">Regenerate text</button>
|
||||
{% if user|has_role:"Secretariat" and can_announce %}
|
||||
<a class="btn btn-default" href="{% url "doc_approve_ballot" name=doc.name %}">Approve ballot</a>
|
||||
{% endif %}
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
{{ approval_text_form.approval_text }}
|
||||
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<input type="submit" name="save_approval_text" value="Save Approval Announcement Text" />
|
||||
<input type="submit" name="regenerate_approval_text" value="Regenerate Approval Announcement Text" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% load ietf_filters %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<p>
|
||||
{% if can_announce %}
|
||||
<a href="{% url "doc_approve_ballot" name=doc.name %}">Approve ballot</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endblock%}
|
||||
|
|
|
@ -1,23 +1,45 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Approve ballot for {{ doc }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form.approve-ballot pre {
|
||||
margin: 0;
|
||||
padding: 4px;
|
||||
border-top: 4px solid #eee;
|
||||
border-bottom: 4px solid #eee;
|
||||
}
|
||||
form.approve-ballot .announcement {
|
||||
overflow-x: auto;
|
||||
overflow-y: scroll;
|
||||
width: 800px;
|
||||
height: 400px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Approve ballot<br><small>{{ doc }}</small></h1>
|
||||
<h1>Approve Ballot for {{ doc }}</h1>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
<pre>{{ announcement }}</pre>
|
||||
<div>IETF announcement:</div>
|
||||
|
||||
<div class="buttonlist">
|
||||
{% if action == "to_announcement_list" %}
|
||||
<button class="btn btn-warning" type="submit">Notify RFC Editor, send announcement & close ballot</button>
|
||||
{% elif action == "to_rfc_editor" %}
|
||||
<button class="btn btn-warning" type="submit">Email RFC Editor & close ballot</button>
|
||||
{% elif action == "do_not_publish" %}
|
||||
<button class="btn btn-warning" type="submit">Email RFC Editor (DNP) & close ballot"/>
|
||||
{% endif %}
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_ballot_approvaltext" name=doc.name %}">Back</a>
|
||||
</div>
|
||||
<form class="approve-ballot" action="" method="post">{% csrf_token %}
|
||||
|
||||
<div class="announcement">
|
||||
<pre>{{ announcement }}</pre>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<a href="{% url "doc_ballot_approvaltext" name=doc.name %}">Back</a>
|
||||
{% if action == "to_announcement_list" %}
|
||||
<input type="submit" value="Notify the RFC Editor, send out the announcement and close ballot"/>
|
||||
{% endif %}
|
||||
{% if action == "to_rfc_editor" %}
|
||||
<input type="submit" value="Send message to the RFC Editor and close ballot"/>
|
||||
{% endif %}
|
||||
{% if action == "do_not_publish" %}
|
||||
<input type="submit" value="Send message to the RFC Editor (DNP) and close ballot"/>
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,17 +1,19 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Ballot issued for {{ doc }}{% endblock %}
|
||||
{% block title %}Ballot for {{ doc }} issued{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Ballot issued<br><small>{{ doc }}</small></h1>
|
||||
<h1>Ballot for {{ doc }} issued</h1>
|
||||
|
||||
<p>Ballot has been sent out.</p>
|
||||
|
||||
{% if doc.telechat_date %}
|
||||
<p>The document is currently on the {{ doc.telechat_date }} telechat agenda.</p>
|
||||
<p>The document is currently on the {{ doc.telechat_date }} telechat agenda.</p>
|
||||
{% else %}
|
||||
<p>The document is not on any telechat agenda.</p>
|
||||
<p>The document is not on any telechat agenda.</p>
|
||||
{% endif %}
|
||||
|
||||
<a class="btn btn-default pull-right" href="{{ back_url }}">Back</a>
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back to document</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,18 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Clear ballot for {{ doc }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Clear ballot<br><small>{{ doc }}</small></h1>
|
||||
<h1>Clear ballot for {{ doc }}</h1>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
<p class="alert alert-danger">
|
||||
<b>Clear the ballot for {{ doc }}?</b>
|
||||
<br>
|
||||
This will clear all ballot positions and discuss entries.
|
||||
</p>
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<p>Clear the ballot for {{ doc.file_tag }}?</p>
|
||||
|
||||
<div class="buttonlist">
|
||||
<button type="submit" class="btn btn-danger">Clear</button>
|
||||
<a class="btn btn-default pull-right" href="{{ back_url }}ballot/">Back</a>
|
||||
</div>
|
||||
<p>This will clear all ballot positions and discuss entries.</p>
|
||||
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}ballot/">Back</a>
|
||||
<input type="submit" value="Clear ballot"/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,18 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Defer ballot for {{ doc }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Defer ballot<br><small>{{ doc }}</small></h1>
|
||||
<h1>Defer ballot for {{ doc }}</h1>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
<p class="alert alert-danger">
|
||||
<b>Defer the ballot for {{ doc }}?</b>
|
||||
<br>
|
||||
The ballot will then be put on the IESG agenda of {{ telechat_date }}.
|
||||
</p>
|
||||
<form class="defer" action="" method="post">{% csrf_token %}
|
||||
<p>Defer the ballot for {{ doc.file_tag }}?</p>
|
||||
|
||||
<div class="buttonlist">
|
||||
<input type="submit" class="btn btn-danger" value="Defer ballot">
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
</div>
|
||||
<p>The ballot will then be on the IESG agenda of {{ telechat_date }}.</p>
|
||||
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<input type="submit" value="Defer ballot"/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,64 +1,92 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Change position for {{ ad.plain_name }} on {{ doc }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change position for {{ ad.plain_name }}<br><small>{{ doc }}</small></h1>
|
||||
{% block morecss %}
|
||||
div.ballot-deferred {
|
||||
margin-top: 8px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
form.position-form .position ul {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
form.position-form .position li {
|
||||
list-style-type: none;
|
||||
float: left;
|
||||
padding-right: 10px;
|
||||
}
|
||||
form.position-form .last-edited {
|
||||
font-style: italic;
|
||||
}
|
||||
form.position-form .discuss-text {
|
||||
padding-top: 20px
|
||||
}
|
||||
form.position-form #id_discuss,
|
||||
form.position-form #id_comment {
|
||||
width: 700px;
|
||||
height: 250px;
|
||||
}
|
||||
form.position-form .comment-text {
|
||||
margin-top: 20px;
|
||||
}
|
||||
div.question {
|
||||
font-size: 173%;
|
||||
padding-left: 5px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% bootstrap_messages %}
|
||||
{% block content %}
|
||||
<h1>Change position for {{ ad.plain_name }} on {{ doc }}</h1>
|
||||
|
||||
<div class="question">{{ ballot.ballot_type.question }}</div>
|
||||
|
||||
{% if ballot_deferred %}
|
||||
<p class="alert alert-info">
|
||||
Ballot deferred by {{ ballot_deferred.by }} on {{ ballot_deferred.time|date:"Y-m-d" }}.
|
||||
</p>
|
||||
<div class="ballot-deferred">Ballot deferred by {{ ballot_deferred.by }} on {{ ballot_deferred.time|date:"Y-m-d" }}.</div>
|
||||
{% endif %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
<form class="position-form" action="" method="post">{% csrf_token %}
|
||||
<div>
|
||||
<span class="position">{{ form.position }}</span>
|
||||
<span class="actions">
|
||||
<input type="submit" name="send_mail" value="Save and send email"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" %}
|
||||
{% if ballot_deferred %}<input type="submit" name="Undefer" value="Undefer"/>{% else %}<input type="submit" name="Defer" value="Defer"/>{% endif %}
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{% for field in form %}
|
||||
{% bootstrap_field field %}
|
||||
{% if field.name == "discuss" and old_pos and old_pos.discuss_time %}
|
||||
<span class="help-block">Last edited {{ old_pos.discuss_time }}</span>
|
||||
{% elif field.name == "comment" and old_pos and old_pos.comment_time %}
|
||||
<span class="help-block">Last edited {{ old_pos.comment_time }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div style="clear:left"></div>
|
||||
|
||||
<div class="discuss-widgets"{% if not show_discuss_text %} style="display:none"{% endif %}>
|
||||
<div class="discuss-text">
|
||||
{{ form.discuss.label_tag }}
|
||||
{% if old_pos and old_pos.discuss_time %}<span class="last-edited">(last edited {{ old_pos.discuss_time }})</span>{% endif %}
|
||||
</div>
|
||||
{{ form.discuss.errors }}
|
||||
{{ form.discuss }}
|
||||
</div>
|
||||
|
||||
<div class="comment-text">
|
||||
{{ form.comment.label_tag }}
|
||||
{% if old_pos and old_pos.comment_time %}<span class="last-edited">(last edited {{ old_pos.comment_time }}){% endif %}</span>
|
||||
</div>
|
||||
{{ form.comment }}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="send_mail">Save & send email</button>
|
||||
<input type="submit" class="btn btn-default" value="Save">
|
||||
<div class="actions">
|
||||
<a href="{{ return_to_url }}">Back</a>
|
||||
</div>
|
||||
|
||||
{{ form.return_to_url }}
|
||||
|
||||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" %}
|
||||
{% if ballot_deferred %}
|
||||
<input type="submit" class="btn btn-warning" name="Undefer" value="Undefer ballot">
|
||||
{% else %}
|
||||
<input type="submit" class="btn btn-danger" name="Defer" value="Defer ballot">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
var block_pos = {{ blocking_positions|safe }};
|
||||
|
||||
function discuss_toggle(val) {
|
||||
if (val in block_pos) {
|
||||
$("#div_id_discuss").show();
|
||||
} else {
|
||||
$("#div_id_discuss").hide();
|
||||
}
|
||||
}
|
||||
|
||||
$("input[name=position]").click(function () {
|
||||
discuss_toggle($(this).val());
|
||||
});
|
||||
|
||||
discuss_toggle($("input[name=position]:checked").val());
|
||||
{% block content_end %}
|
||||
<script>
|
||||
var blockingPositions = {{ blocking_positions|safe }};
|
||||
</script>
|
||||
<script type="text/javascript" src="/js/doc-edit-position.js"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,36 +1,46 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% load ietf_filters %}
|
||||
{% block title %}Last Call text for {{ doc }}{% endblock %}
|
||||
|
||||
{% block title %}Last call text for {{ doc }}{% endblock %}
|
||||
{% block morecss %}
|
||||
form #id_last_call_text {
|
||||
width: 700px;
|
||||
height: 600px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Last call text<br><small>{{ doc }}</small></h1>
|
||||
<h1>Last Call text for {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form last_call_form %}
|
||||
<p>{{ last_call_form.last_call_text.errors }}</p>
|
||||
|
||||
{% if can_request_last_call and need_intended_status %}
|
||||
<span class="help-block">
|
||||
You need to select intended status of {{ need_intended_status }} and regenerate last call text to request last call.
|
||||
</span>
|
||||
{% endif %}
|
||||
{{ last_call_form.last_call_text }}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="save_last_call_text">Save text</button>
|
||||
{% if can_request_last_call and not need_intended_status %}
|
||||
<button type="submit" class="btn btn-warning" name="send_last_call_request">Save text & request last call</button>
|
||||
{% endif %}
|
||||
<button type="submit" class="btn btn-warning" name="regenerate_last_call_text">Regenerate text</button>
|
||||
{% if user|has_role:"Secretariat" and can_make_last_call %}
|
||||
<a class="btn btn-danger" href="{% url "doc_make_last_call" name=doc.name %}">Issue last call</a>
|
||||
{% endif %}
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<p>{{ last_call_form.last_call_text.errors }}</p>
|
||||
|
||||
{% if can_request_last_call and need_intended_status %}
|
||||
<p>You need to select intended status of {{ need_intended_status }} and regenerate last call text to request last call.</p>
|
||||
{% endif %}
|
||||
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<input type="submit" name="save_last_call_text" value="Save Last Call Text" />
|
||||
<input type="submit" name="regenerate_last_call_text" value="Regenerate Last Call Text" />
|
||||
{% if can_request_last_call and not need_intended_status %}
|
||||
<input style="margin-left: 8px" type="submit" name="send_last_call_request" value="Save and Request Last Call" />
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% load ietf_filters %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<p>
|
||||
{% if can_make_last_call %}
|
||||
<a href="{% url "doc_make_last_call" name=doc.name %}">Make Last Call</a>
|
||||
{% endif %}
|
||||
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endblock%}
|
||||
|
|
|
@ -1,55 +1,47 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% extends "base.html" %}
|
||||
{% load ietf_filters %}
|
||||
{% block title %}Send ballot position email for {{ ad }}{% endblock %}
|
||||
|
||||
{% block title %}Send ballot position for {{ ad }}{% endblock %}
|
||||
{% block morecss %}
|
||||
form.send-ballot pre {
|
||||
margin: 0;
|
||||
padding: 4px;
|
||||
border-top: 4px solid #eee;
|
||||
border-bottom: 4px solid #eee;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Send ballot position for {{ ad }}</h1>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="form-group">
|
||||
<label>From</label>
|
||||
<input class="form-control" type="text" placeholder="{{ frm }}" disabled>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>To</label>
|
||||
<input class="form-control" type="text" placeholder="{{ to }}" disabled>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Cc</label>
|
||||
<input class="form-control" type="email" name="cc">
|
||||
<span class="help-block">Separate email addresses with commas.</span>
|
||||
</div>
|
||||
|
||||
{% if doc.notify %}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="cc_state_change" value="1" checked>
|
||||
<b>Cc:</b> {{ doc.notify }}
|
||||
</label>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input class="form-control" type="text" placeholder="{{ subject }}" disabled>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<pre>{{ body|wrap_text }}</pre>
|
||||
</div>
|
||||
|
||||
<div class="buttonlist">
|
||||
<input type="submit" class="btn btn-danger" value="Send">
|
||||
<a class="btn btn-default pull-right" href="{{ back_url }}">Back</a>
|
||||
</div>
|
||||
<h1>Send ballot position email for {{ ad }}</h1>
|
||||
|
||||
<form class="send-ballot" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
<tr><th>From:</th> <td>{{ frm }}</td></tr>
|
||||
<tr><th>To:</th> <td>{{ to }}</td></tr>
|
||||
<tr>
|
||||
<th>Cc:<br/>
|
||||
<span class="help">separated<br/> by comma</span></th>
|
||||
<td><input type="text" name="cc" value="" size="75" /><br/>
|
||||
{% if doc.notify %}
|
||||
<label>
|
||||
<input type="checkbox" name="cc_state_change" value="1" checked="checked" />
|
||||
{{ doc.notify }}
|
||||
</label>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr><th>Subject:</th> <td>{{ subject }}</td></tr>
|
||||
<tr>
|
||||
<th>Body:</th>
|
||||
<td><pre>{{ body|wrap_text }}</pre></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<input type="submit" value="Send"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,28 +1,34 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Ballot writeup and notes for {{ doc }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form #id_ballot_writeup {
|
||||
width: 700px;
|
||||
height: 600px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Ballot writeup and notes for {{ doc }}</h1>
|
||||
|
||||
<h1>Ballot writeup and notes<br><small>{{ doc }}</small></h1>
|
||||
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
|
||||
<p>(Technical Summary, Working Group Summary, Document Quality,
|
||||
Personnel, RFC Editor Note, IRTF Note, IESG Note, IANA Note)</p>
|
||||
|
||||
<p>This text will be appended to all announcements and messages to
|
||||
the IRTF or RFC Editor.</p>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form ballot_writeup_form %}
|
||||
|
||||
<span class="help-block">
|
||||
Technical summary, Working Group summary, document quality, personnel, RFC Editor note, IRTF note, IESG note, IANA note. This text will be appended to all announcements and messages to the IRTF or RFC Editor.
|
||||
</span>
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="save_ballot_writeup">Save</button>
|
||||
<button type="submit" class="btn btn-warning" name="issue_ballot">Save & {% if ballot_issued %}re-{% endif %}issue ballot</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
{{ ballot_writeup_form.ballot_writeup }}
|
||||
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<input type="submit" name="save_ballot_writeup" value="Save Ballot Writeup" />
|
||||
<input style="margin-left: 8px" type="submit" name="issue_ballot" value="Save and {% if ballot_issued %}Re-{% endif %}Issue Ballot" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
{% endblock%}
|
||||
|
|
|
@ -1,37 +1,14 @@
|
|||
{% load ietf_filters %}
|
||||
<div class="ballot-popup">
|
||||
<div class="content">
|
||||
{{ ballot_content }}
|
||||
</div>
|
||||
<div class="actions">
|
||||
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span aria-hidden="true">×</span>
|
||||
<span class="sr-only">Close</span>
|
||||
</button>
|
||||
<h4 class="modal-title" id="modal-title-{{ ballot_id }}">Ballot for {{ doc.name }}</h4>
|
||||
{% if deferred %}
|
||||
<p>Ballot deferred by {{ deferred.by }} on {{ deferred.time|date:"Y-m-d" }}.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
{{ ballot_content }}
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
{% if editable and user|has_role:"Area Director,Secretariat" %}
|
||||
{% if user|has_role:"Area Director" %}
|
||||
<a class="btn btn-default" href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot_id %}">Edit position</a>
|
||||
{% endif %}
|
||||
|
||||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" %}
|
||||
{% if deferred %}
|
||||
<a class="btn btn-default" href="{% url "doc_undefer_ballot" name=doc.name %}">Undefer ballot</a>
|
||||
{% else %}
|
||||
<a class="btn btn-warning" href="{% url "doc_defer_ballot" name=doc.name %}">Defer ballot</a>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<a class="btn btn-danger" href="{% url "doc_clear_ballot" name=doc.name %}">Clear ballot</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
|
||||
{% if request.user|has_role:"Area Director" %}
|
||||
<a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot_id %}" class="button" style="margin-right: 1em;">Edit Position</a>
|
||||
{% endif %}
|
||||
|
||||
<a href="" class="button close">Close</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,22 +1,39 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
color: #a00;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Change shepherding AD for {{titletext}}{% endblock %}
|
||||
{% block title %}
|
||||
Change the shepherding AD for {{titletext}}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change shepherding AD<br><small>{{titletext}}</small></h1>
|
||||
<h1>Change the shepherding AD for {{titletext}}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.canonical_name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="edit-info" action="" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=doc.canonical_name %}">Back</a>
|
||||
<input type="submit" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,37 +1,49 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
color: #a00;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
Change document shepherd for {{ doc.name }}-{{ doc.rev }}
|
||||
Change the document shepherd for {{ doc.name }}-{{ doc.rev }}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="/facelift/css/tokenfield-typeahead.min.css">
|
||||
<link rel="stylesheet" href="/facelift/css/bootstrap-tokenfield.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="/css/token-input.css"></link>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1>Change document shepherd<br><small>{{ doc.name }}-{{ doc.rev }}</small></h1>
|
||||
<h1>Change the document shepherd for {{ doc.name }}-{{ doc.rev }}</h1>
|
||||
|
||||
<p>The shepherd needs to have a Datatracker account. A new account can be
|
||||
<a href="{% url "create_account" %}">created here</a>.</p>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form class="tokenized-form" role="form" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="edit-info" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a class="button" href="{% url "doc_view" name=doc.name %}">Cancel</a>
|
||||
<input class="button" type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="/facelift/js/lib/typeahead.bundle.min.js"></script>
|
||||
<script src="/facelift/js/lib/bootstrap-tokenfield.min.js"></script>
|
||||
{% block content_end %}
|
||||
<script type="text/javascript" src="/js/lib/jquery.tokeninput.js"></script>
|
||||
<script type="text/javascript" src="/js/tokenized-field.js"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,24 +1,46 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block title %}Change State: {{doc.title}}{% endblock %}
|
||||
|
||||
{% block title %}Change state for {{doc.title}}{% endblock %}
|
||||
{% block morecss %}
|
||||
form.change-state select {
|
||||
width: 22em;
|
||||
}
|
||||
|
||||
#id_message, #id_comment {
|
||||
width: 40em;
|
||||
}
|
||||
|
||||
form.change-state .actions {
|
||||
text-align: right;
|
||||
padding-top: 10px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change state<br><small>{{doc.title}}</small></h1>
|
||||
<h1>Change State: {{doc.title}}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<p class="helptext">For help on the states, see the <a href="{{help_url}}">state table</a>.</p>
|
||||
|
||||
<p><a class="btn btn-info" href="{{help_url}}">Help on states</a></p>
|
||||
<form class="change-state" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
<input type="submit" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,42 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
color: #a00;
|
||||
}
|
||||
form.edit-info #id_title {
|
||||
width: 600px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Change title for {{doc.title}}{% endblock %}
|
||||
{% block title %}
|
||||
Change the title for {{titletext}}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change title<br><small>{{titletext}}</small></h1>
|
||||
<h1>Change the title for {{titletext}}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.canonical_name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="edit-info" action="" enctype="multipart/form-data" method="POST">
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}:</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=doc.canonical_name %}">Back</a>
|
||||
<input type="submit" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,33 +1,40 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% load ietf_filters %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}WG {{ announcement }} announcement writeup for {{ charter.chartered_group.acronym }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form #id_announcement_text {
|
||||
width: 700px;
|
||||
height: 600px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>WG {{ announcement }} announcement writeup<br><small>{{ charter.chartered_group.acronym }}</small></h1>
|
||||
<h1>WG {{ announcement }} announcement writeup for {{ charter.chartered_group.acronym }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form announcement_text_form %}
|
||||
{{ announcement_text_form.announcement_text }}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="save_text">Submit</button>
|
||||
<button type="submit" class="btn btn-warning" name="regenerate_text">Regenerate</button>
|
||||
<div class="actions">
|
||||
<a class="button" href="{{ back_url }}">Cancel</a>
|
||||
<input class="button" type="submit" name="regenerate_text" value="Regenerate" />
|
||||
<input class="button" type="submit" name="save_text" value="Save" />
|
||||
</div>
|
||||
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
{% if announcement == "action" %}
|
||||
<a type="submit" class="btn btn-default" href="{% url "charter_approve" name=charter.canonical_name %}">Charter approval page</a>
|
||||
{% else %}
|
||||
<input type="submit" type="submit" class="btn btn-default" name="send_text" value="Send WG {{ announcement }} announcement" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% load ietf_filters %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<h3>Secretariat actions</h3>
|
||||
|
||||
<div class="actions">
|
||||
{% if announcement == "action" %}
|
||||
<a href="{% url "charter_approve" name=charter.canonical_name %}">Go to charter approval page</a>
|
||||
{% else %}
|
||||
<input type="submit" name="send_text" value="Send WG {{ announcement }} announcement" />
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<a class="btn btn-default pull-right" href="{{ back_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
|
||||
{% endblock%}
|
||||
|
|
|
@ -1,17 +1,38 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Approve {{ charter.canonical_name }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form.approve pre {
|
||||
margin: 0;
|
||||
padding: 4px;
|
||||
border-top: 4px solid #eee;
|
||||
border-bottom: 4px solid #eee;
|
||||
}
|
||||
form.approve .announcement {
|
||||
overflow-x: auto;
|
||||
overflow-y: scroll;
|
||||
width: 800px;
|
||||
height: 400px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Approve {{ charter.canonical_name }}-{{ charter.rev }}</h1>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
<pre>{{ announcement }}</pre>
|
||||
<div class="buttonlist">
|
||||
<button type="submit" class="btn btn-primary">Send announcement, close ballot & update revision</button>
|
||||
<a class="btn btn-default" href="{% url "charter_edit_announcement" name=charter.canonical_name ann="action" %}?next=approve">Edit/regenerate announcement</a>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=charter.name %}">Back</a>
|
||||
</div>
|
||||
<div>IETF announcement:</div>
|
||||
|
||||
<form class="approve" action="" method="post">{% csrf_token %}
|
||||
|
||||
<div class="announcement">
|
||||
<pre>{{ announcement }}</pre>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<a href="{% url "doc_view" name=charter.name %}">Back</a>
|
||||
<a href="{% url "charter_edit_announcement" name=charter.canonical_name ann="action" %}?next=approve">Go to edit/regenerate announcement page</a>
|
||||
<input type="submit" value="Send out the announcement, close ballot and update revision"/>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Ballot for {{ doc.name }} issued{% endblock %}
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
|||
|
||||
<p>Ballot has been sent out.</p>
|
||||
|
||||
<div class="buttonlist">
|
||||
<a class="btn btn-default" href="{% url "doc_writeup" name=doc.name %}">Back</a>
|
||||
<div class="actions">
|
||||
<a href="{% url "doc_writeup" name=doc.name %}">Back to writeups</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,28 +1,30 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Ballot writeup and notes for {{ charter.chartered_group }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form #id_ballot_writeup {
|
||||
width: 700px;
|
||||
height: 600px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Ballot writeup and notes for {{ charter.chartered_group }}</h1>
|
||||
|
||||
<h1>Ballot writeup and notes<br><small>{{ charter.chartered_group }}</small></h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form ballot_writeup_form %}
|
||||
|
||||
<span class="help-block">
|
||||
Working group summary, personnel, IAB note, IESG note, IANA note.
|
||||
</span>
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="save_ballot_writeup">Save</button>
|
||||
<button type="submit" class="btn btn-warning" name="send_ballot">Save & {% if ballot_issued %}re-{% endif %}issue ballot</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_writeup" name=charter.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
|
||||
<p>(Working Group Summary, Personnel, IAB Note, IESG Note, IANA Note)</p>
|
||||
|
||||
{{ ballot_writeup_form.ballot_writeup }}
|
||||
|
||||
<div class="actions">
|
||||
<a class="button" href="{% url "doc_writeup" name=charter.name %}">Cancel</a>
|
||||
<input class="button" type="submit" name="save_ballot_writeup" value="Save Ballot Writeup" />
|
||||
<input class="button" style="margin-left: 8px" type="submit" name="send_ballot" value="Save and {% if reissue %}Re-{% endif %}Send Ballot to the IESG" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
{% endblock%}
|
||||
|
|
|
@ -1,24 +1,39 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
color: #a00;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
Change responsible AD for {{ charter.canonical_name }}-{{ charter.rev }}
|
||||
Change the responsible AD for {{ charter.canonical_name }}-{{ charter.rev }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change responsible AD<br><small>{{ charter.canonical_name }}-{{ charter.rev }}</small></h1>
|
||||
<h1>Change the responsible AD for {{ charter.canonical_name }}-{{ charter.rev }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=charter.canonical_name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="edit-info" action="" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=charter.canonical_name %}">Back</a>
|
||||
<input type="submit" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,46 +1,77 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ title }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form.change-state select {
|
||||
width: 22em;
|
||||
}
|
||||
|
||||
#id_message, #id_comment {
|
||||
width: 40em;
|
||||
}
|
||||
|
||||
form.change-state .actions {
|
||||
text-align: right;
|
||||
padding-top: 10px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{{ title }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
{% if not option %}
|
||||
<p><a class="btn btn-info" href="{% url "state_help" type="charter" %}">Help on states</a></p>
|
||||
<p class="helptext">For help on the states, see the <a href="{% url "state_help" type="charter" %}">state table</a>.</p>
|
||||
{% endif %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% for field in form.visible_fields %}
|
||||
{% bootstrap_field field %}
|
||||
<form class="change-state" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
{% if field.name == "initial_time" %}
|
||||
{% if option == "recharter" %}
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{% else %}
|
||||
{% if option == "initcharter" %}
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if field.name == "charter_state" and chartering_type == "rechartering" %}
|
||||
<div class="checkbox ballot-wo-extern">
|
||||
<label>
|
||||
<input type="checkbox" name="ballot_wo_extern">
|
||||
<b>Ask whether external review can be skipped in ballot</b>
|
||||
</label>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if initial_review %}
|
||||
<p class="alert alert-warning"><b>Warning:</b> Announced initial review time hasn't elapsed yet. It does so at {{ initial_review.expires }}.</p>
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% if field.name == "charter_state" and chartering_type == "rechartering" %}
|
||||
<tr class="ballot-wo-extern" style="display:none">
|
||||
<td></td>
|
||||
<td><label><input name="ballot_wo_extern" type="checkbox" /> Ask whether external review can be skipped in ballot</label></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% buttons %}
|
||||
{% if option == "initcharter" or option == "recharter" %}
|
||||
<button class="btn btn-primary" type="submit">Initiate chartering</button>
|
||||
{% endif %}
|
||||
{% if not option or option == "abandon" %}
|
||||
<button class="btn btn-primary" type="submit">Save & notify secretariat</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endif %}
|
||||
{% endbuttons %}
|
||||
{% endfor %}
|
||||
{% if initial_review %}
|
||||
<tr><td></td><td class="warning">Warning: Announced initial review time hasn't elapsed yet. It does so at {{ initial_review.expires }}.</td></tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
{% if option == "initcharter" or option == "recharter" %}
|
||||
<input type="submit" value="Initiate chartering"/>
|
||||
{% endif %}
|
||||
{% if not option or option == "abandon" %}
|
||||
<a href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
<input type="submit" value="Save and (possibly) notify Secretariat"/>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% if prev_state %}
|
||||
|
@ -56,21 +87,10 @@
|
|||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
var info_msg = {{ info_msg|safe }}, statesForBallotWoExtern = {{ states_for_ballot_wo_extern }};
|
||||
|
||||
$(document).ready(function () {
|
||||
function stateChanged() {
|
||||
var v = $(this).val();
|
||||
$("#id_message").val(info_msg[v] || "");
|
||||
|
||||
if ($.inArray(+v, statesForBallotWoExtern) != -1)
|
||||
$(".ballot-wo-extern").show();
|
||||
else
|
||||
$(".ballot-wo-extern").hide();
|
||||
}
|
||||
$("#id_charter_state").click(stateChanged).change(stateChanged).keydown(stateChanged);
|
||||
$("#id_charter_state").click();
|
||||
});
|
||||
|
||||
{% block content_end %}
|
||||
<script type="text/javascript">
|
||||
var info_msg = {{ info_msg|safe }},
|
||||
statesForBallotWoExtern = {{ states_for_ballot_wo_extern }};
|
||||
</script>
|
||||
<script type="text/javascript" src="/js/charter-change-state.js"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,26 +1,40 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
form #id_content {
|
||||
width: 40em;
|
||||
height: 600px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
Charter submission for {{ group.acronym }} {{ group.type.name }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Charter submission<br><small>{{ group.acronym }} {{ group.type.name }}</small></h1>
|
||||
<h1>Charter submission for {{ group.acronym }} {{ group.type.name }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<p class="alert alert-info">The text will be submitted as <b>charter-ietf-{{ name }}-{{ next_rev }}</b>.</p>
|
||||
|
||||
<form role="form" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=group.charter.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<p>The text will be submitted as <strong>{{ name }}-{{ next_rev }}</strong></p>
|
||||
<form class="edit-info" action="" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a class="button" href="{% url "doc_view" name=group.charter.name %}">Cancel</a>
|
||||
<input class="button" type="submit" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,39 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Approve {{ review.canonical_name }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form #id_announcement_text {
|
||||
overflow-x: auto;
|
||||
overflow-y: scroll;
|
||||
width: 800px;
|
||||
height: 400px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Approve {{ review.canonical_name }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<form class="approve" action="" method="post">{% csrf_token %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-warning">Send announcement & close ballot</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=review.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<td>
|
||||
<div>{{ field.label_tag }}</div>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=review.name %}">Back</a>
|
||||
<input type="submit" value="Send out the announcement and close the ballot"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,28 +1,48 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}Begin IETF conflict review for {{doc_to_review.canonical_name}}-{{doc_to_review.rev}}{% endblock %}
|
||||
{% block title %}Begin IETF conflict review : {{doc_to_review.canonical_name}}-{{doc_to_review.rev}}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form.start-conflict-review #id_notify {
|
||||
width: 600px;
|
||||
}
|
||||
form.start-conflict-review .actions {
|
||||
padding-top: 20px;
|
||||
}
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
color: #a00;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Begin IETF conflict review<br><small>{{doc_to_review.canonical_name}}-{{doc_to_review.rev}}</small></h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<h1>Begin IETF conflict review for {{doc_to_review.canonical_name}}-{{doc_to_review.rev}}</h1>
|
||||
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<p><a class="btn btn-info" href="{% url "state_help" type="conflict-review" %}">Help on states</a></p>
|
||||
<p class="helptext">For help on the initial state choice, see the <a href="{% url "state_help" type="conflict-review" %}">state table</a>.</p>
|
||||
{% endif %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
<form class="start-conflict-review" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc_to_review.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a href="{% url "doc_view" name=doc_to_review.name %}">Back</a>
|
||||
<input type="submit" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,28 +1,41 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
form #id_content {
|
||||
width: 40em;
|
||||
height: 450px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
Edit conflict review for {{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Edit conflict review<br><small>{{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}</small></h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<p class="alert alert-info">The text will be submitted as <strong>{{ review.canonical_name }}-{{ next_rev }}</strong></p>
|
||||
|
||||
<form role="form" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="submit_response">Submit</button>
|
||||
<button type="submit" class="btn btn-warning" name="reset_text">Reset to template text</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=review.canonical_name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<h1>Edit conflict review for {{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}</h1>
|
||||
|
||||
<p>The text will be submitted as <strong>{{ review.canonical_name }}-{{ next_rev }}</strong></p>
|
||||
<form class="edit-info" action="" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=review.canonical_name %}">Back</a>
|
||||
<input type="submit" name="reset_text" value="Reset to Template Text"/>
|
||||
<input type="submit" name="submit_response" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,10 +1,19 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}Ballot for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" type="text/css" href="/css/doc.css"></link>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ top|safe }}
|
||||
{{ ballot_content|safe }}
|
||||
{{ top|safe }}
|
||||
|
||||
{{ ballot_content|safe }}
|
||||
|
||||
{% endblock content %}
|
||||
|
||||
{% block content_end %}
|
||||
{% endblock content_end %}
|
||||
|
|
|
@ -1,114 +1,77 @@
|
|||
{% load ietf_filters %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2 hidden-sm hidden-xs">
|
||||
{% for n, positions in position_groups %}
|
||||
<h4><span class="label label-{{ n|pos_to_label }}"> {{ n.name }}</span></h4>
|
||||
{% for p in positions|dictsort:"ad.last_name" %}
|
||||
<div>
|
||||
{% if p.old_ad %}<span class="text-muted">{% endif %}
|
||||
{% if p.comment or p.discuss %}
|
||||
<a href="#{{ p.ad.plain_name|slugify }}">
|
||||
{% endif %}
|
||||
{{ p.ad.plain_name }}
|
||||
{% if p.comment or p.discuss %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if user|has_role:"Secretariat" %}</a>{% endif %}
|
||||
{% if p.old_ad %}</span>{% endif %}
|
||||
</div>
|
||||
{% empty %}
|
||||
(None)
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="ballot-sidebar">
|
||||
{% if editable and user|has_role:"Area Director,Secretariat" %}
|
||||
<div class="ballot-actions">
|
||||
{% if user|has_role:"Area Director" %}
|
||||
<div class="action"><a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}">Edit position</a></div>
|
||||
{% endif %}
|
||||
|
||||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" or doc.type_id == "statchg" %}
|
||||
<div class="action">
|
||||
{% if deferred %}
|
||||
<div><a href="{% url "doc_undefer_ballot" name=doc.name %}">Undefer ballot</a></div>
|
||||
<div>Ballot deferred by {{ deferred.by }} on {{ deferred.time|date:"Y-m-d" }}.</div>
|
||||
{% else %}
|
||||
{% if doc.telechat_date %}
|
||||
<div><a href="{% url "doc_defer_ballot" name=doc.name %}">Defer ballot</a></div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<div><a href="{% url "doc_clear_ballot" name=doc.name %}">Clear ballot</a></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% for n, positions in position_groups %}
|
||||
<div class="position-group">
|
||||
<div class="heading"><span class="square position-{{ n.slug }}"></span> {{ n.name }}</div>
|
||||
{% for p in positions %}
|
||||
<div>{% if p.old_ad %}[{% endif %}<a{% if user|has_role:"Secretariat" %} href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}?ad={{ p.ad.pk }}" title="Click to edit the position of {{ p.ad.plain_name }}"{% endif %}>{{ p.ad.plain_name }}</a>{% if p.old_ad %}]{% endif %}{% if p.comment or p.discuss %} <a href="#{{ p.ad.plain_name|slugify }}"><img src="/images/comment.png" width="14" height="12" alt="*" border="0"/></a>{% endif %}</div>
|
||||
{% if p.old_positions %}<div class="was">(was {{ p.old_positions|join:", " }})</div>{% endif %}
|
||||
{% empty %}
|
||||
<i>none</i>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="ballot-content">
|
||||
|
||||
{% if all_ballots and all_ballots|length > 1 %}
|
||||
<div class="other-ballots">
|
||||
Available ballots:
|
||||
{% for b in all_ballots %}
|
||||
<a{% if b != ballot %} href="{% url "doc_ballot" name=doc.name ballot_id=b.pk %}"{% endif %}>{{ b.ballot_type.name }} ({{ b.rev }})</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<h2 style="margin-top:12px;">{{ ballot.ballot_type.question }}</h2>
|
||||
|
||||
{% if not ballot_open %}
|
||||
<p>Note: This ballot was opened for revision {{ ballot.rev }} and is now closed.</p>
|
||||
{% endif %}
|
||||
|
||||
<p>Summary: <i>{{ summary }}</i></p>
|
||||
|
||||
{% for p in text_positions %}
|
||||
<h2 id="{{ p.ad.plain_name|slugify }}" class="ad-ballot-comment">{% if p.old_ad %}[{% endif %}{{ p.ad.plain_name }}{% if p.old_ad %}]{% endif %}</h2>
|
||||
|
||||
{% if p.pos.blocking and p.discuss %}
|
||||
<p><b>{{ p.pos.name }} ({{ p.discuss_time|date:"Y-m-d" }}{% if not p.for_current_revision %} for -{{ p.get_dochistory.rev }}{% endif %})</b> <img src="/images/comment.png" width="14" height="12" alt=""/></p>
|
||||
|
||||
<pre>{{ p.discuss|wrap_text:80 }}</pre>
|
||||
{% endif %}
|
||||
|
||||
{% if p.comment %}
|
||||
<p><b>Comment ({{ p.comment_time|date:"Y-m-d" }}{% if not p.for_current_revision %} for -{{ p.get_dochistory.rev }}{% endif %})</b> <img src="/images/comment.png" width="14" height="12" alt=""/></p>
|
||||
<pre>{{ p.comment|wrap_text:80 }}</pre>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<div class="col-md-10">
|
||||
{% if all_ballots and all_ballots|length > 1 %}
|
||||
<ul class="pagination pagination-sm">
|
||||
<li class="disabled"><span><b>Ballots</b></span></li>
|
||||
{% for b in all_ballots %}
|
||||
<li {% if b == ballot %}class="active"{% endif %}>
|
||||
<a href="{% url "doc_ballot" name=doc.name ballot_id=b.pk %}">
|
||||
{{ b.ballot_type.name }} ({{ b.rev }})
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" or doc.type_id == "statchg" %}
|
||||
{% if deferred %}
|
||||
<p class="alert alert-danger">Ballot deferred by {{ deferred.by }} on {{ deferred.time|date:"Y-m-d" }}.</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<p class="alert alert-info"><b>Summary:</b> {{ summary }}</p>
|
||||
{% if not ballot_open %}
|
||||
<p class="alert alert-warning"><b>Note:</b> This ballot was opened for revision {{ ballot.rev }} and is now closed.</p>
|
||||
{% endif %}
|
||||
|
||||
{% if ballot.ballot_type.question %}
|
||||
<p class="well"><b>Ballot question:</b> "{{ ballot.ballot_type.question }}"</p>
|
||||
{% endif %}
|
||||
|
||||
{% if editable and user|has_role:"Area Director,Secretariat" %}
|
||||
{% if user|has_role:"Area Director" %}
|
||||
<a class="btn btn-primary" href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}">Edit position</a>
|
||||
{% endif %}
|
||||
|
||||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" or doc.type_id == "statchg" %}
|
||||
{% if deferred %}
|
||||
<a class="btn btn-default" href="{% url "doc_undefer_ballot" name=doc.name %}">Undefer ballot</a>
|
||||
{% else %}
|
||||
{% if doc.telechat_date %}
|
||||
<a class="btn btn-warning" href="{% url "doc_defer_ballot" name=doc.name %}">Defer ballot</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<a class="btn btn-danger" href="{% url "doc_clear_ballot" name=doc.name %}">Clear ballot</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% for n, positions in position_groups %}
|
||||
{% for p in positions|dictsort:"ad.last_name" %}
|
||||
<h4 id="{{ p.ad.plain_name|slugify }}">
|
||||
{% if p.old_ad %}<span class="text-muted">{% endif %}
|
||||
{{ p.ad.plain_name }}
|
||||
{% if p.old_ad %}</span>{% endif %}
|
||||
<span class="pull-right">
|
||||
{% if p.old_positions %}
|
||||
<span class="text-muted small">(was {{ p.old_positions|join:", " }})</span>
|
||||
{% endif %}
|
||||
<span class="label label-{{ p.pos|pos_to_label }}">{{p.pos}}</span>
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}?ad={{ p.ad.pk }}" title="Click to edit the position of {{ p.ad.plain_name }}" class="btn btn-default btn-xs">
|
||||
Edit</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</h4>
|
||||
|
||||
{% if p.pos.blocking and p.discuss %}
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title"><b>{{ p.pos.name }}</b> ({{ p.discuss_time|date:"Y-m-d" }} for -{{ p.get_dochistory.rev}})</h5>
|
||||
</div>
|
||||
<div class="panel-body"><pre class="ballot">{{ p.discuss|wrap_text:80|escape|urlize }}</pre></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if p.comment %}
|
||||
<div class="panel panel-{{ p.pos|pos_to_label }}">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title"><b>Comment</b> ({{ p.comment_time|date:"Y-m-d" }} for -{{ p.get_dochistory.rev}})</h5>
|
||||
</div>
|
||||
<div class="panel-body"><pre class="ballot">{{ p.comment|wrap_text:80|escape|urlize }}</pre></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,171 +1,139 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}{{ doc.canonical_name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="alternate" type="application/atom+xml" href="/feed/group-changes/{{ group.acronym }}/">
|
||||
<link rel="stylesheet" type="text/css" href="/css/doc.css"></link>
|
||||
{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
.edit { width: 1px }
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ doc.title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% include "doc/revisions_list.html" %}
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<tr>
|
||||
<th>
|
||||
{% if doc.get_state_slug != "approved" %}
|
||||
Proposed charter
|
||||
{% else %}
|
||||
Charter
|
||||
{% endif %}
|
||||
</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
{{ group.name }} {{ group.type.name }}
|
||||
<a href="{{ group.about_url }}">({{ group.acronym }})</a> {{ group.type.name }}
|
||||
<div class="ietf-box metabox">
|
||||
<div>
|
||||
{% if snapshot %}Snapshot of{% endif %}
|
||||
{% if doc.get_state_slug != "approved" %}Proposed{% endif %}
|
||||
Charter for "{{ group.name }}"
|
||||
(<a href="{{ group.about_url }}">{{ group.acronym }}</a>) {{ group.type.name }}
|
||||
</div>
|
||||
|
||||
{% if snapshot %}
|
||||
<span class="label label-warning">Snapshot</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<table id="metatable" width="100%">
|
||||
<tr>
|
||||
<td>WG State:</td>
|
||||
<td>{{ group.state.name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/doc/help/state/charter/">Charter State</a>:</td>
|
||||
<td>
|
||||
<div>
|
||||
<a title="{{ doc.get_state.desc }}"
|
||||
{% if not snapshot and can_manage %}
|
||||
class="editlink" href="{% url "charter_change_state" name=doc.name %}"
|
||||
{% endif %}>
|
||||
{{ doc.get_state.name }}
|
||||
</a>
|
||||
{% if chartering == "initial" %} - (Initial Chartering){% endif %}
|
||||
{% if chartering == "rechartering" %} - (Rechartering){% endif %}
|
||||
</div>
|
||||
|
||||
<tr>
|
||||
<th>WG state</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ group.state.name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><a href="/doc/help/state/charter/">Charter state</a></th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and can_manage %}
|
||||
<a class="btn btn-default btn-xs pull-right" title="{{ doc.get_state.desc }}" href="{% url "charter_change_state" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.get_state.name }}
|
||||
{% if not snapshot and chartering %}
|
||||
<div class="telechat">
|
||||
<a
|
||||
{% if user|has_role:"Area Director,Secretariat" %}
|
||||
class="editlink" href="{% url "charter_telechat_date" name=doc.name %}"
|
||||
{% endif %}>
|
||||
{% if not telechat %}Not on agenda of IESG telechat{% else %}On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{% if chartering == "initial" %}
|
||||
<span class="label label-info">Initial chartering</span>
|
||||
{% endif %}
|
||||
{% if chartering == "rechartering" %}
|
||||
<span class="label label-info">Rechartering</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if ballot_summary %}
|
||||
<div class="ballot-summary">
|
||||
({{ ballot_summary }})
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if not snapshot and chartering %}
|
||||
<tr>
|
||||
<th>Telechat date</th>
|
||||
<td class="edit">
|
||||
{% if can_manage %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "charter_telechat_date" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if not telechat %}
|
||||
(None)
|
||||
{% else %}
|
||||
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if ballot_summary %}
|
||||
<br><i>{{ ballot_summary }}</i>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td>Responsible AD:</td>
|
||||
<td><a {% if user|has_role:"Area Director,Secretariat" %}class="editlink" href="{% url "charter_edit_ad" name=doc.name %}"{% endif %}>{{ doc.ad|default:"none" }}</a> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Responsible AD</th>
|
||||
<td class="edit">
|
||||
{% if can_manage %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "charter_edit_ad" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.ad|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
|
||||
<tr>
|
||||
<th>Send notices to</th>
|
||||
<td class="edit">
|
||||
{% if can_manage %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "charter_edit_notify" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.notify|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Send notices to:</td>
|
||||
<td><a {% if user|has_role:"Area Director,Secretariat" %}
|
||||
class="editlink" href="{% url "charter_edit_notify" name=doc.name %}"
|
||||
{% endif %}>
|
||||
{{ doc.notify|default:"none" }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Last updated</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ doc.time|date:"Y-m-d" }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr><td>Last updated:</td><td> {{ doc.time|date:"Y-m-d" }}</td></tr>
|
||||
|
||||
<p class="buttonlist">
|
||||
{% if not snapshot and can_manage %}
|
||||
{% if chartering %}
|
||||
{% url "charter_startstop_process" name=doc.name option='abandon' as abandon_url %}
|
||||
{% if abandon_url %}
|
||||
<a class="btn btn-danger" href="{{ abandon_url }}">Abandon chartering</a>
|
||||
{% endif %}
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
</table>
|
||||
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
{% url "charter_approve" name=doc.name as approve_url %}
|
||||
{% if approve_url %}
|
||||
<a class="btn btn-warning" href="{{ approve_url }}">Approve charter</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<div class="links">
|
||||
<a href="/feed/group-changes/{{ group.acronym }}/">Atom feed</a>
|
||||
</div>
|
||||
|
||||
{% else %}
|
||||
<div class="actions">
|
||||
{% if not snapshot and can_manage %}
|
||||
{% if chartering %}
|
||||
{% url "charter_startstop_process" name=doc.name option='abandon' as abandon_url %}{% if abandon_url %}<a class="button" href="{{ abandon_url }}">Abandon Effort</a>{% endif %}
|
||||
|
||||
{% if group.state_id == "proposed" or group.state_id == "bof" %}
|
||||
{% url "charter_submit" name=doc.name option='initcharter' as start_url %}
|
||||
{% if start_url %}
|
||||
<a class="btn btn-default" href="{{ start_url }}">Start chartering</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% url "charter_submit" name=doc.name option='recharter' as recharter_url %}
|
||||
{% if recharter_url %}
|
||||
<a class="btn btn-default" href="{{ recharter_url }}">Recharter</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
{% url "charter_approve" name=doc.name as approve_url %}{% if approve_url %}<a class="button" href="{{ approve_url }}">Approve Charter</a>{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<h2>Charter<br><small>{{ doc.canonical_name }}-{{ doc.rev }}</small></h2>
|
||||
{% else %}
|
||||
{% if group.state_id == "proposed" or group.state_id == "bof" %}
|
||||
{% url "charter_submit" name=doc.name option='initcharter' as start_url %}{% if start_url %}<a class="button" href="{{ start_url }}">Start Chartering</a>{% endif %}
|
||||
{% else %}
|
||||
{% url "charter_submit" name=doc.name option='recharter' as recharter_url %}{% if recharter_url %}<a class="button" href="{{ recharter_url }}">Recharter</a>{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>Other versions: <a href="{{ txt_url }}">plain text</a></p>
|
||||
|
||||
<h3>Charter {{ doc.canonical_name }}-{{ doc.rev }}
|
||||
|
||||
{% if not snapshot and can_manage and chartering and group.state_id != "conclude" %}
|
||||
<p><a class="btn btn-default" href="{% url "charter_submit" name=doc.name %}">Change charter text</a></p>
|
||||
<a class="edit" href="{% url "charter_submit" name=doc.name %}">Change charter text</a>
|
||||
{% endif %}
|
||||
</h3>
|
||||
|
||||
{% if doc.rev != "" %}
|
||||
{{ content|safe|keep_spacing|sanitize_html|wordwrap:80|safe }}
|
||||
<div class="document-markup">
|
||||
{{ content|safe|keep_spacing|sanitize_html|wordwrap:80|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if not snapshot and chartering %}
|
||||
<h2>Proposed milestones</h2>
|
||||
{% if can_manage %}
|
||||
<p><a class="btn btn-primary" href="{% url "group_edit_charter_milestones" group_type=doc.group.type_id acronym=doc.group.acronym %}">Edit milestones</a></p>
|
||||
{% endif %}
|
||||
<h3>Proposed Milestones
|
||||
{% if can_manage %}
|
||||
<a class="edit" href="{% url "group_edit_charter_milestones" group_type=doc.group.type_id acronym=doc.group.acronym %}">Edit charter milestones</a>
|
||||
{% endif %}
|
||||
</h3>
|
||||
|
||||
{% if milestones %}
|
||||
{% include "group/milestones.html" %}
|
||||
{% else %}
|
||||
<p>No milestones for charter found.</p>
|
||||
{% endif %}
|
||||
{% if milestones %}
|
||||
{% include "group/milestones.html" %}
|
||||
{% else %}
|
||||
<p>No milestones for charter found.</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,121 +1,109 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block morecss %}
|
||||
.edit { width: 1px }
|
||||
{% endblock %}
|
||||
{% block title %}{{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block title %}{{ doc.title }}{% endblock %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" type="text/css" href="/css/doc.css"></link>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% include "doc/revisions_list.html" %}
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<tr>
|
||||
<th>
|
||||
{% if doc.get_state_slug not in approved_states %}
|
||||
Proposed conflict review
|
||||
{% else %}
|
||||
Conflict review
|
||||
{% endif %}
|
||||
</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
<a href="{% url "doc_view" name=conflictdoc.canonical_name %}">
|
||||
{{ conflictdoc.canonical_name }}{% if conflictdoc.get_state_slug != 'rfc' %}-{{ conflictdoc.rev }}{% endif %}
|
||||
</a>
|
||||
<span class="label label-info">{{conflictdoc.stream}} stream</span>
|
||||
<div class="ietf-box metabox">
|
||||
<div>
|
||||
{% if snapshot %}Snapshot of{% endif %}
|
||||
{% if doc.get_state_slug not in approved_states %}Proposed{% endif %}
|
||||
IESG Conflict Review for the {{conflictdoc.stream}} document: <a href="{% url "doc_view" name=conflictdoc.canonical_name %}">{{ conflictdoc.canonical_name }}{% if conflictdoc.get_state_slug != 'rfc' %}-{{ conflictdoc.rev }}{% endif %}</a>
|
||||
</div>
|
||||
|
||||
{% if snapshot %}
|
||||
<span class="label label-warning">Snapshot</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<table id="metatable" width="100%">
|
||||
<tr>
|
||||
<td><a href="/doc/help/state/conflict-review/">Conflict Review State</a>:</td>
|
||||
<td>
|
||||
<div>
|
||||
<a title="{{ doc.get_state.desc }}"{% if not snapshot and user|has_role:"Area Director,Secretariat" %} class="editlink" href="{% url "conflict_review_change_state" name=doc.name %}"{% endif %}>{{ doc.get_state.name }}</a>
|
||||
|
||||
<tr>
|
||||
<th><a href="/doc/help/state/conflict-review/">Conflict review state</a></th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
<a title="{{ doc.get_state.desc }}" class="btn btn-default btn-xs pull-right" href="{% url "conflict_review_change_state" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.get_state.name }}
|
||||
</td>
|
||||
</tr>
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
|
||||
{% if not snapshot %}
|
||||
<tr>
|
||||
<th>Telechat date</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "conflict_review_telechat_date" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if not telechat %}
|
||||
(None)
|
||||
{% else %}
|
||||
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
|
||||
{% if doc.returning_item %} (returning item){% endif %}
|
||||
{% endif %}
|
||||
{% if request.user|has_role:"Secretariat" %}{% if doc.get_state_slug = 'appr-reqnopub-pend' or doc.get_state_slug = 'appr-noprob-pend' %}
|
||||
- <a href="{% url "conflict_review_approve" name=doc.name %}">Approve conflict review</a>
|
||||
{% endif %}{% endif %}
|
||||
|
||||
{% if ballot_summary %}
|
||||
<br><i>{{ ballot_summary }}</i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% if not snapshot %}
|
||||
<tr>
|
||||
<td>Telechat Date:</td>
|
||||
<td>
|
||||
<a {% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
class="editlink" href="{% url "conflict_review_telechat_date" name=doc.name %}"
|
||||
{%endif%} >
|
||||
{% if not telechat %}Not on agenda of an IESG telechat{% else %}On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat{% if doc.returning_item %} (returning item){% endif %}{% endif %}
|
||||
</a>
|
||||
{% if ballot_summary %}
|
||||
<div class="ballot-summary">
|
||||
({{ ballot_summary }})
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<th>Shepherding AD</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "conflict_review_ad" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{doc.ad}}
|
||||
</td>
|
||||
</tr>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<th>Send notices to</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "conflict_review_notices" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{doc.notify}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Shepherding AD:</td>
|
||||
<td>
|
||||
<a {% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
class="editlink" href="{% url "conflict_review_ad" name=doc.name %}"
|
||||
{% endif %}
|
||||
>
|
||||
{{doc.ad}}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Last updated</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ doc.time|date:"Y-m-d" }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr>
|
||||
<td>Send notices to:</td>
|
||||
<td>
|
||||
<a {% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
class="editlink" href="{% url "conflict_review_notices" name=doc.name %}"
|
||||
{% endif %}
|
||||
>
|
||||
{{doc.notify}}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
|
||||
<tr><td>Last updated:</td><td> {{ doc.time|date:"Y-m-d" }}</td></tr>
|
||||
|
||||
{% comment %}
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
{% endcomment %}
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<h3>Conflict Review for {{ conflictdoc.name }}-{{ conflictdoc.rev }}
|
||||
|
||||
<h2>Conflict review<br><small>{{ conflictdoc.name }}-{{ conflictdoc.rev }}</small></h2>
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug != 'apprsent' %}
|
||||
<a class="btn btn-default" href="{% url "conflict_review_submit" name=doc.name %}">Change conflict review text</a>
|
||||
{% endif %}
|
||||
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
{% if request.user|has_role:"Secretariat" %}
|
||||
{% if doc.get_state_slug = 'appr-reqnopub-pend' or doc.get_state_slug = 'appr-noprob-pend' %}
|
||||
<a class="btn btn-warning" href="{% url "conflict_review_approve" name=doc.name %}">Approve conflict review</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<a class="edit" href="{% url "conflict_review_submit" name=doc.name %}">Change conflict review text</a>
|
||||
{% endif %}
|
||||
</h3>
|
||||
|
||||
{% if doc.rev %}
|
||||
<p>{{ content|fill:"80"|safe|linebreaksbr|keep_spacing|sanitize_html|safe }}</p>
|
||||
<div class="document-markup">
|
||||
{{ content|fill:"80"|safe|linebreaksbr|keep_spacing|sanitize_html|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,400 +1,303 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}{% if doc.get_state_slug == "rfc" %}RFC {{ rfc_number }}{% else %}{{ name }}-{{ doc.rev }}{% endif %}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="alternate" type="application/atom+xml" title="Document changes" href="/feed/document-changes/{{ name }}/">
|
||||
<meta name="description" content="{{ doc.title }} {% if doc.get_state_slug == "rfc" %}(RFC {{ rfc_number }}{% if published %}, {{ published.time|date:"F Y" }}{% endif %}{% if obsoleted_by %}; obsoleted by {{ obsoleted_by|join:", " }}{% endif %}){% else %}(Internet-Draft, {{ doc.time|date:"Y" }}){% endif %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
.edit { width: 1px }
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
{% if doc.get_state_slug == "rfc" %}
|
||||
RFC {{ rfc_number }}
|
||||
{% else %}
|
||||
{{ name }}-{{ doc.rev }}
|
||||
{% endif %}
|
||||
<link rel="stylesheet" type="text/css" href="/css/doc.css"></link>
|
||||
<meta name="description" content="{{ doc.title }} {% if doc.get_state_slug == "rfc" %}(RFC {{ rfc_number }}{% if published %}, {{ published.time|date:"F Y" }}{% endif %}{% if obsoleted_by %}; obsoleted by {{ obsoleted_by|join:", " }}{% endif %}){% else %}(Internet-Draft, {{ doc.time|date:"Y" }}){% endif %}" />
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ top|safe }}
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<tr>
|
||||
<th>Document type</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
{% if doc.get_state_slug == "rfc" %}
|
||||
RFC - {{ doc.std_level }}
|
||||
({% if published %}{{ published.time|date:"F Y" }}{% else %}publication date unknown{% endif %}{% if has_errata %}; <a href="//www.rfc-editor.org/errata_search.php?rfc={{ rfc_number }}" rel="nofollow">Errata</a>{% else %}; No errata{% endif %})
|
||||
<div class="ietf-box metabox">
|
||||
<table id="metatable" width="100%">
|
||||
<tr>
|
||||
<td>Document type:</td>
|
||||
<td>
|
||||
{% if doc.get_state_slug == "rfc" %}
|
||||
RFC - {{ doc.std_level }}
|
||||
({% if published %}{{ published.time|date:"F Y" }}{% else %}publication date unknown{% endif %}{% if has_errata %}; <a href="http://www.rfc-editor.org/errata_search.php?rfc={{ rfc_number }}" rel="nofollow">Errata</a>{% else %}; No errata{% endif %})
|
||||
|
||||
{% if obsoleted_by %}<div>Obsoleted by {{ obsoleted_by|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if updated_by %}<div>Updated by {{ updated_by|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if obsoletes %}<div>Obsoletes {{ obsoletes|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if updates %}<div>Updates {{ updates|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if status_changes %}<div>Status changed by {{ status_changes|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if proposed_status_changes %}<div>Proposed status changed by {{ proposed_status_changes|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if rfc_aliases %}<div>Also known as {{ rfc_aliases|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if draft_name %}<div>Was <a href="/doc/{{ draft_name}}/">{{ draft_name }}</a> {% if submission %}({{ submission|safe }}){% endif %}</div>{% endif %}
|
||||
{% else %}
|
||||
{{ doc.get_state }} Internet-Draft {% if submission %}({{ submission|safe }}){% endif %}
|
||||
{% if resurrected_by %}- resurrect requested by {{ resurrected_by }}{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if obsoleted_by %}<div>Obsoleted by {{ obsoleted_by|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if updated_by %}<div>Updated by {{ updated_by|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if obsoletes %}<div>Obsoletes {{ obsoletes|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if updates %}<div>Updates {{ updates|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if status_changes %}<div>Status changed by {{ status_changes|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if proposed_status_changes %}<div>Proposed status changed by {{ proposed_status_changes|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if rfc_aliases %}<div>Also Known As {{ rfc_aliases|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
{% if draft_name %}<div>Was <a href="/doc/{{ draft_name}}/">{{ draft_name }}</a> {% if submission %}({{ submission|safe }}){% endif %}</div>{% endif %}
|
||||
{% else %}
|
||||
{{ doc.get_state }} Internet-Draft {% if submission %}({{ submission|safe }}){% endif %}
|
||||
|
||||
{% if replaces or can_edit_stream_info %}
|
||||
<tr>
|
||||
<th>Replaces</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_stream_info %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_replaces" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ replaces|join:", "|urlize_ietf_docs|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if resurrected_by %}- resurrect requested by {{ resurrected_by }}{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if replaced_by %}
|
||||
<tr>
|
||||
<th>Replaced by</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
{{ replaced_by|join:", "|urlize_ietf_docs }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if replaces or can_edit_stream_info %}
|
||||
<div>
|
||||
<a{% if can_edit_stream_info %} class="editlink" href="{% url "doc_change_replaces" name=doc.name %}"{% endif %}>
|
||||
Replaces: {{ replaces|join:", "|urlize_ietf_docs|default:"None" }}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if replaced_by %}<div>Replaced by: {{ replaced_by|join:", "|urlize_ietf_docs }}</div>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Document stream</th>
|
||||
<td class="edit">
|
||||
{% if can_change_stream %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_stream" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.stream|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Document stream:</td>
|
||||
<td>
|
||||
<a {% if can_change_stream %} class="editlink" href="{% url "doc_change_stream" name=doc.name %}"{% endif %}>
|
||||
{{ doc.stream|default:"No stream defined" }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Last updated</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
{{ doc.time|date:"Y-m-d" }}
|
||||
{% if latest_revision and latest_revision.time.date != doc.time.date %}
|
||||
(latest revision {{ latest_revision.time|date:"Y-m-d" }})
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Last updated:</td>
|
||||
<td>
|
||||
{{ doc.time|date:"Y-m-d" }}
|
||||
{% if latest_revision and latest_revision.time.date != doc.time.date %}
|
||||
(latest revision {{ latest_revision.time|date:"Y-m-d" }})
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if doc.get_state_slug != "rfc" %}
|
||||
<tr>
|
||||
<th>Intended RFC status</th>
|
||||
<td class="edit">
|
||||
{% if can_edit or can_edit_stream_info %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_intended_status" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.intended_std_level|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if doc.get_state_slug != "rfc" %}
|
||||
<tr>
|
||||
<td>Intended RFC status:</td>
|
||||
<td>
|
||||
<a {% if can_edit or can_edit_stream_info %}class="editlink" href="{% url "doc_change_intended_status" name=doc.name %}"{% endif %}>
|
||||
{{ doc.intended_std_level|default:"Unknown" }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<th>Other versions</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
{% if doc.get_state_slug != "active" and doc.get_state_slug != "rfc" %}<div class="pull-right label label-warning">Expired & archived</div>{% endif %}
|
||||
{% if file_urls %}
|
||||
{% for label, url in file_urls %}
|
||||
<a class="btn btn-default btn-xs" href="{{ url }}">
|
||||
<span class="fa fa-file-{% if label == "pdf" %}pdf-{% elif label == "xml" or label == "html" %}code-{% elif label == "plain text" %}text-{% endif %}o"></span>
|
||||
{{ label }}</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
(not online)
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Other versions:</td>
|
||||
<td>
|
||||
{% if doc.get_state_slug != "active" and doc.get_state_slug != "rfc" %}(expired, archived):{% endif %}
|
||||
{% if file_urls %}
|
||||
{% for label, url in file_urls %}<a href="{{ url }}">{{ label}}</a>{% if not forloop.last%}, {% endif %}{% endfor %}
|
||||
{% else %}
|
||||
(not online)
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if conflict_reviews %}
|
||||
<tr>
|
||||
<th>IETF conflict review</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ conflict_reviews|join:", "|urlize_ietf_docs }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if conflict_reviews %}
|
||||
<tr>
|
||||
<td>IETF Conflict Review:</td>
|
||||
<td>{{ conflict_reviews|join:", "|urlize_ietf_docs }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
{% if doc.stream %}
|
||||
<th>{{ doc.stream }} state</th>
|
||||
<td class="edit">
|
||||
{% if doc.stream and can_edit_stream_info %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_stream_state" name=doc.name state_type=stream_state_type_slug %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ stream_state|default:"(None)" }}
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
|
||||
{% for m in milestones %}
|
||||
<span title="{{ m.desc }} ({{ m.group.acronym }} milestone)" class="milestone">{{ m.due|date:"M Y" }}</span>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
{% if doc.stream %}
|
||||
<td>{{ doc.stream }} State:</td>
|
||||
<td class="stream-state">
|
||||
<a {% if doc.stream and can_edit_stream_info %}class="editlink" href="{% url "doc_change_stream_state" name=doc.name state_type=stream_state_type_slug %}"{% endif %}>
|
||||
{{ stream_state|default:"(None)" }}
|
||||
</a>
|
||||
|
||||
{% if stream_tags %}
|
||||
<div class="stream-tags">{% for tag in stream_tags %}{{ tag.name }}{% if not forloop.last %}, {% endif %}{% endfor %}</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% else %}
|
||||
<th>Stream state</th>
|
||||
<td class="edit"></td>
|
||||
<td>(No stream defined)</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% for m in milestones %}
|
||||
<span title="{{ m.desc }} ({{ m.group.acronym }} milestone)" class="milestone">{{ m.due|date:"M Y" }}</span>
|
||||
{% endfor %}
|
||||
|
||||
{% if consensus %}
|
||||
<tr>
|
||||
<th>Consensus</th>
|
||||
<td class="edit">
|
||||
{% if can_edit or can_edit_stream_info %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_edit_consensus" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<span title="Whether the document is the result of a community consensus process as defined in RFC 5741">{{ consensus }}</span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if stream_tags %}
|
||||
<div class="stream-tags">{% for tag in stream_tags %}{{ tag.name }}{% if not forloop.last %}, {% endif %}{% endfor %}</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% else %}
|
||||
<td>Stream State:</td><td>No stream defined</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Document shepherd</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_stream_info %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_edit_shepherd" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.shepherd|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
{% if consensus %}
|
||||
<tr>
|
||||
<td>Consensus:</td>
|
||||
<td>
|
||||
<a title="Whether the document is the result of a community consensus process as defined in RFC 5741" {% if can_edit_consensus %}class="editlink" href="{% url "doc_edit_consensus" name=doc.name %}"{% endif %}>
|
||||
{{ consensus }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% if shepherd_writeup or can_edit_shepherd_writeup %}
|
||||
<tr>
|
||||
<th>Shepherd write-up</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_shepherd_writeup %}
|
||||
{% url "doc_edit_shepherd_writeup" name=doc.name as doc_edit_url %}
|
||||
{% if doc_edit_url %}
|
||||
<a class="btn btn-default btn-xs" href="{{doc_edit_url}}">Edit</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if shepherd_writeup %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_shepherd_writeup" name=doc.name %}">Show</a>
|
||||
(last changed {{ shepherd_writeup.time|date:"Y-m-d"}})
|
||||
{% else %}
|
||||
(None)
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td>Document shepherd:</td>
|
||||
<td>
|
||||
<a {% if can_edit_stream_info or is_shepherd %}class="editlink" href="{% if can_edit_stream_info %}{% url "doc_edit_shepherd" name=doc.name %}{% elif is_shepherd %}{% url "doc_change_shepherd_email" name=doc.name %}{% endif %}"{% endif %}>
|
||||
{% if doc.shepherd %}{{ doc.shepherd.person }}{% else %}No shepherd assigned{% endif %}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if published and started_iesg_process and published.time < started_iesg_process.time %}
|
||||
<tr>
|
||||
<th colspan="3" class="warning">This information refers to IESG processing after the RFC was initially published:</th>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if shepherd_writeup or can_edit_shepherd_writeup %}
|
||||
<tr>
|
||||
<td>Shepherd Write-Up:</td>
|
||||
<td>
|
||||
<a {% if can_edit_shepherd_writeup %}class="editlink"{% endif %} href="{% url "doc_shepherd_writeup" name=doc.name %}">
|
||||
{% if shepherd_writeup %}Last changed {{ shepherd_writeup.time|date:"Y-m-d"}}{% else %}(None){% endif %}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<th><a href="{% url "state_help" "draft-iesg" %}">IESG state</a></th>
|
||||
<td class="edit">
|
||||
{% if iesg_state and can_edit %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_state" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ iesg_state_summary|default:"I-D Exists" }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
|
||||
{% if iana_review_state %}
|
||||
<tr>
|
||||
<th>IANA review state</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_iana_state %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_iana_state" name=doc.name state_type="iana-review" %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ iana_review_state }}
|
||||
</td>
|
||||
</tr>
|
||||
{% if published and started_iesg_process and published.time < started_iesg_process.time %}
|
||||
<tr>
|
||||
<td colspan='2' style="font-style:italic">This information refers to IESG processing after the RFC was initially published:</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<th>IANA action state</th>
|
||||
<td class="edit">
|
||||
{% if can_edit_iana_state %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_iana_state" name=doc.name state_type="iana-action" %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ iana_action_state }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td><a href="{% url "state_help" "draft-iesg" %}">IESG State</a>:</td>
|
||||
<td>
|
||||
<a {% if iesg_state and can_edit %}class="editlink" href="{% url "doc_change_state" name=doc.name %}"{% endif %}>
|
||||
{{ iesg_state_summary|default:"I-D Exists" }}</a>
|
||||
|
||||
{% if rfc_editor_state %}
|
||||
<tr>
|
||||
<th>RFC Editor state</th>
|
||||
<td class="edit"></td>
|
||||
<td><a href="//www.rfc-editor.org/queue2.html#{{ doc.name }}">{{ rfc_editor_state }}</a></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if iana_review_state %}
|
||||
<div>IANA Review State:
|
||||
<a {% if can_edit_iana_state %}class="editlink" href="{% url "doc_change_iana_state" name=doc.name state_type="iana-review" %}"{% endif %}>{{ iana_review_state }}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<th>Telechat date</th>
|
||||
<td class="edit">
|
||||
{% if can_edit %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_telechat_date" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if telechat %}
|
||||
On agenda of {{ telechat.telechat_date }} IESG telechat
|
||||
{% if telechat.returning_item %}
|
||||
(returning item)
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if can_edit %}
|
||||
(None)
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if iana_review_state %}
|
||||
<div>IANA Action State:
|
||||
<a {% if can_edit_iana_state %}class="editlink" href="{% url "doc_change_iana_state" name=doc.name state_type="iana-action" %}"{% endif %}>{{ iana_action_state }}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if ballot_summary %}
|
||||
<br><i>{{ ballot_summary }}</i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if rfc_editor_state %}
|
||||
<div>
|
||||
RFC Editor State:
|
||||
<a href="http://www.rfc-editor.org/queue2.html#{{ doc.name }}">{{ rfc_editor_state }}</a></div>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<th>Responsible AD</th>
|
||||
<td class="edit">
|
||||
{% if can_edit %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_ad" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.ad|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
<div class="telechat">
|
||||
<a {% if can_edit %}class="editlink" href="{% url "doc_change_telechat_date" name=doc.name %}"{% endif %}>
|
||||
|
||||
{% if iesg_state %}
|
||||
{% if doc.note or can_edit %}
|
||||
<tr>
|
||||
<th>IESG note</th>
|
||||
<td class="edit">
|
||||
{% if can_edit %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_iesg_note" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.note|default:"(None)"|linebreaksbr }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if telechat %}
|
||||
On agenda of {{ telechat.telechat_date }} IESG telechat {% if telechat.returning_item %} (returning item){% endif %}
|
||||
{% else %}
|
||||
{% if can_edit %}Not on an upcoming telechat agenda{% endif %}
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<tr>
|
||||
<th>Send notices to</th>
|
||||
<td class="edit">
|
||||
{% if can_edit %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_change_notify" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.notify|default:"(None)"}}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% if ballot_summary %}<div class="ballot-summary">({{ ballot_summary }})</div>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<p class="buttonlist">
|
||||
<a class="btn btn-default btn-xs" href="mailto:{{ doc.name }}@tools.ietf.org?subject=Mail%20regarding%20{{ doc.name }}"><span class="fa fa-envelope-o"></span> Email authors</a>
|
||||
<a class="btn btn-default btn-xs" href="{% url "ipr_search" %}?option=document_search&id={{ doc.name }}" rel="nofollow"><span class="fa fa-bolt"></span> IPR {% if doc.related_ipr %} <span class="badge">{{doc.related_ipr|length}}</span>{% endif %}</a>
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_references" doc.canonical_name %}" rel="nofollow"><span class="fa fa-long-arrow-left"></span> References</a>
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_referenced_by" doc.canonical_name %}" rel="nofollow"><span class="fa fa-long-arrow-right"></span> Referenced by</a>
|
||||
<a class="btn btn-default btn-xs" href="//www.ietf.org/tools/idnits?url=https://www.ietf.org/archive/id/{{ doc.filename_with_rev }}" rel="nofollow" target="_blank"><span class="fa fa-exclamation"></span> Nits</a>
|
||||
<a class="btn btn-default btn-xs" href="//www.google.com/search?as_q={{ doc.name }}&as_sitesearch={{ search_archive }}" rel="nofollow" target="_blank"><span class="fa fa-search"></span> Search lists</a>
|
||||
{% if user|has_role:"Area Director" %}
|
||||
<a class="btn btn-default btn-xs" href="//www.iesg.org/bin/c5i?mid=6&rid=77&target={{ doc.name }}" rel="nofollow" target="_blank">Search lists (ARO)</a>
|
||||
{% endif %}
|
||||
{% if user.is_authenticated %}
|
||||
{% if tracking_document %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "community_remove_track_document" doc.name %}" title="Remove from your personal ID list"><span class="fa fa-bookmark-o"></span> Untrack</a>
|
||||
{% else %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "community_add_track_document" doc.name %}" title="Add to your personal ID list"><span class="fa fa-bookmark"></span> Track</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td>Responsible AD:</td>
|
||||
<td>
|
||||
<a {% if can_edit %}class="editlink" href="{% url "doc_change_ad" name=doc.name %}"{% endif %}>
|
||||
{{ doc.ad|default:"(None)" }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if can_edit and iesg_state %}
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_ballot_lastcall" name=doc.name %}">Last call text</a>
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_ballot_writeupnotes" name=doc.name %}">Ballot text</a>
|
||||
<a class="btn btn-default btn-xs" href="{% url "doc_ballot_approvaltext" name=doc.name %}">Announcement text</a>
|
||||
{% endif %}
|
||||
{% if iesg_state %}
|
||||
{% if doc.note or can_edit %}
|
||||
<tr>
|
||||
<td>IESG Note:</td>
|
||||
<td>
|
||||
<a {% if can_edit %}class="editlink" href="{% url "doc_change_iesg_note" name=doc.name %}"{% endif %}>
|
||||
{{ doc.note|default:"(None)"|linebreaksbr }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if actions %}
|
||||
{% for label, url in actions %}
|
||||
<a class="btn btn-default btn-xs" href="{{ url }}">{{ label|capfirst_allcaps }}</a>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<tr>
|
||||
<td>Send notices to:</td>
|
||||
<td>
|
||||
<a {% if can_edit %}class="editlink" href="{% url "doc_change_notify" name=doc.name %}"{% endif %}>
|
||||
{{ doc.notify|default:"No addresses provided"}}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
</table>
|
||||
|
||||
<div class="links">
|
||||
<a href="mailto:{{ doc.name }}@tools.ietf.org?subject=Mail%20regarding%20{{ doc.name }}" rel="nofollow">Email Authors</a>
|
||||
| <a href="{% url "ipr_search" %}?option=document_search&id={{ doc.name }}" rel="nofollow">IPR Disclosures{% if doc.related_ipr %} ({{doc.related_ipr|length}}){% endif %}</a>
|
||||
| <a href="{% url 'doc_references' doc.canonical_name %}" rel="nofollow">References</a>
|
||||
| <a href="{% url 'doc_referenced_by' doc.canonical_name %}" rel="nofollow">Referenced By</a>
|
||||
| <a href="http://www.ietf.org/tools/idnits?url=http://www.ietf.org/archive/id/{{ doc.filename_with_rev }}" rel="nofollow" target="_blank">Check nits</a>
|
||||
| <a href="/feed/document-changes/{{ name }}/">History feed</a>
|
||||
| <a href="http://www.google.com/search?as_q={{ doc.name }}&as_sitesearch={{ search_archive }}" rel="nofollow" target="_blank">Search Mailing Lists</a>
|
||||
{% if user|has_role:"Area Director" %}
|
||||
| <a href="https://www.iesg.org/bin/c5i?mid=6&rid=77&target={{ doc.name }}" rel="nofollow" target="_blank">Search Mailing Lists (ARO)</a>
|
||||
{% endif %}
|
||||
{% if user.is_authenticated %}
|
||||
{% if tracking_document %}
|
||||
| <span class="search-results"><span class="removefromlist"><a href="{% url "community_remove_track_document" doc.name %}" title="Remove from your personal ID list"><img src="/images/remove_from_list.png" alt="Remove from your personal ID list"/>Untrack this document</a></span></span>
|
||||
{% else %}
|
||||
| <span class="search-results"><span class="addtolist"><a href="{% url "community_add_track_document" doc.name %}" title="Add to your personal ID list"><img src="/images/add_to_list.png" alt="Add to your personal ID list"/>Track this document</a></span></span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if can_edit and iesg_state %}
|
||||
<div class="links">
|
||||
<a href="{% url "doc_ballot_lastcall" name=doc.name %}">Last Call Text</a>
|
||||
| <a href="{% url "doc_ballot_writeupnotes" name=doc.name %}">Ballot Text</a>
|
||||
| <a href="{% url "doc_ballot_approvaltext" name=doc.name %}">Announcement Text</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if actions %}
|
||||
<div class="actions">
|
||||
{% for label, url in actions %}<a class="button" href="{{ url }}">{{ label }}</a> {% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if doc.get_state_slug == "active" or doc.get_state_slug == "rfc" %}
|
||||
{{ content|safe }}
|
||||
|
||||
{% if split_content %}
|
||||
<a class="btn btn-default btn-block" href="?include_text=1"><span class="fa fa-caret-down"></span> Show full document</a>
|
||||
{% endif %}
|
||||
<div class="document-markup">
|
||||
{{ content|safe }}
|
||||
</div>
|
||||
|
||||
{% if split_content %}
|
||||
<p><a style="display:inline-block;margin-left:17em;" href="?include_text=1">[include full document text]</a></p>
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
<p></p>
|
||||
<div class="panel panel-warning">
|
||||
<div class="panel-heading">
|
||||
This Internet-Draft is no longer active. A copy of the expired Internet-Draft can be found at
|
||||
<a href="{{doc.href}}">{{doc.href}}</a>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p>This Internet-Draft is no longer active. A copy of
|
||||
the expired Internet-Draft can be found here:<br/>
|
||||
<a href="{{doc.href}}">{{doc.href}}</a>
|
||||
|
||||
<h4>Abstract</h4>
|
||||
<p>{{ doc.abstract }}</p>
|
||||
<p>This Internet-Draft is no longer active. A copy of the expired Internet-Draft can be found here:<br/>
|
||||
<a href="{{doc.href}}">{{doc.href}}</a>
|
||||
|
||||
<h4>Abstract</h4>
|
||||
|
||||
<p>{{ doc.abstract }}</p>
|
||||
|
||||
<h4>Authors</h4>
|
||||
|
||||
<p>
|
||||
{% for author in doc.documentauthor_set.all %}
|
||||
<a {% if not author.author.invalid_address %}href="mailto:{{ author.author.address }}"{% endif %}>{{ author.author.person }} {% if not author.author.invalid_address %}<{{ author.author.address }}>{% endif %}</a>
|
||||
{% if not forloop.last %}<br/>{% endif %}{% endfor %}
|
||||
</p>
|
||||
|
||||
<p>(Note: The e-mail addresses provided for the authors of this Internet-Draft may no longer be valid)</p>
|
||||
|
||||
<h4>Authors</h4>
|
||||
<p>
|
||||
{% for author in doc.documentauthor_set.all %}
|
||||
{% if not author.author.invalid_address %}
|
||||
<span class="fa fa-envelope-o"></span>
|
||||
<a href="mailto:{{ author.author.address }}">
|
||||
{% endif %}
|
||||
{{ author.author.person }}
|
||||
{% if not author.author.invalid_address %}
|
||||
({{ author.author.address }})</a>
|
||||
{% endif %}
|
||||
{% if not forloop.last %}<br>{% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
<p>(Note: The e-mail addresses provided for the authors of this Internet-Draft may no longer be valid.)</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script type="text/javascript" src="/js/utils.js"></script>
|
||||
<script type="text/javascript" src="/js/doc-search.js"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,110 +1,81 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}History for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="alternate" type="application/atom+xml" href="/feed/document-changes/{{ doc.name }}/" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/doc.css"></link>
|
||||
<link rel="alternate" type="application/atom+xml" href="/feed/document-changes/{{ doc.name }}/" />
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% if diff_revisions and diff_revisions|length > 1 %}
|
||||
<h2>Revision differences</h2>
|
||||
<div class="ietf-box diff-tool">
|
||||
<h2>Diffs</h2>
|
||||
|
||||
<form class="form-horizontal" role="form" action="{{rfcdiff_prefix}}" method="get" target="_blank">
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-2 ">
|
||||
<label for="url1" class="control-label">From revision</label>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" id="url1" name="url1">
|
||||
{% for name, rev, time, url in diff_revisions %}
|
||||
<option value="{{ url }}" {% if forloop.counter == 2 %} selected="selected" {% endif %}>
|
||||
{{ name }}{% if rev %}-{{ rev }}{% endif %}
|
||||
({{ time|date:"Y-m-d" }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-2 ">
|
||||
<label for="url2" class="control-label">To revision</label>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" id="url2" name="url2">
|
||||
{% for name, rev, time, url in diff_revisions %}
|
||||
<option value="{{ url }}" {% if forloop.counter == 1 %} selected="selected" {% endif %}>
|
||||
{{ name }}{% if rev %}-{{ rev }}{% endif %}
|
||||
({{ time|date:"Y-m-d" }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-2 ">
|
||||
<label class="control-label">Diff format</label>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<div class="btn-group" data-toggle="buttons">
|
||||
<label class="btn btn-default active">
|
||||
<input type="radio" name="difftype" value="--html"> Side-by-side
|
||||
</label>
|
||||
<label class="btn btn-default">
|
||||
<input type="radio" name="difftype" value="--abdiff"> Before-after
|
||||
</label>
|
||||
<label class="btn btn-default">
|
||||
<input type="radio" name="difftype" value="--chbars"> Change bars
|
||||
</label>
|
||||
<label class="btn btn-default">
|
||||
<input type="radio" name="difftype" value="--hwdiff"> Wdiff
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
<form action="http{% if request.is_secure %}s{% endif %}:{{rfcdiff_prefix}}" method="get" target="_blank">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<label>From:</label>
|
||||
<select name="url1">
|
||||
{% for name, rev, time, url in diff_revisions %}
|
||||
<option value="{{ url }}" {% if forloop.counter == 2 %} selected="selected" {% endif %}>{{ name }}{% if rev %}-{{ rev }}{% endif %} ({{ time|date:"Y-m-d" }})</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td rowspan="2" valign="top">
|
||||
<label>Format:</label>
|
||||
<select name="difftype">
|
||||
<option value="--html" selected="selected">Side-by-side</option>
|
||||
<option value="--abdiff">Before-after</option>
|
||||
<option value="--chbars">Change bars</option>
|
||||
<option value="--hwdiff">Wdiff</option>
|
||||
</select>
|
||||
<input name="submit" value="Go!" type="submit" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>To:</label>
|
||||
<select name="url2">
|
||||
{% for name, rev, time, url in diff_revisions %}
|
||||
<option value="{{ url }}" {% if forloop.counter == 1 %} selected="selected" {% endif %}>{{ name }}{% if rev %}-{{ rev }}{% endif %} ({{ time|date:"Y-m-d" }})</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<h2>Document history</h2>
|
||||
{% if user|has_role:"Area Director,Secretariat,IANA,RFC Editor" %}
|
||||
<div class="buttonlist">
|
||||
<a class="btn btn-default" href="{% url "doc_add_comment" name=doc.name %}"><span class="fa fa-plus"></span> Add comment</a>
|
||||
<div class="history-actions">
|
||||
<a class="button" href="{% url "doc_add_comment" name=doc.name %}">Add comment</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<table class="table table-condensed table-striped ietf">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Version</th>
|
||||
<th>By</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for e in events %}
|
||||
<tr id="history-{{ e.pk }}">
|
||||
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
|
||||
<td class="text-right">{{ e.rev }}</td>
|
||||
<td>{{ e.by|escape }}</td>
|
||||
<td>{{ e.desc|format_history_text }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<table class="ietf-table history">
|
||||
<tr><th>Date</th><th>Version</th><th>By</th><th>Text</th></tr>
|
||||
|
||||
{% for e in events %}
|
||||
<tr class="{% cycle oddrow,evenrow %}" id="history-{{ e.pk }}">
|
||||
<td>{{ e.time|date:"Y-m-d" }}</td>
|
||||
<td>{{ e.rev }}</td>
|
||||
<td>{{ e.by }}</td>
|
||||
<td>{{ e.desc|format_history_text }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock content %}
|
||||
|
||||
{% block content_end %}
|
||||
<script type="text/javascript" src="/js/history.js"></script>
|
||||
{% endblock content_end %}
|
||||
|
|
|
@ -1,64 +1,59 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% extends "base.html" %}
|
||||
{% block title %}
|
||||
References to {{alias_name}}
|
||||
{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
.referencetable {margin-top:1em;}
|
||||
.referenctable .references {width:100%;}
|
||||
.referencetable .references .reference .source {width:30%;}
|
||||
.referencetable .references .reference .title {width:35%;}
|
||||
.referencetable .references .reference .level {width:15%;}
|
||||
.referencetable .references .reference .reftype {width:15%;}
|
||||
.referencetable .references .reference .downref {width:5%;}
|
||||
.reflinks {font-size:80%;float:right;}
|
||||
.showmore {margin-top:1em;}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<h1>References to {{alias_name}}</h1>
|
||||
|
||||
<p class="alert alert-info">
|
||||
This is an experimental product. These dependencies are extracted using heuristics looking for strings with particular prefixes. Notably, this means that references to I-Ds by title only are not reflected here. If it's really important, please inspect the documents' references sections directly.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<div class="info-message-warning">
|
||||
This is an experimental product. These dependencies are extracted using heuristics looking for strings with particular prefixes. Notably, this means that references to I-Ds by title only are not reflected here. If it's really important, please inspect the documents' references sections directly.
|
||||
</div>
|
||||
<div>
|
||||
Showing RFCs and active Internet-Drafts, sorted by <a href="{% url 'relationship_subset_help' subset='reference' %}">reference type</a>, then document name.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
{% if numdocs %}
|
||||
<div class="alert alert-warning">
|
||||
<p>Showing only the first 250 of {{ numdocs }} documents.</p>
|
||||
<p><a class="btn btn-default" href="?full=True">Show all</a></p>
|
||||
</div>
|
||||
<div class="showmore">
|
||||
Results restricted to the first 250 of {{ numdocs }} documents. <a href="?full=True">Show All</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Document</th>
|
||||
<th>Title</th>
|
||||
<th>Status</th>
|
||||
<th>Type</th>
|
||||
<th>Downref</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for ref in refs %}
|
||||
{% with ref.source.canonical_name as name %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{% url 'doc_view' name=name %}">{{name}}</a>
|
||||
{% if ref.target.name != alias_name %}
|
||||
<br><span class="label label-info">As {{ref.target.name}}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<b>{{ref.source.title}}</b><br>
|
||||
<a class="btn btn-default btn-xs" href="{% url 'doc_references' name %}">Refs</a>
|
||||
<a class="btn btn-default btn-xs" href="{% url 'doc_referenced_by' name %}">Ref'd by</a>
|
||||
</td>
|
||||
<td>
|
||||
{% ifequal ref.source.get_state.slug 'rfc' %}
|
||||
{% with ref.source.std_level as lvl %}{% if lvl %}{{lvl}}{% endif %}{%endwith%}
|
||||
{% else %}
|
||||
{% with ref.source.intended_std_level as lvl %}{% if lvl %}{{lvl}}{% endif %}{%endwith%}
|
||||
{% endifequal %}
|
||||
</td>
|
||||
<td>{{ref.relationship.name}}</td>
|
||||
<td>{{ref.is_downref|default:''}}</td>
|
||||
</tr>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<div class="referencetable">
|
||||
<table class="references ietf-table">
|
||||
<tr><th>Document</th><th>Title</th><th>Status</th><th>Reference Type</th><th>Downref</th></tr>
|
||||
{% for ref in refs %}
|
||||
<tr class="reference {% cycle 'evenrow' 'oddrow' %}">
|
||||
<td class="source">
|
||||
{% with ref.source.canonical_name as name %}
|
||||
<a href="{% url 'doc_view' name=name %}">{{name}}</a> {% if ref.target.name != alias_name %}(as {{ref.target.name}}){% endif %} <span class="reflinks">(<a href="{% url 'doc_references' name %}">refs</a>, <a href="{% url 'doc_referenced_by' name %}">refby</a>)</span>
|
||||
{% endwith %}
|
||||
</td>
|
||||
<td class="title">
|
||||
{{ref.source.title}}
|
||||
</td>
|
||||
<td class="level">
|
||||
{% ifequal ref.source.get_state.slug 'rfc' %}
|
||||
{% with ref.source.std_level as lvl %}{% if lvl %}{{lvl}}{% endif %}{%endwith%}
|
||||
{% else %}
|
||||
{% with ref.source.intended_std_level as lvl %}{% if lvl %}{{lvl}}{% endif %}{%endwith%}
|
||||
{% endifequal %}
|
||||
</td>
|
||||
<td class="reftype">
|
||||
{{ref.relationship.name}}
|
||||
</td>
|
||||
<td class="downref">
|
||||
{{ref.is_downref|default:''}}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,51 +1,54 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% extends "base.html" %}
|
||||
{% block title %}
|
||||
References from {{doc.canonical_name}}
|
||||
{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
.referencetable {margin-top:1em;}
|
||||
.referenctable .references {width:100%;}
|
||||
.referencetable .references .reference .source {width:30%;}
|
||||
.referencetable .references .reference .title {width:35%;}
|
||||
.referencetable .references .reference .level {width:15%;}
|
||||
.referencetable .references .reference .reftype {width:15%;}
|
||||
.referencetable .references .reference .downref {width:5%;}
|
||||
.reflinks {font-size:80%;float:right;}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<h1>References from {{doc.canonical_name}}</h1>
|
||||
|
||||
<p class="alert alert-info">
|
||||
This is an experimental product. These dependencies are extracted using heuristics looking for strings with particular prefixes. Notably, this means that references to I-Ds by title only are not reflected here. If it's really important, please inspect the documents' references sections directly.
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-default" href="{% url 'relationship_subset_help' subset='reference' %}">Reference type help</a>
|
||||
</p>
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Document</th>
|
||||
<th>Title</th>
|
||||
<th>Status</th>
|
||||
<th>Type</th>
|
||||
<th>Downref</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for ref in refs %}
|
||||
{% with ref.target.name as name %}
|
||||
<tr>
|
||||
<td><a href="{% url 'doc_view' name=name %}">{{name}}</a></td>
|
||||
<td>
|
||||
<b>{{ref.target.document.title}}</b><br>
|
||||
<a class="btn btn-default btn-xs" href="{% url 'doc_references' name %}">Refs</a>
|
||||
<a class="btn btn-default btn-xs" href="{% url 'doc_referenced_by' name %}">Ref'd by</a>
|
||||
</td>
|
||||
<td>
|
||||
{% ifequal ref.target.document.get_state.slug 'rfc' %}
|
||||
{% with ref.target.document.std_level as lvl %}{% if lvl %}{{lvl}}{% endif %}{%endwith%}
|
||||
{% else %}
|
||||
{% with ref.target.document.intended_std_level as lvl %}{% if lvl %}{{lvl}}{% endif %}{%endwith%}
|
||||
{% endifequal %}
|
||||
</td>
|
||||
<td>{{ref.relationship.name}}</td>
|
||||
<td>{{ref.is_downref|default:''}}</td>
|
||||
</tr>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
<div class="info-message-warning">
|
||||
This is an experimental product. These dependencies are extracted using heuristics looking for strings with particular prefixes. Notably, this means that references to I-Ds by title only are not reflected here. If it's really important, please inspect the documents' references sections directly.
|
||||
</div>
|
||||
<div>
|
||||
Sorted by document name.
|
||||
<a href="{% url 'relationship_subset_help' subset='reference' %}">Reference type help</a>
|
||||
</div>
|
||||
<div class="referencetable">
|
||||
<table class="references ietf-table">
|
||||
<tr><th>Document</th><th>Title</th><th>Status</th><th>Reference Type</th><th>Downref</th></tr>
|
||||
{% for ref in refs %}
|
||||
<tr class="reference {% cycle 'evenrow' 'oddrow' %}">
|
||||
<td class="target">
|
||||
{% with ref.target.name as name %}
|
||||
<a href="{% url 'doc_view' name=name %}">{{name}}</a> <span class="reflinks">(<a href="{% url 'doc_references' name %}">refs</a>, <a href="{% url 'doc_referenced_by' name %}">refby</a>)</span>
|
||||
{% endwith %}
|
||||
</td>
|
||||
<td class="title">
|
||||
{{ref.target.document.title}}
|
||||
</td>
|
||||
<td class="level">
|
||||
{% ifequal ref.target.document.get_state.slug 'rfc' %}
|
||||
{% with ref.target.document.std_level as lvl %}{% if lvl %}{{lvl}}{% endif %}{%endwith%}
|
||||
{% else %}
|
||||
{% with ref.target.document.intended_std_level as lvl %}{% if lvl %}{{lvl}}{% endif %}{%endwith%}
|
||||
{% endifequal %}
|
||||
</td>
|
||||
<td class="reftype">
|
||||
{{ref.relationship.name}}
|
||||
</td>
|
||||
<td class="downref">
|
||||
{{ref.is_downref|default:''}}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,132 +1,137 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block morecss %}
|
||||
.edit { width: 1px }
|
||||
{% endblock %}
|
||||
{% block title %}{{ doc.canonical_name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block title %}{{ doc.title }}{% endblock %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" type="text/css" href="/css/doc.css"></link>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% include "doc/revisions_list.html" %}
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<tr>
|
||||
<th>
|
||||
{% if doc.get_state_slug not in approved_states %}
|
||||
Proposed status change
|
||||
{% else %}
|
||||
Status change
|
||||
{% endif %}
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "status_change_title" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.title }}
|
||||
{% if snapshot %}
|
||||
<span class="label label-warning">Snapshot</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<div class="ietf-box metabox">
|
||||
<div>
|
||||
{% if snapshot %}Snapshot of{% endif %}
|
||||
{% if doc.get_state_slug not in approved_states %}Proposed{% endif %}
|
||||
Status change :
|
||||
<a {% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
class="editlink" href="{% url "status_change_title" name=doc.name %}"
|
||||
{% endif %}
|
||||
>
|
||||
{{ doc.title }} </a>
|
||||
</div>
|
||||
|
||||
{% regroup sorted_relations by relationship.name as relation_groups %}
|
||||
{% for relation_group in relation_groups %}
|
||||
<tr>
|
||||
<th>{{relation_group.grouper}}</th>
|
||||
<td class="edit"></td>
|
||||
<td>{% for rel in relation_group.list %}{{rel.target.document.canonical_name|upper|urlize_ietf_docs}}{% if not forloop.last %}, {% endif %}{% endfor %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<table id="metatable" width="100%">
|
||||
{% regroup sorted_relations by relationship.name as relation_groups %}
|
||||
{% for relation_group in relation_groups %}
|
||||
<tr>
|
||||
<td>{{relation_group.grouper}}:</td>
|
||||
<td>{% for rel in relation_group.list %}{{rel.target.document.canonical_name|upper|urlize_ietf_docs}}{% if not forloop.last %}, {% endif %}{% endfor %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td><a href="{% url "state_help" type="status-change" %}">Review State</a>:</td>
|
||||
<td>
|
||||
<div>
|
||||
<a title="{{ doc.get_state.desc }}"{% if not snapshot and user|has_role:"Area Director,Secretariat" %} class="editlink" href="{% url "status_change_change_state" name=doc.name %}"{% endif %}>{{ doc.get_state.name }}</a>
|
||||
|
||||
<tr>
|
||||
<th><a href="{% url "state_help" type="status-change" %}">Review state</a></th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "status_change_change_state" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<span title="{{ doc.get_state.desc }}">{{ doc.get_state.name }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
|
||||
<tr>
|
||||
<th>Telechat date</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "status_change_telechat_date" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if not telechat %}
|
||||
(None)
|
||||
{% else %}
|
||||
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
|
||||
{% if doc.returning_item %}(returning item){% endif %}
|
||||
{% endif %}
|
||||
{% if request.user|has_role:"Secretariat" %}{% if doc.get_state_slug = 'appr-pend' %}
|
||||
- <a href="{% url "status_change_approve" name=doc.name %}">Approve RFC status changes</a>
|
||||
{% endif %}{% endif %}
|
||||
|
||||
{% if ballot_summary %}
|
||||
<br><i>{{ ballot_summary }}</i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Shepherding AD</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "status_change_ad" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{doc.ad}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Telechat Date:</td>
|
||||
<td>
|
||||
{% if not snapshot %}
|
||||
<a {% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
class="editlink" href="{% url "status_change_telechat_date" name=doc.name %}"
|
||||
{%endif%} >
|
||||
{% if not telechat %}Not on agenda of an IESG telechat{% else %}On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat{% if doc.returning_item %} (returning item){% endif %}{% endif %}
|
||||
</a>
|
||||
|
||||
<tr>
|
||||
<th>Send notices to</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-default btn-xs pull-right" href="{% url "status_change_notices" name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{doc.notify}}
|
||||
</td>
|
||||
</tr>
|
||||
{% if ballot_summary %}
|
||||
<div class="ballot-summary">
|
||||
({{ ballot_summary }})
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<th>Last updated</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ doc.time|date:"Y-m-d" }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<p class="buttonlist">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
{% if doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-default" href="{% url "status_change_relations" name=doc.name %}">Edit affected RFCs</a>
|
||||
<a class="btn btn-default" href="{% url "status_change_last_call" name=doc.name %}">Edit last call text</a>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td>Shepherding AD:</td>
|
||||
<td>
|
||||
<a {% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
class="editlink" href="{% url "status_change_ad" name=doc.name %}"
|
||||
{% endif %}
|
||||
>
|
||||
{{doc.ad}}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if doc.get_state_slug != 'apprsent' %}
|
||||
<a class="btn btn-default" href="{% url "status_change_submit" name=doc.name %}">Edit status change text</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td>Send notices to:</td>
|
||||
<td>
|
||||
<a {% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
class="editlink" href="{% url "status_change_notices" name=doc.name %}"
|
||||
{% endif %}
|
||||
>
|
||||
{{doc.notify}}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% if request.user|has_role:"Secretariat" and doc.get_state_slug = 'appr-pend' %}
|
||||
<a class="btn btn-warning" href="{% url "status_change_approve" name=doc.name %}">Approve RFC status change</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
|
||||
<tr><td>Last updated:</td><td> {{ doc.time|date:"Y-m-d" }}</td></tr>
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<tr><td colspan="2">
|
||||
<span id="doc_edit_affected_rfc_list_button" class="yui-button yui-link-button" style="margin-left:2px;">
|
||||
<span class="first-child">
|
||||
<a href="{% url "status_change_relations" name=doc.name %}">Edit Affected RFC List</a>
|
||||
</span>
|
||||
</span>
|
||||
<span id="doc_edit_last_call_text" class="yui-button yui-link-button" style="margin-left:2px;">
|
||||
<span class="first-child">
|
||||
<a href="{% url "status_change_last_call" name=doc.name %}">Edit Last Call Text</a>
|
||||
</span>
|
||||
</span>
|
||||
</td><tr/>
|
||||
{% endif %}
|
||||
|
||||
{% comment %}
|
||||
<tr><td colspan='2'><hr size='1' noshade /></td></tr>
|
||||
{% endcomment %}
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<h3>RFC Status Change : {{ doc.title }}
|
||||
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug != 'apprsent' %}
|
||||
<a class="edit" href="{% url "status_change_submit" name=doc.name %}">Change status change text</a>
|
||||
{% endif %}
|
||||
</h3>
|
||||
|
||||
{% if doc.rev %}
|
||||
{{ content|fill:"80"|safe|linebreaksbr|keep_spacing|sanitize_html|safe }}
|
||||
<div class="markup_draft">
|
||||
{{ content|fill:"80"|safe|linebreaksbr|keep_spacing|sanitize_html|safe }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
{% load ietf_filters %}
|
||||
<h1>{{ doc.title }}<br/>{{ name }}</h1>
|
||||
|
||||
<h1>{{ doc.title }}<br><small>{{ name }}</small></h1>
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
{% for name, t, url, active, tooltip in tabs %}
|
||||
<li {% if tooltip %}title="{{tooltip}}"{% endif %} class="{% if t == selected %}active {% endif %}{% if not active %}disabled {% endif %}">
|
||||
<a {% if active %}href="{{ url }}"{% endif %}>{{ name|capfirst_allcaps }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<div id="mytabs" class="yui-navset">
|
||||
<ul class="yui-nav">
|
||||
{% for name, t, url, active, tooltip in tabs %}
|
||||
<li {% if t == selected %}class="selected"{% endif %}{% if tooltip %}title="{{tooltip}}"{% endif %}{% if not active %}class="disabled"{% endif %}><a{% if active %} href="{{ url }}"{% endif %}><em>{{ name }}</em></a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p></p>
|
||||
</div>
|
||||
|
|
|
@ -1,37 +1,28 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Writeups for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" type="text/css" href="/css/doc.css"></link>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% for title, subtitle, writeups in sections %}
|
||||
<h2>
|
||||
{{ title|capfirst_allcaps }}
|
||||
{% if subtitle %}
|
||||
<br><small>{{ subtitle|safe }}</small>
|
||||
{% endif %}
|
||||
</h2>
|
||||
<h2>{{ title }}</h2>
|
||||
|
||||
{% for name, text, url in writeups %}
|
||||
{% if text %}
|
||||
<pre>{{ text|urlize }}</pre>
|
||||
{% endif %}
|
||||
{% if subtitle %}<p>{{ subtitle|safe }}</p>{% endif %}
|
||||
|
||||
<p>
|
||||
{% if can_edit %}
|
||||
<a href="{{ url }}" class="btn btn-primary">
|
||||
{% if text %}
|
||||
Edit
|
||||
{% else %}
|
||||
Generate
|
||||
{% endif %}
|
||||
{{ name|lower_allcaps }}
|
||||
</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endfor %}
|
||||
{% for name, text, url in writeups %}
|
||||
<div class="writeup">
|
||||
{% if can_edit %}<a href="{{ url }}" class="edit button">{% if text %}Edit{% else %}Generate{% endif %} {{ name }}</a>{% endif %}
|
||||
|
||||
<pre {% if can_edit %}class="editable"{% endif %}>
|
||||
{{ text }}
|
||||
</pre>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% endblock content %}
|
||||
|
|
|
@ -1,28 +1,43 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block title %}Adopt {{ doc }} in Group{% endblock %}
|
||||
|
||||
{% block title %}Adopt {{ doc }} in group{% endblock %}
|
||||
{% block morecss %}
|
||||
form.adopt-draft th { width: 8em; }
|
||||
form.adopt-draft #id_comment { width: 30em; }
|
||||
form.adopt-draft #id_weeks { width: 3em; }
|
||||
form.adopt-draft .actions { text-align: right; padding-top: 1em; }
|
||||
p.intro { max-width: 50em; }
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Adopt {{ doc }} in group</h1>
|
||||
<h1>Adopt {{ doc }} in Group</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<p class="intro">You can adopt this draft into a group.</p>
|
||||
|
||||
<p class="alert alert-info">You can adopt this draft into a group.
|
||||
For a WG, the draft enters the IETF stream and the
|
||||
<p class="intro">For a WG, the draft enters the IETF stream and the
|
||||
stream state becomes "Call for Adoption by WG Issued". For an RG, the
|
||||
draft enters the IRTF stream and the stream state becomes "Active RG
|
||||
Document".</p>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="adopt-draft" action="" method="post">{% csrf_token %}
|
||||
{% for field in form.hidden_fields %}{{ field }}{% endfor %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a class="button" href="{{ doc.get_absolute_url }}">Cancel</a>
|
||||
<input class="button" type="submit" value="Adopt Draft"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,39 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
color: #a00;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Change shepherding AD for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
{% block title %}
|
||||
Change the shepherding AD for {{ doc.name }}-{{ doc.rev }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change shepherding AD<br><small>{{ doc.name }}-{{ doc.rev }}</small></h1>
|
||||
<h1>Change the shepherding AD for {{ doc.name }}-{{ doc.rev }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="edit-info" action="" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
<input type="submit" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,21 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
|
||||
{% block title %}Change consensus for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
{% block title %}Change whether {{ doc.name }}-{{ doc.rev }} is the result of a consensus process{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change consensus<br><small>{{ doc.name }}-{{ doc.rev }}</small></h1>
|
||||
<h1>Change whether {{ doc.name }}-{{ doc.rev }} is the result of a consensus process</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
<input type="submit" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,21 +1,24 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block title %}Change IANA state of {{ doc }}{% endblock %}
|
||||
|
||||
{% block title %}Change IANA state for {{ doc }}{% endblock %}
|
||||
{% block morecss %}
|
||||
form table .actions { text-align: right; padding-top: 1em; }
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change IANA state<br><small>{{ doc }}</small></h1>
|
||||
<h1>Change IANA state of {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a href="{{ doc.get_absolute_url }}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,21 +1,29 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Change intended status for {{ doc }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form.change-intended-status select {
|
||||
width: 22em;
|
||||
}
|
||||
form.change-intended-status .actions {
|
||||
text-align: right;
|
||||
padding-top: 10px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change intended status<br><small>{{ doc }}</small></h1>
|
||||
<h1>Change intended status for {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="change-intended-status" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a href="{{ doc.get_absolute_url }}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,39 +1,86 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Change which documents {{ doc }} replaces{% endblock %}
|
||||
{% block pagehead %}{{ block.super }}
|
||||
<!--TODO: The template will later load another version of jQuery.
|
||||
We should eliminate the duplication.-->
|
||||
<script type="text/javascript" src="{{ SECR_STATIC_URL }}js/jquery-1.5.1.min.js"></script>
|
||||
<script type="text/javascript" src="{{ SECR_STATIC_URL }}js/jquery-ui-1.8.9.min.js"></script>
|
||||
<script type="text/javascript" src="{{ SECR_STATIC_URL }}js/jquery.json-2.2.min.js"></script>
|
||||
<link rel="stylesheet" href="{{ SECR_STATIC_URL }}css/redmond/jquery-ui-1.8.9.custom.css" type="text/css" media="screen" charset="utf-8"/>
|
||||
|
||||
{% load bootstrap3 %}
|
||||
<script type="text/javascript">
|
||||
// Free up the $ and jQuery names.
|
||||
j=$.noConflict(true);
|
||||
j(document).ready(function($) {
|
||||
function add_to_list(list, id, label) {
|
||||
list.append('<li><a href="' + id
|
||||
+ '"><img src="{{ SECR_STATIC_URL }}img/delete.png" alt="delete"></a> '
|
||||
+ label + '</li>');
|
||||
}
|
||||
|
||||
{% block title %}Change documents replaced by {{ doc }}{% endblock %}
|
||||
function setup_ajax(field, list, searchfield, url) {
|
||||
var datastore = {};
|
||||
window.field = field;
|
||||
if (field.val() != '') {
|
||||
datastore = $.parseJSON(field.val());
|
||||
}
|
||||
$.each(datastore, function(k, v) {
|
||||
add_to_list(list, k, v);
|
||||
});
|
||||
searchfield.autocomplete({
|
||||
source: url,
|
||||
minLength: 1,
|
||||
select: function(event, ui) {
|
||||
datastore[ui.item.id] = ui.item.label;
|
||||
field.val($.toJSON(datastore));
|
||||
searchfield.val('');
|
||||
add_to_list(list, ui.item.id, ui.item.label);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
// Automatically select the first element in the autocomplete list, so
|
||||
// that hitting Enter adds it.
|
||||
$(".ui-autocomplete-input").live("autocompleteopen", function() {
|
||||
var autocomplete = $(this).data("autocomplete");
|
||||
var menu = autocomplete.menu;
|
||||
menu.activate($.Event({ type: "mouseenter" }),
|
||||
menu.element.children().first());
|
||||
});
|
||||
list.delegate("a", "click", function() {
|
||||
delete datastore[$(this).attr("href")];
|
||||
field.val($.toJSON(datastore));
|
||||
$(this).closest("li").remove();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="/facelift/css/tokenfield-typeahead.min.css">
|
||||
<link rel="stylesheet" href="/facelift/css/bootstrap-tokenfield.min.css">
|
||||
setup_ajax($("#id_replaces"), $("#replaces_list"),
|
||||
$("#id_replaces_search"), "{% url "doc_ajax_internet_draft" %}");
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change documents replaced by<br><small>{{ doc }}</small></h1>
|
||||
|
||||
<form class="tokenized-form" role="form" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ form.replaces.label }}</label>
|
||||
<input type="text" class="form-control tokenized-field" data-ajax-url="{% url "doc_ajax_internet_draft" %}?term=" data-display="label" data-io="#id_replaces" data-format="json">
|
||||
<span class="help-block">Enter draft names, separated with commas.</span>
|
||||
</div>
|
||||
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<input type="submit" class="btn btn-primary" value="Save">
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
<h1>Change which documents {{ doc }} replaces</h1>
|
||||
|
||||
<form class="change-replaces" action="" method="post">{% csrf_token %}
|
||||
{{ form.non_field_errors }}
|
||||
{{ form.replaces.label_tag }}
|
||||
<input type="text" id="id_replaces_search">
|
||||
{{ form.replaces }}
|
||||
<ul id="replaces_list"></ul>
|
||||
{{ form.replaces.errors }}
|
||||
<table>
|
||||
<tr>
|
||||
<td>{{ form.comment.label_tag }}</td>
|
||||
<td>{{ form.comment.errors }} {{ form.comment }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a href="{{ doc.get_absolute_url }}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="/facelift/js/lib/typeahead.bundle.min.js"></script>
|
||||
<script src="/facelift/js/lib/bootstrap-tokenfield.min.js"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,25 +1,40 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
form #id_content {
|
||||
width: 40em;
|
||||
height: 450px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
Edit shepherd writeup for {{ doc.canonical_name }}-{{ doc.rev }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Edit shepherd writeup<br><small>{{ doc.canonical_name }}-{{ doc.rev }}</small></h1>
|
||||
<h1>Edit shepherd writeup for {{ doc.canonical_name }}-{{ doc.rev }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="submit_response">Submit</button>
|
||||
<button type="submit" class="btn btn-warning" name="reset_text">Reset to template text</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="edit-info" action="" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=doc.canonical_name %}">Back</a>
|
||||
<input type="submit" name="reset_text" value="Reset to Template Text"/>
|
||||
<input type="submit" name="submit_response" value="Submit"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,69 +1,86 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block title %}Change state of {{ doc }}{% endblock %}
|
||||
|
||||
{% block title %}Change state for {{ doc }}{% endblock %}
|
||||
{% block morecss %}
|
||||
form.change-state select { width: 22em; }
|
||||
form.change-state #id_comment { width: 30em; }
|
||||
form.change-state .cancel-pub-note { width: 30em; color: #a00; }
|
||||
form.change-state .actions {
|
||||
text-align: right;
|
||||
padding-top: 10px;
|
||||
}
|
||||
.next-states,
|
||||
.prev-state {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.next-states form,
|
||||
.prev-state form {
|
||||
display: inline;
|
||||
margin-right: 10px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change state<br><small>{{ doc }}</small></h1>
|
||||
<h1>Change state of {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<p>
|
||||
<a class="btn btn-info" href="{% url "state_help" type="draft-iesg" %}">Help on states</a>
|
||||
</p>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
<p class="helptext">For help on the states, see the <a href="{% url "state_help" type="draft-iesg" %}">state table</a>.</p>
|
||||
|
||||
<form class="change-state" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
{% if state and state.slug == "rfcqueue" %}
|
||||
<span class="help-block">
|
||||
<b>Note:</b> If you pull the draft out of the
|
||||
<i>{{ state.name }}</i> state, the RFC Editor and IANA will be notified
|
||||
by email with this comment, so they can update their queues.
|
||||
</span>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="cancel-pub-note">Note: if you pull the draft out of the
|
||||
{{ state.name }} state, the RFC Editor and IANA will be notified
|
||||
by email with this comment so they can update their queues.</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a href="{{ doc.get_absolute_url }}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% if next_states %}
|
||||
<h2>Or jump directly to</h2>
|
||||
<h3>Or jump directly to</h3>
|
||||
|
||||
<div class="buttonlist">
|
||||
{% for n in next_states %}
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="state" value="{{ n.pk }}">
|
||||
<input class="btn btn-default" type="submit" value="{{ n.name }}">
|
||||
</form>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="next-states">
|
||||
{% for n in next_states %}
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="state" value="{{ n.pk }}" />
|
||||
<input type="submit" value="{{ n.name }}" />
|
||||
</form>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if to_iesg_eval %}
|
||||
<h2>You could also jump directly to</h2>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="state" value="{{ to_iesg_eval.pk }}">
|
||||
<input class="btn btn-warning" type="submit" value="{{ to_iesg_eval.name }}">
|
||||
But the ballot for this document has not yet been issued.
|
||||
<a class="btn btn-default" href="{% url "doc_ballot_writeupnotes" name=doc.name %}">Edit ballot text</a>
|
||||
</form>
|
||||
<h3>You could also jump directly to</h3>
|
||||
<div class="warn-states">
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="state" value="{{ to_iesg_eval.pk }}" />
|
||||
<input type="submit" value="{{ to_iesg_eval.name }}" />
|
||||
</form>
|
||||
<p>
|
||||
But the ballot for this document has not yet been issued.
|
||||
<a href="{% url "doc_ballot_writeupnotes" name=doc.name %}">Edit Ballot Text</a>
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if prev_state %}
|
||||
<h2>Or revert to previous state</h2>
|
||||
<h3>Or revert to previous state</h3>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="state" value="{{ prev_state.pk }}">
|
||||
<input class="btn btn-danger" type="submit" value="Revert to {{ prev_state.name }}">
|
||||
</form>
|
||||
<div class="prev-state">
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="state" value="{{ prev_state.pk }}" />
|
||||
<input type="submit" value="Back to {{ prev_state.name }}" />
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,20 +1,29 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Change stream for {{ doc }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form.change-stream select {
|
||||
width: 22em;
|
||||
}
|
||||
form.change-stream .actions {
|
||||
text-align: right;
|
||||
padding-top: 10px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change stream<br><small>{{ doc }}</small></h1>
|
||||
<h1>Change stream for {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="change-stream" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a href="{{ doc.get_absolute_url }}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,43 +1,72 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
|
||||
{% block title %}Change {{ state_type.label }} for {{ doc }}{% endblock %}
|
||||
{% block title %}Change {{ state_type.label }} of {{ doc }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
.next-states { margin-bottom: 1em; }
|
||||
.next-states a {
|
||||
display: inline-block;
|
||||
margin: 0 0.2em;
|
||||
padding: 0.2em 0.3em;
|
||||
border-radius: 0.2em;
|
||||
cursor: pointer;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
}
|
||||
.next-states a:hover { background-color: #eee; transition-duration: 0.2s; }
|
||||
form.change-state th { max-width: 8em; }
|
||||
form.change-state th, form.change-state td { padding-bottom: 0.3em; }
|
||||
form.change-state #id_comment { width: 30em; }
|
||||
form.change-state #id_weeks { width: 2em;}
|
||||
form.change-state .actions { text-align: right; padding-top: 1em; }
|
||||
form.change-state ul { padding: 0; margin: 0; }
|
||||
form.change-state ul li { padding: 0; padding-bottom: 0.1em; margin: 0; list-style-type: none; }
|
||||
form.change-state ul li input { vertical-align: middle; }
|
||||
form.change-state ul li label { cursor: pointer; }
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Change {{ state_type.label }}<br><small>{{ doc }}</small></h1>
|
||||
<h1>Change {{ state_type.label }} of {{ doc }}</h1>
|
||||
|
||||
<p class="intro">For help on the states, see the <a href="{% url "state_help" type=state_type.slug %}">state table</a>.</p>
|
||||
|
||||
{% if next_states %}
|
||||
<p>
|
||||
<b>Move document to {{ next_states|pluralize:"to one of" }} the recommended next state{{ next_states|pluralize }}:</b>
|
||||
</p>
|
||||
<p class="buttonlist">
|
||||
{% for state in next_states %}
|
||||
<button class="btn btn-default next-state" data-state="{{ state.pk }}">{{ state.name }}</button>
|
||||
{% endfor %}
|
||||
<a class="btn btn-info pull-right" href="{% url "state_help" type=state_type.slug %}">Help on states</a>
|
||||
</p>
|
||||
<div class="next-states">
|
||||
<span>Recommended next state{{ next_states|pluralize }}:</span>
|
||||
{% for state in next_states %}<a tabindex="0" data-state="{{ state.pk }}">{{ state.name }}</a> {% if not forloop.last %} or {% endif %}{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="change-state" action="" method="post">{% csrf_token %}
|
||||
<table cellspacing="0">
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td colspan="2" class="actions">
|
||||
<a class="button" href="{{ doc.get_absolute_url }}">Cancel</a>
|
||||
<input class="button" type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
$(document).ready(function () {
|
||||
$("button.next-state").click(function (e) {
|
||||
var s = $(this).data("state");
|
||||
if (s) {
|
||||
e.preventDefault();
|
||||
$("#id_new_state").val(s);
|
||||
}
|
||||
});
|
||||
{% block js %}
|
||||
<script>
|
||||
jQuery(document).ready(function () {
|
||||
jQuery(".next-states a").click(function (e) {
|
||||
e.preventDefault();
|
||||
var s = jQuery(this).data("state");
|
||||
jQuery("#id_new_state").val(s);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,34 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Edit IESG note for {{ doc.name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Edit IESG note<br><small>{{ doc.name }}</small></h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
|
||||
{% block morecss %}
|
||||
form.edit-iesg-note #id_note {
|
||||
width: 600px;
|
||||
height: 150px;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Edit IESG note for {{ doc.name }}</h1>
|
||||
|
||||
<form class="edit-iesg-note" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{{ doc.get_absolute_url }}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,22 +1,64 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% load ietf_filters %}
|
||||
{% block title %}Edit info on {{ doc }}{% endblock %}
|
||||
|
||||
{% block title %}Edit info for {{ doc }}{% endblock %}
|
||||
{% block scripts %}
|
||||
function make_bold()
|
||||
{
|
||||
var e = document.getElementById("ballotwarn");
|
||||
e.setAttribute("class","warning");
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form.edit-info #id_notify {
|
||||
width: 600px;
|
||||
}
|
||||
form.edit-info #id_note {
|
||||
width: 600px;
|
||||
height: 150px;
|
||||
}
|
||||
form.edit-info .actions {
|
||||
padding-top: 20px;
|
||||
}
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
color: #a00;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Edit info<br><small>{{ doc }}</small></h1>
|
||||
{% load ietf_filters %}
|
||||
<h1>Edit info on {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form class="tokenized-form" role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button class="btn btn-primary" type="submit">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="edit-info" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.standard_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.name == "telechat_date" %}
|
||||
{% if not ballot_issued %}
|
||||
<span id="ballotwarn"> A ballot for this document has not been issued: <a href="{% url "doc_ballot_writeupnotes" name=doc.name %}">Edit Ballot Text</a></span>
|
||||
{% endif %}
|
||||
{{ form.returning_item }} {{ form.returning_item.label_tag }} {{ form.returning_item.errors }}
|
||||
{% endif %}
|
||||
{% if field.name == "ad" %}
|
||||
{% if user|has_role:"Area Director" %}
|
||||
<label><input type="checkbox" name="ad" value="{{ login.pk }}" /> Assign to me</label>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{{ doc.get_absolute_url }}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Last call requested{% endblock %}
|
||||
{% block title %}Last Call Requested{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Last call requested</h1>
|
||||
<h1>Last Call Requested</h1>
|
||||
|
||||
<p>Your request to issue the <i>last call</i> has been submitted to the secretariat.</p>
|
||||
<p>Your request to issue the Last Call has been submitted to the Secretariat.</p>
|
||||
|
||||
<p>Note that the <i>last call</i> will not actually go out until the
|
||||
<p>Note that the Last Call will not actually go out until the
|
||||
secretariat takes appropriate steps. This may take up to one business
|
||||
day, as it involves a person taking action.</p>
|
||||
|
||||
<a class="btn btn-default" href="{{ url }}">Back</a>
|
||||
<div class="actions">
|
||||
<a href="{{ url }}">Back</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,28 +1,39 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block title %}Make Last Call for {{ doc.name }}{% endblock %}
|
||||
|
||||
{% block title %}Make last call for {{ doc.name }}{% endblock %}
|
||||
{% block morecss %}
|
||||
form.approve-ballot pre {
|
||||
margin: 0;
|
||||
padding: 4px;
|
||||
border-top: 4px solid #eee;
|
||||
border-bottom: 4px solid #eee;
|
||||
}
|
||||
form.approve-ballot .announcement {
|
||||
overflow-x: auto;
|
||||
overflow-y: scroll;
|
||||
width: 800px;
|
||||
height: 400px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Make last call<br><small>{{ doc.name }}</small></h1>
|
||||
<h1>Make Last Call for {{ doc.name }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
<p>Make last call for following draft:</p>
|
||||
|
||||
<p class="alert alert-info">
|
||||
<b>Last call for:</b>
|
||||
{{ doc.name }} ({{ doc.group.acronym }}) to {{ doc.intended_std_level.name }}
|
||||
</p>
|
||||
<div>{{ doc.file_tag }} ({{ doc.group.acronym }}) - {{ doc.intended_std_level.name }}</div>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
<form style="margin-top:20px" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Make last call</button>
|
||||
<button type="reset" class="btn btn-warning">Reset</button>
|
||||
<a class="btn btn-default pull-right" href="{{ doc.get_absolute_url }}">Back</a>
|
||||
{% endbuttons %}
|
||||
<div class="actions">
|
||||
<a href="{{ doc.get_absolute_url }}">Back</a>
|
||||
<input type="reset" value="Reset">
|
||||
<input type="submit" value="Make Last Call"/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,53 +1,46 @@
|
|||
{% extends "ietf.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Request publication for {{ doc }}{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
p.warning { color: #a00; font-weight: bold; }
|
||||
form.request-publication #id_subject,
|
||||
form.request-publication #id_body { width: 50em; }
|
||||
form.request-publication #id_body { height: 30em; }
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Request publication<br><small>{{ doc }}</small></h1>
|
||||
<h1>Request publication for {{ doc }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<p class="alert alert-info">
|
||||
Send a publication request to the RFC Editor for {{ doc }} and move it to the <i>{{ next_state.name }}</i> stream state.
|
||||
Please edit the message and remove any parts in brackets you do not
|
||||
fill in. For independent submissions, see the <a
|
||||
href="http://www.rfc-editor.org/indsubs.html">guidelines</a>.
|
||||
</p>
|
||||
<p>Send a publication request to the RFC Editor for {{ doc }} and move
|
||||
it to the <em>{{ next_state.name }}</em> stream state.</p>
|
||||
|
||||
{% if not doc.intended_std_level %}
|
||||
<p class="alert alert-warning">
|
||||
<b>Note:</b> Intended RFC status is not set for the document.
|
||||
</p>
|
||||
<p class="warning">Note: Intended RFC status is not set for the document.</p>
|
||||
{% endif %}
|
||||
|
||||
{% if doc.stream_id != "ise" and not consensus_filled_in %}
|
||||
<p class="alert alert-warning">
|
||||
<b>Note:</b> Consensus status is not set for the document.
|
||||
</p>
|
||||
<p class="warning">Note: Consensus status is not set for the document.</p>
|
||||
{% endif %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="form-group">
|
||||
<label>From</label>
|
||||
<input class="form-control" type="text" placeholder="{{ message.frm }}" disabled>
|
||||
</div>
|
||||
<p>Please edit the message and remove any parts in brackets you do not
|
||||
fill in. For independent submissions, see the <a
|
||||
href="http://www.rfc-editor.org/indsubs.html">guidelines</a>.</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>To</label>
|
||||
<input class="form-control" type="text" placeholder="{{ message.to }}" disabled>
|
||||
</div>
|
||||
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-danger">Email RFC Editor</button>
|
||||
<button type="reset" class="btn btn-warning">Reset</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="request-publication" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
<tr><td>From:</td> <td>{{ message.frm }}</td></tr>
|
||||
<tr><td>To:</td> <td>{{ message.to }}</td></tr>
|
||||
<tr><td>Subject:</td> <td>{{ form.subject }} {{ form.subject.errors }}</td></tr>
|
||||
<tr><td style="vertical-align: top">Message:</td> <td>{{ form.body }} {{ form.body.errors }}</td></tr>
|
||||
<tr class="actions"><td></td>
|
||||
<td>
|
||||
<a class="button" href="{% url "doc_view" name=doc.name %}">Cancel</a>
|
||||
<input class="button" name="reset" type="submit" value="Reset"/>
|
||||
<input class="button" type="submit" value="Send request to the RFC Editor"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,21 +1,19 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Request resurrection for {{ doc }}{% endblock %}
|
||||
{% block title %}Request resurrection of {{ doc }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Request resurrection<br><small>{{ doc }}</small></h1>
|
||||
<h1>Request resurrection of {{ doc }}</h1>
|
||||
|
||||
<p>Request resurrection of the Internet-Draft {{ doc.file_tag }}?</p>
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<p>Request resurrection of the Internet Draft {{ doc.file_tag }}?</p>
|
||||
|
||||
<p>This will send a notification to the Secretariat to resurrect the I-D.</p>
|
||||
<p>This will send a notification to the Secretariat to resurrect the
|
||||
I-D.</p>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="buttonlist">
|
||||
<input class="btn btn-primary" type="submit" value="Request resurrection">
|
||||
<a class="btn btn-default pull-right" href="{{ back_url }}">Back</a>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<input type="submit" value="Request resurrection"/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,24 +1,18 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Resurrect {{ doc }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<h1>Resurrect {{ doc }}</h1>
|
||||
|
||||
<p>Resurrect {{ doc.file_tag }}?</p>
|
||||
|
||||
<h1>Resurrect<br><small>{{ doc }}</small></h1>
|
||||
<p>This will change the status to Active{% if doc.idinternal.resurrect_requested_by %} and email a notice to {{ doc.idinternal.resurrect_requested_by }}{% endif %}.</p>
|
||||
|
||||
<p>Resurrect {{ doc }}?</p>
|
||||
|
||||
<p>
|
||||
This will change the status to Active {% if doc.idinternal.resurrect_requested_by %} and email a notice to {{ doc.idinternal.resurrect_requested_by }}{% endif %}.
|
||||
</p>
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="buttonlist">
|
||||
<input class="btn btn-primary" type="submit" value="Resurrect">
|
||||
<a class="btn btn-default pull-right" href="{{ back_url }}">Back</a>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<a href="{{ back_url }}">Back</a>
|
||||
<input type="submit" value="Resurrect"/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{% extends "ietf.html" %}
|
||||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Posting approved I-D to RFC Editor failed{% endblock %}
|
||||
{% block title %}Posting Approved Draft to RFC Editor Failed{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Posting approved I-D to RFC Editor failed</h1>
|
||||
<h1>Posting Approved Draft to RFC Editor Failed</h1>
|
||||
|
||||
<p>Sorry, when trying to notify the RFC Editor through HTTP, we hit an
|
||||
error.</p>
|
||||
|
@ -13,11 +14,13 @@ yet so if this is an intermittent error, you can go back and try
|
|||
again.</p>
|
||||
|
||||
<p>The error was:</p>
|
||||
|
||||
<p><code>{{ error }}</code></p>
|
||||
|
||||
{% if response %}
|
||||
<p>The response from the RFC Editor was:</p>
|
||||
<p><code>{{ response|linebreaksbr }}</code></p>
|
||||
<p>The response from the RFC Editor was:</p>
|
||||
|
||||
<p><code>{{ response|linebreaksbr }}</code></p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Documents for {{ ad_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Documents for {{ ad_name }}</h1>
|
||||
|
||||
{% include "doc/search/search_results.html" %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script type="text/javascript" src="/js/utils.js"></script>
|
||||
<script type="text/javascript" src="/js/doc-search.js"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block pagehead %}
|
||||
{% if last_call_only %}
|
||||
<link rel="alternate" type="application/atom+xml" href="/feed/last-call/">
|
||||
{% endif %}
|
||||
{% if last_call_only %}<link rel="alternate" type="application/atom+xml" href="/feed/last-call/">{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
th.area, td.area { text-align: left; padding-right: 0.5em; }
|
||||
th.date, td.date { text-align: left; padding-right: 0.5em; white-space: nowrap; }
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ title }}{% endblock %}
|
||||
|
@ -13,41 +17,51 @@
|
|||
{% block content %}
|
||||
<h1>{{ title }}</h1>
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-nowrap">Area</th>
|
||||
<th class="text-nowrap">{% if state.slug == "lc" %}Expires at{% else %}Date{% endif %}</th>
|
||||
<th>Document</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for state, docs in grouped_docs %}
|
||||
<tr class="warning"><th colspan="3">{{ state.name }}</th></tr>
|
||||
{% for state, docs in grouped_docs %}
|
||||
<h2 id="{{ state.slug }}">{{ state.name }}</h2>
|
||||
|
||||
{% for doc in docs %}
|
||||
<tr>
|
||||
<td class="text-nowrap">{% if doc.area_acronym %}{{ doc.area_acronym }}{% endif %}</td>
|
||||
<td class="text-nowrap">
|
||||
{% if state.slug == "lc" %}
|
||||
{% if doc.lc_expires %}{{ doc.lc_expires|date:"Y-m-d" }}{% endif %}
|
||||
{% else %}
|
||||
{{ doc.time|date:"Y-m-d" }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="area">Area</th>
|
||||
<th class="date">{% if state.slug == "lc" %}Expires at{% else %}Date{% endif %}</th>
|
||||
</tr>
|
||||
|
||||
<td>
|
||||
<b>{{ doc.title }}</b> ({{ doc.intended_std_level.name }})
|
||||
<br><a href="{% url "doc_view" doc.name %}">{{ doc.name }}</a>
|
||||
<br>AD: <a href="mailto:{{ doc.ad.email_address|urlencode }}">{{ doc.ad.plain_name }}</a>
|
||||
{% if doc.note %}
|
||||
<br><i>Note: {{ doc.note|linebreaksbr|urlize }}</i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
{% for doc in docs %}
|
||||
<tr class="doc">
|
||||
<td class="area">{% if doc.area_acronym %}{{ doc.area_acronym.upper }}{% endif %}</td>
|
||||
<td class="date">
|
||||
{% if state.slug == "lc" %}
|
||||
{% if doc.lc_expires %}{{ doc.lc_expires|date:"M j, Y" }}{% endif %}
|
||||
{% else %}
|
||||
{{ doc.time|date:"M j, Y" }}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
<td>{{ doc.title }} ({{ doc.intended_std_level.name }})</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td><a href="{% url "doc_view" doc.name %}">{{ doc.name }}</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>AD:</td>
|
||||
<td><a href="mailto:{{ doc.ad.email_address|urlencode }}">{{ doc.ad.plain_name }}</a></td>
|
||||
</tr>
|
||||
|
||||
{% if doc.note %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>Note:</td>
|
||||
<td>{{ doc.note|linebreaksbr|urlize }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Internet-Drafts in IETF last call{% endblock %}
|
||||
{% block title %}Internet-Drafts in IETF Last Call{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Internet-Drafts in IETF last call</h1>
|
||||
<h1>Internet-Drafts in IETF Last Call</h1>
|
||||
|
||||
{% include "doc/search/search_results.html" %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script type="text/javascript" src="/js/utils.js"></script>
|
||||
<script type="text/javascript" src="/js/doc-search.js"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,25 +1,43 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block morecss %}
|
||||
form.edit-info #id_notify {
|
||||
width: 600px;
|
||||
}
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
color: #a00;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
Edit notification addresses for {{titletext}}
|
||||
Edit notification addresses for {{titletext}}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Edit notification addresses<br><small>{{titletext}}</small></h1>
|
||||
<h1>Edit notification addresses for {{titletext}}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary" name="save_addresses">Submit</button>
|
||||
<input type="submit" class="btn btn-warning" name="regenerate_addresses" value="Regenerate address list">
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.canonical_name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="edit-info" action="" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}</th>
|
||||
<td>
|
||||
{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=doc.canonical_name %}">Back</a>
|
||||
<input type="submit" name="save_addresses" value="Save" />
|
||||
<input type="submit" name="regenerate_addresses" value="Regenerate Address List" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,30 +1,36 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load bootstrap3 %}
|
||||
{% block title %}
|
||||
Set Telechat Date for {{ doc.name }}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Set telechat date for {{ doc.name }}{% endblock %}
|
||||
{% block morecss %}
|
||||
form.telechat-date td.actions {
|
||||
padding-top: 1em;
|
||||
}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Set telechat date<br><small>{{ doc.name }}</small></h1>
|
||||
{% load ietf_filters %}
|
||||
<h1>Set Telechat Date for {{ doc.name }}</h1>
|
||||
|
||||
{% bootstrap_messages %}
|
||||
|
||||
<form role="form" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-default pull-right" href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
{% endbuttons %}
|
||||
<form class="telechat-date" action="" method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a href="{% url "doc_view" name=doc.name %}">Back</a>
|
||||
<input type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
{% if prompts %}
|
||||
{% for prompt in prompts %}
|
||||
{# XXX FACELIFT: check what this is #}
|
||||
<div class="prompt">{{prompt}}</div>
|
||||
}
|
||||
{% endfor %}
|
||||
<div>
|
||||
{% for prompt in prompts %}
|
||||
<div class="prompt">{{prompt}}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,34 +1,78 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
{% comment %}
|
||||
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
|
||||
All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
* Neither the name of the Nokia Corporation and/or its
|
||||
subsidiary(-ies) nor the names of its contributors may be used
|
||||
to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
{% endcomment %}
|
||||
|
||||
{% block title %}IETF Datatracker{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
.ietf-main-title h1 { font-size:40px; font-weight:bold; margin-bottom:10px; margin-top:5px;}
|
||||
td.ietf-main-logo { padding: 8px; }
|
||||
.ietf-main-logo div { text-align:center; }
|
||||
td.ietf-main-search { width:650px; padding:8px; }
|
||||
td.ietf-main-intro { width:200px; background:#fff5df; padding:8px; border:1px solid #cccccc; }
|
||||
.ietf-main-intro li { padding-left:0; margin-left:0; }
|
||||
.ietf-main-intro ul { margin-left:5px; padding-left:10px; }
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="text-center">
|
||||
<img class="ietflogo" src="/facelift/images/ietflogo{% ifnotequal server_mode "production" %}-dev{% endifnotequal %}.png" alt="IETF">
|
||||
<h1>Datatracker</h1>
|
||||
{% ifnotequal server_mode "production" %}
|
||||
<p>Development Mode<p>
|
||||
{% endifnotequal %}
|
||||
</div>
|
||||
</div>
|
||||
<table>
|
||||
<tr valign="middle">
|
||||
<td colspan="2" class="ietf-main-title"><h1>IETF Datatracker</h1></td>
|
||||
<td class="ietf-main-logo"><div><img src="/images/ietflogo.png" width="140" alt=""/></div></td>
|
||||
</tr>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-4 col-sm-push-8">
|
||||
<h2>About</h2>
|
||||
<p>The IETF Datatracker is the IETF's web system for managing organizational information, such as:</p>
|
||||
<ul>
|
||||
<li><a href="{% url "doc_search" %}">Internet-Drafts (I-Ds) and Requests for Comments (RFCs)</a></li>
|
||||
<li><a href="/ipr/">IPR disclosures</a></li>
|
||||
<li><a href="/liaison/">Liaison statements</a></li>
|
||||
<li><a href="/meeting/agenda/">Meeting agendas</a> and <a href="/meeting/">session agendas, slides and minutes</a></li>
|
||||
<li><a href="/iesg/agenda/">IESG telechat agendas</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-8 col-sm-pull-4">
|
||||
<h2>Search Documents</h2>
|
||||
{% include "doc/search/search_form.html" %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<tr valign="top"><td class="ietf-box ietf-main-search">
|
||||
<h1>Search Internet-Drafts and RFCs</h1>
|
||||
{% include "doc/search/search_form.html" %}
|
||||
</td>
|
||||
<td style="width:8px;"> </td>
|
||||
<td class="ietf-main-intro">
|
||||
The IETF Datatracker is the IETF's web system for managing information
|
||||
about:
|
||||
<ul>
|
||||
<li><a href="{% url "doc_search" %}">Internet-Drafts and RFCs</a></li>
|
||||
<li><a href="/ipr/">IPR disclosures</a></li>
|
||||
<li><a href="/liaison/">Liaison statements</a></li>
|
||||
<li><a href="/meeting/agenda/">Meeting agenda</a> and <a href="/meeting/">session agendas/slides/minutes</a></li>
|
||||
<li><a href="/iesg/agenda/">IESG telechat agenda</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% endblock content %}
|
||||
|
||||
{% block js %}
|
||||
<script type="text/javascript" src="/js/utils.js"></script>
|
||||
<script type="text/javascript" src="/js/doc-search.js"></script>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block morecss %}
|
||||
.contents { max-width: 50em; }
|
||||
.contents a { float: left; width: 7em; margin-right: 2em; }
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Active Internet-Drafts{% endblock %}
|
||||
|
||||
|
@ -13,24 +18,19 @@ group. For normal use, it is recommended to use the
|
|||
Internet-Drafts</a> (that page also lists some machine-readable files
|
||||
for download).</p>
|
||||
|
||||
<p class="buttonlist">
|
||||
{% for group in groups %}
|
||||
<a class="btn btn-default btn-xs" href="#{{ group.acronym }}">{{ group.acronym }}</a>
|
||||
{% endfor %}
|
||||
<p class="contents">
|
||||
{% for group in groups %}<a href="#{{ group.acronym }}">{{ group.acronym }}</a> {% endfor %}
|
||||
</p>
|
||||
|
||||
<div style="clear:left"></div>
|
||||
|
||||
{% for group in groups %}
|
||||
<h2 id="{{ group.acronym }}">{{ group.name }} ({{ group.acronym }})</h2>
|
||||
{% for d in group.active_drafts %}
|
||||
<p>
|
||||
<b>{{ d.title }}.</b><br>
|
||||
{% for a in d.authors %}
|
||||
{{ a }}{% if not forloop.last %}, {% else %}.{% endif %}
|
||||
{% endfor %}
|
||||
<br><a href="/doc/{{ d.name }}/">{{ d.name }}-{{ d.rev }}</a>
|
||||
<br>{{ d.rev_time|date:"Y-m-d" }}
|
||||
</p>
|
||||
{% endfor %}
|
||||
<h2 id="{{ group.acronym }}">{{ group.name }} ({{ group.acronym }})</h2>
|
||||
{% for d in group.active_drafts %}
|
||||
<p>{{ d.title }}<br>
|
||||
{% for a in d.authors %}{{ a }}{% if not forloop.last %}, {% endif %}{% endfor %}<br>
|
||||
<a href="/doc/{{ d.name }}/">{{ d.name }}-{{ d.rev }}</a> ({{ d.rev_time|date:"Y-m-d" }})</p>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Index of all Internet-Drafts and RFCs{% endblock %}
|
||||
|
||||
|
@ -10,16 +10,16 @@ this page is to ensure all pages can be found by search engines. For
|
|||
normal use, it is recommended to use the <a href="{% url "doc_search" %}">search
|
||||
page</a>.</p>
|
||||
|
||||
<p>There is also an <a href="{% url "index_active_drafts" %}">index of
|
||||
<p>There's also an <a href="{% url "index_active_drafts" %}">index of
|
||||
active Internet-Drafts</a> with more information.</p>
|
||||
|
||||
<p>In addition, the following files are available for download:</p>
|
||||
<ul>
|
||||
<li><a href="http://www.ietf.org/id/1id-index.txt">Active Internet-Drafts (text)</a></li>
|
||||
<li><a href="http://www.ietf.org/id/1id-abstracts.txt">Active Internet-Drafts with abstracts (text)</a></li>
|
||||
<li><a href="http://www.ietf.org/id/all_id2.txt">All Internet-Drafts (tab-separated)</a>, <a href="http://www.ietf.org/id/all_id.txt">older version (with fewer fields)</a></li>
|
||||
<li><a href="http://www.rfc-editor.org/rfc/rfc-index.txt">All RFCs (text)</a></li>
|
||||
<li><a href="http://www.rfc-editor.org/rfc/rfc-index.xml">All RFCs (XML)</a></li>
|
||||
<li><a href="http://www.ietf.org/id/1id-index.txt">Active Internet-Drafts (text)</a></li>
|
||||
<li><a href="http://www.ietf.org/id/1id-abstracts.txt">Active Internet-Drafts with abstracts (text)</a></li>
|
||||
<li><a href="http://www.ietf.org/id/all_id2.txt">All Internet-Drafts (tab-separated)</a>, <a href="http://www.ietf.org/id/all_id.txt">older version (with fewer fields)</a></li>
|
||||
<li><a href="http://www.rfc-editor.org/rfc/rfc-index.txt">All RFCs (text)</a></li>
|
||||
<li><a href="http://www.rfc-editor.org/rfc/rfc-index.xml">All RFCs (XML)</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Contents</h2>
|
||||
|
@ -28,13 +28,14 @@ active Internet-Drafts</a> with more information.</p>
|
|||
|
||||
<ul>
|
||||
{% for state, heading, count, _ in categories %}
|
||||
<li><a href="#{{ state.slug }}">{{ heading }} ({{ count }})</a></li>
|
||||
<li><a href="#{{ state.slug }}">{{ heading }} ({{ count }})</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% for state, heading, count, links in categories %}
|
||||
<h2 id="{{ state.slug }}">{{ heading }} ({{ count }})</h2>
|
||||
<p class="links">{{ links|safe }}</p>
|
||||
<h3 id="{{ state.slug }}">{{ heading }} ({{ count }})</h3>
|
||||
|
||||
<p class="links">{{ links|safe }}</p>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,27 +1,29 @@
|
|||
{% extends "ietf.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Document relationships{% endblock %}
|
||||
{% block title %}Document Relationships{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
.ietf-table .name { white-space: nowrap; padding-right: 1em; }
|
||||
.ietf-table .desc { max-width: 35em; }
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Document relationships</h1>
|
||||
<h1>Document Relationships</h1>
|
||||
|
||||
<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Relationship</th>
|
||||
<th>Description</th>
|
||||
<th>Inverse relationship</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for rel in relations %}
|
||||
<tr id="{{ rel.slug }}">
|
||||
<td class="name">{{ rel.name }}</td>
|
||||
<td class="desc">{{ rel.desc|linebreaksbr }}</td>
|
||||
<td class="revname">{{ rel.revname }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<table class="ietf-table">
|
||||
<tr>
|
||||
<th>Relationship</th>
|
||||
<th>Description</th>
|
||||
<th>Inverse Relationship</th>
|
||||
</tr>
|
||||
|
||||
{% for rel in relations %}
|
||||
<tr id="{{ rel.slug }}" class="{{ forloop.counter|divisibleby:2|yesno:"evenrow,oddrow" }}">
|
||||
<td class="name">{{ rel.name }}</td>
|
||||
<td class="desc">{{ rel.desc|linebreaksbr }}</td>
|
||||
<td class="revname">{{ rel.revname }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue