Skip to content

Commit

Permalink
Merge pull request #112 from molgen/external-events
Browse files Browse the repository at this point in the history
External events
  • Loading branch information
donald authored Apr 21, 2021
2 parents 73c51f8 + bf6910c commit abed7b8
Show file tree
Hide file tree
Showing 7 changed files with 87 additions and 29 deletions.
26 changes: 17 additions & 9 deletions locale/de/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-20 19:33+0100\n"
"POT-Creation-Date: 2021-04-21 14:09+0200\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"
Expand Down Expand Up @@ -1522,7 +1522,7 @@ msgid "Wagtail search tests"
msgstr ""

#: bla/lib/python3.7/site-packages/wagtail/tests/settings.py:239
#: config/settings/base.py:219
#: config/settings/base.py:220
msgid "English"
msgstr "Englisch"

Expand Down Expand Up @@ -2000,7 +2000,7 @@ msgstr ""
msgid "Edit this video"
msgstr ""

#: config/settings/base.py:220
#: config/settings/base.py:221
msgid "German"
msgstr "Deutsch"

Expand Down Expand Up @@ -2150,23 +2150,23 @@ msgstr "Endzeit"
msgid "Room"
msgstr "Raum"

#: mpicms/events/models.py:44
#: mpicms/events/models.py:46
msgid "event dates"
msgstr "Veranstaltungsdaten"

#: mpicms/events/models.py:106
#: mpicms/events/models.py:96
msgid "event"
msgstr "Veranstaltung"

#: mpicms/events/models.py:107
#: mpicms/events/models.py:97
msgid "events"
msgstr "Veranstaltungen"

#: mpicms/events/models.py:148
#: mpicms/events/models.py:138
msgid "event index"
msgstr "Veranstaltungs-Index"

#: mpicms/events/models.py:149
#: mpicms/events/models.py:139
msgid "event indexes"
msgstr "Veranstaltungs-Indexes"

Expand Down Expand Up @@ -2303,7 +2303,15 @@ msgstr "Veranstaltungen der Woche"
msgid "All events"
msgstr "Alle Veranstaltungen"

#: mpicms/templates/events/event_index.html:11
#: mpicms/templates/events/event_index.html:5
msgid "hide external events"
msgstr "Externe Events verbergen"

#: mpicms/templates/events/event_index.html:6
msgid "show external events"
msgstr "Externe Events zeigen"

#: mpicms/templates/events/event_index.html:15
msgid "Subscribe"
msgstr "Abonnieren"

Expand Down
18 changes: 18 additions & 0 deletions mpicms/events/migrations/0015_event_external.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-03-21 11:49

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('events', '0014_auto_20210114_1926'),
]

operations = [
migrations.AddField(
model_name='event',
name='external',
field=models.BooleanField(default=False),
),
]
18 changes: 4 additions & 14 deletions mpicms/events/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class Event(BodyMixin, BasePage):
start_time = models.TimeField(_('start time'), blank=True, null=True)
end_time = models.TimeField(_('end time'), blank=True, null=True)
room = models.CharField(_('Room'), max_length=10, blank=True)
external = models.BooleanField(default=False)

header_image = models.ForeignKey(
'wagtailimages.Image',
Expand All @@ -36,6 +37,7 @@ class Event(BodyMixin, BasePage):
ImageChooserPanel('header_image'),
MultiFieldPanel(
[
FieldPanel('external'),
FieldPanel('start_date'),
FieldPanel('start_time'),
FieldPanel('end_date'),
Expand Down Expand Up @@ -74,7 +76,6 @@ def get_dict(self, request=None):
'start': self.start.isoformat(),
'end': self.end.isoformat() if self.end else None,
'url': self.get_url(request=request),
'color': '#006c66'
}

def clean(self):
Expand All @@ -90,17 +91,6 @@ def clean(self):
if self.end and self.end < self.start:
raise ValidationError({'end_time': 'The end time cannot be before the start time.'})

def get_context(self, request, *args, **kwargs):
context = super().get_context(request, *args, **kwargs)

events = []
for child in self.get_parent().get_children().type(Event).live().specific():
events.append(child.get_dict(request))

context["events"] = json.dumps(events)

return context

class Meta(object): # noqa
ordering = ['start_date']
verbose_name = _('event')
Expand All @@ -117,8 +107,8 @@ def events(self):
return Event.objects.live().specific()
return self.get_children().type(Event).live().specific()

def get_json_events(self, request=None):
event_dicts = [event.get_dict(request) for event in self.events]
def get_json_events(self, request=None, external=False):
event_dicts = [ event.get_dict(request) for event in self.events.filter(external=external) ]
return json.dumps(event_dicts)

def clean(self): # Prevent more than one event index
Expand Down
4 changes: 2 additions & 2 deletions mpicms/events/templatetags/event_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@


@register.simple_tag(takes_context=True)
def get_json_events(context, event_index):
return event_index.get_json_events(request=context['request'])
def get_json_events(context, event_index, external=False):
return event_index.get_json_events(request=context['request'], external=external)
9 changes: 9 additions & 0 deletions mpicms/static/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -761,3 +761,12 @@ div.codehilite:not(:last-child) {
width: 100%;
height: 100%;
}

#switch_external {
color: black;
background-color: silver;
}

#switch_external:hover {
background-color: lightgray;
}
5 changes: 5 additions & 0 deletions mpicms/templates/events/event.html
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ <h2 class="title is-2">{{ page.title }}</h2>
</div>
{% endif %}

{% if page.external %}
<div class="tag is-medium">
external
</div>
{% endif %}

{% if page.room %}
<div class="tag is-medium">
Expand Down
36 changes: 32 additions & 4 deletions mpicms/templates/events/event_index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,38 @@
{% load event_tags i18n %}

{% block content %}
{% translate "hide external events" as txt_hide_external_events %}
{% translate "show external events" as txt_show_external_events %}
<div class="section">

<h2 class="title is-2">{{ page.title }}</h2>

<div id="calendar"></div>
<br>
<a href="https://it.molgen.mpg.de/cgi-bin/ics/subscription?cal=molgen&subscribe=1" class="button cal-button">{% trans 'Subscribe' %}</a>

<div class="fc-toolbar">
<div class="fc-left">
<a href="https://it.molgen.mpg.de/cgi-bin/ics/subscription?cal=molgen&subscribe=1" class="button cal-button">{% trans 'Subscribe' %}</a>
</div>
<div class="fc-center">
</div>
<div class="fc-right">
<a id="switch_external" class="button">{{ txt_hide_external_events }}</a>
</div>
</div>
</div>

{% get_json_events page as events %}
{% autoescape off %}
<script>

var event_source_internal = { events: {% get_json_events page %}, color: '#006c66' };
var event_source_external = { events: {% get_json_events page True %}, color: 'silver', textColor: 'black' };

document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');

var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'dayGrid', 'timeGrid' ],
events: {{ events|safe }},
eventSources: [ event_source_internal , event_source_external ],
locale: '{{ LANGUAGE_CODE }}',
header: {
left: 'dayGridMonth,timeGridWeek,timeGridDay',
Expand All @@ -29,9 +42,24 @@ <h2 class="title is-2">{{ page.title }}</h2>
}
});

var externalEventsShown = 1

document.getElementById('switch_external').addEventListener("click", function() {
if (externalEventsShown) {
calendar.getEventSources()[1].remove()
externalEventsShown = 0
this.innerHTML="{{ txt_show_external_events }}"
} else {
calendar.addEventSource(event_source_external)
externalEventsShown = 1
this.innerHTML="{{ txt_hide_external_events }}"
}
});

calendar.render();
});

</script>
{% endautoescape %}

{% endblock %}

0 comments on commit abed7b8

Please sign in to comment.