summaryrefslogtreecommitdiff
path: root/templates
diff options
context:
space:
mode:
Diffstat (limited to 'templates')
-rw-r--r--templates/base.html8
-rw-r--r--templates/devel/clock.html33
-rw-r--r--templates/devel/index.html36
-rw-r--r--templates/devel/packages.html35
-rw-r--r--templates/devel/profile.html14
-rw-r--r--templates/feeds/news_description.html3
-rw-r--r--templates/mirrors/mirror_details.html32
-rw-r--r--templates/mirrors/mirrorlist.txt2
-rw-r--r--templates/mirrors/mirrorlist_generate.html2
-rw-r--r--templates/mirrors/mirrorlist_status.txt2
-rw-r--r--templates/mirrors/mirrors.html9
-rw-r--r--templates/mirrors/status.html18
-rw-r--r--templates/mirrors/status_table.html3
-rw-r--r--templates/news/list.html4
-rw-r--r--templates/news/paginator.html10
-rw-r--r--templates/news/view.html20
-rw-r--r--templates/packages/details.html65
-rw-r--r--templates/packages/details_depend.html28
-rw-r--r--templates/packages/details_relatedto.html2
-rw-r--r--templates/packages/details_requiredby.html15
-rw-r--r--templates/packages/differences.html11
-rw-r--r--templates/packages/files.html6
-rw-r--r--templates/packages/flaghelp.html21
-rw-r--r--templates/packages/groups.html3
-rw-r--r--templates/packages/opensearch.xml17
-rw-r--r--templates/packages/packages_list.html3
-rw-r--r--templates/packages/removed.html27
-rw-r--r--templates/packages/search.html22
-rw-r--r--templates/packages/search_paginator.html8
-rw-r--r--templates/packages/signoffs.html14
-rw-r--r--templates/packages/stale_relations.html3
-rw-r--r--templates/public/developer_list.html20
-rw-r--r--templates/public/donate.html22
-rw-r--r--templates/public/download.html134
-rw-r--r--templates/public/feeds.html36
-rw-r--r--templates/public/index.html87
-rw-r--r--templates/public/keys.html56
-rw-r--r--templates/public/userlist.html3
-rw-r--r--templates/registration/login.html11
-rw-r--r--templates/releng/add.html1
-rw-r--r--templates/releng/iso_overview.html4
-rw-r--r--templates/releng/release_detail.html46
-rw-r--r--templates/releng/release_list.html54
-rw-r--r--templates/releng/result_list.html6
-rw-r--r--templates/releng/result_section.html3
-rw-r--r--templates/releng/results.html1
-rw-r--r--templates/releng/thanks.html1
-rw-r--r--templates/todolists/email_notification.txt2
-rw-r--r--templates/todolists/list.html18
-rw-r--r--templates/todolists/public_list.html76
-rw-r--r--templates/todolists/view.html84
-rw-r--r--templates/visualize/index.html8
52 files changed, 682 insertions, 467 deletions
diff --git a/templates/base.html b/templates/base.html
index f555b83d..5702c8e0 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,15 +1,15 @@
-{% load url from future %}{% load static from staticfiles %}{% load wiki %}<!DOCTYPE html>
+{% load static from staticfiles %}{% load wiki %}<!DOCTYPE html>
<html lang="en">
<head>
+ <meta charset="utf-8" />
<title>{% block title %}{{ BRANDING_DISTRONAME }}{% endblock %}</title>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="{% static "archweb.css" %}" media="screen, projection" />
- <link rel="stylesheet" type="text/css" href="{% static "archweb-print.css" %}" media="print" />
<link rel="icon" type="image/x-icon" href="{% static "favicon.ico" %}" />
<link rel="shortcut icon" type="image/x-icon" href="{% static "favicon.ico" %}" />
<link rel="apple-touch-icon" href="{% static "logos/apple-touch-icon-57x57.png" %}" />
<link rel="apple-touch-icon" sizes="72x72" href="{% static "logos/apple-touch-icon-72x72.png" %}" />
<link rel="apple-touch-icon" sizes="114x114" href="{% static "logos/apple-touch-icon-114x114.png" %}" />
+ <link rel="apple-touch-icon" sizes="144x144" href="{% static "logos/apple-touch-icon-144x144.png" %}" />
<link rel="search" type="application/opensearchdescription+xml" href="{% url 'opensearch-packages' as osp %}{{ osp }}" title="{{ BRANDING_DISTRONAME }} Packages" />
{% block head %}{% endblock %}
</head>
@@ -41,7 +41,6 @@
<li><a href="{% url 'devel-clocks' %}" title="Developer world clocks">Dev Clocks</a></li>
<li><a href="{{ MAILMAN_BASE_URL }}/mailman/private/arch-dev/"
title="arch-dev mailing list archives">Archives</a></li>
- <li><a href="/mirrors/" title="Mirror server statistics">Mirrors</a></li>
<li><a href="https://stats.archlinux.org/munin/"
title="Arch server monitoring">Server Monitoring</a></li>
{% if user.is_staff %}
@@ -82,5 +81,6 @@
the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis.</p>
</div>
</div>
+ {% block script_block %}{% endblock %}
</body>
</html>
diff --git a/templates/devel/clock.html b/templates/devel/clock.html
index 409ba24c..a7bc7315 100644
--- a/templates/devel/clock.html
+++ b/templates/devel/clock.html
@@ -1,9 +1,12 @@
{% extends "base.html" %}
{% load static from staticfiles %}
+{% load flags %}
{% load tz %}
{% block title %}{{ BRANDING_DISTRONAME }} - Developer World Clocks{% endblock %}
+{% block head %}<link rel="stylesheet" type="text/css" href="{% static "flags/fam.css" %}" media="screen, projection" />{% endblock %}
+
{% block content %}
<div id="dev-clocks-box" class="box">
<h2>Developer World Clocks</h2>
@@ -11,8 +14,19 @@
<p>This page helps prevent you from waking a sleeping developer. It also
depends on developers keeping the time zone information up to date, so if
you see 'UTC' listed, pester them to update their settings.</p>
+ <p>The "Last Action" column shows the last time this developer has done
+ something we know about. Considered dates for each developer include:</p>
+ <ul>
+ <li>Build date of a package in the repositories</li>
+ <li>Last login to the developer side of this site</li>
+ <li>Admin log entry on this site (e.g., adding a donor, modifying a
+ mirror)</li>
+ <li>Post date of a news item</li>
+ <li>Signing off on a package</li>
+ <li>Flagging a package out-of-date</li>
+ </ul>
<p>
- UTC Time: {{ utc_now|date:"Y-m-d H:i T" }}
+ Current UTC Time: {{ utc_now|date:"Y-m-d H:i T" }}
</p>
<table id="clocks-table" class="results">
@@ -21,6 +35,7 @@
<th>Developer</th>
<th>Username</th>
<th>Alias</th>
+ <th>Last Action</th>
<th>Location</th>
<th>Time Zone</th>
<th>Current Time</th>
@@ -32,21 +47,25 @@
<td><a href="mailto:{{ dev.email }}">{{ dev.get_full_name }}</a></td>
<td>{{ dev.username }}</td>
<td>{{ dev.userprofile.alias }}</td>
- <td>{% if dev.userprofile.country %}<img src="{{ dev.userprofile.country.flag }}" alt="{{ dev.userprofile.country.name }}"/> {% endif %}{{ dev.userprofile.location }}</td>
+ <td>{{ dev.last_action }}</td>
+ <td>{% country_flag dev.userprofile.country %}{{ dev.userprofile.location }}</td>
<td>{{ dev.userprofile.time_zone }}</td>
- <td>{{ utc_now|timezone:dev.userprofile.time_zone|date:"Y-m-d H:i T" }}</td>
+ <td>{{ utc_now|timezone:dev.userprofile.time_zone|date:"Y-m-d H:i T" }}<span class="hide"> {{ dev.userprofile.time_zone }}</span></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
- $("#clocks-table:has(tbody tr)").tablesorter(
- {widgets: ['zebra'], sortList: [[0,0]]});
+ $("#clocks-table:has(tbody tr)").tablesorter({
+ widgets: ['zebra'],
+ sortLocaleCompare: true,
+ sortList: [[0,0]],
+ headers: { 4: { sorter: false } }
+ });
});
</script>
{% endblock %}
diff --git a/templates/devel/index.html b/templates/devel/index.html
index a7ffe0e2..b2dfe077 100644
--- a/templates/devel/index.html
+++ b/templates/devel/index.html
@@ -2,6 +2,7 @@
{% load static from staticfiles %}
{% load cache %}
{% load package_extras %}
+{% load todolists %}
{% block title %}{{ BRANDING_DISTRONAME }} - Developer Dashboard{% endblock %}
@@ -39,7 +40,7 @@
<td>{{ pkg.last_update|date }}</td>
</tr>
{% empty %}
- <tr class="empty"><td colspan="6"><em>No flagged packages to display</em></td></tr>
+ <tr class="empty"><td colspan="7"><em>No flagged packages to display</em></td></tr>
{% endfor %}
</tbody>
</table>
@@ -59,11 +60,11 @@
<tbody>
{% for todopkg in todopkgs %}
<tr class="{% cycle 'odd' 'even' %}">
- <td><a href="{{ todopkg.list.get_absolute_url }}"
- title="View todo list: {{ todopkg.list.name }}">{{ todopkg.list.name }}</a></td>
- <td>{% pkg_details_link todopkg.pkg %}</td>
- <td>{{ todopkg.pkg.repo.name }}</td>
- <td>{{ todopkg.pkg.arch.name }}</td>
+ <td><a href="{{ todopkg.todolist.get_absolute_url }}"
+ title="View todo list: {{ todopkg.todolist.name }}">{{ todopkg.todolist.name }}</a></td>
+ <td>{% todopkg_details_link todopkg %}</td>
+ <td>{{ todopkg.repo.name }}</td>
+ <td>{{ todopkg.arch.name }}</td>
<td>{{ todopkg.pkg.maintainers|join:', ' }}</td>
</tr>
{% empty %}
@@ -90,7 +91,7 @@
<tr class="{% cycle 'odd' 'even' %}">
<td><a href="{{ todo.get_absolute_url }}"
title="View todo list: {{ todo.name }}">{{ todo.name }}</a></td>
- <td>{{ todo.date_added|date }}</td>
+ <td>{{ todo.created|date }}</td>
<td>{{ todo.creator.get_full_name }}</td>
<td class="wrap">{{ todo.description|urlize }}</td>
<td>{{ todo.pkg_count }}</td>
@@ -194,10 +195,10 @@
<td>{{ arch.name }}</td>
<td><a href="/packages/?arch={{ arch.name }}"
title="View all packages for the {{ arch.name }} architecture">
- <strong>{{ arch.packages.count }}</strong> packages</a></td>
+ <strong>{{ arch.total_ct }}</strong> packages</a></td>
<td><a href="/packages/?arch={{ arch.name }}&amp;flagged=Flagged"
title="View all flagged packages for the {{ arch.name }} architecture">
- <strong>{{ arch.packages.flagged.count }}</strong> packages</a></td>
+ <strong>{{ arch.flagged_ct }}</strong> packages</a></td>
</tr>
{% endfor %}
</tbody>
@@ -216,6 +217,7 @@
<th class="key">Repository</th>
<th># Packages</th>
<th># Flagged</th>
+ <th># Maintainers</th>
</tr>
</thead>
<tbody>
@@ -224,10 +226,12 @@
<td>{{ repo.name }}</td>
<td><a href="/packages/?repo={{ repo.name }}"
title="View all packages in the {{ repo.name }} repository">
- <strong>{{ repo.packages.count }}</strong> packages</a></td>
+ <strong>{{ repo.total_ct }}</strong> packages</a></td>
<td><a href="/packages/?repo={{ repo.name }}&amp;flagged=Flagged"
title="View all flagged packages in the {{ repo.name }} repository">
- <strong>{{ repo.packages.flagged.count }}</strong> packages</a></td>
+ <strong>{{ repo.flagged_ct }}</strong> packages</a></td>
+ <td><strong>{{ repo.maintainer_ct }}</strong> maintainers</td>
+ </tr>
</tr>
{% endfor %}
</tbody>
@@ -291,8 +295,7 @@
</div>{# #dash-by-developer #}
{% endcache %}
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
@@ -307,11 +310,14 @@ $(document).ready(function() {
sortList: [[0,0]],
headers: { 6: {sorter: false } }
});
- $(".dash-stats").tablesorter({
+ var settings = {
widgets: ['zebra'],
sortList: [[0,0]],
headers: { 1: { sorter: 'pkgcount' }, 2: { sorter: 'pkgcount' }, 3: { sorter: 'pkgcount' } }
- });
+ };
+ $(".dash-stats").not($("#stats-by-maintainer")).tablesorter(settings);
+ settings['sortLocaleCompare'] = true;
+ $("#stats-by-maintainer").tablesorter(settings);
});
</script>
{% endblock %}
diff --git a/templates/devel/packages.html b/templates/devel/packages.html
index 77146891..0aed22f4 100644
--- a/templates/devel/packages.html
+++ b/templates/devel/packages.html
@@ -13,7 +13,28 @@
{% if maintainer %}This report only includes packages maintained by
{{ maintainer.get_full_name }} ({{ maintainer.username }}).{% endif %}
</p>
- <table class="results">
+
+ <div class="box filter-criteria">
+ <h3>Filter Packages</h3>
+ <form id="report_filter" method="post" action=".">
+ <fieldset>
+ <legend>Select filter criteria</legend>
+ {% for arch in arches %}
+ <div><label for="id_arch_{{ arch.name }}" title="Architecture {{ arch.name }}">Arch {{ arch.name }}</label>
+ <input type="checkbox" name="arch_{{ arch.name }}" id="id_arch_{{ arch.name }}" class="arch_filter" value="{{ arch.name }}" checked="checked"/></div>
+ {% endfor %}
+ {% for repo in repos %}
+ <div><label for="id_repo_{{ repo.name|lower }}" title="Target Repository {{ repo.name }}">[{{ repo.name|lower }}]</label>
+ <input type="checkbox" name="repo_{{ repo.name|lower }}" id="id_repo_{{ repo.name|lower }}" class="repo_filter" value="{{ repo.name|lower }}" checked="checked"/></div>
+ {% endfor %}
+ <div ><label>&nbsp;</label><input title="Reset search criteria" type="button" id="criteria_reset" value="Reset"/></div>
+ <div class="clear"></div>
+ <div id="filter-info"><span id="filter-count">{{ packages|length }}</span> packages displayed.</div>
+ </fieldset>
+ </form>
+ </div>
+
+ <table id="dev-report-results" class="results">
<thead>
<tr>
<th>Arch</th>
@@ -31,7 +52,7 @@
</thead>
<tbody>
{% for pkg in packages %}
- <tr class="{% cycle pkgr2,pkgr1 %}">
+ <tr class="{% cycle pkgr2,pkgr1 %} {{ pkg.arch.name }} {{ pkg.repo.name|lower }}">
<td>{{ pkg.arch.name }}</td>
<td>{{ pkg.repo.name|capfirst }}</td>
<td>{% pkg_details_link pkg %}</td>
@@ -52,12 +73,18 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".results").tablesorter({widgets: ['zebra']});
});
+$(document).ready(function() {
+ var filter_func = function() { filter_pkgs_list('#report_filter', '#dev-report-results tbody'); };
+ $('#report_filter input').change(filter_func);
+ $('#criteria_reset').click(function() { filter_pkgs_reset(filter_func); });
+ // fire function on page load to ensure the current form selections take effect
+ filter_func();
+});
</script>
{% endblock %}
diff --git a/templates/devel/profile.html b/templates/devel/profile.html
index 54a3771c..16057275 100644
--- a/templates/devel/profile.html
+++ b/templates/devel/profile.html
@@ -1,4 +1,6 @@
{% extends "base.html" %}
+{% load static from staticfiles %}
+
{% block title %}{{ BRANDING_DISTRONAME }} - Edit Profile{% endblock %}
{% block content %}
@@ -22,4 +24,16 @@
</form>
</div>
+
+{% load cdn %}{% jquery %}
+<script type="text/javascript" src="{% static "archweb.js" %}"></script>
+<script type="text/javascript">
+ modify_attributes({
+ '#id_email': {type: 'email'},
+ '#id_alias': {autocorrect: 'off', autocapitalize: 'off'},
+ '#id_public_email': {autocorrect: 'off', autocapitalize: 'off'},
+ '#id_website': {type: 'url'},
+ '#id_yob': {pattern: '[0-9]*'}
+ });
+</script>
{% endblock %}
diff --git a/templates/feeds/news_description.html b/templates/feeds/news_description.html
index e75d0af7..61ceedf3 100644
--- a/templates/feeds/news_description.html
+++ b/templates/feeds/news_description.html
@@ -1,3 +1,2 @@
-{% load markup %}
<p>{{obj.author.get_full_name}} wrote:</p>
-{{ obj.content|markdown }} \ No newline at end of file
+{{ obj.html }}
diff --git a/templates/mirrors/mirror_details.html b/templates/mirrors/mirror_details.html
index 76ab3d5b..18f72125 100644
--- a/templates/mirrors/mirror_details.html
+++ b/templates/mirrors/mirror_details.html
@@ -1,16 +1,18 @@
{% extends "base.html" %}
{% load static from staticfiles %}
{% load mirror_status %}
+{% load flags %}
{% block title %}{{ BRANDING_DISTRONAME }} - {{ mirror.name }} - Mirror Details{% endblock %}
+{% block head %}<link rel="stylesheet" type="text/css" href="{% static "flags/fam.css" %}" media="screen, projection" />{% endblock %}
+
{% block content %}
-<!-- TODO: ids and classes -->
-<div id="pkgdetails" class="box">
+<div class="box">
<h2>Mirror Details: {{ mirror.name }}</h2>
- <table id="pkginfo">
+ <table class="compact">
<tr>
<th>Name:</th>
<td>{{ mirror.name }}</td>
@@ -20,10 +22,6 @@
<td>{{ mirror.get_tier_display }}</td>
</tr>
<tr>
- <th>Country:</th>
- <td>{% if mirror.country %}<img src="{{ mirror.country.flag }}" alt=""/> {% endif %}{{ mirror.country.name|default:'Worldwide' }}</td>
- </tr>
- <tr>
<th>Has ISOs:</th>
<td>{{ mirror.isos|yesno|capfirst }}</td>
</tr>
@@ -78,6 +76,8 @@
<thead>
<tr>
<th>Mirror URL</th>
+ <th>Protocol</th>
+ <th>Country</th>
<th>IPv4</th>
<th>IPv6</th>
<th>Last Sync</th>
@@ -92,6 +92,8 @@
{% for m_url in urls %}
<tr class="{% cycle 'odd' 'even' %}">
<td>{% if m_url.protocol.is_download %}<a href="{{ m_url.url }}">{{ m_url.url }}</a>{% else %}{{ m_url.url }}{% endif %}</td>
+ <td>{{ m_url.protocol }}</td>
+ <td class="country">{% country_flag m_url.country %}{{ m_url.country.name }}</td>
<td>{{ m_url.has_ipv4|yesno|capfirst }}</td>
<td>{{ m_url.has_ipv6|yesno|capfirst }}</td>
<td>{{ m_url.last_sync|date:'Y-m-d H:i'|default:'unknown' }}</td>
@@ -104,15 +106,23 @@
{% endfor %}
</tbody>
</table>
+
+ <h3>Mirror Status Chart</h3>
+
+ <div id="visualize-mirror" class="visualize-chart"></div>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
+<script type="text/javascript" src="{% static "d3-3.0.6.min.js" %}"></script>
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
+<script type="text/javascript" src="{% static "mirror_status.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#available_urls:has(tbody tr)").tablesorter(
- {widgets: ['zebra'], sortList: [[0,0]],
- headers: { 6: { sorter: 'mostlydigit' }, 7: { sorter: 'mostlydigit' }, 8: { sorter: 'mostlydigit' } } });
+ {widgets: ['zebra'], sortList: [[1,0], [2,0]],
+ headers: { 8: { sorter: 'mostlydigit' }, 9: { sorter: 'mostlydigit' }, 10: { sorter: 'mostlydigit' } } });
+});
+$(document).ready(function() {
+ mirror_status("#visualize-mirror", "./json/");
});
</script>
{% endblock %}
diff --git a/templates/mirrors/mirrorlist.txt b/templates/mirrors/mirrorlist.txt
index bbe468fc..b8eada93 100644
--- a/templates/mirrors/mirrorlist.txt
+++ b/templates/mirrors/mirrorlist.txt
@@ -8,6 +8,6 @@ content right, and then go back later to fix it all up.
## Generated on {% now "Y-m-d" %}
##{% for mirror_url in mirror_urls %}{% ifchanged %}
-## {{ mirror_url.real_country.name|default:'Worldwide' }}{% endifchanged %}
+## {{ mirror_url.country.name|default:'Worldwide' }}{% endifchanged %}
#Server = {{ mirror_url.url}}$repo/os/$arch{% endfor %}
{% endautoescape %}
diff --git a/templates/mirrors/mirrorlist_generate.html b/templates/mirrors/mirrorlist_generate.html
index 2025eec2..e141ae3d 100644
--- a/templates/mirrors/mirrorlist_generate.html
+++ b/templates/mirrors/mirrorlist_generate.html
@@ -24,6 +24,8 @@
<li><a href="all/">All mirrors</a></li>
<li><a href="all/ftp/">All mirrors, FTP only</a></li>
<li><a href="all/http/">All mirrors, HTTP only</a></li>
+ <li><a href="all/https/">All mirrors, HTTPS only</a></li>
+ <li><a href="all/smart/">All mirrors, Smart protocols</a>: this link only includes FTP mirrors if an HTTP mirror is not available in a given country.</li>
</ul>
<h3>Customized by country mirrorlist</h3>
diff --git a/templates/mirrors/mirrorlist_status.txt b/templates/mirrors/mirrorlist_status.txt
index 61d0abb1..cdbc7adb 100644
--- a/templates/mirrors/mirrorlist_status.txt
+++ b/templates/mirrors/mirrorlist_status.txt
@@ -9,6 +9,6 @@ content right, and then go back later to fix it all up.
## Generated on {% now "Y-m-d" %}
##
{% for mirror_url in mirror_urls %}
-## Score: {{ mirror_url.score|floatformat:1|default:'unknown' }}, {{ mirror_url.real_country.name|default:'Worldwide' }}
+## Score: {{ mirror_url.score|floatformat:1|default:'unknown' }}, {{ mirror_url.country.name|default:'Worldwide' }}
#Server = {{ mirror_url.url}}$repo/os/$arch{% endfor %}
{% endautoescape %}
diff --git a/templates/mirrors/mirrors.html b/templates/mirrors/mirrors.html
index aea458d8..16c6fb3b 100644
--- a/templates/mirrors/mirrors.html
+++ b/templates/mirrors/mirrors.html
@@ -10,7 +10,6 @@
<tr>
<th>Server</th>
<th>Tier</th>
- <th>Country</th>
<th>ISOs</th>
<th>Protocols</th>
{% if user.is_authenticated %}
@@ -27,9 +26,8 @@
<td><a href="{{ mirror.get_absolute_url }}"
title="Mirror details for {{ mirror.name }}">{{ mirror.name }}</a></td>
<td>{{ mirror.get_tier_display }}</td>
- <td>{% if mirror.country %}<img src="{{ mirror.country.flag }}" alt=""/> {% endif %}{{ mirror.country.name }}</td>
<td>{{ mirror.isos|yesno|capfirst }}</td>
- <td class="wrap">{{ mirror.supported_protocols|join:", " }}</td>
+ <td class="wrap">{{ mirror.protocols|join:", " }}</td>
{% if user.is_authenticated %}
<td>{{ mirror.public|yesno|capfirst }}</td>
<td>{{ mirror.active|yesno|capfirst }}</td>
@@ -41,12 +39,11 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
- $(".results").tablesorter({widgets: ['zebra'], sortList: [[1,0], [2,0]]});
+ $(".results").tablesorter({widgets: ['zebra'], sortList: [[1,0], [0,0]]});
});
</script>
{% endblock %}
diff --git a/templates/mirrors/status.html b/templates/mirrors/status.html
index fbd4d520..9050414d 100644
--- a/templates/mirrors/status.html
+++ b/templates/mirrors/status.html
@@ -1,12 +1,15 @@
{% extends "base.html" %}
{% load static from staticfiles %}
{% load mirror_status %}
+{% load flags %}
-{% block title %}{{ BRANDING_DISTRONAME }} - Mirror Status{% endblock %}
+{% block title %}{{ BRANDING_DISTRONAME }} - Mirror Status{% if tier != None %} - Tier {{ tier }}{% endif %}{% endblock %}
+
+{% block head %}<link rel="stylesheet" type="text/css" href="{% static "flags/fam.css" %}" media="screen, projection" />{% endblock %}
{% block content %}
<div id="mirrorstatus" class="box">
- <h2>Mirror Status</h2>
+ <h2>Mirror Status{% if tier != None %} - Tier {{ tier }}{% endif %}</h2>
<p>This page reports the status of all known, public, and active {{ BRANDING_DISTRONAME }}
mirrors. All data on this page reflects the status of the mirrors within
the <em>last {{ cutoff|hours }}</em>. All listed times are UTC. The check script runs
@@ -16,8 +19,8 @@
has synced recently. This page contains several pieces of information about
each mirror.</p>
<ul>
- <li><em>Mirror URL:</em> Mirrors are checked on a per-URL basis. If
- both FTP and HTTP access are provided, both will be listed here.</li>
+ <li><em>Mirror URL:</em> Mirrors are checked on a per-URL basis. All
+ available URLs and protocols for each known mirror are listed.</li>
<li><em>Completion %:</em> The number of mirror checks that have
successfully connected and disconnected from the given URL. If this is
below 100%, the mirror may be unreliable.</li>
@@ -88,8 +91,8 @@
{% spaceless %}<tr class="{% cycle 'odd' 'even' %}">
<td>{{ log.url__url }}</td>
<td>{{ log.url__protocol__protocol }}</td>
- <td class="country">{% if log.country %}<img src="{{ log.country.flag }}" alt=""/> {% endif %}{{ log.country.name }}</td>
- <td class="wrap">{{ log.error }}</td>
+ <td class="country">{% country_flag log.country %}{{ log.country.name }}</td>
+ <td class="wrap">{{ log.error|linebreaksbr }}</td>
<td>{{ log.last_occurred|date:'Y-m-d H:i' }}</td>
<td>{{ log.error_count }}</td>
</tr>
@@ -98,8 +101,7 @@
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
diff --git a/templates/mirrors/status_table.html b/templates/mirrors/status_table.html
index 1961d222..2dd7ef49 100644
--- a/templates/mirrors/status_table.html
+++ b/templates/mirrors/status_table.html
@@ -1,4 +1,5 @@
{% load mirror_status %}
+{% load flags %}
<table id="{{ table_id }}" class="results">
<thead>
<tr>
@@ -17,7 +18,7 @@
{% spaceless %}<tr class="{% cycle 'odd' 'even' %}">
<td>{{ m_url.url }}</td>
<td>{{ m_url.protocol }}</td>
- <td class="country">{% if m_url.real_country %}<img src="{{ m_url.real_country.flag }}" alt=""/> {% endif %}{{ m_url.real_country.name }}</td>
+ <td class="country">{% country_flag m_url.country %}{{ m_url.country.name }}</td>
<td>{{ m_url.completion_pct|percentage:1 }}</td>
<td>{{ m_url.delay|duration|default:'unknown' }}</td>
<td>{{ m_url.duration_avg|floatformat:2 }}</td>
diff --git a/templates/news/list.html b/templates/news/list.html
index 98cf9a73..0ddf3b5e 100644
--- a/templates/news/list.html
+++ b/templates/news/list.html
@@ -1,6 +1,10 @@
{% extends "base.html" %}
{% block title %}{{ BRANDING_DISTRONAME }} - News{% endblock %}
+{% block head %}
+<link rel="alternate" type="application/rss+xml" title="Arch Linux News Updates" href="/feeds/news/" />
+{% endblock %}
+
{% block content %}
<div id="news-article-list" class="box">
diff --git a/templates/news/paginator.html b/templates/news/paginator.html
index fbd0546b..57fbeb15 100644
--- a/templates/news/paginator.html
+++ b/templates/news/paginator.html
@@ -1,20 +1,20 @@
{% if is_paginated %}
<div class="pagination">
- <p>{{paginator.count}} news items, viewing page {{page_obj.number}} of {{paginator.num_pages}}.</p>
+ <p>{{ paginator.count }} news items, viewing page {{ page_obj.number }} of {{ paginator.num_pages }}.</p>
<p class="news-nav">
{% if page_obj.has_previous %}
- <a class="prev" href="?page={{page_obj.previous_page_number}}"
+ <a class="prev" href="?page={{ page_obj.previous_page_number }}"
title="Go to previous page">&lt; Prev</a>
{% endif %}
{% for num in paginator.page_range %}
{% ifequal num page_obj.number %}
- <span>{{num}}</span>
+ <span>{{ num }}</span>
{% else %}
- <a href="?page={{num}}" title="Go to page {{num}}">{{num}}</a>
+ <a href="?page={{ num }}" title="Go to page {{ num }}">{{ num }}</a>
{% endifequal %}
{% endfor %}
{% if page_obj.has_next %}
- <a class="next" href="?page={{page_obj.next_page_number}}"
+ <a class="next" href="?page={{ page_obj.next_page_number }}"
title="Go to next page">Next &gt;</a>
{% endif %}
</p>
diff --git a/templates/news/view.html b/templates/news/view.html
index 47830867..93cf32d4 100644
--- a/templates/news/view.html
+++ b/templates/news/view.html
@@ -1,11 +1,20 @@
{% extends "base.html" %}
-{% load markup %}
{% block title %}{{ BRANDING_DISTRONAME }} - News: {{ news.title }}{% endblock %}
{% block content %}
-<div class="news-article box">
-
- <h2>News: {{ news.title }}</h2>
+<div itemscope itemtype="http://schema.org/Article" class="news-article box">
+ <h2 itemprop="headline">{{ news.title }}</h2>
+ <meta itemprop="dateCreated" content="{{ news.postdate|date:"Y-m-d" }}"/>
+ <meta itemprop="datePublished" content="{{ news.postdate|date:"Y-m-d" }}"/>
+ <meta itemprop="dateModified" content="{{ news.last_modified|date:"Y-m-d" }}"/>
+ <meta itemprop="inLanguage" content="en"/>
+ <meta itemprop="wordCount" content="{{ news.content|wordcount }}"/>
+ <div style="display:none" itemprop="author" itemscope itemtype="http://schema.org/Person">
+ <meta itemprop="name" content="{{ news.author.get_full_name|escape }}"/>
+ </div>
+ <div style="display:none" itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
+ <meta itemprop="name" content="{{ BRANDING_DISTRONAME }}"/>
+ </div>
{% if perms.news.change_news %}
<ul class="admin-actions">
@@ -18,7 +27,6 @@
<p class="article-info">{{ news.postdate|date }} - {{ news.author.get_full_name }}</p>
- <div class="article-content">{{ news.content|markdown }}</div>
-
+ <div class="article-content" itemprop="articleBody">{{ news.html }}</div>
</div>
{% endblock %}
diff --git a/templates/packages/details.html b/templates/packages/details.html
index e4ae0781..36c422b2 100644
--- a/templates/packages/details.html
+++ b/templates/packages/details.html
@@ -72,6 +72,17 @@
{% endif %}{% endwith %}
</div>
+ <div itemscope itemtype="http://schema.org/SoftwareApplication">
+ <meta itemprop="name" content="{{ pkg.pkgname|escape }}"/>
+ <meta itemprop="version" content="{{ pkg.full_version|escape }}"/>
+ <meta itemprop="softwareVersion" content="{{ pkg.full_version|escape }}"/>
+ <meta itemprop="fileSize" content="{{ pkg.compressed_size }}"/>
+ <meta itemprop="dateCreated" content="{{ pkg.build_date|date:"Y-m-d" }}"/>
+ <meta itemprop="datePublished" content="{{ pkg.last_update|date:"Y-m-d" }}"/>
+ <meta itemprop="operatingSystem" content="Linux"/>
+ <div style="display:none" itemprop="provider" itemscope itemtype="http://schema.org/Person">
+ <meta itemprop="name" content="{{ pkg.packager.get_full_name|escape }}"/>
+ </div>
<table id="pkginfo">
<tr>
<th>Architecture:</th>
@@ -86,26 +97,26 @@
{% with pkg.split_packages as splits %}{% if splits %}
<tr>
<th>Split Packages:</th>
- <td class="wrap">{% for s in splits %}{% pkg_details_link s %}{% if not forloop.last %}, {% endif %}{% endfor %}</td>
+ <td class="wrap relatedto">{% for s in splits %}<span class="related">{% pkg_details_link s %}{% if not forloop.last %}, {% endif %}</span>{% endfor %}</td>
</tr>
{% endif %}{% endwith %}
{% else %}
<tr>
<th>Base Package:</th>
- {% if pkg.base_package %}
- <td>{% pkg_details_link pkg.base_package %}</td>
+ {% with pkg.base_package as base %}{% if base %}
+ <td>{% pkg_details_link base %}</td>
{% else %}
<td><a href="../{{ pkg.pkgbase }}/"
title="Split package details for {{ pkg.pkgbase }}">{{ pkg.pkgbase }}</a></td>
- {% endif %}
+ {% endif %}{% endwith %}
</tr>
{% endifequal %}
<tr>
<th>Description:</th>
- <td class="wrap">{{ pkg.pkgdesc|default:"" }}</td>
+ <td class="wrap" itemprop="description">{{ pkg.pkgdesc|default:"" }}</td>
</tr><tr>
<th>Upstream URL:</th>
- <td>{% if pkg.url %}<a href="{{ pkg.url }}"
+ <td>{% if pkg.url %}<a itemprop="url" href="{{ pkg.url }}"
title="Visit the website for {{ pkg.pkgname }}">{{ pkg.url|url_unquote }}</a>{% endif %}</td>
</tr><tr>
<th>License(s):</th>
@@ -120,22 +131,29 @@
</td>
</tr>
{% endif %}{% endwith %}
- {% with pkg.provides.all as provides %}{% if provides %}
+ {% with pkg.provides.all as all_related %}{% if all_related %}
<tr>
<th>Provides:</th>
- <td class="wrap">{{ provides|join:", " }}</td>
+ <td class="wrap relatedto">{% include "packages/details_relatedto.html" %}</td>
</tr>
{% endif %}{% endwith %}
- {% with pkg.conflicts.all as conflicts %}{% if conflicts %}
+ {% with pkg.replaces.all as all_related %}{% if all_related %}
+ <tr>
+ <th>Replaces:</th>
+ <td class="wrap relatedto">{% include "packages/details_relatedto.html" %}</td>
+ </tr>
+ {% endif %}{% endwith %}
+ {% with pkg.conflicts.all as all_related %}{% if all_related %}
<tr>
<th>Conflicts:</th>
- <td class="wrap">{{ conflicts|join:", " }}</td>
+ <td class="wrap relatedto">{% include "packages/details_relatedto.html" %}</td>
</tr>
{% endif %}{% endwith %}
- {% with pkg.replaces.all as replaces %}{% if replaces %}
+ {% with pkg.reverse_conflicts as rev_conflicts %}{% if rev_conflicts %}
<tr>
- <th>Replaces:</th>
- <td class="wrap">{{ replaces|join:", " }}</td>
+ <th>Reverse Conflicts:</th>
+ <td class="wrap relatedto">{% for conflict in rev_conflicts %}
+ <span class="related">{% pkg_details_link conflict %}{% if not forloop.last %}, {% endif %}</span>{% endfor %}</td>
</tr>
{% endif %}{% endwith %}
<tr>
@@ -165,13 +183,13 @@
<td>{% with pkg.signer as signer %}{% if signer %}{% pgp_key_link pkg.signature.key_id signer.get_full_name %}{% else %}Unknown ({% pgp_key_link pkg.signature.key_id %}){% endif %}{% endwith %}</td>
</tr><tr>
<th>Signature Date:</th>
- <td>{{ pkg.signature.datetime|date:"DATETIME_FORMAT" }} UTC</td>
+ <td>{{ pkg.signature.creation_time|date:"DATETIME_FORMAT" }} UTC</td>
</tr>{% else %}<tr>
<th>Signed By:</th>
<td>Unsigned</td>
</tr>{% endif %}<tr>
<th>Last Updated:</th>
- <td>{{ pkg.last_update|date }}</td>
+ <td>{{ pkg.last_update|date:"DATETIME_FORMAT" }} UTC</td>
</tr>
{% if user.is_authenticated %}{% with pkg.flag_request as flag_request %}{% if flag_request %}<tr>
<th>Last Flag Request:</th>
@@ -179,29 +197,27 @@
<div class="userdata">{{ flag_request.message|linebreaksbr|default:"{no message}" }}</div></td>
</tr>{% endif %}{% endwith %}{% endif %}
</table>
+ </div>
<div id="metadata">
-
{% with pkg.get_depends as deps %}
<div id="pkgdeps" class="listing">
<h3 title="{{ pkg.pkgname }} has the following dependencies">
Dependencies ({{deps|length}})</h3>
- {% if deps %}<ul>
+ {% if deps %}<ul id="pkgdepslist">
{% for depend in deps %}{% include "packages/details_depend.html" %}{% endfor %}
</ul>{% endif %}
</div>
{% endwith %}
-
{% with pkg.get_requiredby as rqdby %}
<div id="pkgreqs" class="listing">
<h3 title="Packages that require {{ pkg.pkgname }}">
Required By ({{rqdby|length}})</h3>
- {% if rqdby %}<ul>
+ {% if rqdby %}<ul id="pkgreqslist">
{% for req in rqdby %}{% include "packages/details_requiredby.html" %}{% endfor %}
</ul>{% endif %}
</div>
{% endwith %}
-
<div id="pkgfiles" class="listing">
<h3 title="Complete list of files contained within this package">
Package Contents</h3>
@@ -211,14 +227,17 @@
View the file list for {{ pkg.pkgname }}</a></p>
</div>
</div>
-
</div>
-
</div>
{% load cdn %}{% jquery %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
-$(document).ready(ajaxifyFiles);
+$(document).ready(function() {
+ ajaxifyFiles();
+ collapseDependsList("#pkgdepslist");
+ collapseDependsList("#pkgreqslist");
+ collapseRelatedTo(".relatedto");
+});
</script>
{% endblock %}
diff --git a/templates/packages/details_depend.html b/templates/packages/details_depend.html
index 8b6e85c9..4aa739c2 100644
--- a/templates/packages/details_depend.html
+++ b/templates/packages/details_depend.html
@@ -1,16 +1,14 @@
-{% load package_extras %}
-<li>
+{% load package_extras %}{% spaceless %}<li>
{% ifequal depend.pkg None %}
-{% if depend.providers %}
-{{ depend.dep.depname }} <span class="virtual-dep">({% multi_pkg_details depend.providers %})</span>
-{% else %}
-{{ depend.dep.depname }} <span class="virtual-dep">(virtual)</span>
-{% endif %}
-{% else %}
-{% pkg_details_link depend.pkg %}{{ depend.dep.depvcmp|default:"" }}
-{% if depend.pkg.repo.testing %} <span class="testing-dep">(testing)</span>{% endif %}
-{% if depend.pkg.repo.staging %} <span class="staging-dep">(staging)</span>{% endif %}
-{% endifequal %}
-{% if depend.dep.optional %} <span class="opt-dep">(optional)</span>{% endif %}
-{% if depend.dep.description %}- <span class="dep-desc">{{ depend.dep.description }}</span>{% endif %}
-</li>
+{% if depend.providers %}{{ depend.dep.name }}{{ depend.dep.comparison|default:"" }}{{ depend.dep.version|default:"" }} <span class="virtual-dep">({% multi_pkg_details depend.providers %})</span>
+{% else %}{{ depend.dep.name }}{{ depend.dep.comparison|default:"" }}{{ depend.dep.version|default:"" }} <span class="virtual-dep">(virtual)</span>
+{% endif %}{% else %}
+{% pkg_details_link depend.pkg %}{{ depend.dep.comparison|default:"" }}{{ depend.dep.version|default:"" }}
+{% if depend.pkg.repo.testing %} <span class="testing-dep"> (testing)</span>
+{% endif %}{% if depend.pkg.repo.staging %} <span class="staging-dep"> (staging)</span>
+{% endif %}{% endifequal %}
+{% if depend.dep.deptype == 'O' %} <span class="opt-dep"> (optional)</span>
+{% endif %}{% if depend.dep.deptype == 'M' %} <span class="make-dep"> (make)</span>
+{% endif %}{% if depend.dep.deptype == 'C' %} <span class="check-dep"> (check)</span>
+{% endif %}{% if depend.dep.description %} - <span class="dep-desc">{{ depend.dep.description }}</span>
+{% endif %}</li>{% endspaceless %}
diff --git a/templates/packages/details_relatedto.html b/templates/packages/details_relatedto.html
new file mode 100644
index 00000000..e14375d3
--- /dev/null
+++ b/templates/packages/details_relatedto.html
@@ -0,0 +1,2 @@
+{% load package_extras %}{% for related in all_related %}{% with related.get_best_satisfier as best_satisfier %}<span class="related">{% ifequal best_satisfier None %}{{ related.name }}{% else %}{% pkg_details_link best_satisfier %}{% endifequal %}{{ related.comparison|default:"" }}{{ related.version|default:"" }}{% if not forloop.last %}, {% endif %}</span>
+{% endwith %}{% endfor %}
diff --git a/templates/packages/details_requiredby.html b/templates/packages/details_requiredby.html
index c7697289..e8c713ac 100644
--- a/templates/packages/details_requiredby.html
+++ b/templates/packages/details_requiredby.html
@@ -1,7 +1,8 @@
-{% load package_extras %}
-<li>{% pkg_details_link req.pkg %}
-{% if req.depname != pkg.pkgname %}<span class="virtual-dep">(requires {{ req.depname }})</span>{% endif %}
-{% if req.pkg.repo.testing %}<span class="testing-dep">(testing)</span>{% endif %}
-{% if req.pkg.repo.staging %}<span class="staging-dep">(staging)</span>{% endif %}
-{% if req.optional %}<span class="opt-dep">(optional)</span>{% endif %}
-</li>
+{% load package_extras %}{% spaceless %}<li>{% pkg_details_link req.pkg %}
+{% if req.name != pkg.pkgname %}<span class="virtual-dep"> (requires {{ req.name }})</span>
+{% endif %}{% if req.pkg.repo.testing %}<span class="testing-dep"> (testing)</span>
+{% endif %}{% if req.pkg.repo.staging %}<span class="staging-dep"> (staging)</span>
+{% endif %}{% if req.deptype == 'O' %}<span class="opt-dep"> (optional)</span>
+{% endif %}{% if req.deptype == 'M' %}<span class="make-dep"> (make)</span>
+{% endif %}{% if req.deptype == 'C' %}<span class="check-dep"> (check)</span>
+{% endif %}</li>{% endspaceless %}
diff --git a/templates/packages/differences.html b/templates/packages/differences.html
index 4463f63d..38a94775 100644
--- a/templates/packages/differences.html
+++ b/templates/packages/differences.html
@@ -8,7 +8,7 @@
{% if differences %}
<div class="box">
<h2>Package Differences by Architecture</h2>
- <div id="differences-filter" class="filter-criteria">
+ <div class="filter-criteria">
<h3>Filter Differences View</h3>
<form id="diff_filter" method="post" action=".">
<fieldset>
@@ -29,7 +29,6 @@
</fieldset>
</form>
</div>
- {# TODO some sort of spacing here #}
<table id="table_differences" class="results">
<thead>
@@ -95,19 +94,19 @@
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#table_differences').tablesorter({widgets: ['zebra'], sortList: [[1,0], [0,0]]});
+ $('#table_multilib_differences').tablesorter({widgets: ['zebra'], sortList: [[5, 0]]});
+});
+$(document).ready(function() {
$('#diff_filter select').change(filter_packages);
$('#diff_filter input').change(filter_packages);
$('#criteria_reset').click(filter_packages_reset);
// fire function on page load to ensure the current form selections take effect
filter_packages();
-
- $('#table_multilib_differences').tablesorter({widgets: ['zebra'], sortList: [[5, 0]]});
});
</script>
{% endif %}
diff --git a/templates/packages/files.html b/templates/packages/files.html
index 652dc133..e2987e5f 100644
--- a/templates/packages/files.html
+++ b/templates/packages/files.html
@@ -6,9 +6,9 @@
<div id="pkgdetails" class="box">
<h2>{{ pkg.pkgname }} {{ pkg.full_version }} File List</h2>
- <div id="metadata"><div id="pkgfiles">
- <p>Package has {{ files_count }} file{{ files_count|pluralize }} and {{ dir_count }} director{{ dir_count|pluralize:"y,ies" }}.</p>
- <p><a href="{{ pkg.get_absolute_url }}">Back to Package</a></p>
+ <p>Package has {{ files_count }} file{{ files_count|pluralize }} and {{ dir_count }} director{{ dir_count|pluralize:"y,ies" }}.</p>
+ <p><a href="{{ pkg.get_absolute_url }}">Back to Package</a></p>
+ <div id="metadata"><div id="pkgfilelist">
{% include "packages/files_list.html" %}
</div></div>
diff --git a/templates/packages/flaghelp.html b/templates/packages/flaghelp.html
index fddc1bda..51ace2fd 100644
--- a/templates/packages/flaghelp.html
+++ b/templates/packages/flaghelp.html
@@ -1,25 +1,25 @@
-<!DOCTYPE html>
+{% load static from staticfiles %}<!DOCTYPE html>
<html lang="en">
<head>
<title>Flagging Packages</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <style type="text/css" media="screen, projection">
- <!--
- body { background: #eef; color: #444; font-family: sans-serif; }
- a { color: #07b; text-decoration: none; }
- a:hover { text-decoration: underline; }
- -->
+ <link rel="icon" type="image/x-icon" href="{% static "favicon.ico" %}" />
+ <link rel="shortcut icon" type="image/x-icon" href="{% static "favicon.ico" %}" />
+ <style type="text/css" media="screen, projection">
+ body { background: #f6f9fc; color: #222; font-family: sans-serif; }
+ a:link { text-decoration: none; color: #07b; }
+ a:visited { color: #666; }
+ a:hover { text-decoration: underline; color: #666; }
</style>
</head>
<body>
-
<h3>Flagging Packages</h3>
-
<p>If you notice that a package is out-of-date (i.e., there is a newer
<strong>stable</strong> release available), then please notify us by
using the <strong>Flag</strong> button in the <em>Package Details</em>
screen. This will notify the maintainer(s) responsible for that
- package so they can update it.</p>
+ package so they can update it. If the package is unmaintained, the
+ notification will be sent to a developer mailing list.</p>
<p>The message box portion of the flag utility is optional, and meant
for short messages only. If you need more than 200 characters for your
@@ -31,6 +31,5 @@
<p><strong>Note:</strong> Please do <em>not</em> use this facility if the
package is broken! Use the <a target="_blank" href="{{ BUGTRACKER_URL }}"
title="{{ BRANDING_DISTRONAME }} Bugtracker">bugtracker</a> instead.</p>
-
</body>
</html>
diff --git a/templates/packages/groups.html b/templates/packages/groups.html
index 7212c128..95b1283c 100644
--- a/templates/packages/groups.html
+++ b/templates/packages/groups.html
@@ -29,8 +29,7 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
diff --git a/templates/packages/opensearch.xml b/templates/packages/opensearch.xml
index 800b7890..5aa4d5d7 100644
--- a/templates/packages/opensearch.xml
+++ b/templates/packages/opensearch.xml
@@ -1,13 +1,18 @@
-<?xml version="1.0" encoding="UTF-8"?>
+{% load static from staticfiles %}<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
- <ShortName>{{BRANDING_DISTRONAME}} Packages</ShortName>
- <Description>Search the {{BRANDING_DISTRONAME}} package repositories.</Description>
+ <ShortName>{{BRANDING_SHORTNAME}} Packages</ShortName>
+ <LongName>{{BRANDING_DISTRONAME}} Package Repository Search</LongName>
+ <Description>Search the {{BRANDING_DISTRONAME}} package repositories by keyword in package names and descriptions.</Description>
<Tags>linux archlinux package software</Tags>
- <Image height="16" width="16" type="image/x-icon">{{domain}}/static/favicon.ico</Image>
+ <Image height="16" width="16" type="image/x-icon">{{ domain }}{% static "favicon.ico" %}</Image>
+ <Image height="64" width="64" type="image/png">{{ domain }}{% static "logos/icon-transparent-64x64.png" %}</Image>
<Language>en-us</Language>
<InputEncoding>UTF-8</InputEncoding>
<OutputEncoding>UTF-8</OutputEncoding>
<Query role="example" searchTerms="initscripts"/>
- <Url type="text/html" template="{{domain}}/packages/?q={searchTerms}"/>
- <Url rel="self" type="application/opensearchdescription+xml" template="{{domain}}/opensearch/packages/"/>
+ <Url type="text/html" template="{{ domain }}/packages/?q={searchTerms}"/>
+ <Url rel="suggestions" type="application/x-suggestions+json"
+ template="{{ domain }}/opensearch/packages/suggest?q={searchTerms}"/>
+ <Url rel="self" type="application/opensearchdescription+xml"
+ template="{{ domain }}/opensearch/packages/"/>
</OpenSearchDescription>
diff --git a/templates/packages/packages_list.html b/templates/packages/packages_list.html
index a7907f25..f10f26be 100644
--- a/templates/packages/packages_list.html
+++ b/templates/packages/packages_list.html
@@ -40,8 +40,7 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
diff --git a/templates/packages/removed.html b/templates/packages/removed.html
new file mode 100644
index 00000000..f188b6db
--- /dev/null
+++ b/templates/packages/removed.html
@@ -0,0 +1,27 @@
+{% extends "base.html" %}
+{% load package_extras %}
+
+{% block title %}Arch Linux - Not Available - {{ name }} {{ version }} ({{ arch.name }}){% endblock %}
+{% block navbarclass %}anb-packages{% endblock %}
+
+{% block content %}
+<div id="pkg-gone" class="box">
+ <h2>{{ name }} {{ version }} is no longer available</h2>
+
+ <p>{{ name }} {{ version }} has been removed from the [{{ repo.name|lower }}] repository.</p>
+
+ {% if elsewhere %}
+ <p>However, this package or replacements are available elsewhere:</p>
+ <ul>
+ {% for pkg in elsewhere %}
+ <li>{% pkg_details_link pkg %} {{ pkg.full_version }} [{{ pkg.repo.name|lower }}] ({{ pkg.arch.name }})</li>
+ {% endfor %}
+ </ul>
+ {% else %}
+ <p>Unfortunately, this package cannot be found in any other repositories.
+ Try using the <a href="{% url 'packages-search' %}?name={{ update.pkgname|urlencode }}">package search page</a>,
+ or try <a href="https://aur.archlinux.org/packages.php?K={{ update.pkgname|urlencode }}">searching the AUR</a>
+ to see if the package can be found there.</p>
+ {% endif %}
+</div>
+{% endblock %}
diff --git a/templates/packages/search.html b/templates/packages/search.html
index d4b423d1..77e59813 100644
--- a/templates/packages/search.html
+++ b/templates/packages/search.html
@@ -1,13 +1,12 @@
{% extends "base.html" %}
{% load package_extras %}
-{% load admin_static %}
{% block title %}{{ BRANDING_DISTRONAME }} - Package Database{% endblock %}
{% block navbarclass %}anb-packages{% endblock %}
{% block head %}
{% if is_paginated and page_obj.number > 1 %}<meta name="robots" content="noindex, nofollow"/>{% endif %}
-<link rel="stylesheet" type="text/css" href="{% static "admin/css/widgets.css" %}" />
+<link rel="alternate" type="application/rss+xml" title="Arch Linux Package Updates" href="/feeds/packages/" />
{% endblock %}
{% block content %}
@@ -18,7 +17,7 @@
<h3>Package Search</h3>
<form id="pkg-search" method="get" action="/packages/">
- <p><input type="hidden" name="sort" value='{{sort}}' /></p>
+ <p>{{ search_form.sort }}</p>
{{ search_form.non_field_errors }}
<fieldset>
<legend>Enter search criteria</legend>
@@ -34,15 +33,9 @@
<div>{{ search_form.maintainer.errors }}
<label for="id_maintainer" title="Limit results to a specific maintainer">
Maintainer</label>{{ search_form.maintainer}}</div>
- <div>{{ search_form.last_update.errors }}
- <label for="id_last_update" title="Limit results to a date after the date entered">
- Last Updated After</label>{{ search_form.last_update }}</div>
<div>{{ search_form.flagged.errors }}
<label for="id_flagged" title="Limit results based on out-of-date status">
Flagged</label>{{ search_form.flagged }}</div>
- <div>{{ search_form.limit.errors }}
- <label for="id_limit" title="Select the number of results to display per page">
- Per Page</label>{{ search_form.limit }}</div>
<div ><label>&nbsp;</label><input title="Search for packages using this criteria"
type="submit" value="Search" /></div>
</fieldset>
@@ -114,7 +107,7 @@
using different criteria, or try
{% if search_form.q.data %}
<a href="https://aur.archlinux.org/packages.php?K={{ search_form.q.data|urlencode }}">searching the AUR</a>
- {% else %}searching the AUR{% endif %}
+ {% else %}searching the <a href="https://aur.archlinux.org/">AUR</a>{% endif %}
to see if the package can be found there.</p>
</div>
{% endif %}
@@ -125,13 +118,4 @@
For unsupported packages, browse the <a href="https://aur.archlinux.org/"
title="AUR package database">Arch User Repository (AUR).</a></p>
</div>
-
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="/jsi18n/"></script>
-<script type="text/javascript">
- window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";
- var django = {"jQuery": jQuery};
-</script>
-<script type="text/javascript" src="{% static "admin/js/core.js" %}"></script>
-{{search_form.media}}
{% endblock %}
diff --git a/templates/packages/search_paginator.html b/templates/packages/search_paginator.html
index 362b7cb3..3c368b82 100644
--- a/templates/packages/search_paginator.html
+++ b/templates/packages/search_paginator.html
@@ -1,12 +1,12 @@
<div class="pkglist-stats">
{% if is_paginated %}
- <p>{{paginator.count}} packages found.
- Page {{page_obj.number}} of {{paginator.num_pages}}.</p>
+ <p>{{ paginator.count }} packages found.
+ Page {{ page_obj.number }} of {{ paginator.num_pages }}.</p>
<div class="pkglist-nav">
<span class="prev">
{% if page_obj.has_previous %}
- <a href="/packages/{{page_obj.previous_page_number}}/?{{current_query}}"
+ <a href="?page={{ page_obj.previous_page_number }}&amp;{{ current_query }}"
title="Go to previous page">&lt; Prev</a>
{% else %}
&lt; Prev
@@ -14,7 +14,7 @@
</span>
<span class="next">
{% if page_obj.has_next %}
- <a href="/packages/{{page_obj.next_page_number}}/?{{current_query}}"
+ <a href="?page={{ page_obj.next_page_number }}&amp;{{ current_query }}"
title="Go to next page">Next &gt;</a>
{% else %}
Next &gt;
diff --git a/templates/packages/signoffs.html b/templates/packages/signoffs.html
index 06298249..c3e75ae2 100644
--- a/templates/packages/signoffs.html
+++ b/templates/packages/signoffs.html
@@ -69,7 +69,7 @@
{% endif %}
{% endif %}
<td>{% include "packages/signoff_cell.html" %}</td>
- <td class="wrap">{% if not group.default_spec %}{% with group.specification as spec %}{% comment %}
+ <td class="wrap note">{% if not group.default_spec %}{% with group.specification as spec %}{% comment %}
{% endcomment %}{% if spec.required != 2 %}Required signoffs: {{ spec.required }}<br/>{% endif %}{% comment %}
{% endcomment %}{% if not spec.enabled %}Signoffs are not currently enabled<br/>{% endif %}{% comment %}
{% endcomment %}{% if spec.known_bad %}Package is known to be bad<br/>{% endif %}{% comment %}
@@ -81,18 +81,22 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
- $('a.signoff-link').click(signoff_package);
- $(".results").tablesorter({widgets: ['zebra'], sortList: [[0,0]],
+ $('.results').tablesorter({widgets: ['zebra'], sortList: [[0,0]],
headers: { 5: { sorter: 'epochdate' }, 7: { sorter: false }, 8: {sorter: false } } });
+});
+$(document).ready(function() {
+ $('a.signoff-link').click(signoff_package);
$('#signoffs_filter input').change(filter_signoffs);
$('#criteria_reset').click(filter_signoffs_reset);
// fire function on page load to ensure the current form selections take effect
filter_signoffs();
});
+$(document).ready(function() {
+ collapseNotes('.note');
+});
</script>
{% endblock %}
diff --git a/templates/packages/stale_relations.html b/templates/packages/stale_relations.html
index 326f7a2b..c24715cd 100644
--- a/templates/packages/stale_relations.html
+++ b/templates/packages/stale_relations.html
@@ -107,8 +107,7 @@
</form>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
diff --git a/templates/public/developer_list.html b/templates/public/developer_list.html
index 376ab433..4401d97b 100644
--- a/templates/public/developer_list.html
+++ b/templates/public/developer_list.html
@@ -1,3 +1,4 @@
+{% load flags %}
{% load pgp %}
<div id="arch-bio-toc">
@@ -12,17 +13,24 @@
<table class="arch-bio-entry">
{% for dev in dev_list %}
{% with dev.userprofile as prof %}
- <tr>
+ <tr itemscope itemtype="http://schema.org/Person">
<td class="pic pic-{{ dev.username }}">
- <img src="{{ prof.picture.url }}" height="125" width="125" alt="Image for {{ prof.alias }}"/>
+ <img itemprop="image" src="{{ prof.picture.url }}" height="125" width="125" alt="Image for {{ prof.alias }}"/>
</td>
<td>
+ <meta itemprop="name" content="{{ dev.get_full_name|escape }}"/>
+ <meta itemprop="givenName" content="{{ dev.first_name|escape }}"/>
+ <meta itemprop="familyName" content="{{ dev.last_name|escape }}"/>
+ <meta itemprop="jobTitle" content="{{ user_title|escape }}"/>
+ <div style="display:none" itemprop="memberOf" itemscope itemtype="http://schema.org/Organization">
+ <meta itemprop="name" content="Arch Linux"/>
+ </div>
<h3>{{ dev.get_full_name }}{% if prof.latin_name %} ({{ prof.latin_name}}){% endif %}
<a class="headerlink" name="{{ dev.username }}" id="{{ dev.username }}" href="#{{ dev.username }}" title="Permalink">¶</a></h3>
<table class="bio bio-{{ dev.username }}">
<tr>
<th>Alias:</th>
- <td>{{ prof.alias }}</td>
+ <td itemprop="additionalName">{{ prof.alias }}</td>
</tr><tr>
<th>Email:</th>
<td>{{ prof.public_email }}</td>
@@ -38,7 +46,7 @@
</td>
</tr><tr>
<th>Website:</th>
- <td>{% if prof.website %}<a href="{{ prof.website }}"
+ <td>{% if prof.website %}<a itemprop="url" href="{{ prof.website }}"
title="Visit the website for {{ dev.get_full_name }}">
{{ prof.website }}</a>{% endif %}</td>
</tr><tr>
@@ -46,10 +54,10 @@
<td>{{ prof.occupation }}</td>
</tr><tr>
<th>YOB:</th>
- <td>{% if prof.yob %}{{ prof.yob }}{% endif %}</td>
+ <td itemprop="birthDate">{% if prof.yob %}{{ prof.yob }}{% endif %}</td>
</tr><tr>
<th>Location:</th>
- <td>{% if dev.userprofile.country %}<img src="{{ dev.userprofile.country.flag }}" alt="{{ dev.userprofile.country.name }}"/> {% endif %}{{ prof.location }}</td>
+ <td>{% country_flag dev.userprofile.country %}{{ prof.location }}</td>
</tr><tr>
<th>Languages:</th>
<td>{{ prof.languages }}</td>
diff --git a/templates/public/donate.html b/templates/public/donate.html
index 0c20e289..963a02ca 100644
--- a/templates/public/donate.html
+++ b/templates/public/donate.html
@@ -23,7 +23,7 @@
<h3>Monetary donations</h3>
- <p>Financial contributions are accepted via <a href="https://co.clickandpledge.com/Default.aspx?WID=47294" title="Donate via Click&amp;Pledge to Arch Linux"/>Click&amp;Pledge</a>.
+ <p>Financial contributions are accepted via <a href="https://co.clickandpledge.com/Default.aspx?WID=47294" title="Donate via Click&amp;Pledge to Arch Linux">Click&amp;Pledge</a>.
Arch Linux is a member project of the
<a href="http://www.spi-inc.org/">Software in the Public Interest, Inc.</a>
non-profit corporation. Funds are used for hosting costs, server hardware
@@ -31,7 +31,7 @@
as <a href="http://www.spi-inc.org/donations/">how donations work</a>.</p>
<a href="https://co.clickandpledge.com/Default.aspx?WID=47294">
- <img width="210" height="34" src="{% static "CP_EN_BK_S_001.gif" %}" alt="Donate via Click&amp;Pledge to Arch Linux" title="Donate via Click&amp;Pledge to Arch Linux"/>
+ <img width="210" height="34" src="{% static "click_and_pledge.png" %}" alt="Donate via Click&amp;Pledge to Arch Linux" title="Donate via Click&amp;Pledge to Arch Linux"/>
</a>
<h3>Commercial sponsors and contributions</h3>
@@ -44,18 +44,6 @@
title="velocity network"><img width="252" height="58" src="{% static "vnet_button.png" %}" class="sponsor-btn-vnet"
title="" alt="velocity network - it's about time" /></a>
- <p>We also wish to extend a special Thank You to <a
- href="https://www.sevenl.net/?utm_source=archlinux-org&amp;utm_medium=sponsored-banner&amp;utm_campaign=thanks-to-sevenl"
- title="SevenL Networks - Dedicated Arch Linux servers">SevenL Networks</a>
- for their generous and ongoing contribution of a dedicated Arch Linux
- server. You too can have a dedicated Arch Linux server hosted by SevenL...
- head over to their website for more details.</p>
-
- <a href="https://www.sevenl.net/?utm_source=archlinux-org&amp;utm_medium=sponsored-banner&amp;utm_campaign=thanks-to-sevenl"
- title="SevenL Networks - Dedicated Arch Linux servers"><img width="252" height="58" src="{% static "sevenl_button.png" %}"
- class="sponsor-btn-sevenl" title="A big Thank You to SevenL Networks for their generous contribution"
- alt="We would like to express our thanks to SevenL Networks for their generous contribution" /></a>
-
<p>More thanks go to <a href="http://www.airvm.com/ArchLinux"
title="AirVM.com">AirVM.com</a> for contributing a VMWare-based Virtual Machine.</p>
@@ -63,6 +51,12 @@
title="AirVM.com - Your Green Technology Partner"><img width="252" height="58" src="{% static "airvm_button.png" %}"
class="sponsor-btn-airvm" title="AirVM.com - Your Green Technology Partner" alt="AirVM.com - Your Green Technology Partner" /></a>
+ <p>We would also like to thank Kartenzia for sponsoring a dedicated Arch Linux Server.
+ Kartenzia.de is a new Start-Up based in Germany and specializes in
+ eco-friendly invitations like <a href="http://www.kartenzia.de/weihnachtskarten/">Weihnachten</a>.</p>
+
+ <a href="http://www.kartenzia.de/"><img width="292" height="74" src="{% static "kartenzia_button.png" %}" class="sponsor-btn-kartenzia" /></a>
+
<h3>Past donors</h3>
<div id="donor-list">
diff --git a/templates/public/download.html b/templates/public/download.html
index 70b27b73..01e46f66 100644
--- a/templates/public/download.html
+++ b/templates/public/download.html
@@ -1,28 +1,35 @@
{% extends "base.html" %}
{% load cache %}
-{% load url from future %}
{% load static from staticfiles %}
+{% load flags %}
{% load wiki %}
{% block title %}{{ BRANDING_DISTRONAME }} - Downloads{% endblock %}
+
+{% block head %}
+<link rel="stylesheet" type="text/css" href="{% static "flags/fam.css" %}" media="screen, projection" />
+<link rel="alternate" type="application/rss+xml" title="{{BRANDING_DISTRONAME}} Releases" href="/feeds/releases/" />
+{% endblock %}
+
{% block navbarclass %}anb-download{% endblock %}
{% block content %}
<div id="arch-downloads" class="box">
- <h2>Arch Linux Downloads</h2>
+ <h2>{{BRANDING_DISTRONAME}} Downloads</h2>
- {% with "2011.08.19" as version %}
<h3>Release Info</h3>
- <p>All available images can be burned to a CD, mounted as an ISO file,
- or be directly written to a USB stick using a utility like `dd`. These
- are intended for new installations only; an existing Arch Linux system
+ <p>The image can be burned to a CD, mounted as an ISO file,
+ or be directly written to a USB stick using a utility like `dd`. It
+ is intended for new installations only; an existing {{BRANDING_DISTRONAME}} system
can always be updated with `pacman -Syu`.</p>
<ul>
- <li><strong>Current Release:</strong> <a href="{% wiki_url 'DeveloperWiki:' %}{{ version }}">{{ version }}</a></li>
- <li><strong>Included Kernel:</strong> 3.0.3</li>
+ {% if release.version %}<li><strong>Current Release:</strong> {{ release.version }}</li>{% endif %}
+ {% if release.kernel_version %}<li><strong>Included Kernel:</strong> {{ release.kernel_version }}</li>{% endif %}
+ {% if release.file_size %}<li><strong>ISO Size:</strong> {{ release.file_size|filesizeformat }}</li>{% endif %}
+ <li><a href="https://wiki.archlinux.org/index.php/Installation_Guide">Installation Guide</a></li>
<li><strong>Resources:</strong>
<ul>
<li><a href="https://bugs.archlinux.org/index.php?project=6"
@@ -33,14 +40,11 @@
</li>
</ul>
- <p><strong>Links and Instructions:</strong></p>
+ {% if release.info %}
+ <h3>Release Notes</h3>
- <ul id="download-help">
- <li><a href="https://www.archlinux.org/iso/{{ version }}/README"
- title="Official download instructions">Readme and Instructions</a></li>
- <li><a href="{% wiki_url 'Install_Guide' %}"
- title="Official Installation Guide">{{BRANDING_DISTRONAME}} Install Guide</a></li>
- </ul>
+ <div class="article-content">{{ release.info_html }}</div>
+ {% endif %}
<h3>Existing {{BRANDING_SHORTNAME}} Users</h3>
@@ -54,82 +58,19 @@
download is finished, so you can seed it back to others.
<em>A web-seed capable client is recommended for fastest download speeds.</em></p>
- <table id="download-torrents" class="pretty1">
- <thead>
- <tr>
- <th>Format</th>
- <th class="cpu-arch">i686 CPU</th>
- <th class="cpu-arch">x86-64 CPU</th>
- <th class="cpu-arch">Dual Architecture</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- Netinstall Image
- </td><td class="cpu-arch">
- <a href="https://www.archlinux.org/iso/{{version}}/archlinux-{{version}}-netinstall-i686.iso.torrent"
- title="Download for i686 architecture">Download</a>
- </td><td class="cpu-arch">
- <a href="https://www.archlinux.org/iso/{{version}}/archlinux-{{version}}-netinstall-x86_64.iso.torrent"
- title="Download for x86-64 architecture">Download</a>
- </td><td class="cpu-arch">
- <a href="https://www.archlinux.org/iso/{{version}}/archlinux-{{version}}-netinstall-dual.iso.torrent"
- title="Download for both architectures">Download</a>
- </td><td class="wrap">
- Downloads and installs packages versions via mirrors for absolute freshness.
- </td>
- </tr><tr>
- <td>
- Core Image
- </td><td class="cpu-arch">
- <a href="https://www.archlinux.org/iso/{{version}}/archlinux-{{version}}-core-i686.iso.torrent"
- title="Download for i686 architecture">Download</a>
- </td><td class="cpu-arch">
- <a href="https://www.archlinux.org/iso/{{version}}/archlinux-{{version}}-core-x86_64.iso.torrent"
- title="Download for x86-64 architecture">Download</a>
- </td><td class="cpu-arch">
- <a href="https://www.archlinux.org/iso/{{version}}/archlinux-{{version}}-core-dual.iso.torrent"
- title="Download for both architectures">Download</a>
- </td><td class="wrap">
- Core packages are included on the media. Good for basic off-line installation.
- </td>
- </tr>
- </tbody>
- </table>
-
- <h3>Get Arch Linux on CD</h3>
-
- <p>The following suppliers donate a portion of their proceeds to the
- Arch Linux project:</p>
-
- <ul id="cd-vendors-donate">
- <li><a href="http://www.osdisc.com/cgi-bin/view.cgi/products/linux/arch?affiliate=archlinux"
- title="Purchase a CD from OSDisc">Purchase a CD from OSDisc</a></li>
- <li><a href="http://www.shoplinuxonline.com/index.php?main_page=index&amp;cPath=1_46&amp;zenid=ecd15b48affe8976130bc575c1276ee4"
- title="Purchase a CD from Shop Linux Online">Purchase a CD from Shop Linux Online</a></li>
- </ul>
-
- <p>Arch Linux CDs are also available for purchase from these suppliers:</p>
-
- <ul id="cd-vendors">
- <li><a href="http://www.linuxcd.org/view_distro.php?id_distro=48"
- title="Purchase a CD from LinuxCD">Purchase a CD from LinuxCD</a></li>
- </ul>
+ {% if release %}<ul>
+ <li><a href="{{ release.magnet_uri }}"
+ title="Magnet link">Magnet link for {{ release.version }}</a></li>
+ <li><a href="{% url 'releng-release-torrent' release.version %}"
+ title="Download torrent">Torrent for {{ release.version }}</a></li>
+ </ul>{% endif %}
- <h3>Test ISO Info</h3>
+ <h3>Netboot</h3>
- <p>We provide daily snapshot ISOs. Those are largely untested,
- but may be more up to date than the releases.</p>
+ <p>If you have a wired connection, you can boot the latest release directly over the network.</p>
<ul>
- <li><a href="{{ releng_iso_url }}"
- title="Release Engineering ISO download">Download snapshots</a></li>
<li><a href="{{ releng_pxeboot_url }}"
- title="Arch Linux Netboot Live System">Boot latest snapshots over the network</a>
- <img width="16" height="16" src="{% static "new.png" %}" alt="New"/></li>
- <li><a href="{% url 'releng-test-overview' %}"
- title="Release Engineering ISO feedback">Feedback</a></li>
+ title="{{BRANDING_DISTRONAME}} Netboot Live System">{{BRANDING_DISTRONAME}} Linux Netboot</a></li>
</ul>
<h3>HTTP Direct Downloads</h3>
@@ -144,30 +85,29 @@
<p>File integrity checksums for the latest releases can be found below:</p>
<ul>
- <li><a href="https://www.archlinux.org/iso/{{version}}/sha1sums.txt"
- title="Get the latest SHA1 checksums">SHA1 checksums</a></li>
- <li><a href="https://www.archlinux.org/iso/{{version}}/md5sums.txt"
- title="Get the latest MD5 checksums">MD5 checksums</a></li>
+ <li><a href="https://www.archlinux.org/{{ release.iso_url }}.sig"
+ title="PGP signature">PGP signature</a></li>
+ {% if release.md5_sum %}<li><strong>MD5:</strong> {{ release.md5_sum }}</li>{% endif %}
+ {% if release.sha1_sum %}<li><strong>SHA1:</strong> {{ release.sha1_sum }}</li>{% endif %}
</ul>
{% cache 600 download-mirrors %}
<div id="download-mirrors">
- {% regroup mirror_urls by real_country as grouped_urls %}
+ {% regroup mirror_urls by country as grouped_urls %}
{% for country in grouped_urls %}
- {% if country.grouper %}<h5><img src="{{ country.grouper.flag }}" alt=""/> {{ country.grouper.name }}</h5>
+ {% if country.grouper %}<h5>{% country_flag country.grouper %}{{ country.grouper.name }}</h5>
{% else %}<h5>Worldwide</h5>{% endif %}
<ul>
{% for mirror_url in country.list %}
- <li><a href="{{ mirror_url.url }}iso/{{ version }}/"
- title="Download from {{ mirror_url.url }}iso/{{ version }}/">{{ mirror_url.mirror.name }}</a></li>
+ <li><a href="{{ mirror_url.url }}{{ release.dir_path }}"
+ title="Download from {{ mirror_url.url }}">{{ mirror_url.mirror.name }}</a></li>
{% endfor %}
</ul>
{% endfor %}
</div>
{% endcache %}
- {% endwith %}
- <p>If you want to become an Official Arch Linux Mirror please follow the
+ <p>If you want to become an Official {{BRANDING_DISTRONAME}} Mirror please follow the
instructions listed <a href="{% wiki_url 'DeveloperWiki:NewMirrors' %}">here</a>.</p>
</div>
diff --git a/templates/public/feeds.html b/templates/public/feeds.html
index 91cd9e71..bb8e685a 100644
--- a/templates/public/feeds.html
+++ b/templates/public/feeds.html
@@ -12,8 +12,8 @@
<h3>News and Activity Feeds</h3>
- <p>Grab the <a href="/feeds/news/" class="rss" title="{{ BRANDING_DISTRONAME }} News feed">news item feed</a>
- to keep up-to-date with the latest news from the {{ BRANDING_DISTRONAME }} development staff.</p>
+ <p>Grab the <a href="/feeds/news/" class="rss" title="{{BRANDING_DISTRONAME}} news feed">news item feed</a>
+ to keep up-to-date with the latest news from the {{BRANDING_DISTRONAME}} development staff.</p>
<p>The <a href="{% wiki_url 'Special:RecentChanges?feed=rss' %}"
title="{{ BRANDING_WIKINAME }} Recent Changes feed" class="rss">{{ BRANDING_WIKINAME }}: Recent changes feed</a>
@@ -35,19 +35,26 @@
<table class="pretty2">
<thead>
<tr>
- <th>Architecture</th>
- <th>All Repos</th>
- {% for repo in repos %}
- <th>{{ repo }}</th>
+ <th></th>
+ <th>All Arches</th>
+ {% for arch in arches %}
+ <th>{{ arch }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
- {% for arch in arches %}
<tr>
- <td><strong>{{ arch }}</strong></td>
+ <td><strong>All Repos</strong></td>
+ <td><a href="/feeds/packages/" class="rss">Feed</a></td>
+ {% for arch in arches %}
<td><a href="/feeds/packages/{{ arch }}/" class="rss">Feed</a></td>
- {% for repo in repos %}
+ {% endfor %}
+ </tr>
+ {% for repo in repos %}
+ <tr>
+ <td><strong>{{ repo }}</strong></td>
+ <td><a href="/feeds/packages/all/{{ repo|lower }}/" class="rss">Feed</a></td>
+ {% for arch in arches %}
<td><a href="/feeds/packages/{{ arch }}/{{ repo|lower }}/" class="rss">Feed</a></td>
{% endfor %}
</tr>
@@ -58,6 +65,11 @@
<p>A <a href="https://aur.archlinux.org/rss.php" class="rss" title="AUR newest packages feed">newest packages feed</a>
is also available from the <a href="https://aur.archlinux.org/" title="AUR Homepage">Arch User Repository (AUR)</a>.</p>
+ <h3>Release Feed</h3>
+
+ <p>Grab the <a href="/feeds/releases/" class="rss" title="{{BRANDING_DISTRONAME}} release feed">ISO release feed</a>
+ if you want to help seed the ISO release torrents as they come out.</p>
+
<h3>Development Feeds</h3>
<p>Subscribe to any of the following to track bug tickets and feature
@@ -75,9 +87,9 @@
<tbody>
<tr>
<td>All Projects</td>
- <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&amp;project=99" class="rss">Feed</a></td>
- <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&amp;topic=edit&amp;project=99" class="rss">Feed</a></td>
- <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&amp;topic=clo&amp;project=99" class="rss">Feed</a></td>
+ <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&amp;project=0" class="rss">Feed</a></td>
+ <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&amp;topic=edit&amp;project=0" class="rss">Feed</a></td>
+ <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&amp;topic=clo&amp;project=0" class="rss">Feed</a></td>
</tr><tr>
<td>Arch Linux</td>
<td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&amp;project=1" class="rss">Feed</a></td>
diff --git a/templates/public/index.html b/templates/public/index.html
index 8856fd95..b32260b5 100644
--- a/templates/public/index.html
+++ b/templates/public/index.html
@@ -1,6 +1,5 @@
{% extends "base.html" %}
-{% load markup cache %}
-{% load url from future %}
+{% load cache %}
{% load static from staticfiles %}
{% load wiki %}
@@ -46,19 +45,17 @@
<a href="/feeds/news/" title="{{ BRANDING_SHORTNAME }} News RSS Feed"
class="rss-icon"><img width="16" height="16" src="{% static "rss.png" %}" alt="RSS Feed" /></a>
- {% for news in news_updates %}
- {% if forloop.counter0 < 5 %}
+ {% for news in news_updates %}{% if forloop.counter0 < 5 %}
<h4>
<a href="{{ news.get_absolute_url }}"
title="View full article: {{ news.title }}">{{ news.title }}</a>
</h4>
<p class="timestamp">{{ news.postdate|date }}</p>
<div class="article-content">
- {% if forloop.counter0 == 0 %}{{ news.content|markdown|truncatewords_html:300 }}
- {% else %}{{ news.content|markdown|truncatewords_html:100 }}{% endif %}
+ {% if forloop.counter0 == 0 %}{{ news.html|truncatewords_html:300 }}
+ {% else %}{{ news.html|truncatewords_html:100 }}{% endif %}
</div>
- {% else %}
- {% if forloop.counter0 == 5 %}
+ {% else %}{% if forloop.counter0 == 5 %}
<h3>
<a href="{% url 'news-list' %}"
title="Browse the news archives">Older News</a>
@@ -71,17 +68,14 @@
<a href="{{ news.get_absolute_url }}"
title="View full article: {{ news.title }}">{{ news.title }}</a>
</dd>
- {% if forloop.last %}
- </dl>
- {% endif %}
- {% endif %}
- {% endfor %}
+ {% if forloop.last %}</dl>{% endif %}
+ {% endif %}{% endfor %}
</div>
{% endcache %}
{% endblock %}
{% block content_right %}
-{% cache 59 main-page-right secure %}
+{% cache 59 main-page-updates user.is_authenticated %}
<div id="pkgsearch" class="widget">
<form id="pkgsearch-form" method="get" action="/packages/">
<fieldset>
@@ -89,7 +83,6 @@
<input id="pkgsearch-field" type="text" name="q" size="18" maxlength="200" />
</fieldset>
</form>
-
</div>
<div id="pkg-updates" class="widget box">
@@ -111,7 +104,9 @@
{% endfor %}
</table>
</div>
+{% endcache %}
+{% cache 59 main-page-right secure %}
<div id="nav-sidebar" class="widget">
<h4>Documentation</h4>
@@ -155,11 +150,12 @@
<ul>
<li><a href="{% url 'mirrorlist' %}"
title="Get a custom mirrorlist from our database">Mirrorlist Updater</a></li>
+ <li><a href="{% url 'mirror-list' %}"
+ title="See a listing of all available mirrors">Mirror List</a></li>
<li><a href="{% url 'mirror-status' %}"
title="Check the status of all known mirrors">Mirror Status</a></li>
- <li><a href="/packages/differences/"
- title="See differences in packages between available architectures">Differences Reports</a>
- <img width="16" height="16" src="{% static "new.png" %}" alt="New"/></li>
+ <li><a href="{% url 'packages-differences' %}"
+ title="See differences in packages between available architectures">Differences Reports</a></li>
</ul>
<h4>Development</h4>
@@ -173,21 +169,17 @@
title="Developer Wiki articles">Developer Wiki</a></li>
<li><a href="/groups/"
title="View the available package groups">Package Groups</a></li>
- <li><a href="/todolists/"
+ <li><a href="/todo/"
title="Developer Todo Lists">Todo Lists</a></li>
- <li><a href="{% url 'releng-test-overview' %}"
- title="Releng Testbuild Feedback">Releng Testbuild Feedback</a></li>
<li><a href="{% url 'visualize-index' %}"
- title="View visualizations">Visualizations</a>
- <img width="16" height="16" src="{% static "new.png" %}" alt="New"/></li>
+ title="View visualizations">Visualizations</a></li>
</ul>
<h4>More Resources</h4>
<ul>
<li><a href="{% url 'page-keys' %}"
- title="Package/Database signing master keys">Signing Master Keys</a>
- <img width="16" height="16" src="{% static "new.png" %}" alt="New"/></li>
+ title="Package/Database signing master keys">Signing Master Keys</a></li>
<li><a href="{% wiki_url 'Arch_Linux_Press_Review' %}"
title="Arch Linux in the media">Press Coverage</a></li>
<li><a href="{% url 'page-art' %}" title="{{ BRANDING_SHORTNAME }} logos and other artwork for promotional use">Logos &amp; Artwork</a></li>
@@ -202,22 +194,53 @@
<div id="home-donate-button" class="widget">
<a href="https://co.clickandpledge.com/Default.aspx?WID=47294">
- <img width="210" height="34" src="{% static "CP_EN_BK_S_001.gif" %}" alt="Donate via Click&amp;Pledge to Arch Linux" title="Donate via Click&amp;Pledge to Arch Linux"/>
+ <img width="210" height="34" src="{% static "click_and_pledge.png" %}" alt="Donate via Click&amp;Pledge to Arch Linux" title="Donate via Click&amp;Pledge to Arch Linux"/>
</a>
</div>
<div id="arch-sponsors" class="widget">
-
<a href="http://www.velocitynetwork.net/?hosting_by=ArchLinux" title="Velocity Network">
<img width="252" height="58" src="{% static "vnet_button.png" %}" alt="Velocity Network - It's about time" />
</a>
- <a href="https://www.sevenl.net/?utm_source=archlinux-org&amp;utm_medium=sponsored-banner&amp;utm_campaign=thanks-to-sevenl" title="SevenL Networks - Dedicated Arch Linux servers">
- <img width="252" height="58" src="{% static "sevenl_button.png" %}" title="A big Thank You to SevenL Networks for their generous contribution" alt="We would like to express our thanks to SevenL Networks for their generous contribution" />
- </a>
<a href="http://www.airvm.com/ArchLinux" title="AirVM.com - Your Green Technology Partner">
- <img width="252" height="58" src="{% static "airvm_button.png" %}" title="AirVM.com - Your Green Technology Partner" alt="AirVM.com - Your Green Technology Partner" />
+ <img width="252" height="58" src="{% static "airvm_button.png" %}" alt="AirVM.com - Your Green Technology Partner" />
</a>
-
</div>
{% endcache %}
{% endblock %}
+
+{% block script_block %}
+<div id="konami" style="display:none;"></div>
+
+{% load cdn %}{% jquery %}
+<script type="text/javascript">
+function setupTypeahead() {
+ $('#pkgsearch-field').typeahead({
+ source: function(query, callback) {
+ $.getJSON('/opensearch/packages/suggest', {q: query}, function(data) {
+ callback(data[1]);
+ });
+ },
+ matcher: function(item) { return true; },
+ sorter: function(items) { return items; },
+ menu: '<ul class="pkgsearch-typeahead"></ul>',
+ items: 10
+ }).attr('autocomplete', 'off');
+}
+function setupKonami() {
+ var konami = new Konami(function() {
+ $('#konami').html('<img src="{% static "vector_tux.png" %}" alt=""/>');
+ setTimeout(function() {
+ $('#konami').fadeIn(500);
+ }, 500);
+ $('#konami').click(function() {
+ $('#konami').fadeOut(500);
+ });
+ });
+}
+$(document).ready(function() {
+ $.ajax({ url: "{% static "bootstrap-typeahead.min.js" %}", cache: true, dataType: "script", success: setupTypeahead });
+ $.ajax({ url: "{% static "konami.min.js" %}", cache: true, dataType: "script", success: setupKonami });
+});
+</script>
+{% endblock %}
diff --git a/templates/public/keys.html b/templates/public/keys.html
index 4afc6d6b..c6da6c37 100644
--- a/templates/public/keys.html
+++ b/templates/public/keys.html
@@ -48,6 +48,16 @@
</tbody>
</table>
+ <ul>
+ <li><a href="#master-sigs">Master Key Signatures</a></li>
+ <li><a href="#visualization">Visualization of PGP Master and Developer Keys</a></li>
+ <li><a href="#cross-sigs">Developer Cross-Signatures</a></li>
+ </ul>
+</div>
+
+<div class="box">
+ <h2 id="master-sigs">Master Key Signatures</h2>
+
<p>The following table shows all active developers and trusted users along
with the status of their personal signing key. A 'Yes' indicates that the
personal key of the developer is signed by the given master key. A 'No'
@@ -89,14 +99,56 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+
+<div class="box">
+ <h2 id="visualization">Visualization of PGP Master and Developer Keys</h2>
+
+ <div id="visualize-keys" class="visualize-chart"></div>
+</div>
+
+<div class="box">
+ <h2 id="cross-sigs">Developer Cross-Signatures</h2>
+
+ <p>This table lists signatures directly between developer keys.</p>
+
+ <table class="pretty2" id="cross-signatures">
+ <thead>
+ <tr>
+ <th>Signer</th>
+ <th>Signee</th>
+ <th>Created</th>
+ <th>Expires</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for sig in cross_signatures %}
+ <tr>
+ <td>{% user_pgp_key_link sig.signer %}</td>
+ <td>{% user_pgp_key_link sig.signee %}</td>
+ <td>{{ sig.created }}</td>
+ <td>{{ sig.expires|default:"" }}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+</div>
+
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
+<script type="text/javascript" src="{% static "d3-3.0.6.min.js" %}"></script>
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
+<script type="text/javascript" src="{% static "visualize.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#key-status").tablesorter({
+ sortLocaleCompare: true,
headers: { 1: { sorter: false } }
});
+ $("#cross-signatures").tablesorter({
+ sortLocaleCompare: true
+ });
+});
+$(document).ready(function() {
+ developer_keys("#visualize-keys", "{% url 'pgp-keys-json' %}");
});
</script>
{% endblock %}
diff --git a/templates/public/userlist.html b/templates/public/userlist.html
index 197346c3..6292af83 100644
--- a/templates/public/userlist.html
+++ b/templates/public/userlist.html
@@ -1,8 +1,11 @@
{% extends "base.html" %}
+{% load static from staticfiles %}
{% load cache %}
{% block title %}{{ BRANDING_DISTRONAME }} - {{ user_type }}{% endblock %}
+{% block head %}<link rel="stylesheet" type="text/css" href="{% static "flags/fam.css" %}" media="screen, projection" />{% endblock %}
+
{% block content %}
{% cache 600 dev-tu-profiles user_type %}
<div id="dev-tu-profiles" class="box">
diff --git a/templates/registration/login.html b/templates/registration/login.html
index 783070be..226a0805 100644
--- a/templates/registration/login.html
+++ b/templates/registration/login.html
@@ -1,4 +1,6 @@
{% extends "base.html" %}
+{% load static from staticfiles %}
+
{% block title %}{{ BRANDING_DISTRONAME }} - Developer Login{% endblock %}
{% block content %}
@@ -19,4 +21,13 @@
</form>
</div>
+
+{% load cdn %}{% jquery %}
+<script type="text/javascript" src="{% static "archweb.js" %}"></script>
+<script type="text/javascript">
+ modify_attributes({
+ '#id_username': {autocorrect: 'off', autocapitalize: 'off'}
+ });
+ $('#id_username').focus();
+</script>
{% endblock %}
diff --git a/templates/releng/add.html b/templates/releng/add.html
index ec3b6d8a..80afda80 100644
--- a/templates/releng/add.html
+++ b/templates/releng/add.html
@@ -1,5 +1,4 @@
{% extends "base.html" %}
-{% load url from future %}
{% block title %}{{ BRANDING_DISTRONAME }} - Test Result Entry{% endblock %}
diff --git a/templates/releng/iso_overview.html b/templates/releng/iso_overview.html
index 447ba487..196f0c0a 100644
--- a/templates/releng/iso_overview.html
+++ b/templates/releng/iso_overview.html
@@ -1,6 +1,5 @@
{% extends "base.html" %}
{% load static from staticfiles %}
-{% load url from future %}
{% block content %}
<div class="box">
@@ -37,8 +36,7 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
diff --git a/templates/releng/release_detail.html b/templates/releng/release_detail.html
new file mode 100644
index 00000000..09507536
--- /dev/null
+++ b/templates/releng/release_detail.html
@@ -0,0 +1,46 @@
+{% extends "base.html" %}
+
+{% block title %}Arch Linux - Release: {{ release.version }}{% endblock %}
+
+{% block content %}
+<div class="release box">
+ <h2>{{ release.version }}</h2>
+
+ <ul>
+ <li><strong>Release Date:</strong> {{ release.release_date|date }}</li>
+ {% if release.kernel_version %}<li><strong>Kernel Version:</strong> {{ release.kernel_version }}</li>{% endif %}
+ <li><strong>Available:</strong> {{ release.available|yesno }}</li>
+ {% if release.available %}<li><strong>Download:</strong> <a
+ href="{% url 'releng-release-torrent' release.version %}"
+ title="Download torrent for {{ release.version }}">Torrent</a>,
+ <a href="{{ release.magnet_uri }}">Magnet</a></li>{% endif %}
+ {% if release.torrent_infohash %}<li><strong>Torrent Info Hash:</strong> {{ release.torrent_infohash }}</li>{% endif %}
+ {% if release.md5_sum %}<li><strong>MD5:</strong> {{ release.md5_sum }}</li>{% endif %}
+ {% if release.sha1_sum %}<li><strong>SHA1:</strong> {{ release.sha1_sum }}</li>{% endif %}
+ <li><strong>Download Size:</strong> {% if release.file_size %}{{ release.file_size|filesizeformat }}{% else %}Unknown{% endif %}</li>
+ </ul>
+
+ {% if release.info %}
+ <h3>Release Notes</h3>
+
+ <div class="article-content">{{ release.info_html }}</div>
+ {% endif %}
+
+ {% if release.torrent_data %}{% with release.torrent as torrent %}
+ <h3>Torrent Information</h3>
+
+ <ul>
+ <li><strong>Comment:</strong> {{ torrent.comment }}</li>
+ <li><strong>Creation Date:</strong> {{ torrent.creation_date|date:"DATETIME_FORMAT" }} UTC</li>
+ <li><strong>Created By:</strong> {{ torrent.created_by }}</li>
+ <li><strong>Announce URL:</strong> {{ torrent.announce }}</li>
+ <li><strong>File Name:</strong> {{ torrent.file_name }}</li>
+ <li><strong>File Length:</strong> {{ torrent.file_length|filesizeformat }}</li>
+ <li><strong>Piece Count:</strong> {{ torrent.piece_count }} pieces</li>
+ <li><strong>Piece Length:</strong> {{ torrent.piece_length|filesizeformat }}</li>
+ <li><strong>Computed Info Hash:</strong> {{ torrent.info_hash }}</li>
+ <li><strong>URL List Length:</strong> {{ torrent.url_list|length }} URLs</li>
+ </ul>
+ {% endwith %}{% endif %}
+</div>
+{% endblock %}
diff --git a/templates/releng/release_list.html b/templates/releng/release_list.html
new file mode 100644
index 00000000..5f248264
--- /dev/null
+++ b/templates/releng/release_list.html
@@ -0,0 +1,54 @@
+{% extends "base.html" %}
+{% load static from staticfiles %}
+
+{% block title %}Arch Linux - Releases{% endblock %}
+
+{% block head %}
+<link rel="alternate" type="application/rss+xml" title="Arch Linux News Updates" href="/feeds/releases/" />
+{% endblock %}
+
+{% block content %}
+<div id="release-list" class="box">
+ <h2>Releases</h2>
+
+ <table id="release-table" class="results">
+ <thead>
+ <tr>
+ <th>Release Date</th>
+ <th>Version</th>
+ <th>Kernel Version</th>
+ <th>Available?</th>
+ <th>Torrent</th>
+ <th>Magnet</th>
+ <th>Download Size</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for item in release_list %}
+ <tr class="{% cycle 'odd' 'even' %}">
+ <td>{{ item.release_date|date }}</td>
+ <td><a href="{{ item.get_absolute_url }}" title="Release details for {{ item.version }}">{{ item.version }}</a></td>
+ <td>{{ item.kernel_version|default:"" }}</td>
+ <td class="available-{{ item.available|yesno }}">{{ item.available|yesno|capfirst }}</td>
+ <td>{% if item.available %}<a href="{% url 'releng-release-torrent' item.version %}"
+ title="Download torrent for {{ item.version }}">Torrent</a>{% endif %}</td>
+ <td>{% if item.available %}<a href="{{ item.magnet_uri }}">Magnet</a>{% endif %}</td>
+ <td>{% if item.file_size %}{{ item.file_size|filesizeformat }}{% endif %}</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+</div>
+
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
+<script type="text/javascript" src="{% static "archweb.js" %}"></script>
+<script type="text/javascript">
+$(document).ready(function() {
+ $(".results").tablesorter({
+ widgets: ['zebra'],
+ sortList: [[0,1], [1,1]],
+ headers: { 4: { sorter: false }, 5: { sorter: false } }
+ });
+});
+</script>
+{% endblock %}
diff --git a/templates/releng/result_list.html b/templates/releng/result_list.html
index 207a8ba3..67e5934d 100644
--- a/templates/releng/result_list.html
+++ b/templates/releng/result_list.html
@@ -1,12 +1,11 @@
{% extends "base.html" %}
{% load static from staticfiles %}
-{% load url from future %}
{% block content %}
<div class="box">
<h2>Results for:
{% if option %}{{ option.verbose_name|title }}: {{ value }}{% endif %}
- {{ iso_name|default:"" }}
+ {% if iso_name %}{{ iso_name|default:"" }}{% endif %}
</h2>
<p><a href="{% url 'releng-test-overview' %}">Go back to testing results</a></p>
@@ -34,8 +33,7 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
diff --git a/templates/releng/result_section.html b/templates/releng/result_section.html
index 91a75613..5e0b6f62 100644
--- a/templates/releng/result_section.html
+++ b/templates/releng/result_section.html
@@ -1,6 +1,5 @@
-{% load url from future %}
<tr>
- <th>{% if option.is_rollback %}Rollback: {% endif %}{{ option.name|title }}</td>
+ <th>{% if option.is_rollback %}Rollback: {% endif %}{{ option.name|title }}</th>
<th>Last Success</th>
<th>Last Failure</th>
</tr>
diff --git a/templates/releng/results.html b/templates/releng/results.html
index df98d1ac..71a31fef 100644
--- a/templates/releng/results.html
+++ b/templates/releng/results.html
@@ -1,5 +1,4 @@
{% extends "base.html" %}
-{% load url from future %}
{% load wiki %}
{% block title %}{{ BRANDING_DISTRONAME }} - Release Engineering Testbuild Results{% endblock %}
diff --git a/templates/releng/thanks.html b/templates/releng/thanks.html
index 1ad7260d..b772fad3 100644
--- a/templates/releng/thanks.html
+++ b/templates/releng/thanks.html
@@ -1,5 +1,4 @@
{% extends "base.html" %}
-{% load url from future %}
{% block title %}{{ BRANDING_DISTRONAME }} - Feedback - Thanks!{% endblock %}
diff --git a/templates/todolists/email_notification.txt b/templates/todolists/email_notification.txt
index 8b22b465..e454ec79 100644
--- a/templates/todolists/email_notification.txt
+++ b/templates/todolists/email_notification.txt
@@ -1,7 +1,7 @@
{% autoescape off %}The todo list "{{ todolist.name }}" has had the following packages added to it for which you are a maintainer:
{% for tpkg in todo_packages %}
-* {{ tpkg.pkg.repo.name|lower }}/{{ tpkg.pkg.pkgname }} ({{ tpkg.pkg.arch.name }}) - {{ tpkg.pkg.get_full_url }}{% endfor %}
+* {{ tpkg.repo.name|lower }}/{{ tpkg.pkgname }} ({{ tpkg.arch.name }}) - {{ tpkg.pkg.get_full_url }}{% endfor %}
Todo list information:
Name: {{ todolist.name }}
diff --git a/templates/todolists/list.html b/templates/todolists/list.html
index 36e0eac7..b7d10264 100644
--- a/templates/todolists/list.html
+++ b/templates/todolists/list.html
@@ -8,11 +8,14 @@
<h2>Package Todo Lists</h2>
- {% if perms.main.add_todolist %}
- <ul class="admin-actions">
+ {% if perms.todolists.add_todolist %}<ul class="admin-actions">
<li><a href="/todo/add/" title="Add new todo list">Add Todo List</a></li>
- </ul>
- {% endif %}
+ </ul>{% endif %}
+
+ <p>Todo lists are used by the developers when a rebuild of a set of
+ packages is needed. This is common when a library has a version bump,
+ during a toolchain rebuild, or a general cleanup of packages in the
+ repositories. The progress can be tracked here.</p>
<table id="dev-todo-lists" class="results todo-table">
<thead>
@@ -31,7 +34,7 @@
<tr class="{% cycle 'odd' 'even' %}">
<td><a href="{{ list.get_absolute_url }}"
title="View todo list: {{ list.name }}">{{ list.name }}</a></td>
- <td>{{ list.date_added|date }}</td>
+ <td>{{ list.created|date }}</td>
<td>{{ list.creator.get_full_name }}</td>
<td class="wrap">{{ list.description|urlize }}</td>
<td>{{ list.pkg_count }}</td>
@@ -43,14 +46,13 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
// I'm not sure why it didn't autodetect digit, but it has to be explicit
// http://stackoverflow.com/questions/302749/jquery-tablesorter-problem
- $(".results").tablesorter({widgets: ['zebra'], sortList: [[1,1]],
+ $(".results").tablesorter({widgets: ['zebra'], sortList: [[6, 1], [1, 1]],
headers: { 4: { sorter: 'digit' }, 5: { sorter: 'digit' } } });
});
</script>
diff --git a/templates/todolists/public_list.html b/templates/todolists/public_list.html
deleted file mode 100644
index 09251a17..00000000
--- a/templates/todolists/public_list.html
+++ /dev/null
@@ -1,76 +0,0 @@
-{% extends "base.html" %}
-{% load static from staticfiles %}
-{% load package_extras %}
-
-{% block title %}{{ BRANDING_DISTRONAME }} - Todo Lists{% endblock %}
-
-{% block content %}
-<div class="box">
- <h2>Developer Todo Lists</h2>
- <div id="public_todo_lists_toc">
- <h3>Open Developer Todo Lists</h3>
- <p>Todo lists are used by the developers when a rebuild of a set of
- packages is needed. This is common when a library has an .so version
- bump; during a toolchain rebuild, or a general cleanup of packages in
- the repositories. The progress can be tracked here. Only todo lists
- with currently incomplete packages are shown.</p>
- {% if todo_lists %}<ul>
- {% for list in todo_lists %}
- <li><a href="#{{ list.id }}">{{ list.name }}</a></li>
- {% endfor %}
- </ul>{% else %}
- <p>There are currently no incomplete developer todo lists.</p>
- {% endif %}
- </div>
-</div>
-{% if todo_lists %}
-<div id="public-todo-lists">
- {% for list in todo_lists %}
- <div class="box">
- <div class="todo-list">
- <a name="{{ list.id }}"></a>
- <h4>{{ list.name }}</h4>
- <p class="todo-info">{{ list.date_added|date }} - {{ list.creator.get_full_name }}</p>
- <div>{{ list.description|urlize|linebreaks }}</div>
- <table id="todo-pkglist-{{ list.id }}" class="results todo-table">
- <thead>
- <tr>
- <th>Name</th>
- <th>Arch</th>
- <th>Repo</th>
- <th>Maintainer</th>
- <th>Status</th>
- </tr>
- </thead>
- <tbody>
- {% for pkg in list.packages %}
- <tr class="{% cycle 'odd' 'even' %}">
- <td>{% pkg_details_link pkg.pkg %}</td>
- <td>{{ pkg.pkg.arch.name }}</td>
- <td>{{ pkg.pkg.repo.name|capfirst }}</td>
- <td>{{ pkg.pkg.maintainers|join:', ' }}</td>
- <td>
- {% if pkg.complete %}
- <span class="complete">Complete</span>
- {% else %}
- <span class="incomplete">Incomplete</span>
- {% endif %}
- </td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </div>
- </div>
- {% endfor %}
-</div>
-{% endif %}
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
-<script type="text/javascript" src="{% static "archweb.js" %}"></script>
-<script type="text/javascript">
-$(document).ready(function() {
- $(".results").tablesorter({widgets: ['zebra'], sortList: [[0,0], [1,0]]});
-});
-</script>
-{% endblock %}
diff --git a/templates/todolists/view.html b/templates/todolists/view.html
index e53ead82..644e78b0 100644
--- a/templates/todolists/view.html
+++ b/templates/todolists/view.html
@@ -1,6 +1,7 @@
{% extends "base.html" %}
{% load static from staticfiles %}
{% load package_extras %}
+{% load todolists %}
{% block title %}{{ BRANDING_DISTRONAME }} - Todo: {{ list.name }}{% endblock %}
@@ -10,17 +11,17 @@
<h2>Todo List: {{ list.name }}</h2>
<ul class="admin-actions">
- {% if perms.main.delete_todolist %}
- <li><a href="/todo/delete/{{list.id}}/"
+ {% if perms.todolists.delete_todolist %}
+ <li><a href="/todo/{{ list.slug }}/delete/"
title="Delete this todo list">Delete Todo List</a></li>
{% endif %}
- {% if perms.main.change_todolist %}
- <li><a href="/todo/edit/{{list.id}}/"
+ {% if perms.todolists.change_todolist %}
+ <li><a href="/todo/{{ list.slug }}/edit/"
title="Edit this todo list">Edit Todo List</a></li>
{% endif %}
</ul>
- <p class="todo-info">{{ list.date_added|date }} - {{ list.creator.get_full_name }}</p>
+ <p class="todo-info">{{ list.created|date }} - {{ list.creator.get_full_name }}</p>
<div>{{list.description|urlize|linebreaks}}</div>
@@ -29,6 +30,34 @@
<li><a href="pkgbases/{{ svn_root }}/">{{ svn_root }}</a></li>
{% endfor %}</ul>
+ <p>{{ list.packages|length }} total todo list package{{ list.packages|pluralize }} found.</p>
+
+ <div class="box filter-criteria">
+ <h3>Filter Todo List Packages</h3>
+ <form id="todolist_filter" method="post" action=".">
+ <fieldset>
+ <legend>Select filter criteria</legend>
+ {% for arch in arches %}
+ <div><label for="id_arch_{{ arch.name }}" title="Architecture {{ arch.name }}">Arch {{ arch.name }}</label>
+ <input type="checkbox" name="arch_{{ arch.name }}" id="id_arch_{{ arch.name }}" class="arch_filter" value="{{ arch.name }}" checked="checked"/></div>
+ {% endfor %}
+ {% for repo in repos %}
+ <div><label for="id_repo_{{ repo.name|lower }}" title="Target Repository {{ repo.name }}">[{{ repo.name|lower }}]</label>
+ <input type="checkbox" name="repo_{{ repo.name|lower }}" id="id_repo_{{ repo.name|lower }}" class="repo_filter" value="{{ repo.name|lower }}" checked="checked"/></div>
+ {% endfor %}
+ {% if user.is_authenticated %}
+ <div><label for="id_mine_only" title="Show only packages maintained by me">Only Mine</label>
+ <input type="checkbox" name="mine_only" id="id_mine_only" value="mine_only"/></div>
+ {% endif %}
+ <div><label for="id_incomplete" title="Packages not yet completed">Only Incomplete</label>
+ <input type="checkbox" name="incomplete" id="id_incomplete" value="incomplete"/></div>
+ <div ><label>&nbsp;</label><input title="Reset search criteria" type="button" id="criteria_reset" value="Reset"/></div>
+ <div class="clear"></div>
+ <div id="filter-info"><span id="filter-count">{{ list.packages|length }}</span> todo list packages displayed.</div>
+ </fieldset>
+ </form>
+ </div>
+
<table id="dev-todo-pkglist" class="results todo-table">
<thead>
<tr>
@@ -36,33 +65,34 @@
<th>Repository</th>
<th>Name</th>
<th>Current Version</th>
+ <th>Staging Version</th>
<th>Maintainers</th>
<th>Status</th>
</tr>
</thead>
<tbody>
{% for pkg in list.packages %}
- <tr class="{% cycle 'odd' 'even' %}">
- <td>{{ pkg.pkg.arch.name }}</td>
- <td>{{ pkg.pkg.repo.name|capfirst }}</td>
- <td>{% pkg_details_link pkg.pkg %}</td>
+ <tr class="{% cycle 'odd' 'even' %}{% if user in pkg.maintainers %} mine{% endif %} {{ pkg.arch.name }} {{ pkg.repo.name|lower }}">
+ <td>{{ pkg.arch.name }}</td>
+ <td>{{ pkg.repo.name|capfirst }}</td>
+ <td>{% todopkg_details_link pkg %}</td>
{% if pkg.pkg.flag_date %}
<td><span class="flagged">{{ pkg.pkg.full_version }}</span></td>
- {% else %}
+ {% elif pkg.pkg %}
<td>{{ pkg.pkg.full_version }}</td>
+ {% else %}
+ <td></td>
{% endif %}
- <td>{{ pkg.pkg.maintainers|join:', ' }}</td>
+ {% with staging=pkg.staging %}
+ <td>{% if staging %}{% pkg_details_link staging staging.full_version %}{% endif %}</td>
+ {% endwith %}
+ <td>{{ pkg.maintainers|join:', ' }}</td>
<td>
- {% if perms.main.change_todolistpkg %}
- {% if pkg.complete %}
- <a href="/todo/flag/{{ list.id }}/{{ pkg.id }}/"
- class="status-link complete" title="Toggle completion status">Complete</a>
+ {% if perms.todolists.change_todolistpackage %}
+ <a href="/todo/{{ list.slug }}/flag/{{ pkg.id }}/"
+ class="status-link {{ pkg.status_css_class }}" title="Toggle completion status">{{ pkg.get_status_display }}</a>
{% else %}
- <a href="/todo/flag/{{ list.id }}/{{ pkg.id }}/"
- class="status-link incomplete" title="Toggle completion status">Incomplete</a>
- {% endif %}
- {% else %}
- {% if pkg.complete %}<span class="complete">Complete</span>{% else %}<span class="incomplete">Incomplete</span>{% endif %}
+ <span class="{{ pkg.status_css_class }}">{{ pkg.get_status_display }}</span>
{% endif %}
</td>
</tr>
@@ -70,17 +100,23 @@
</tbody>
</table>
</div>
-{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "jquery.tablesorter.min.js" %}"></script>
+{% load cdn %}{% jquery %}{% jquery_tablesorter %}
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
- $('a.status-link').click(todolist_flag);
$(".results").tablesorter({
widgets: ['zebra'],
sortList: [[2,0], [0,0]],
- headers: { 5: { sorter: 'todostatus' } }
+ headers: { 6: { sorter: 'todostatus' } }
});
});
+$(document).ready(function() {
+ $('a.status-link').click(todolist_flag);
+ var filter_func = function() { filter_pkgs_list('#todolist_filter', '#dev-todo-pkglist tbody'); };
+ $('#todolist_filter input').change(filter_func);
+ $('#criteria_reset').click(function() { filter_pkgs_reset(filter_func); });
+ // fire function on page load to ensure the current form selections take effect
+ filter_func();
+});
</script>
{% endblock %}
diff --git a/templates/visualize/index.html b/templates/visualize/index.html
index 617bf8d1..bd98dcae 100644
--- a/templates/visualize/index.html
+++ b/templates/visualize/index.html
@@ -1,6 +1,5 @@
{% extends "base.html" %}
{% load static from staticfiles %}
-{% load url from future %}
{% block title %}{{ BRANDING_DISTRONAME }} - Visualizations{% endblock %}
@@ -24,13 +23,9 @@
</div>
<div id="visualize-archrepo" class="visualize-chart"></div>
</div>
-<div class="box">
- <h2>Visualization of PGP Master and Signing Keys</h2>
- <div id="visualize-keys" class="visualize-chart"></div>
-</div>
{% load cdn %}{% jquery %}
-<script type="text/javascript" src="{% static "d3.v2.min.js" %}"></script>
+<script type="text/javascript" src="{% static "d3-3.0.6.min.js" %}"></script>
<script type="text/javascript" src="{% static "archweb.js" %}"></script>
<script type="text/javascript" src="{% static "visualize.js" %}"></script>
<script type="text/javascript">
@@ -40,7 +35,6 @@ $(document).ready(function() {
"arch": { url: "{% url 'visualize-byarch' %}", color_attr: "arch" },
};
packages_treemap("#visualize-archrepo", orderings, "repo");
- developer_keys("#visualize-keys", "{% url 'visualize-pgp_keys' %}");
});
</script>
{% endblock %}