Here is a patch that hopefully fixes this issue. It adds two new template tags, "octicon" which renders any octicon with alternate text (which should appear as both mouseover text and text-mode-only text), and "toggle_chevron" which gives a downward chevron to toggle the display of details (this was so frequent special case that it seemed worth its own tag). The only testing I have done is to make sure that "manage.py test" didn't break.
diff --git a/distro_tracker/accounts/templates/accounts/subscriptions.html b/distro_tracker/accounts/templates/accounts/subscriptions.html index 74f6168..ac52d67 100644 --- a/distro_tracker/accounts/templates/accounts/subscriptions.html +++ b/distro_tracker/accounts/templates/accounts/subscriptions.html @@ -1,5 +1,6 @@ {% extends 'core/base.html' %} {% load staticfiles %} +{% load distro_tracker_extras %} {% block title %}Subscriptions | {{ block.super }}{% endblock %} {% block extra-js %} @@ -21,7 +22,7 @@ <div class="accordion-group row"> <div class="accordion-heading col-xs-12 m-y-1"> <b>Subscriptions for {{ email }}</b> - <button class="btn btn-sm btn-default" data-toggle="collapse" data-target="#emails-{{ forloop.counter }}"><span class="octicon octicon-chevron-down" title="Toggle details"></span></button> + <button class="btn btn-sm btn-default" data-toggle="collapse" data-target="#emails-{{ forloop.counter }}">{% toggle_chevron %}</button> {% if email_subscriptions.subscriptions %} <form style="display: inline-block; margin-bottom: 0px;" action="{% url 'dtracker-api-accounts-unsubscribe-all' %}" method="POST">{% csrf_token %} <input type="hidden" name="email" value="{{ email }}"> @@ -61,7 +62,7 @@ <div class="accordion-heading"> <div class="row"> <div class="col-md-6"> - <button class="btn btn-sm btn-default" data-toggle="collapse" data-parent="#{{ accordion_id }}" data-target="#{{ details_id }}"><span class="octicon octicon-chevron-down"></span></button> + <button class="btn btn-sm btn-default" data-toggle="collapse" data-parent="#{{ accordion_id }}" data-target="#{{ details_id }}">{% toggle_chevron %}</button> <span class='subscription-package'> {% if subscription.package.get_absolute_url %} <a href="{{ subscription.package.get_absolute_url }}">{{ subscription.package }}</a> @@ -109,7 +110,7 @@ <div class="accordion-heading"> <div class="row"> <div class="col-md-6"> - <button class="btn btn-sm btn-default" data-toggle="collapse" data-parent="#{{ accordion_id }}" data-target="#{{ details_id }}"><span class="octicon octicon-chevron-down"></span></button> + <button class="btn btn-sm btn-default" data-toggle="collapse" data-parent="#{{ accordion_id }}" data-target="#{{ details_id }}">{% toggle_chevron %}</button> <span class='team-membership'> <a href="{{ membership.team.get_absolute_url }}">{{ membership.team }}</a> </span> diff --git a/distro_tracker/core/panels.py b/distro_tracker/core/panels.py index 7622a76..d72d0b2 100644 --- a/distro_tracker/core/panels.py +++ b/distro_tracker/core/panels.py @@ -25,6 +25,7 @@ from distro_tracker.core.models import PackageExtractedInfo from distro_tracker.core.models import MailingList from distro_tracker.core.models import News from distro_tracker.core.models import BinaryPackageBugStats +from distro_tracker.core.templatetags.distro_tracker_extras import octicon from debian.debian_support import AptPkgVersion from collections import defaultdict @@ -473,9 +474,8 @@ class VersionedLinks(BasePanel): class DscLinkProvider(VersionedLinks.LinkProvider): icons = [ - mark_safe( - '<span title=".dsc, use dget on this link to retrieve source ' - 'package" class="octicon octicon-desktop-download"></span>'), + octicon('desktop-download', + '.dsc, use dget on this link to retrieve source package'), ] def get_link_for_icon(self, package, index): diff --git a/distro_tracker/core/templates/core/edit-team-membership.html b/distro_tracker/core/templates/core/edit-team-membership.html index 6840046..77c4fe2 100644 --- a/distro_tracker/core/templates/core/edit-team-membership.html +++ b/distro_tracker/core/templates/core/edit-team-membership.html @@ -1,5 +1,6 @@ {% extends 'core/base.html' %} {% load staticfiles %} +{% load distro_tracker_extras %} {% block extra-js %} <script src="{% static 'accounts/js/profile.js' %}"></script> @@ -21,8 +22,7 @@ <div class="accordion-heading"> <div class="row"> <div class="col-md-10"> - <button class="btn btn-sm btn-default" data-toggle="collapse" data-parent="#{{ accordion_id }}" data-target="#{{ accordion_id }}-details-{{ forloop.counter }}"><span class="octicon - octicon-chevron-down"></span></button> + <button class="btn btn-sm btn-default" data-toggle="collapse" data-parent="#{{ accordion_id }}" data-target="#{{ accordion_id }}-details-{{ forloop.counter }}">{% toggle-chevron %}</button> {% if pkg.get_absolute_url %} <a href="{{ pkg.get_absolute_url }}">{{ pkg }}</a> {% else %} diff --git a/distro_tracker/core/templates/core/octicon.html b/distro_tracker/core/templates/core/octicon.html new file mode 100644 index 0000000..7af8464 --- /dev/null +++ b/distro_tracker/core/templates/core/octicon.html @@ -0,0 +1 @@ +<span class="octicon octicon-{{ name }}" title="{{ text }}"><span class="sr-only">{{ text }}</span></span> diff --git a/distro_tracker/core/templates/core/panels/action-needed.html b/distro_tracker/core/templates/core/panels/action-needed.html index 427d648..9d4078c 100644 --- a/distro_tracker/core/templates/core/panels/action-needed.html +++ b/distro_tracker/core/templates/core/panels/action-needed.html @@ -1,5 +1,6 @@ {% extends 'core/panels/panel.html' %} {% load +{% load distro_tracker_extras %} {% block panel-body %} <div class="list-group list-group-flush" id="action-needed-list"> @@ -9,9 +10,8 @@ <span data-toggle="collapse" data-parent="#action-needed-list" data-target="#action-needed-details-{{ forloop.counter }}" - class="chevron" - title="Click to toggle more details"> - <span class="octicon octicon-chevron-down"></span> + class="chevron"> + {% toggle-chevron %} </span> {# The short description is allowed to contain some HTML markup #} {{ item.short_description|safe }} diff --git a/distro_tracker/core/templates/core/panels/news.html b/distro_tracker/core/templates/core/panels/news.html index 9706bb7..fc696b3 100644 --- a/distro_tracker/core/templates/core/panels/news.html +++ b/distro_tracker/core/templates/core/panels/news.html @@ -1,12 +1,13 @@ {% extends 'core/panels/panel.html' %} +{% load distro_tracker_extras %} {% block panel-header %} <div class="row"> <div class="col-xs-12"> <a href="{% url 'dtracker-package-news' package.name %}">{{ panel.title }}</a> <div class="pull-xs-right"> - <a title="rss feed" href="{% url 'dtracker-package-rss-news-feed' package.name %}"> - <span class="octicon octicon-rss"></span> + <a href="{% url 'dtracker-package-rss-news-feed' package.name %}"> + {% octicon 'rss' 'rss feed' %} </a> </div> </div> diff --git a/distro_tracker/core/templates/core/panels/versions.html b/distro_tracker/core/templates/core/panels/versions.html index 595727d..e7e6416 100644 --- a/distro_tracker/core/templates/core/panels/versions.html +++ b/distro_tracker/core/templates/core/panels/versions.html @@ -1,4 +1,5 @@ {% extends 'core/panels/panel.html' %} +{% load distro_tracker_extras %} {% block panel-header %} <div class="row"> @@ -6,15 +7,15 @@ {{ panel.title }} {% if panel.context.external_resources %} {% for external in panel.context.external_resources %} - <a class="m-l-1" href="{{ external.url }}" title="{{ external.description }}"> - <span class="octicon octicon-link-external"></span> + <a class="m-l-1" href="{{ external.url }}"> + {% octicon 'link-external' external.description %} </a> {% endfor %} {% endif %} {% with versions=panel.context.version_info %} <div class="pull-xs-right"> {% if versions.default_pool_url %} - <a href="{{ versions.default_pool_url }}" title="pool directory"><span class="octicon octicon-file-directory"></span></a> + <a href="{{ versions.default_pool_url }}">{% octicon 'file-directory' 'pool directory' %}</a> {% endif %} </div> {% endwith %} diff --git a/distro_tracker/core/templates/core/team.html b/distro_tracker/core/templates/core/team.html index 11b9f02..b328bf3 100644 --- a/distro_tracker/core/templates/core/team.html +++ b/distro_tracker/core/templates/core/team.html @@ -1,5 +1,6 @@ {% extends "core/base.html" %} {% load staticfiles %} +{% load distro_tracker_extras %} {% with team=object %} {% block title %}{{ block.super }} - {{ team }}{% endblock %} @@ -111,7 +112,7 @@ {% endif %} {% if user_member_of_team %} <div class="pull-xs-right"> - <a href="{% url 'dtracker-team-remove-package' team.slug %}?package={{ package }}"><span data-package="{{ package }}" class="remove-package-from-team-button octicon octicon-trashcan"></span></a> + <a href="{% url 'dtracker-team-remove-package' team.slug %}?package={{ package }}"><span data-package="{{ package }}" class="remove-package-from-team-button">{% octicon 'trashcan' 'remove package from team' %}</span></a> </div> {% endif %} </div> diff --git a/distro_tracker/core/templates/core/toggle-chevron.html b/distro_tracker/core/templates/core/toggle-chevron.html new file mode 100644 index 0000000..9ec7def --- /dev/null +++ b/distro_tracker/core/templates/core/toggle-chevron.html @@ -0,0 +1,2 @@ +{% load distro_tracker_extras %} +{% octicon 'chevron-down' 'Toggle details' %} diff --git a/distro_tracker/core/templatetags/distro_tracker_extras.py b/distro_tracker/core/templatetags/distro_tracker_extras.py index 9ae3924..fd81af6 100644 --- a/distro_tracker/core/templatetags/distro_tracker_extras.py +++ b/distro_tracker/core/templatetags/distro_tracker_extras.py @@ -49,6 +49,22 @@ def repeat(parser, token): return RepeatNode(nodelist, count) +@register.inclusion_tag('core/octicon.html') +def octicon(name, text): + """ + Renders an octicon with alternate text. + """ + return { 'name':name, 'text':text } + + +@register.inclusion_tag('core/toggle-chevron.html') +def toggle_chevron(): + """ + Renders a chevron to toggle details. + """ + return {} + + @register.filter(name='zip') def zip_iterables(first, second): """ diff --git a/distro_tracker/core/tests/tests_news_feed.py b/distro_tracker/core/tests/tests_news_feed.py index 1dbc620..7d9e70d 100644 --- a/distro_tracker/core/tests/tests_news_feed.py +++ b/distro_tracker/core/tests/tests_news_feed.py @@ -357,5 +357,5 @@ class NewsFeedTests(TestCase): response = self.client.get(pkg_url) - self.assertIn('<a title="rss feed" href="{}">'.format(rss_url), + self.assertIn('<a href="{}">'.format(rss_url), response.content.decode('utf8')) diff --git a/distro_tracker/extract_source_files/tracker_panels.py b/distro_tracker/extract_source_files/tracker_panels.py index cc87e8c..ffdf80b 100644 --- a/distro_tracker/extract_source_files/tracker_panels.py +++ b/distro_tracker/extract_source_files/tracker_panels.py @@ -14,7 +14,7 @@ files in the :class:`distro_tracker.core.panels.VersionedLinks` panel. from __future__ import unicode_literals from distro_tracker.core.panels import VersionedLinks from distro_tracker.core.models import ExtractedSourceFile -from django.utils.safestring import mark_safe +from distro_tracker.core.templatetags.distro_tracker_extras import octicon class SourceFilesLinkProvider(VersionedLinks.LinkProvider): @@ -23,13 +23,10 @@ class SourceFilesLinkProvider(VersionedLinks.LinkProvider): :class:`distro_tracker.core.panels.VersionedLinks` panel. """ icons = [ - mark_safe('<span class="octicon octicon-tasklist" ' - 'title="changelog"></span>'), - mark_safe('<span class="octicon octicon-law" ' - 'title="copyright"></span>'), - mark_safe('<span class="octicon octicon-tools" title="rules"></span>'), - mark_safe('<span class="octicon octicon-package" ' - 'title="control"></span>'), + octicon('tasklist', 'changelog'), + octicon('law', 'copyright'), + octicon('tools', 'rules'), + octicon('package', 'control'), ] _file_names = [ diff --git a/distro_tracker/vendor/debian/templates/debian/bugs.html b/distro_tracker/vendor/debian/templates/debian/bugs.html index 4770973..442db7e 100644 --- a/distro_tracker/vendor/debian/templates/debian/bugs.html +++ b/distro_tracker/vendor/debian/templates/debian/bugs.html @@ -1,9 +1,10 @@ {% extends 'core/panels/bugs.html' %} +{% load distro_tracker_extras %} {# Add the bug history graph to the panel's heading #} {% block panel-header %} {{ block.super }} -<a class="m-l-1" href="{{ panel.context.graph_url }}"><span class="octicon octicon-graph" title="bug history graph"></span></a> +<a class="m-l-1" href="{{ panel.context.graph_url }}">{% octicon 'graph' 'bug history graph' %}</a> {% endblock %} {% block bugs-list %} diff --git a/distro_tracker/vendor/debian/templates/debian/ubuntu-panel.html b/distro_tracker/vendor/debian/templates/debian/ubuntu-panel.html index 5157318..6130227 100644 --- a/distro_tracker/vendor/debian/templates/debian/ubuntu-panel.html +++ b/distro_tracker/vendor/debian/templates/debian/ubuntu-panel.html @@ -1,10 +1,11 @@ {% extends 'core/panels/panel.html' %} {% load staticfiles %} +{% load distro_tracker_extras %} {% block panel-header %} {{ block.super }} <img class="m-l-1" style="width: 14px; height: 14px" src="{% static 'img/ubuntu.png' %}" alt="Ubuntu logo"> -<a class="pull-xs-right" href="https://wiki.ubuntu.com/Ubuntu/ForDebianDevelopers" title="Information about Ubuntu for Debian Developers"><span class="octicon octicon-info"></span></a> +<a class="pull-xs-right" href="https://wiki.ubuntu.com/Ubuntu/ForDebianDevelopers">{% octicon 'info' 'Information about Ubuntu for Debian Developers' %}</a> {% endblock %} {% block panel-body %}