2022-07-24 08:49:29 +03:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Selmer Bot Web Dashboard< / title >
2022-08-12 14:18:33 -07:00
< link rel = "shortcut icon" href = "https://github.com/ION606/selmer-bot-website/blob/main/assets/favicon.ico?raw=true?raw=true" type = "image/x-icon" >
2022-07-24 08:49:29 +03:00
< script src = "https://kit.fontawesome.com/728e740903.js" crossorigin = "anonymous" > < / script >
2022-07-27 11:28:50 +03:00
< link href = "https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel = "stylesheet" >
< script src = "https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" > < / script >
< script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" > < / script >
< link rel = "preconnect" href = "https://fonts.googleapis.com" >
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
< link href = "https://fonts.googleapis.com/css2?family=Cinzel&family=Rajdhani:wght@300&family=Share+Tech+Mono&display=swap" rel = "stylesheet" >
2022-07-24 08:49:29 +03:00
< style >
html { width : 100 % ; height : 100 % ; margin : 0 ; padding : 0 ; }
body {
/* background-color: rgb(4, 4, 85); */
background-color : rgb ( 41 , 42 , 48 ) ;
width : 100 % ; height : 100 % ; margin : 0 ; padding : 0 ;
}
/* .dropdown a:hover { background-color: #ddd; } */
. show { display : block ; }
. hide { display : none ; }
. loadingscreen {
height : 90 vh ;
background-color : bisque ;
z-index : 100 ;
}
. navbar {
2022-07-27 11:28:50 +03:00
background-color : rgb ( 0 , 0 , 0 ) ;
/* height: 50px;
2022-07-24 08:49:29 +03:00
border-width: 1px;
2022-07-27 11:28:50 +03:00
border-style: double; */
2022-07-24 08:49:29 +03:00
}
2022-07-27 11:28:50 +03:00
. navbar . nav-item {
margin-right : 25 px ;
margin-left : 25 px ;
}
2022-07-24 08:49:29 +03:00
# right {
float : right ;
margin-right : 50 px ;
}
. box {
font-size : 20 px ;
2022-07-27 11:28:50 +03:00
height : 40 px ;
2022-07-24 08:49:29 +03:00
width : auto ;
margin-bottom : 15 px ;
2022-07-27 11:28:50 +03:00
padding : 3 px ;
2022-07-24 08:49:29 +03:00
border : 1 px solid black ;
clear : both ;
align-content : center ;
2022-07-27 11:28:50 +03:00
margin-right : 30 px ;
margin-left : 30 px ;
2022-07-24 08:49:29 +03:00
}
. statusdiv {
border-style : dashed ;
border-color : rgb ( 247 , 189 , 0 ) ;
2022-07-27 11:28:50 +03:00
width : 140 px ;
height : 120 px ;
2022-07-24 08:49:29 +03:00
margin-top : 20 px ;
float : right ;
margin-right : 50 px ;
text-align : center ;
}
. saved {
background-color : rgb ( 11 , 184 , 11 ) ;
}
. saving {
background-color : orange ;
}
. failed {
background-color : red ;
}
. buttonsmainbar {
background-color : green ;
width : 200 px ;
2022-07-27 11:28:50 +03:00
height : 60 px ;
2022-07-24 08:49:29 +03:00
}
. btnmain {
background-color : rgb ( 0 , 0 , 0 ) ;
}
. sidebar {
background-color : #42424b ;
width : 11 % ;
position : fixed ;
2022-07-27 11:28:50 +03:00
top : 75 px ;
2022-07-24 08:49:29 +03:00
bottom : 0 ;
display : flex ;
flex-wrap : wrap ;
border : 0 px ;
border-right : 2 px ;
border-color : black ;
border-style : solid ;
}
. wc {
align-content : center ;
align-self : center ;
color : white ;
font-family : 'Gill Sans' , 'Gill Sans MT' , Calibri , 'Trebuchet MS' , sans-serif ;
letter-spacing : 1 px ;
}
. lg {
align-content : center ;
align-self : center ;
color : white ;
font-family : 'Gill Sans' , 'Gill Sans MT' , Calibri , 'Trebuchet MS' , sans-serif ;
letter-spacing : 1 px ;
}
2022-07-27 15:34:38 +03:00
. form-select {
width : 200 px ;
background-color : rgb ( 187 , 183 , 183 ) ;
border-color : #000000 ;
}
2022-08-16 14:15:12 -07:00
. ardpd {
color : inherit ;
background-color : rgba ( 85 , 83 , 83 , 0.2 ) ;
}
. ardpd : focus-visible {
color : white ;
}
2022-07-27 11:28:50 +03:00
< / style >
2022-07-24 08:49:29 +03:00
2022-07-27 11:28:50 +03:00
<!-- Buttons -->
< style >
. jumpButton {
/* color: #ffffff; */
font-size : 15 px ;
border : 1 px solid #000000 ;
width : 200 px ;
height : 40 px ;
cursor : pointer ;
align-self : center ;
background-color : rgb ( 2 , 2 , 192 ) ;
}
. jumpButton : hover {
color : #2d63c8 ;
/* background-color: #ffffff; */
}
/* SUBMIT BUTTON START */
. submitButton {
2022-07-24 08:49:29 +03:00
position : relative ;
background-color : black ;
border-radius : 4 em ;
font-size : 16 px ;
color : white ;
padding : 0.8 em 1.8 em ;
cursor : pointer ;
user-select : none ;
text-align : center ;
text-decoration : none ;
cursor : pointer ;
transition-duration : 0.4 s ;
-webkit- transition-duration : 0.4 s ; /* Safari */
}
. submitButton : hover {
transition-duration : 0.1 s ;
background-color : #3A3A3A ;
}
. submitButton : after {
content : "" ;
display : block ;
position : absolute ;
border-radius : 4 em ;
left : 0 ;
top : 0 ;
width : 100 % ;
height : 100 % ;
opacity : 0 ;
transition : all 0.5 s ;
box-shadow : 0 0 10 px 40 px white ;
}
. submitButton : active : after {
box-shadow : 0 0 0 0 white ;
position : absolute ;
border-radius : 4 em ;
left : 0 ;
top : 0 ;
opacity : 1 ;
transition : 0 s ;
}
. submitButton : active {
top : 1 px ;
}
/* SUBMIT BUTTON END */
. logoutbtn {
margin-top : 14 px ;
2022-08-12 10:29:57 -07:00
scale : 1.4 ;
2022-07-24 08:49:29 +03:00
}
. logoutbtn : hover {
cursor : pointer ;
color : red ;
}
2022-07-27 11:28:50 +03:00
# sevradio br {
margin-top : 10 px ;
}
. btnside {
color : #ffffff ;
background-color : #42424b ;
font-size : 19 px ;
/* border: 2px solid #000000; */
outline : none ;
border : none ;
width : 100 % ;
height : 50 px ;
cursor : pointer ;
}
2022-07-24 08:49:29 +03:00
2022-07-27 11:28:50 +03:00
. btnside : hover {
color : #ffffff ;
background-color : #377aea ;
}
2022-07-31 14:02:17 +03:00
. helpbtn {
margin-top : 30 px ;
margin-bottom : 30 px ;
font-size : 20 px ;
align-self : right ;
padding : 0 px ;
border-radius : 50 % ;
border-style : solid ;
}
2022-08-12 10:29:57 -07:00
. calbtn {
width : 100 px ;
height : 70 px ;
}
. green {
background-color : rgb ( 6 , 185 , 6 ) ;
}
. red {
background-color : rgb ( 129 , 129 , 129 ) ;
}
2022-07-27 11:28:50 +03:00
< / style >
2022-07-24 08:49:29 +03:00
2022-08-12 10:29:57 -07:00
<!-- Calendar -->
< script >
async function openNewCalWindow ( evjs , day ) {
const ev = JSON . parse ( evjs ) ;
await new Promise ( ( res , rej ) => { res ( window . open ( 'http://www.selmerbot.com/calEvent.html' , 'popUpWindow' , 'loaction=no,width=600,height=300,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes' ) ) ; } )
. then ( ( w ) => {
if ( ! w ) { w . close ( ) ; return alert ( "Your browser has JavaScript Disabled!" ) ; }
w . sessionStorage . setItem ( "evlist" , evjs ) ;
w . sessionStorage . setItem ( 'day' , day ) ;
2022-08-14 15:12:30 -07:00
w . sessionStorage . setItem ( 'ref' , 'guild' ) ;
2022-08-16 14:15:12 -07:00
w . sessionStorage . setItem ( 'serverInfo' , window . sessionStorage . getItem ( 'serverInfo' ) ) ;
2022-08-12 10:29:57 -07:00
w . location . reload ( ) ;
w . document . write ( '<title>Editing ${(new Date(Number(ev.time)))}</title>' ) ;
} )
// w.location.reload();
}
async function createCalEvent ( day ) {
await new Promise ( ( res , rej ) => { res ( window . open ( 'http://www.selmerbot.com/newCalEvent.html' , 'popUpWindow' , 'loaction=no,width=400,height=350,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes' ) ) ; } )
. then ( ( w ) => {
if ( ! w ) { w . close ( ) ; return alert ( "Your browser has JavaScript Disabled!" ) ; }
w . sessionStorage . setItem ( "day" , day ) ;
2022-08-14 15:12:30 -07:00
w . sessionStorage . setItem ( 'ref' , 'guild' ) ;
2022-08-16 14:15:12 -07:00
w . sessionStorage . setItem ( 'serverInfo' , window . sessionStorage . getItem ( 'serverInfo' ) ) ;
2022-08-12 10:29:57 -07:00
w . location . reload ( ) ;
// w.document.write('<title>Editing ${(' + String(day) + ')}</title>');
} ) ;
}
//Month + 1 because the 0 will set the date back a month
function daysInMonth ( d ) {
return new Date ( d . getFullYear ( ) , d . getMonth ( ) + 1 , 0 ) . getDate ( ) ;
}
function calSetup ( calList ) {
const d = new Date ( ( new Date ( ) ) . getFullYear ( ) , ( new Date ( ) ) . getMonth ( ) ) ;
const startDay = new Date ( d . getFullYear ( ) , d . getMonth ( ) , 1 ) . getDay ( ) + 1 ;
var cal = document . getElementById ( 'calbody' ) ;
var tr = document . createElement ( 'tr' ) ;
var dayint = 1 ;
const ll = daysInMonth ( d ) ;
for ( let i = 1 ; i <= 42 ; i ++ ) {
var td = document . createElement ( 'td' ) ;
if ( i >= startDay && dayint <= ll ) {
let btn = document . createElement ( 'button' ) ;
btn . innerText = dayint . toString ( ) ;
btn . classList . add ( 'calbtn' ) ;
if ( calList . has ( Number ( dayint . toString ( ) ) ) ) { btn . classList . add ( 'green' ) ; }
else { btn . classList . add ( 'red' ) ; }
btn . onclick = function ( event ) {
const timestamp = new Date ( new Date ( ) . getFullYear ( ) , new Date ( ) . getMonth ( ) , Number ( this . innerText ) ) ;
event . preventDefault ( ) ;
if ( calList . has ( Number ( this . innerText ) ) ) {
const ev = calList . get ( Number ( this . innerText ) ) ;
openNewCalWindow ( JSON . stringify ( ev ) , Number ( this . innerText ) ) ;
} else {
// Check if the day has already passed
if ( Number ( this . innerText ) >= ( new Date ( ) ) . getDate ( ) ) {
createCalEvent ( Number ( this . innerText ) ) ;
} else {
alert ( "Please pick a future date!" ) ;
}
}
}
td . appendChild ( btn ) ;
dayint ++ ;
}
tr . appendChild ( td ) ;
if ( i % 7 == 0 ) {
let tr2 = document . createElement ( 'tr' ) ;
cal . appendChild ( tr ) ;
cal . appendChild ( tr2 ) ;
tr2 = document . createElement ( 'tr' ) ;
tr = document . createElement ( 'tr' ) ;
}
}
cal . appendChild ( tr ) ;
if ( window . innerWidth < 1020 ) {
//Calendar resize
const calSpacing = document . getElementById ( "spaceId" ) ;
calSpacing . cellSpacing = 1 ;
calSpacing . cellPadding = 1 ;
}
}
< / script >
2022-07-24 08:49:29 +03:00
< script >
2022-08-16 14:15:12 -07:00
function getSessionData ( ) {
return new Promise ( ( resolve , reject ) => {
var xhrsess = new XMLHttpRequest ( ) ;
xhrsess . open ( 'post' , 'http://www.selmerbot.com/getSessionInfo/' , true ) ;
xhrsess . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded; charset=UTF-8' ) ;
xhrsess . setRequestHeader ( 'session' , window . localStorage . getItem ( 'sessionId' ) ) ;
//Reminder that this will return a map of strings (you'll have to use JSON.parse() again)
xhrsess . onloadend = ( e ) => {
resolve ( JSON . parse ( xhrsess . response ) ) ;
2022-08-12 10:29:57 -07:00
}
2022-08-16 14:15:12 -07:00
xhrsess . send ( ) ;
} ) ;
}
2022-07-24 08:49:29 +03:00
2022-08-16 14:15:12 -07:00
//Maybe pre-load the channels in the server into local storage for accessing when chosing the welcome/logging channels?
window . onload = ( ) => {
const serverInfoPromise = getSessionData ( ) ;
serverInfoPromise . then ( ( sessionInfo ) => {
const serverInfo = JSON . parse ( sessionInfo . currentServer ) ;
var serverSettings = JSON . parse ( serverInfo . serverSettings ) ;
if ( ! serverSettings ) {
alert ( "Please log in to continue" ) ;
if ( window . location . href . indexOf ( 'localhost' ) != - 1 ) {
window . location = 'https://discord.com/api/oauth2/authorize?client_id=926551095352901632&redirect_uri=http%3A%2F%2Flocalhost%3A53134%2F&response_type=token&scope=identify%20guilds' ;
} else {
window . location = 'https://discord.com/api/oauth2/authorize?client_id=944046902415093760&redirect_uri=http%3A%2F%2Fwww.selmerbot.com%2F&response_type=token&scope=identify%20guilds' ;
}
}
2022-07-24 08:49:29 +03:00
2022-08-16 14:15:12 -07:00
//Get serverId instead of the userId
const id = serverInfo . Id ;
//Check if the user has premium
var xhrverify = new XMLHttpRequest ( ) ;
xhrverify . open ( 'post' , 'http://www.selmerbot.com/verifypremium/' , true ) ;
xhrverify . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded; charset=UTF-8' ) ;
//Use the guild Id as the userId
xhrverify . setRequestHeader ( 'userId' , id ) ;
xhrverify . onloadend = ( e ) => {
// //Load the channels
// var xhr = new XMLHttpRequest();
// xhr.open('get', `http://www.selmerbot.com/getChannels/`, true);
// xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
// xhr.setRequestHeader('serverNumber', id);
// xhr.onloadend = (e) => {
//Channel Section
const channels = JSON . parse ( serverInfo . channels ) ;
const roles = JSON . parse ( serverInfo . roles ) ;
// console.log(channels.text);
// window.localStorage.setItem('channels', (xhr.response));
for ( let i = 0 ; i < channels . text . length ; i ++ ) {
var channel = channels . text [ i ] ;
if ( channel . name && channel . id ) {
var optlog = document . createElement ( 'option' ) ;
optlog . value = channel . id ;
optlog . innerHTML = channel . name ;
//I need two because if I try to append the same one, it only appends to one dorpdown
var optwelcome = document . createElement ( 'option' ) ;
optwelcome . value = channel . id ;
optwelcome . innerHTML = channel . name ;
var optann = document . createElement ( 'option' ) ;
optann . value = channel . id ;
optann . innerHTML = channel . name ;
if ( serverSettings . WELCOME . welcomechannel == optwelcome . value ) {
optwelcome . setAttribute ( 'selected' , '' ) ;
}
if ( serverSettings . LOG . logchannel == optlog . value ) {
optlog . setAttribute ( 'selected' , '' ) ;
// optlog.selected = serverSettings.LOG.logchannel;
}
if ( serverSettings . announcement . channel == optann . value ) {
optann . setAttribute ( 'selected' , '' ) ;
}
document . getElementById ( 'logchanneldropdown' ) . appendChild ( optlog ) ;
document . getElementById ( 'welcomechanneldropdown' ) . appendChild ( optwelcome ) ;
document . getElementById ( 'achanneldropdown' ) . appendChild ( optann ) ;
2022-08-12 14:18:33 -07:00
}
2022-08-16 14:15:12 -07:00
}
const ard = document . getElementById ( 'aroledropdown' ) ;
roles . forEach ( ( role ) => {
var opt = document . createElement ( 'option' ) ;
opt . value = role . Id ;
opt . innerHTML = role . name ;
// opt.style += `background-color: ${role.color + '33'};`;
2022-08-12 14:18:33 -07:00
2022-08-16 14:15:12 -07:00
if ( role . color == '#000000' ) {
opt . style = 'color: white' ;
}
else {
opt . style = ` color: ${ role . color } ; background-color: ${ role . color + '33' } ; ` ;
}
2022-07-31 14:24:02 +03:00
2022-08-16 14:15:12 -07:00
if ( serverSettings . announcement . role == role . Id ) {
opt . setAttribute ( 'selected' , '' ) ;
}
ard . appendChild ( opt ) ;
} ) ;
// document.getElementById('body').classList.replace('hide', 'show');
//Welcome section
let wc = serverSettings . WELCOME . welcomechannel || '' ;
let wm = serverSettings . WELCOME . welcomemessage || '' ;
// document.getElementById('wc').setAttribute('value', wc);
document . getElementById ( 'wm' ) . setAttribute ( 'value' , wm ) ;
//Logging section ,"LOG":{"_id":"LOG","keepLogs":false,"logchannel":null,"severity":0}}
let kl = serverSettings . LOG . keepLogs || false ;
let lc = serverSettings . LOG . logchannel || '' ;
let ls = serverSettings . LOG . severity || 0 ;
document . getElementById ( 'kl' ) . checked = kl ;
// document.getElementById('lc').setAttribute('value', lc);
// document.getElementById('ls').children[ls].checked = true; //Doesn't work
// }
// xhr.send();
//#region Calendar
if ( xhrverify . response == "Unauthorized" ) {
document . getElementById ( "calForm" ) . style . display = "none" ;
document . getElementById ( "unauth" ) . style . display = "block" ;
return ;
} else if ( xhrverify . response == 'Internal Server Error' ) {
alert ( "Uh oh, an Internal Server Error has occured!\nPlease try again!" ) ;
return window . location . href = "index.html" ;
2022-08-12 14:18:33 -07:00
}
2022-08-12 20:01:29 -07:00
2022-08-16 14:15:12 -07:00
var xhr2 = new XMLHttpRequest ( ) ;
xhr2 . open ( 'get' , 'http://www.selmerbot.com/getCal/' , true ) ;
xhr2 . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded; charset=UTF-8' ) ;
2022-08-12 10:29:57 -07:00
2022-08-16 14:15:12 -07:00
xhr2 . setRequestHeader ( 'guildId' , id ) ;
2022-08-12 10:29:57 -07:00
2022-08-16 14:15:12 -07:00
xhr2 . onloadend = ( e ) => {
const calList = new Map ( ) ;
2022-08-12 10:29:57 -07:00
2022-08-16 14:15:12 -07:00
const res = JSON . parse ( xhr2 . response ) ; console . log ( res , typeof res ) ;
const times = res [ 0 ] ;
const monthNames = [ "January" , "February" , "March" , "April" , "May" , "June" , "July" , "August" , "September" , "October" , "November" , "December" ] ;
document . getElementById ( 'monthName' ) . innerText = ` Editing Reminders for the Month of ${ monthNames [ ( new Date ( ) ) . getMonth ( ) ] } ` ;
2022-08-12 10:29:57 -07:00
2022-08-16 14:15:12 -07:00
times . forEach ( ( time , ind ) => {
const fullDate = new Date ( Number ( time ) ) ;
const month = fullDate . getMonth ( ) ;
const day = fullDate . getDate ( ) ;
2022-08-12 10:29:57 -07:00
2022-08-16 14:15:12 -07:00
//Make sure it's the right month (old ones should be removed, this is just a catch)
if ( month == ( new Date ( ) ) . getMonth ( ) ) {
if ( calList . has ( day ) ) {
var temp = calList . get ( day ) ;
temp . push ( res [ 1 ] [ ind ] ) ;
calList . set ( day , temp ) ;
} else {
calList . set ( day , [ res [ 1 ] [ ind ] ] ) ;
}
2022-08-12 14:18:33 -07:00
}
2022-08-16 14:15:12 -07:00
} ) ;
2022-08-12 10:29:57 -07:00
2022-08-16 14:15:12 -07:00
calSetup ( calList ) ;
}
2022-08-12 14:18:33 -07:00
2022-08-16 14:15:12 -07:00
xhr2 . send ( ) ;
2022-08-12 20:01:29 -07:00
2022-08-16 14:15:12 -07:00
//#endregion
}
2022-08-12 10:29:57 -07:00
2022-08-16 14:15:12 -07:00
xhrverify . send ( ) ;
} ) ;
2022-07-24 08:49:29 +03:00
}
function logout ( ) {
2022-08-12 20:01:29 -07:00
var xhr = new XMLHttpRequest ( ) ;
xhr . open ( 'post' , 'http://www.selmerbot.com/logout/' , true ) ;
xhr . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded; charset=UTF-8' ) ;
xhr . setRequestHeader ( 'sessionid' , window . localStorage . getItem ( 'sessionId' ) ) ;
2022-08-16 14:15:12 -07:00
xhr . onloadend = ( e ) => {
window . localStorage . clear ( ) ;
window . sessionStorage . clear ( ) ;
window . location . href = 'index.html' ;
}
2022-08-12 20:01:29 -07:00
xhr . send ( ) ;
2022-07-24 08:49:29 +03:00
}
< / script >
< script >
function loadWelcomePage ( ) {
document . getElementById ( 'welcome' ) . classList . replace ( 'hide' , 'show' ) ;
}
function loadLoggingPage ( ) {
document . getElementById ( 'log' ) . classList . replace ( 'hide' , 'show' ) ;
}
function divChange ( c1 ) {
// document.getElementById("mainDropdown").classList.toggle("show");
var divchildren = document . getElementById ( 'inputs' ) . children ;
//Hide the divs we don't need
for ( let i = 0 ; i < divchildren . length ; i ++ ) {
var d2 = document . getElementById ( divchildren [ i ] . id ) ;
if ( ! d2 . classList . contains ( 'hide' ) ) { d2 . classList . add ( 'hide' ) ; }
}
//Show the div we want
var d1 = document . getElementById ( c1 ) ;
d1 . classList . toggle ( "hide" ) ;
}
function sendData ( event , inp ) {
event . preventDefault ( ) ;
//Change saving status
var b = document . getElementById ( 'savstat' ) ;
b . classList . replace ( 'saved' , 'saving' ) ;
b . innerText = 'SAVING' ;
2022-08-16 14:15:12 -07:00
const sessionInfoPromise = getSessionData ( ) ;
sessionInfoPromise . then ( ( sessionInfo ) => {
var serverInfo = JSON . parse ( sessionInfo . currentServer ) ;
// var serverInfo = JSON.parse(window.sessionStorage.getItem('serverInfo'));
var serverSettings = JSON . parse ( serverInfo . serverSettings ) ;
if ( inp . inp == 'logs' ) {
const ls = document . getElementsByName ( 'ls' ) ;
var sevname = '' ;
for ( i in ls ) {
if ( ls [ i ] . checked ) { sevname = ls [ i ] . id . substring ( 3 ) ; }
}
2022-07-24 08:49:29 +03:00
2022-08-16 14:15:12 -07:00
const sevlist = [ 'none' , 'low' , 'meduim' , 'high' ]
serverSettings . LOG . severity = sevlist . indexOf ( sevname ) ;
serverSettings . LOG . logchannel = document . getElementById ( 'logchanneldropdown' ) . value || null ;
2022-07-24 08:49:29 +03:00
2022-08-16 14:15:12 -07:00
let kl = false ;
if ( document . getElementById ( 'kl' ) . checked ) {
kl = true ;
}
serverSettings . LOG . keepLogs = kl ;
} else if ( inp . inp == 'announcement' ) {
serverSettings . announcement . channel = document . getElementById ( 'achanneldropdown' ) . value || null ;
serverSettings . announcement . role = document . getElementById ( 'aroledropdown' ) . value || null ;
console . log ( serverSettings . announcement ) ;
} else {
serverSettings . WELCOME . welcomechannel = document . getElementById ( 'welcomechanneldropdown' ) . value || null ;
serverSettings . WELCOME . welcomemessage = document . getElementById ( 'wm' ) . value || null ;
2022-07-24 08:49:29 +03:00
}
2022-08-16 14:15:12 -07:00
//Send the data to the server
var xhr = new XMLHttpRequest ( ) ;
xhr . open ( 'post' , 'http://www.selmerbot.com/sendData/' , true ) ;
xhr . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded; charset=UTF-8' ) ;
xhr . setRequestHeader ( 'serverSettings' , JSON . stringify ( serverSettings ) ) ;
2022-07-24 08:49:29 +03:00
2022-08-16 14:15:12 -07:00
xhr . onloadend = ( e ) => {
if ( xhr . response == 'DONE' ) {
//Change the current server data
var xhrs = new XMLHttpRequest ( ) ;
xhrs . open ( 'post' , 'http://www.selmerbot.com/setCurrentServer/' , true ) ;
xhrs . setRequestHeader ( 'Content-Type' , 'application/x-www-form-urlencoded; charset=UTF-8' ) ;
xhrs . setRequestHeader ( 'serverNumber' , serverInfo . Id ) ;
xhrs . setRequestHeader ( 'sessionid' , window . localStorage . getItem ( "sessionId" ) ) ;
xhrs . onloadend = ( e ) => {
if ( xhrs . response != 'OK' ) { alert ( "Uh Oh! There's been a problem!\nError Code: " + xhrs . response ) ; }
b . classList . replace ( 'saving' , 'saved' ) ;
b . innerText = 'SAVED' ;
window . sessionStorage . setItem ( 'serverInfo' , JSON . stringify ( serverSettings ) ) ;
window . location . reload ( ) ;
}
xhrs . send ( ) ;
} else {
b . classList . replace ( 'saving' , 'failed' ) ;
b . innerText = 'FAILED' ;
}
2022-07-24 08:49:29 +03:00
}
2022-08-16 14:15:12 -07:00
xhr . send ( JSON . stringify ( serverSettings ) ) ;
} ) ;
2022-07-24 08:49:29 +03:00
}
< / script >
< / head >
2022-07-27 11:28:50 +03:00
< body >
< nav class = "navbar navbar-expand-sm navbar-fixed-top" >
< div class = "container-fluid mx-auto" >
< a class = "navbar-brand" href = "index.html" >
< img src = "https://github.com/ION606/selmer-bot-website/blob/main/assets/Selmer-icon.png?raw=true" alt = "Selmer Icon" style = "width: 50px;" >
< / a >
< ul class = "navbar-nav" >
< li class = "nav-item" >
< a href = "myGuilds.html" id = "guildslink" class = "nav-link" > < i class = "fa-solid fa-server" alt = "Servers" style = "scale: 2; color: rgb(11, 189, 189);" > < / i > < / a >
< / li >
2022-08-12 10:29:57 -07:00
< li class = "nav-item" >
< a href = "calendar.html" id = "callink" class = "nav-link" > < i class = "fa-solid fa-calendar" alt = "Calendar" style = "scale: 2; color: lightgrey;" > < / i > < / a >
< / li >
2022-07-27 11:28:50 +03:00
< li class = "nav-item" >
< a href = "https://github.com/ION606/selmerBot/wiki" target = "_blank" class = "nav-link" > < i class = "fa-solid fa-book" style = "scale: 2; color: white;" alt = "WIKI" > < / i > < / a >
< / li >
< li class = "nav-item" >
2022-09-14 08:34:38 -04:00
< a href = "premium.html" class = "nav-link" > < i class = "fa-solid fa-crown" style = "scale: 2; color: gold;" alt = "PREMIUM" > < / i > < / a >
2022-07-27 11:28:50 +03:00
< / li >
2022-09-14 08:34:38 -04:00
< li class = "nav-item" >
< a href = "team" class = "nav-link" > < i class = "fa-solid fa-user-gear" style = "scale: 2; color: rgb(12, 216, 5);" alt = "AUTHOR" > < / i > < / a >
< / li >
2022-07-27 11:28:50 +03:00
< / ul >
<!-- <button type="button" class="btn btn - primary" data - bs - toggle="tooltip" title="Hooray!">Hover over me!</button> -->
< div class = "container" style = "font-family: 'Rajdhani', sans-serif; color: white;" > < h1 > Selmer Bot Web Dashboard< / h1 > < / div >
< span class = "ms-auto" style = "margin-right: 1%;" >
2022-08-12 10:29:57 -07:00
< button onclick = "logout()" id = "logoutbtn" class = "logoutbtn" > < i class = "fa-solid fa-arrow-right-from-bracket" alt = "Log Out" > < / i > < / button >
2022-07-24 08:49:29 +03:00
< / span >
< / div >
2022-07-27 11:28:50 +03:00
< / nav >
2022-07-24 08:49:29 +03:00
< div class = "statusdiv" >
2022-07-27 11:28:50 +03:00
< h2 style = "color: white; margin-bottom: 10px; margin-top: 10px;" > STATUS< / h2 >
2022-07-24 08:49:29 +03:00
< div id = "savstat" class = "box saved" > SAVED< / div >
< / div >
< div class = "sidebar" >
< div id = "buttons" class = "buttonsmainbar" >
< button onclick = "divChange('welcome')" class = "btnside" > Welcome< / button >
< button onclick = "divChange('log')" class = "btnside" > Logging< / button >
2022-08-12 10:29:57 -07:00
< button onclick = "divChange('cal')" class = "btnside" > Calendar< / button >
2022-07-24 08:49:29 +03:00
< / div >
< / div >
2022-07-31 14:02:17 +03:00
2022-07-24 08:49:29 +03:00
<!-- EVERYTHING NOT SIDEBAR -->
< div style = "margin-left:15%" >
< div id = "inputs" >
< div id = "welcome" , class = "hide wc" style = "margin-top: 20px;" >
2022-07-31 14:02:17 +03:00
< button class = "helpbtn" onclick = "alert('Use {sn} to insert the server name, {un} to insert the user name, and {ut} to insert the user tag\nExample: Welcome to {sn} Sir {un}#{ut}')" > < img src = "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.downloadclipart.net%2Flarge%2F45627-icon-with-question-mark-clipart.png&f=1&nofb=1" style = "width: 50px; border-radius: 50%; border-style: solid;" > < / button >
2022-07-24 08:49:29 +03:00
< form >
< label for = "wc" > Welcome Channel Name:< / label >
2022-07-31 14:02:17 +03:00
2022-07-27 16:15:40 +03:00
< select id = "welcomechanneldropdown" class = "form-select mb-5" aria-label = "Default select example" >
< option selected = "" > < / option >
< / select >
2022-07-24 08:49:29 +03:00
< label for = "wm" > Welcome Message:< / label >
< input type = "text" id = "wm" name = "wm" > < br > < br >
< input type = "submit" value = "Submit" , class = "submitButton" onclick = "sendData(event, { 'inp': 'welcome' })" >
< / form >
< / div >
2022-07-31 14:02:17 +03:00
2022-07-24 08:49:29 +03:00
< div id = "log" , class = "hide lg" >
2022-07-31 14:02:17 +03:00
< button class = "helpbtn" onclick = "alert('When setting the log severity, setting the tier will also include all higher tiers\nFor example, using !setup log_severity none will log things from every severity')" > < img src = "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.downloadclipart.net%2Flarge%2F45627-icon-with-question-mark-clipart.png&f=1&nofb=1" style = "width: 50px; border-radius: 50%; border-style: solid;" > < / button >
2022-07-24 08:49:29 +03:00
< form >
< label for = "kl" > Keep Logs?< / label >
< input type = "checkbox" id = "kl" name = "kl" > < br > < br >
2022-07-27 16:15:40 +03:00
< label class = "ps-1" for = "lc" > Log Channel Name:< / label >
2022-07-27 15:34:38 +03:00
< select id = "logchanneldropdown" class = "form-select mb-5" aria-label = "Default select example" >
< option selected = "" > < / option >
< / select >
2022-07-27 11:28:50 +03:00
< div id = "sevradio" >
< p style = "margin-bottom: 0px; text-underline-offset: 2px;" > < u > Log Severity< / u > < / p >
< label for = "ls-none" style = "margin-top: 0px;" > None< / label >
< input type = "radio" id = "ls-none" name = "ls" > < br >
< label for = "ls-low" > Low< / label >
< input type = "radio" id = "ls-low" name = "ls" > < br >
< label for = "ls-meduim" > Medium< / label >
< input type = "radio" id = "ls-meduim" name = "ls" > < br >
< label for = "ls-high" > High< / label >
< input type = "radio" id = "ls-high" name = "ls" > < br > < br >
< / div >
2022-07-24 08:49:29 +03:00
< input type = "submit" value = "Submit" , class = "submitButton" onclick = "sendData(event, { 'inp': 'logs' })" >
< / form >
< / div >
2022-08-12 10:29:57 -07:00
< div id = "cal" , class = "hide wc" style = "margin-top: 20px;" >
2022-08-12 20:01:29 -07:00
< div id = "unauth" class = "text-center" style = "display: none;" >
2022-08-12 14:18:33 -07:00
< h1 style = "margin-bottom: 20px;" > You have to be a premium subscriber to use this feature!< / h1 >
< h3 style = "margin-bottom: 50px;" > vvv GET PREMIUM NOW vvv< / h3 >
< a href = "premium.html" > < i class = "fa-solid fa-crown" style = "scale: 4; color: gold;" alt = "PREMIUM" > < / i > < / a >
< / div >
2022-08-12 10:29:57 -07:00
< h1 id = "monthName" , style = "text-align: center; margin-top: 50px; margin-bottom: 25px;" > < / h1 >
< form >
< table id = "spaceId" style = "background-color: lightgrey;"
cellspacing = "15" cellpadding = "15" class = "mx-auto" >
<!-- The tr tag is used to enter
rows in the table -->
<!-- It is used to give the heading to the
table. We can give the heading to the
top and bottom of the table -->
< caption align = "top" >
<!-- Here we have used the attribute
that is style and we have colored
the sentence to make it better
depending on the web page -->
< / caption >
<!-- Here th stands for the heading of the
table that comes in the first row -->
<!-- The text in this table header tag will
appear as bold and is center aligned -->
< thead >
2022-08-12 14:18:33 -07:00
< tr id = "calForm" >
2022-08-12 10:29:57 -07:00
<!-- Here we have applied inline style
to make it more attractive -->
< th style = "color: white; background: purple;" >
Sun< / th >
< th style = "color: white; background: purple;" >
Mon< / th >
< th style = "color: white; background: purple;" >
Tue< / th >
< th style = "color: white; background: purple;" >
Wed< / th >
< th style = "color: white; background: purple;" >
Thu< / th >
< th style = "color: white; background: purple;" >
Fri< / th >
< th style = "color: white; background: purple;" >
Sat< / th >
< / tr >
< / thead >
< tbody id = "calbody" style = "color: black;" >
< / tbody >
2022-08-16 14:15:12 -07:00
< / table > < br > < br >
< label for = "ardpd" style = "margin-top: 30px;" > Select your event ping role< / label >
< select id = "aroledropdown" name = "ardpd" class = "form-select mb-5 ardpd" aria-label = "Default select example" >
< option selected = "" > < / option >
< / select >
< label class = "ps-1" for = "acd" > Event Channel Name:< / label >
< select id = "achanneldropdown" name = "acd" class = "form-select mb-5" >
< option selected = "" > < / option >
< / select >
< input type = "submit" value = "Submit" , class = "submitButton" onclick = "sendData(event, { 'inp': 'announcement' })" >
2022-08-12 10:29:57 -07:00
< / form >
< / div >
2022-07-31 14:02:17 +03:00
< / div >
2022-07-24 08:49:29 +03:00
< / div >
< / body >
< / html >