2021-07-28 00:42:08 +00:00
2021-07-28 01:11:25 +00:00
<!DOCTYPE html>
2021-07-21 01:12:26 +00:00
< html lang = "en" >
< head >
2021-09-26 09:02:50 +00:00
< script src = "https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" > < / script >
2021-09-26 09:46:23 +00:00
< script src = "https://cdn.jsdelivr.net/npm/clipboard@2.0.8/dist/clipboard.min.js" > < / script >
2021-09-21 20:12:34 +00:00
2021-07-21 11:37:36 +00:00
< script >
2021-09-26 10:40:25 +00:00
var clipboard = new ClipboardJS('.copy-link');
2021-09-26 10:48:59 +00:00
clipboard.on('success', function(e) {
2021-09-26 10:40:25 +00:00
var myToast = new bootstrap.Toast(document.getElementById('toast-success'));
myToast.show();
console.log(e);
});
2021-09-21 20:12:34 +00:00
2021-09-26 09:09:17 +00:00
document.getElementById('new_email').addEventListener('input', function () {
2021-07-21 11:48:31 +00:00
var id = document.getElementById("email-password");
var id2 = document.getElementById("email-password-label");
var id3 = document.getElementById("emailpasswordRequired");
id.classList.remove("d-none");
id2.classList.remove("d-none");
id3.classList.remove("d-none");
});
2021-09-27 19:06:27 +00:00
2021-07-21 11:37:36 +00:00
function emailVerifyText() {
document.getElementById("email-verify-text").innerHTML = "Verification email sent! Please check your inbox.";
}
2021-09-27 19:06:27 +00:00
function formkey() {return '{{v.formkey}}';}
2021-07-21 11:37:36 +00:00
< / script >
2021-07-21 01:12:26 +00:00
2021-09-28 03:44:31 +00:00
< style >
.navsettings {
padding-left: 0.6rem !important;
padding-right: 0.6rem !important;
}
< / style >
2021-07-21 01:12:26 +00:00
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1, shrink-to-fit=no" >
< meta name = "description" content = "" >
< meta name = "author" content = "" >
2021-09-13 15:58:52 +00:00
< link rel = "icon" type = "image/png" href = "/assets/images/{{'SITE_NAME' | app_config}}/icon.webp" >
2021-07-21 01:12:26 +00:00
2021-08-19 05:14:52 +00:00
< title > {% block pagetitle %}Settings - {{'SITE_NAME' | app_config}}{% endblock %}< / title >
2021-07-21 01:12:26 +00:00
< meta property = "og:type" content = "article" / >
2021-08-19 05:14:52 +00:00
< meta property = "og:title" content = "{{'SITE_NAME' | app_config}}" / >
2021-08-02 16:13:41 +00:00
< meta property = "og:site_name" content = "{{request.host}}" / >
2021-09-13 15:58:52 +00:00
< meta property = "og:image" content = "{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" / >
2021-08-02 16:13:41 +00:00
< meta property = "og:url" content = "{{request.host}}" >
2021-09-08 08:03:38 +00:00
< meta property = "og:description" name = "description" content = "{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" >
2021-08-04 16:21:10 +00:00
< meta property = "og:author" name = "author" content = "@{{request.host_url}}" / >
2021-08-02 16:13:41 +00:00
< meta property = "og:site_name" content = "{{request.host}}" / >
2021-07-21 01:12:26 +00:00
< meta name = "twitter:card" content = "summary_large_image" / >
2021-08-04 16:21:10 +00:00
< meta name = "twitter:site" content = "@{{request.host_url}}" >
2021-08-19 05:14:52 +00:00
< meta name = "twitter:title" content = "{{'SITE_NAME' | app_config}}" / >
2021-08-04 16:21:10 +00:00
< meta name = "twitter:creator" content = "@{{request.host_url}}" >
2021-09-08 08:03:38 +00:00
< meta name = "twitter:description" content = "{{'SITE_NAME' | app_config}} - {{'SLOGAN' | app_config}}" / >
2021-09-13 15:58:52 +00:00
< meta name = "twitter:image" content = "{{'SITE_NAME' | app_config}}/assets/images/{{'SITE_NAME' | app_config}}/preview.webp" / >
2021-08-02 16:13:41 +00:00
< meta name = "twitter:url" content = "{{request.host}}" / >
2021-07-21 01:12:26 +00:00
< link href = "https://fonts.googleapis.com/css?family=Open+Sans:400,600&display=swap" rel = "stylesheet" >
2021-09-28 03:44:31 +00:00
2021-10-03 23:34:13 +00:00
< link rel = "stylesheet" href = "/assets/css/{{v.theme}}_{{v.themecolor}}.css?v=7" >
{% if v.agendaposter %}< link rel = "stylesheet" href = "/assets/css/agendaposter.css?v=7" > {% elif v.css %}< link rel = "stylesheet" href = "/@{{v.username}}/css" > {% endif %}
2021-07-21 01:12:26 +00:00
2021-10-01 03:45:57 +00:00
< link href = "/assets/css/fa.css" rel = "stylesheet" >
2021-07-21 01:12:26 +00:00
< / head >
2021-08-15 01:43:22 +00:00
< body id = "settings" style = "overflow-x: hidden; {% if v and v.background %} background:url(/assets/images/backgrounds/{{v.background}}) no-repeat center center fixed !important; background-size: cover!important; background-color: #000!important;{% endif %}" >
2021-07-21 01:12:26 +00:00
{% include "header.html" %}
2021-09-28 03:44:31 +00:00
< div class = "container" >
2021-07-21 01:12:26 +00:00
< div class = "row justify-content-around" >
< div class = "col h-100" >
{% if error %}
< div class = "alert alert-danger alert-dismissible fade show my-3" role = "alert" >
< i class = "fas fa-exclamation-circle my-auto" > < / i >
< span >
{{error}}
< / span >
2021-09-26 09:04:49 +00:00
< button type = "button" class = "close" data-bs-dismiss = "alert" aria-label = "Close" >
2021-07-21 01:12:26 +00:00
< span aria-hidden = "true" > < i class = "far fa-times" > < / i > < / span >
< / button >
< / div >
{% endif %}
{% if msg %}
< div class = "alert alert-success alert-dismissible fade show my-3" role = "alert" >
< i class = "fas fa-check-circle my-auto" aria-hidden = "true" > < / i >
< span >
{{msg}}
< / span >
2021-09-26 09:04:49 +00:00
< button type = "button" class = "close" data-bs-dismiss = "alert" aria-label = "Close" >
2021-07-21 01:12:26 +00:00
< span aria-hidden = "true" > < i class = "far fa-times" > < / i > < / span >
< / button >
< / div >
{% endif %}
< div class = "mt-3" >
< h1 class = "d-none d-md-block" > Settings< / h1 >
< h2 class = "h3 d-md-none" > Settings< / h2 >
< / div >
2021-09-28 03:44:31 +00:00
2021-07-21 01:12:26 +00:00
< div class = "flex-row bg-white box-shadow-bottom sticky d-none d-sm-flex mt-3 mb-3 mb-sm-5" >
< ul class = "nav settings-nav" >
< li class = "nav-item" >
< a class = "nav-link{% if request.path=='/settings/profile' %} active{% endif %}" href = "/settings/profile" > Profile< / a >
< / li >
< li class = "nav-item" >
< a class = "nav-link{% if request.path=='/settings/content' %} active{% endif %}" href = "/settings/content" > Content< / a >
< / li >
< li class = "nav-item" >
< a class = "nav-link{% if request.path=='/settings/css' %} active{% endif %}" href = "/settings/css" > Custom CSS< / a >
< / li >
< li class = "nav-item" >
< a class = "nav-link{% if request.path=='/settings/profilecss' %} active{% endif %}" href = "/settings/profilecss" > Profile CSS< / a >
< / li >
< li class = "nav-item" >
< a class = "nav-link{% if request.path=='/settings/security' %} active{% endif %}" href = "/settings/security" > Security< / a >
< / li >
< li class = "nav-item" >
< a class = "nav-link{% if request.path=='/settings/blocks' %} active{% endif %}" href = "/settings/blocks" > Block users< / a >
< / li >
< li class = "nav-item" >
< a class = "nav-link{% if request.path=='/settings/apps' %} active{% endif %}" href = "/settings/apps" > Apps< / a >
< / li >
2021-09-17 09:37:13 +00:00
< li class = "nav-item" >
2021-09-17 09:38:53 +00:00
< a class = "nav-link{% if 'shop' in request.path %} active{% endif %}" href = "/settings/shop" > Shop< / a >
2021-09-17 09:37:13 +00:00
< / li >
2021-07-21 01:12:26 +00:00
< / ul >
< / div >
2021-09-28 03:44:31 +00:00
2021-07-21 01:12:26 +00:00
< div class = "flex-row bg-white box-shadow-bottom sticky justify-content-center d-flex d-sm-none mt-3 mb-3 mb-sm-5" >
< ul class = "nav settings-nav" >
< li class = "nav-item" >
2021-09-25 18:31:51 +00:00
< a class = "nav-link{% if request.path=='/settings/profile' %} active{% endif %} navsettings" href = "/settings/profile" > < i class = "fas fa-cog text-lg mr-0" > < / i > < / a >
2021-07-21 01:12:26 +00:00
< / li >
< li class = "nav-item" >
2021-09-25 18:31:51 +00:00
< a class = "nav-link{% if request.path=='/settings/content' %} active{% endif %} navsettings" href = "/settings/content" > < i class = "fas fa-filter text-lg mr-0" > < / i > < / a >
2021-07-21 01:12:26 +00:00
< / li >
< li class = "nav-item" >
2021-09-25 18:31:51 +00:00
< a class = "nav-link{% if request.path=='/settings/css' %} active{% endif %} navsettings" href = "/settings/css" > < i class = "fas fa-palette text-lg mr-0" > < / i > < / a >
2021-07-21 01:12:26 +00:00
< / li >
< li class = "nav-item" >
2021-09-25 18:31:51 +00:00
< a class = "nav-link{% if request.path=='/settings/profilecss' %} active{% endif %} navsettings" href = "/settings/profilecss" > < i class = "fas fa-palette text-lg mr-0" > < / i > < / a >
2021-07-21 01:12:26 +00:00
< / li >
< li class = "nav-item" >
2021-09-25 18:31:51 +00:00
< a class = "nav-link{% if request.path=='/settings/security' %} active{% endif %} navsettings" href = "/settings/security" > < i class = "fas fa-lock-alt text-lg mr-0" > < / i > < / a >
2021-07-21 01:12:26 +00:00
< / li >
< li class = "nav-item" >
2021-09-25 18:31:51 +00:00
< a class = "nav-link{% if request.path=='/settings/blocks' %} active{% endif %} navsettings" href = "/settings/blocks" > < i class = "fas fa-user-minus text-lg mr-0" > < / i > < / a >
2021-07-21 01:12:26 +00:00
< / li >
< li class = "nav-item" >
2021-09-25 18:31:51 +00:00
< a class = "nav-link{% if request.path=='/settings/apps' %} active{% endif %} navsettings" href = "/settings/apps" > < i class = "fas fa-code text-lg mr-0" > < / i > < / a >
2021-07-21 01:12:26 +00:00
< / li >
2021-09-17 09:37:13 +00:00
< li class = "nav-item" >
2021-09-25 18:31:51 +00:00
< a class = "nav-link{% if 'shop' in request.path %} active{% endif %} navsettings" href = "/settings/shop" > < i class = "fas fa-store text-lg mr-0" > < / i > < / a >
2021-09-17 09:37:13 +00:00
< / li >
2021-07-21 01:12:26 +00:00
< / ul >
< / div >
2021-08-15 01:03:29 +00:00
{% block content %}
{% endblock %}
2021-07-21 01:12:26 +00:00
< / div >
< / div >
< / div >
{% if v %}
2021-09-28 03:44:31 +00:00
< div class = "modal fade" id = "2faModal" tabindex = "-1" role = "dialog" aria-labelledby = "2faModalTitle" aria-hidden = "true" >
2021-09-25 21:13:52 +00:00
< div class = "modal-dialog modal-dialog-centered" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" > {% if mfa_secret %}Setup two-step login{% elif mfa_secret and not v.email %}Email required for two-step login{% else %}Disable two-step login{% endif %}< / h5 >
2021-09-26 09:04:49 +00:00
< button type = "button" class = "close" data-bs-dismiss = "modal" aria-label = "Close" >
2021-09-25 21:13:52 +00:00
< span aria-hidden = "true" > < i class = "far fa-times" > < / i > < / span >
< / button >
< / div >
{% if mfa_secret %}
< div >
< form action = "/settings/security" method = "post" >
< input type = "hidden" name = "formkey" value = "{{v.formkey}}" >
< input type = "hidden" name = "2fa_secret" value = "{{mfa_secret}}" >
< div class = "modal-body" >
< p >
< span class = "font-weight-bold" > Step 1:< / span > Scan this barcode (or enter the code) using a two-factor authentication app such as Google Authenticator or Authy.
< / p >
< div class = "text-center mb-3" >
< img loading = "lazy" class = "img-fluid" style = "width: 175px;" src = "/2faqr/{{mfa_secret}}" >
< pre > < / pre >
< div class = "text-small text-muted" > Or enter this code: {{mfa_secret}}< / div >
< / div >
< p >
< span class = "font-weight-bold" > Step 2:< / span > Enter the six-digit code generated in the authenticator app and your {{'SITE_NAME' | app_config}} account password.
< / p >
< label for = "2fa_input" > 6-digit code< / label >
< input type = "text" class = "form-control mb-2" id = "2fa_input" name = "2fa_token" placeholder = "# # # # # #" required >
< label for = "2fa_input_password" > Password< / label >
< input type = "password" autocomplete = "new-password" class = "form-control mb-2" id = "2fa_input_password" name = "password" oninput = "document.getElementById('enable2faButton').disabled=false" autocomplete = "off" required >
< / div >
< div class = "modal-footer" >
2021-09-26 09:04:49 +00:00
< button type = "button" class = "btn btn-link text-muted" data-bs-dismiss = "modal" > Cancel< / button >
2021-09-25 21:13:52 +00:00
< input id = "enable2faButton" class = "btn btn-primary" type = "submit" value = "Enable 2-step login" disabled >
< / div >
< / form >
< / div >
{% else %}
< div >
< form action = "/settings/security" method = "post" >
< input type = "hidden" name = "formkey" value = "{{v.formkey}}" >
< input type = "hidden" name = "2fa_secret" value = "{{mfa_secret}}" >
< div class = "modal-body" >
< div class = "alert alert-warning" role = "alert" >
< i class = "fas fa-info-circle" > < / i >
To disable two-step login, please enter your {{'SITE_NAME' | app_config}} account password and the 6-digit code generated in your authentication app. If you no longer have your two-step device, < a href = "/lost_2fa" > click here< / a > .
< / div >
< label for = "2fa_input_password" > Password< / label >
< input type = "password" autocomplete = "new-password" class = "form-control mb-2" id = "2fa_input_password" name = "password" autocomplete = "off" required >
< label for = "2fa_input" > 6-digit code< / label >
< input type = "text" class = "form-control mb-2" id = "2fa_input" name = "2fa_remove" placeholder = "# # # # # #" oninput = "document.getElementById('disable2faButton').disabled=false" required >
< / div >
< div class = "modal-footer" >
2021-09-26 09:04:49 +00:00
< button type = "button" class = "btn btn-link text-muted" data-bs-dismiss = "modal" > Cancel< / button >
2021-09-25 21:13:52 +00:00
< input id = "disable2faButton" class = "btn btn-primary" type = "submit" value = "Disable 2-step login" disabled >
< / div >
< / form >
< / div >
{% endif %}
< / div >
< / div >
< / div >
{% endif %}
2021-07-21 01:12:26 +00:00
2021-09-28 03:44:31 +00:00
2021-07-21 01:12:26 +00:00
{% block clipboard %}
2021-09-26 09:04:49 +00:00
< div class = "toast clipboard" id = "toast-success" role = "alert" aria-live = "assertive" aria-atomic = "true" data-bs-animation = "true" data-bs-autohide = "true" data-bs-delay = "5000" >
2021-07-21 01:12:26 +00:00
< div class = "toast-body text-center" >
< i class = "fas fa-check-circle text-success mr-2" > < / i > Link copied to clipboard
< / div >
< / div >
{% endblock %}
2021-09-26 09:04:49 +00:00
< div class = "toast" id = "toast-post-success" style = "position: fixed; bottom: 1.5rem; margin: 0 auto; left: 0; right: 0; width: 275px; z-index: 1000" role = "alert" aria-live = "assertive" aria-atomic = "true" data-bs-animation = "true" data-bs-autohide = "true" data-bs-delay = "5000" >
2021-07-21 01:12:26 +00:00
< div class = "toast-body bg-success text-center text-white" >
< i class = "fas fa-comment-alt-smile mr-2" > < / i > < span id = "toast-post-success-text" > < / span >
< / div >
< / div >
2021-09-26 09:04:49 +00:00
< div class = "toast" id = "toast-post-error" style = "position: fixed; bottom: 1.5rem; margin: 0 auto; left: 0; right: 0; width: 275px; z-index: 1000" role = "alert" aria-live = "assertive" aria-atomic = "true" data-bs-animation = "true" data-bs-autohide = "true" data-bs-delay = "5000" >
2021-07-21 01:12:26 +00:00
< div class = "toast-body bg-danger text-center text-white" >
< i class = "fas fa-exclamation-circle mr-2" > < / i > < span id = "toast-post-error-text" > < / span >
< / div >
< / div >
2021-09-25 21:13:52 +00:00
2021-07-21 01:12:26 +00:00
{% block onload %}{% endblock %}
< / body >
2021-08-22 17:00:07 +00:00
< / html >