Changeset 2465

Show
Ignore:
Timestamp:
12/02/09 11:16:53 (8 months ago)
Author:
JensDiemer
Message:

New: change "page order" !

Location:
branches/0.9/pylucid_project/pylucid_plugins
Files:
1 added
4 modified

Legend:

Unmodified
Added
Removed
  • branches/0.9/pylucid_project/pylucid_plugins/admin_menu/templates/admin_menu/includes/pylucid_admin_menu.html

    r2372 r2465  
    103103                    {% endif %} 
    104104 
     105                    {% if perms.pylucid.change_pagetree %} 
     106                       <li><a href="{% url PageAdmin-page_order PYLUCID.pagetree.id %}">change page order</a></li> 
     107                    {% endif %} 
     108 
    105109                    {% if perms.pylucid.delete_pageplugin and perms.pylucid.delete_pagecontent and perms.pylucid.delete_pagemeta and perms.pylucid.delete_pagetree %} 
    106110                       <li><a href="{% url admin:pylucid_pagetree_delete PYLUCID.pagemeta.id %}">delete page</a></li> 
  • branches/0.9/pylucid_project/pylucid_plugins/page_admin/admin_urls.py

    r2449 r2465  
    1818from django.conf.urls.defaults import patterns, url 
    1919 
     20from pylucid_project.pylucid_plugins.page_admin import admin_views 
    2021 
    21 urlpatterns = patterns('page_admin.admin_views', 
    22     url(r'^new_content_page/$', "new_content_page", name='PageAdmin-new_content_page'), 
    23     url(r'^new_plugin_page/$', "new_plugin_page", name='PageAdmin-new_plugin_page'), 
    24     url(r'^edit_page/(?P<pagetree_id>\d+?)/$', "edit_page", name='PageAdmin-edit_page'), 
    25     url(r'^translate/(?P<pagemeta_id>\d+?)/$', "translate", name='PageAdmin-translate'), 
    26     url(r'^tag_list/$', "tag_list", name='PageAdmin-tag_list'), 
     22urlpatterns = patterns('', 
     23    url(r'^new_content_page/$', admin_views.new_content_page, name='PageAdmin-new_content_page'), 
     24    url(r'^new_plugin_page/$', admin_views.new_plugin_page, name='PageAdmin-new_plugin_page'), 
     25    url(r'^edit_page/(?P<pagetree_id>\d+?)/$', admin_views.edit_page, name='PageAdmin-edit_page'), 
     26    url(r'^page_order/(?P<pagetree_id>\d+?)/$', admin_views.page_order, name='PageAdmin-page_order'), 
     27    url(r'^translate/(?P<pagemeta_id>\d+?)/$', admin_views.translate, name='PageAdmin-translate'), 
     28    url(r'^tag_list/$', admin_views.tag_list, name='PageAdmin-tag_list'), 
    2729) 
  • branches/0.9/pylucid_project/pylucid_plugins/page_admin/admin_views.py

    r2449 r2465  
    1 # coding:utf-8 
     1# coding:utf - 8 
    22 
    33import inspect 
     
    66from django.conf import settings 
    77from django.db import transaction 
     8from django.forms.models import modelformset_factory 
    89from django.utils.translation import ugettext_lazy as _ 
    910 
     
    1819from pylucid_admin.admin_menu import AdminMenu 
    1920 
    20 from page_admin.forms import PageTreeForm, PageMetaForm, PageContentForm, PluginPageForm, LanguageSelectForm 
     21from page_admin.forms import PageTreeForm, PageMetaForm, PageContentForm, PluginPageForm, \ 
     22                                     LanguageSelectForm, PageOrderFormSet 
    2123 
    2224 
     
    393395 
    394396    pagetree = PageTree.objects.get(id=pagetree_id) 
    395  
    396     context = { 
    397         "form_url": request.path, 
    398     } 
     397    context = {"form_url": request.path} 
    399398 
    400399    is_pluginpage = pagetree.page_type == PageTree.PLUGIN_TYPE 
    401400    if is_pluginpage: 
    402 #        return _edit_plugin_page(request) 
    403  
    404401        return _edit_plugin_page(request, context, pagetree) 
    405402    else: 
    406403        return _edit_content_page(request, context, pagetree) 
     404 
     405 
     406 
     407@check_permissions(superuser_only=False, permissions=("pylucid.change_pagetree",)) 
     408@render_to("page_admin/page_order.html") 
     409def page_order(request, pagetree_id=None): 
     410    """ 
     411    Change PageTree 'position', the ordering weight for sorting the pages in the menu. 
     412    """ 
     413    try: 
     414        pagetree = PageTree.on_site.get(id=pagetree_id) 
     415    except PageTree.DoesNotExist, err: 
     416        raise PageTree.DoesNotExist( 
     417            "PageTree with ID %r doesn't exist. (Original error: %s)" % (pagetree_id, err) 
     418        ) 
     419    parent = pagetree.parent 
     420 
     421    queryset = PageTree.on_site.all().order_by("position") 
     422    queryset = queryset.filter(parent=parent) 
     423 
     424    if request.method == 'POST': 
     425        formset = PageOrderFormSet(request.POST, queryset=queryset) 
     426        if formset.is_valid(): 
     427            formset.save() 
     428            request.page_msg("New position saved.") 
     429            return http.HttpResponseRedirect(request.path) 
     430    else: 
     431        formset = PageOrderFormSet(queryset=queryset) 
     432 
     433    # Change field label ("position") to PageTree.slug 
     434    for form in formset.forms: 
     435        for field_name, field in form.fields.iteritems(): 
     436            field.label = form.instance.slug 
     437            field.help_text = form.instance.get_absolute_url() 
     438 
     439    context = { 
     440        "title": "Change the page order.", 
     441        "pagetree": pagetree, 
     442        "abort_url": pagetree.get_absolute_url(), 
     443#        "next_level":  
     444        "formset": formset, 
     445    } 
     446    if parent is not None: 
     447        context["previous_level"] = parent 
     448 
     449    try: 
     450        context["next_level"] = PageTree.on_site.order_by("position").filter(parent=pagetree)[0] 
     451    except IndexError: 
     452        pass 
     453 
     454    return context 
     455 
     456 
     457 
     458 
     459 
     460 
    407461 
    408462 
     
    443497        }) 
    444498        return context 
     499 
    445500 
    446501 
  • branches/0.9/pylucid_project/pylucid_plugins/page_admin/forms.py

    r2441 r2465  
    44from django.template import mark_safe 
    55from django.forms.util import ErrorList 
    6 from django.forms.models import BaseModelFormSet, modelformset_factory 
    7 from django.contrib.auth.models import User, Group 
     6from django.forms.models import modelformset_factory 
    87from django.utils.translation import ugettext as _ 
    98 
     
    122121 
    123122 
     123class PageOderForm(forms.ModelForm): 
     124    def __init__(self, *args, **kwargs): 
     125        """ Change form field data in a DRY way """ 
     126        super(PageOderForm, self).__init__(*args, **kwargs) 
     127        choices = [(i, i) for i in range(-10, 10)] 
     128        for field_name, field in self.fields.iteritems(): 
     129            field.widget = forms.widgets.Select(choices=choices) 
     130#            print field, field_name 
     131 
     132    class Meta: 
     133        model = PageTree 
     134 
     135PageOrderFormSet = modelformset_factory( 
     136    model=PageTree, form=PageOderForm, extra=0, fields=('position',) 
     137) 
     138 
     139 
     140 
    124141class LanguageSelectForm(forms.Form): 
    125142    language = forms.ChoiceField()