Summary: Port remaining IPR list pages obviating the need for ipr.css, fix some layout issues

- Legacy-Id: 8926
This commit is contained in:
Ole Laursen 2015-01-27 16:11:55 +00:00
parent d3b56c2644
commit 7e736e06ff
18 changed files with 137 additions and 227 deletions

View file

@ -245,23 +245,27 @@ def add_email(request, id):
return render(request, 'ipr/add_email.html',dict(ipr=ipr,form=form))
@role_required('Secretariat',)
def admin(request,state):
def admin(request, state):
"""Administrative disclosure listing. For non-posted disclosures"""
if state == 'removed':
states = ('removed','rejected')
else:
states = [state]
states = IprDisclosureStateName.objects.filter(slug__in=[state, "rejected"] if state == "removed" else [state])
if not states:
raise Http404
iprs = IprDisclosureBase.objects.filter(state__in=states).order_by('-time')
tabs = [('Pending','pending',urlreverse('ipr_admin',kwargs={'state':'pending'}),True),
('Removed','removed',urlreverse('ipr_admin',kwargs={'state':'removed'}),True),
('Parked','parked',urlreverse('ipr_admin',kwargs={'state':'parked'}),True)]
template = 'ipr/admin_' + state + '.html'
return render(request, template, {
tabs = [
t + (t[0].lower() == state.lower(),)
for t in [
('Pending', urlreverse('ipr_admin', kwargs={'state':'pending'})),
('Removed', urlreverse('ipr_admin', kwargs={'state':'removed'})),
('Parked', urlreverse('ipr_admin', kwargs={'state':'parked'})),
]]
return render(request, 'ipr/admin_list.html', {
'iprs': iprs,
'tabs': tabs,
'selected': state
'states': states,
'administrative_list': state,
})
@role_required('Secretariat',)

View file

@ -1,30 +0,0 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% block title %}IPR Admin{% endblock %}
{% block pagehead %}
<link rel="stylesheet" type="text/css" href="/css/ipr.css"></link>
{% endblock %}
{% block content %}
{% load ietf_filters %}
<h1>IPR Admin Page</h1>
<a href="{% url "ietf.ipr.views.showlist" %}">Back to IPR Disclosure Page</a><br><br>
<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>
</div>
{% block tab_content %}
{% endblock %} <!-- tab_content -->
{% endblock %}

View file

@ -1,33 +0,0 @@
{% load ietf_filters %}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
<tr class="{{ forloop.counter|divisibleby:2|yesno:"oddrow,evenrow" }}">
<td class="date-column">{{ ipr.time|date:"Y-m-d" }}</td>
<td class="id-column">{{ ipr.id }}</td>
<td class="title-column">
<a href="{% url "ietf.ipr.views.show" ipr.id %}">{{ ipr.title }}</a>
<br />
{% for item in ipr.relatedipr_source_set.all %}
{% if item.target.state_id == 'posted' %}
Updates ID <a href="{% url "ietf.ipr.views.show" item.target.id %}">#{{ item.target.id }}</a>.<br/>
{% endif %}
{% endfor %}
{% for item in ipr.relatedipr_target_set.all %}
{% comment %}{% if item.processed == 1 and item.ipr.status != 2 %}{% endcomment %}
{% if item.source.state_id == "posted" %}
Updated by ID <a href="{% url "ietf.ipr.views.show" item.source.id %}">#{{ item.source.id }}</a>.<br/>
{% endif %}
{% endfor %}
</td>
{% if selected == 'pending' %}
<td class="column-four">{{ ipr.get_latest_event_msgout.time|date:"Y-m-d" }}</td>
<td class="column-five">
{% if ipr.get_latest_event_msgout.response_due %}
{{ ipr.get_latest_event_msgout.response_due|date:"Y-m-d" }}
{% if ipr.get_latest_event_msgout.response_past_due %}
<img src="/images/warning.png" title="Response overdue"/>
{% endif %}
{% endif %}
</td>
{% endif %}
</tr>

View file

@ -0,0 +1,22 @@
{% extends "ietf.html" %}
{% load ietf_filters %}
{% block title %}IPR Admin - {% for s in states %}{{ s.name }}{% if not forloop.last %}/{% endif %}{% endfor %} Disclosures{% endblock %}
{% block content %}
<h1>IPR Admin - {% for s in states %}{{ s.name }}{% if not forloop.last %}/{% endif %}{% endfor %} Disclosures</h1>
<p class="buttonlist">
<a class="btn btn-default" href="{% url "ietf.ipr.views.showlist" %}">Back to IPR Disclosure Page</a>
</p>
<ul class="nav nav-tabs" role="tablist">
{% for name, link, selected in tabs %}
<li {% if selected %}class="active"{% endif %}><a href="{{ link }}">{{ name }}</a></li>
{% endfor %}
</ul>
{% include "ipr/ipr_table.html" %}
{% endblock %}

View file

@ -1,16 +0,0 @@
{% extends "ipr/admin_base.html" %}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% load ietf_filters %}
{% block tab_content %}
<h2>Parked Disclosures</h2>
<table id="parked-iprs" class="ietf-table" width="820">
<tr><th class="date-column">Submitted</th><th class="id-column">ID #</th><th class="title-column">Title of IPR Disclosure</th></tr>
{% for ipr in iprs %}
{% include "ipr/admin_item.html" %}
{% endfor %}
</table>
{% endblock %} <!-- tab_content -->

