687 lines
40 KiB
Text
687 lines
40 KiB
Text
|
<!--
|
|||
|
=========================================================
|
|||
|
* Soft UI Dashboard - v1.0.3
|
|||
|
=========================================================
|
|||
|
|
|||
|
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
|
|||
|
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
|
|||
|
* Licensed under MIT (https://www.creative-tim.com/license)
|
|||
|
|
|||
|
* Coded by Creative Tim
|
|||
|
|
|||
|
=========================================================
|
|||
|
|
|||
|
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|||
|
-->
|
|||
|
<!DOCTYPE html>
|
|||
|
<html lang="en">
|
|||
|
|
|||
|
<head>
|
|||
|
<%- include('partials/preloader.ejs', {now: 'admin'}) %>
|
|||
|
<style>
|
|||
|
#backButton {
|
|||
|
display: inline-block;
|
|||
|
background-color: #FF9800;
|
|||
|
width: 50px;
|
|||
|
height: 50px;
|
|||
|
text-align: center;
|
|||
|
border-radius: 4px;
|
|||
|
position: fixed;
|
|||
|
bottom: 30px;
|
|||
|
right: 30px;
|
|||
|
transition: background-color .1s;
|
|||
|
z-index: 1000;
|
|||
|
}
|
|||
|
|
|||
|
#backButton::after {
|
|||
|
content: "\f077";
|
|||
|
font-family: FontAwesome;
|
|||
|
font-weight: normal;
|
|||
|
font-style: normal;
|
|||
|
font-size: 2em;
|
|||
|
line-height: 50px;
|
|||
|
color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
#backButton:hover {
|
|||
|
cursor: pointer;
|
|||
|
background-color: #333;
|
|||
|
}
|
|||
|
|
|||
|
#backButton:active {
|
|||
|
background-color: #555;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<%
|
|||
|
const icons = [
|
|||
|
"address-book",
|
|||
|
"address-card",
|
|||
|
"adjust",
|
|||
|
"air-freshener",
|
|||
|
"align-center",
|
|||
|
"align-left",
|
|||
|
"align-right",
|
|||
|
"ambulance",
|
|||
|
"angle-double-down",
|
|||
|
"angle-double-left",
|
|||
|
"angle-double-right",
|
|||
|
"angle-double-up",
|
|||
|
"angle-down",
|
|||
|
"angle-left",
|
|||
|
"angle-right",
|
|||
|
"angle-up",
|
|||
|
"archive",
|
|||
|
"arrow-alt-circle-down",
|
|||
|
"arrow-alt-circle-left",
|
|||
|
"arrow-alt-circle-right",
|
|||
|
"arrow-alt-circle-up",
|
|||
|
"arrow-down",
|
|||
|
"arrow-left",
|
|||
|
"arrow-right",
|
|||
|
"arrow-up",
|
|||
|
"arrows-alt",
|
|||
|
"arrows-alt-h",
|
|||
|
"arrows-alt-v",
|
|||
|
"assistive-listening-systems",
|
|||
|
"asterisk",
|
|||
|
"at",
|
|||
|
"atlas",
|
|||
|
"award",
|
|||
|
"backspace",
|
|||
|
"backward",
|
|||
|
"bahai",
|
|||
|
"ban",
|
|||
|
"band-aid",
|
|||
|
"bars",
|
|||
|
"battery-empty",
|
|||
|
"battery-full",
|
|||
|
"battery-half",
|
|||
|
"battery-quarter",
|
|||
|
"battery-three-quarters",
|
|||
|
"bed",
|
|||
|
"beer",
|
|||
|
"bell",
|
|||
|
"bell-slash",
|
|||
|
"birthday-cake",
|
|||
|
"bolt",
|
|||
|
"bomb",
|
|||
|
"bone",
|
|||
|
"book",
|
|||
|
"book-dead",
|
|||
|
"book-medical",
|
|||
|
"book-open",
|
|||
|
"bookmark",
|
|||
|
"border-all",
|
|||
|
"border-none",
|
|||
|
"border-style",
|
|||
|
"bowling-ball",
|
|||
|
"box",
|
|||
|
"box-open",
|
|||
|
"briefcase",
|
|||
|
"broadcast-tower",
|
|||
|
"bug",
|
|||
|
"building",
|
|||
|
"bullhorn",
|
|||
|
"calculator",
|
|||
|
"calendar",
|
|||
|
"calendar-alt",
|
|||
|
"calendar-check",
|
|||
|
"calendar-day",
|
|||
|
"calendar-minus",
|
|||
|
"calendar-plus",
|
|||
|
"calendar-times",
|
|||
|
"calendar-week",
|
|||
|
"camera",
|
|||
|
"caret-down",
|
|||
|
"caret-left",
|
|||
|
"caret-right",
|
|||
|
"caret-up",
|
|||
|
"certificate",
|
|||
|
"chair",
|
|||
|
"chalkboard",
|
|||
|
"charging-station",
|
|||
|
"chart-bar",
|
|||
|
"chart-line",
|
|||
|
"chart-pie",
|
|||
|
"check",
|
|||
|
"check-circle",
|
|||
|
"check-square",
|
|||
|
"circle",
|
|||
|
"circle-notch",
|
|||
|
"clipboard",
|
|||
|
"clock",
|
|||
|
"clone",
|
|||
|
"cloud",
|
|||
|
"cloud-download-alt",
|
|||
|
"cloud-meatball",
|
|||
|
"cloud-moon",
|
|||
|
"cloud-moon-rain",
|
|||
|
"cloud-rain",
|
|||
|
"cloud-showers-heavy",
|
|||
|
"cloud-sun",
|
|||
|
"cloud-sun-rain",
|
|||
|
"cloud-upload-alt",
|
|||
|
"code",
|
|||
|
"code-branch",
|
|||
|
"cog",
|
|||
|
"cogs",
|
|||
|
"columns",
|
|||
|
"comment",
|
|||
|
"comment-alt",
|
|||
|
"comment-dollar",
|
|||
|
"comment-dots",
|
|||
|
"comment-medical",
|
|||
|
"comment-slash",
|
|||
|
"comments",
|
|||
|
"comments-dollar",
|
|||
|
"compact-disc",
|
|||
|
"compass",
|
|||
|
"compress-alt",
|
|||
|
"cookie",
|
|||
|
"cookie-bite",
|
|||
|
"copy",
|
|||
|
"credit-card",
|
|||
|
"crop",
|
|||
|
"crop-alt",
|
|||
|
"cut",
|
|||
|
"database",
|
|||
|
"desktop",
|
|||
|
"edit",
|
|||
|
"envelope",
|
|||
|
"envelope-open",
|
|||
|
"eraser",
|
|||
|
"ethernet",
|
|||
|
"exchange-alt",
|
|||
|
"exclamation",
|
|||
|
"exclamation-circle",
|
|||
|
"exclamation-triangle",
|
|||
|
"expand",
|
|||
|
"expand-alt",
|
|||
|
"external-link-alt",
|
|||
|
"eye",
|
|||
|
"eye-dropper",
|
|||
|
"eye-slash",
|
|||
|
"fan",
|
|||
|
"file",
|
|||
|
"file-alt",
|
|||
|
"file-archive",
|
|||
|
"file-audio",
|
|||
|
"file-code",
|
|||
|
"file-download",
|
|||
|
"fill",
|
|||
|
"fill-drip",
|
|||
|
"filter",
|
|||
|
"fingerprint",
|
|||
|
"fire",
|
|||
|
"fire-alt",
|
|||
|
"folder",
|
|||
|
"folder-open",
|
|||
|
"forward",
|
|||
|
"gamepad",
|
|||
|
"ghost",
|
|||
|
"gift",
|
|||
|
"gifts",
|
|||
|
"globe",
|
|||
|
"globe-africa",
|
|||
|
"globe-asia",
|
|||
|
"globe-europe",
|
|||
|
"headphones",
|
|||
|
"headphones-alt",
|
|||
|
"headset",
|
|||
|
"heart",
|
|||
|
"heart-broken",
|
|||
|
"heartbeat",
|
|||
|
"history",
|
|||
|
"home",
|
|||
|
"info",
|
|||
|
"keyboard",
|
|||
|
"layer-group",
|
|||
|
"list",
|
|||
|
"lock",
|
|||
|
"lock-open",
|
|||
|
"map-marker",
|
|||
|
"map-marker-alt",
|
|||
|
"microphone",
|
|||
|
"microphone-alt",
|
|||
|
"microphone-alt-slash",
|
|||
|
"minus",
|
|||
|
"mobile",
|
|||
|
"mobile-alt",
|
|||
|
"moon",
|
|||
|
"mouse",
|
|||
|
"mouse-pointer",
|
|||
|
"music",
|
|||
|
"network-wired",
|
|||
|
"neuter",
|
|||
|
"paperclip",
|
|||
|
"paste",
|
|||
|
"pause",
|
|||
|
"paw",
|
|||
|
"pen",
|
|||
|
"pencil-alt",
|
|||
|
"percent",
|
|||
|
"percentage",
|
|||
|
"phone",
|
|||
|
"phone-alt",
|
|||
|
"phone-slash",
|
|||
|
"phone-volume",
|
|||
|
"photo-video",
|
|||
|
"power-off",
|
|||
|
"question",
|
|||
|
"question-circle",
|
|||
|
"redo",
|
|||
|
"redo-alt",
|
|||
|
"reply",
|
|||
|
"robot",
|
|||
|
"rocket",
|
|||
|
"rss",
|
|||
|
"satellite-dish",
|
|||
|
"save",
|
|||
|
"search",
|
|||
|
"server",
|
|||
|
"shapes",
|
|||
|
"share",
|
|||
|
"share-alt",
|
|||
|
"shield-alt",
|
|||
|
"signal",
|
|||
|
"skull",
|
|||
|
"skull-crossbones",
|
|||
|
"sliders-h",
|
|||
|
"sort",
|
|||
|
"spinner",
|
|||
|
"times",
|
|||
|
"times-circle",
|
|||
|
"toggle-off",
|
|||
|
"toggle-on",
|
|||
|
"toolbox",
|
|||
|
"tools",
|
|||
|
"trash",
|
|||
|
"trash-alt",
|
|||
|
"tv",
|
|||
|
"undo",
|
|||
|
"undo-alt",
|
|||
|
"unlink",
|
|||
|
"unlock",
|
|||
|
"unlock-alt",
|
|||
|
"upload",
|
|||
|
"user",
|
|||
|
"user-alt",
|
|||
|
"volume-down",
|
|||
|
"volume-mute",
|
|||
|
"volume-off",
|
|||
|
"volume-up",
|
|||
|
"wifi",
|
|||
|
"wrench"
|
|||
|
]
|
|||
|
const otherIcons = [
|
|||
|
"youtube",
|
|||
|
"discord",
|
|||
|
"node",
|
|||
|
"apple",
|
|||
|
"sellsy",
|
|||
|
"app-store",
|
|||
|
"cloudflare",
|
|||
|
"dev",
|
|||
|
"github-alt",
|
|||
|
"gitlab",
|
|||
|
"google",
|
|||
|
"itunes-note",
|
|||
|
"node-js",
|
|||
|
"npm",
|
|||
|
"spotify",
|
|||
|
"usb",
|
|||
|
"windows"
|
|||
|
]
|
|||
|
%>
|
|||
|
<style>
|
|||
|
.input-group .form-control:focus {
|
|||
|
/* border: none; */
|
|||
|
border-right-color: rgba(0, 0, 0, 0) !important;
|
|||
|
border-left-color: rgba(0, 0, 0, 0) !important;
|
|||
|
border-left-color: rgba(0, 0, 0, 0) !important;
|
|||
|
border-right-color: rgba(0, 0, 0, 0) !important;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<%- themeConfig?.customHtml %>
|
|||
|
</head>
|
|||
|
|
|||
|
<body class="g-sidenav-show bg-gray-100" id="scroll">
|
|||
|
<%- include('partials/preload.ejs') %>
|
|||
|
<script>
|
|||
|
const maxUsed = <%- allFeedsUsed %>;
|
|||
|
</script>
|
|||
|
<%- include('partials/sidebar.ejs', {config: config, now:'admin'}) %>
|
|||
|
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
|
|||
|
<!-- Navbar -->
|
|||
|
<%- include('partials/navbar.ejs', {now:'admin'}) %>
|
|||
|
<!-- End Navbar -->
|
|||
|
<div class="container-fluid py-4" style="padding-bottom: 0px !important;">
|
|||
|
<%
|
|||
|
if(themeConfig?.admin?.pterodactyl?.enabled) { %>
|
|||
|
<div class="row">
|
|||
|
<div class="modal fade" id="modal-notification" tabindex="-1" role="dialog"
|
|||
|
aria-labelledby="modal-notification" aria-hidden="true">
|
|||
|
<div class="modal-dialog modal-danger modal-dialog-centered modal-" role="document">
|
|||
|
<div class="modal-content">
|
|||
|
<div class="modal-header">
|
|||
|
<h6 class="modal-title" id="modal-title-notification">Your attention is required</h6>
|
|||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close">
|
|||
|
<span aria-hidden="true">×</span>
|
|||
|
</button>
|
|||
|
</div>
|
|||
|
<div class="modal-body">
|
|||
|
<div class="py-3 text-center">
|
|||
|
<i class="ni ni-bell-55 ni-3x"></i>
|
|||
|
<h4 class="text-gradient text-danger mt-4">Warning</h4>
|
|||
|
<p>The maximum amount of feeds have been created.</p>
|
|||
|
<p>If you publish this feed, the oldest feed will be deleted!</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="modal-footer"
|
|||
|
style="display: flex; justify-content: center; align-items: center;">
|
|||
|
<button type="button" class="btn btn-danger" id="mfeedSubmit">Publish</button>
|
|||
|
<button type="button" class="btn btn-light text-black ml-auto" data-bs-dismiss="modal">
|
|||
|
Nevermind
|
|||
|
</button>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="col-12">
|
|||
|
<div class="card mb-4">
|
|||
|
<div class="card-header pb-0">
|
|||
|
<h6>Pterodactyl List</h6>
|
|||
|
</div>
|
|||
|
<div class="card-body px-0 pt-0 pb-2">
|
|||
|
<div class="table-responsive p-0">
|
|||
|
<table class="table align-items-center mb-0">
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
|
|||
|
Server
|
|||
|
</th>
|
|||
|
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7 ps-2">
|
|||
|
Info
|
|||
|
</th>
|
|||
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
|
|||
|
Status
|
|||
|
</th>
|
|||
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
|
|||
|
Controls
|
|||
|
</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody>
|
|||
|
<%
|
|||
|
sData.forEach(data => {
|
|||
|
%>
|
|||
|
<tr style="border-bottom: rgba(0,0,0,0); border-width: 1.3px 0px 0px 0px;">
|
|||
|
<td>
|
|||
|
<div class="d-flex px-2 py-1">
|
|||
|
<div>
|
|||
|
<img src="https://www.svgrepo.com/show/35777/server.svg"
|
|||
|
class="avatar avatar-sm me-3 invert-img"
|
|||
|
alt="user1">
|
|||
|
</div>
|
|||
|
<div class="d-flex flex-column justify-content-center">
|
|||
|
<h6 class="mb-0 text-sm"><%- data.name %></h6>
|
|||
|
<p class="text-xs text-secondary mb-0"><%- data.uuid %></p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</td>
|
|||
|
<td>
|
|||
|
<p class="text-xs font-weight-bold mb-0"><%- data.description %></p>
|
|||
|
<p class="text-xs text-secondary mb-0"><%- data.node %></p>
|
|||
|
</td>
|
|||
|
<td class="align-middle text-center text-sm">
|
|||
|
<%
|
|||
|
if(data.status === "running") { %>
|
|||
|
<span class="badge badge-sm bg-gradient-success">Online</span>
|
|||
|
<% } else if(data.status === "starting") { %>
|
|||
|
<span class="badge badge-sm bg-gradient-warning">Starting</span>
|
|||
|
<% } else if(data.status === "stopping") { %>
|
|||
|
<span class="badge badge-sm bg-gradient-warning">Stopping</span>
|
|||
|
<% } else { %>
|
|||
|
<span class="badge badge-sm bg-gradient-danger">Offline</span>
|
|||
|
<% } %>
|
|||
|
|
|||
|
</td>
|
|||
|
<td class="align-middle text-center text-sm">
|
|||
|
<%
|
|||
|
if(data.status === "running" || data.status === "starting") { %>
|
|||
|
<a href="#"
|
|||
|
onclick="controlServer('<%- data.uuid %>', 'stop');"><span
|
|||
|
class="badge badge-sm bg-gradient-warning">Stop</span></a>
|
|||
|
<a href="#" onclick="controlServer('<%- data.uuid %>', 'restart');"><span
|
|||
|
class="badge badge-sm bg-gradient-info">Restart</span></a>
|
|||
|
<a href="#"
|
|||
|
onclick="controlServer('<%- data.uuid %>', 'kill');"><span
|
|||
|
class="badge badge-sm bg-gradient-danger">Kill</span></a>
|
|||
|
<% } else if(data.status === "restarting") { %>
|
|||
|
<a href="#"
|
|||
|
onclick="controlServer('<%- data.uuid %>', 'stop');"><span
|
|||
|
class="badge badge-sm bg-gradient-warning">Stop</span></a>
|
|||
|
<a href="#"
|
|||
|
onclick="controlServer('<%- data.uuid %>', 'kill');"><span
|
|||
|
class="badge badge-sm bg-gradient-danger">Kill</span></a>
|
|||
|
<% } else if(data.status === "stopping") { %>
|
|||
|
<a href="#"
|
|||
|
onclick="controlServer('<%- data.uuid %>', 'kill');"><span
|
|||
|
class="badge badge-sm bg-gradient-danger">Kill</span></a>
|
|||
|
<% } else { %>
|
|||
|
<a href="#"
|
|||
|
onclick="controlServer('<%- data.uuid %>', 'start');"><span
|
|||
|
class="badge badge-sm bg-gradient-success">Start</span></a>
|
|||
|
</a>
|
|||
|
<% } %>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<%
|
|||
|
});
|
|||
|
%>
|
|||
|
<script>
|
|||
|
function controlServer(id, action) {
|
|||
|
window.location = `../control?action=${action}&uuid=${id}`;
|
|||
|
}
|
|||
|
</script>
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<br>
|
|||
|
<% } %>
|
|||
|
<% if (themeConfig.admin?.logs?.enabled) { %>
|
|||
|
<div class="card h-100">
|
|||
|
<div class="card-header pb-0 p-3">
|
|||
|
<h6 class="mb-0">Bot Logs</h6>
|
|||
|
</div>
|
|||
|
<div class="card-body p-3">
|
|||
|
<h6 class="text-uppercase text-body text-xs font-weight-bolder">Current Logs</h6>
|
|||
|
<form>
|
|||
|
<div class="form-group">
|
|||
|
<% if (ldata !== undefined) { %>
|
|||
|
<textarea disabled readonly class="form-control" id="botLogsText" rows="12"><%= ldata.map(x => x.description).join("\n")%></textarea>
|
|||
|
<% } else { %>
|
|||
|
<textarea disabled readonly class="form-control" id="botLogsText" rows="12">No logs found.</textarea>
|
|||
|
<% } %>
|
|||
|
</div>
|
|||
|
</form>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<br>
|
|||
|
<% } %>
|
|||
|
<div class="row">
|
|||
|
<div class="col-12 col-xl-6" style="margin-bottom: 20px;">
|
|||
|
<div class="card h-100">
|
|||
|
<div class="card-header pb-0 p-3">
|
|||
|
<h6 class="mb-0">Feed Builder</h6>
|
|||
|
</div>
|
|||
|
<div class="card-body p-3">
|
|||
|
<h6 class="text-uppercase text-body text-xs font-weight-bolder">Feed Icon</h6>
|
|||
|
<ul class="list-group">
|
|||
|
<li class="list-group-item border-0 px-0">
|
|||
|
<div class="form-check form-switch ps-0">
|
|||
|
<div class="input-group">
|
|||
|
<input class="form-control" list="iconList" id="iconSelect">
|
|||
|
<span class="btn btn-outline-dark mb-0 feed-builder-icon" type="button"
|
|||
|
style="border: 1px solid #d2d6da;">
|
|||
|
<i id="invalidIcon" class="fas fa-exclamation-triangle"
|
|||
|
style="color: red; font-size: 120%;"></i>
|
|||
|
<i id="validIcon" class="fas fa-check"
|
|||
|
style="color: greenyellow; font-size: 120%; display: none;"></i>
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<h6 class="text-uppercase text-body text-xs font-weight-bolder mt-4">Feed Description</h6>
|
|||
|
<ul class="list-group">
|
|||
|
<li class="list-group-item border-0 px-0">
|
|||
|
<div class="form-check form-switch ps-0">
|
|||
|
<div class="input-group">
|
|||
|
<input class="form-control" type="text" maxlength="128" id="feedDescription"
|
|||
|
placeholder="Feed Description">
|
|||
|
<span class="btn btn-outline-dark mb-0 feed-builder-icon" type="button"
|
|||
|
style="border: 1px solid #d2d6da;">
|
|||
|
<i id="invalidDesc" class="fas fa-exclamation-triangle" style="color: red; font-size: 120%;"></i>
|
|||
|
<i id="validDesc" class="fas fa-check"
|
|||
|
style="color: greenyellow; font-size: 120%; display: none;"></i>
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<h6 class="text-uppercase text-body text-xs font-weight-bolder mt-4">Feed Colour</h6>
|
|||
|
<ul class="list-group">
|
|||
|
<li class="list-group-item border-0 px-0">
|
|||
|
<div class="form-check form-switch ps-0">
|
|||
|
<select class="form-control" id="colorSelect">
|
|||
|
<option value="pink">Pink</option>
|
|||
|
<option value="red">Red</option>
|
|||
|
<option value="orange">Orange</option>
|
|||
|
<option value="green">Green</option>
|
|||
|
<option value="gray">Gray</option>
|
|||
|
<option value="blue">Blue</option>
|
|||
|
<option value="dark">Dark</option>
|
|||
|
</select>
|
|||
|
</div>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<br>
|
|||
|
<button id="feedSubmit" class="btn bg-gradient-primary mb-0" type="button">Submit</button>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="col-12 col-xl-6" style="margin-bottom: 20px;">
|
|||
|
<div class="card h-10" style="margin-bottom: 20px;">
|
|||
|
<div class="card-header pb-0 p-3">
|
|||
|
<h6 class="mb-0">Feed Preview</h6>
|
|||
|
</div>
|
|||
|
<div class="card-body p-3">
|
|||
|
<div>
|
|||
|
<div class="alert alert-primary text-white font-weight-bold" role="alert"
|
|||
|
style="display: flex; margin-top: 20px;" id="previewFeedColor">
|
|||
|
<div class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center gray-icon-bg"
|
|||
|
style="margin: auto 0px;">
|
|||
|
<i id="previewFeedIcon" class="fas fa-camera invert-img"
|
|||
|
style="font-size: 80%; color: black"></i>
|
|||
|
</div>
|
|||
|
<span id="previewFeedDescription" class="tagnamecolor"
|
|||
|
style="margin: auto 0px; overflow: hidden; text-overflow: ellipsis; color: white !important;">
|
|||
|
<div id="target"></div>
|
|||
|
</span>
|
|||
|
<span class="tagnamecolor-date"
|
|||
|
style="color:rgb(155, 148, 148); margin: auto 0px; font-size: 75%; flex: 1; text-align: right; white-space: nowrap;">
|
|||
|
Preview
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="card h-10">
|
|||
|
<div class="card-header pb-0 p-3">
|
|||
|
<h6 class="mb-0">Admin Controls</h6>
|
|||
|
<h7 style="text-align:center;">CHECK FOR UPDATES</h7>
|
|||
|
</div>
|
|||
|
<div class="card-body p-3">
|
|||
|
<div class="row">
|
|||
|
<div class="col-12"><a disabled href="#"
|
|||
|
onclick="window.location = '../control?action=update&type=live'"
|
|||
|
type="button" class="btn bg-gradient-info btn-lg w-100"><i
|
|||
|
class="fas fa-exclamation-circle" style="color: white !important;" ></i> LIVE</a>
|
|||
|
</div>
|
|||
|
<div class="col-12"><a href="#"
|
|||
|
onclick="window.location = '../control?action=update&type=npm'"
|
|||
|
type="button" class="btn bg-gradient-danger btn-lg w-100"><i
|
|||
|
class="fab fa-npm" style="color: white !important;"></i> NPM</a></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="col-lg-12 mb-lg-0 mb-4">
|
|||
|
<div class="card z-index-2">
|
|||
|
<div class="card-body p-3">
|
|||
|
<h6 class="ms-2 mt-3 mb-0" style="margin-top: 0px !important">Current Feeds</h6>
|
|||
|
<%- include('partials/feeds.ejs', {require, admin:true}) %>
|
|||
|
<div style="white-space: nowrap; overflow: hidden;">
|
|||
|
<datalist id="iconList">
|
|||
|
<%
|
|||
|
icons.forEach(async(icon) => { %>
|
|||
|
<option value="<%- icon %>">
|
|||
|
<% }); %>
|
|||
|
<%
|
|||
|
otherIcons.forEach(async(icon) => { %>
|
|||
|
<option value="<%- icon %>">
|
|||
|
<% }); %>
|
|||
|
|
|||
|
</datalist>
|
|||
|
<script>
|
|||
|
$(document).ready(function () {
|
|||
|
$('.js-example-basic-single').select2();
|
|||
|
});
|
|||
|
</script>
|
|||
|
<button type="button" class="btn btn-light text-black ml-auto"
|
|||
|
onclick="$('#bigIconsList').fadeToggle();">Show Icons
|
|||
|
</button>
|
|||
|
<%- include('partials/iconsList.ejs', {icons,otherIcons}) %>
|
|||
|
<a id="backButton" style="display: none;"></a>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div style="padding: 17px 0px">
|
|||
|
<%- include('partials/footer.ejs') %>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
</main>
|
|||
|
<script>var _0xe6b70 = _0x4d17; (function (_0x1a2dc5, _0x148537) { var _0x103ca3 = _0x4d17, _0xf225e4 = _0x1a2dc5(); while (!![]) { try { var _0x46963f = parseInt(_0x103ca3(0x229)) / 0x1 + parseInt(_0x103ca3(0x1ab)) / 0x2 * (parseInt(_0x103ca3(0x21b)) / 0x3) + parseInt(_0x103ca3(0x21c)) / 0x4 * (-parseInt(_0x103ca3(0x1be)) / 0x5) + parseInt(_0x103ca3(0x1d7)) / 0x6 * (parseInt(_0x103ca3(0x1eb)) / 0x7) + -parseInt(_0x103ca3(0x1fe)) / 0x8 * (parseInt(_0x103ca3(0x1ae)) / 0x9) + parseInt(_0x103ca3(0x1df)) / 0xa + -parseInt(_0x103ca3(0x208)) / 0xb * (-parseInt(_0x103ca3(0x1aa)) / 0xc); if (_0x46963f === _0x148537) break; else _0xf225e4['push'](_0xf225e4['shift']()); } catch (_0x35ec83) { _0xf225e4['push'](_0xf225e4['shift']()); } } }(_0x9d96, 0x1bf3f)); var _0x3166de = [_0xe6b70(0x210), _0xe6b70(0x202), _0xe6b70(0x1c3), _0xe6b70(0x1c5), 'sellsy', _0xe6b70(0x20d), _0xe6b70(0x1e1), _0xe6b70(0x22a), _0xe6b70(0x1a4), _0xe6b70(0x1d5), 'google', _0xe6b70(0x1d6) + 'e', _0xe6b70(0x1f5), _0xe6b70(0x20b), _0xe6b70(0x227), _0xe6b70(0x1e3), _0xe6b70(0x207), _0xe6b70(0x217), _0xe6b70(0x22b), _0xe6b70(0x201), 'orange', _0xe6b70(0x1c4), _0xe6b70(0x1d9), 'green', _0xe6b70(0x1f6), _0xe6b70(0x1ea), 'color', 'danger', _0xe6b70(0x1f3), _0xe6b70(0x1a7) + 'y', _0xe6b70(0x1ac), _0xe6b70(0x1fc), 'info', 'on', _0xe6b70(0x228) + 'ct', _0xe6b70(0x1ca) + 'ertychange' + _0xe6b70(0x205), _0xe6b70(0x215), _0xe6b70(0x1ba) + 't', _0xe6b70(0x1a9) + _0xe6b70(0x1c1), _0xe6b70(0x1d3) + 'e', '\x27]', _0xe6b70(0x1c7), _0xe6b70(0x214), 'length', _0xe6b70(0x20a), _0xe6b70(0x209) + 'on', 'show', _0xe6b70(0x1b2), _0xe6b70(0x1ad), _0xe6b70(0x1ed), _0xe6b70(0x1ec) + 't', 'includes', _0xe6b70(0x1b9), _0xe6b70(0x1e0) + _0xe6b70(0x1dd), _0xe6b70(0x1a6) + 'n', _0xe6b70(0x203) + 'tion\x20set', _0xe6b70(0x1c0) + 'sc', _0xe6b70(0x1f4), _0xe6b70(0x1ff) + _0xe6b70(0x221), 'querySelec' + _0xe6b70(0x1fd), '[value=\x22or' + 'ange\x22]', _0xe6b70(0x1f7) + _0xe6b70(0x1e5), _0xe6b70(0x1f9) + _0xe6b70(0x22f), _0xe6b70(0x1f9) + _0xe6b70(0x216), _0xe6b70(0x222) + _0xe6b70(0x1b3), _0xe6b70(0x1b4) + _0xe6b70(0x206), _0xe6b70(0x1e4) + _0xe6b70(0x1e2), _0xe6b70(0x1d1) + _0xe6b70(0x220), _0xe6b70(0x1f0) + _0xe6b70(0x1ee) + _0xe6b70(0x1cd) + '\x22]', _0xe6b70(0x204), _0xe6b70(0x1ce) + _0xe6b70(0x1dc), _0xe6b70(0x1f2), 'error', _0xe6b70(0x1a5) + _0xe6b70(0x218) + _0xe6b70(0x1c6) + _0xe6b70(0x1d0) + 'n\x20element?', _0xe6b70(0x21f) + _0xe6b70(0x21e) + _0xe6b70(0x1e6) + 'icon\x20eleme' + _0xe6b70(0x1de), 'colorSelec' + 't', _0xe6b70(0x21d) + _0xe6b70(0x1d4) + _0xe6b70(0x1c9) + _0xe6b70(0x1a8) + '?', 'iMidnight\x20' + _0xe6b70(0x21a) + _0xe6b70(0x225) + 'f\x20you\x20if\x20h' + 'e\x20saw\x20what' + _0xe6b70(0x224) + _0xe6b70(0x1d2) + _0xe6b70(0x1cb) + _0xe6b70(0x213), _0xe6b70(0x1e9), ':selected', _0xe6b70(0x1bf) + _0xe6b70(0x1f8) + _0xe6b70(0x200) + _0xe6b70(0x1b1) + '?', _0xe6b70(0x20f) + _0xe6b70(0x1bb), 'You\x20delete' + _0xe6b70(0x1d4) + _0xe6b70(0x20c) + _0xe6b70(0x211) + _0xe6b70(0x1af), _0xe6b70(0x21d) + 'd\x20the\x20feed' + '\x20descripti' + _0xe6b70(0x1fb), _0xe6b70(0x1b7) + 'escription' + _0xe6b70(0x223) + _0xe6b70(0x1e8), '', '\x20', 'It\x27s\x20empty' + '..\x20what\x27s\x20' + _0xe6b70(0x1bd), _0xe6b70(0x1cc) + 'go.', 'modal', _0xe6b70(0x1b8) + 'ification', _0xe6b70(0x22d), _0xe6b70(0x1cf), _0xe6b70(0x1fa) + 'it', 'class', '#previewFe' + _0xe6b70(0x219), _0xe6b70(0x1b6) + _0xe6b70(0x1b5), 'html', _0xe6b70(0x1b6) + _0xe6b70(0x22c) + _0xe6b70(0x1c8), _0xe6b70(0x1f1) + 'd1', _0xe6b70(0x1f1) + 'd2', _0xe6b70(0x1f1) + 'd3']; function _0x9d96() { var _0x407989 = ['[value=\x22bl', '\x20is\x20not\x20lo', '\x20you\x20just\x20', 'be\x20proud\x20o', 'feed=2', 'spotify', '#colorSele', '193712eeVaLn', 'dev', 'value', 'edDescript', 'location', '&descripti', 'ay\x22]', 'github-alt', 'Why\x20would\x20', 'descriptio', 'pinkprimar', 'lor\x20select', 'option[val', '5052MZJcik', '68rxwBdl', 'secondary', 'disabled', '3114INpHZK', 'tion?', 'on=delete&', '\x20available', '#validIcon', 'ue\x22]', '[value=\x22da', 'edIcon', '#previewFe', 'The\x20feed\x20d', '#modal-not', 'icon', '#iconSelec', 'ption', '/feed?a
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
$(window).scroll(async function () {
|
|||
|
if ($(window).scrollTop() > 300) {
|
|||
|
$("#backButton").slideDown();
|
|||
|
$("#themeButton").fadeOut();
|
|||
|
|
|||
|
} else {
|
|||
|
|
|||
|
$("#backButton").slideUp();
|
|||
|
|
|||
|
$("#themeButton").show();
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
$("#backButton").on('click', function (e) {
|
|||
|
$('html, body').animate({scrollTop: 0}, '250');
|
|||
|
});
|
|||
|
|
|||
|
</script>
|
|||
|
<%- include('partials/scripts.ejs', {now: "admin"}) %>
|
|||
|
</body>
|
|||
|
|
|||
|
</html>
|