forked from AFPy/PonyConf
homepage markdown preview
This commit is contained in:
parent
476dd3fbd4
commit
825a0111b4
|
@ -259,7 +259,7 @@ class ConferenceForm(forms.ModelForm):
|
|||
class Meta:
|
||||
model = Conference
|
||||
fields = [
|
||||
'name', 'home', 'venue', 'city', 'contact_email', 'schedule_publishing_date', 'schedule_redirection_url',
|
||||
'name', 'venue', 'city', 'contact_email', 'schedule_publishing_date', 'schedule_redirection_url',
|
||||
'volunteers_opening_date', 'volunteers_closing_date', 'reply_email', 'secure_domain', 'staff',
|
||||
]
|
||||
widgets = {
|
||||
|
@ -270,6 +270,12 @@ class ConferenceForm(forms.ModelForm):
|
|||
}
|
||||
|
||||
|
||||
class HomepageForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Conference
|
||||
fields = ['home']
|
||||
|
||||
|
||||
class CreateUserForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = User
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
{{ block.super }}
|
||||
<div class="container">
|
||||
<ul class="nav nav-pills nav-justified subnav">
|
||||
<li{% block conferencetab %}{% endblock %}><a href="{% url 'conference' %}"><span class="glyphicon glyphicon-cog"></span> {% trans "Conference" %}</a></li>
|
||||
<li{% block conferencetab %}{% endblock %}><a href="{% url 'conference-edit' %}"><span class="glyphicon glyphicon-cog"></span> {% trans "Conference" %}</a></li>
|
||||
<li{% block homepagetab %}{% endblock %}><a href="{% url 'homepage-edit' %}"><span class="glyphicon glyphicon-cog"></span> {% trans "Home page" %}</a></li>
|
||||
<li{% block categoriestab %}{% endblock %}><a href="{% url 'category-list' %}"><span class="glyphicon glyphicon-inbox"></span> {% trans "Categories" %}</a></li>
|
||||
<li{% block tagstab %}{% endblock %}><a href="{% url 'tag-list' %}"><span class="glyphicon glyphicon-tags"></span> {% trans "Tags" %}</a></li>
|
||||
<li{% block activitiestab %}{% endblock %}><a href="{% url 'activity-list' %}"><span class="glyphicon glyphicon-screenshot"></span> {% trans "Activities" %}</a></li>
|
||||
|
|
54
cfp/templates/cfp/admin/homepage.html
Normal file
54
cfp/templates/cfp/admin/homepage.html
Normal file
|
@ -0,0 +1,54 @@
|
|||
{% extends 'cfp/admin/base.html' %}
|
||||
{% load bootstrap3 i18n static %}
|
||||
|
||||
{% block homepagetab %} class="active"{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1>{% trans "Home page" %}</h1>
|
||||
|
||||
<!--<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<b>Truc</b>
|
||||
</div>
|
||||
<div class=-->
|
||||
|
||||
<div>
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation" class="active"><a href="#editor" aria-controls="editor" role="tab" data-toggle="tab">{% trans "Editor" %}</a></li>
|
||||
<li role="presentation"><a href="#preview" aria-controls="preview" role="tab" data-toggle="tab">{% trans "Preview" %}</a></li>
|
||||
<li><a href="https://daringfireball.net/projects/markdown/syntax" target="blank" role="tab">{% trans "Syntax" %}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form method="POST">
|
||||
{% csrf_token %}
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane active" style="padding-bottom: 20px;" id="editor">
|
||||
<textarea style="width: 100%; min-height: 220px;" id="markdown-content" name="home">{{ form.home.value|default_if_none:"" }}</textarea>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="preview">
|
||||
<div style="width: 100%; min-height: 220px;" class="well" id="markdown-preview"></div>
|
||||
</div>
|
||||
</div>
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-primary">{% trans "Save" %}</button>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js_end %}
|
||||
{{ block.super }}
|
||||
{{ form.media.js }}
|
||||
<script type="text/javascript">
|
||||
var markdown_preview_url = "{% url 'markdown-preview' %}";
|
||||
</script>
|
||||
<script src="{% static 'jquery.cookie/jquery.cookie.js' %}"></script>
|
||||
<script src="{% static 'js/markdown-preview.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
{{ block.super }}
|
||||
{{ form.media.css }}
|
||||
{% endblock %}
|
|
@ -55,7 +55,8 @@ urlpatterns = [
|
|||
url(r'^staff/schedule/((?P<program_format>[\w]+)/)?$', views.staff_schedule, name='staff-schedule'),
|
||||
url(r'^staff/select2/$', views.Select2View.as_view(), name='django_select2-json'),
|
||||
url(r'^admin/$', views.admin, name='admin'),
|
||||
url(r'^admin/conference/$', views.conference_edit, name='conference'),
|
||||
url(r'^admin/conference/$', views.conference_edit, name='conference-edit'),
|
||||
url(r'^admin/homepage/$', views.homepage_edit, name='homepage-edit'),
|
||||
url(r'^admin/categories/$', views.TalkCategoryList.as_view(), name='category-list'),
|
||||
url(r'^admin/categories/add/$', views.TalkCategoryCreate.as_view(), name='category-add'),
|
||||
url(r'^admin/categories/(?P<pk>[0-9]+)/edit/$', views.TalkCategoryUpdate.as_view(), name='category-edit'),
|
||||
|
@ -66,5 +67,4 @@ urlpatterns = [
|
|||
url(r'^admin/activities/add/$', views.ActivityCreate.as_view(), name='activity-add'),
|
||||
url(r'^admin/activities/(?P<slug>[-\w]+)/edit/$', views.ActivityUpdate.as_view(), name='activity-edit'),
|
||||
url(r'^schedule/((?P<program_format>[\w]+)/)?$', views.public_schedule, name='public-schedule'),
|
||||
#url(r'^markdown/$', views.markdown_preview, name='markdown'),
|
||||
]
|
||||
|
|
19
cfp/views.py
19
cfp/views.py
|
@ -1,4 +1,3 @@
|
|||
from math import ceil
|
||||
from django.core.mail import send_mail
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from django.shortcuts import get_object_or_404, redirect, render
|
||||
|
@ -29,7 +28,7 @@ from .utils import is_staff
|
|||
from .models import Participant, Talk, TalkCategory, Vote, Track, Tag, Room, Volunteer, Activity
|
||||
from .forms import TalkForm, TalkStaffForm, TalkFilterForm, TalkActionForm, \
|
||||
ParticipantForm, ParticipantFilterForm, NotifyForm, \
|
||||
ConferenceForm, CreateUserForm, TrackForm, RoomForm, \
|
||||
ConferenceForm, HomepageForm, CreateUserForm, TrackForm, RoomForm, \
|
||||
VolunteerForm, VolunteerFilterForm, MailForm, \
|
||||
TagForm, TalkCategoryForm, ActivityForm, \
|
||||
ACCEPTATION_VALUES, CONFIRMATION_VALUES
|
||||
|
@ -832,7 +831,6 @@ def participant_add_talk(request, participant_id):
|
|||
@staff_required
|
||||
def conference_edit(request):
|
||||
form = ConferenceForm(request.POST or None, instance=request.conference)
|
||||
|
||||
if request.method == 'POST' and form.is_valid():
|
||||
old_staff = set(request.conference.staff.all())
|
||||
new_conference = form.save()
|
||||
|
@ -865,13 +863,24 @@ You can now:
|
|||
fail_silently=False,
|
||||
)
|
||||
messages.success(request, _('Modifications successfully saved.'))
|
||||
return redirect(reverse('conference'))
|
||||
|
||||
return redirect(reverse('conference-edit'))
|
||||
return render(request, 'cfp/admin/conference.html', {
|
||||
'form': form,
|
||||
})
|
||||
|
||||
|
||||
@staff_required
|
||||
def homepage_edit(request):
|
||||
form = HomepageForm(request.POST or None, instance=request.conference)
|
||||
if request.method == 'POST' and form.is_valid():
|
||||
form.save()
|
||||
messages.success(request, _('Modifications successfully saved.'))
|
||||
return redirect(reverse('homepage-edit'))
|
||||
return render(request, 'cfp/admin/homepage.html', {
|
||||
'form': form,
|
||||
})
|
||||
|
||||
|
||||
class TalkUpdate(StaffRequiredMixin, OnSiteMixin, OnSiteFormMixin, UpdateView):
|
||||
model = Talk
|
||||
form_class = TalkStaffForm
|
||||
|
|
|
@ -17,8 +17,11 @@ from django.conf.urls import include, url
|
|||
from django.contrib import admin
|
||||
from django.conf import settings
|
||||
|
||||
from . import views
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^markdown/$', views.markdown_preview, name='markdown-preview'),
|
||||
url(r'^admin/django/', admin.site.urls),
|
||||
url(r'^accounts/', include('accounts.urls')),
|
||||
url(r'^', include('cfp.urls')),
|
||||
|
|
12
ponyconf/views.py
Normal file
12
ponyconf/views.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from django.contrib.auth.decorators import login_required
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from django.http import HttpResponse
|
||||
|
||||
from .utils import markdown_to_html
|
||||
|
||||
|
||||
@login_required
|
||||
@require_http_methods(["POST"])
|
||||
def markdown_preview(request):
|
||||
content = request.POST.get('data', '')
|
||||
return HttpResponse(markdown_to_html(content))
|
Loading…
Reference in New Issue
Block a user