Skip to content

Commit 841537a

Browse files
committed
can now view events
1 parent ba615a3 commit 841537a

File tree

20 files changed

+397
-87
lines changed

20 files changed

+397
-87
lines changed

java-admin-web/resources/templates/events/events.peb

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,27 @@
88

99
<table class="table table-hover">
1010
<tr>
11-
<th>Term</th>
11+
<th>Date</th>
1212
<th>Event</th>
1313
<th></th>
1414
<th>Start</th>
1515
<th>End</th>
1616
</tr>
1717
{% for event in events %}
18+
{% if current_term != event.term or not same(current_year, event.year) %}
19+
{% set current_term = event.term %}
20+
{% set current_year = event.year %}
21+
<tr><td colspan="5" class="text-center active"><strong>{{ current_term.name }} {{ event.year }}</strong></td></tr>
22+
{% set current_wk = event.getTermWeek %}
23+
<tr><td colspan="5" class="info"><strong class="text-primary">Week {{ current_wk }}</strong></td></tr>
24+
{% endif %}
25+
{% if current_wk != event.getTermWeek %}
26+
{% set current_wk = event.getTermWeek %}
27+
<tr><td colspan="5" class="info"><strong class="text-primary">Week {{ current_wk }}</strong></td></tr>
28+
{% endif %}
1829
<tr>
19-
<td class="title">
20-
{{ event.year }} - {{ event.term.name }} - Week {{ event.getTermWeek }}
30+
<td>
31+
<strong>{{ event.startTimestamp | day_of_week }}</strong> - {{ event.startTimestamp | long_date }}
2132
</td>
2233
<td>
2334
<a href="view/{{ event.keyString }}/">{{ event.title is not null ? event.title : "&lt;NO NAME&gt;" }}</a>
@@ -26,10 +37,10 @@
2637
(<a class="text-muted" href="http://ox.compsoc.net/events/{{ event.year }}/{{ event.term.slug }}/{{ event.slug }}/" target="_blank">View on Website</a>)
2738
</td>
2839
<td>
29-
{{ event.startTimestamp }}
40+
{{ event.startTimestamp | time }}
3041
</td>
3142
<td>
32-
{{ event.endTimestamp }}
43+
{{ event.endTimestamp | date_if_different(event.startTimestamp) }}
3344
</td>
3445
</tr>
3546
{% endfor %}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{% extends "page.peb" %}
2+
3+
{% block content %}
4+
<div class="toolbar">
5+
<div class="btn-toolbar pull-right " role="toolbar">
6+
<div class="btn-group" role="group">
7+
<a href="http://ox.compsoc.net/events/{{ event.year }}/{{ event.term.slug }}/{{ event.slug }}/" target="_blank" class="btn btn-default btn-sm">View on Website</a>
8+
</div>
9+
<div class="btn-group" role="group">
10+
<a href="../../edit/{{ event.keyString }}/" class="btn btn-primary btn-sm">Edit</a>
11+
</div>
12+
</div>
13+
<h3>{{ title }}</h3>
14+
</div>
15+
16+
{% include "util/messages.peb" %}
17+
18+
<div class="form-horizontal">
19+
<div class="form-group">
20+
<label class="col-sm-2 control-label">Event Name:</label>
21+
<div class="col-sm-10 control-label" style="text-align: left;">
22+
{{ event.title }} (<code>{{ event.slug }}</code>)
23+
</div>
24+
</div>
25+
<div class="form-group">
26+
<label class="col-sm-2 control-label">Term Date:</label>
27+
<div class="col-sm-10 control-label" style="text-align: left;">
28+
{{ event.startTimestamp | day_of_week }} Week {{ event.getTermWeek }} - {{ event.term.name}} {{ event.year }}
29+
</div>
30+
</div>
31+
<div class="form-group">
32+
<label class="col-sm-2 control-label">Start:</label>
33+
<div class="col-sm-4 control-label" style="text-align: left;">
34+
{{ event.startTimestamp | short_date_and_time }}
35+
</div>
36+
<label class="col-sm-2 control-label add-collapsed-margin">End:</label>
37+
<div class="col-sm-4 control-label" style="text-align: left;">
38+
{{ event.endTimestamp | short_date_and_time }}
39+
</div>
40+
</div>
41+
<div class="form-group">
42+
<label class="col-sm-2 control-label">Venue:</label>
43+
<div class="col-sm-10 control-label" style="text-align: left;">
44+
{% if event.venue is not null %}
45+
{{ venue.name }}
46+
{% else %}
47+
No Venue
48+
{% endif %}
49+
</div>
50+
</div>
51+
<div class="form-group">
52+
<label class="col-sm-2 control-label">Facebook Event:</label>
53+
<div class="col-sm-10 control-label" style="text-align: left;">
54+
{% if event.facebookEventID is not null %}
55+
<a href="https://www.facebook.com/events/{{ event.facebookEventID }}/" target="_blank">View Facebook Event</a>
56+
{% else %}
57+
No Facebook Event
58+
{% endif %}
59+
</div>
60+
</div>
61+
<div class="form-group">
62+
<label class="col-sm-2 control-label">Description:</label>
63+
<div class="col-sm-10 control-label" style="text-align: left;">
64+
<pre>{{ event.description }}</pre>
65+
</div>
66+
</div>
67+
</div>
68+
69+
70+
{% endblock %}

