kopia lustrzana https://github.com/rtts/django-simplecms
Make it easier to extend the default PageView.
First, extend BasePageView and add stuff to the context that your sections need. Second, create a URLConf entry pointing to your new class. Third, extend the base.html nav block and change the {% url cms:page %} to its new name. It seems so easy in hindsight...readwriteweb
rodzic
c9a4d4e0fd
commit
dc9744c5eb
|
@ -27,9 +27,9 @@ class Page(NumberedModel):
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
if self.slug:
|
if self.slug:
|
||||||
return reverse('cms:page', args=[self.slug])
|
return reverse('page', args=[self.slug])
|
||||||
else:
|
else:
|
||||||
return reverse('cms:homepage')
|
return reverse('page')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Page')
|
verbose_name = _('Page')
|
||||||
|
|
|
@ -317,7 +317,7 @@ form.cms {
|
||||||
color: black;
|
color: black;
|
||||||
border: 1px solid #aaa;
|
border: 1px solid #aaa;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
diplay: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
|
@ -229,7 +229,7 @@ form.cms input, form.cms select, form.cms textarea {
|
||||||
color: black;
|
color: black;
|
||||||
border: 1px solid #aaa;
|
border: 1px solid #aaa;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
diplay: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -26,11 +26,7 @@
|
||||||
{% block nav %}
|
{% block nav %}
|
||||||
<ul id="menu">
|
<ul id="menu">
|
||||||
{% for p in pages %}
|
{% for p in pages %}
|
||||||
{% if p.slug %}
|
<li><a href="{% if p.slug %}{% url 'cms:page' p.slug %}{% else %}{% url 'cms:page' %}{% endif %}" {% if p.pk == object.pk %}class="current"{% endif %}>{{p.title}}</a></li>
|
||||||
<li><a href="{% url 'cms:page' p.slug %}" {% if p.pk == object.pk %}class="current"{% endif %}>{{p.title}}</a></li>
|
|
||||||
{% else %}
|
|
||||||
<li><a href="{% url 'cms:homepage' %}" {% if p.pk == object.pk %}class="current"{% endif %}>{{p.title}}</a></li>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if user.is_staff %}
|
{% if user.is_staff %}
|
||||||
<li><a class="edit" href="{% url 'cms:createpage' %}">+ {% trans 'new page' %}</a></li>
|
<li><a class="edit" href="{% url 'cms:createpage' %}">+ {% trans 'new page' %}</a></li>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form method="post" class="loginform">
|
<form method="post" class="cms">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
|
16
cms/urls.py
16
cms/urls.py
|
@ -4,12 +4,14 @@ from .views import PageView, UpdatePage, CreatePage, UpdateSection, CreateSectio
|
||||||
app_name = 'cms'
|
app_name = 'cms'
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', PageView.as_view(), {'slug': ''}, name='homepage'),
|
path('updatepage/', UpdatePage.as_view(), {'slug': ''}, name='updatehomepage'),
|
||||||
|
path('updatepage/<int:pk>/', UpdatePage.as_view(), name='updatepage'),
|
||||||
|
path('updatesection/<int:pk>/', UpdateSection.as_view(), name='updatesection'),
|
||||||
|
path('createpage/', CreatePage.as_view(), name='createpage'),
|
||||||
|
path('createsection/<int:pk>', CreateSection.as_view(), name='createsection'),
|
||||||
|
path('createsubsection/<int:pk>/', CreateSubSection.as_view(), name='createsubsection'),
|
||||||
|
|
||||||
|
# Feel free to copy the following into your root URL conf!
|
||||||
|
path('', PageView.as_view(), name='page'),
|
||||||
path('<slug:slug>/', PageView.as_view(), name='page'),
|
path('<slug:slug>/', PageView.as_view(), name='page'),
|
||||||
path('cms/homepage/', UpdatePage.as_view(), {'slug': ''}, name='updatehomepage'),
|
|
||||||
path('cms/page/<int:pk>/', UpdatePage.as_view(), name='updatepage'),
|
|
||||||
path('cms/section/<int:pk>/', UpdateSection.as_view(), name='updatesection'),
|
|
||||||
path('cms/newpage/', CreatePage.as_view(), name='createpage'),
|
|
||||||
path('cms/page/<int:pk>/newsection/', CreateSection.as_view(), name='createsection'),
|
|
||||||
path('cms/section/<int:pk>/newsubsection/', CreateSubSection.as_view(), name='createsubsection'),
|
|
||||||
]
|
]
|
||||||
|
|
11
cms/views.py
11
cms/views.py
|
@ -28,10 +28,16 @@ class MemoryMixin(object):
|
||||||
request.session['previous_url'] = request.path
|
request.session['previous_url'] = request.path
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
class PageView(MenuMixin, MemoryMixin, DetailView):
|
class BasePageView(MenuMixin, MemoryMixin, DetailView):
|
||||||
model = Page
|
model = Page
|
||||||
template_name = 'cms/page.html'
|
template_name = 'cms/page.html'
|
||||||
|
|
||||||
|
def setup(self, request, *args, slug='', **kwargs):
|
||||||
|
self.request = request
|
||||||
|
self.args = args
|
||||||
|
self.kwargs = kwargs
|
||||||
|
self.kwargs['slug'] = slug
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
page = self.object
|
page = self.object
|
||||||
|
@ -42,6 +48,9 @@ class PageView(MenuMixin, MemoryMixin, DetailView):
|
||||||
})
|
})
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
class PageView(BasePageView):
|
||||||
|
pass
|
||||||
|
|
||||||
class CreatePage(StaffRequiredMixin, MenuMixin, CreateView):
|
class CreatePage(StaffRequiredMixin, MenuMixin, CreateView):
|
||||||
model = Page
|
model = Page
|
||||||
form_class = PageForm
|
form_class = PageForm
|
||||||
|
|
Ładowanie…
Reference in New Issue