Login

Foldable Admin Interface

Author:
macmichael01
Posted:
January 17, 2008
Language:
HTML/template
Version:
Not specified
Tags:
django admin templates html
Score:
4 (after 6 ratings)

Have you had a rather huge database, say 50-100+ tables? Why not compress the tables you don't want to see and expand the ones that you do want to see? This template should do the trick. It uses cookies to remember which tabs you have open and which ones you have closed. This should work on .91 to current.

How to install - just CP code and save as index.html toss in your media folder under /path_to_media/template_folder/admin/index.html. next download mootools and toss this into /path_to_media/js_folder/mootools.js (alternatively you could be lazy and cp mootools into the script tag of this template)

A quick and dirty fix but it sure saves time trying to find the tables you are looking for.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
{% extends "admin/base_site.html" %}
{% load i18n %}

{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/dashboard.css{% endblock %}
{% block coltype %}colMS{% endblock %}
{% block bodyclass %}dashboard{% endblock %}
{% block breadcrumbs %}{% endblock %}
{% block content %}
<script type="text/javascript" src="{% admin_media_prefix %}js/mootools.js">
</script>
<script type="text/javascript">

var django = new Hash.Cookie('djangoAdmin', {duration: 3600});
{% load adminapplist %}
window.addEvent('domready', function(){
{% get_admin_app_list as app_list %}
{% if app_list %}
{% for app in app_list %}		
	var {{ app.name }} = new Fx.Slide('{{ app.name }}_fold');

	$('toggle_{{ app.name }}').addEvent('click', function(e){
		e = new Event(e);
		{{ app.name }}.toggle();
		e.stop();
		if (django.get('{{ app.name }}') == false){
			django.set('{{ app.name }}', true);
		}
		else {
			django.set('{{ app.name }}', false);
		}
	});
	if (!django.get('{{ app.name }}') || django.get('{{ app.name }}') == false){
		django.set('{{ app.name }}', false);
		{{ app.name }}.hide();
	}
	
{% endfor %}
{% endif %}

var recent_actions = new Fx.Slide('recent_actions_fold');

$('toggle_recent_actions').addEvent('click', function(e){
	e = new Event(e);
	recent_actions.toggle();
	e.stop();
	if (django.get('recent_actions') == false){
		django.set('recent_actions', true);
	}
	else {
		django.set('recent_actions', false);
	}
});
if (!django.get('recent_actions') || django.get('recent_actions') == false){
	django.set('recent_actions', false);
	recent_actions.hide();
}
}); 
</script>
<div id="content-main">

{% get_admin_app_list as app_list %}
{% if app_list %}
    {% for app in app_list %}
        <div class="module">
	    <div id="toggle_{{ app.name }}"><h2>{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}</h2></div>
		<div id="{{ app.name }}_fold">
        <table summary="{% blocktrans with app.name as name %}Models available in the {{ name }} application.{% endblocktrans %}">
        {% for model in app.models %}
            <tr>
            {% if model.perms.change %}
                <th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
            {% else %}
                <th scope="row">{{ model.name }}</th>
            {% endif %}

            {% if model.perms.add %}
                <td><a href="{{ model.admin_url }}add/" class="addlink">{% trans 'Add' %}</a></td>
            {% else %}
                <td>&nbsp;</td>
            {% endif %}

            {% if model.perms.change %}
                <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
            {% else %}
                <td>&nbsp;</td>
            {% endif %}
            </tr>
        {% endfor %}
        </table>
        </div>
        </div>
    {% endfor %}
{% else %}
    <p>{% trans "You don't have permission to edit anything." %}</p>
{% endif %}
</div>
{% endblock %}

{% block sidebar %}
<div id="content-related">
    <div class="module" id="recent-actions-module">
        <div id="toggle_recent_actions"><h2>{% trans 'Recent Actions' %}</h2></div>
        <div id="recent_actions_fold">
        <h3>{% trans 'My Actions' %}</h3>
            {% load log %}
            {% get_admin_log 10 as admin_log for_user user %}
            {% if not admin_log %}
            <p>{% trans 'None available' %}</p>
            {% else %}
            <ul class="actionlist">
            {% for entry in admin_log %}
            <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if not entry.is_deletion %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr|escape }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span></li>
            {% endfor %}
            </ul>
            {% endif %}
		</div>
    </div>
</div>
{% endblock %}

More like this

  1. FieldsetForm by Ciantic 8 years, 1 month ago
  2. Twin column model admin index by richardbolt 7 years, 2 months ago
  3. Search child models in django admin changelist by navedr 7 months, 3 weeks ago
  4. Query printer coroutine by fnl 6 years, 1 month ago
  5. HTML to text filter by MasonM 6 years, 9 months ago

Comments

ThalesWeb (on May 19, 2010):

This snippet doesn't work with mootools last version. It's necessary to download the old one (1.1).

#

Please login first before commenting.