action = 'insertHTML';
param = $('<code></code>', {text: window.getSelection().toString()})[0].outerHTML;
}
+ if (action == 'wiki') {
+ action = 'insertHTML';
+ var text = window.getSelection().toString();
+ var $new_link = $('<a></a>', {text: text, href: '#tbd'});
+ var request_id = Math.floor(Math.random() * 10000);
+ $new_link.attr('data-request-id', request_id);
+ var params = {};
+ params.title = text;
+ params.request_id = request_id;
+ $.post('/wiki/ajax/newpage/', params).success(function(data) {
+ $('a[data-request-id=' + data.request_id + ']').attr('href', data.url).removeAttr('data-request-id');
+ });
+ param = $new_link[0].outerHTML;
+ }
if (action == 'createLink') {
var sel = window.getSelection();
var $input = $('input[name=link-target]');
'<button data-action="bold"><b>b</b></button>' +
'<button data-action="code"><></button>' +
'<button data-action="removeFormat">×</button>' +
+ '<button data-action="wiki">W</button>' +
'<button data-action="createLink">a</button>' +
'<input name="link-target"/>' +
'</div>');
url(r'^vote/results/$', poll_views.vote_results, name='vote-results'),
url(r'^wiki/newpage/$', wiki_views.new_page),
+ url(r'^wiki/ajax/newpage/$', wiki_views.ajax_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'),
from django.contrib.auth.decorators import login_required
+from django.db.models import Q
+from django.http import JsonResponse
+from django.utils.text import slugify
+from django.views.decorators.csrf import csrf_exempt
from django.views.generic.edit import FormView
from combo.data.models import Page, TextCell
new_page = login_required(NewPageView.as_view())
+
+
+@csrf_exempt
+def ajax_new_page(request, *args, **kwargs):
+ parent_wiki_page = Page.objects.get(slug='wiki', parent=None)
+ title = request.POST['title']
+ slug = slugify(title)
+ page = Page.objects.filter(Q(slug=slug) | Q(title=title)).first()
+ if not page:
+ page = Page(
+ title=title,
+ parent=parent_wiki_page,
+ public=False)
+ page.save()
+ cell = TextCell(placeholder='content', page=page, order=0)
+ cell.text = '<p>Nouvelle page, contenu à ajouter</p>'
+ cell.save()
+ return JsonResponse({
+ 'url': page.get_online_url(),
+ 'request_id': request.POST['request_id'],
+ })