diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-04-21 02:22:44 -0400 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-04-21 02:22:44 -0400 |
commit | 03fa7e4f27bdb39a8f8f5ed91a87d18bf8357b47 (patch) | |
tree | c67eafcbda55706f18400b3115a2b8a5be318394 /templates | |
parent | 91c451821ce7000cbc268cec8427d208a6cedd7e (diff) | |
parent | b8ee7b1ee281b45b245fb454228b8ad847c56200 (diff) |
Merge branch 'archweb' into archweb-generic2
Conflicts:
devel/views.py
feeds.py
public/views.py
settings.py
sitestatic/archweb.js
templates/base.html
templates/devel/profile.html
templates/mirrors/status.html
templates/news/view.html
templates/packages/flaghelp.html
templates/packages/opensearch.xml
templates/public/download.html
templates/public/feeds.html
templates/public/index.html
templates/registration/login.html
templates/releng/results.html
templates/todolists/public_list.html
Diffstat (limited to 'templates')
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 }}&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 }}&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> </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">< 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 ></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> </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 }}&{{ current_query }}" title="Go to previous page">< Prev</a> {% else %} < 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 }}&{{ current_query }}" title="Go to next page">Next ></a> {% else %} Next > 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&Pledge to Arch Linux"/>Click&Pledge</a>. + <p>Financial contributions are accepted via <a href="https://co.clickandpledge.com/Default.aspx?WID=47294" title="Donate via Click&Pledge to Arch Linux">Click&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&Pledge to Arch Linux" title="Donate via Click&Pledge to Arch Linux"/> + <img width="210" height="34" src="{% static "click_and_pledge.png" %}" alt="Donate via Click&Pledge to Arch Linux" title="Donate via Click&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&utm_medium=sponsored-banner&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&utm_medium=sponsored-banner&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&cPath=1_46&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&project=99" class="rss">Feed</a></td> - <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&topic=edit&project=99" class="rss">Feed</a></td> - <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&topic=clo&project=99" class="rss">Feed</a></td> + <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&project=0" class="rss">Feed</a></td> + <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&topic=edit&project=0" class="rss">Feed</a></td> + <td><a href="https://bugs.archlinux.org/feed.php?feed_type=rss2&topic=clo&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&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 & 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&Pledge to Arch Linux" title="Donate via Click&Pledge to Arch Linux"/> + <img width="210" height="34" src="{% static "click_and_pledge.png" %}" alt="Donate via Click&Pledge to Arch Linux" title="Donate via Click&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&utm_medium=sponsored-banner&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> </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 %} |