Move postman and web inside src
This commit is contained in:
89
templates/admin_dashboard.html.tera
Normal file
89
templates/admin_dashboard.html.tera
Normal file
@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="EN">
|
||||
<head>
|
||||
<script src="/static/js/reporter.js" type="application/javascript"></script>
|
||||
|
||||
<meta name="description" content="The most powerful Discord Reminders Bot">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="yandex-verification" content="bb77b8681eb64a90"/>
|
||||
<meta name="google-site-verification" content="7h7UVTeEe0AOzHiH3cFtsqMULYGN-zCZdMT_YCkW1Ho"/>
|
||||
<!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src *; font-src fonts.gstatic.com 'self'"> -->
|
||||
|
||||
<!-- favicon -->
|
||||
<link rel="apple-touch-icon" sizes="180x180"
|
||||
href="/static/favicon/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32"
|
||||
href="/static/favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16"
|
||||
href="/static/favicon/favicon-16x16.png">
|
||||
<link rel="manifest" href="/static/favicon/site.webmanifest">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<title>Reminder Bot | Admin</title>
|
||||
|
||||
<!-- styles -->
|
||||
<link rel="stylesheet" href="/static/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="/static/css/fa.css">
|
||||
<link rel="stylesheet" href="/static/css/font.css">
|
||||
<link rel="stylesheet" href="/static/css/style.css">
|
||||
<link rel="stylesheet" href="/static/css/dtsel.css">
|
||||
|
||||
<script src="/static/js/luxon.min.js"></script>
|
||||
</head>
|
||||
<body style="width: 100%;">
|
||||
|
||||
<p class="title pageTitle">Admin dashboard</p>
|
||||
<section id="main">
|
||||
<div class="stat-row">
|
||||
<div class="stat-box" style="height: 400px;">
|
||||
<canvas id="schedule"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-row">
|
||||
<div class="stat-box figure">
|
||||
<p>Backlog</p>
|
||||
<p class="figure-num" id="backlog">?</p>
|
||||
</div>
|
||||
<div class="stat-box figure">
|
||||
<p>Reminders</p>
|
||||
<p class="figure-num" id="reminders">?</p>
|
||||
</div>
|
||||
<div class="stat-box figure">
|
||||
<p>Intervals</p>
|
||||
<p class="figure-num" id="intervals">?</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-row">
|
||||
<div class="stat-box" style="height: 400px;">
|
||||
<canvas id="scheduleLong"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-row">
|
||||
<div class="stat-box figure">
|
||||
<p>Last 31 days (success)</p>
|
||||
<p class="figure-num" id="historySent">?</p>
|
||||
</div>
|
||||
<div class="stat-box figure">
|
||||
<p>Last 31 days (failed)</p>
|
||||
<p class="figure-num" id="historyFailed">?</p>
|
||||
</div>
|
||||
<div class="stat-box figure">
|
||||
<p>Last 31 days (failure rate)</p>
|
||||
<p class="figure-num" id="failRate">?</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stat-row">
|
||||
<div class="stat-box" style="height: 400px;">
|
||||
<canvas id="historyLong"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<script src="/static/js/chart.js" defer></script>
|
||||
<script src="/static/js/chartjs-adapter-luxon.js" defer></script>
|
||||
<script src="/static/js/admin.js" defer></script>
|
||||
|
||||
</body>
|
||||
</html>
|
186
templates/base.html.tera
Normal file
186
templates/base.html.tera
Normal file
@ -0,0 +1,186 @@
|
||||
<!DOCTYPE html>
|
||||
{% block init %}
|
||||
{% endblock %}
|
||||
<html lang="EN">
|
||||
<head>
|
||||
<meta name="description" content="The most powerful Discord Reminders Bot">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="yandex-verification" content="bb77b8681eb64a90" />
|
||||
<meta name="google-site-verification" content="7h7UVTeEe0AOzHiH3cFtsqMULYGN-zCZdMT_YCkW1Ho" />
|
||||
|
||||
<!-- favicon -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/static/favicon/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/static/favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/static/favicon/favicon-16x16.png">
|
||||
<link rel="manifest" href="/static/site.webmanifest">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<title>Reminder Bot | {{ title }}</title>
|
||||
|
||||
<!-- styles -->
|
||||
<link rel="stylesheet" href="/static/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="/static/css/fa.css">
|
||||
<link rel="stylesheet" href="/static/css/font.css">
|
||||
<link rel="stylesheet" href="/static/css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
{% if flashed_message %}
|
||||
<div class="notification is-{{ flashed_grade }} flash-message is-active">
|
||||
<span class="icon"><i class="far fa-exclamation-circle"></i></span> {{ flashed_message }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div style="min-height: 100vh;">
|
||||
<nav class="navbar is-dark is-spaced is-size-4" role="navigation" aria-label="main navigation">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<figure class="image">
|
||||
<img src="/static/img/logo_flat.webp" alt="Reminder Bot Logo" class="is-rounded" style="width: auto;">
|
||||
</figure>
|
||||
</a>
|
||||
|
||||
<a role="button" class="navbar-burger is-right" aria-label="menu" aria-expanded="false" data-target="pageNavbar">
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
<a class="navbar-item" href="https://invite.reminder-bot.com">
|
||||
<i class="fas fa-plus"></i>
|
||||
</a>
|
||||
<a class="navbar-item" href="https://gitea.jellypro.xyz/jude">
|
||||
<i class="fab fa-git-square"></i>
|
||||
</a>
|
||||
<a class="navbar-item" href="https://discord.jellywx.com">
|
||||
<i class="fab fa-discord"></i>
|
||||
</a>
|
||||
<a class="navbar-item" href="/help">
|
||||
<i class="fas fa-book"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-end">
|
||||
<div class="navbar-item">
|
||||
<a class="button is-rounded is-light" href="/dashboard">
|
||||
<p>
|
||||
<span>Dashboard</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="navbar-menu is-hidden-desktop" id="pageNavbar">
|
||||
<a class="navbar-item" href="https://invite.reminder-bot.com">
|
||||
<i class="fas fa-plus"></i>
|
||||
</a>
|
||||
<a class="navbar-item" href="https://github.com/jellywx">
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
<a class="navbar-item" href="https://discord.jellywx.com">
|
||||
<i class="fab fa-discord"></i>
|
||||
</a>
|
||||
<a class="navbar-item" href="/help">
|
||||
<i class="fas fa-book"></i>
|
||||
</a>
|
||||
|
||||
<div class="navbar-item">
|
||||
<a href="/dashboard">
|
||||
<p>
|
||||
Dashboard <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
{% if not hide_title_block %}
|
||||
<section class="hero is-small is-dark">
|
||||
<div class="hero-body">
|
||||
<div class="">
|
||||
<h1 class="title is-1">{{ page_title }}</h1>
|
||||
<h2 class="subtitle is-3">{{ page_subtitle }}
|
||||
{% if page_emoji %}
|
||||
<span class="icon"><i class="fas {{ page_emoji }}"></i></span>
|
||||
{% endif %}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if show_invite %}
|
||||
<div class="hero-foot has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-success" href="https://invite.reminder-bot.com">
|
||||
<p class="is-size-4">
|
||||
<span>Add to your Server</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
{% elif show_contact %}
|
||||
<div class="hero-foot has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-primary" href="https://discord.jellywx.com">
|
||||
<p class="is-size-4">
|
||||
<span>Join Discord</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
{% elif show_login %}
|
||||
<div class="hero-foot has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-light" href="/login/discord">
|
||||
<p class="is-size-4">
|
||||
<span>Login with Discord</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 160">
|
||||
<path transform="scale(1, 0.5)" fill="#98dc9a" fill-opacity="1" d="M0,288L80,266.7C160,245,320,203,480,202.7C640,203,800,245,960,218.7C1120,192,1280,96,1360,48L1440,0L1440,0L1360,0C1280,0,1120,0,960,0C800,0,640,0,480,0C320,0,160,0,80,0L0,0Z"></path>
|
||||
<path transform="scale(1, 0.5)" fill="#363636" fill-opacity="1" d="M0,224L60,202.7C120,181,240,139,360,138.7C480,139,600,181,720,197.3C840,213,960,203,1080,176C1200,149,1320,107,1380,85.3L1440,64L1440,0L1380,0C1320,0,1200,0,1080,0C960,0,840,0,720,0C600,0,480,0,360,0C240,0,120,0,60,0L0,0Z">
|
||||
</path>
|
||||
</svg>
|
||||
{% endif %}
|
||||
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<footer class="footer">
|
||||
<div class="content has-text-centered">
|
||||
<p>
|
||||
<strong>Reminder Bot</strong>, created by <a href="https://github.com/JellyWX"><strong>JellyWX</strong></a>
|
||||
<br>
|
||||
<a href="/cookies">Cookies</a> | <a href="/privacy">Privacy Policy</a> | <a href="/terms">Terms of Service</a>
|
||||
<br>
|
||||
<a href="https://patreon.com/jellywx"><strong>Patreon</strong></a> | <a href="https://discord.jellywx.com"><strong>Discord</strong></a> | <a href="https://gitea.jellypro.xyz/jude"><strong>Gitea</strong></a>
|
||||
<br>
|
||||
or, <a href="mailto:jude@jellywx.com">Email me</a>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
|
||||
if ($navbarBurgers.length > 0) {
|
||||
$navbarBurgers.forEach( el => {
|
||||
el.addEventListener('click', () => {
|
||||
const target = el.dataset.target;
|
||||
const $target = document.getElementById(target);
|
||||
|
||||
el.classList.toggle('is-active');
|
||||
$target.classList.toggle('is-active');
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
61
templates/cookies.html.tera
Normal file
61
templates/cookies.html.tera
Normal file
@ -0,0 +1,61 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Cookies" %}
|
||||
|
||||
{% set page_title = "Cookies" %}
|
||||
{% set page_subtitle = "Data this website stores on your computer" %}
|
||||
{% set page_emoji = "fa-gingerbread-man" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">User data</h2>
|
||||
<p class="is-size-5 pl-6">
|
||||
This website uses some necessary cookies and session data to operate. None of this can be disabled, since
|
||||
it is all necessary for the site to function. <strong>However,</strong> it is worth mentioning that all of
|
||||
this data is <strong>first-party only</strong>, i.e we use no tracking scripts like Google Analytics, and
|
||||
no adverts are served on this site.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">Cookies</h2>
|
||||
<p class="is-size-5 pl-6">
|
||||
Cookies are data that are persistent between browser restarts. Cookies are read and written by the website
|
||||
running on your computer, not by our server.
|
||||
<br>
|
||||
Cookies store information on your preferences, including if <strong>you prefer AM/PM or 24 hour
|
||||
clock</strong>, if <strong>you have closed the cookie popup before</strong>, and <strong>what
|
||||
order you have the servers in on the dashboard</strong>.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">Session storage</h2>
|
||||
<p class="is-size-5 pl-6">
|
||||
Session data are data that is stored just for the active browser session. Session storage is read and
|
||||
written by our server and cannot be modified on your computer.
|
||||
<br>
|
||||
Session data stores an <strong>access token provided by Discord</strong>, used to retrieve information
|
||||
about your account. Also stored is an <strong>internal ID for use with our API</strong>.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">How can we trust you?</h2>
|
||||
<p class="is-size-5 pl-6">
|
||||
Feel free to audit this website. Go to our <a href="https://github.com/reminder-bot">GitHub</a> to get started, or just press <kbd>F12</kbd>
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
389
templates/dashboard.html.tera
Normal file
389
templates/dashboard.html.tera
Normal file
@ -0,0 +1,389 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="EN">
|
||||
<head>
|
||||
<script src="/static/js/reporter.js" type="application/javascript"></script>
|
||||
|
||||
<meta name="description" content="The most powerful Discord Reminders Bot">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="yandex-verification" content="bb77b8681eb64a90"/>
|
||||
<meta name="google-site-verification" content="7h7UVTeEe0AOzHiH3cFtsqMULYGN-zCZdMT_YCkW1Ho"/>
|
||||
<!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src *; font-src fonts.gstatic.com 'self'"> -->
|
||||
|
||||
<!-- favicon -->
|
||||
<link rel="apple-touch-icon" sizes="180x180"
|
||||
href="/static/favicon/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32"
|
||||
href="/static/favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16"
|
||||
href="/static/favicon/favicon-16x16.png">
|
||||
<link rel="manifest" href="/static/favicon/site.webmanifest">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<title>Reminder Bot | Dashboard</title>
|
||||
|
||||
<!-- styles -->
|
||||
<link rel="stylesheet" href="/static/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="/static/css/fa.css">
|
||||
<link rel="stylesheet" href="/static/css/font.css">
|
||||
<link rel="stylesheet" href="/static/css/style.css?v{{ version }}">
|
||||
<link rel="stylesheet" href="/static/css/dtsel.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tributejs/5.1.3/tribute.css" integrity="sha512-GnwBnXd+ZGO9CdP343MUr0jCcJXCr++JVtQRnllexRW2IDq4Zvrh/McTQjooAKnSUbXZ7wamp7AQSweTnfMVoA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
|
||||
<script src="/static/js/luxon.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/tributejs/5.1.3/tribute.min.js" integrity="sha512-KJYWC7RKz/Abtsu1QXd7VJ1IJua7P7GTpl3IKUqfa21Otg2opvRYmkui/CXBC6qeDYCNlQZ7c+7JfDXnKdILUA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar is-spaced is-size-4 is-hidden-desktop dashboard-navbar" role="navigation"
|
||||
aria-label="main navigation">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<figure class="image">
|
||||
<img width="28px" height="28px" src="/static/img/logo_nobg.webp" alt="Reminder Bot Logo">
|
||||
</figure>
|
||||
</a>
|
||||
|
||||
<p class="navbar-item pageTitle">
|
||||
</p>
|
||||
|
||||
<a role="button" class="dashboard-burger navbar-burger is-right" aria-label="menu" aria-expanded="false"
|
||||
data-target="mobileSidebar">
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div id="loader" class="is-hidden hero is-fullheight">
|
||||
<div class="hero-body">
|
||||
<div class="container has-text-centered">
|
||||
<p class="title">
|
||||
<i class="fas fa-cog fa-spin"></i>
|
||||
</p>
|
||||
<p class="subtitle">
|
||||
<strong>Loading...</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- dead image used to check which other images are dead -->
|
||||
<img src="" id="dead">
|
||||
|
||||
<div class="notification is-danger flash-message" id="errors">
|
||||
<span class="icon"><i class="far fa-exclamation-circle"></i></span> <span class="error-message"></span>
|
||||
</div>
|
||||
|
||||
<div class="notification is-success flash-message" id="success">
|
||||
<span class="icon"><i class="far fa-check"></i></span> <span class="success-message"></span>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="addImageModal">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card">
|
||||
<header class="modal-card-head">
|
||||
<label class="modal-card-title" for="urlInput">Enter Image URL</label>
|
||||
<button class="delete close-modal" aria-label="close"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<input class="input" id="urlInput" placeholder="Image URL...">
|
||||
</section>
|
||||
<footer class="modal-card-foot">
|
||||
<button class="button is-success" id="setImgUrl">Save</button>
|
||||
<button class="button close-modal">Cancel</button>
|
||||
</footer>
|
||||
</div>
|
||||
<button class="modal-close is-large close-modal" aria-label="close"></button>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="pickColorModal">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card">
|
||||
<header class="modal-card-head">
|
||||
<label class="modal-card-title" for="colorInput">Select Color</label>
|
||||
<button class="delete close-modal" aria-label="close"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<div class="colorpicker-container">
|
||||
<div id="colorpicker"></div>
|
||||
</div>
|
||||
<input class="input" id="colorInput">
|
||||
</section>
|
||||
<footer class="modal-card-foot">
|
||||
<button class="button is-success">Save</button>
|
||||
<button class="button close-modal">Cancel</button>
|
||||
</footer>
|
||||
</div>
|
||||
<button class="modal-close is-large close-modal" aria-label="close"></button>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="chooseTimezoneModal">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card">
|
||||
<header class="modal-card-head">
|
||||
<label class="modal-card-title" for="urlInput">Update Timezone <a href="/help/timezone"><span><i class="fa fa-question-circle"></i></span></a></label>
|
||||
<button class="delete close-modal" aria-label="close"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<p>
|
||||
Your configured timezone is: <strong><span class="set-timezone">%browsertimezone%</span></strong> (<span class="set-time">HH:mm</span>)
|
||||
<br>
|
||||
<br>
|
||||
Your browser timezone is: <strong><span class="browser-timezone">%browsertimezone%</span></strong> (<span class="browser-time">HH:mm</span>)
|
||||
<br>
|
||||
Your bot timezone is: <strong><span class="bot-timezone">%bottimezone%</span></strong> (<span class="bot-time">HH:mm</span>)
|
||||
</p>
|
||||
<br>
|
||||
<div class="has-text-centered">
|
||||
<button class="button is-success close-modal" id="set-browser-timezone">Use Browser Timezone</button>
|
||||
<button class="button is-link close-modal" id="set-bot-timezone">Use Bot Timezone</button>
|
||||
<button class="button is-warning close-modal" id="update-bot-timezone">Set Bot Timezone</button>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<button class="modal-close is-large close-modal" aria-label="close"></button>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="chooseTemplateModal">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card">
|
||||
<header class="modal-card-head">
|
||||
<label class="modal-card-title" for="urlInput">Load Template</label>
|
||||
<button class="delete close-modal" aria-label="close"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<div class="control has-icons-left">
|
||||
<div class="select is-fullwidth">
|
||||
<select id="templateSelect">
|
||||
</select>
|
||||
</div>
|
||||
<div class="icon is-small is-left">
|
||||
<i class="fas fa-file-spreadsheet"></i>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="has-text-centered">
|
||||
<button class="button is-success close-modal" id="load-template">Load Template</button>
|
||||
<button class="button is-danger" id="delete-template">Delete</button>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<button class="modal-close is-large close-modal" aria-label="close"></button>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="dataManagerModal">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card">
|
||||
<header class="modal-card-head">
|
||||
<label class="modal-card-title" for="urlInput">Import/Export Manager <a href="/help/iemanager"><span><i class="fa fa-question-circle"></i></span></a></label>
|
||||
<button class="delete close-modal" aria-label="close"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<div class="control">
|
||||
<div class="field">
|
||||
<label>
|
||||
<input type="radio" class="default-width" name="exportSelect" value="reminders" checked>
|
||||
Reminders
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="has-text-centered">
|
||||
<div style="color: red">
|
||||
Please first read the <a href="/help/iemanager">support page</a>
|
||||
</div>
|
||||
<button class="button is-success is-outlined" id="import-data">Import Data</button>
|
||||
<button class="button is-success" id="export-data">Export Data</button>
|
||||
</div>
|
||||
<a id="downloader" download="export.csv" class="is-hidden"></a>
|
||||
<input id="uploader" type="file" hidden></input>
|
||||
</section>
|
||||
</div>
|
||||
<button class="modal-close is-large close-modal" aria-label="close"></button>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="deleteReminderModal">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card">
|
||||
<header class="modal-card-head">
|
||||
<label class="modal-card-title">Delete Reminder</label>
|
||||
<button class="delete close-modal" aria-label="close"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<p>
|
||||
This reminder will be permanently deleted. Are you sure?
|
||||
</p>
|
||||
<br>
|
||||
<div class="has-text-centered">
|
||||
<button class="button is-danger" id="delete-reminder-confirm">Delete</button>
|
||||
<button class="button is-light close-modal">Cancel</button>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<button class="modal-close is-large close-modal" aria-label="close"></button>
|
||||
</div>
|
||||
|
||||
<div class="columns is-gapless dashboard-frame">
|
||||
<div class="column is-2 is-sidebar-menu dashboard-sidebar is-hidden-touch">
|
||||
<a href="/">
|
||||
<div class="brand">
|
||||
<img src="/static/img/logo_nobg.webp" alt="Reminder bot logo"
|
||||
width="52px" height="52px"
|
||||
class="dashboard-brand">
|
||||
</div>
|
||||
</a>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 160">
|
||||
<g transform="scale(1, 0.5)">
|
||||
<path fill="#8fb677" fill-opacity="1"
|
||||
d="M0,192L60,170.7C120,149,240,107,360,96C480,85,600,107,720,138.7C840,171,960,213,1080,197.3C1200,181,1320,107,1380,69.3L1440,32L1440,0L1380,0C1320,0,1200,0,1080,0C960,0,840,0,720,0C600,0,480,0,360,0C240,0,120,0,60,0L0,0Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
<aside class="menu">
|
||||
<p class="menu-label">
|
||||
Servers
|
||||
</p>
|
||||
<ul class="menu-list guildList">
|
||||
|
||||
</ul>
|
||||
<div class="aside-footer">
|
||||
<p class="menu-label">
|
||||
Options
|
||||
</p>
|
||||
<ul class="menu-list">
|
||||
<li>
|
||||
<a class="show-modal" data-modal="dataManagerModal">
|
||||
<span class="icon"><i class="fas fa-exchange"></i></span> Import/Export
|
||||
</a>
|
||||
<a class="show-modal" data-modal="chooseTimezoneModal">
|
||||
<span class="icon"><i class="fas fa-map-marked"></i></span> Timezone
|
||||
</a>
|
||||
<a href="/login/discord/logout">
|
||||
<span class="icon"><i class="fas fa-sign-out"></i></span> Log out
|
||||
</a>
|
||||
<a href="https://discord.jellywx.com" class="feedback">
|
||||
<span class="icon"><i class="fab fa-discord"></i></span> Give feedback
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-sidebar mobile-sidebar is-hidden-desktop" id="mobileSidebar">
|
||||
<a href="/">
|
||||
<div class="brand">
|
||||
<img src="/static/img/logo_nobg.webp" alt="Reminder bot logo"
|
||||
class="dashboard-brand">
|
||||
</div>
|
||||
</a>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 160">
|
||||
<g transform="scale(1, 0.5)">
|
||||
<path fill="#8fb677" fill-opacity="1"
|
||||
d="M0,192L60,170.7C120,149,240,107,360,96C480,85,600,107,720,138.7C840,171,960,213,1080,197.3C1200,181,1320,107,1380,69.3L1440,32L1440,0L1380,0C1320,0,1200,0,1080,0C960,0,840,0,720,0C600,0,480,0,360,0C240,0,120,0,60,0L0,0Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
<aside class="menu">
|
||||
<p class="menu-label">
|
||||
Servers
|
||||
</p>
|
||||
<ul class="menu-list guildList">
|
||||
|
||||
</ul>
|
||||
<div class="aside-footer">
|
||||
<p class="menu-label">
|
||||
Settings
|
||||
</p>
|
||||
<ul class="menu-list">
|
||||
<li>
|
||||
<a class="show-modal" data-modal="dataManagerModal">
|
||||
<span class="icon"><i class="fas fa-exchange"></i></span> Import/Export
|
||||
</a>
|
||||
<a class="show-modal" data-modal="chooseTimezoneModal">
|
||||
<span class="icon"><i class="fas fa-map-marked"></i></span> Timezone
|
||||
</a>
|
||||
<a href="/login/discord/logout">
|
||||
<span class="icon"><i class="fas fa-sign-out"></i></span> Log out
|
||||
</a>
|
||||
<a href="https://discord.jellywx.com/" class="feedback">
|
||||
<span class="icon"><i class="fab fa-discord"></i></span> Give feedback
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<!-- main content -->
|
||||
<div class="column is-main-content">
|
||||
<p class="title pageTitle"></p>
|
||||
<section id="welcome">
|
||||
<div class="has-text-centered">
|
||||
<p class="title">Welcome!</p>
|
||||
<p class="subtitle is-hidden-touch">Select an option from the side to get started</p>
|
||||
<p class="subtitle is-hidden-desktop">Press the <span class="icon"><i class="fal fa-bars"></i></span> to get started</p>
|
||||
</div>
|
||||
</section>
|
||||
<section id="reminders" class="is-hidden">
|
||||
{% include "reminder_dashboard/reminder_dashboard" %}
|
||||
</section>
|
||||
<section id="reminder-errors" class="is-hidden">
|
||||
{% include "reminder_dashboard/reminder_errors" %}
|
||||
</section>
|
||||
<section id="guild-error" class="is-hidden">
|
||||
{% include "reminder_dashboard/guild_error" %}
|
||||
</section>
|
||||
<section id="user-error" class="is-hidden">
|
||||
{% include "reminder_dashboard/user_error" %}
|
||||
</section>
|
||||
</div>
|
||||
<!-- /main content -->
|
||||
</div>
|
||||
|
||||
<template id="embedFieldTemplate">
|
||||
<div data-inlined="1" class="embed-field-box">
|
||||
<div class="is-flex">
|
||||
<label>
|
||||
<span class="is-sr-only">Field Title</span>
|
||||
<textarea class="discord-field-title field-input message-input autoresize"
|
||||
placeholder="Field Title..." rows="1"
|
||||
maxlength="256" name="embed_field_title[]"></textarea>
|
||||
</label>
|
||||
<button class="button is-small inline-btn">
|
||||
<span class="is-sr-only">Toggle field inline</span><i class="fas fa-arrows-h"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<label>
|
||||
<span class="is-sr-only">Field Value</span>
|
||||
<textarea
|
||||
class="discord-field-value field-input message-input autoresize"
|
||||
placeholder="Field Value..."
|
||||
maxlength="1024" name="embed_field_value[]"
|
||||
rows="1"></textarea>
|
||||
</label>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="guildListEntry">
|
||||
<li>
|
||||
<a class="switch-pane" data-pane="guild">
|
||||
<span class="icon"><i class="fas fa-map-pin"></i></span> <span class="guild-name">%guildname%</span>
|
||||
</a>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
<template id="guildReminder">
|
||||
{% include "reminder_dashboard/guild_reminder" %}
|
||||
</template>
|
||||
|
||||
<script src="/static/js/iro.js"></script>
|
||||
<script src="/static/js/dtsel.js"></script>
|
||||
|
||||
<script src="/static/js/interval.js?v{{ version }}"></script>
|
||||
<script src="/static/js/timezone.js?v{{ version }}" defer></script>
|
||||
<script src="/static/js/main.js?v{{ version }}" defer></script>
|
||||
|
||||
</body>
|
||||
</html>
|
10
templates/errors/401.html.tera
Normal file
10
templates/errors/401.html.tera
Normal file
@ -0,0 +1,10 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "401 Not Authorized" %}
|
||||
|
||||
{% set show_login = True %}
|
||||
|
||||
{% set page_title = "Not Authorized" %}
|
||||
{% set page_subtitle = "You must be logged in to access this page, if it exists." %}
|
||||
{% endblock %}
|
10
templates/errors/403.html.tera
Normal file
10
templates/errors/403.html.tera
Normal file
@ -0,0 +1,10 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "403 Forbidden" %}
|
||||
|
||||
{% set show_contact = True %}
|
||||
|
||||
{% set page_title = "Forbidden" %}
|
||||
{% set page_subtitle = "You currently cannot access this page, if it exists." %}
|
||||
{% endblock %}
|
10
templates/errors/404.html.tera
Normal file
10
templates/errors/404.html.tera
Normal file
@ -0,0 +1,10 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "404 File Not Found" %}
|
||||
|
||||
{% set show_contact = True %}
|
||||
|
||||
{% set page_title = "File Not Found" %}
|
||||
{% set page_subtitle = "This page does not exist." %}
|
||||
{% endblock %}
|
9
templates/errors/500.html.tera
Normal file
9
templates/errors/500.html.tera
Normal file
@ -0,0 +1,9 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "500 Internal Server Error" %}
|
||||
{% set show_contact = True %}
|
||||
|
||||
{% set page_title = "An Error Has Occurred" %}
|
||||
{% set page_subtitle = "A server error has occurred. Please retry, or ask in our Discord." %}
|
||||
{% endblock %}
|
161
templates/help.html.tera
Normal file
161
templates/help.html.tera
Normal file
@ -0,0 +1,161 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Support Articles" %}
|
||||
{% set page_subtitle = "Can't find what you're looking for? Join our Discord!" %}
|
||||
{% set show_contact = true %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="inset-content" >
|
||||
<div class="tile is-ancestor">
|
||||
<div class="tile is-parent">
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Timezone</p>
|
||||
<p class="subtitle">Learn how to configure your timezone</p>
|
||||
<div class="content has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-light" href="/help/timezone">
|
||||
<p class="is-size-4">
|
||||
Read <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<div class="tile is-parent">
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Create reminders</p>
|
||||
<p class="subtitle">Learn to create reminders for your server</p>
|
||||
<div class="content has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-light" href="/help/create_reminder">
|
||||
<p class="is-size-4">
|
||||
Read <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<div class="tile is-parent is-vertical">
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Delete reminders</p>
|
||||
<p class="subtitle">Learn to delete reminders that you've created</p>
|
||||
<div class="content has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-light" href="/help/delete_reminder">
|
||||
<p class="is-size-4">
|
||||
Read <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="tile is-ancestor">-->
|
||||
<!-- <div class="tile is-parent">-->
|
||||
<!-- <article class="tile is-child notification">-->
|
||||
<!-- <p class="title">Timers</p>-->
|
||||
<!-- <p class="subtitle">Learn to manage timers</p>-->
|
||||
<!-- <div class="content has-text-centered">-->
|
||||
<!-- <a class="button is-size-4 is-rounded is-light" href="/help/timers">-->
|
||||
<!-- <p class="is-size-4">-->
|
||||
<!-- Read <span class="icon"><i class="fas fa-chevron-right"></i></span>-->
|
||||
<!-- </p>-->
|
||||
<!-- </a>-->
|
||||
<!-- </div>-->
|
||||
<!-- </article>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="tile is-parent">-->
|
||||
<!-- <article class="tile is-child notification">-->
|
||||
<!-- <p class="title">Todo Lists</p>-->
|
||||
<!-- <p class="subtitle">Learn to manage various todo lists</p>-->
|
||||
<!-- <div class="content has-text-centered">-->
|
||||
<!-- <a class="button is-size-4 is-rounded is-light" href="/help/todo_lists">-->
|
||||
<!-- <p class="is-size-4">-->
|
||||
<!-- Read <span class="icon"><i class="fas fa-chevron-right"></i></span>-->
|
||||
<!-- </p>-->
|
||||
<!-- </a>-->
|
||||
<!-- </div>-->
|
||||
<!-- </article>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="tile is-parent is-vertical">-->
|
||||
<!-- <article class="tile is-child notification">-->
|
||||
<!-- <p class="title">Macros</p>-->
|
||||
<!-- <p class="subtitle">Learn how to create combination commands called macros, to suit advanced use cases</p>-->
|
||||
<!-- <div class="content has-text-centered">-->
|
||||
<!-- <a class="button is-size-4 is-rounded is-light" href="/help/macros">-->
|
||||
<!-- <p class="is-size-4">-->
|
||||
<!-- Read <span class="icon"><i class="fas fa-chevron-right"></i></span>-->
|
||||
<!-- </p>-->
|
||||
<!-- </a>-->
|
||||
<!-- </div>-->
|
||||
<!-- </article>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="tile is-ancestor">
|
||||
<div class="tile is-parent">
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Intervals</p>
|
||||
<p class="subtitle">Learn about repeating reminders</p>
|
||||
<div class="content has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-light" href="/help/intervals">
|
||||
<p class="is-size-4">
|
||||
Read <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<div class="tile is-parent is-vertical">
|
||||
{#
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Import/export</p>
|
||||
<p class="subtitle">Learn how to import and export data from the dashboard</p>
|
||||
<div class="content has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-light" href="/help/iemanager">
|
||||
<p class="is-size-4">
|
||||
Read <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
#}
|
||||
</div>
|
||||
<div class="tile is-parent">
|
||||
{#
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Dashboard</p>
|
||||
<p class="subtitle">Learn to use the interactive web dashboard</p>
|
||||
<div class="content has-text-centered">
|
||||
<a class="button is-size-4 is-rounded is-light" href="/help/dashboard">
|
||||
<p class="is-size-4">
|
||||
Read <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
#}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container has-text-centered">
|
||||
<p class="title">Need more help?</p>
|
||||
<p class="content">
|
||||
Please come and ask us!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero-foot has-text-centered">
|
||||
<a class="button is-size-6 is-rounded is-primary" href="https://discord.jellywx.com">
|
||||
<p class="is-size-6">
|
||||
<span>Join Discord</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
95
templates/index.html.tera
Normal file
95
templates/index.html.tera
Normal file
@ -0,0 +1,95 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Home" %}
|
||||
|
||||
{% set page_title = "Reminder Bot" %}
|
||||
{% set page_subtitle = "Powerful Discord Reminders" %}
|
||||
{% set page_emoji = "fa-hourglass-half" %}
|
||||
{% set show_invite = true %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="inset-content" >
|
||||
<div class="tile is-ancestor">
|
||||
<div class="tile is-parent">
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Slash-command Ready <svg aria-hidden="false" width="28" height="28" viewBox="0 0 24 24"><path fill="#777" fill-rule="evenodd" clip-rule="evenodd" d="M5 3C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3H5ZM16.8995 8.41419L15.4853 6.99998L7 15.4853L8.41421 16.8995L16.8995 8.41419Z"></path></svg></p>
|
||||
<p class="subtitle">Set reminders easily and quickly from anywhere.</p>
|
||||
<figure class="image">
|
||||
<img class="rounded-corners" src="/static/img/slash-commands.png" alt="Discord slash commands demonstration">
|
||||
</figure>
|
||||
</article>
|
||||
</div>
|
||||
<div class="tile is-parent">
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Advanced Options <span class="icon"><i class="fad fa-palette"></i></span></p>
|
||||
<p class="subtitle">Decorate your announcements with our web dashboard.</p>
|
||||
<figure class="image">
|
||||
<img class="rounded-corners" src="/static/img/tournament-demo.png" alt="Advanced options demonstration">
|
||||
</figure>
|
||||
</article>
|
||||
</div>
|
||||
<div class="tile is-parent is-vertical">
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Unlimited Reminders <span class="icon"><i class="far fa-infinity"></i></span></p>
|
||||
<p class="subtitle">Never forget a thing.</p>
|
||||
</article>
|
||||
<article class="tile is-child notification">
|
||||
<p class="title">Repeating Reminders <span class="icon"><i class="fas fa-repeat"></i></span></p>
|
||||
<p class="subtitle">Available to <a href="https://patreon.com/jellywx"><span class="patreon-color">Patreon <span class="icon"><i class="fab fa-patreon"></i></span></span></a> subscribers at <strong>$2/month</strong>.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="hero is-medium">
|
||||
<div class="hero-body">
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="container has-text-centered">
|
||||
<p class="title">Technically-minded?</p>
|
||||
<p class="content">
|
||||
Install the bot on your own computer
|
||||
</p>
|
||||
<a class="button is-size-6 is-rounded is-link" href="https://gitea.jellypro.xyz/jude/reminder-bot">
|
||||
<p class="is-size-6">
|
||||
<span>Install</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
<div class="container has-text-centered">
|
||||
<p class="title">Ready to go?</p>
|
||||
<p class="content">
|
||||
Add the bot to get started
|
||||
</p>
|
||||
<a class="button is-size-6 is-rounded is-success" href="https://invite.reminder-bot.com">
|
||||
<p class="is-size-6">
|
||||
<span>Add Now</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="column">
|
||||
<div class="container has-text-centered">
|
||||
<p class="title">Need support?</p>
|
||||
<p class="content">
|
||||
Check out our guides, or join our Discord
|
||||
</p>
|
||||
<a class="button is-size-6 is-rounded is-primary" href="/help">
|
||||
<p class="is-size-6">
|
||||
<span>Guides</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
78
templates/privacy.html.tera
Normal file
78
templates/privacy.html.tera
Normal file
@ -0,0 +1,78 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Privacy Policy" %}
|
||||
|
||||
{% set page_title = "Privacy Policy" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% set page_emoji = "" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">Who we are</h2>
|
||||
<p>
|
||||
Reminder Bot is operated solely by Jude Southworth. You can contact me by email at
|
||||
<a href="mailto:jude@jellywx.com">jude@jellywx.com</a>, or via private/public message on Discord at
|
||||
<a href="https://discord.jellywx.com">https://discord.jellywx.com</a>.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">What data we collect</h2>
|
||||
<p>
|
||||
Reminder Bot stores limited data necessary for the function of the bot. This data
|
||||
is your <strong>unique user ID</strong>, <strong>timezone</strong>, and <strong>direct message channel</strong>.
|
||||
<br>
|
||||
<br>
|
||||
Timezones are provided by the user or the user's browser.
|
||||
<br><br>
|
||||
Some additional information is collected by the dashboard for the purpose of debugging. This is your
|
||||
<strong>time spent on the website</strong>, <strong>current URL</strong>, <strong>unique user ID</strong>,
|
||||
<strong>unique session token</strong>, <strong>contents of any client errors</strong>.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">Why we collect this data</h2>
|
||||
<p>
|
||||
Unique user IDs are stored to <strong>keep track of who sets reminders</strong>. User timezones are
|
||||
stored to allow users to set reminders in their local timezone. Direct message channels are stored to
|
||||
allow the setting of reminders for your direct message channel.
|
||||
<br>
|
||||
Information collected by the dashboard is for resolving bugs.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">Who your data is shared with</h2>
|
||||
<p>
|
||||
Your data is also guarded by the privacy policies of <strong>MEGA</strong>, our backup provider, and
|
||||
<strong>Hetzner</strong>, our hosting provider.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">Accessing or removing your data</h2>
|
||||
<p>
|
||||
Your timezone can be removed with the command <strong>/timezone UTC</strong>. Other data can be removed
|
||||
on request. Please contact me.
|
||||
<br>
|
||||
<br>
|
||||
Reminders created in a guild/channel will be removed automatically when the bot is removed from the
|
||||
guild, the guild is deleted, or channel is deleted. Data is otherwise not removed automatically.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
17
templates/reminder_dashboard/guild_error.html.tera
Normal file
17
templates/reminder_dashboard/guild_error.html.tera
Normal file
@ -0,0 +1,17 @@
|
||||
<div class="hero is-fullheight">
|
||||
<div class="hero-body">
|
||||
<div class="container has-text-centered">
|
||||
<p class="title">
|
||||
We couldn't get this server's data
|
||||
</p>
|
||||
<p class="subtitle">
|
||||
Please check Reminder Bot is in the server, and has correct permissions.
|
||||
</p>
|
||||
<a class="button is-size-4 is-rounded is-success" href="https://invite.reminder-bot.com">
|
||||
<p class="is-size-4">
|
||||
<span>Add to Server</span> <span class="icon"><i class="fas fa-chevron-right"></i></span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
269
templates/reminder_dashboard/guild_reminder.html.tera
Normal file
269
templates/reminder_dashboard/guild_reminder.html.tera
Normal file
@ -0,0 +1,269 @@
|
||||
<div class="reminderContent {% if creating %}creator{% endif %}">
|
||||
<div class="columns is-mobile column reminder-topbar">
|
||||
{% if not creating %}
|
||||
<div class="invert-collapses channel-bar">
|
||||
#channel
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="name-bar">
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<label class="label sr-only">Reminder Name</label>
|
||||
<input class="input" type="text" name="name" placeholder="Reminder Name" maxlength="100">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hide-button-bar">
|
||||
<button class="button hide-box">
|
||||
<span class="is-sr-only">Hide reminder</span><i class="fas fa-chevron-down"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns reminder-settings">
|
||||
<div class="column discord-frame">
|
||||
<article class="media">
|
||||
<figure class="media-left">
|
||||
<p class="image is-32x32 customizable">
|
||||
<a>
|
||||
<img class="is-rounded avatar" src="/static/img/bg.webp" alt="Image for discord avatar">
|
||||
</a>
|
||||
</p>
|
||||
</figure>
|
||||
<div class="media-content">
|
||||
<div class="content">
|
||||
<div class="discord-message-header">
|
||||
<label class="is-sr-only">Username Override</label>
|
||||
<input class="discord-username message-input" placeholder="Username Override"
|
||||
maxlength="32" name="username">
|
||||
</div>
|
||||
<label class="is-sr-only">Message</label>
|
||||
<textarea class="message-input autoresize discord-content"
|
||||
placeholder="Message Content..."
|
||||
maxlength="2000" name="content" rows="1"></textarea>
|
||||
|
||||
<div class="discord-embed">
|
||||
<div class="embed-body">
|
||||
<button class="change-color button is-rounded is-small">
|
||||
<span class="is-sr-only">Choose embed color</span><i class="fas fa-eye-dropper"></i>
|
||||
</button>
|
||||
<div class="a">
|
||||
<div class="embed-author-box">
|
||||
<div class="a">
|
||||
<p class="image is-24x24 customizable">
|
||||
<a>
|
||||
<img class="is-rounded embed_author_url" src="/static/img/bg.webp" alt="Image for embed author">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="b">
|
||||
<label class="is-sr-only" for="embedAuthor">Embed Author</label>
|
||||
<textarea
|
||||
class="discord-embed-author message-input autoresize"
|
||||
placeholder="Embed Author..." rows="1" maxlength="256"
|
||||
name="embed_author"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label class="is-sr-only" for="embedTitle">Embed Title</label>
|
||||
<textarea class="discord-title message-input autoresize"
|
||||
placeholder="Embed Title..."
|
||||
maxlength="256" rows="1"
|
||||
name="embed_title"></textarea>
|
||||
<br>
|
||||
<label class="is-sr-only" for="embedDescription">Embed Description</label>
|
||||
<textarea class="discord-description message-input autoresize "
|
||||
placeholder="Embed Description..."
|
||||
maxlength="4096" name="embed_description"
|
||||
rows="1"></textarea>
|
||||
<br>
|
||||
|
||||
<div class="embed-multifield-box">
|
||||
<div data-inlined="1" class="embed-field-box">
|
||||
<label class="is-sr-only" for="embedFieldTitle">Field Title</label>
|
||||
<div class="is-flex">
|
||||
<textarea class="discord-field-title field-input message-input autoresize"
|
||||
placeholder="Field Title..." rows="1"
|
||||
maxlength="256" name="embed_field_title[]"></textarea>
|
||||
<button class="button is-small inline-btn">
|
||||
<span class="is-sr-only">Toggle field inline</span><i class="fas fa-arrows-h"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<label class="is-sr-only" for="embedFieldValue">Field Value</label>
|
||||
<textarea
|
||||
class="discord-field-value field-input message-input autoresize "
|
||||
placeholder="Field Value..."
|
||||
maxlength="1024" name="embed_field_value[]"
|
||||
rows="1"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="b">
|
||||
<p class="image thumbnail customizable">
|
||||
<a>
|
||||
<img class="embed_thumbnail_url" src="/static/img/bg.webp" alt="Square thumbnail embedded image">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="image is-400x300 customizable">
|
||||
<a>
|
||||
<img class="embed_image_url" src="/static/img/bg.webp" alt="Large embedded image">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="embed-footer-box">
|
||||
<p class="image is-20x20 customizable">
|
||||
<a>
|
||||
<img class="is-rounded embed_footer_url" src="/static/img/bg.webp" alt="Footer profile-like image">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<label class="is-sr-only" for="embedFooter">Embed Footer text</label>
|
||||
<textarea class="discord-embed-footer message-input autoresize "
|
||||
placeholder="Embed Footer..."
|
||||
maxlength="2048" name="embed_footer" rows="1"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<div class="column settings">
|
||||
<div class="field channel-field">
|
||||
<div class="collapses">
|
||||
<label class="label" for="channelOption">Channel*</label>
|
||||
</div>
|
||||
<div class="control has-icons-left">
|
||||
<div class="select">
|
||||
<select name="channel" class="channel-selector">
|
||||
</select>
|
||||
</div>
|
||||
<div class="icon is-small is-left">
|
||||
<i class="fas fa-hashtag"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<label class="label collapses">
|
||||
Time*
|
||||
<input class="input prefill-now" type="datetime-local" step="1" name="time">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="collapses split-controls">
|
||||
<div>
|
||||
<div class="patreon-only">
|
||||
<div class="patreon-invert foreground">
|
||||
Intervals available on <a href="https://patreon.com/jellywx">Patreon</a> or <a href="https://gitea.jellypro.xyz/jude/reminder-bot">self-hosting</a>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label">Interval <a class="foreground" href="/help/intervals"><i class="fas fa-question-circle"></i></a></label>
|
||||
<div class="control intervalSelector">
|
||||
<div class="input interval-group">
|
||||
<div class="interval-group-left">
|
||||
<span class="no-break">
|
||||
<label>
|
||||
<span class="is-sr-only">Interval months</span>
|
||||
<input class="w2" type="text" pattern="\d*" name="interval_months" maxlength="2" placeholder=""> <span class="half-rem"></span> months, <span class="half-rem"></span>
|
||||
</label>
|
||||
<label>
|
||||
<span class="is-sr-only">Interval days</span>
|
||||
<input class="w3" type="text" pattern="\d*" name="interval_days" maxlength="4" placeholder=""> <span class="half-rem"></span> days, <span class="half-rem"></span>
|
||||
</label>
|
||||
</span>
|
||||
<span class="no-break">
|
||||
<label>
|
||||
<span class="is-sr-only">Interval hours</span>
|
||||
<input class="w2" type="text" pattern="\d*" name="interval_hours" maxlength="2" placeholder="HH">:
|
||||
</label>
|
||||
<label>
|
||||
<span class="is-sr-only">Interval minutes</span>
|
||||
<input class="w2" type="text" pattern="\d*" name="interval_minutes" maxlength="2" placeholder="MM">:
|
||||
</label>
|
||||
<label>
|
||||
<span class="is-sr-only">Interval seconds</span>
|
||||
<input class="w2" type="text" pattern="\d*" name="interval_seconds" maxlength="2" placeholder="SS">
|
||||
</label>
|
||||
</span>
|
||||
</div>
|
||||
<button class="clear"><span class="is-sr-only">Clear interval</span><span class="icon"><i class="fas fa-trash"></i></span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<label class="label">
|
||||
Expiration
|
||||
<input class="input" type="datetime-local" step="1" name="expiration">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns is-mobile tts-row">
|
||||
<div class="column has-text-centered">
|
||||
<div class="is-boxed">
|
||||
<label class="label">Enable TTS <input type="checkbox" name="tts"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column has-text-centered">
|
||||
<div class="file is-small is-boxed">
|
||||
<label class="file-label">
|
||||
<input class="file-input" type="file" name="attachment">
|
||||
<span class="file-cta">
|
||||
<span class="file-label">
|
||||
Add Attachment
|
||||
</span>
|
||||
<span class="file-icon">
|
||||
<i class="fas fa-upload"></i>
|
||||
</span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if creating %}
|
||||
<div class="button-row">
|
||||
<div class="button-row-reminder">
|
||||
<button class="button is-success" id="createReminder">
|
||||
<span>Create Reminder</span> <span class="icon"><i class="fas fa-sparkles"></i></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="button-row-template">
|
||||
<div>
|
||||
<button class="button is-success is-outlined" id="createTemplate">
|
||||
<span>Create Template</span> <span class="icon"><i class="fas fa-file-spreadsheet"></i></span>
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
<button class="button is-outlined show-modal is-pulled-right" data-modal="chooseTemplateModal">
|
||||
Load Template
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="button-row-edit">
|
||||
<button class="button is-success save-btn">
|
||||
<span>Save</span> <span class="icon"><i class="fas fa-save"></i></span>
|
||||
</button>
|
||||
<button class="button is-warning disable-enable">
|
||||
</button>
|
||||
<button class="button is-danger delete-reminder">
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
52
templates/reminder_dashboard/reminder_dashboard.html.tera
Normal file
52
templates/reminder_dashboard/reminder_dashboard.html.tera
Normal file
@ -0,0 +1,52 @@
|
||||
<div class="create-reminder">
|
||||
<strong>Create Reminder</strong>
|
||||
<div id="reminderCreator">
|
||||
{% set creating = true %}
|
||||
{% include "reminder_dashboard/guild_reminder" %}
|
||||
{% set creating = false %}
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="field">
|
||||
<div class="columns is-mobile">
|
||||
<div class="column">
|
||||
<strong>Reminders</strong>
|
||||
</div>
|
||||
<div class="column is-narrow">
|
||||
<div class="control has-icons-left">
|
||||
<div class="select is-small">
|
||||
<select id="orderBy">
|
||||
<option value="time" selected>Time</option>
|
||||
<option value="name">Name</option>
|
||||
<option value="channel">Channel</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="icon is-small is-left">
|
||||
<i class="fas fa-sort-amount-down"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column is-narrow">
|
||||
<div class="control has-icons-left">
|
||||
<div class="select is-small">
|
||||
<select id="expandAll">
|
||||
<option value="" selected></option>
|
||||
<option value="expand">Expand All</option>
|
||||
<option value="collapse">Collapse All</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="icon is-small is-left">
|
||||
<i class="fas fa-expand-arrows"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="guildReminders">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/static/js/sort.js"></script>
|
||||
<script src="/static/js/expand.js"></script>
|
5
templates/reminder_dashboard/reminder_errors.html.tera
Normal file
5
templates/reminder_dashboard/reminder_errors.html.tera
Normal file
@ -0,0 +1,5 @@
|
||||
<div>
|
||||
|
||||
</div>
|
||||
|
||||
<!--<script src="/static/js/reminder_errors.js"></script>-->
|
12
templates/reminder_dashboard/user_error.html.tera
Normal file
12
templates/reminder_dashboard/user_error.html.tera
Normal file
@ -0,0 +1,12 @@
|
||||
<div class="hero is-fullheight">
|
||||
<div class="hero-body">
|
||||
<div class="container has-text-centered">
|
||||
<p class="title">
|
||||
You do not have permissions for this server
|
||||
</p>
|
||||
<p class="subtitle">
|
||||
Ask an admin to grant you the "Manage Messages" permission.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
13
templates/return.html.tera
Normal file
13
templates/return.html.tera
Normal file
@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Reminder Bot | Redirecting...</title>
|
||||
</head>
|
||||
<body>
|
||||
<a href="/{{ to }}">Press here if you aren't redirected</a>
|
||||
<script>
|
||||
document.location = "/{{ to }}";
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
40
templates/support/create_reminder.html.tera
Normal file
40
templates/support/create_reminder.html.tera
Normal file
@ -0,0 +1,40 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Create Reminders" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Create reminders via commands</p>
|
||||
<p class="content">
|
||||
You can create reminders with the <code>/remind</code> command.
|
||||
<br>
|
||||
Fill out the "time" and "content" fields. If you wish, press on "Optional" to view other options
|
||||
for the reminder.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Create reminders via the dashboard</p>
|
||||
<p class="content">
|
||||
Reminders can also be created on the dashboard. The dashboard offers more options for configuring
|
||||
reminders, and offers templates for quick recreation of reminders.
|
||||
|
||||
<a href="/dashboard">Access the dashboard.</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
22
templates/support/dashboard.html.tera
Normal file
22
templates/support/dashboard.html.tera
Normal file
@ -0,0 +1,22 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Dashboard" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Accessing the dashboard</p>
|
||||
<p class="content">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
82
templates/support/delete_reminder.html.tera
Normal file
82
templates/support/delete_reminder.html.tera
Normal file
@ -0,0 +1,82 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Deleting Reminders" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% set show_invite = false %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Deleting reminders via commands</p>
|
||||
<p class="content">
|
||||
Deleting reminders is as easy as typing <code>/del</code>.
|
||||
<br>
|
||||
</p>
|
||||
<figure>
|
||||
<img src="/static/img/support/delete_reminder/cmd-1.png" alt="/del">
|
||||
</figure>
|
||||
<figure>
|
||||
<img src="/static/img/support/delete_reminder/cmd-2.png" alt="Reminder deleted">
|
||||
</figure>
|
||||
<p class="content">
|
||||
Note that you cannot delete reminders that were set for another user's direct messages. To delete
|
||||
reminders in your direct messages, use <code>/del</code> in the direct message channel with
|
||||
Reminder Bot.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Deleting reminders you've just created</p>
|
||||
<p class="content">
|
||||
If you made a mistake, you can quickly delete a reminder you made by pressing "Cancel"
|
||||
<br>
|
||||
</p>
|
||||
<figure>
|
||||
<img src="/static/img/support/delete_reminder/cancel-1.png" alt="Cancel button">
|
||||
</figure>
|
||||
<figure>
|
||||
<img src="/static/img/support/delete_reminder/cancel-2.png" alt="Reminder deleted">
|
||||
</figure>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Deleting reminders via the dashboard</p>
|
||||
<p class="content">
|
||||
Reminders in servers can be deleted via the dashboard. First, select your server from the menu.
|
||||
</p>
|
||||
<figure>
|
||||
<img src="/static/img/support/delete_reminder/1.png" alt="Selecting server">
|
||||
</figure>
|
||||
<br>
|
||||
<p class="content">
|
||||
Then, find the reminder you wish to delete.
|
||||
</p>
|
||||
<figure>
|
||||
<img src="/static/img/support/delete_reminder/2.png" alt="Finding reminder">
|
||||
</figure>
|
||||
<br>
|
||||
<p class="content">
|
||||
Finally, press the 'Delete' button under the reminder.
|
||||
</p>
|
||||
<figure>
|
||||
<img src="/static/img/support/delete_reminder/3.png" alt="Delete button">
|
||||
</figure>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
87
templates/support/iemanager.html.tera
Normal file
87
templates/support/iemanager.html.tera
Normal file
@ -0,0 +1,87 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Import/Export" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Export data</p>
|
||||
<p class="content">
|
||||
You can export data associated with your server from the dashboard. The data will export as a CSV
|
||||
file. The CSV file can then be edited and imported to bulk edit server data.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Import data</p>
|
||||
<p class="content">
|
||||
You can import previous exports or modified exports. When importing a file, the new data will be added alongside existing data.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container content">
|
||||
<p class="title">Edit your data</p>
|
||||
<p>
|
||||
The CSV can be edited either as a text file or in a spreadsheet editor such as LibreOffice Calc. To
|
||||
set up LibreOffice Calc for editing, do the following:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
Export data from dashboard.
|
||||
<figure>
|
||||
<img src="/static/img/support/iemanager/select_export.png" alt="Selecting export button">
|
||||
</figure>
|
||||
</li>
|
||||
<li>
|
||||
Open the file in LibreOffice. <strong>During the import dialogue, select "Format quoted field as text".</strong>
|
||||
<figure>
|
||||
<img src="/static/img/support/iemanager/format_text.png" alt="Selecting format button">
|
||||
</figure>
|
||||
</li>
|
||||
<li>
|
||||
Make edits to the spreadsheet. You can add, edit, and remove rows for reminders. Don't remove the top-most (title) row.
|
||||
<figure>
|
||||
<img src="/static/img/support/iemanager/edit_spreadsheet.png" alt="Editing spreadsheet">
|
||||
</figure>
|
||||
</li>
|
||||
<li>
|
||||
Save the edited CSV file and import it on the dashboard.
|
||||
<figure>
|
||||
<img src="/static/img/support/iemanager/import.png" alt="Import new reminders">
|
||||
</figure>
|
||||
</li>
|
||||
</ol>
|
||||
Other spreadsheet tools can also be used to edit exports, as long as they are properly configured:
|
||||
<ul>
|
||||
<li>
|
||||
<strong>Google Sheets</strong>: Create a new blank spreadsheet. Select <strong>File > Import > Upload > export.csv</strong>.
|
||||
Use the following import settings:
|
||||
<figure>
|
||||
<img src="/static/img/support/iemanager/sheets_settings.png" alt="Google sheets import settings">
|
||||
</figure>
|
||||
</li>
|
||||
<li>
|
||||
<strong>Excel (including Excel Online)</strong>: Avoid using Excel. Excel will not correctly import channels, or give
|
||||
clear options to correct imports.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
71
templates/support/intervals.html.tera
Normal file
71
templates/support/intervals.html.tera
Normal file
@ -0,0 +1,71 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Intervals" %}
|
||||
{% set page_subtitle = "Interval reminders, or repeating reminders, are available to our Patreon supporters" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Fixed intervals</p>
|
||||
<p class="content">
|
||||
The main type of interval is the fixed interval. Fixed intervals are ideal for hourly, daily, or
|
||||
reminders repeating at any other fixed amount of time.
|
||||
<br>
|
||||
You can create fixed interval reminders via the dashboard or via the <code>/remind</code> command.
|
||||
When you have filled out the "time" and "content" on the command, press <kbd>tab</kbd>. Select the
|
||||
"interval" option. Then, write the interval you wish to use: for example, "1 day" for daily (starting
|
||||
at the time specified in "time").
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Daylight savings</p>
|
||||
<p class="content">
|
||||
If you live in a region that uses daylight savings (DST), then your interval reminders may become
|
||||
offset by an hour due to clock changes.
|
||||
<br>
|
||||
Reminder Bot offers a quick solution to this via the <code>/offset</code> command. This command
|
||||
moves all existing reminders on a server by a certain amount of time. You can use offset to move
|
||||
your reminders forward or backward by an hour when daylight savings happens.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Monthly/yearly intervals</p>
|
||||
<p class="content">
|
||||
Monthly or yearly intervals are configured the same as fixed intervals. Instead of a fixed time
|
||||
interval, these reminders repeat on a certain day each month or each year. This makes them ideal
|
||||
for marking calendar events.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Interval expiration</p>
|
||||
<p class="content">
|
||||
An expiration time can also be specified, both via commands and dashboard, for repeating reminders.
|
||||
This is optional, and if omitted, the reminder will repeat indefinitely. Otherwise, the reminder
|
||||
will be deleted once the expiration date is reached.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
23
templates/support/macros.html.tera
Normal file
23
templates/support/macros.html.tera
Normal file
@ -0,0 +1,23 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Manage Macros" %}
|
||||
{% set page_subtitle = "For advanced functionality" %}
|
||||
{% set show_invite = false %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Create macros via commands</p>
|
||||
<p class="content">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
23
templates/support/timers.html.tera
Normal file
23
templates/support/timers.html.tera
Normal file
@ -0,0 +1,23 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Timers" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% set show_invite = false %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Create timers via commands</p>
|
||||
<p class="content">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
47
templates/support/timezone.html.tera
Normal file
47
templates/support/timezone.html.tera
Normal file
@ -0,0 +1,47 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Timezones" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% set show_invite = false %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Selecting your timezone manually</p>
|
||||
<p class="content">
|
||||
To select your timezone manually, use <code>/timezone</code>. This will set your timezone
|
||||
across all servers with Reminder Bot.
|
||||
<br>
|
||||
You should only ever have to do this once. To avoid needing to change timezone due to daylight
|
||||
savings, choose a DST-aware region, for example <strong>Europe/London</strong> instead of
|
||||
<strong>GMT</strong>, or <strong>US/New_York</strong> instead of <strong>EST</strong>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Selecting your timezone automatically</p>
|
||||
<p class="content">
|
||||
You can also configure Reminder Bot's timezone from your browser. To do
|
||||
this, go to our dashboard, press 'Timezone' in the bottom left (desktop) or at the bottom of the
|
||||
navigation menu (mobile). Then, choose 'Set Bot Timezone' to set Reminder Bot to use your browser's
|
||||
timezone.
|
||||
<br>
|
||||
From here, you can also configure the dashboard to alternatively use the manually configured
|
||||
timezone instead of the browser's timezone, if your browser is reporting your timezone incorrectly,
|
||||
or if you have a special use-case.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
23
templates/support/todo_lists.html.tera
Normal file
23
templates/support/todo_lists.html.tera
Normal file
@ -0,0 +1,23 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Support" %}
|
||||
|
||||
{% set page_title = "Todo lists" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% set show_invite = false %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="hero is-small">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<p class="title">Add to todo lists via commands</p>
|
||||
<p class="content">
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
84
templates/terms.html.tera
Normal file
84
templates/terms.html.tera
Normal file
@ -0,0 +1,84 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block init %}
|
||||
{% set title = "Terms of Service" %}
|
||||
|
||||
{% set page_title = "Terms of Service" %}
|
||||
{% set page_subtitle = "" %}
|
||||
{% set page_emoji = "" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">Outline</h2>
|
||||
<p class="">
|
||||
The Terms of Service apply whenever you use the hosted edition of <strong>Reminder Bot</strong> and the
|
||||
<strong>JellyWX's Home</strong> Discord server.
|
||||
<br>
|
||||
<br>
|
||||
Violating the Terms of Service may result in receiving a permanent ban from the Discord server,
|
||||
permanent restriction on your usage of Reminder Bot, or removal of some or all of your content on
|
||||
Reminder Bot or the Discord server. None of these will necessarily be preceded or succeeded by a warning
|
||||
or notice.
|
||||
<br>
|
||||
<br>
|
||||
The Terms of Service may be updated. Notice will be provided via the Discord server. You
|
||||
should consider the Terms of Service to be a guide for appropriate behaviour.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">Reminder Bot</h2>
|
||||
<p>
|
||||
The Terms of Service <strong>do not</strong> apply to self-hosting users who are using the source code
|
||||
or pre-packaged Debian files to run their own instance of Reminder Bot.
|
||||
</p>
|
||||
<br>
|
||||
<h3 class="subtitle">Your access to Reminder Bot may be restricted if you:</h3>
|
||||
<ul class="pl-6" style="list-style: disc">
|
||||
<li>Abuse exploits or bugs in Reminder Bot.</li>
|
||||
<li>Use the bot to harass other Discord users.</li>
|
||||
<li>Use the bot to transmit malware or other illegal content.</li>
|
||||
<li>Use the bot to send more than 15 messages during a 60 second period.</li>
|
||||
<li>
|
||||
Attempt to circumvent restrictions imposed by the bot or website, including trying to access
|
||||
data of other users, circumvent Patreon restrictions, or uploading files and creating reminders that
|
||||
are too large for the bot to send or process.
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<p>
|
||||
Some or all of these actions may be illegal in your country.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 class="title">JellyWX's Home</h2>
|
||||
<h3 class="subtitle">Your access to the JellyWX's Home Discord server may be restricted if you:</h3>
|
||||
<ul class="pl-6" style="list-style: disc">
|
||||
<li>Discuss politics, harass other users, or use language intended to upset other users.</li>
|
||||
<li>Abuse any exploits.</li>
|
||||
<li>Share personal information about yourself or any other user. This includes but is not
|
||||
limited to real names<sup>1</sup>, addresses, phone numbers, country of origin<sup>2</sup>, religion, email address,
|
||||
IP address.</li>
|
||||
<li>Send malicious links or attachments.</li>
|
||||
<li>Advertise without permission.</li>
|
||||
<li>Send unwarranted direct messages.</li>
|
||||
</ul>
|
||||
<p class="small">
|
||||
<sup>1</sup> Some users may use their real name on their account. In this case, do not assert that
|
||||
this is a user's real name, or use it to try and identify a user.
|
||||
<br>
|
||||
<sup>2</sup> Country of current residence may be discussed, as this is relevant to timezone and
|
||||
DST selection.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
Reference in New Issue
Block a user