java-admin-web/resources/templates/util/messages.peb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,20 @@
22
<div class="panel panel-danger text-danger">
33
<div class="panel-body">
44
{% if errors.size == 1 %}
5-
{% for error in errors %}{{ error }}{% endfor %}
5+
{% for error in errors %}{{ error | raw }}{% endfor %}
66
{% else %}
7-
{% for error in errors %}<li>{{ error }}</ul>{% endfor %}
7+
{% for error in errors %}<li>{{ error | raw }}</ul>{% endfor %}
8+
{% endif %}
9+
</div>
10+
</div>
11+
{% endif %}
12+
{% if messages is not null and not messages.isEmpty %}
13+
<div class="panel panel-info text-info">
14+
<div class="panel-body">
15+
{% if messages.size == 1 %}
16+
{% for msg in messages %}{{ msg | raw }}{% endfor %}
17+
{% else %}
18+
{% for msg in messages %}<li>{{ msg | raw }}</ul>{% endfor %}
819
{% endif %}
920
</div>
1021
</div>

java-admin-web/src/java/net/compsoc/ox/web/admin/AdminServlet.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.compsoc.ox.web.admin.util.PageBuilder;
1515
import net.compsoc.ox.web.admin.util.PageRenderer;
1616
import net.compsoc.ox.web.admin.util.PathInfo;
17+
import net.compsoc.ox.web.admin.util.RedirectException;
1718
import net.compsoc.ox.web.admin.util.StatusException;
1819