View file

@ -1,16 +0,0 @@
{% extends "ipr/admin_base.html" %}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% load ietf_filters %}
{% block tab_content %}
<h2>Pending Disclosures</h2>
<table id="pending-iprs" class="ietf-table" width="820">
<tr><th class="date-column">Submitted</th><th class="id-column">ID #</th><th class="title-column">Title of IPR Disclosure</th><th>Query</th><th>Response Due</th></tr>
{% for ipr in iprs %}
{% include "ipr/admin_item.html" %}
{% endfor %}
</table>
{% endblock %} <!-- tab_content -->

View file

@ -1,16 +0,0 @@
{% extends "ipr/admin_base.html" %}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% load ietf_filters %}
{% block tab_content %}
<h2>Removed / Rejected Disclosures</h2>
<table id="removed-iprs" class="ietf-table" width="820">
<tr><th class="date-column">Submitted</th><th class="id-column">ID #</th><th class="title-column">Title of IPR Disclosure</th></tr>
{% for ipr in iprs %}
{% include "ipr/admin_item.html" %}
{% endfor %}
</table>
{% endblock %} <!-- tab_content -->

View file

@ -7,7 +7,6 @@
{% block pagehead %}
<link rel="stylesheet" href="/facelift/css/lib/select2.css">
<link rel="stylesheet" href="/facelift/css/lib/select2-bootstrap.css">
{# <link rel="stylesheet" type="text/css" href="/css/ipr.css"></link> #}
{% endblock %}
{% block content %}

View file

@ -0,0 +1,56 @@
{% load ietf_filters %}
<table class="table table-condensed table-striped">
<thead>
<tr>
<th class="date-column">Date</th>
<th class="id-column">ID</th>
<th class="title-column">Title</th>
{% if administrative_list == 'pending' %}
<th>Query</th>
<th>Response Due</th>
{% endif %}
</tr>
</thead>
<tbody>
{% for ipr in iprs %}
<tr>
<td class="date-column text-nowrap">{{ ipr.time|date:"Y-m-d" }}</td>
<td class="id-column nowrap">{{ ipr.id }}</td>
<td class="title-column">
{% if ipr.state_id == 'posted' or administrative_list %}
<div><a href="{% url "ietf.ipr.views.show" ipr.id %}">{{ ipr.title }}</a></div>
{% else %}
<div>{{ ipr.title }}</div>
<div><i>This IPR disclosure was removed at the request of the submitter.</i></div>
{% endif %}
{% for item in ipr.relatedipr_source_set.all %}
{% if item.target.state_id == 'posted' %}
<div>Updates ID <a href="{% url "ietf.ipr.views.show" item.target.id %}">#{{ item.target.id }}</a>.</div>
{% endif %}
{% endfor %}
{% for item in ipr.relatedipr_target_set.all %}
{% if item.source.state_id == "posted" %}
<div>Updated by ID <a href="{% url "ietf.ipr.views.show" item.source.id %}">#{{ item.source.id }}</a>.<div>
{% endif %}
{% endfor %}
</td>
{% if administrative_list == 'pending' %}
{% with ipr.get_latest_event_msgout as latest_msgout %}
<td class="column-four">{% if latest_msgout %}{{ latest_msgout.time|date:"Y-m-d" }}{% endif %}</td>
<td class="text-nowrap">
{% if latest_msgout and latest_msgout.response_due %}
{{ latest_msgout.response_due|date:"Y-m-d" }}
{% if latest_msgout.response_past_due %}
<span class="glyphicon glyphicon-exclamation-sign" title="Response overdue"></span>
{% endif %}
{% endif %}
</td>
{% endwith %}
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>

View file

@ -6,83 +6,53 @@
{% block bodyAttrs %}data-spy="scroll" data-target="#affix"{% endblock %}
{% block pagehead %}
<link rel="stylesheet" type="text/css" href="/css/ipr.css"></link>
{% endblock %}
{% block content %}
<div class="row">
<div class="col-sm-10">
<div class="row">
<div class="col-sm-10">
<h1>Intellectual property rights disclosures</h1>
<h1>Intellectual property rights disclosures</h1>
<div class="alert alert-info">
<div class="alert alert-info">
<p>
This page provides a mechanism for filing disclosures about intellectual property rights (IPR) and for finding out what IPR disclosures have been filed. The IETF intellectual property rights rules are defined in RFC 3979, <a href="http://www.ietf.org/rfc/rfc3979.txt">"Intellectual Property Rights in IETF Technology."</a>
This page provides a mechanism for filing disclosures about intellectual property rights (IPR) and for finding out what IPR disclosures have been filed. The IETF intellectual property rights rules are defined in RFC 3979, <a href="http://www.ietf.org/rfc/rfc3979.txt">"Intellectual Property Rights in IETF Technology."</a>
</p>
<p>
The IETF takes no position regarding the validity or scope of any
intellectual property rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in any IETF documents or the extent to
which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights.
The IETF takes no position regarding the validity or scope of any
intellectual property rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in any IETF documents or the extent to
which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights.
</p>
</div>
</div>
<p class="buttonlist">
<p class="buttonlist">
<a class="btn btn-default" href="{% url "ietf.ipr.views.about" %}">Submit an IPR disclosure</a>
<a class="btn btn-default" href="{% url "ietf.ipr.views.search" %}">Search IPR disclosures</a>
{% if user|has_role:"Secretariat" %}
<a class="btn btn-default" href="{% url "ipr_admin_main" %}">Administrative View</a>
<a class="btn btn-default" href="{% url "ipr_admin_main" %}">Administrative View</a>
{% endif %}
</p>
</p>
<h2 id="generic">Generic IPR disclosures</h2>
<table class="table table-condensed table-striped">
<thead>
<tr><th class="date-column">Date</th><th class="id-column">ID</th><th class="title-column">Title</th></tr>
</thead>
<tbody>
{% for ipr in generic_disclosures %}
{% include "ipr/list_item.html" %}
{% endfor %}
</tbody>
</table>
<h2 id="generic">Generic IPR disclosures</h2>
<h2 id="specific">Specific IPR disclosures</h2>
<table class="table table-condensed table-striped">
<thead>
<tr><th class="date-column">Date</th><th class="id-column">ID</th><th class="title-column">Title</th></tr>
</thead>
<tbody>
{% for ipr in specific_disclosures %}
{% include "ipr/list_item.html" %}
{% endfor %}
</tbody>
</table>
{% include "ipr/ipr_table.html" with iprs=generic_disclosures %}
<h2 id="notify">Specific third-party IPR disclosures</h2>
<table class="table table-condensed table-striped">
<thead>
<tr><th class="date-column">Date</th><th class="id-column">ID</th><th class="title-column">Title</th></tr>
</thead>
<tbody>
{% for ipr in thirdpty_disclosures %}
{% include "ipr/list_item.html" %}
{% endfor %}
</tbody>
</table>
<h2 id="specific">Specific IPR disclosures</h2>
</div>
<div class="col-sm-2 hidden-print bs-docs-sidebar" id="affix">
<ul class="nav nav-pills nav-stacked small" data-spy="affix">
<li><a href="#generic">Generic IPR disclosures</a></li>
<li><a href="#specific">Specific IPR disclosures</a></li>
<li><a href="#notify">Specific third-party IPR disclosures</a></li>
</ul>
</div>
</div>
{% include "ipr/ipr_table.html" with iprs=specific_disclosures %}
<h2 id="notify">Specific third-party IPR disclosures</h2>
{% include "ipr/ipr_table.html" with iprs=thirdpty_disclosures %}
</div>
<div class="col-sm-2 hidden-print bs-docs-sidebar" id="affix">
<ul class="nav nav-pills nav-stacked small" data-spy="affix">
<li><a href="#generic">Generic IPR disclosures</a></li>
<li><a href="#specific">Specific IPR disclosures</a></li>
<li><a href="#notify">Specific third-party IPR disclosures</a></li>
</ul>
</div>
</div>
{% endblock %}

View file

@ -1,24 +0,0 @@
{% load ietf_filters %}
<tr>
<td class=" date-column text-nowrap">{{ ipr.time|date:"Y-m-d" }}</td>
<td class="id-column nowrap text-right">{{ ipr.id }}</td>
<td class="title-column">
{% if ipr.state_id == 'posted' %}
<a href="{% url "ietf.ipr.views.show" ipr.id %}">{{ ipr.title }}</a>
{% else %}
{{ ipr.title }}
<br/><i>This IPR disclosure was removed at the request of the submitter.</i>
{% endif %}
{% for item in ipr.relatedipr_source_set.all %}
{% if item.target.state_id == 'posted' %}
Updates ID <a href="{% url "ietf.ipr.views.show" item.target.id %}">#{{ item.target.id }}</a>.<br/>
{% endif %}
{% endfor %}
{% for item in ipr.relatedipr_target_set.all %}
{% if item.source.state_id == "posted" %}
Updated by ID <a href="{% url "ietf.ipr.views.show" item.source.id %}">#{{ item.source.id }}</a>.<br/>
{% endif %}
{% endfor %}
</td>
</tr>

View file

@ -1,9 +1,5 @@
{% extends "ietf.html" %}
{% block pagehead %}
<link rel="stylesheet" type="text/css" href="/css/ipr.css"></link>
{% endblock %}
{% block title %}IPR search{% endblock %}
{% block content %}

View file

@ -19,7 +19,7 @@
{% for ipr in iprs %}
<tr>
<td class="text-nowrap">{{ ipr.time|date:"Y-m-d" }}</td>
<td class="text-right">{{ ipr.id }}</td>
<td>{{ ipr.id }}</td>
<td><a href="{% url "ietf.ipr.views.show" id=ipr.id %}">{{ ipr.title }}</a></td>
</tr>
{% endfor %}
@ -50,7 +50,7 @@
{% if ipr.disclosure.state_id in states %}
<tr>
<td class="text-nowrap">{{ ipr.disclosure.time|date:"Y-m-d" }}</td>
<td class="text-right">{{ ipr.disclosure.id }}</td>
<td>{{ ipr.disclosure.id }}</td>
<td><a href="{% url "ietf.ipr.views.show" id=ipr.disclosure.id %}">{{ ipr.disclosure.title }}</a></td>
</tr>
{% endif %}

View file

@ -24,7 +24,7 @@
{% for ipr in alias.document.ipr %}
<tr>
<td class="text-nowrap">{{ ipr.disclosure.time|date:"Y-m-d" }}</td>
<td class="text-right">{{ ipr.disclosure.id }}</td>
<td>{{ ipr.disclosure.id }}</td>
<td>
{% for item in ipr.disclosure.updated_by.all %}
{% if item.source.state_id == "posted" %}

View file

@ -2,7 +2,7 @@
<h1>IPR Search</h1>
<form class="ipr-search" role="form">
<form class="ipr-search clearfix" role="form">
{% if user|has_role:"Secretariat" %}
<div class="col-md-12">
<h2>State Filter</h2>

View file

@ -4,10 +4,6 @@
{% block title %}IPR disclosures{% endblock %}
{% block pagehead %}
<link rel="stylesheet" type="text/css" href="/css/ipr.css"></link>
{% endblock %}
{% block content %}
{% include "ipr/search_form.html" %}
@ -24,7 +20,7 @@
</p>
<table class="table table-condensed table-striped">
<thead><th>Date</th><th>ID</th><th>Statement</th></thead>
<thead><th>Date</th><th>ID</th><th>Statement</th></thead>
{% block iprlist %}
{% for ipr in iprs %}
@ -53,7 +49,7 @@
<tr>
<td class="text-nowrap">{{ ipr.time|date:"Y-m-d" }}</td>
<td class="text-right">{{ ipr.id }}</td>
<td>{{ ipr.id }}</td>
<td><a href="{% url "ietf.ipr.views.show" id=ipr.id %}">{{ ipr.title }}</a></td>
</tr>
@ -61,7 +57,7 @@
{% if item != ipr %}
<tr>
<td class="text-nowrap">{{ item.target.time|date:"Y-m-d" }}</td>
<td class="text-nowrap">#{{ item.target.id }}</td>
<td>{{ item.target.id }}</td>
<td>
IPR disclosure #{{ ipr.id }}: <a href="{% url "ietf.ipr.views.show" id=ipr.id %}">{{ ipr.title }}</a>
<br>Updates: <a href="{% url "ietf.ipr.views.show" id=item.id %}">{{ item.target.title }}</a>

View file

@ -26,7 +26,7 @@
{% for ipr in alias.document.ipr %}
<tr>
<td class="text-nowrap">{{ ipr.disclosure.time|date:"Y-m-d" }}</td>
<td class="text-right">{{ ipr.disclosure.id }}</td>
<td>{{ ipr.disclosure.id }}</td>
<td>
{% for item in ipr.disclosure.updates.all %}
{% if item.target.state_id == "posted" %}

View file

@ -1,5 +1,7 @@
$(document).ready(function() {
// hack the "All States" check box
$("#id_state").addClass("list-inline");
$("#id_state input[value!=all]").change(function(e) {
if (this.checked) {
$("#id_state input[value=all]").prop('checked',false);