Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • konstantin/akplanning
  • matedealer/akplanning
  • kif/akplanning
  • mirco/akplanning
  • lordofthevoid/akplanning
  • voidptr/akplanning
  • xayomer/akplanning-fork
  • mollux/akplanning
  • neumantm/akplanning
  • mmarx/akplanning
  • nerf/akplanning
  • felix_bonn/akplanning
  • sebastian.uschmann/akplanning
13 results
Show changes
Showing with 4230 additions and 80 deletions
......@@ -51,6 +51,7 @@ INSTALLED_APPS = [
'rest_framework',
'simple_history',
'registration',
'bootstrap_datepicker_plus',
]
MIDDLEWARE = [
......
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-04-29 22:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:11
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:10
msgid "Scheduling for"
msgstr "Scheduling für"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:126
msgid "Name of new ak track"
msgstr "Name des neuen AK-Tracks"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:142
msgid "Could not create ak track"
msgstr "Konnte neuen AK-Track nicht anlegen"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:168
msgid "Could not update ak track name"
msgstr "Konnte Namen des AK-Tracks nicht ändern"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:174
msgid "Do you really want to delete this ak track?"
msgstr "Soll dieser AK-Track wirklich gelöscht werden?"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:188
msgid "Could not delete ak track"
msgstr "AK-Track konnte nicht gelöscht werden"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:200
msgid "Manage AK Tracks"
msgstr "AK-Tracks verwalten"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:201
msgid "Add ak track"
msgstr "AK-Track hinzufügen"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:206
msgid "AKs without track"
msgstr "AKs ohne Track"
#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:240
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:197
#: AKScheduling/templates/admin/AKScheduling/unscheduled.html:34
msgid "Event Status"
msgstr "Event-Status"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:87
msgid "Day (Horizontal)"
msgstr "Tag (horizontal)"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:94
msgid "Day (Vertical)"
msgstr "Tag (vertikal)"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:105
msgid "Event (Horizontal)"
msgstr "Event (horizontal)"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:114
msgid "Event (Vertical)"
msgstr "Event (vertikal)"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:141
msgid "Room"
msgstr "Raum"
#: AKScheduling/templates/admin/AKScheduling/unscheduled.html:7
msgid "Unscheduled AK Slots"
msgstr "Noch nicht geschedulte AK-Slots"
#: AKScheduling/templates/admin/AKScheduling/unscheduled.html:11
msgid "Count"
msgstr "Anzahl"
{% extends "admin/base_site.html" %}
{% load tags_AKModel %}
{% load i18n %}
{% load l10n %}
{% load tz %}
{% load static %}
{% load tags_AKPlan %}
{% load fontawesome_5 %}
{% block title %}{% trans "Scheduling for" %} {{event}}{% endblock %}
{% block extrahead %}
{{ block.super }}
<script src="{% static "common/vendor/sortable/Sortable.min.js" %}"></script>
<script src="{% static "common/vendor/sortable/jquery-sortable.js" %}"></script>
<style>
.ak-list {
padding-left: 5px;
user-select: none;
height: 100%;
}
.ak-list > li {
cursor: move;
}
.track-delete {
cursor: pointer;
}
</style>
<script>
document.addEventListener('DOMContentLoaded', function () {
// CSRF Protection/Authentication
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
const csrftoken = getCookie('csrftoken');
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function (xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
function mark_dirty(container) {
container.removeClass("border-success").addClass("border-warning")
}
function mark_clean(container) {
container.removeClass("border-warning").addClass("border-success");
}
function update_ak_track(ak_id, track_id, container) {
if(container!==undefined)
mark_dirty(container);
$.ajax({
url: "{% url "model:AK-list" event_slug=event.slug %}" + ak_id + "/",
type: 'PATCH',
data: {
track: track_id,
},
success: function (response) {
if(container!==undefined)
mark_clean(container);
},
error: function (response) {
alert("ERROR. Did not update " + changeInfo.event.title)
}
});
}
sortable_options = {
"group": 'ak-lists',
'sort': false,
// Element is dropped into the list from another list
onAdd: function (/**Event*/evt) {
// same properties as onEnd
var ak_id = evt.item.dataset["akId"];
// For lists that should stay in sync with server (all except 'without track')
if(evt.to.dataset["sync"]==="true") {
var container = $(evt.to).parents(".track-container");
var track_id = evt.to.dataset["trackId"];
update_ak_track(ak_id, track_id, container);
}
else {
update_ak_track(ak_id, "", undefined);
}
},
};
$('.ak-list').sortable(sortable_options);
// Display tooltips containing the tags for each list item (if available)
$('.ak-list li').each(function() {
$(this).tooltip({title: $(this).attr('data-title'), trigger: 'hover'});
});
// Add a new track container (and make usable for dragging)
$('#btn-add-track').click(function () {
var new_track_name = prompt("{% trans 'Name of new ak track' %}");
$.ajax({
url: "{% url "model:AKTrack-list" event_slug=event.slug %}",
type: 'POST',
data: {
name: new_track_name,
event: "{{ event.pk }}"
},
success: function (response) {
console.log(response);
$('<div class="card border-success mb-3 track-container" style="width: 20rem;margin-right:20px;margin-bottom: 20px;"><div class="card-header"><span class="btn btn-danger float-right track-delete" data-track-id="' + response["id"] + '">{% fa5_icon "trash" "fas" %}</span><input class="track-name" data-track-id="None" type="text" value="' + response["name"] + '"></div><div class="card-body"><ul data-track-id="' + response["id"] + '" data-name="' + response["name"] + '" data-sync="true" class="ak-list"></ul></div></div>')
.appendTo($("#workspace"))
.find("ul").sortable(sortable_options)
},
error: function (response) {
console.error(response);
alert("{% trans 'Could not create ak track' %}");
}
});
});
$('#workspace')
// React to track name changes
.on('change', '.track-name', function () {
var track_name_field = $(this);
var new_track_name = track_name_field.val();
var track_id = track_name_field.attr("data-track-id");
var container = track_name_field.parents(".track-container")
mark_dirty(container);
$.ajax({
url: "{% url "model:AKTrack-list" event_slug=event.slug %}" + track_id + "/",
type: 'PATCH',
data: {
name: new_track_name,
},
success: function (response) {
console.log(response);
mark_clean(container);
},
error: function (response) {
console.error(response);
alert("{% trans 'Could not update ak track name' %}");
}
});
})
// Allow to delete a track
.on('click', '.track-delete', function () {
if(confirm("{% trans 'Do you really want to delete this ak track?' %}")) {
var track_delete_button = $(this);
var track_id = track_delete_button.data("trackId");
$.ajax({
url: "{% url "model:AKTrack-list" event_slug=event.slug %}" + track_id + "/",
type: 'DELETE',
data: {},
success: function (response) {
console.log(response);
track_delete_button.parents(".track-container").remove();
},
error: function (response) {
console.error(response);
alert("{% trans 'Could not delete ak track' %}");
}
});
}
});
});
</script>
{% endblock extrahead %}
{% block content %}
<div class="mb-5">
<h3>{{ event }}: {% trans "Manage AK Tracks" %}</h3>
<a id="btn-add-track" href="#" class="btn btn-primary">{% fa5_icon "plus" "fas" %} {% trans "Add ak track" %}</a>
</div>
<div id="workspace" class="row" style="">
<div class="card border-primary mb-3" style="width: 20rem;margin-right:20px;margin-bottom: 20px;">
<div class="card-header">{% trans "AKs without track" %}</div>
<div class="card-body">
<ul data-id="None" data-sync="false" class="ak-list">
{% for ak in aks_without_track %}
<li data-ak-id="{{ ak.pk }}" data-toggle="tooltip" data-placement="top" title="" data-title="{{ ak.tags_list }}">
{{ ak.name }} ({{ ak.category }})
</li>
{% endfor %}
</ul>
</div>
</div>
{% for track in tracks %}
<div class="card border-success mb-3 track-container" style="width: 20rem;margin-right:20px;margin-bottom: 20px;">
<div class="card-header">
<span class="btn btn-danger float-right track-delete" data-track-id="{{ track.pk }}">
{% fa5_icon "trash" "fas" %}
</span>
<input class="track-name" data-track-id="{{ track.pk }}" type="text" value="{{ track }}">
</div>
<div class="card-body">
<ul data-track-id="{{ track.pk }}" data-name="{{ track }}" data-sync="true" class="ak-list">
{% for ak in track.ak_set.all %}
<li data-ak-id="{{ ak.pk }}" data-toggle="tooltip" data-placement="top" title="" data-title="{{ ak.tags_list }}">
{{ ak.name }} ({{ ak.category }})
</li>
{% endfor %}
</ul>
</div>
</div>
{% endfor %}
</div>
<a href="{% url 'admin:event_status' event.slug %}">{% trans "Event Status" %}</a>
{% endblock %}
from django.views.generic import ListView
from django.utils.translation import gettext_lazy as _
from AKModel.availability.models import Availability
from AKModel.models import AKSlot
from AKModel.models import AKSlot, AKTrack
from AKModel.views import AdminViewMixin, FilterByEventSlugMixin
......@@ -37,3 +36,14 @@ class SchedulingAdminView(AdminViewMixin, FilterByEventSlugMixin, ListView):
context["end"] = self.event.end
return context
class TrackAdminView(AdminViewMixin, FilterByEventSlugMixin, ListView):
template_name = "admin/AKScheduling/manage_tracks.html"
model = AKTrack
context_object_name = "tracks"
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(object_list=object_list, **kwargs)
context["aks_without_track"] = self.event.ak_set.filter(track=None)
return context
......@@ -6,7 +6,7 @@ from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
from AKModel.availability.forms import AvailabilitiesFormMixin
from AKModel.models import AK, AKOwner, AKCategory, AKRequirement, AKSlot, AKOrgaMessage
from AKModel.models import AK, AKOwner, AKCategory, AKRequirement, AKSlot, AKOrgaMessage, Event
class AKForm(AvailabilitiesFormMixin, forms.ModelForm):
......@@ -165,9 +165,11 @@ class AKDurationForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.initial = {**self.initial, **kwargs['initial']}
event = self.initial.get('event')
if event is not None:
self.initial['duration'] = event.default_slot
if self.initial.get('duration') == 0:
event_id = self.initial.get('event')
if event_id is not None:
event = Event.objects.get(pk=event_id)
self.initial['duration'] = event.default_slot
class AKOrgaMessageForm(forms.ModelForm):
......
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-03 20:41+0000\n"
"POT-Creation-Date: 2021-04-29 22:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -85,6 +85,7 @@ msgid "Interest"
msgstr "Interesse"
#: AKSubmission/templates/AKSubmission/ak_detail.html:40
#: AKSubmission/templates/AKSubmission/ak_table.html:56
msgid "Show Interest"
msgstr "Interesse bekunden"
......@@ -108,10 +109,10 @@ msgstr "Versionsgeschichte"
#: AKSubmission/templates/AKSubmission/akmessage_add.html:16
#: AKSubmission/templates/AKSubmission/akmessage_add.html:22
msgid "Add confidential message to organizers"
msgstr "Sende eine provate Nachricht an das Organisationsteam"
msgstr "Sende eine private Nachricht an das Organisationsteam"
#: AKSubmission/templates/AKSubmission/ak_detail.html:62
#: AKSubmission/templates/AKSubmission/ak_detail.html:202
#: AKSubmission/templates/AKSubmission/ak_detail.html:210
#: AKSubmission/templates/AKSubmission/ak_edit.html:16
#: AKSubmission/templates/AKSubmission/ak_table.html:53
msgid "Edit"
......@@ -124,7 +125,7 @@ msgid "AK Wish"
msgstr "AK-Wunsch"
#: AKSubmission/templates/AKSubmission/ak_detail.html:74
#, python-format "
#, python-format
msgid ""
"\n"
" This AK currently takes place for another "
......@@ -151,7 +152,7 @@ msgstr ""
" "
#: AKSubmission/templates/AKSubmission/ak_detail.html:87
#: AKSubmission/templates/AKSubmission/ak_detail.html:210
#: AKSubmission/templates/AKSubmission/ak_detail.html:218
msgid "Go to virtual room"
msgstr "Zum virtuellen Raum"
......@@ -172,8 +173,10 @@ msgid "Track"
msgstr "Track"
#: AKSubmission/templates/AKSubmission/ak_detail.html:114
msgid "Present AK results"
msgstr "AK-Ergebnisse vorstellen"
#, fuzzy
#| msgid "Present results of this AK"
msgid "Present this AK"
msgstr "Die Ergebnisse dieses AKs vorstellen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:118
#: AKSubmission/templates/AKSubmission/ak_table.html:12
......@@ -200,40 +203,40 @@ msgstr "Vorausgesetzte AKs"
msgid "Notes"
msgstr "Notizen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:177
#: AKSubmission/templates/AKSubmission/akslot_delete.html:35
msgid "Duration"
msgstr "Dauer"
#: AKSubmission/templates/AKSubmission/ak_detail.html:179
#: AKSubmission/templates/AKSubmission/ak_detail.html:178
msgid "When?"
msgstr "Wann?"
#: AKSubmission/templates/AKSubmission/ak_detail.html:180
#: AKSubmission/templates/AKSubmission/akslot_delete.html:35
msgid "Duration"
msgstr "Dauer"
#: AKSubmission/templates/AKSubmission/ak_detail.html:182
msgid "Room"
msgstr "Raum"
#: AKSubmission/templates/AKSubmission/ak_detail.html:205
#: AKSubmission/templates/AKSubmission/ak_detail.html:213
msgid "Delete"
msgstr "Löschen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:216
#: AKSubmission/templates/AKSubmission/ak_detail.html:224
msgid "Schedule"
msgstr "Schedule"
#: AKSubmission/templates/AKSubmission/ak_detail.html:228
#: AKSubmission/templates/AKSubmission/ak_detail.html:236
msgid "Add another slot"
msgstr "Einen neuen AK-Slot hinzufügen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:232
#: AKSubmission/templates/AKSubmission/ak_detail.html:240
msgid "Possible Times"
msgstr "Mögliche Zeiten"
#: AKSubmission/templates/AKSubmission/ak_detail.html:236
#: AKSubmission/templates/AKSubmission/ak_detail.html:244
msgid "Start"
msgstr "Start"
#: AKSubmission/templates/AKSubmission/ak_detail.html:237
#: AKSubmission/templates/AKSubmission/ak_detail.html:245
msgid "End"
msgstr "Ende"
......@@ -285,7 +288,7 @@ msgstr "AK hinzufügen"
msgid "Details"
msgstr "Details"
#: AKSubmission/templates/AKSubmission/ak_table.html:63
#: AKSubmission/templates/AKSubmission/ak_table.html:66
msgid "There are no AKs in this category yet"
msgstr "Es gibt noch keine AKs in dieser Kategorie"
......@@ -417,38 +420,41 @@ msgstr "AK erfolgreich angelegt"
msgid "AK successfully updated"
msgstr "AK erfolgreich aktualisiert"
#: AKSubmission/views.py:288
#: AKSubmission/views.py:289
msgid "Interest saved"
msgstr "Interesse gespeichert"
#: AKSubmission/views.py:337
#: AKSubmission/views.py:348
msgid "Person Info successfully updated"
msgstr "Personen-Info erfolgreich aktualisiert"
#: AKSubmission/views.py:357
#: AKSubmission/views.py:368
msgid "No user selected"
msgstr "Keine Person ausgewählt"
#: AKSubmission/views.py:383
#: AKSubmission/views.py:394
msgid "AK Slot successfully added"
msgstr "AK-Slot erfolgreich angelegt"
#: AKSubmission/views.py:397
#: AKSubmission/views.py:408
msgid "You cannot edit a slot that has already been scheduled"
msgstr "Bereits geplante AK-Slots können nicht mehr bearbeitet werden"
#: AKSubmission/views.py:407
#: AKSubmission/views.py:418
msgid "AK Slot successfully updated"
msgstr "AK-Slot erfolgreich aktualisiert"
#: AKSubmission/views.py:420
#: AKSubmission/views.py:431
msgid "You cannot delete a slot that has already been scheduled"
msgstr "Bereits geplante AK-Slots können nicht mehr gelöscht werden"
#: AKSubmission/views.py:430
#: AKSubmission/views.py:441
msgid "AK Slot successfully deleted"
msgstr "AK-Slot erfolgreich angelegt"
#: AKSubmission/views.py:451
#: AKSubmission/views.py:462
msgid "Message to organizers successfully saved"
msgstr "Nachricht an die Organisator*innen erfolgreich gespeichert"
#~ msgid "Present AK results"
#~ msgstr "AK-Ergebnisse vorstellen"
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-03 17:40+0000\n"
"POT-Creation-Date: 2021-04-29 22:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -34,43 +34,6 @@ msgstr "Virtueller Raum"
msgid "Virtual Rooms"
msgstr "Virtuelle Räume"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:10
msgid "Scheduling for"
msgstr "Scheduling für"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:94
msgid "Day (Horizontal)"
msgstr "Tag (horizontal)"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:101
msgid "Day (Vertical)"
msgstr "Tag (vertikal)"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:112
msgid "Event (Horizontal)"
msgstr "Event (horizontal)"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:121
msgid "Event (Vertical)"
msgstr "Event (vertikal)"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:148
msgid "Room"
msgstr "Raum"
#: AKScheduling/templates/admin/AKScheduling/scheduling.html:204
#: AKScheduling/templates/admin/AKScheduling/unscheduled.html:34
msgid "Event Status"
msgstr "Event-Status"
#: AKScheduling/templates/admin/AKScheduling/unscheduled.html:7
msgid "Unscheduled AK Slots"
msgstr "Noch nicht geschedulte AK-Slots"
#: AKScheduling/templates/admin/AKScheduling/unscheduled.html:11
msgid "Count"
msgstr "Anzahl"
#: templates/base.html:29
msgid ""
"Are you sure you want to change the language now? This will clear the form!"
......@@ -83,3 +46,30 @@ msgstr "Impressum"
#: templates/base.html:102
msgid "This software is open source"
msgstr "Diese Software ist Open Source"
#~ msgid "Scheduling for"
#~ msgstr "Scheduling für"
#~ msgid "Day (Horizontal)"
#~ msgstr "Tag (horizontal)"
#~ msgid "Day (Vertical)"
#~ msgstr "Tag (vertikal)"
#~ msgid "Event (Horizontal)"
#~ msgstr "Event (horizontal)"
#~ msgid "Event (Vertical)"
#~ msgstr "Event (vertikal)"
#~ msgid "Room"
#~ msgstr "Raum"
#~ msgid "Event Status"
#~ msgstr "Event-Status"
#~ msgid "Unscheduled AK Slots"
#~ msgstr "Noch nicht geschedulte AK-Slots"
#~ msgid "Count"
#~ msgstr "Anzahl"
This diff is collapsed.
This diff is collapsed.
(function (factory) {
"use strict";
var sortable,
jq,
_this = this
;
if (typeof define === "function" && define.amd) {
try {
define(["sortablejs", "jquery"], function(Sortable, $) {
sortable = Sortable;
jq = $;
checkErrors();
factory(Sortable, $);
});
} catch(err) {
checkErrors();
}
return;
} else if (typeof exports === 'object') {
try {
sortable = require('sortablejs');
jq = require('jquery');
} catch(err) { }
}
if (typeof jQuery === 'function' || typeof $ === 'function') {
jq = jQuery || $;
}
if (typeof Sortable !== 'undefined') {
sortable = Sortable;
}
function checkErrors() {
if (!jq) {
throw new Error('jQuery is required for jquery-sortablejs');
}
if (!sortable) {
throw new Error('SortableJS is required for jquery-sortablejs (https://github.com/SortableJS/Sortable)');
}
}
checkErrors();
factory(sortable, jq);
})(function (Sortable, $) {
"use strict";
$.fn.sortable = function (options) {
var retVal,
args = arguments;
this.each(function () {
var $el = $(this),
sortable = $el.data('sortable');
if (!sortable && (options instanceof Object || !options)) {
sortable = new Sortable(this, options);
$el.data('sortable', sortable);
} else if (sortable) {
if (options === 'destroy') {
sortable.destroy();
$el.removeData('sortable');
} else if (options === 'widget') {
retVal = sortable;
} else if (typeof sortable[options] === 'function') {
retVal = sortable[options].apply(sortable, [].slice.call(args, 1));
} else if (options in sortable.options) {
retVal = sortable.option.apply(sortable, args);
}
}
});
return (retVal === void 0) ? this : retVal;
};
});
......@@ -11,6 +11,10 @@
{% endblock %}
{% block extrahead %}
<!-- Load popper before bootstrap loads -->
<script src="{% static "common/vendor/popper/popper-1.14.7.min.js" %}"></script>
<!-- Load bootstrap, jquery and fontawesome-->
{% bootstrap_css %}
{% bootstrap_javascript jquery='full' %}
{% fontawesome_5_static %}
......
......@@ -12,7 +12,10 @@
<title>{% block title %}AK Planning{% endblock %}</title>
{# Load Bootstrap CSS and JavaScript as well as font awesome #}
<!-- Load popper before bootstrap loads -->
<script src="{% static "common/vendor/popper/popper-1.14.7.min.js" %}"></script>
<!-- Load bootstrap, jquery and fontawesome-->
{% bootstrap_css %}
{% bootstrap_javascript jquery='slim' %}
{% fontawesome_5_static %}
......