1920
public class AdminServlet extends HttpServlet {
@@ -45,6 +46,9 @@ private void handle(HttpServletRequest request, HttpServletResponse response)
4546
try {
4647
rootSection.handle(new PathInfo(request), new PageBuilder(pageRenderer, database,
4748
request, response));
49+
} catch (RedirectException e) {
50+
response.setStatus(e.code);
51+
response.setHeader("Location", e.location);
4852
} catch (StatusException e) {
4953
response.sendError(e.code);
5054
}

java-admin-web/src/java/net/compsoc/ox/web/admin/sections/Section.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,20 @@
44

55
import net.compsoc.ox.web.admin.util.PageBuilder;
66
import net.compsoc.ox.web.admin.util.PathInfo;
7+
import net.compsoc.ox.web.admin.util.RedirectException;
78
import net.compsoc.ox.web.admin.util.StatusException;
89

910
public abstract class Section {
1011

1112
public abstract void visitSection(PathInfo info, PageBuilder builder) throws StatusException;
1213

1314
public abstract void renderPage(PathInfo info, PageBuilder builder) throws IOException,
14-
StatusException;
15+
StatusException, RedirectException;
1516

1617
public abstract Section getSubsection(String slug);
1718

18-
public void handle(PathInfo info, PageBuilder builder) throws IOException, StatusException {
19+
public void handle(PathInfo info, PageBuilder builder) throws IOException, StatusException,
20+
RedirectException {
1921
visitSection(info, builder);
2022

2123
PathInfo next = info.next();

java-admin-web/src/java/net/compsoc/ox/web/admin/sections/events/AddEventSection.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import java.util.Locale;
1010
import java.util.regex.Pattern;
1111

12+
import net.compsoc.ox.database.iface.events.Event;
1213
import net.compsoc.ox.database.iface.events.Term;
13-
import net.compsoc.ox.web.admin.sections.MainSectionsEnum;
1414
import net.compsoc.ox.web.admin.sections.Section;
1515
import net.compsoc.ox.web.admin.templating.Template;
1616
import net.compsoc.ox.web.admin.util.FormHandler;
@@ -27,7 +27,6 @@ public class AddEventSection extends Section {
2727

2828
@Override
2929
public void visitSection(PathInfo info, PageBuilder builder) throws StatusException {
30-
builder.setActivePage(MainSectionsEnum.EVENTS);
3130
}
3231

3332
@Override
@@ -148,9 +147,25 @@ public boolean doPostRequest(PageBuilder builder) {
148147
}
149148
}
150149

151-
if(builder.errors().isEmpty()){
152-
builder.database.events().addEvent(year, term, slug);
153-
builder.messages().add("Successfully Added Event!");
150+
if (builder.errors().isEmpty()) {
151+
Event e = builder.database.events().addEvent(year, term, slug);
152+
e.setStartTimestamp(startTimestamp);
153+
e.setEndTimestamp(endTimestamp);
154+
155+
if (facebookEventIDString != null)
156+
e.setFacebookEventID(facebookEventIDString);
157+
158+
if (name != null)
159+
e.setTitle(name);
160+
161+
if (description != null)
162+
e.setDescription(description);
163+
164+
String msg =
165+
String.format("Successfully Added Event! "
166+
+ "<a href=\"../view/%s/\">View Event</a>", e.keyString());
167+
168+
builder.messages().add(msg);
154169
}
155170

156171
// Restore form data if an error exists

java-admin-web/src/java/net/compsoc/ox/web/admin/sections/events/EventsSection.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
public class EventsSection extends Section {
1313

1414
private final Section addSection = new AddEventSection();
15+
private final Section viewSection = new ViewEventSection();
1516

1617
@Override
1718
public void visitSection(PathInfo info, PageBuilder builder) throws StatusException {
@@ -32,6 +33,8 @@ public Section getSubsection(String slug) {
3233
switch(slug){
3334
case "add":
3435
return addSection;
36+
case "view":
37+
return viewSection;
3538
}
3639
return null;
3740
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package net.compsoc.ox.web.admin.sections.events;
2+
3+
import java.io.IOException;
4+
import java.text.DateFormat;
5+
import java.text.ParseException;
6+
import java.text.SimpleDateFormat;
7+
import java.util.Calendar;
8+
import java.util.Date;
9+
import java.util.Locale;
10+
import java.util.regex.Pattern;
11+
12+
import net.compsoc.ox.database.iface.core.InvalidKeyException;
13+
import net.compsoc.ox.database.iface.core.NotFoundException;
14+
import net.compsoc.ox.database.iface.events.Event;
15+
import net.compsoc.ox.database.iface.events.Term;
16+
import net.compsoc.ox.web.admin.sections.MainSectionsEnum;
17+
import net.compsoc.ox.web.admin.sections.Section;
18+
import net.compsoc.ox.web.admin.templating.Template;
19+
import net.compsoc.ox.web.admin.util.FormHandler;
20+
import net.compsoc.ox.web.admin.util.PageBuilder;
21+
import net.compsoc.ox.web.admin.util.PathInfo;
22+
import net.compsoc.ox.web.admin.util.RedirectException;
23+
import net.compsoc.ox.web.admin.util.StatusException;
24+
25+
public class ViewEventSection extends Section {
26+
27+
private final Section ViewSingleEventSection = new ViewSingleEventSection();
28+
29+
@Override
30+
public void visitSection(PathInfo info, PageBuilder builder) throws StatusException {
31+
}
32+
33+
@Override
34+
public void renderPage(PathInfo info, PageBuilder builder) throws IOException, StatusException,
35+
RedirectException {
36+
throw new RedirectException(301, "../");
37+
}
38+
39+
@Override
40+
public Section getSubsection(String slug) {
41+
return ViewSingleEventSection;
42+
}
43+
44+
public static class ViewSingleEventSection extends Section {
45+
46+
@Override
47+
public void visitSection(PathInfo info, PageBuilder builder) throws StatusException {
48+
49+
}
50+
51+
@Override
52+
public void renderPage(PathInfo info, PageBuilder builder) throws IOException,
53+
StatusException {
54+
55+
// Get Event
56+
Event event;
57+
try {
58+
event = builder.database.events().getEvent(info.slug());
59+
} catch (InvalidKeyException | NotFoundException ev) {
60+
throw StatusException.do404();
61+
}
62+
63+
if(event.title() != null)
64+
builder.put("title", "Event: " + event.title());
65+
else
66+
builder.put("title", "Event: <no name>");
67+
68+
builder.put("event", event);
69+
builder.render(Template.EVENTS_VIEW_SINGLE);
70+
}
71+
72+
@Override
73+
public Section getSubsection(String slug) {
74+
// TODO Auto-generated method stub
75+
return null;
76+
}
77+
78+
}
79+
80+
}

java-admin-web/src/java/net/compsoc/ox/web/admin/templating/Template.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
public enum Template {
44
HOME("home.peb"),
55
EVENTS("events/events.peb"),
6-
EVENTS_ADD("events/events_edit.peb");
6+
EVENTS_ADD("events/events_edit.peb"),
7+
EVENTS_VIEW_SINGLE("events/events_view_single.peb");
78

89
public final String path;
910

java-admin-web/src/java/net/compsoc/ox/web/admin/util/PageRenderer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public class PageRenderer {
1919
public PageRenderer() {
2020
engine = new PebbleEngine();
2121

22+
engine.addExtension(new PebbleExtension());
23+
2224
engine.getLoader().setPrefix("resources/templates/");
2325

2426
// Load all templates

0 commit comments

Comments
 (0)