Lots more work on the web dashboard.

This commit is contained in:
NovaFox161
2018-01-05 14:00:59 -06:00
parent 526f837d94
commit 795224c0c7
17 changed files with 95 additions and 39 deletions

View File

@@ -41,6 +41,7 @@ public class DiscordLoginHandler {
//Saving session info and access info to memory until moved into the database...
Map m = new HashMap();
m.put("loggedIn", true);
m.put("client", BotSettings.ID.get());
m.put("id", userInfo.getString("id"));
m.put("username", userInfo.getString("username"));

View File

@@ -130,6 +130,15 @@ public class GuildSettings {
return users.toString();
}
//Dumb getters so that Tymeleaf plays nice...
public boolean isExternalCalendar() {
return externalCalendar;
}
public boolean isSimpleAnnouncements() {
return simpleAnnouncements;
}
//Setters
public void setUseExternalCalendar(boolean _useExternal) {
externalCalendar = _useExternal;

View File

@@ -17,9 +17,7 @@ public class WebGuild {
//Bot settings
private GuildSettings settings;
private String botNick;
private String lang;
//Getters
public String getId() {
@@ -42,10 +40,6 @@ public class WebGuild {
return botNick;
}
public String getLang() {
return lang;
}
//Setters
public void setId(String _id) {
id = _id;
@@ -67,10 +61,6 @@ public class WebGuild {
botNick = _nick;
}
public void setLang(String _lang) {
lang = _lang;
}
//Functions
public WebGuild fromGuild(IGuild g) {
@@ -80,7 +70,6 @@ public class WebGuild {
botNick = Main.client.getOurUser().getNicknameForGuild(g);
settings = DatabaseManager.getManager().getSettings(g.getLongID());
lang = settings.getLang();
return this;
}

View File

@@ -1,9 +1,8 @@
package com.cloudcraftgaming.discal.bot.utils;
package com.cloudcraftgaming.discal.api.utils;
import com.cloudcraftgaming.discal.Main;
import com.cloudcraftgaming.discal.api.database.DatabaseManager;
import com.cloudcraftgaming.discal.api.object.GuildSettings;
import com.cloudcraftgaming.discal.api.utils.ExceptionHandler;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.*;

View File

@@ -9,7 +9,7 @@ import com.cloudcraftgaming.discal.api.object.calendar.CalendarCreatorResponse;
import com.cloudcraftgaming.discal.api.object.calendar.CalendarData;
import com.cloudcraftgaming.discal.api.object.calendar.PreCalendar;
import com.cloudcraftgaming.discal.api.utils.ExceptionHandler;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import com.google.api.services.calendar.model.AclRule;
import com.google.api.services.calendar.model.Calendar;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;

View File

@@ -11,7 +11,7 @@ import com.cloudcraftgaming.discal.api.object.event.EventCreatorResponse;
import com.cloudcraftgaming.discal.api.object.event.PreEvent;
import com.cloudcraftgaming.discal.api.utils.EventUtils;
import com.cloudcraftgaming.discal.api.utils.ExceptionHandler;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;

View File

@@ -7,7 +7,7 @@ import com.cloudcraftgaming.discal.api.object.GuildSettings;
import com.cloudcraftgaming.discal.api.object.announcement.Announcement;
import com.cloudcraftgaming.discal.api.object.announcement.AnnouncementCreatorResponse;
import com.cloudcraftgaming.discal.api.utils.AnnouncementUtils;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IMessage;

View File

@@ -9,7 +9,7 @@ import com.cloudcraftgaming.discal.api.object.GuildSettings;
import com.cloudcraftgaming.discal.api.object.calendar.CalendarData;
import com.cloudcraftgaming.discal.api.object.command.CommandInfo;
import com.cloudcraftgaming.discal.api.utils.ExceptionHandler;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.CalendarListEntry;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;

View File

@@ -9,14 +9,10 @@ import com.cloudcraftgaming.discal.api.object.GuildSettings;
import com.cloudcraftgaming.discal.api.object.announcement.Announcement;
import com.cloudcraftgaming.discal.api.object.announcement.AnnouncementCreatorResponse;
import com.cloudcraftgaming.discal.api.object.command.CommandInfo;
import com.cloudcraftgaming.discal.api.utils.AnnouncementUtils;
import com.cloudcraftgaming.discal.api.utils.EventUtils;
import com.cloudcraftgaming.discal.api.utils.GeneralUtils;
import com.cloudcraftgaming.discal.api.utils.MessageUtils;
import com.cloudcraftgaming.discal.api.utils.*;
import com.cloudcraftgaming.discal.bot.module.announcement.AnnouncementCreator;
import com.cloudcraftgaming.discal.bot.module.announcement.AnnouncementMessageFormatter;
import com.cloudcraftgaming.discal.bot.utils.ChannelUtils;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.bot.utils.RoleUtils;
import com.cloudcraftgaming.discal.bot.utils.UserUtils;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;

View File

@@ -10,9 +10,9 @@ import com.cloudcraftgaming.discal.api.object.calendar.PreCalendar;
import com.cloudcraftgaming.discal.api.object.command.CommandInfo;
import com.cloudcraftgaming.discal.api.utils.CalendarUtils;
import com.cloudcraftgaming.discal.api.utils.GeneralUtils;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import com.cloudcraftgaming.discal.bot.internal.calendar.calendar.CalendarCreator;
import com.cloudcraftgaming.discal.bot.internal.calendar.calendar.CalendarMessageFormatter;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.bot.utils.TimeZoneUtils;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IMessage;

View File

@@ -4,7 +4,7 @@ import com.cloudcraftgaming.discal.Main;
import com.cloudcraftgaming.discal.api.database.DatabaseManager;
import com.cloudcraftgaming.discal.api.object.GuildSettings;
import com.cloudcraftgaming.discal.api.utils.ExceptionHandler;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import sx.blah.discord.api.events.EventSubscriber;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;

View File

@@ -7,8 +7,8 @@ import com.cloudcraftgaming.discal.api.message.MessageManager;
import com.cloudcraftgaming.discal.api.object.GuildSettings;
import com.cloudcraftgaming.discal.api.object.command.CommandInfo;
import com.cloudcraftgaming.discal.api.utils.GeneralUtils;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import com.cloudcraftgaming.discal.bot.utils.ChannelUtils;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.bot.utils.RoleUtils;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IChannel;

View File

@@ -14,7 +14,6 @@ import com.cloudcraftgaming.discal.api.object.event.PreEvent;
import com.cloudcraftgaming.discal.api.utils.*;
import com.cloudcraftgaming.discal.bot.internal.calendar.event.EventCreator;
import com.cloudcraftgaming.discal.bot.internal.calendar.event.EventMessageFormatter;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;

View File

@@ -4,7 +4,7 @@ import com.cloudcraftgaming.discal.Main;
import com.cloudcraftgaming.discal.api.database.DatabaseManager;
import com.cloudcraftgaming.discal.api.object.GuildSettings;
import com.cloudcraftgaming.discal.api.utils.ExceptionHandler;
import com.cloudcraftgaming.discal.bot.utils.PermissionChecker;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import com.cloudcraftgaming.discal.web.utils.ResponseUtils;
import org.json.JSONException;
import org.json.JSONObject;

View File

@@ -2,12 +2,13 @@ package com.cloudcraftgaming.discal.web.handler;
import com.cloudcraftgaming.discal.Main;
import com.cloudcraftgaming.discal.api.database.DatabaseManager;
import com.cloudcraftgaming.discal.api.object.GuildSettings;
import com.cloudcraftgaming.discal.api.object.web.WebGuild;
import com.cloudcraftgaming.discal.api.utils.PermissionChecker;
import org.json.JSONException;
import spark.Request;
import spark.Response;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IUser;
import java.util.HashMap;
import java.util.Map;
@@ -25,10 +26,13 @@ public class DashboardHandler {
try {
String guildId = request.queryParams("guild");
WebGuild wg = new WebGuild().fromGuild(Main.client.getGuildByID(Long.valueOf(guildId)));
IGuild g = Main.client.getGuildByID(Long.valueOf(guildId));
WebGuild wg = new WebGuild().fromGuild(g);
Map m = DiscordAccountHandler.getHandler().getAccount(request.session().id());
IUser u = Main.client.getUserByID(Long.valueOf((String) m.get("id")));
if (m.containsKey("selected")) {
m.remove("selected");
}
@@ -39,10 +43,14 @@ public class DashboardHandler {
m.remove("settings");
}
if (m.containsKey("ext")) {
m.remove("ext");
if (m.containsKey("admin")) {
m.remove("admin");
}
//Check if admin/manage server and/or has control role...
m.put("admin", PermissionChecker.hasManageServerRole(g, u));
m.put("controller", PermissionChecker.hasSufficientRole(g, u));
DiscordAccountHandler.getHandler().appendAccount(m, request.session().id());
response.redirect("/dashboard/guild", 301);
@@ -102,12 +110,19 @@ public class DashboardHandler {
Map m = DiscordAccountHandler.getHandler().getAccount(request.session().id());
WebGuild g = (WebGuild) m.get("selected");
g.setLang(request.queryParams("lang"));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
g.getSettings().setLang(request.queryParams("lang"));
GuildSettings settings = DatabaseManager.getManager().getSettings(Long.valueOf(g.getId()));
settings.setLang(g.getLang());
DatabaseManager.getManager().updateSettings(g.getSettings());
} else if (request.queryParams().contains("simple-ann")) {
//Update simple announcements...
Map m = DiscordAccountHandler.getHandler().getAccount(request.session().id());
WebGuild g = (WebGuild) m.get("selected");
DatabaseManager.getManager().updateSettings(settings);
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
g.getSettings().setSimpleAnnouncements(Boolean.valueOf(request.queryParams("simple-ann")));
DatabaseManager.getManager().updateSettings(g.getSettings());
}
//Finally redirect back to the dashboard

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<html xmlns:th="http://www.thymeleaf.org" xmlns="http://www.w3.org/1999/html">
<head>
<!--Meta stuffs-->
<meta charset="utf-8">
@@ -73,6 +73,7 @@
<hr>
<p th:if="${settings} == null">Please select the settings to edit on the left.</p>
<div th:if="${settings} != null">
<!--Bot Settings-->
<div th:if="${settings} == bot">
<h6>Bot Settings</h6>
<form action="/account/dashboard/update" style="text-align: left">
@@ -98,27 +99,70 @@
<label>Bot Language
<br>
<select name="lang" disabled>
<option th:value="${selected.lang}" selected
th:text="${selected.lang}"></option>
<option value="ENGLISH" th:unless="${selected.lang} == ENGLISH">English</option>
<option th:value="${selected.settings.lang}" selected
th:text="${selected.settings.lang}"></option>
<option value="ENGLISH" th:unless="${selected.settings.lang} == ENGLISH">
English
</option>
</select>
</label>
<input disabled type="submit" class="submit" value="Update">
</form>
<br>
</div>
<!--Guild Settings-->
<div th:if="${settings} == guild">
<h6>Guild Settings</h6>
<form style="text-align: left">
<label> Patron Guild
<br>
<input type="checkbox" name="patron" disabled
th:checked="${selected.settings.patronGuild} == true">
</label>
</form>
<br>
<br>
</div>
<!--Calendar Settings-->
<div th:if="${settings} == calendar">
<h6>Calendar Settings</h6>
<form style="text-align: left">
<label> Using External Calendar
<br>
<input type="checkbox" name="ext-cal" disabled
th:checked="${selected.settings.externalCalendar} == true">
</label>
</form>
<br>
<br>
<form style="text-align: left">
<label> Maximum Calendars Allowed
<br>
<input type="text" maxlength="2" th:value="${selected.settings.maxCalendars}"
disabled>
</label>
</form>
<br>
<br>
</div>
<!--Event Settings-->
<div th:if="${settings} == events">
<h6>Event Settings</h6>
</div>
<!--Announcement Settings-->
<div th:if="${settings} == announcements">
<h6>Announcement Settings</h6>
<form action="/account/dashboard/update" style="text-align: left">
<label> Use Simple Announcements
<br>
<input type="checkbox" name="simple-ann"
th:checked="${selected.settings.simpleAnnouncements} == true"
onclick="useSimpleAnnouncements(this.checked)">
</label>
</form>
</div>
<!--RSVP Settings-->
<div th:if="${settings} == rsvp">
<h6>RSVP Settings</h6>
</div>

View File

@@ -1,3 +1,7 @@
function goToGuild(guildId) {
window.location.href = "/account/dashboard/select?guild=" + guildId;
}
function useSimpleAnnouncements(useSimple) {
window.location.href = "/account/dashboard/update?simple-ann=" + useSimple;
}