Skip to content
Snippets Groups Projects
Commit e8ba7d85 authored by Benjamin Hättasch's avatar Benjamin Hättasch
Browse files

Use new AJAX based interest indication on AK detail view

parent 8c55f4db
No related branches found
No related tags found
No related merge requests found
......@@ -33,6 +33,6 @@ def increment_interest_counter(request, event_slug, pk, **kwargs):
if ak_interest_indication_active(ak.event, current_timestamp):
ak.interest_counter += 1
ak.save()
return Response(status=status.HTTP_200_OK)
return Response({'interest_counter': ak.interest_counter}, status=status.HTTP_200_OK)
return Response(status=status.HTTP_403_FORBIDDEN)
return Response(status=status.HTTP_404_NOT_FOUND)
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-29 09:57+0000\n"
"POT-Creation-Date: 2021-10-29 11:22+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"
......@@ -56,51 +56,59 @@ msgstr ""
msgid "AK Submission"
msgstr "AK-Eintragung"
#: AKSubmission/templates/AKSubmission/ak_detail.html:37
#: AKSubmission/templates/AKSubmission/ak_detail.html:78
msgid "Interest indication currently not allowed. Sorry."
msgstr "Interessenangabe aktuell nicht erlaubt. Sorry."
#: AKSubmission/templates/AKSubmission/ak_detail.html:80
msgid "Could not save your interest. Sorry."
msgstr "Interesse konnte nicht gespeichert werden. Sorry."
#: AKSubmission/templates/AKSubmission/ak_detail.html:101
msgid "Interest"
msgstr "Interesse"
#: AKSubmission/templates/AKSubmission/ak_detail.html:40
#: AKSubmission/templates/AKSubmission/ak_table.html:56
#: AKSubmission/templates/AKSubmission/ak_detail.html:103
#: AKSubmission/templates/AKSubmission/ak_table.html:57
msgid "Show Interest"
msgstr "Interesse bekunden"
#: AKSubmission/templates/AKSubmission/ak_detail.html:46
#: AKSubmission/templates/AKSubmission/ak_detail.html:109
#: AKSubmission/templates/AKSubmission/ak_table.html:48
msgid "Open external link"
msgstr "Externen Link öffnen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:51
#: AKSubmission/templates/AKSubmission/ak_detail.html:114
msgid "Open protocol link"
msgstr "Protokolllink öffnen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:56
#: AKSubmission/templates/AKSubmission/ak_detail.html:119
#: AKSubmission/templates/AKSubmission/ak_history.html:19
#: AKSubmission/templates/AKSubmission/ak_history.html:31
msgid "History"
msgstr "Versionsgeschichte"
#: AKSubmission/templates/AKSubmission/ak_detail.html:59
#: AKSubmission/templates/AKSubmission/ak_detail.html:122
#: AKSubmission/templates/AKSubmission/akmessage_add.html:8
#: AKSubmission/templates/AKSubmission/akmessage_add.html:16
#: AKSubmission/templates/AKSubmission/akmessage_add.html:22
msgid "Add confidential message to organizers"
msgstr "Sende eine private Nachricht an das Organisationsteam"
#: AKSubmission/templates/AKSubmission/ak_detail.html:62
#: AKSubmission/templates/AKSubmission/ak_detail.html:213
#: AKSubmission/templates/AKSubmission/ak_detail.html:125
#: AKSubmission/templates/AKSubmission/ak_detail.html:276
#: AKSubmission/templates/AKSubmission/ak_edit.html:16
#: AKSubmission/templates/AKSubmission/ak_table.html:53
msgid "Edit"
msgstr "Bearbeiten"
#: AKSubmission/templates/AKSubmission/ak_detail.html:67
#: AKSubmission/templates/AKSubmission/ak_detail.html:130
#: AKSubmission/templates/AKSubmission/ak_history.html:31
#: AKSubmission/templates/AKSubmission/ak_table.html:35
msgid "AK Wish"
msgstr "AK-Wunsch"
#: AKSubmission/templates/AKSubmission/ak_detail.html:74
#: AKSubmission/templates/AKSubmission/ak_detail.html:137
#, python-format
msgid ""
"\n"
......@@ -114,7 +122,7 @@ msgstr ""
"Minute(n) in %(room)s statt.&nbsp;\n"
" "
#: AKSubmission/templates/AKSubmission/ak_detail.html:80
#: AKSubmission/templates/AKSubmission/ak_detail.html:143
#, python-format
msgid ""
"\n"
......@@ -127,96 +135,96 @@ msgstr ""
"Minute(n) in %(room)s.&nbsp;\n"
" "
#: AKSubmission/templates/AKSubmission/ak_detail.html:87
#: AKSubmission/templates/AKSubmission/ak_detail.html:221
#: AKSubmission/templates/AKSubmission/ak_detail.html:150
#: AKSubmission/templates/AKSubmission/ak_detail.html:284
msgid "Go to virtual room"
msgstr "Zum virtuellen Raum"
#: AKSubmission/templates/AKSubmission/ak_detail.html:96
#: AKSubmission/templates/AKSubmission/ak_detail.html:159
#: AKSubmission/templates/AKSubmission/ak_table.html:10
msgid "Who?"
msgstr "Wer?"
#: AKSubmission/templates/AKSubmission/ak_detail.html:102
#: AKSubmission/templates/AKSubmission/ak_detail.html:165
#: AKSubmission/templates/AKSubmission/ak_history.html:36
#: AKSubmission/templates/AKSubmission/ak_table.html:11
msgid "Category"
msgstr "Kategorie"
#: AKSubmission/templates/AKSubmission/ak_detail.html:109
#: AKSubmission/templates/AKSubmission/ak_detail.html:172
#: AKSubmission/templates/AKSubmission/ak_history.html:37
msgid "Track"
msgstr "Track"
#: AKSubmission/templates/AKSubmission/ak_detail.html:115
#: AKSubmission/templates/AKSubmission/ak_detail.html:178
#, fuzzy
#| msgid "Present results of this AK"
msgid "Present this AK"
msgstr "Die Ergebnisse dieses AKs vorstellen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:120
#: AKSubmission/templates/AKSubmission/ak_detail.html:183
msgid "(Category Default)"
msgstr "(Kategorievoreinstellung)"
#: AKSubmission/templates/AKSubmission/ak_detail.html:126
#: AKSubmission/templates/AKSubmission/ak_detail.html:189
#: AKSubmission/templates/AKSubmission/ak_table.html:12
msgid "Tags"
msgstr "Tags"
#: AKSubmission/templates/AKSubmission/ak_detail.html:132
#: AKSubmission/templates/AKSubmission/ak_detail.html:195
msgid "Reso intention?"
msgstr "Resoabsicht?"
#: AKSubmission/templates/AKSubmission/ak_detail.html:139
#: AKSubmission/templates/AKSubmission/ak_detail.html:202
msgid "Requirements"
msgstr "Anforderungen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:152
#: AKSubmission/templates/AKSubmission/ak_detail.html:215
msgid "Conflicting AKs"
msgstr "AK-Konflikte"
#: AKSubmission/templates/AKSubmission/ak_detail.html:160
#: AKSubmission/templates/AKSubmission/ak_detail.html:223
msgid "Prerequisite AKs"
msgstr "Vorausgesetzte AKs"
#: AKSubmission/templates/AKSubmission/ak_detail.html:168
#: AKSubmission/templates/AKSubmission/ak_detail.html:231
msgid "Notes"
msgstr "Notizen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:181
#: AKSubmission/templates/AKSubmission/ak_detail.html:244
msgid "When?"
msgstr "Wann?"
#: AKSubmission/templates/AKSubmission/ak_detail.html:183
#: AKSubmission/templates/AKSubmission/ak_detail.html:246
#: AKSubmission/templates/AKSubmission/akslot_delete.html:35
msgid "Duration"
msgstr "Dauer"
#: AKSubmission/templates/AKSubmission/ak_detail.html:185
#: AKSubmission/templates/AKSubmission/ak_detail.html:248
msgid "Room"
msgstr "Raum"
#: AKSubmission/templates/AKSubmission/ak_detail.html:216
#: AKSubmission/templates/AKSubmission/ak_detail.html:279
msgid "Delete"
msgstr "Löschen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:227
#: AKSubmission/templates/AKSubmission/ak_detail.html:290
msgid "Schedule"
msgstr "Schedule"
#: AKSubmission/templates/AKSubmission/ak_detail.html:239
#: AKSubmission/templates/AKSubmission/ak_detail.html:302
msgid "Add another slot"
msgstr "Einen neuen AK-Slot hinzufügen"
#: AKSubmission/templates/AKSubmission/ak_detail.html:249
#: AKSubmission/templates/AKSubmission/ak_detail.html:312
msgid "Possible Times"
msgstr "Mögliche Zeiten"
#: AKSubmission/templates/AKSubmission/ak_detail.html:253
#: AKSubmission/templates/AKSubmission/ak_detail.html:316
msgid "Start"
msgstr "Start"
#: AKSubmission/templates/AKSubmission/ak_detail.html:254
#: AKSubmission/templates/AKSubmission/ak_detail.html:317
msgid "End"
msgstr "Ende"
......@@ -270,7 +278,7 @@ msgstr "Die Ergebnisse dieses AKs vorstellen"
msgid "Intends to submit a resolution"
msgstr "Beabsichtigt eine Resolution einzureichen"
#: AKSubmission/templates/AKSubmission/ak_list.html:6 AKSubmission/views.py:39
#: AKSubmission/templates/AKSubmission/ak_list.html:6 AKSubmission/views.py:40
msgid "All AKs"
msgstr "Alle AKs"
......@@ -290,7 +298,7 @@ msgstr "AK hinzufügen"
msgid "Details"
msgstr "Details"
#: AKSubmission/templates/AKSubmission/ak_table.html:66
#: AKSubmission/templates/AKSubmission/ak_table.html:67
msgid "There are no AKs in this category yet"
msgstr "Es gibt noch keine AKs in dieser Kategorie"
......@@ -396,65 +404,65 @@ msgstr ""
msgid "Submit"
msgstr "Eintragen"
#: AKSubmission/views.py:70
#: AKSubmission/views.py:71
msgid "Wishes"
msgstr "Wünsche"
#: AKSubmission/views.py:70
#: AKSubmission/views.py:71
msgid "AKs one would like to have"
msgstr ""
"AKs die sich gewünscht wurden, aber bei denen noch nicht klar ist, wer sie "
"macht. Falls du dir das vorstellen kannst, trag dich einfach ein"
#: AKSubmission/views.py:86
#: AKSubmission/views.py:87
msgid "Currently planned AKs"
msgstr "Aktuell geplante AKs"
#: AKSubmission/views.py:184
#: AKSubmission/views.py:188
msgid "Event inactive. Cannot create or update."
msgstr "Event inaktiv. Hinzufügen/Bearbeiten nicht möglich."
#: AKSubmission/views.py:200
#: AKSubmission/views.py:204
msgid "AK successfully created"
msgstr "AK erfolgreich angelegt"
#: AKSubmission/views.py:258
#: AKSubmission/views.py:262
msgid "AK successfully updated"
msgstr "AK erfolgreich aktualisiert"
#: AKSubmission/views.py:289
#: AKSubmission/views.py:293
msgid "Interest saved"
msgstr "Interesse gespeichert"
#: AKSubmission/views.py:348
#: AKSubmission/views.py:352
msgid "Person Info successfully updated"
msgstr "Personen-Info erfolgreich aktualisiert"
#: AKSubmission/views.py:368
#: AKSubmission/views.py:372
msgid "No user selected"
msgstr "Keine Person ausgewählt"
#: AKSubmission/views.py:394
#: AKSubmission/views.py:398
msgid "AK Slot successfully added"
msgstr "AK-Slot erfolgreich angelegt"
#: AKSubmission/views.py:408
#: AKSubmission/views.py:412
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:418
#: AKSubmission/views.py:422
msgid "AK Slot successfully updated"
msgstr "AK-Slot erfolgreich aktualisiert"
#: AKSubmission/views.py:431
#: AKSubmission/views.py:435
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:441
#: AKSubmission/views.py:445
msgid "AK Slot successfully deleted"
msgstr "AK-Slot erfolgreich angelegt"
#: AKSubmission/views.py:462
#: AKSubmission/views.py:466
msgid "Message to organizers successfully saved"
msgstr "Nachricht an die Organisator*innen erfolgreich gespeichert"
......
......@@ -26,6 +26,69 @@
{% if 'AKPlan'|check_app_installed %}
{% block imports %}
{% include "AKPlan/plan_akslot.html" %}
<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 indicate_interest(ak_id, btn) {
$.ajax({
url: "{% url "model:AK-list" event_slug=event.slug %}" + ak_id + "/indicate-interest/",
type: 'POST',
data: {
},
success: function (response) {
console.log(response);
btn.html('{% fa5_icon 'check' 'fas' %}');
btn.off('click');
$('#interest-counter').html(response.interest_counter);
},
error: function (response) {
if(response.status === 403)
alert("{% trans 'Interest indication currently not allowed. Sorry.' %}");
else
alert("{% trans 'Could not save your interest. Sorry.' %}");
}
});
}
// Update counter
$('#btn-indicate-interest').click(function () {
indicate_interest({{ ak.pk }}, $(this));
});
});
</script>
{% endblock %}
{% endif %}
......@@ -34,11 +97,11 @@
<div class="text-right">
{% if ak.interest_counter >= 0 %}
{% trans 'Interest' %}: <b class='mx-1 text-muted'>{{ ak.interest_counter }}</b>
{% if ak.event.active %}
<a href="{% url 'submit:inc_interest' event_slug=ak.event.slug pk=ak.pk %}" data-toggle="tooltip"
{% if ak.event.active and interest_indication_active %}
{% trans 'Interest' %}: <b class='mx-1 text-muted' id="interest-counter">{{ ak.interest_counter }}</b>
<a href="#" data-toggle="tooltip"
title="{% trans 'Show Interest' %}"
class="btn btn-primary">{% fa5_icon 'thumbs-up' 'fas' %}</a>
class="btn btn-primary" id="btn-indicate-interest">{% fa5_icon 'thumbs-up' 'fas' %}</a>
{% endif %}
{% endif %}
{% if ak.link != "" %}
......
......@@ -16,6 +16,7 @@ from AKModel.availability.models import Availability
from AKModel.models import AK, AKCategory, AKTag, AKOwner, AKSlot, AKTrack, AKOrgaMessage
from AKModel.views import EventSlugMixin
from AKModel.views import FilterByEventSlugMixin
from AKSubmission.api import ak_interest_indication_active
from AKSubmission.forms import AKWishForm, AKOwnerForm, AKEditForm, AKSubmissionForm, AKDurationForm, AKOrgaMessageForm
......@@ -157,6 +158,9 @@ class AKDetailView(EventSlugMixin, DetailView):
context["featured_slot_remaining"] = floor(remaining.days * 24 * 60 + remaining.seconds / 60)
break
# Display interest indication button?
context['interest_indication_active'] = ak_interest_indication_active(self.event, current_timestamp)
return context
......
......@@ -14,7 +14,7 @@
<!-- Load bootstrap, jquery and fontawesome-->
{% bootstrap_css %}
{% bootstrap_javascript jquery='slim' %}
{% bootstrap_javascript jquery='full' %}
{% fontawesome_5_static %}
<link rel="stylesheet" href="{% static 'common/css/custom.css' %}">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment