diff --git a/static/img/m1.png b/static/img/m1.png new file mode 100644 index 00000000..329ff524 Binary files /dev/null and b/static/img/m1.png differ diff --git a/static/img/m2.png b/static/img/m2.png new file mode 100644 index 00000000..b999cbcf Binary files /dev/null and b/static/img/m2.png differ diff --git a/static/img/m3.png b/static/img/m3.png new file mode 100644 index 00000000..9f30b309 Binary files /dev/null and b/static/img/m3.png differ diff --git a/static/img/m4.png b/static/img/m4.png new file mode 100644 index 00000000..0d3f8263 Binary files /dev/null and b/static/img/m4.png differ diff --git a/static/img/m5.png b/static/img/m5.png new file mode 100644 index 00000000..61387d2a Binary files /dev/null and b/static/img/m5.png differ diff --git a/static/js/markerclusterer.js b/static/js/markerclusterer.js index d6c4dce3..b7677fc6 100644 --- a/static/js/markerclusterer.js +++ b/static/js/markerclusterer.js @@ -1,11 +1,11 @@ // ==ClosureCompiler== // @compilation_level ADVANCED_OPTIMIZATIONS -// @externs_url http://closure-compiler.googlecode.com/svn/trunk/contrib/externs/maps/google_maps_api_v3_3.js +// @externs_url https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/maps/google_maps_api_v3.js // ==/ClosureCompiler== /** * @name MarkerClusterer for Google Maps v3 - * @version version 1.0.1 + * @version version 1.0 * @author Luke Mahe * @fileoverview * The library creates and manages per-zoom-level clusters for large amounts of @@ -17,6 +17,9 @@ */ /** + * @license + * Copyright 2010 Google Inc. All Rights Reserved. + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -43,7 +46,7 @@ * cluster. * 'zoomOnClick': (boolean) Whether the default behaviour of clicking on a * cluster is to zoom into it. - * 'averageCenter': (boolean) Wether the center of each cluster should be + * 'averageCenter': (boolean) Whether the center of each cluster should be * the average of all markers in the cluster. * 'minimumClusterSize': (number) The minimum number of markers to be in a * cluster before the markers are hidden and a count @@ -56,6 +59,7 @@ * 'textColor': (string) The text color. * 'textSize': (number) The text size. * 'backgroundPosition': (string) The position of the backgound x, y. + * 'iconAnchor': (Array) The anchor position of the icon x, y. * @constructor * @extends google.maps.OverlayView */ @@ -161,12 +165,7 @@ function MarkerClusterer(map, opt_markers, opt_options) { // Add the map event listeners var that = this; google.maps.event.addListener(this.map_, 'zoom_changed', function() { - // Determines map type and prevent illegal zoom levels var zoom = that.map_.getZoom(); - var minZoom = that.map_.minZoom || 0; - var maxZoom = Math.min(that.map_.maxZoom || 100, - that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom); - zoom = Math.min(Math.max(zoom,minZoom),maxZoom); if (that.prevZoom_ != zoom) { that.prevZoom_ = zoom; @@ -179,7 +178,7 @@ function MarkerClusterer(map, opt_markers, opt_options) { }); // Finally, add the markers - if (opt_markers && (opt_markers.length || Object.keys(opt_markers).length)) { + if (opt_markers && opt_markers.length) { this.addMarkers(opt_markers, false); } } @@ -191,9 +190,7 @@ function MarkerClusterer(map, opt_markers, opt_options) { * @type {string} * @private */ -MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ = - 'http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/' + - 'images/m'; +MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ = '/static/img/m'; /** @@ -404,14 +401,8 @@ MarkerClusterer.prototype.getCalculator = function() { * @param {boolean=} opt_nodraw Whether to redraw the clusters. */ MarkerClusterer.prototype.addMarkers = function(markers, opt_nodraw) { - if (markers.length) { - for (var i = 0, marker; marker = markers[i]; i++) { - this.pushMarkerTo_(marker); - } - } else if (Object.keys(markers).length) { - for (var marker in markers) { - this.pushMarkerTo_(markers[marker]); - } + for (var i = 0, marker; marker = markers[i]; i++) { + this.pushMarkerTo_(marker); } if (!opt_nodraw) { this.redraw(); @@ -1052,12 +1043,14 @@ function ClusterIcon(cluster, styles, opt_padding) { /** * Triggers the clusterclick event and zoom's if the option is set. + * + * @param {google.maps.MouseEvent} event The event to propagate */ -ClusterIcon.prototype.triggerClusterClick = function() { +ClusterIcon.prototype.triggerClusterClick = function(event) { var markerClusterer = this.cluster_.getMarkerClusterer(); // Trigger the clusterclick event. - google.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_); + google.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_, event); if (markerClusterer.isZoomOnClick()) { // Zoom into the cluster. @@ -1082,8 +1075,18 @@ ClusterIcon.prototype.onAdd = function() { panes.overlayMouseTarget.appendChild(this.div_); var that = this; - google.maps.event.addDomListener(this.div_, 'click', function() { - that.triggerClusterClick(); + var isDragging = false; + google.maps.event.addDomListener(this.div_, 'click', function(event) { + // Only perform click when not preceded by a drag + if (!isDragging) { + that.triggerClusterClick(event); + } + }); + google.maps.event.addDomListener(this.div_, 'mousedown', function() { + isDragging = false; + }); + google.maps.event.addDomListener(this.div_, 'mousemove', function() { + isDragging = true; }); }; @@ -1097,8 +1100,14 @@ ClusterIcon.prototype.onAdd = function() { */ ClusterIcon.prototype.getPosFromLatLng_ = function(latlng) { var pos = this.getProjection().fromLatLngToDivPixel(latlng); - pos.x -= parseInt(this.width_ / 2, 10); - pos.y -= parseInt(this.height_ / 2, 10); + + if (typeof this.iconAnchor_ === 'object' && this.iconAnchor_.length === 2) { + pos.x -= this.iconAnchor_[0]; + pos.y -= this.iconAnchor_[1]; + } else { + pos.x -= parseInt(this.width_ / 2, 10); + pos.y -= parseInt(this.height_ / 2, 10); + } return pos; }; @@ -1194,6 +1203,7 @@ ClusterIcon.prototype.useStyle = function() { this.anchor_ = style['anchor']; this.textSize_ = style['textSize']; this.backgroundPosition_ = style['backgroundPosition']; + this.iconAnchor_ = style['iconAnchor']; }; @@ -1224,6 +1234,10 @@ ClusterIcon.prototype.createCss = function(pos) { this.anchor_[0] < this.height_) { style.push('height:' + (this.height_ - this.anchor_[0]) + 'px; padding-top:' + this.anchor_[0] + 'px;'); + } else if (typeof this.anchor_[0] === 'number' && this.anchor_[0] < 0 && + -this.anchor_[0] < this.height_) { + style.push('height:' + this.height_ + 'px; line-height:' + (this.height_ + this.anchor_[0]) + + 'px;'); } else { style.push('height:' + this.height_ + 'px; line-height:' + this.height_ + 'px;'); @@ -1299,12 +1313,3 @@ Cluster.prototype['getMarkers'] = Cluster.prototype.getMarkers; ClusterIcon.prototype['onAdd'] = ClusterIcon.prototype.onAdd; ClusterIcon.prototype['draw'] = ClusterIcon.prototype.draw; ClusterIcon.prototype['onRemove'] = ClusterIcon.prototype.onRemove; - -Object.keys = Object.keys || function(o) { - var result = []; - for(var name in o) { - if (o.hasOwnProperty(name)) - result.push(name); - } - return result; -}; diff --git a/web/templates/base.html b/web/templates/base.html index 1d8d06f2..702292ce 100644 --- a/web/templates/base.html +++ b/web/templates/base.html @@ -4,110 +4,110 @@ - - - - - - - - - - - - - - - - {% compress css %} - - - - - {% block custom_css %}{% endblock %} - {% endcompress %} - - - - - - - - - - - - - - - - - - - - - - {% block social %}{% endblock %} - Europe Code Week {% block title %}{% endblock title %} + + + + + + + + + + + + + + + + {% compress css %} + + + + + {% block custom_css %}{% endblock %} + {% endcompress %} + + + + + + + + + + + + + + + + + + + + + + {% block social %}{% endblock %} + Europe Code Week {% block title %}{% endblock title %} - -
+ +
- {% block main_navigation %} - {% include 'layout/top_navigation.html' %} - {% endblock %} + {% block main_navigation %} + {% include 'layout/top_navigation.html' %} + {% endblock %} - {% block messages %} - {% include 'layout/messages.html' %} - {% endblock messages %} + {% block messages %} + {% include 'layout/messages.html' %} + {% endblock messages %} - {% block content %} {% endblock content %} + {% block content %} {% endblock content %} -
+
- {% include 'layout/footer.html' %} + {% include 'layout/footer.html' %} - - - + + + - {% compress js %} + {% compress js %} - - - - - {% endcompress %} - - {% block custom_js %}{% endblock custom_js %} - - - + + + + + {% endcompress %} + + {% block custom_js %}{% endblock custom_js %} + + + diff --git a/web/templates/layout/all_events.html b/web/templates/layout/all_events.html index b9c4e54e..eda7acdc 100644 --- a/web/templates/layout/all_events.html +++ b/web/templates/layout/all_events.html @@ -1,30 +1,30 @@ {% load endless %} {% paginate 6 latest_events %} - {% for event in latest_events %} -
-
- - - - + {% for event in latest_events %} +
+
+ + + + -
-

{{ event.description|truncatewords:20 }}

+
+

{{ event.description|truncatewords:20 }}

- View + View - - {% include 'layout/time_to_event.html' %} - + + {% include 'layout/time_to_event.html' %} + -
-
+
+
- {% endfor %} + {% endfor %}
{% show_more "More Events" %} diff --git a/web/templates/min.html b/web/templates/min.html index da1e75ba..8315ab21 100644 --- a/web/templates/min.html +++ b/web/templates/min.html @@ -3,75 +3,75 @@ - - - - - - - - - - {% compress css %} - - {% block custom_css %}{% endblock %} - {% endcompress %} + + + + + + + + + + {% compress css %} + + {% block custom_css %}{% endblock %} + {% endcompress %} - + + - - - - - {% block social %}{% endblock %} - Europe Code Week {% block title %}{% endblock title %} + + + + {% block social %}{% endblock %} + Europe Code Week {% block title %}{% endblock title %} - -
+ +
- {% block content %} {% endblock content %} + {% block content %} {% endblock content %} -
+
- - - {% compress js %} + + + {% compress js %} - {% endcompress %} + {% endcompress %} - {% block custom_js %}{% endblock custom_js %} + {% block custom_js %}{% endblock custom_js %} - - + + diff --git a/web/templates/pages/add_event.html b/web/templates/pages/add_event.html index 5fc69bfe..92771473 100644 --- a/web/templates/pages/add_event.html +++ b/web/templates/pages/add_event.html @@ -5,274 +5,274 @@ {% block title %}- Add Event{% endblock title %} {% block custom_css %} - - + + {% endblock %} {% block content %} -
-
-

{% if editing %}Edit{% else %}Add {% endif %} your #codeEU event

- -
-

Required fields are marked with an * asterisk. Feel free to add the event listing in your local language.

- - - -
{% csrf_token %} -
-
-
- - -
- {{ form.title }} -
- {% if form.title.errors %} - {{ form.title.errors }} - {% endif %} -
- -
- - -
- {{ form.organizer }} -
- {% if form.organizer.errors %} - {{ form.organizer.errors }} - {% endif %} -
- -
- - -
- {{ form.description }} -
- {% if form.description.errors %} - {{ form.description.errors }} - {% endif %} -
- -
- {{ form.audience.help_text }} - - -
- {{ form.audience }} -
- {% if form.audience.errors %} - {{ form.audience.errors }} - {% endif %} -
- -
- {{ form.theme.help_text }} - - -
- {{ form.theme }} -
- {% if form.theme.errors %} - {{ form.theme.errors }} - {% endif %} -
- - -
-
- -
- - -
- {{ form.location }} -
- {% if form.location.errors or form.country.errors %} - {{ form.location.errors }}{{form.country.errors}} - {% endif %} -
-
-
-
- -
- - -
- - {{ form.start_date }} -
- {% if form.start_date.errors %} - {{ form.start_date.errors }} - {% elif form.start_date.help_text %} - {{ form.start_date.help_text }} - {% endif %} -
- -
- - -
- - {{ form.end_date }} -
- {% if form.end_date.errors %} - {{ form.end_date.errors }} - {% elif form.end_date.help_text %} - {{ form.end_date.help_text }} - {% endif %} -
-
- {{ form.event_url.help_text }} - - -
- {{ form.event_url }} -
- {% if form.event_url.errors %} - {{ form.event_url.errors }} - {% endif %} -
- -
- {{ form.contact_person.help_text }} - - -
- {{ form.contact_person }} -
- {% if form.contact_person.errors %} - {{ form.contact_person.errors }} - {% endif %} -
- -
- - -
- {{ form.tags }} -
- {% if form.tags.errors %} - {{ form.tags.errors }} - {% elif form.tags.help_text %} - {{ form.tags.help_text }} - {% endif %} -
- -
- - -
- -
- Image Placeholder -
-
- {% if picture_url %} - {{ form.picture.name }} Image - {% endif %} -
-
- {{ form.picture.help_text }} - - Select image - Change - - Remove -
-
-
-
- - -
-
-

Your contact information

-
- This information will only be visible to - EU Code Week Ambassadors and Code Week organizers, who will check your event before it appears on the map and might contact you if edits are necessary or for administering surveys for statistical purposes after the event. -
-
-
- {{ form.user_email.help_text }} - -
- {{ form.user_email }} -
- {% if form.user_email.errors %} - {{ form.user_email.errors }} - {% endif %} -
-
-
-
-
-
- -
-
-
-
-
+
+
+

{% if editing %}Edit{% else %}Add {% endif %} your #codeEU event

+ +
+

Required fields are marked with an * asterisk. Feel free to add the event listing in your local language.

+ + + +
{% csrf_token %} +
+
+
+ + +
+ {{ form.title }} +
+ {% if form.title.errors %} + {{ form.title.errors }} + {% endif %} +
+ +
+ + +
+ {{ form.organizer }} +
+ {% if form.organizer.errors %} + {{ form.organizer.errors }} + {% endif %} +
+ +
+ + +
+ {{ form.description }} +
+ {% if form.description.errors %} + {{ form.description.errors }} + {% endif %} +
+ +
+ {{ form.audience.help_text }} + + +
+ {{ form.audience }} +
+ {% if form.audience.errors %} + {{ form.audience.errors }} + {% endif %} +
+ +
+ {{ form.theme.help_text }} + + +
+ {{ form.theme }} +
+ {% if form.theme.errors %} + {{ form.theme.errors }} + {% endif %} +
+ + +
+
+ +
+ + +
+ {{ form.location }} +
+ {% if form.location.errors or form.country.errors %} + {{ form.location.errors }}{{form.country.errors}} + {% endif %} +
+
+
+
+ +
+ + +
+ + {{ form.start_date }} +
+ {% if form.start_date.errors %} + {{ form.start_date.errors }} + {% elif form.start_date.help_text %} + {{ form.start_date.help_text }} + {% endif %} +
+ +
+ + +
+ + {{ form.end_date }} +
+ {% if form.end_date.errors %} + {{ form.end_date.errors }} + {% elif form.end_date.help_text %} + {{ form.end_date.help_text }} + {% endif %} +
+
+ {{ form.event_url.help_text }} + + +
+ {{ form.event_url }} +
+ {% if form.event_url.errors %} + {{ form.event_url.errors }} + {% endif %} +
+ +
+ {{ form.contact_person.help_text }} + + +
+ {{ form.contact_person }} +
+ {% if form.contact_person.errors %} + {{ form.contact_person.errors }} + {% endif %} +
+ +
+ + +
+ {{ form.tags }} +
+ {% if form.tags.errors %} + {{ form.tags.errors }} + {% elif form.tags.help_text %} + {{ form.tags.help_text }} + {% endif %} +
+ +
+ + +
+ +
+ Image Placeholder +
+
+ {% if picture_url %} + {{ form.picture.name }} Image + {% endif %} +
+
+ {{ form.picture.help_text }} + + Select image + Change + + Remove +
+
+
+
+ + +
+
+

Your contact information

+
+ This information will only be visible to + EU Code Week Ambassadors and Code Week organizers, who will check your event before it appears on the map and might contact you if edits are necessary or for administering surveys for statistical purposes after the event. +
+
+
+ {{ form.user_email.help_text }} + +
+ {{ form.user_email }} +
+ {% if form.user_email.errors %} + {{ form.user_email.errors }} + {% endif %} +
+
+
+
+
+
+ +
+
+
+
+
{% endblock content %} {% block custom_js %} - - {% compress js %} - - - - - - {% endcompress %} - -{% endblock custom_js %} \ No newline at end of file + + {% compress js %} + + + + + + {% endcompress %} + +{% endblock custom_js %} diff --git a/web/templates/pages/guide.html b/web/templates/pages/guide.html index ad160dbf..11c4346b 100644 --- a/web/templates/pages/guide.html +++ b/web/templates/pages/guide.html @@ -7,15 +7,11 @@
- +

How to organize your own event?

-
- - - - +

Download the complete #codeEU Toolkit in PDF

#codeEU guidelines

@@ -41,7 +37,7 @@

What you need for a #codeEU event

Promotion materials

Unless you're organizing an event for a closed group of students, coworkers or friends, you will need to do some promotion to attract participants. Social media is a good promotional tool, and you can also get in touch with local media outlets. Feel free to use any parts of the following press releases for that purpose:

+
{% endblock content %} diff --git a/web/templates/pages/index.html b/web/templates/pages/index.html index 2a997cfe..92e12ce1 100644 --- a/web/templates/pages/index.html +++ b/web/templates/pages/index.html @@ -5,114 +5,114 @@ {% block title %}- Map of Events{% endblock title %} {% block social %} - + - - - - - + + + + + - - - - + + + + {% endblock social %} {% block messages %}{% endblock %} {% block content %} -
-
-
-
- -
-
-
+
+
+
+
+ +
+
+
- +
+
{% endblock content %} {% block custom_js %} - - {% compress js %} - - - - - - {% endcompress %} + + {% compress js %} + + + + + + {% endcompress %} - + {% endblock %} diff --git a/web/templates/pages/map.html b/web/templates/pages/map.html index 12ea8a09..7f173959 100644 --- a/web/templates/pages/map.html +++ b/web/templates/pages/map.html @@ -7,65 +7,65 @@ {% block messages %}{% endblock %} {% block content %} -
-
-
-
- -
-
-
+
+
+
+
+ +
+
+
-
-
- -
+
+
+ +
+
+ {{ each_country.0 }} +
+
+ {% endfor %} +
+
+ +
+ {% endblock content %} {% block custom_js %} - - {% compress js %} - - - - - - {% endcompress %} + + {% compress js %} + + + + + + {% endcompress %} - + {% endblock %} diff --git a/web/templates/pages/view_event.html b/web/templates/pages/view_event.html index 2e4ba0e1..bdbdfee2 100644 --- a/web/templates/pages/view_event.html +++ b/web/templates/pages/view_event.html @@ -5,309 +5,309 @@ {% block title %}- {{ event.title }} ({{ event.country.name }}){% endblock title %} {% block social %} - + - - - {% if event.picture %} - - {% else %} - - {% endif %} - - + + + {% if event.picture %} + + {% else %} + + {% endif %} + + - - - - - {% if event.picture %} - - {% else %} - - {% endif %} + + + + + {% if event.picture %} + + {% else %} + + {% endif %} {% endblock social %} {% block content %} -
-
-
- {% if event.creator.id == request.user.id or user.is_staff %} - {% if event.is_certificate_generated %} -
-

- Your Code Week certificate is ready. - Feel free to download it or share it directly. - View your certificate here. -

-
- {% elif event.is_reporting_allowed %} -
-

- Submit a report for this event and claim your Code Week certificate. - Report event and claim certificate -

-
- {% endif %} - {% endif %} +
+
+
+ {% if event.creator.id == request.user.id or user.is_staff %} + {% if event.is_certificate_generated %} +
+

+ Your Code Week certificate is ready. + Feel free to download it or share it directly. + View your certificate here. +

+
+ {% elif event.is_reporting_allowed %} +
+

+ Submit a report for this event and claim your Code Week certificate. + Report event and claim certificate +

+
+ {% endif %} + {% endif %} - {% if user.profile.is_ambassador %} - {% if user.profile.country == event.country or user.is_staff %} -
- {% if event.status == 'PENDING' %} -
- This event is stil Pending. - If it looks good then -
- {% csrf_token %} - -
+ {% if user.profile.is_ambassador %} + {% if user.profile.country == event.country or user.is_staff %} +
+ {% if event.status == 'PENDING' %} +
+ This event is stil Pending. + If it looks good then +
+ {% csrf_token %} + +
- it - {% if event.creator.email %} or contact the event creator - - by email - {% endif %}. + it + {% if event.creator.email %} or contact the event creator + + by email + {% endif %}. - Otherwise -
- {% csrf_token %} - -
- it. + Otherwise +
+ {% csrf_token %} + +
+ it. - {% if next_event%} - - {% endif %} -
- {% elif event.status == 'APPROVED' %} -
- This event is nice and approved. You can revert it to -
- {% csrf_token %} - -
+ {% if next_event%} + + {% endif %} +
+ {% elif event.status == 'APPROVED' %} +
+ This event is nice and approved. You can revert it to +
+ {% csrf_token %} + +
- {% if event.creator.email %}, contact the event creator - - by email - {% endif %} + {% if event.creator.email %}, contact the event creator + + by email + {% endif %} - or check other - - pending events - . - {% if next_event%} - - {% endif %} -
- {% elif event.status == 'REJECTED' %} -
- This event is rejected. You can revert it to -
- {% csrf_token %} - -
+ or check other + + pending events + . + {% if next_event%} + + {% endif %} +
+ {% elif event.status == 'REJECTED' %} +
+ This event is rejected. You can revert it to +
+ {% csrf_token %} + +
- or check other - - pending events - . - {% if next_event%} - - {% endif %} -
- {% endif %} -
- {% endif %} - {% endif %} + or check other + + pending events + . + {% if next_event%} + + {% endif %} +
+ {% endif %} +
+ {% endif %} + {% endif %} - {% if event.creator.id == request.user.id %} - - Edit event - {% if event.status == 'PENDING' %} -
- NOTE: This event is stil being reviewed by moderators. -
- {% endif %} - {% endif %} -
+ {% if event.creator.id == request.user.id %} + + Edit event + {% if event.status == 'PENDING' %} +
+ NOTE: This event is stil being reviewed by moderators. +
+ {% endif %} + {% endif %} +
-
-
-

{{ event.title }}

- Organized by: +
+
+

{{ event.title }}

+ Organized by: -

{{ event.organizer }}

- {% if event.contact_person %} - Contact email:
-

{{ event.contact_person }}

- {% endif %} -
- Happening at:
- {{ event.location }} -
-

- From {{ event.start_date|date:"l, F j, Y" }} at {{ event.start_date|date:"H:i" }} - to {{ event.end_date|date:"l, F j, Y" }} at {{ event.end_date|date:"H:i" }} -

- Description: +

{{ event.organizer }}

+ {% if event.contact_person %} + Contact email:
+

{{ event.contact_person }}

+ {% endif %} +
+ Happening at:
+ {{ event.location }} +
+

+ From {{ event.start_date|date:"l, F j, Y" }} at {{ event.start_date|date:"H:i" }} + to {{ event.end_date|date:"l, F j, Y" }} at {{ event.end_date|date:"H:i" }} +

+ Description: -

- {{ event.description|linebreaksbr }} -

- {% if event.event_url %} - More information: -

{{ event.event_url }}

- {% endif %} - This event is for: +

+ {{ event.description|linebreaksbr }} +

+ {% if event.event_url %} + More information: +

{{ event.event_url }}

+ {% endif %} + This event is for: -

{% for entry in event.audience.all %} - {% if forloop.last %} - {{ entry.name }} - {% else %} - {{ entry.name }}, - {% endif %} - {% endfor %}

- Main themes: +

{% for entry in event.audience.all %} + {% if forloop.last %} + {{ entry.name }} + {% else %} + {{ entry.name }}, + {% endif %} + {% endfor %}

+ Main themes: -

{% for entry in event.theme.all %} - {% if forloop.last %} - {{ entry.name }} - {% else %} - {{ entry.name }}, - {% endif %} - {% endfor %}

- {% if event.tags %} - Tags: -

- {% for tag in event.tags.all %} - {% if forloop.last %} - {{ tag.name }} - {% else %} - {{ tag.name }}, - {% endif %} - {% endfor %} -

- {% endif %} +

{% for entry in event.theme.all %} + {% if forloop.last %} + {{ entry.name }} + {% else %} + {{ entry.name }}, + {% endif %} + {% endfor %}

+ {% if event.tags %} + Tags: +

+ {% for tag in event.tags.all %} + {% if forloop.last %} + {{ tag.name }} + {% else %} + {{ tag.name }}, + {% endif %} + {% endfor %} +

+ {% endif %} - Share the event: - -
- {% if event.picture %} -
- {{ event.title }} Cover Image -
- {% endif %} -
- {{ event.start_date|render_calendar:event.end_date }} -
-
-
-
-
-
-
-
-
-
-
-
- {% if nearby %} -
-

Nearby events:

-
- {% for event in nearby %} - {% include 'layout/near_event_tile.html' %} - {% endfor %} -
-
- {% endif %} -
+
+ +
+
+
+ {% if event.picture %} +
+ {{ event.title }} Cover Image +
+ {% endif %} +
+ {{ event.start_date|render_calendar:event.end_date }} +
+
+
+
+
+
+
+
+
+
+
+
+ {% if nearby %} +
+

Nearby events:

+
+ {% for event in nearby %} + {% include 'layout/near_event_tile.html' %} + {% endfor %} +
+
+ {% endif %} +
{% endblock content %} {% block custom_js %} - {% load static %} + {% load static %} - - - - - + + + + + - + -{% endblock %} \ No newline at end of file +{% endblock %}