Added sorting icons.

Refactored determination of sortability of classes referenced as sortable foreign keys in admin in a more reliable way.
This commit is contained in:
Brandon Taylor
2015-12-23 16:39:45 -05:00
parent de823d912c
commit 5dee27e077
20 changed files with 154 additions and 27 deletions
@@ -24,6 +24,7 @@
{{ block.super }}
{% if has_sortable_tabular_inlines or has_sortable_stacked_inlines %}
<link rel="stylesheet" type="text/css" href="{% static 'adminsortable/css/admin.sortable.inline.css' %}" />
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
{% endif %}
{% endblock %}
@@ -4,6 +4,7 @@
{% block extrastyle %}
{{ block.super }}
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<link rel="stylesheet" href="{% static 'adminsortable/css/admin.sortable.css' %}" />
{% endblock %}
@@ -40,8 +41,8 @@
{% blocktrans with opts.verbose_name_plural|capfirst as model %}Drag and drop {{ model }} to change their order.{% endblocktrans %}
{% endif %}
</h1>
{% if sortable_by_class.is_sortable %}
<p>
{% if sortable_by_class_is_sortable %}
<p class="sortable-help-text">
{% blocktrans %}You may also drag and drop {{ sortable_by_class_display_name }} to change their order.{% endblocktrans %}
</p>
{% endif %}
@@ -12,7 +12,7 @@
</h3>
{% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %}
{% for fieldset in inline_admin_form %}
{% include "admin/includes/fieldset.html" %}
{% include "admin/includes/fieldset.html" with inline_admin_form_forloop=forloop.parentloop %}
{% endfor %}
{% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
{{ inline_admin_form.fk_field.field }}
@@ -12,13 +12,13 @@
</h3>
{% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %}
{% for fieldset in inline_admin_form %}
{% include "admin/includes/fieldset.html" %}
{% include "adminsortable/shared/fieldset.html" with inline_admin_form_forloop=forloop.parentloop initial_forms_count=inline_admin_formset.formset.management_form.initial.INITIAL_FORMS %}
{% endfor %}
{% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
{{ inline_admin_form.fk_field.field }}
{% if inline_admin_form.original %}
<input type="hidden" name="admin_sorting_url" value="{% url 'admin:admin_do_sorting' inline_admin_form.original.model_type_id %}" />
{% endif %}
{% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
{{ inline_admin_form.fk_field.field }}
</div>{% endfor %}
</div>
@@ -48,6 +48,7 @@
{% for line in fieldset %}
{% for field in line %}
<td class="{{ field.field.name }}">
{% if inline_admin_form.original and forloop.parentloop.counter == 1 %}<i class="fa fa-arrows-v"></i>{% endif %}
{% if field.is_readonly %}
<p>{{ field.contents }}</p>
{% else %}
@@ -25,6 +25,11 @@
<tr class="form-row {% cycle "row1" "row2" %} {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}{% if forloop.last %} empty-form{% endif %}"
id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
<td class="original">
{% with initial_forms=inline_admin_form.formset.management_form.initial.INITIAL_FORMS %}
{% if forloop.counter <= initial_forms %}
<i class="fa fa-{% if forloop.first %}sort-desc{% elif forloop.counter == initial_forms %}sort-asc{% else %}sort{% endif %}"></i>
{% endif %}
{% endwith %}
{% if inline_admin_form.original or inline_admin_form.show_url %}<p>
{% if inline_admin_form.original %}
{{ inline_admin_form.original }}
@@ -0,0 +1,35 @@
{# overrides admin/includes/fieldset.html: https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/includes/fieldset.html #}
<fieldset class="module aligned {{ fieldset.classes }}">
{% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
{% if fieldset.description %}
<div class="description">{{ fieldset.description|safe }}</div>
{% endif %}
{% for line in fieldset %}
<div class="form-row{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% if not line.has_visible_field %} hidden{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
{% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %}
{% for field in line %}
<div{% if not line.fields|length_is:'1' %} class="field-box{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
{% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
{% if forloop.first %}
{% if inline_admin_form_forloop.counter <= initial_forms_count %}
<i class="fa fa-{% if inline_admin_form_forloop.first %}sort-desc{% elif inline_admin_form_forloop.counter == initial_forms_count %}sort-asc{% else %}sort{% endif %}"></i>
{% endif %}
{% endif %}
{% if field.is_checkbox %}
{{ field.field }}{{ field.label_tag }}
{% else %}
{{ field.label_tag }}
{% if field.is_readonly %}
<p>{{ field.contents }}</p>
{% else %}
{{ field.field }}
{% endif %}
{% endif %}
{% if field.field.help_text %}
<p class="help">{{ field.field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
</div>
{% endfor %}
</fieldset>
@@ -3,7 +3,7 @@
{% for object in list_objects %}
<li>
{% if list_objects_length > 1 %}
{% render_object_rep object %}
{% render_object_rep object forloop %}
{% else %}
{{ object }}
{% endif %}
@@ -5,8 +5,8 @@
{% for regrouped_object in regrouped_objects %}
{% with object=regrouped_object.grouper %}
{% if object %}
<li>{% if sortable_by_class_is_sortable %}
{% render_object_rep object %}
<li class="parent">{% if sortable_by_class_is_sortable %}
{% render_object_rep object forloop %}
{% else %}
{{ object }}
{% endif %}
@@ -3,4 +3,4 @@
<form>
<input name="pk" type="hidden" value="{{ object.pk }}" />
</form>
<a href="{% url 'admin:admin_do_sorting' object.model_type_id %}" class="admin_sorting_url">{{ object }}</a>
<a href="{% url 'admin:admin_do_sorting' object.model_type_id %}" class="admin_sorting_url"><i class="fa fa-{% if forloop.first %}sort-desc{% elif forloop.last %}sort-asc{% else %}sort{% endif %}"></i> {{ object }}</a>