diff --git a/src/c3nav/editor/static/editor/css/editor.css b/src/c3nav/editor/static/editor/css/editor.css index 762aa98c..7adbd29e 100644 --- a/src/c3nav/editor/static/editor/css/editor.css +++ b/src/c3nav/editor/static/editor/css/editor.css @@ -119,6 +119,9 @@ legend { right: 8px; top: 8px; } +[data-active-node] form button { + margin-top: 5px; +} [data-levels], [data-sublevels], #sidebar .nav, [data-modal-close] { display:none; } diff --git a/src/c3nav/editor/static/editor/js/editor.js b/src/c3nav/editor/static/editor/js/editor.js index d32b3e2d..166cb521 100644 --- a/src/c3nav/editor/static/editor/js/editor.js +++ b/src/c3nav/editor/static/editor/js/editor.js @@ -259,7 +259,12 @@ editor = { var btn = $(this).data('btn'); if (btn !== undefined && btn !== null) { if ($(btn).is('[name]')) { - data += '&' + $('').attr('name', $(btn).attr('name')).val($(btn).val()).serialize(); + var name = $(btn).attr('name'); + data += '&' + $('').attr('name', name).val($(btn).val()).serialize(); + if (name === 'delete_confirm') { + editor._active_graph_node = null; + editor._active_graph_node_html = null; + } } } var action = $(this).attr('action'); diff --git a/src/c3nav/editor/templates/editor/graph.html b/src/c3nav/editor/templates/editor/graph.html index 751378c9..850fb5cd 100644 --- a/src/c3nav/editor/templates/editor/graph.html +++ b/src/c3nav/editor/templates/editor/graph.html @@ -33,6 +33,11 @@ {% blocktrans %}in space {{ space_title }}{% endblocktrans %}
{% blocktrans %}on level {{ level_title }}{% endblocktrans %} {% endwith %} +
+ {% csrf_token %} + + +
{% else %}
diff --git a/src/c3nav/editor/views/edit.py b/src/c3nav/editor/views/edit.py index 610a32c3..ef992660 100644 --- a/src/c3nav/editor/views/edit.py +++ b/src/c3nav/editor/views/edit.py @@ -419,6 +419,27 @@ def graph_edit(request, level=None, space=None): create_nodes = True if request.method == 'POST': + if request.POST.get('delete') == '1': + # Delete this graphnode! + node = get_object_or_404(GraphNode, pk=request.POST.get('pk')) + + if request.POST.get('delete_confirm') == '1': + with request.changeset.lock_to_edit(request) as changeset: + if changeset.can_edit(request): + node.edges_from_here.all().delete() + node.edges_to_here.all().delete() + node.delete() + else: + messages.error(request, _('You can not edit changes on this changeset.')) + return redirect(request.path) + messages.success(request, _('Graph Node was successfully deleted.')) + return redirect(request.path) + return render(request, 'editor/delete.html', { + 'model_title': GraphNode._meta.verbose_name, + 'pk': node.pk, + 'obj_title': node.title + }) + edge_settings_form = GraphEdgeSettingsForm(instance=GraphEdge(), request=request, data=request.POST) graph_action_form = GraphEditorActionForm(request=request, allow_clicked_position=create_nodes, data=request.POST)