]> git.0d.be Git - panikdb.git/commitdiff
add view to add new wiki page
authorFrédéric Péters <fpeters@0d.be>
Thu, 11 Jun 2020 13:56:42 +0000 (15:56 +0200)
committerFrédéric Péters <fpeters@0d.be>
Thu, 11 Jun 2020 13:57:25 +0000 (15:57 +0200)
panikdb/settings.py
panikdb/templates/combo/page_template_sidebar.html
panikdb/urls.py
panikdb/wiki/__init__.py [new file with mode: 0644]
panikdb/wiki/forms.py [new file with mode: 0644]
panikdb/wiki/templates/wiki/new_page.html [new file with mode: 0644]
panikdb/wiki/views.py [new file with mode: 0644]

index 16e726a6682d00b227bb58c97eae63f8f137857c..ba9a885a8ae8bd566f9b16c827d7c1e08f22d2e1 100644 (file)
@@ -157,6 +157,7 @@ INSTALLED_APPS = (
     'panikdb.customtags',
     'panikdb.stats',
     'panikdb.poll',
+    'panikdb.wiki',
     'gadjo',
     'combo.data',
     'combo.profile',
index 8c6acb284ce6bbc1736c155184dd00bdd30876a4..c896d11a08d4c85fdd07b9eaeb848a788ff672e2 100644 (file)
@@ -6,6 +6,11 @@
 <script src="{{ STATIC_URL }}js/combo.wiki.js"></script>
 {% endblock %}
 
+{% block more-user-links %}
+{{ block.super }}
+{% if request.user.is_authenticated %}<a href="/wiki/newpage" rel="popup">Nouvelle page wiki</a>{% endif %}
+{% endblock %}
+
 {% block content %}
 <div class="section wiki-section">
 <h3>{{ page.title }} {% if request.user.is_authenticated %}<label id="quickedit"><input type="checkbox"><span>Mode édition</span></label>{% endif %}</h3>
index 5ef2167e569e0bb99bc4b09d55068ec4821a4242..b8502f547a58ab31983feb43208dc519d8d0a61e 100644 (file)
@@ -23,6 +23,7 @@ import panikombo.views
 
 from .poll import views as poll_views
 from .aa import views as aa_views
+from .wiki import views as wiki_views
 from . import views
 
 from combo.manager.urls import urlpatterns as combo_manager_urls
@@ -82,6 +83,7 @@ urlpatterns = [
     url(r'^vote/$', poll_views.vote, name='vote'),
     url(r'^vote/results/$', poll_views.vote_results, name='vote-results'),
 
+    url(r'^wiki/newpage/$', wiki_views.new_page),
     url(r'^wiki/', combo.public.views.page),
     url(r'^ajax/cell/(?P<page_pk>\d+)/(?P<cell_reference>[\w_]+-\d+)/$',
         combo.public.views.ajax_page_cell, name='combo-public-ajax-page-cell'),
diff --git a/panikdb/wiki/__init__.py b/panikdb/wiki/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/panikdb/wiki/forms.py b/panikdb/wiki/forms.py
new file mode 100644 (file)
index 0000000..786bd12
--- /dev/null
@@ -0,0 +1,6 @@
+from django import forms
+from django.utils.translation import ugettext_lazy as _
+
+
+class NewPageForm(forms.Form):
+    title = forms.CharField(label=_('Title'), required=True)
diff --git a/panikdb/wiki/templates/wiki/new_page.html b/panikdb/wiki/templates/wiki/new_page.html
new file mode 100644 (file)
index 0000000..a2c4390
--- /dev/null
@@ -0,0 +1,18 @@
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block appbar %}
+<h2>{% trans "New Page" %}</h2>
+{% endblock %}
+
+{% block content %}
+<form method="post" action="/wiki/newpage/">
+{% csrf_token %}
+{{ form.as_p }}
+  <div class="buttons">
+    <button class="submit-button">{% trans "Add" %}</button>
+    <a class="cancel" href="/wiki/">{% trans "Cancel" %}</a>
+  </div>
+
+</form>
+{% endblock %}
diff --git a/panikdb/wiki/views.py b/panikdb/wiki/views.py
new file mode 100644 (file)
index 0000000..27c7473
--- /dev/null
@@ -0,0 +1,26 @@
+from django.contrib.auth.decorators import login_required
+from django.views.generic.edit import FormView
+
+from combo.data.models import Page, TextCell
+
+from .forms import NewPageForm
+
+
+class NewPageView(FormView):
+    form_class = NewPageForm
+    template_name = 'wiki/new_page.html'
+
+    def form_valid(self, form):
+        parent_wiki_page = Page.objects.get(slug='wiki', parent=None)
+        self.new_page = Page(title=form.cleaned_data['title'], parent=parent_wiki_page, public=False)
+        self.new_page.save()
+        cell = TextCell(placeholder='content', page=self.new_page, order=0)
+        cell.text = '<p>Nouvelle page, contenu à ajouter</p>'
+        cell.save()
+        return super().form_valid(form)
+
+    def get_success_url(self):
+        return self.new_page.get_online_url()
+
+
+new_page = login_required(NewPageView.as_view())