--- /dev/null
+from django.conf import settings
+from django.contrib import admin
+from django import forms
+from philo.admin.base import COLLAPSE_CLASSES, TreeAdmin
+from philo.admin.nodes import ViewAdmin
+from philo.models.pages import Page, Template, Contentlet, ContentReference
+from philo.admin.forms.containers import *
+
+
+class ContentletInline(admin.StackedInline):
+ model = Contentlet
+ extra = 0
+ max_num = 0
+ formset = ContentletInlineFormSet
+ form = ContentletForm
+ can_delete = False
+ classes = ('collapse-open', 'collapse','open')
+ if 'grappelli' in settings.INSTALLED_APPS:
+ template = 'admin/philo/edit_inline/grappelli_tabular_container.html'
+ else:
+ template = 'admin/philo/edit_inline/tabular_container.html'
+
+
+class ContentReferenceInline(admin.StackedInline):
+ model = ContentReference
+ extra = 0
+ max_num = 0
+ formset = ContentReferenceInlineFormSet
+ form = ContentReferenceForm
+ can_delete = False
+ classes = ('collapse-open', 'collapse','open')
+ if 'grappelli' in settings.INSTALLED_APPS:
+ template = 'admin/philo/edit_inline/grappelli_tabular_container.html'
+ else:
+ template = 'admin/philo/edit_inline/tabular_container.html'
+
+
+class PageAdmin(ViewAdmin):
+ add_form_template = 'admin/philo/page/add_form.html'
+ fieldsets = (
+ (None, {
+ 'fields': ('title', 'template')
+ }),
+ )
+ list_display = ('title', 'template')
+ list_filter = ('template',)
+ search_fields = ['title', 'contentlets__content']
+ inlines = [ContentletInline, ContentReferenceInline] + ViewAdmin.inlines
+
+ def response_add(self, request, obj, post_url_continue='../%s/'):
+ # Shamelessly cribbed from django/contrib/auth/admin.py:143
+ if '_addanother' not in request.POST and '_popup' not in request.POST:
+ request.POST['_continue'] = 1
+ return super(PageAdmin, self).response_add(request, obj, post_url_continue)
+
+
+class TemplateAdmin(TreeAdmin):
+ prepopulated_fields = {'slug': ('name',)}
+ fieldsets = (
+ (None, {
+ 'fields': ('parent', 'name', 'slug')
+ }),
+ ('Documentation', {
+ 'classes': COLLAPSE_CLASSES,
+ 'fields': ('documentation',)
+ }),
+ (None, {
+ 'fields': ('code',)
+ }),
+ ('Advanced', {
+ 'classes': COLLAPSE_CLASSES,
+ 'fields': ('mimetype',)
+ }),
+ )
+ save_on_top = True
+ save_as = True
+ list_display = ('__unicode__', 'slug', 'get_path',)
+
+
+admin.site.register(Page, PageAdmin)
+admin.site.register(Template, TemplateAdmin)
\ No newline at end of file