mirror of
https://github.com/DreamExposure/DisCal-Discord-Bot.git
synced 2026-02-10 21:48:28 -06:00
Add embed page for calendars. No more linking out to google!!!!
This commit is contained in:
@@ -16,11 +16,17 @@ import java.net.URI;
|
||||
* For Project: DisCal-Discord-Bot
|
||||
*/
|
||||
public class CalendarMessageFormatter {
|
||||
@Deprecated
|
||||
public static String getCalendarLink(String calId) {
|
||||
URI callURI = URI.create(calId);
|
||||
return "https://calendar.google.com/calendar/embed?src=" + callURI;
|
||||
}
|
||||
|
||||
//TODO: Add support for multiple calendars.
|
||||
public static String getCalendarLink(long guildId) {
|
||||
return "https://www.discalbot.com/embed/calendar/" + guildId;
|
||||
}
|
||||
|
||||
public static EmbedObject getCalendarLinkEmbed(Calendar cal, GuildSettings settings) {
|
||||
EmbedBuilder em = new EmbedBuilder();
|
||||
em.withAuthorIcon(DisCalAPI.getAPI().getClient().getGuildByID(266063520112574464L).getIconURL());
|
||||
@@ -33,7 +39,7 @@ public class CalendarMessageFormatter {
|
||||
//Some error, desc probably never set, just ignore no need to log.
|
||||
}
|
||||
em.appendField(MessageManager.getMessage("Embed.Calendar.Link.TimeZone", settings), cal.getTimeZone(), false);
|
||||
em.withUrl(CalendarMessageFormatter.getCalendarLink(cal.getId()));
|
||||
em.withUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
|
||||
em.withFooterText(MessageManager.getMessage("Embed.Calendar.Link.CalendarId", "%id%", cal.getId(), settings));
|
||||
em.withColor(56, 138, 237);
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@ public class Authorization {
|
||||
em.appendField(MessageManager.getMessage("Embed.AddCalendar.List.TimeZone", settings), i.getTimeZone(), false);
|
||||
em.appendField(MessageManager.getMessage("Embed.AddCalendar.List.ID", settings), i.getId(), false);
|
||||
|
||||
em.withUrl(CalendarMessageFormatter.getCalendarLink(i.getId()));
|
||||
em.withUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
|
||||
em.withColor(56, 138, 237);
|
||||
Message.sendDirectMessage(em.build(), poll.getUser());
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@ import com.cloudcraftgaming.discal.api.object.calendar.CalendarData;
|
||||
import com.cloudcraftgaming.discal.logger.Logger;
|
||||
import com.google.api.services.calendar.model.Calendar;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
/**
|
||||
* Created by Nova Fox on 1/7/18.
|
||||
* Website: www.cloudcraftgaming.com
|
||||
@@ -93,7 +91,7 @@ public class WebCalendar {
|
||||
} else {
|
||||
id = cd.getCalendarId();
|
||||
address = cd.getCalendarAddress();
|
||||
link = "https://calendar.google.com/calendar/embed?src=" + URI.create(cd.getCalendarAddress());
|
||||
link = "https://www.discalbot.com/embed/calendar/" + gs.getGuildID();
|
||||
external = cd.isExternal();
|
||||
try {
|
||||
if (cd.isExternal()) {
|
||||
|
||||
@@ -16,11 +16,17 @@ import java.net.URI;
|
||||
* For Project: DisCal
|
||||
*/
|
||||
public class CalendarMessageFormatter {
|
||||
@Deprecated
|
||||
public static String getCalendarLink(String calId) {
|
||||
URI callURI = URI.create(calId);
|
||||
return "https://calendar.google.com/calendar/embed?src=" + callURI;
|
||||
}
|
||||
|
||||
//TODO: Add support for multiple calendars.
|
||||
public static String getCalendarLink(long guildId) {
|
||||
return "https://www.discalbot.com/embed/calendar/" + guildId;
|
||||
}
|
||||
|
||||
public static EmbedObject getCalendarLinkEmbed(Calendar cal, GuildSettings settings) {
|
||||
EmbedBuilder em = new EmbedBuilder();
|
||||
em.withAuthorIcon(DisCalAPI.getAPI().getClient().getGuildByID(266063520112574464L).getIconURL());
|
||||
@@ -33,7 +39,7 @@ public class CalendarMessageFormatter {
|
||||
//Some error, desc probably never set, just ignore no need to log.
|
||||
}
|
||||
em.appendField(MessageManager.getMessage("Embed.Calendar.Link.TimeZone", settings), cal.getTimeZone(), false);
|
||||
em.withUrl(CalendarMessageFormatter.getCalendarLink(cal.getId()));
|
||||
em.withUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
|
||||
em.withFooterText(MessageManager.getMessage("Embed.Calendar.Link.CalendarId", "%id%", cal.getId(), settings));
|
||||
em.withColor(56, 138, 237);
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ public class TimeCommand implements ICommand {
|
||||
em.appendField(MessageManager.getMessage("Embed.Time.TimeZone", settings), cal.getTimeZone(), false);
|
||||
|
||||
em.withFooterText(MessageManager.getMessage("Embed.Time.Footer", settings));
|
||||
em.withUrl(CalendarMessageFormatter.getCalendarLink(cal.getId()));
|
||||
em.withUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
|
||||
em.withColor(56, 138, 237);
|
||||
Message.sendMessage(em.build(), event);
|
||||
}
|
||||
|
||||
@@ -44,19 +44,25 @@ public class SparkUtils {
|
||||
//Requires "Authorization Header
|
||||
if (request.headers().contains("Authorization")) {
|
||||
String key = request.headers("Authorization");
|
||||
UserAPIAccount acc = DatabaseManager.getManager().getAPIAccount(key);
|
||||
if (acc != null) {
|
||||
if (acc.isBlocked()) {
|
||||
Logger.getLogger().api("Attempted to use blocked API Key: " + acc.getAPIKey(), request.ip());
|
||||
halt(401, "Unauthorized");
|
||||
} else {
|
||||
//Everything checks out!
|
||||
acc.setUses(acc.getUses() + 1);
|
||||
DatabaseManager.getManager().updateAPIAccount(acc);
|
||||
}
|
||||
|
||||
//TODO: Handle this shit better but whatever
|
||||
if (key.equals("EMBEDDED")) {
|
||||
Logger.getLogger().api("User using embed", request.ip(), request.host(), request.pathInfo());
|
||||
} else {
|
||||
Logger.getLogger().api("Attempted to use invalid API Key: " + key, request.ip());
|
||||
halt(401, "Unauthorized");
|
||||
UserAPIAccount acc = DatabaseManager.getManager().getAPIAccount(key);
|
||||
if (acc != null) {
|
||||
if (acc.isBlocked()) {
|
||||
Logger.getLogger().api("Attempted to use blocked API Key: " + acc.getAPIKey(), request.ip());
|
||||
halt(401, "Unauthorized");
|
||||
} else {
|
||||
//Everything checks out!
|
||||
acc.setUses(acc.getUses() + 1);
|
||||
DatabaseManager.getManager().updateAPIAccount(acc);
|
||||
}
|
||||
} else {
|
||||
Logger.getLogger().api("Attempted to use invalid API Key: " + key, request.ip());
|
||||
halt(401, "Unauthorized");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Logger.getLogger().api("Attempted to use API without authorization header", request.ip());
|
||||
@@ -64,11 +70,9 @@ public class SparkUtils {
|
||||
}
|
||||
}
|
||||
//Only accept json because its easier to parse and handle.
|
||||
/*
|
||||
if (!request.contentType().equalsIgnoreCase("application/json")) {
|
||||
halt(400, "Bad Request");
|
||||
}
|
||||
*/
|
||||
});
|
||||
|
||||
//API endpoints
|
||||
@@ -152,7 +156,7 @@ public class SparkUtils {
|
||||
get("/dashboard/guild/rsvp", (rq, rs) -> new ModelAndView(DiscordAccountHandler.getHandler().getAccount(rq.session().id()), "pages/dashboard/components/rsvp"), new ThymeleafTemplateEngine());
|
||||
|
||||
//Embed pages
|
||||
//get("/embed/calendar/:guild", (rq, rs) -> new ModelAndView(DiscordAccountHandler.getHandler().getAccountForGuildEmbed(rq.session().id(), rq.params(":guild")), "pages/embed/calendar"), new ThymeleafTemplateEngine());
|
||||
get("/embed/calendar/:guild", (rq, rs) -> new ModelAndView(DiscordAccountHandler.getHandler().getAccountForGuildEmbed(rq.session().id(), rq.params(":guild")), "pages/embed/calendar"), new ThymeleafTemplateEngine());
|
||||
|
||||
//Various other doc pages
|
||||
get("/docs/event/colors", (rq, rs) -> new ModelAndView(DiscordAccountHandler.getHandler().getAccount(rq.session().id()), "pages/docs/events/event-colors"), new ThymeleafTemplateEngine());
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
integrity="sha256-lnJeulOa3e5IO2EzHr8jKJ3CbT80MBwkS5a+n2ooIr4=" crossorigin="anonymous"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body th:onload="'init(' + ${embed.id} + ')'">
|
||||
<div class="top-nav">
|
||||
<a href="/" class="title"><h1>DISCAL</h1></a>
|
||||
<a href="/about">About</a>
|
||||
@@ -137,8 +137,14 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p style="text-align: center; font-size: 20px" id="local-time-display">All Dates and
|
||||
Times are displayed in your local timezone!</p>
|
||||
<p style="text-align: center; font-size: 20px" id="local-time-display">All Dates and Times are
|
||||
displayed in your local timezone!</p>
|
||||
<br>
|
||||
<br>
|
||||
<a target="_blank"
|
||||
th:href="'https://calendar.google.com/calendar/embed?src=' + ${embed.calendar.id}">
|
||||
<button>View on Google Calendar</button>
|
||||
</a>
|
||||
</div>
|
||||
<hr>
|
||||
<br>
|
||||
@@ -147,6 +153,8 @@
|
||||
<div id="event-container">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="snackbar"></div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -165,26 +165,36 @@ function getEventsForMonth() {
|
||||
"StartEpoch": ds.getTime().toString()
|
||||
};
|
||||
|
||||
var q = $.post("/api/v1/events/list/month", JSON.stringify(bodyRaw), function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
$.ajax({
|
||||
url: "/api/v1/events/list/month",
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
method: "POST",
|
||||
dataType: "json",
|
||||
data: JSON.stringify(bodyRaw),
|
||||
success: function (json) {
|
||||
var obj = json;
|
||||
|
||||
//Display the event counts on the calendar...
|
||||
for (var i = 0; i < obj.events.length; i++) {
|
||||
var d = new Date(obj.events[i].epochStart);
|
||||
//Display the event counts on the calendar...
|
||||
for (var i = 0; i < obj.events.length; i++) {
|
||||
var d = new Date(obj.events[i].epochStart);
|
||||
|
||||
var e = document.getElementById(calendar.displays[d.getDate()]);
|
||||
var e = document.getElementById(calendar.displays[d.getDate()]);
|
||||
|
||||
if (e.innerHTML.indexOf("[") === -1) {
|
||||
e.innerHTML = d.getDate() + "[1]";
|
||||
} else {
|
||||
e.innerHTML = d.getDate().toString() + "[" + (parseInt(e.innerHTML.split("[")[1][0]) + 1).toString() + "]";
|
||||
if (e.innerHTML.indexOf("[") === -1) {
|
||||
e.innerHTML = d.getDate() + "[1]";
|
||||
} else {
|
||||
e.innerHTML = d.getDate().toString() + "[" + (parseInt(e.innerHTML.split("[")[1][0]) + 1).toString() + "]";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
var obj = JSON.parse(jqXHR.responseText);
|
||||
|
||||
})
|
||||
.fail(function () {
|
||||
showSnackbar("Our hippos failed to find your events!");
|
||||
}, "json");
|
||||
showSnackbar("[ERROR] " + obj.reason);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getEventsForSelectedDate() {
|
||||
@@ -197,342 +207,353 @@ function getEventsForSelectedDate() {
|
||||
"StartEpoch": ds.getTime().toString()
|
||||
};
|
||||
|
||||
var q = $.post("/api/v1/events/list/date", JSON.stringify(bodyRaw), function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
$.ajax({
|
||||
url: "/api/v1/events/list/date",
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
method: "POST",
|
||||
dataType: "json",
|
||||
data: JSON.stringify(bodyRaw),
|
||||
success: function (json) {
|
||||
var obj = json;
|
||||
|
||||
//Display the selected day's event details for editing and such.
|
||||
var container = document.getElementById("event-container");
|
||||
//Display the selected day's event details for editing and such.
|
||||
var container = document.getElementById("event-container");
|
||||
|
||||
while (container.firstChild) {
|
||||
container.removeChild(container.firstChild);
|
||||
}
|
||||
|
||||
for (var i = 0; i < obj.count; i++) {
|
||||
var event = obj.events[i];
|
||||
|
||||
//Create Edit Button
|
||||
var editButton = document.createElement("button");
|
||||
editButton.type = "button";
|
||||
editButton.setAttribute("data-toggle", "modal");
|
||||
editButton.setAttribute("data-target", "#modal-" + event.id);
|
||||
editButton.innerHTML = "Edit";
|
||||
container.appendChild(editButton);
|
||||
|
||||
//Create Delete button
|
||||
var deleteButton = document.createElement("button");
|
||||
deleteButton.type = "button";
|
||||
deleteButton.innerHTML = "Delete";
|
||||
deleteButton.className = "danger";
|
||||
deleteButton.id = "delete-" + event.id;
|
||||
deleteButton.onclick = function (ev) {
|
||||
deleteEvent(this.id)
|
||||
};
|
||||
container.appendChild(deleteButton);
|
||||
|
||||
container.appendChild(document.createElement("br"));
|
||||
container.appendChild(document.createElement("br"));
|
||||
|
||||
//Create modal container
|
||||
var modalContainer = document.createElement("div");
|
||||
modalContainer.className = "modal fade";
|
||||
modalContainer.id = "modal-" + event.id;
|
||||
modalContainer.role = "dialog";
|
||||
container.appendChild(modalContainer);
|
||||
|
||||
//Create modal-dialog
|
||||
var modalDia = document.createElement("div");
|
||||
modalDia.className = "modal-dialog";
|
||||
modalContainer.appendChild(modalDia);
|
||||
|
||||
//Create Modal Content
|
||||
var modalCon = document.createElement("div");
|
||||
modalCon.className = "modal-content";
|
||||
modalDia.appendChild(modalCon);
|
||||
|
||||
//Create modal header and title
|
||||
var modalHeader = document.createElement("div");
|
||||
modalHeader.className = "modal-header";
|
||||
modalCon.appendChild(modalHeader);
|
||||
var modalTitle = document.createElement("h4");
|
||||
modalTitle.className = "modal-title";
|
||||
modalTitle.innerHTML = "Editing Event";
|
||||
modalHeader.appendChild(modalTitle);
|
||||
|
||||
//Create Modal Body
|
||||
var modalBody = document.createElement("div");
|
||||
modalBody.className = "modal-body";
|
||||
modalCon.appendChild(modalBody);
|
||||
|
||||
var form = document.createElement("form");
|
||||
modalBody.appendChild(form);
|
||||
|
||||
//Summary
|
||||
var summaryLabel = document.createElement("label");
|
||||
summaryLabel.innerHTML = "Summary";
|
||||
summaryLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(summaryLabel);
|
||||
var summary = document.createElement("input");
|
||||
summary.name = "summary";
|
||||
summary.type = "text";
|
||||
summary.value = event.summary;
|
||||
summary.id = "editSummary-" + event.id;
|
||||
summaryLabel.appendChild(summary);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Description
|
||||
var descriptionLabel = document.createElement("label");
|
||||
descriptionLabel.innerHTML = "Description";
|
||||
descriptionLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(descriptionLabel);
|
||||
var description = document.createElement("input");
|
||||
description.name = "edit-description";
|
||||
description.type = "text";
|
||||
description.value = event.description;
|
||||
description.id = "editDescription-" + event.id;
|
||||
descriptionLabel.appendChild(description);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Start date and time
|
||||
var sd = new Date(event.epochStart);
|
||||
var startLabel = document.createElement("label");
|
||||
startLabel.innerHTML = "Start Date and Time";
|
||||
startLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(startLabel);
|
||||
var startDate = document.createElement("input");
|
||||
startDate.name = "start-date";
|
||||
startDate.type = "date";
|
||||
startDate.valueAsDate = sd;
|
||||
startDate.required = true;
|
||||
startDate.id = "editStartDate-" + event.id;
|
||||
startLabel.appendChild(startDate);
|
||||
var startTime = document.createElement("input");
|
||||
startTime.name = "start-time";
|
||||
startTime.type = "time";
|
||||
startTime.value = (sd.getHours() < 10 ? "0" : "") + sd.getHours() + ":" + (sd.getMinutes() < 10 ? "0" : "") + sd.getMinutes();
|
||||
startTime.required = true;
|
||||
startTime.id = "editStartTime-" + event.id;
|
||||
startLabel.appendChild(startTime);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//End date and time
|
||||
var ed = new Date(event.epochEnd);
|
||||
var endLabel = document.createElement("label");
|
||||
endLabel.innerHTML = "End Date and Time";
|
||||
endLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(endLabel);
|
||||
var endDate = document.createElement("input");
|
||||
endDate.name = "end-date";
|
||||
endDate.type = "date";
|
||||
endDate.valueAsDate = ed;
|
||||
endDate.required = true;
|
||||
endDate.id = "editEndDate-" + event.id;
|
||||
endLabel.appendChild(endDate);
|
||||
var endTime = document.createElement("input");
|
||||
endTime.name = "end-time";
|
||||
endTime.type = "time";
|
||||
endTime.value = (ed.getHours() < 10 ? "0" : "") + ed.getHours() + ":" + (ed.getMinutes() < 10 ? "0" : "") + ed.getMinutes();
|
||||
endTime.required = true;
|
||||
endTime.id = "editEndTime-" + event.id;
|
||||
endLabel.appendChild(endTime);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
|
||||
//Timezone (read only)
|
||||
var timezoneLabel = document.createElement("label");
|
||||
timezoneLabel.innerHTML = "Timezone";
|
||||
timezoneLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(timezoneLabel);
|
||||
var timezone = document.createElement("input");
|
||||
timezone.name = "timezone";
|
||||
timezone.type = "text";
|
||||
timezone.value = event.timezone;
|
||||
timezone.disabled = true;
|
||||
timezoneLabel.appendChild(timezone);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Location
|
||||
var locationLabel = document.createElement("label");
|
||||
locationLabel.innerHTML = "Location";
|
||||
locationLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(locationLabel);
|
||||
var location = document.createElement("input");
|
||||
location.name = "location";
|
||||
location.type = "text";
|
||||
location.value = event.location;
|
||||
location.id = "editLocation-" + event.id;
|
||||
locationLabel.appendChild(location);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Color
|
||||
var colorLabel = document.createElement("label");
|
||||
colorLabel.innerHTML = "Color";
|
||||
colorLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(colorLabel);
|
||||
var colorSelect = document.createElement("select");
|
||||
colorSelect.name = "color";
|
||||
colorSelect.id = "editColor-" + event.id;
|
||||
colorLabel.appendChild(colorSelect);
|
||||
|
||||
for (var c = 0; c < colors().length; c++) {
|
||||
var option = document.createElement("option");
|
||||
option.value = colors()[c];
|
||||
option.text = colors()[c];
|
||||
option.selected = (event.color === colors()[c]);
|
||||
colorSelect.appendChild(option);
|
||||
while (container.firstChild) {
|
||||
container.removeChild(container.firstChild);
|
||||
}
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Recurrence
|
||||
var recurrenceLabel = document.createElement("label");
|
||||
recurrenceLabel.innerHTML = "Recurrence";
|
||||
recurrenceLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(recurrenceLabel);
|
||||
for (var i = 0; i < obj.count; i++) {
|
||||
var event = obj.events[i];
|
||||
|
||||
if (event.isParent) {
|
||||
var enableRecurrence = document.createElement("input");
|
||||
enableRecurrence.name = "enable-recurrence";
|
||||
enableRecurrence.type = "checkbox";
|
||||
enableRecurrence.checked = false;
|
||||
enableRecurrence.id = "editEnableRecur-" + event.id;
|
||||
enableRecurrence.onclick = function (ev) {
|
||||
changeRecurrenceEditDisplays(this);
|
||||
//Create Edit Button
|
||||
var editButton = document.createElement("button");
|
||||
editButton.type = "button";
|
||||
editButton.setAttribute("data-toggle", "modal");
|
||||
editButton.setAttribute("data-target", "#modal-" + event.id);
|
||||
editButton.innerHTML = "Edit";
|
||||
container.appendChild(editButton);
|
||||
|
||||
//Create Delete button
|
||||
var deleteButton = document.createElement("button");
|
||||
deleteButton.type = "button";
|
||||
deleteButton.innerHTML = "Delete";
|
||||
deleteButton.className = "danger";
|
||||
deleteButton.id = "delete-" + event.id;
|
||||
deleteButton.onclick = function (ev) {
|
||||
deleteEvent(this.id)
|
||||
};
|
||||
recurrenceLabel.appendChild(enableRecurrence);
|
||||
container.appendChild(deleteButton);
|
||||
|
||||
container.appendChild(document.createElement("br"));
|
||||
container.appendChild(document.createElement("br"));
|
||||
|
||||
//Create modal container
|
||||
var modalContainer = document.createElement("div");
|
||||
modalContainer.className = "modal fade";
|
||||
modalContainer.id = "modal-" + event.id;
|
||||
modalContainer.role = "dialog";
|
||||
container.appendChild(modalContainer);
|
||||
|
||||
//Create modal-dialog
|
||||
var modalDia = document.createElement("div");
|
||||
modalDia.className = "modal-dialog";
|
||||
modalContainer.appendChild(modalDia);
|
||||
|
||||
//Create Modal Content
|
||||
var modalCon = document.createElement("div");
|
||||
modalCon.className = "modal-content";
|
||||
modalDia.appendChild(modalCon);
|
||||
|
||||
//Create modal header and title
|
||||
var modalHeader = document.createElement("div");
|
||||
modalHeader.className = "modal-header";
|
||||
modalCon.appendChild(modalHeader);
|
||||
var modalTitle = document.createElement("h4");
|
||||
modalTitle.className = "modal-title";
|
||||
modalTitle.innerHTML = "Editing Event";
|
||||
modalHeader.appendChild(modalTitle);
|
||||
|
||||
//Create Modal Body
|
||||
var modalBody = document.createElement("div");
|
||||
modalBody.className = "modal-body";
|
||||
modalCon.appendChild(modalBody);
|
||||
|
||||
var form = document.createElement("form");
|
||||
modalBody.appendChild(form);
|
||||
|
||||
//Summary
|
||||
var summaryLabel = document.createElement("label");
|
||||
summaryLabel.innerHTML = "Summary";
|
||||
summaryLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(summaryLabel);
|
||||
var summary = document.createElement("input");
|
||||
summary.name = "summary";
|
||||
summary.type = "text";
|
||||
summary.value = event.summary;
|
||||
summary.id = "editSummary-" + event.id;
|
||||
summaryLabel.appendChild(summary);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Frequency
|
||||
var frequencyLabel = document.createElement("label");
|
||||
frequencyLabel.innerHTML = "Recurrence - Frequency";
|
||||
frequencyLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(frequencyLabel);
|
||||
var freqSelect = document.createElement("select");
|
||||
freqSelect.name = "frequency";
|
||||
freqSelect.id = "editFrequency-" + event.id;
|
||||
frequencyLabel.appendChild(freqSelect);
|
||||
//Description
|
||||
var descriptionLabel = document.createElement("label");
|
||||
descriptionLabel.innerHTML = "Description";
|
||||
descriptionLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(descriptionLabel);
|
||||
var description = document.createElement("input");
|
||||
description.name = "edit-description";
|
||||
description.type = "text";
|
||||
description.value = event.description;
|
||||
description.id = "editDescription-" + event.id;
|
||||
descriptionLabel.appendChild(description);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
for (var f = 0; f < frequencies().length; f++) {
|
||||
var op = document.createElement("option");
|
||||
op.value = frequencies()[f];
|
||||
op.text = frequencies()[f];
|
||||
op.selected = (event.recurrence.frequency === frequencies()[f]);
|
||||
freqSelect.appendChild(op);
|
||||
//Start date and time
|
||||
var sd = new Date(event.epochStart);
|
||||
var startLabel = document.createElement("label");
|
||||
startLabel.innerHTML = "Start Date and Time";
|
||||
startLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(startLabel);
|
||||
var startDate = document.createElement("input");
|
||||
startDate.name = "start-date";
|
||||
startDate.type = "date";
|
||||
startDate.valueAsDate = sd;
|
||||
startDate.required = true;
|
||||
startDate.id = "editStartDate-" + event.id;
|
||||
startLabel.appendChild(startDate);
|
||||
var startTime = document.createElement("input");
|
||||
startTime.name = "start-time";
|
||||
startTime.type = "time";
|
||||
startTime.value = (sd.getHours() < 10 ? "0" : "") + sd.getHours() + ":" + (sd.getMinutes() < 10 ? "0" : "") + sd.getMinutes();
|
||||
startTime.required = true;
|
||||
startTime.id = "editStartTime-" + event.id;
|
||||
startLabel.appendChild(startTime);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//End date and time
|
||||
var ed = new Date(event.epochEnd);
|
||||
var endLabel = document.createElement("label");
|
||||
endLabel.innerHTML = "End Date and Time";
|
||||
endLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(endLabel);
|
||||
var endDate = document.createElement("input");
|
||||
endDate.name = "end-date";
|
||||
endDate.type = "date";
|
||||
endDate.valueAsDate = ed;
|
||||
endDate.required = true;
|
||||
endDate.id = "editEndDate-" + event.id;
|
||||
endLabel.appendChild(endDate);
|
||||
var endTime = document.createElement("input");
|
||||
endTime.name = "end-time";
|
||||
endTime.type = "time";
|
||||
endTime.value = (ed.getHours() < 10 ? "0" : "") + ed.getHours() + ":" + (ed.getMinutes() < 10 ? "0" : "") + ed.getMinutes();
|
||||
endTime.required = true;
|
||||
endTime.id = "editEndTime-" + event.id;
|
||||
endLabel.appendChild(endTime);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
|
||||
//Timezone (read only)
|
||||
var timezoneLabel = document.createElement("label");
|
||||
timezoneLabel.innerHTML = "Timezone";
|
||||
timezoneLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(timezoneLabel);
|
||||
var timezone = document.createElement("input");
|
||||
timezone.name = "timezone";
|
||||
timezone.type = "text";
|
||||
timezone.value = event.timezone;
|
||||
timezone.disabled = true;
|
||||
timezoneLabel.appendChild(timezone);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Location
|
||||
var locationLabel = document.createElement("label");
|
||||
locationLabel.innerHTML = "Location";
|
||||
locationLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(locationLabel);
|
||||
var location = document.createElement("input");
|
||||
location.name = "location";
|
||||
location.type = "text";
|
||||
location.value = event.location;
|
||||
location.id = "editLocation-" + event.id;
|
||||
locationLabel.appendChild(location);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Color
|
||||
var colorLabel = document.createElement("label");
|
||||
colorLabel.innerHTML = "Color";
|
||||
colorLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(colorLabel);
|
||||
var colorSelect = document.createElement("select");
|
||||
colorSelect.name = "color";
|
||||
colorSelect.id = "editColor-" + event.id;
|
||||
colorLabel.appendChild(colorSelect);
|
||||
|
||||
for (var c = 0; c < colors().length; c++) {
|
||||
var option = document.createElement("option");
|
||||
option.value = colors()[c];
|
||||
option.text = colors()[c];
|
||||
option.selected = (event.color === colors()[c]);
|
||||
colorSelect.appendChild(option);
|
||||
}
|
||||
freqSelect.disabled = true;
|
||||
frequencyLabel.appendChild(freqSelect);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Count
|
||||
var countLabel = document.createElement("label");
|
||||
countLabel.innerHTML = "Recurrence - Count";
|
||||
countLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(countLabel);
|
||||
var count = document.createElement("input");
|
||||
count.name = "count";
|
||||
count.type = "number";
|
||||
count.valueAsNumber = parseInt(event.recurrence.count);
|
||||
count.min = "-1";
|
||||
count.id = "editCount-" + event.id;
|
||||
count.disabled = true;
|
||||
countLabel.appendChild(count);
|
||||
//Recurrence
|
||||
var recurrenceLabel = document.createElement("label");
|
||||
recurrenceLabel.innerHTML = "Recurrence";
|
||||
recurrenceLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(recurrenceLabel);
|
||||
|
||||
if (event.isParent) {
|
||||
var enableRecurrence = document.createElement("input");
|
||||
enableRecurrence.name = "enable-recurrence";
|
||||
enableRecurrence.type = "checkbox";
|
||||
enableRecurrence.checked = false;
|
||||
enableRecurrence.id = "editEnableRecur-" + event.id;
|
||||
enableRecurrence.onclick = function (ev) {
|
||||
changeRecurrenceEditDisplays(this);
|
||||
};
|
||||
recurrenceLabel.appendChild(enableRecurrence);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Frequency
|
||||
var frequencyLabel = document.createElement("label");
|
||||
frequencyLabel.innerHTML = "Recurrence - Frequency";
|
||||
frequencyLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(frequencyLabel);
|
||||
var freqSelect = document.createElement("select");
|
||||
freqSelect.name = "frequency";
|
||||
freqSelect.id = "editFrequency-" + event.id;
|
||||
frequencyLabel.appendChild(freqSelect);
|
||||
|
||||
for (var f = 0; f < frequencies().length; f++) {
|
||||
var op = document.createElement("option");
|
||||
op.value = frequencies()[f];
|
||||
op.text = frequencies()[f];
|
||||
op.selected = (event.recurrence.frequency === frequencies()[f]);
|
||||
freqSelect.appendChild(op);
|
||||
}
|
||||
freqSelect.disabled = true;
|
||||
frequencyLabel.appendChild(freqSelect);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Count
|
||||
var countLabel = document.createElement("label");
|
||||
countLabel.innerHTML = "Recurrence - Count";
|
||||
countLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(countLabel);
|
||||
var count = document.createElement("input");
|
||||
count.name = "count";
|
||||
count.type = "number";
|
||||
count.valueAsNumber = parseInt(event.recurrence.count);
|
||||
count.min = "-1";
|
||||
count.id = "editCount-" + event.id;
|
||||
count.disabled = true;
|
||||
countLabel.appendChild(count);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Interval
|
||||
var intervalLabel = document.createElement("label");
|
||||
intervalLabel.innerHTML = "Recurrence - Interval";
|
||||
intervalLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(intervalLabel);
|
||||
var interval = document.createElement("input");
|
||||
interval.name = "interval";
|
||||
interval.type = "number";
|
||||
interval.valueAsNumber = parseInt(event.recurrence.interval);
|
||||
interval.min = "1";
|
||||
interval.id = "editInterval-" + event.id;
|
||||
interval.disabled = true;
|
||||
intervalLabel.appendChild(interval);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
} else {
|
||||
//Cannot edit recurrence
|
||||
var cannotEditRecur = document.createElement("input");
|
||||
cannotEditRecur.name = "ignore-cer";
|
||||
cannotEditRecur.type = "text";
|
||||
cannotEditRecur.disabled = true;
|
||||
cannotEditRecur.value = "Cannot edit child";
|
||||
recurrenceLabel.appendChild(cannotEditRecur);
|
||||
}
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Interval
|
||||
var intervalLabel = document.createElement("label");
|
||||
intervalLabel.innerHTML = "Recurrence - Interval";
|
||||
intervalLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(intervalLabel);
|
||||
var interval = document.createElement("input");
|
||||
interval.name = "interval";
|
||||
interval.type = "number";
|
||||
interval.valueAsNumber = parseInt(event.recurrence.interval);
|
||||
interval.min = "1";
|
||||
interval.id = "editInterval-" + event.id;
|
||||
interval.disabled = true;
|
||||
intervalLabel.appendChild(interval);
|
||||
//Image
|
||||
var imageLabel = document.createElement("label");
|
||||
imageLabel.innerHTML = "Image";
|
||||
imageLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(imageLabel);
|
||||
var image = document.createElement("input");
|
||||
image.name = "image";
|
||||
image.type = "text";
|
||||
image.value = event.image;
|
||||
image.id = "editImage-" + event.id;
|
||||
imageLabel.appendChild(image);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
} else {
|
||||
//Cannot edit recurrence
|
||||
var cannotEditRecur = document.createElement("input");
|
||||
cannotEditRecur.name = "ignore-cer";
|
||||
cannotEditRecur.type = "text";
|
||||
cannotEditRecur.disabled = true;
|
||||
cannotEditRecur.value = "Cannot edit child";
|
||||
recurrenceLabel.appendChild(cannotEditRecur);
|
||||
//ID (readonly) for API
|
||||
var idLabel = document.createElement("label");
|
||||
idLabel.innerHTML = "Event ID";
|
||||
idLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(idLabel);
|
||||
var hiddenId = document.createElement("input");
|
||||
hiddenId.type = "text";
|
||||
hiddenId.name = "id";
|
||||
hiddenId.value = event.id;
|
||||
hiddenId.id = "editId-" + event.id;
|
||||
hiddenId.readOnly = true;
|
||||
idLabel.appendChild(hiddenId);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Submit button
|
||||
var submit = document.createElement("button");
|
||||
submit.className = "submit";
|
||||
submit.type = "button";
|
||||
submit.id = "editsubmit-" + event.id;
|
||||
submit.innerHTML = "Update Event!";
|
||||
submit.onclick = function (ignore) {
|
||||
updateEvent(this.id);
|
||||
};
|
||||
form.appendChild(submit);
|
||||
//TODO: permission handling for submit button!!!!
|
||||
|
||||
//TODO: Reset button
|
||||
|
||||
//Create modal footer
|
||||
var modalFooter = document.createElement("div");
|
||||
modalFooter.className = "modal-footer";
|
||||
modalCon.appendChild(modalFooter);
|
||||
|
||||
var closeButton = document.createElement("button");
|
||||
closeButton.type = "button";
|
||||
closeButton.setAttribute("data-dismiss", "modal");
|
||||
closeButton.innerHTML = "Close";
|
||||
modalFooter.appendChild(closeButton);
|
||||
//Oh my god finally done!!!
|
||||
}
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
var obj = JSON.parse(jqXHR.responseText);
|
||||
|
||||
//Image
|
||||
var imageLabel = document.createElement("label");
|
||||
imageLabel.innerHTML = "Image";
|
||||
imageLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(imageLabel);
|
||||
var image = document.createElement("input");
|
||||
image.name = "image";
|
||||
image.type = "text";
|
||||
image.value = event.image;
|
||||
image.id = "editImage-" + event.id;
|
||||
imageLabel.appendChild(image);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//ID (readonly) for API
|
||||
var idLabel = document.createElement("label");
|
||||
idLabel.innerHTML = "Event ID";
|
||||
idLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(idLabel);
|
||||
var hiddenId = document.createElement("input");
|
||||
hiddenId.type = "text";
|
||||
hiddenId.name = "id";
|
||||
hiddenId.value = event.id;
|
||||
hiddenId.id = "editId-" + event.id;
|
||||
hiddenId.readOnly = true;
|
||||
idLabel.appendChild(hiddenId);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Submit button
|
||||
var submit = document.createElement("button");
|
||||
submit.className = "submit";
|
||||
submit.type = "button";
|
||||
submit.id = "editsubmit-" + event.id;
|
||||
submit.innerHTML = "Update Event!";
|
||||
submit.onclick = function (ignore) {
|
||||
updateEvent(this.id);
|
||||
};
|
||||
form.appendChild(submit);
|
||||
//TODO: permission handling for submit button!!!!
|
||||
|
||||
//TODO: Reset button
|
||||
|
||||
//Create modal footer
|
||||
var modalFooter = document.createElement("div");
|
||||
modalFooter.className = "modal-footer";
|
||||
modalCon.appendChild(modalFooter);
|
||||
|
||||
var closeButton = document.createElement("button");
|
||||
closeButton.type = "button";
|
||||
closeButton.setAttribute("data-dismiss", "modal");
|
||||
closeButton.innerHTML = "Close";
|
||||
modalFooter.appendChild(closeButton);
|
||||
//Oh my god finally done!!!
|
||||
showSnackbar("[ERROR] " + obj.reason);
|
||||
}
|
||||
})
|
||||
.fail(function () {
|
||||
showSnackbar("Our hippos failed to find your events for the day!");
|
||||
}, "json");
|
||||
});
|
||||
}
|
||||
|
||||
function selectDate(clickedId) {
|
||||
@@ -701,18 +722,28 @@ function deleteEvent(clickedId) {
|
||||
var eventId = clickedId.replace("delete-", "");
|
||||
var bodyRaw = {"id": eventId};
|
||||
|
||||
var q = $.post("/api/v1/events/delete", JSON.stringify(bodyRaw), function (ignore) {
|
||||
$.ajax({
|
||||
url: "/api/v1/events/delete",
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
method: "POST",
|
||||
dataType: "json",
|
||||
data: JSON.stringify(bodyRaw),
|
||||
success: function (data) {
|
||||
showSnackbar("Successfully deleted event!");
|
||||
|
||||
showSnackbar("Successfully deleted event!");
|
||||
setMonth({date: calendar.selectedDate});
|
||||
getEventsForMonth();
|
||||
|
||||
setMonth({date: calendar.selectedDate});
|
||||
getEventsForMonth();
|
||||
getEventsForSelectedDate();
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
var obj = JSON.parse(jqXHR.responseText);
|
||||
|
||||
getEventsForSelectedDate();
|
||||
})
|
||||
.fail(function () {
|
||||
showSnackbar("Our hippos failed to delete your event!");
|
||||
}, "json");
|
||||
showSnackbar("[ERROR] " + obj.reason);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function init() {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
var calendar = {
|
||||
guildId: 0,
|
||||
todaysDate: new Date(),
|
||||
selectedDate: new Date(),
|
||||
displays: []
|
||||
@@ -146,30 +147,41 @@ function getEventsForMonth() {
|
||||
|
||||
|
||||
var bodyRaw = {
|
||||
"guild_id": calendar.guildId,
|
||||
"DaysInMonth": daysInMonth().toString(),
|
||||
"StartEpoch": ds.getTime().toString()
|
||||
};
|
||||
|
||||
var q = $.post("/api/v1/events/list/month", JSON.stringify(bodyRaw), function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
$.ajax({
|
||||
url: "/api/v1/events/list/month",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": "EMBEDDED"
|
||||
},
|
||||
method: "POST",
|
||||
dataType: "json",
|
||||
data: JSON.stringify(bodyRaw),
|
||||
success: function (json) {
|
||||
var obj = json;
|
||||
|
||||
//Display the event counts on the calendar...
|
||||
for (var i = 0; i < obj.events.length; i++) {
|
||||
var d = new Date(obj.events[i].epochStart);
|
||||
//Display the event counts on the calendar...
|
||||
for (var i = 0; i < obj.events.length; i++) {
|
||||
var d = new Date(obj.events[i].epochStart);
|
||||
|
||||
var e = document.getElementById(calendar.displays[d.getDate()]);
|
||||
var e = document.getElementById(calendar.displays[d.getDate()]);
|
||||
|
||||
if (e.innerHTML.indexOf("[") === -1) {
|
||||
e.innerHTML = d.getDate() + "[1]";
|
||||
} else {
|
||||
e.innerHTML = d.getDate().toString() + "[" + (parseInt(e.innerHTML.split("[")[1][0]) + 1).toString() + "]";
|
||||
if (e.innerHTML.indexOf("[") === -1) {
|
||||
e.innerHTML = d.getDate() + "[1]";
|
||||
} else {
|
||||
e.innerHTML = d.getDate().toString() + "[" + (parseInt(e.innerHTML.split("[")[1][0]) + 1).toString() + "]";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
|
||||
})
|
||||
.fail(function () {
|
||||
showSnackbar("Our hippos failed to find your events!");
|
||||
}, "json");
|
||||
showSnackbar("[ERROR] " + jqXHR.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getEventsForSelectedDate() {
|
||||
@@ -178,317 +190,329 @@ function getEventsForSelectedDate() {
|
||||
|
||||
|
||||
var bodyRaw = {
|
||||
"guild_id": calendar.guildId,
|
||||
"DaysInMonth": daysInMonth().toString(),
|
||||
"StartEpoch": ds.getTime().toString()
|
||||
};
|
||||
|
||||
var q = $.post("/api/v1/events/list/date", JSON.stringify(bodyRaw), function (response) {
|
||||
var obj = JSON.parse(response);
|
||||
$.ajax({
|
||||
url: "/api/v1/events/list/date",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": "EMBEDDED"
|
||||
},
|
||||
method: "POST",
|
||||
dataType: "json",
|
||||
data: JSON.stringify(bodyRaw),
|
||||
success: function (json) {
|
||||
var obj = json;
|
||||
|
||||
//Display the selected day's event details for editing and such.
|
||||
var container = document.getElementById("event-container");
|
||||
//Display the selected day's event details for editing and such.
|
||||
var container = document.getElementById("event-container");
|
||||
|
||||
while (container.firstChild) {
|
||||
container.removeChild(container.firstChild);
|
||||
}
|
||||
|
||||
for (var i = 0; i < obj.count; i++) {
|
||||
var event = obj.events[i];
|
||||
|
||||
//Create View Button
|
||||
var viewButton = document.createElement("button");
|
||||
viewButton.type = "button";
|
||||
viewButton.setAttribute("data-toggle", "modal");
|
||||
viewButton.setAttribute("data-target", "#modal-" + event.id);
|
||||
viewButton.innerHTML = "View";
|
||||
container.appendChild(viewButton);
|
||||
|
||||
container.appendChild(document.createElement("br"));
|
||||
container.appendChild(document.createElement("br"));
|
||||
|
||||
//Create modal container
|
||||
var modalContainer = document.createElement("div");
|
||||
modalContainer.className = "modal fade";
|
||||
modalContainer.id = "modal-" + event.id;
|
||||
modalContainer.role = "dialog";
|
||||
container.appendChild(modalContainer);
|
||||
|
||||
//Create modal-dialog
|
||||
var modalDia = document.createElement("div");
|
||||
modalDia.className = "modal-dialog";
|
||||
modalContainer.appendChild(modalDia);
|
||||
|
||||
//Create Modal Content
|
||||
var modalCon = document.createElement("div");
|
||||
modalCon.className = "modal-content";
|
||||
modalDia.appendChild(modalCon);
|
||||
|
||||
//Create modal header and title
|
||||
var modalHeader = document.createElement("div");
|
||||
modalHeader.className = "modal-header";
|
||||
modalCon.appendChild(modalHeader);
|
||||
var modalTitle = document.createElement("h4");
|
||||
modalTitle.className = "modal-title";
|
||||
modalTitle.innerHTML = "Editing Event";
|
||||
modalHeader.appendChild(modalTitle);
|
||||
|
||||
//Create Modal Body
|
||||
var modalBody = document.createElement("div");
|
||||
modalBody.className = "modal-body";
|
||||
modalCon.appendChild(modalBody);
|
||||
|
||||
var form = document.createElement("form");
|
||||
modalBody.appendChild(form);
|
||||
|
||||
//Summary
|
||||
var summaryLabel = document.createElement("label");
|
||||
summaryLabel.innerHTML = "Summary";
|
||||
summaryLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(summaryLabel);
|
||||
var summary = document.createElement("input");
|
||||
summary.name = "summary";
|
||||
summary.type = "text";
|
||||
summary.value = event.summary;
|
||||
summary.id = "editSummary-" + event.id;
|
||||
summaryLabel.appendChild(summary);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Description
|
||||
var descriptionLabel = document.createElement("label");
|
||||
descriptionLabel.innerHTML = "Description";
|
||||
descriptionLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(descriptionLabel);
|
||||
var description = document.createElement("input");
|
||||
description.name = "edit-description";
|
||||
description.type = "text";
|
||||
description.value = event.description;
|
||||
description.id = "editDescription-" + event.id;
|
||||
descriptionLabel.appendChild(description);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Start date and time
|
||||
var sd = new Date(event.epochStart);
|
||||
var startLabel = document.createElement("label");
|
||||
startLabel.innerHTML = "Start Date and Time";
|
||||
startLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(startLabel);
|
||||
var startDate = document.createElement("input");
|
||||
startDate.name = "start-date";
|
||||
startDate.type = "date";
|
||||
startDate.valueAsDate = sd;
|
||||
startDate.id = "editStartDate-" + event.id;
|
||||
startLabel.appendChild(startDate);
|
||||
var startTime = document.createElement("input");
|
||||
startTime.name = "start-time";
|
||||
startTime.type = "time";
|
||||
startTime.value = (sd.getHours() < 10 ? "0" : "") + sd.getHours() + ":" + (sd.getMinutes() < 10 ? "0" : "") + sd.getMinutes();
|
||||
startTime.id = "editStartTime-" + event.id;
|
||||
startLabel.appendChild(startTime);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//End date and time
|
||||
var ed = new Date(event.epochEnd);
|
||||
var endLabel = document.createElement("label");
|
||||
endLabel.innerHTML = "End Date and Time";
|
||||
endLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(endLabel);
|
||||
var endDate = document.createElement("input");
|
||||
endDate.name = "end-date";
|
||||
endDate.type = "date";
|
||||
endDate.valueAsDate = ed;
|
||||
endDate.id = "editEndDate-" + event.id;
|
||||
endLabel.appendChild(endDate);
|
||||
var endTime = document.createElement("input");
|
||||
endTime.name = "end-time";
|
||||
endTime.type = "time";
|
||||
endTime.value = (ed.getHours() < 10 ? "0" : "") + ed.getHours() + ":" + (ed.getMinutes() < 10 ? "0" : "") + ed.getMinutes();
|
||||
endTime.id = "editEndTime-" + event.id;
|
||||
endLabel.appendChild(endTime);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
|
||||
//Timezone (read only)
|
||||
var timezoneLabel = document.createElement("label");
|
||||
timezoneLabel.innerHTML = "Timezone";
|
||||
timezoneLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(timezoneLabel);
|
||||
var timezone = document.createElement("input");
|
||||
timezone.name = "timezone";
|
||||
timezone.type = "text";
|
||||
timezone.value = event.timezone;
|
||||
timezone.disabled = true;
|
||||
timezoneLabel.appendChild(timezone);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Location
|
||||
var locationLabel = document.createElement("label");
|
||||
locationLabel.innerHTML = "Location";
|
||||
locationLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(locationLabel);
|
||||
var location = document.createElement("input");
|
||||
location.name = "location";
|
||||
location.type = "text";
|
||||
location.value = event.location;
|
||||
location.id = "editLocation-" + event.id;
|
||||
locationLabel.appendChild(location);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Color
|
||||
var colorLabel = document.createElement("label");
|
||||
colorLabel.innerHTML = "Color";
|
||||
colorLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(colorLabel);
|
||||
var colorSelect = document.createElement("select");
|
||||
colorSelect.name = "color";
|
||||
colorSelect.id = "editColor-" + event.id;
|
||||
colorLabel.appendChild(colorSelect);
|
||||
|
||||
for (var c = 0; c < colors().length; c++) {
|
||||
var option = document.createElement("option");
|
||||
option.value = colors()[c];
|
||||
option.text = colors()[c];
|
||||
option.selected = (event.color === colors()[c]);
|
||||
colorSelect.appendChild(option);
|
||||
while (container.firstChild) {
|
||||
container.removeChild(container.firstChild);
|
||||
}
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Recurrence
|
||||
var recurrenceLabel = document.createElement("label");
|
||||
recurrenceLabel.innerHTML = "Recurrence";
|
||||
recurrenceLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(recurrenceLabel);
|
||||
for (var i = 0; i < obj.count; i++) {
|
||||
var event = obj.events[i];
|
||||
|
||||
if (event.isParent) {
|
||||
var enableRecurrence = document.createElement("input");
|
||||
enableRecurrence.name = "enable-recurrence";
|
||||
enableRecurrence.type = "checkbox";
|
||||
enableRecurrence.checked = false;
|
||||
enableRecurrence.id = "editEnableRecur-" + event.id;
|
||||
enableRecurrence.onclick = function (ev) {
|
||||
changeRecurrenceEditDisplays(this);
|
||||
};
|
||||
recurrenceLabel.appendChild(enableRecurrence);
|
||||
//Create View Button
|
||||
var viewButton = document.createElement("button");
|
||||
viewButton.type = "button";
|
||||
viewButton.setAttribute("data-toggle", "modal");
|
||||
viewButton.setAttribute("data-target", "#modal-" + event.id);
|
||||
viewButton.innerHTML = "View Event With ID: " + event.id;
|
||||
container.appendChild(viewButton);
|
||||
|
||||
container.appendChild(document.createElement("br"));
|
||||
container.appendChild(document.createElement("br"));
|
||||
|
||||
//Create modal container
|
||||
var modalContainer = document.createElement("div");
|
||||
modalContainer.className = "modal fade";
|
||||
modalContainer.id = "modal-" + event.id;
|
||||
modalContainer.role = "dialog";
|
||||
container.appendChild(modalContainer);
|
||||
|
||||
//Create modal-dialog
|
||||
var modalDia = document.createElement("div");
|
||||
modalDia.className = "modal-dialog";
|
||||
modalContainer.appendChild(modalDia);
|
||||
|
||||
//Create Modal Content
|
||||
var modalCon = document.createElement("div");
|
||||
modalCon.className = "modal-content";
|
||||
modalDia.appendChild(modalCon);
|
||||
|
||||
//Create modal header and title
|
||||
var modalHeader = document.createElement("div");
|
||||
modalHeader.className = "modal-header";
|
||||
modalCon.appendChild(modalHeader);
|
||||
var modalTitle = document.createElement("h4");
|
||||
modalTitle.className = "modal-title";
|
||||
modalTitle.innerHTML = "Viewing Event";
|
||||
modalHeader.appendChild(modalTitle);
|
||||
|
||||
//Create Modal Body
|
||||
var modalBody = document.createElement("div");
|
||||
modalBody.className = "modal-body";
|
||||
modalCon.appendChild(modalBody);
|
||||
|
||||
var form = document.createElement("form");
|
||||
modalBody.appendChild(form);
|
||||
|
||||
//Summary
|
||||
var summaryLabel = document.createElement("label");
|
||||
summaryLabel.innerHTML = "Summary";
|
||||
summaryLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(summaryLabel);
|
||||
var summary = document.createElement("input");
|
||||
summary.name = "summary";
|
||||
summary.type = "text";
|
||||
summary.value = event.summary;
|
||||
summary.id = "editSummary-" + event.id;
|
||||
summaryLabel.appendChild(summary);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Frequency
|
||||
var frequencyLabel = document.createElement("label");
|
||||
frequencyLabel.innerHTML = "Recurrence - Frequency";
|
||||
frequencyLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(frequencyLabel);
|
||||
var freqSelect = document.createElement("select");
|
||||
freqSelect.name = "frequency";
|
||||
freqSelect.id = "editFrequency-" + event.id;
|
||||
frequencyLabel.appendChild(freqSelect);
|
||||
//Description
|
||||
var descriptionLabel = document.createElement("label");
|
||||
descriptionLabel.innerHTML = "Description";
|
||||
descriptionLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(descriptionLabel);
|
||||
var description = document.createElement("input");
|
||||
description.name = "edit-description";
|
||||
description.type = "text";
|
||||
description.value = event.description;
|
||||
description.id = "editDescription-" + event.id;
|
||||
descriptionLabel.appendChild(description);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
for (var f = 0; f < frequencies().length; f++) {
|
||||
var op = document.createElement("option");
|
||||
op.value = frequencies()[f];
|
||||
op.text = frequencies()[f];
|
||||
op.selected = (event.recurrence.frequency === frequencies()[f]);
|
||||
freqSelect.appendChild(op);
|
||||
//Start date and time
|
||||
var sd = new Date(event.epochStart);
|
||||
var startLabel = document.createElement("label");
|
||||
startLabel.innerHTML = "Start Date and Time";
|
||||
startLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(startLabel);
|
||||
var startDate = document.createElement("input");
|
||||
startDate.name = "start-date";
|
||||
startDate.type = "date";
|
||||
startDate.valueAsDate = sd;
|
||||
startDate.id = "editStartDate-" + event.id;
|
||||
startLabel.appendChild(startDate);
|
||||
var startTime = document.createElement("input");
|
||||
startTime.name = "start-time";
|
||||
startTime.type = "time";
|
||||
startTime.value = (sd.getHours() < 10 ? "0" : "") + sd.getHours() + ":" + (sd.getMinutes() < 10 ? "0" : "") + sd.getMinutes();
|
||||
startTime.id = "editStartTime-" + event.id;
|
||||
startLabel.appendChild(startTime);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//End date and time
|
||||
var ed = new Date(event.epochEnd);
|
||||
var endLabel = document.createElement("label");
|
||||
endLabel.innerHTML = "End Date and Time";
|
||||
endLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(endLabel);
|
||||
var endDate = document.createElement("input");
|
||||
endDate.name = "end-date";
|
||||
endDate.type = "date";
|
||||
endDate.valueAsDate = ed;
|
||||
endDate.id = "editEndDate-" + event.id;
|
||||
endLabel.appendChild(endDate);
|
||||
var endTime = document.createElement("input");
|
||||
endTime.name = "end-time";
|
||||
endTime.type = "time";
|
||||
endTime.value = (ed.getHours() < 10 ? "0" : "") + ed.getHours() + ":" + (ed.getMinutes() < 10 ? "0" : "") + ed.getMinutes();
|
||||
endTime.id = "editEndTime-" + event.id;
|
||||
endLabel.appendChild(endTime);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
|
||||
//Timezone (read only)
|
||||
var timezoneLabel = document.createElement("label");
|
||||
timezoneLabel.innerHTML = "Timezone";
|
||||
timezoneLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(timezoneLabel);
|
||||
var timezone = document.createElement("input");
|
||||
timezone.name = "timezone";
|
||||
timezone.type = "text";
|
||||
timezone.value = event.timezone;
|
||||
timezone.disabled = true;
|
||||
timezoneLabel.appendChild(timezone);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Location
|
||||
var locationLabel = document.createElement("label");
|
||||
locationLabel.innerHTML = "Location";
|
||||
locationLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(locationLabel);
|
||||
var location = document.createElement("input");
|
||||
location.name = "location";
|
||||
location.type = "text";
|
||||
location.value = event.location;
|
||||
location.id = "editLocation-" + event.id;
|
||||
locationLabel.appendChild(location);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Color
|
||||
var colorLabel = document.createElement("label");
|
||||
colorLabel.innerHTML = "Color";
|
||||
colorLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(colorLabel);
|
||||
var colorSelect = document.createElement("select");
|
||||
colorSelect.name = "color";
|
||||
colorSelect.id = "editColor-" + event.id;
|
||||
colorLabel.appendChild(colorSelect);
|
||||
|
||||
for (var c = 0; c < colors().length; c++) {
|
||||
var option = document.createElement("option");
|
||||
option.value = colors()[c];
|
||||
option.text = colors()[c];
|
||||
option.selected = (event.color === colors()[c]);
|
||||
colorSelect.appendChild(option);
|
||||
}
|
||||
freqSelect.disabled = true;
|
||||
frequencyLabel.appendChild(freqSelect);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Count
|
||||
var countLabel = document.createElement("label");
|
||||
countLabel.innerHTML = "Recurrence - Count";
|
||||
countLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(countLabel);
|
||||
var count = document.createElement("input");
|
||||
count.name = "count";
|
||||
count.type = "number";
|
||||
count.valueAsNumber = parseInt(event.recurrence.count);
|
||||
count.min = "-1";
|
||||
count.id = "editCount-" + event.id;
|
||||
count.disabled = true;
|
||||
countLabel.appendChild(count);
|
||||
//Recurrence
|
||||
var recurrenceLabel = document.createElement("label");
|
||||
recurrenceLabel.innerHTML = "Recurrence";
|
||||
recurrenceLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(recurrenceLabel);
|
||||
|
||||
if (event.isParent) {
|
||||
var enableRecurrence = document.createElement("input");
|
||||
enableRecurrence.name = "enable-recurrence";
|
||||
enableRecurrence.type = "checkbox";
|
||||
enableRecurrence.checked = false;
|
||||
enableRecurrence.id = "editEnableRecur-" + event.id;
|
||||
enableRecurrence.onclick = function (ev) {
|
||||
changeRecurrenceEditDisplays(this);
|
||||
};
|
||||
recurrenceLabel.appendChild(enableRecurrence);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Frequency
|
||||
var frequencyLabel = document.createElement("label");
|
||||
frequencyLabel.innerHTML = "Recurrence - Frequency";
|
||||
frequencyLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(frequencyLabel);
|
||||
var freqSelect = document.createElement("select");
|
||||
freqSelect.name = "frequency";
|
||||
freqSelect.id = "editFrequency-" + event.id;
|
||||
frequencyLabel.appendChild(freqSelect);
|
||||
|
||||
for (var f = 0; f < frequencies().length; f++) {
|
||||
var op = document.createElement("option");
|
||||
op.value = frequencies()[f];
|
||||
op.text = frequencies()[f];
|
||||
op.selected = (event.recurrence.frequency === frequencies()[f]);
|
||||
freqSelect.appendChild(op);
|
||||
}
|
||||
freqSelect.disabled = true;
|
||||
frequencyLabel.appendChild(freqSelect);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Count
|
||||
var countLabel = document.createElement("label");
|
||||
countLabel.innerHTML = "Recurrence - Count";
|
||||
countLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(countLabel);
|
||||
var count = document.createElement("input");
|
||||
count.name = "count";
|
||||
count.type = "number";
|
||||
count.valueAsNumber = parseInt(event.recurrence.count);
|
||||
count.min = "-1";
|
||||
count.id = "editCount-" + event.id;
|
||||
count.disabled = true;
|
||||
countLabel.appendChild(count);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Interval
|
||||
var intervalLabel = document.createElement("label");
|
||||
intervalLabel.innerHTML = "Recurrence - Interval";
|
||||
intervalLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(intervalLabel);
|
||||
var interval = document.createElement("input");
|
||||
interval.name = "interval";
|
||||
interval.type = "number";
|
||||
interval.valueAsNumber = parseInt(event.recurrence.interval);
|
||||
interval.min = "1";
|
||||
interval.id = "editInterval-" + event.id;
|
||||
interval.disabled = true;
|
||||
intervalLabel.appendChild(interval);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
} else {
|
||||
//Cannot edit recurrence
|
||||
var cannotEditRecur = document.createElement("input");
|
||||
cannotEditRecur.name = "ignore-cer";
|
||||
cannotEditRecur.type = "text";
|
||||
cannotEditRecur.disabled = true;
|
||||
cannotEditRecur.value = "Cannot edit child";
|
||||
recurrenceLabel.appendChild(cannotEditRecur);
|
||||
}
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Interval
|
||||
var intervalLabel = document.createElement("label");
|
||||
intervalLabel.innerHTML = "Recurrence - Interval";
|
||||
intervalLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(intervalLabel);
|
||||
var interval = document.createElement("input");
|
||||
interval.name = "interval";
|
||||
interval.type = "number";
|
||||
interval.valueAsNumber = parseInt(event.recurrence.interval);
|
||||
interval.min = "1";
|
||||
interval.id = "editInterval-" + event.id;
|
||||
interval.disabled = true;
|
||||
intervalLabel.appendChild(interval);
|
||||
//Image
|
||||
var imageLabel = document.createElement("label");
|
||||
imageLabel.innerHTML = "Image";
|
||||
imageLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(imageLabel);
|
||||
var image = document.createElement("input");
|
||||
image.name = "image";
|
||||
image.type = "text";
|
||||
image.value = event.image;
|
||||
image.id = "editImage-" + event.id;
|
||||
imageLabel.appendChild(image);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
} else {
|
||||
//Cannot edit recurrence
|
||||
var cannotEditRecur = document.createElement("input");
|
||||
cannotEditRecur.name = "ignore-cer";
|
||||
cannotEditRecur.type = "text";
|
||||
cannotEditRecur.disabled = true;
|
||||
cannotEditRecur.value = "Cannot edit child";
|
||||
recurrenceLabel.appendChild(cannotEditRecur);
|
||||
//ID (readonly) for API
|
||||
var idLabel = document.createElement("label");
|
||||
idLabel.innerHTML = "Event ID";
|
||||
idLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(idLabel);
|
||||
var hiddenId = document.createElement("input");
|
||||
hiddenId.type = "text";
|
||||
hiddenId.name = "id";
|
||||
hiddenId.value = event.id;
|
||||
hiddenId.id = "editId-" + event.id;
|
||||
hiddenId.readOnly = true;
|
||||
idLabel.appendChild(hiddenId);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Create modal footer
|
||||
var modalFooter = document.createElement("div");
|
||||
modalFooter.className = "modal-footer";
|
||||
modalCon.appendChild(modalFooter);
|
||||
|
||||
var closeButton = document.createElement("button");
|
||||
closeButton.type = "button";
|
||||
closeButton.setAttribute("data-dismiss", "modal");
|
||||
closeButton.innerHTML = "Close";
|
||||
modalFooter.appendChild(closeButton);
|
||||
//Oh my god finally done!!!
|
||||
}
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
},
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
|
||||
//Image
|
||||
var imageLabel = document.createElement("label");
|
||||
imageLabel.innerHTML = "Image";
|
||||
imageLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(imageLabel);
|
||||
var image = document.createElement("input");
|
||||
image.name = "image";
|
||||
image.type = "text";
|
||||
image.value = event.image;
|
||||
image.id = "editImage-" + event.id;
|
||||
imageLabel.appendChild(image);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//ID (readonly) for API
|
||||
var idLabel = document.createElement("label");
|
||||
idLabel.innerHTML = "Event ID";
|
||||
idLabel.appendChild(document.createElement("br"));
|
||||
form.appendChild(idLabel);
|
||||
var hiddenId = document.createElement("input");
|
||||
hiddenId.type = "text";
|
||||
hiddenId.name = "id";
|
||||
hiddenId.value = event.id;
|
||||
hiddenId.id = "editId-" + event.id;
|
||||
hiddenId.readOnly = true;
|
||||
idLabel.appendChild(hiddenId);
|
||||
form.appendChild(document.createElement("br"));
|
||||
form.appendChild(document.createElement("br"));
|
||||
|
||||
//Create modal footer
|
||||
var modalFooter = document.createElement("div");
|
||||
modalFooter.className = "modal-footer";
|
||||
modalCon.appendChild(modalFooter);
|
||||
|
||||
var closeButton = document.createElement("button");
|
||||
closeButton.type = "button";
|
||||
closeButton.setAttribute("data-dismiss", "modal");
|
||||
closeButton.innerHTML = "Close";
|
||||
modalFooter.appendChild(closeButton);
|
||||
//Oh my god finally done!!!
|
||||
showSnackbar("[ERROR] " + jqXHR.responseText);
|
||||
}
|
||||
})
|
||||
.fail(function () {
|
||||
showSnackbar("Our hippos failed to find your events for the day!");
|
||||
}, "json");
|
||||
});
|
||||
}
|
||||
|
||||
function selectDate(clickedId) {
|
||||
@@ -507,7 +531,9 @@ function selectDate(clickedId) {
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
function init(guildId) {
|
||||
calendar.guildId = parseInt(guildId);
|
||||
|
||||
setMonth({date: calendar.todaysDate});
|
||||
|
||||
getEventsForMonth();
|
||||
|
||||
Reference in New Issue
Block a user