forked from MarseyWorld/MarseyWorld
fdfd
parent
b2c7a14bd9
commit
8aee250116
|
@ -124,4 +124,4 @@
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html
|
</html>
|
File diff suppressed because it is too large
Load Diff
|
@ -1,150 +1,150 @@
|
||||||
{% extends "default.html" %}
|
{% extends "default.html" %}
|
||||||
{% block title %}
|
{% block title %}
|
||||||
<title>{{'SITE_NAME' | app_config}} - Formatting</title>
|
<title>{{'SITE_NAME' | app_config}} - Formatting</title>
|
||||||
<meta name="description" content="{{'SITE_NAME' | app_config}} Formatting">
|
<meta name="description" content="{{'SITE_NAME' | app_config}} Formatting">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<pre>
|
<pre>
|
||||||
|
|
||||||
|
|
||||||
</pre>
|
</pre>
|
||||||
{% filter markdown %}
|
{% filter markdown %}
|
||||||
# Formatting
|
# Formatting
|
||||||
|
|
||||||
On {{'SITE_NAME' | app_config}}, you can use Markdown formatting.
|
On {{'SITE_NAME' | app_config}}, you can use Markdown formatting.
|
||||||
|
|
||||||
|
|
||||||
## Inline formatting
|
## Inline formatting
|
||||||
|
|
||||||
{% endfilter %}
|
{% endfilter %}
|
||||||
|
|
||||||
<table class="table table-striped mb-5">
|
<table class="table table-striped mb-5">
|
||||||
<thead class="bg-primary text-white">
|
<thead class="bg-primary text-white">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Type</th>
|
<th>Type</th>
|
||||||
<th>Displays as</th>
|
<th>Displays as</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Italics</td>
|
<td>Italics</td>
|
||||||
<td>*text*</td>
|
<td>*text*</td>
|
||||||
<td><i>text</i></td>
|
<td><i>text</i></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Bold</td>
|
<td>Bold</td>
|
||||||
<td>**text**</td>
|
<td>**text**</td>
|
||||||
<td><b>text</b></td>
|
<td><b>text</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Code</td>
|
<td>Code</td>
|
||||||
<td>`text`</td>
|
<td>`text`</td>
|
||||||
<td><code>text</code></td>
|
<td><code>text</code></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Strikethrough</td>
|
<td>Strikethrough</td>
|
||||||
<td>~~text~~</td>
|
<td>~~text~~</td>
|
||||||
<td><del>text</del></td>
|
<td><del>text</del></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Links</td>
|
<td>Links</td>
|
||||||
<td>[{{'SITE_NAME' | app_config}}]({{request.host_url}})</td>
|
<td>[{{'SITE_NAME' | app_config}}]({{request.host_url}})</td>
|
||||||
<td><a href="{{request.host_url}}">{{'SITE_NAME' | app_config}}</a></td>
|
<td><a href="{{request.host_url}}">{{'SITE_NAME' | app_config}}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Emojis</td>
|
<td>Emojis</td>
|
||||||
<td>:marseylove:</td>
|
<td>:marseylove:</td>
|
||||||
<td><img data-toggle="tooltip" title="marseylove" delay="0" height="20" src="/assets/images/emojis/marseylove.gif"></td>
|
<td><img data-toggle="tooltip" title="marseylove" delay="0" height="20" src="/assets/images/emojis/marseylove.gif"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
{% filter markdown %}
|
{% filter markdown %}
|
||||||
|
|
||||||
## Block formatting
|
## Block formatting
|
||||||
|
|
||||||
These Markdown tags format an entire paragraph of text at a time.
|
These Markdown tags format an entire paragraph of text at a time.
|
||||||
|
|
||||||
<table class="table table-striped mb-5">
|
<table class="table table-striped mb-5">
|
||||||
<thead class="bg-primary text-white">
|
<thead class="bg-primary text-white">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Type</th>
|
<th>Type</th>
|
||||||
<th>Displays as</th>
|
<th>Displays as</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Blockquote</td>
|
<td>Blockquote</td>
|
||||||
<td>> text</td>
|
<td>> text</td>
|
||||||
<td><blockquote>text</blockquote></td>
|
<td><blockquote>text</blockquote></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Headers 1-6</td>
|
<td>Headers 1-6</td>
|
||||||
<td># Header 1<br>## Header 2<br>### Header 3<br>#### Header 4<br>##### Header 5<br>###### Header 6</td>
|
<td># Header 1<br>## Header 2<br>### Header 3<br>#### Header 4<br>##### Header 5<br>###### Header 6</td>
|
||||||
<td><h1>Header 1</h1><h2>Header 2</h2><h3>Header 3</h3><h4>Header 4</h4><h5>Header 5</h5><h6>Header 6</h6></td>
|
<td><h1>Header 1</h1><h2>Header 2</h2><h3>Header 3</h3><h4>Header 4</h4><h5>Header 5</h5><h6>Header 6</h6></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Ordered list</td>
|
<td>Ordered list</td>
|
||||||
<td>1. First thing<br>2. Second thing</td>
|
<td>1. First thing<br>2. Second thing</td>
|
||||||
<td><ol><li>First thing</li><li>Second thing</li></ol></td>
|
<td><ol><li>First thing</li><li>Second thing</li></ol></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Unordered list</td>
|
<td>Unordered list</td>
|
||||||
<td>* First thing<br>* Second thing</td>
|
<td>* First thing<br>* Second thing</td>
|
||||||
<td><ul><li>First thing</li><li>Second thing</li></ul></td>
|
<td><ul><li>First thing</li><li>Second thing</li></ul></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Code Block</td>
|
<td>Code Block</td>
|
||||||
<td>```<br>Use three backticks above and below.<br>Or, indent the lines with four spaces.<br>```</td>
|
<td>```<br>Use three backticks above and below.<br>Or, indent the lines with four spaces.<br>```</td>
|
||||||
<td>
|
<td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Spoilers</td>
|
<td>Spoilers</td>
|
||||||
<td><s> bussy > gussy </s></td>
|
<td><s> bussy > gussy </s></td>
|
||||||
<td><p class="spoiler">bussy > gussy</p></td>
|
<td><p class="spoiler">bussy > gussy</p></td>
|
||||||
<pre>
|
<pre>
|
||||||
Use three backticks above and below.
|
Use three backticks above and below.
|
||||||
Or, indent the lines with four spaces.
|
Or, indent the lines with four spaces.
|
||||||
</pre>
|
</pre>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
## Custom Formatting
|
## Custom Formatting
|
||||||
|
|
||||||
We also have some custom hooks for mentioning users and subreddits. Note that these only work if the mentioned user or subreddit actually exists.
|
We also have some custom hooks for mentioning users and subreddits. Note that these only work if the mentioned user or subreddit actually exists.
|
||||||
|
|
||||||
{% endfilter %}
|
{% endfilter %}
|
||||||
|
|
||||||
<table class="table table-striped mb-5">
|
<table class="table table-striped mb-5">
|
||||||
<thead class="bg-primary text-white">
|
<thead class="bg-primary text-white">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Type</th>
|
<th>Type</th>
|
||||||
<th>Displays as</th>
|
<th>Displays as</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Username Mention</td>
|
<td>Username Mention</td>
|
||||||
<td>@QuadNarca</td>
|
<td>@QuadNarca</td>
|
||||||
<td><a class="d-inline-block" href="/@QuadNarca"><img src="/@QuadNarca/pic/profile" class="profile-pic-20 mr-1">@QuadNarca</a></td>
|
<td><a class="d-inline-block" href="/@QuadNarca"><img src="/@QuadNarca/pic/profile" class="profile-pic-20 mr-1">@QuadNarca</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Subreddit Mention</td>
|
<td>Subreddit Mention</td>
|
||||||
<td>r/{{'SITE_NAME' | app_config}}</td>
|
<td>r/{{'SITE_NAME' | app_config}}</td>
|
||||||
<td><a class="d-inline-block" href="https://www.reddit.com/r/{{'SITE_NAME' | app_config}}/">r/{{'SITE_NAME' | app_config}}</a></td>
|
<td><a class="d-inline-block" href="https://www.reddit.com/r/{{'SITE_NAME' | app_config}}/">r/{{'SITE_NAME' | app_config}}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Redditor Mention</td>
|
<td>Redditor Mention</td>
|
||||||
<td>u/Bardfinn</td>
|
<td>u/Bardfinn</td>
|
||||||
<td><a class="d-inline-block" href="https://www.reddit.com/u/Bardfinn/">u/Bardfinn</a></td>
|
<td><a class="d-inline-block" href="https://www.reddit.com/u/Bardfinn/">u/Bardfinn</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
{% include "expanded_image_modal.html" %}
|
{% include "expanded_image_modal.html" %}
|
||||||
{% include "expanded_video_modal.html" %}
|
{% include "expanded_video_modal.html" %}
|
||||||
|
|
||||||
<script src="/assets/js/js.js"></script>
|
<script src="/assets/js/js.js"></script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -134,4 +134,4 @@
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,119 +1,119 @@
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
<meta name="description" content="Sign in to {{'SITE_NAME' | app_config}}">
|
<meta name="description" content="Sign in to {{'SITE_NAME' | app_config}}">
|
||||||
<meta name="author" content="">
|
<meta name="author" content="">
|
||||||
|
|
||||||
<title>2-Step Login - {{'SITE_NAME' | app_config}}</title>
|
<title>2-Step Login - {{'SITE_NAME' | app_config}}</title>
|
||||||
|
|
||||||
<!-- Bootstrap core CSS -->
|
<!-- Bootstrap core CSS -->
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
|
||||||
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
|
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
|
||||||
|
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link href="/assets/fontawesome/css/all.css" rel="stylesheet"> <!--load all styles -->
|
<link href="/assets/fontawesome/css/all.css" rel="stylesheet"> <!--load all styles -->
|
||||||
|
|
||||||
<script data-search-pseudo-elements defer src="https://use.fontawesome.com/releases/latest/js/js.js"
|
<script data-search-pseudo-elements defer src="https://use.fontawesome.com/releases/latest/js/js.js"
|
||||||
integrity="sha384-L469/ELG4Bg9sDQbl0hvjMq8pOcqFgkSpwhwnslzvVVGpDjYJ6wJJyYjvG3u8XW7"
|
integrity="sha384-L469/ELG4Bg9sDQbl0hvjMq8pOcqFgkSpwhwnslzvVVGpDjYJ6wJJyYjvG3u8XW7"
|
||||||
crossorigin="anonymous"></script>
|
crossorigin="anonymous"></script>
|
||||||
|
|
||||||
<!-- {{'SITE_NAME' | app_config}} CSS -->
|
<!-- {{'SITE_NAME' | app_config}} CSS -->
|
||||||
<link rel="stylesheet" href="/assets/style/{{'DEFAULT_THEME' | app_config}}.css">
|
<link rel="stylesheet" href="/assets/style/{{'DEFAULT_THEME' | app_config}}.css">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="login">
|
<body id="login">
|
||||||
|
|
||||||
<!-- Navigation -->
|
<!-- Navigation -->
|
||||||
|
|
||||||
<nav class="navbar navbar-expand-lg navbar-dark bg-transparent fixed-top border-0">
|
<nav class="navbar navbar-expand-lg navbar-dark bg-transparent fixed-top border-0">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<button class="navbar-toggler d-none" type="button" data-toggle="collapse" data-target="#navbarResponsive"
|
<button class="navbar-toggler d-none" type="button" data-toggle="collapse" data-target="#navbarResponsive"
|
||||||
aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<!-- Page Content -->
|
<!-- Page Content -->
|
||||||
|
|
||||||
<div class="container-fluid position-absolute h-100 p-0 overflow-auto">
|
<div class="container-fluid position-absolute h-100 p-0 overflow-auto">
|
||||||
<div class="row no-gutters h-100">
|
<div class="row no-gutters h-100">
|
||||||
|
|
||||||
<div class="col-12 col-md-6 my-auto p-3">
|
<div class="col-12 col-md-6 my-auto p-3">
|
||||||
|
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
|
|
||||||
<div class="col-10 col-md-7">
|
<div class="col-10 col-md-7">
|
||||||
|
|
||||||
<div class="mb-5">
|
<div class="mb-5">
|
||||||
<a href="/" class="text-decoration-none"><span class="h3 text-primary">{{'SITE_NAME' | app_config}}</span></a>
|
<a href="/" class="text-decoration-none"><span class="h3 text-primary">{{'SITE_NAME' | app_config}}</span></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="login-form" class="">
|
<div id="login-form" class="">
|
||||||
|
|
||||||
<h1 class="h2">Two-step login</h1>
|
<h1 class="h2">Two-step login</h1>
|
||||||
|
|
||||||
<p class="text-muted mb-md-5">To login, please enter the 6-digit verification code generated in your authenticator app.</p>
|
<p class="text-muted mb-md-5">To login, please enter the 6-digit verification code generated in your authenticator app.</p>
|
||||||
|
|
||||||
{% if failed %}
|
{% if failed %}
|
||||||
<div class="alert alert-danger alert-dismissible fade show d-flex my-3" role="alert">
|
<div class="alert alert-danger alert-dismissible fade show d-flex my-3" role="alert">
|
||||||
<i class="fas fa-exclamation-circle my-auto"></i>
|
<i class="fas fa-exclamation-circle my-auto"></i>
|
||||||
<div>
|
<div>
|
||||||
Invalid verification code. Please try again.
|
Invalid verification code. Please try again.
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<form action="/login" method="post" class="mt-md-3" id="login">
|
<form action="/login" method="post" class="mt-md-3" id="login">
|
||||||
|
|
||||||
<input type="hidden" name="username" value="{{v.username}}">
|
<input type="hidden" name="username" value="{{v.username}}">
|
||||||
<input type="hidden" name="redirect" value="{{redirect}}">
|
<input type="hidden" name="redirect" value="{{redirect}}">
|
||||||
|
|
||||||
<input type="hidden" name="time" value="{{time}}">
|
<input type="hidden" name="time" value="{{time}}">
|
||||||
<input type="hidden" name="hash" value="{{hash}}">
|
<input type="hidden" name="hash" value="{{hash}}">
|
||||||
|
|
||||||
<label for="2fa_token" class="mt-3">Your verification code</label>
|
<label for="2fa_token" class="mt-3">Your verification code</label>
|
||||||
|
|
||||||
<input class="form-control" id="2fa_token" name="2fa_token" type="text" placeholder="6-digit code">
|
<input class="form-control" id="2fa_token" name="2fa_token" type="text" placeholder="6-digit code">
|
||||||
|
|
||||||
<small><a href="/lost_2fa">Lost your 2FA device?</a></small>
|
<small><a href="/lost_2fa">Lost your 2FA device?</a></small>
|
||||||
|
|
||||||
<button class="btn btn-primary login w-100 mt-3" id="login_button">Sign in</button>
|
<button class="btn btn-primary login w-100 mt-3" id="login_button">Sign in</button>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12 col-md-6 d-none d-md-block">
|
<div class="col-12 col-md-6 d-none d-md-block">
|
||||||
|
|
||||||
<div class="splash-wrapper">
|
<div class="splash-wrapper">
|
||||||
|
|
||||||
<div class="splash-overlay"></div>
|
<div class="splash-overlay"></div>
|
||||||
|
|
||||||
<img class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.gif"></img>
|
<img class="splash-img" src="/assets/images/{{'SITE_NAME' | app_config}}/cover.gif"></img>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -260,4 +260,4 @@
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html
|
</html>
|
|
@ -233,4 +233,4 @@
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html
|
</html>
|
|
@ -229,4 +229,4 @@
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -148,4 +148,4 @@
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,466 +1,466 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
|
|
||||||
{% include "bootstrap.html" %}
|
{% include "bootstrap.html" %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('#submitform').submit(function() {
|
$('#submitform').submit(function() {
|
||||||
// disable button
|
// disable button
|
||||||
$("#create_button").prop("disabled", true);
|
$("#create_button").prop("disabled", true);
|
||||||
// add spinner to button
|
// add spinner to button
|
||||||
$("#create_button").html('<span class="spinner-border spinner-border-sm mr-2" role="status" aria-hidden="true"></span>Creating post');
|
$("#create_button").html('<span class="spinner-border spinner-border-sm mr-2" role="status" aria-hidden="true"></span>Creating post');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Text Formatting
|
// Text Formatting
|
||||||
|
|
||||||
// Bold Text
|
// Bold Text
|
||||||
|
|
||||||
makeBold = function (form) {
|
makeBold = function (form) {
|
||||||
var text = document.getElementById(form);
|
var text = document.getElementById(form);
|
||||||
var startIndex = text.selectionStart,
|
var startIndex = text.selectionStart,
|
||||||
endIndex = text.selectionEnd;
|
endIndex = text.selectionEnd;
|
||||||
var selectedText = text.value.substring(startIndex, endIndex);
|
var selectedText = text.value.substring(startIndex, endIndex);
|
||||||
|
|
||||||
var format = '**'
|
var format = '**'
|
||||||
|
|
||||||
if (selectedText.includes('**')) {
|
if (selectedText.includes('**')) {
|
||||||
text.value = selectedText.replace(/\*/g, '');
|
text.value = selectedText.replace(/\*/g, '');
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (selectedText.length == 0) {
|
else if (selectedText.length == 0) {
|
||||||
text.value = text.value.substring(0, startIndex) + selectedText + text.value.substring(endIndex);
|
text.value = text.value.substring(0, startIndex) + selectedText + text.value.substring(endIndex);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
text.value = text.value.substring(0, startIndex) + format + selectedText + format + text.value.substring(endIndex);
|
text.value = text.value.substring(0, startIndex) + format + selectedText + format + text.value.substring(endIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Italicize Comment Text
|
// Italicize Comment Text
|
||||||
|
|
||||||
makeItalics = function (form) {
|
makeItalics = function (form) {
|
||||||
var text = document.getElementById(form);
|
var text = document.getElementById(form);
|
||||||
var startIndex = text.selectionStart,
|
var startIndex = text.selectionStart,
|
||||||
endIndex = text.selectionEnd;
|
endIndex = text.selectionEnd;
|
||||||
var selectedText = text.value.substring(startIndex, endIndex);
|
var selectedText = text.value.substring(startIndex, endIndex);
|
||||||
|
|
||||||
var format = '*'
|
var format = '*'
|
||||||
|
|
||||||
if (selectedText.includes('*')) {
|
if (selectedText.includes('*')) {
|
||||||
text.value = selectedText.replace(/\*/g, '');
|
text.value = selectedText.replace(/\*/g, '');
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (selectedText.length == 0) {
|
else if (selectedText.length == 0) {
|
||||||
text.value = text.value.substring(0, startIndex) + selectedText + text.value.substring(endIndex);
|
text.value = text.value.substring(0, startIndex) + selectedText + text.value.substring(endIndex);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
text.value = text.value.substring(0, startIndex) + format + selectedText + format + text.value.substring(endIndex);
|
text.value = text.value.substring(0, startIndex) + format + selectedText + format + text.value.substring(endIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Quote Comment Text
|
// Quote Comment Text
|
||||||
|
|
||||||
makeQuote = function (form) {
|
makeQuote = function (form) {
|
||||||
var text = document.getElementById(form);
|
var text = document.getElementById(form);
|
||||||
var startIndex = text.selectionStart,
|
var startIndex = text.selectionStart,
|
||||||
endIndex = text.selectionEnd;
|
endIndex = text.selectionEnd;
|
||||||
var selectedText = text.value.substring(startIndex, endIndex);
|
var selectedText = text.value.substring(startIndex, endIndex);
|
||||||
|
|
||||||
var format = '>'
|
var format = '>'
|
||||||
|
|
||||||
if (selectedText.includes('>')) {
|
if (selectedText.includes('>')) {
|
||||||
text.value = text.value.substring(0, startIndex) + selectedText.replace(/\>/g, '') + text.value.substring(endIndex);
|
text.value = text.value.substring(0, startIndex) + selectedText.replace(/\>/g, '') + text.value.substring(endIndex);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (selectedText.length == 0) {
|
else if (selectedText.length == 0) {
|
||||||
text.value = text.value.substring(0, startIndex) + selectedText + text.value.substring(endIndex);
|
text.value = text.value.substring(0, startIndex) + selectedText + text.value.substring(endIndex);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
text.value = text.value.substring(0, startIndex) + format + selectedText + text.value.substring(endIndex);
|
text.value = text.value.substring(0, startIndex) + format + selectedText + text.value.substring(endIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Character Count
|
// Character Count
|
||||||
|
|
||||||
function charLimit(form, text) {
|
function charLimit(form, text) {
|
||||||
|
|
||||||
var input = document.getElementById(form);
|
var input = document.getElementById(form);
|
||||||
|
|
||||||
var text = document.getElementById(text);
|
var text = document.getElementById(text);
|
||||||
|
|
||||||
var length = input.value.length;
|
var length = input.value.length;
|
||||||
|
|
||||||
var maxLength = input.getAttribute("maxlength");
|
var maxLength = input.getAttribute("maxlength");
|
||||||
|
|
||||||
if (length >= maxLength) {
|
if (length >= maxLength) {
|
||||||
text.style.color = "#E53E3E";
|
text.style.color = "#E53E3E";
|
||||||
}
|
}
|
||||||
else if (length >= maxLength * .72){
|
else if (length >= maxLength * .72){
|
||||||
text.style.color = "#FFC107";
|
text.style.color = "#FFC107";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
text.style.color = "#A0AEC0";
|
text.style.color = "#A0AEC0";
|
||||||
}
|
}
|
||||||
|
|
||||||
text.innerText = maxLength - length;
|
text.innerText = maxLength - length;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//part of submit page js
|
//part of submit page js
|
||||||
|
|
||||||
hide_image=function(){
|
hide_image=function(){
|
||||||
x=document.getElementById('image-upload-block');
|
x=document.getElementById('image-upload-block');
|
||||||
url=document.getElementById('post-URL').value;
|
url=document.getElementById('post-URL').value;
|
||||||
if (url.length>=1){
|
if (url.length>=1){
|
||||||
x.classList.add('d-none');
|
x.classList.add('d-none');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
x.classList.remove('d-none');
|
x.classList.remove('d-none');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auto-suggest title given URL
|
// Auto-suggest title given URL
|
||||||
|
|
||||||
function autoSuggestTitle() {
|
function autoSuggestTitle() {
|
||||||
|
|
||||||
var urlField = document.getElementById("post-URL");
|
var urlField = document.getElementById("post-URL");
|
||||||
|
|
||||||
var titleField = document.getElementById("post-title");
|
var titleField = document.getElementById("post-title");
|
||||||
|
|
||||||
var isValidURL = urlField.checkValidity();
|
var isValidURL = urlField.checkValidity();
|
||||||
|
|
||||||
if (isValidURL && urlField.value.length > 0 && titleField.value === "") {
|
if (isValidURL && urlField.value.length > 0 && titleField.value === "") {
|
||||||
|
|
||||||
var x = new XMLHttpRequest();
|
var x = new XMLHttpRequest();
|
||||||
x.withCredentials=true;
|
x.withCredentials=true;
|
||||||
x.onreadystatechange = function() {
|
x.onreadystatechange = function() {
|
||||||
if (x.readyState == 4 && x.status == 200) {
|
if (x.readyState == 4 && x.status == 200) {
|
||||||
|
|
||||||
title=JSON.parse(x.responseText)["title"];
|
title=JSON.parse(x.responseText)["title"];
|
||||||
titleField.value=title;
|
titleField.value=title;
|
||||||
|
|
||||||
checkForRequired()
|
checkForRequired()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
x.open('get','/submit/title?url=' + urlField.value);
|
x.open('get','/submit/title?url=' + urlField.value);
|
||||||
x.send(null);
|
x.send(null);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Run AutoSuggestTitle function on load
|
// Run AutoSuggestTitle function on load
|
||||||
|
|
||||||
if (window.location.pathname=='/submit') {
|
if (window.location.pathname=='/submit') {
|
||||||
window.onload = autoSuggestTitle();
|
window.onload = autoSuggestTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Paste to create submission
|
// Paste to create submission
|
||||||
|
|
||||||
document.addEventListener('paste', function (event) {
|
document.addEventListener('paste', function (event) {
|
||||||
|
|
||||||
var nothingFocused = document.activeElement === document.body;
|
var nothingFocused = document.activeElement === document.body;
|
||||||
|
|
||||||
if (nothingFocused) {
|
if (nothingFocused) {
|
||||||
|
|
||||||
var clipText = event.clipboardData.getData('Text');
|
var clipText = event.clipboardData.getData('Text');
|
||||||
|
|
||||||
var url = new RegExp('^(?:[a-z]+:)?//', 'i');
|
var url = new RegExp('^(?:[a-z]+:)?//', 'i');
|
||||||
|
|
||||||
if (url.test(clipText) && window.location.pathname !== '/submit') {
|
if (url.test(clipText) && window.location.pathname !== '/submit') {
|
||||||
window.location.href = '/submit?url=' + clipText;
|
window.location.href = '/submit?url=' + clipText;
|
||||||
}
|
}
|
||||||
else if (url.test(clipText) && window.location.pathname == '/submit') {
|
else if (url.test(clipText) && window.location.pathname == '/submit') {
|
||||||
|
|
||||||
document.getElementById("post-URL").value = clipText;
|
document.getElementById("post-URL").value = clipText;
|
||||||
|
|
||||||
autoSuggestTitle()
|
autoSuggestTitle()
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Submit Page Front-end Validation
|
// Submit Page Front-end Validation
|
||||||
|
|
||||||
function checkForRequired() {
|
function checkForRequired() {
|
||||||
|
|
||||||
// Divs
|
// Divs
|
||||||
|
|
||||||
var title = document.getElementById("post-title");
|
var title = document.getElementById("post-title");
|
||||||
|
|
||||||
var url = document.getElementById("post-URL");
|
var url = document.getElementById("post-URL");
|
||||||
|
|
||||||
var text = document.getElementById("post-text");
|
var text = document.getElementById("post-text");
|
||||||
|
|
||||||
var button = document.getElementById("create_button");
|
var button = document.getElementById("create_button");
|
||||||
|
|
||||||
var image = document.getElementById("file-upload");
|
var image = document.getElementById("file-upload");
|
||||||
|
|
||||||
// Toggle reuqired attribute
|
// Toggle reuqired attribute
|
||||||
|
|
||||||
if (url.value.length > 0 || image.value.length > 0) {
|
if (url.value.length > 0 || image.value.length > 0) {
|
||||||
text.required = false;
|
text.required = false;
|
||||||
url.required=false;
|
url.required=false;
|
||||||
} else if (text.value.length > 0 || image.value.length > 0) {
|
} else if (text.value.length > 0 || image.value.length > 0) {
|
||||||
url.required = false;
|
url.required = false;
|
||||||
} else {
|
} else {
|
||||||
text.required = true;
|
text.required = true;
|
||||||
url.required = true;
|
url.required = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validity check
|
// Validity check
|
||||||
|
|
||||||
var isValidTitle = title.checkValidity();
|
var isValidTitle = title.checkValidity();
|
||||||
|
|
||||||
var isValidURL = url.checkValidity();
|
var isValidURL = url.checkValidity();
|
||||||
|
|
||||||
var isValidText = text.checkValidity();
|
var isValidText = text.checkValidity();
|
||||||
|
|
||||||
// Disable submit button if invalid inputs
|
// Disable submit button if invalid inputs
|
||||||
|
|
||||||
if (isValidTitle && (isValidURL || image.value.length>0)) {
|
if (isValidTitle && (isValidURL || image.value.length>0)) {
|
||||||
button.disabled = false;
|
button.disabled = false;
|
||||||
} else if (isValidTitle && isValidText) {
|
} else if (isValidTitle && isValidText) {
|
||||||
button.disabled = false;
|
button.disabled = false;
|
||||||
} else {
|
} else {
|
||||||
button.disabled = true;
|
button.disabled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<meta name="author" content="">
|
<meta name="author" content="">
|
||||||
<link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/favicon.gif">
|
<link rel="icon" type="image/png" href="/assets/images/{{'SITE_NAME' | app_config}}/favicon.gif">
|
||||||
|
|
||||||
{% include "emoji_modal.html" %}
|
{% include "emoji_modal.html" %}
|
||||||
{% include "gif_modal.html" %}
|
{% include "gif_modal.html" %}
|
||||||
|
|
||||||
{% block title %}
|
{% block title %}
|
||||||
<title>Create a post - {{'SITE_NAME' | app_config}}</title>
|
<title>Create a post - {{'SITE_NAME' | app_config}}</title>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
<!-- Bootstrap core CSS -->
|
<!-- Bootstrap core CSS -->
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
|
||||||
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
|
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
|
||||||
|
|
||||||
<!-- {{'SITE_NAME' | app_config}} Board CSS -->
|
<!-- {{'SITE_NAME' | app_config}} Board CSS -->
|
||||||
|
|
||||||
{% block stylesheets %}
|
{% block stylesheets %}
|
||||||
{% if v %}
|
{% if v %}
|
||||||
<link rel="stylesheet" href="/assets/style/{{v.theme}}_{{v.themecolor}}.css">
|
<link rel="stylesheet" href="/assets/style/{{v.theme}}_{{v.themecolor}}.css">
|
||||||
{% if v.agendaposter %}<link rel="stylesheet" href="/assets/style/agendaposter.css">{% elif v.css %}<link rel="stylesheet" href="/@{{v.username}}/css">{% endif %}
|
{% if v.agendaposter %}<link rel="stylesheet" href="/assets/style/agendaposter.css">{% elif v.css %}<link rel="stylesheet" href="/@{{v.username}}/css">{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<link rel="stylesheet" href="/assets/style/{{'DEFAULT_THEME' | app_config}}.css">
|
<link rel="stylesheet" href="/assets/style/{{'DEFAULT_THEME' | app_config}}.css">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link href="/assets/style/fa.css" rel="stylesheet"> <!--load all styles -->
|
<link href="/assets/style/fa.css" rel="stylesheet"> <!--load all styles -->
|
||||||
|
|
||||||
{% if v %}
|
{% if v %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function post(url, callback, errortext) {
|
function post(url, callback, errortext) {
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.open("POST", url, true);
|
xhr.open("POST", url, true);
|
||||||
var form = new FormData()
|
var form = new FormData()
|
||||||
form.append("formkey", "{{v.formkey}}");
|
form.append("formkey", "{{v.formkey}}");
|
||||||
xhr.withCredentials=true;
|
xhr.withCredentials=true;
|
||||||
xhr.onload=callback
|
xhr.onload=callback
|
||||||
xhr.onerror=function(){alert(errortext)}
|
xhr.onerror=function(){alert(errortext)}
|
||||||
xhr.send(form);
|
xhr.send(form);
|
||||||
}
|
}
|
||||||
function formkey() {
|
function formkey() {
|
||||||
return '{{v.formkey}}';
|
return '{{v.formkey}}';
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="submit" 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 %}">
|
<body id="submit" 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 %}">
|
||||||
|
|
||||||
<!-- Navigation -->
|
<!-- Navigation -->
|
||||||
{% include "header.html" %}
|
{% include "header.html" %}
|
||||||
|
|
||||||
{% block form %}
|
{% block form %}
|
||||||
|
|
||||||
<!-- Page Content -->
|
<!-- Page Content -->
|
||||||
|
|
||||||
<form id="submitform" action="/submit" method="post" enctype="multipart/form-data">
|
<form id="submitform" action="/submit" method="post" enctype="multipart/form-data">
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<div class="row justify-content-center mb-4 pb-7">
|
<div class="row justify-content-center mb-4 pb-7">
|
||||||
|
|
||||||
<div class="col col-md-6 p-3 py-md-0">
|
<div class="col col-md-6 p-3 py-md-0">
|
||||||
|
|
||||||
<h1 class="d-none d-md-block">Create a post</h1>
|
<h1 class="d-none d-md-block">Create a post</h1>
|
||||||
|
|
||||||
<h2 class="h3 d-md-none">Create a post</h2>
|
<h2 class="h3 d-md-none">Create a post</h2>
|
||||||
|
|
||||||
<div class="body">
|
<div class="body">
|
||||||
|
|
||||||
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
<input type="hidden" name="formkey" value="{{v.formkey}}">
|
||||||
|
|
||||||
<label for="title">Post Title</label>
|
<label for="title">Post Title</label>
|
||||||
|
|
||||||
|
|
||||||
<input class="form-control" id="post-title" aria-describedby="titleHelpRegister" type="text" name="title" placeholder="Required" value="{{title}}" minlength="1" maxlength="500" required oninput="checkForRequired()">
|
<input class="form-control" id="post-title" aria-describedby="titleHelpRegister" type="text" name="title" placeholder="Required" value="{{title}}" minlength="1" maxlength="500" required oninput="checkForRequired()">
|
||||||
|
|
||||||
<div id="urlblock">
|
<div id="urlblock">
|
||||||
<label for="URL" class="mt-3">URL</label>
|
<label for="URL" class="mt-3">URL</label>
|
||||||
<input class="form-control" id="post-URL" aria-describedby="URLHelp" type="url" name="url" placeholder="Optional if you have text." value="{{request.args.get('url','')}}" required oninput="checkForRequired();autoSuggestTitle();hide_image()">
|
<input class="form-control" id="post-URL" aria-describedby="URLHelp" type="url" name="url" placeholder="Optional if you have text." value="{{request.args.get('url','')}}" required oninput="checkForRequired();autoSuggestTitle();hide_image()">
|
||||||
<small class="form-text text-muted">To post an image, use a direct image link such as i.imgur.com</small>
|
<small class="form-text text-muted">To post an image, use a direct image link such as i.imgur.com</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="image-upload-block">
|
<div id="image-upload-block">
|
||||||
<div><label class="mt-3">Image Upload</label></div>
|
<div><label class="mt-3">Image Upload</label></div>
|
||||||
|
|
||||||
<img id="image-preview" class="w-100 d-block">
|
<img id="image-preview" class="w-100 d-block">
|
||||||
|
|
||||||
<label class="btn btn-secondary m-0" for="file-upload">
|
<label class="btn btn-secondary m-0" for="file-upload">
|
||||||
<div id="filename-show">Select Image</div>
|
<div id="filename-show">Select Image</div>
|
||||||
<input id="file-upload" type="file" name="file" accept="image/*" hidden>
|
<input id="file-upload" type="file" name="file" accept="image/*" hidden>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<small class="form-text text-muted">Images uploaded will be public. Optional if you have text.</small>
|
<small class="form-text text-muted">Images uploaded will be public. Optional if you have text.</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<label for="body" class="mt-3">Text<i class="fas fa-info-circle text-gray-400 ml-1" data-toggle="tooltip" data-placement="top" title="Uses markdown. Limited to 10000 characters."></i></label>
|
<label for="body" class="mt-3">Text<i class="fas fa-info-circle text-gray-400 ml-1" data-toggle="tooltip" data-placement="top" title="Uses markdown. Limited to 10000 characters."></i></label>
|
||||||
|
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
|
|
||||||
<textarea form="submitform" id="post-text" class="form-control rounded" aria-label="With textarea" placeholder="Optional if you have a link or an image." rows="3" name="body" oninput="charLimit('post-text','character-count-submit-text-form');checkForRequired()" maxlength="10000" required>{{text}}</textarea>
|
<textarea form="submitform" id="post-text" class="form-control rounded" aria-label="With textarea" placeholder="Optional if you have a link or an image." rows="3" name="body" oninput="charLimit('post-text','character-count-submit-text-form');checkForRequired()" maxlength="10000" required>{{text}}</textarea>
|
||||||
|
|
||||||
<span class="position-absolute text-small font-weight-bold" id="character-count-submit-text-form" style="right: 1rem; bottom: 0.5rem; z-index: 3;"></span>
|
<span class="position-absolute text-small font-weight-bold" id="character-count-submit-text-form" style="right: 1rem; bottom: 0.5rem; z-index: 3;"></span>
|
||||||
|
|
||||||
<div class="bg-light text-format d-none">
|
<div class="bg-light text-format d-none">
|
||||||
<small class="format"><i class="fas fa-bold"></i></small>
|
<small class="format"><i class="fas fa-bold"></i></small>
|
||||||
<small class="format"><i class="fas fa-italic"></i></small>
|
<small class="format"><i class="fas fa-italic"></i></small>
|
||||||
<small class="format"><i class="fas fa-quote-right"></i></small>
|
<small class="format"><i class="fas fa-quote-right"></i></small>
|
||||||
<small class="format"><i class="fas fa-link"></i></small>
|
<small class="format"><i class="fas fa-link"></i></small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p></p>
|
<p></p>
|
||||||
<small class="btn btn-secondary format d-inline-block m-0">
|
<small class="btn btn-secondary format d-inline-block m-0">
|
||||||
<i class="fas fa-bold" aria-hidden="true" onclick="makeBold('post-text')" data-toggle="tooltip" data-placement="bottom" title="Bold"></i>
|
<i class="fas fa-bold" aria-hidden="true" onclick="makeBold('post-text')" data-toggle="tooltip" data-placement="bottom" title="Bold"></i>
|
||||||
</small>
|
</small>
|
||||||
|
|
||||||
<small class="btn btn-secondary format d-inline-block m-0">
|
<small class="btn btn-secondary format d-inline-block m-0">
|
||||||
<i class="fas fa-italic" aria-hidden="true" onclick="makeItalics('post-text')" data-toggle="tooltip" data-placement="bottom" title="Italicize"></i>
|
<i class="fas fa-italic" aria-hidden="true" onclick="makeItalics('post-text')" data-toggle="tooltip" data-placement="bottom" title="Italicize"></i>
|
||||||
</small>
|
</small>
|
||||||
|
|
||||||
<small class="btn btn-secondary format d-inline-block m-0">
|
<small class="btn btn-secondary format d-inline-block m-0">
|
||||||
<i class="fas fa-quote-right" aria-hidden="true" onclick="makeQuote('post-text')" data-toggle="tooltip" data-placement="bottom" title="Quote"></i>
|
<i class="fas fa-quote-right" aria-hidden="true" onclick="makeQuote('post-text')" data-toggle="tooltip" data-placement="bottom" title="Quote"></i>
|
||||||
</small>
|
</small>
|
||||||
|
|
||||||
<small class="btn btn-secondary format d-inline-block m-0"><span class="font-weight-bolder text-uppercase" aria-hidden="true" onclick="getGif();commentForm('post-text')" data-toggle="modal" data-target="#gifModal" data-toggle="tooltip" data-placement="bottom" title="Add GIF">GIF</span></small>
|
<small class="btn btn-secondary format d-inline-block m-0"><span class="font-weight-bolder text-uppercase" aria-hidden="true" onclick="getGif();commentForm('post-text')" data-toggle="modal" data-target="#gifModal" data-toggle="tooltip" data-placement="bottom" title="Add GIF">GIF</span></small>
|
||||||
|
|
||||||
<label class="btn btn-secondary format d-inline-block m-0" for="emoji-reply-btn">
|
<label class="btn btn-secondary format d-inline-block m-0" for="emoji-reply-btn">
|
||||||
<div id="emoji-reply-btn" onclick="loadEmojis('post-text')" aria-hidden="true" data-toggle="modal" data-target="#emojiModal" data-toggle="tooltip" data-placement="bottom" title="Add Emoji"><i class="fas fa-smile-beam"></i></div>
|
<div id="emoji-reply-btn" onclick="loadEmojis('post-text')" aria-hidden="true" data-toggle="modal" data-target="#emojiModal" data-toggle="tooltip" data-placement="bottom" title="Add Emoji"><i class="fas fa-smile-beam"></i></div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<div class="form-text text-small"><a href="/formatting" target="_blank">Formatting help</a></div>
|
<div class="form-text text-small"><a href="/formatting" target="_blank">Formatting help</a></div>
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
|
|
||||||
<div class="custom-control custom-checkbox">
|
<div class="custom-control custom-checkbox">
|
||||||
<input type="checkbox" class="custom-control-input" id="nsfwCheck" name="over_18">
|
<input type="checkbox" class="custom-control-input" id="nsfwCheck" name="over_18">
|
||||||
<label class="custom-control-label" for="nsfwCheck">+18</label>
|
<label class="custom-control-label" for="nsfwCheck">+18</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="custom-control custom-checkbox">
|
<div class="custom-control custom-checkbox">
|
||||||
<input type="checkbox" class="custom-control-input" id="privateCheck" name="private">
|
<input type="checkbox" class="custom-control-input" id="privateCheck" name="private">
|
||||||
<label class="custom-control-label" for="privateCheck">Unlisted</label>
|
<label class="custom-control-label" for="privateCheck">Unlisted</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row fixed-bottom bg-white border-top p-3" id="" style="z-index: 100; bottom: 0px; transition: bottom 220ms cubic-bezier(0, 0, 0.2, 1) 0s;">
|
<div class="row fixed-bottom bg-white border-top p-3" id="" style="z-index: 100; bottom: 0px; transition: bottom 220ms cubic-bezier(0, 0, 0.2, 1) 0s;">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<a href="/" class="btn btn-secondary">Cancel</a>
|
<a href="/" class="btn btn-secondary">Cancel</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col text-right">
|
<div class="col text-right">
|
||||||
{% if error %}<span class="text-danger mr-2">{{error}}</span>{% endif %}
|
{% if error %}<span class="text-danger mr-2">{{error}}</span>{% endif %}
|
||||||
<button class="btn btn-outline-purple" id="create_button" type="submit" disabled>Post</button>
|
<button class="btn btn-outline-purple" id="create_button" type="submit" disabled>Post</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
<!-- {{'SITE_NAME' | app_config}} JS -->
|
<!-- {{'SITE_NAME' | app_config}} JS -->
|
||||||
|
|
||||||
<script src="/assets/js/js.js"></script>
|
<script src="/assets/js/js.js"></script>
|
||||||
|
|
||||||
<!-- ClipboardJS -->
|
<!-- ClipboardJS -->
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script>
|
||||||
|
|
||||||
<!-- Instantiate clipboard by passing a string selector -->
|
<!-- Instantiate clipboard by passing a string selector -->
|
||||||
<script>
|
<script>
|
||||||
var clipboard = new ClipboardJS('.copy-link');
|
var clipboard = new ClipboardJS('.copy-link');
|
||||||
clipboard.on('success', function(e) {
|
clipboard.on('success', function(e) {
|
||||||
|
|
||||||
jQuery(function($) {
|
jQuery(function($) {
|
||||||
$('#toast-success').toast('show');
|
$('#toast-success').toast('show');
|
||||||
})
|
})
|
||||||
console.log(e);
|
console.log(e);
|
||||||
});
|
});
|
||||||
clipboard.on('error', function(e) {
|
clipboard.on('error', function(e) {
|
||||||
|
|
||||||
jQuery(function($) {
|
jQuery(function($) {
|
||||||
$('#toast-error').toast('show');
|
$('#toast-error').toast('show');
|
||||||
})
|
})
|
||||||
console.log(e);
|
console.log(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
document.onpaste = function(event) {
|
document.onpaste = function(event) {
|
||||||
f=document.getElementById('file-upload');
|
f=document.getElementById('file-upload');
|
||||||
files = event.clipboardData.files
|
files = event.clipboardData.files
|
||||||
filename = files[0].name.toLowerCase()
|
filename = files[0].name.toLowerCase()
|
||||||
if (filename.endsWith(".jpg") || filename.endsWith(".jpeg") || filename.endsWith(".png") || filename.endsWith(".gif"))
|
if (filename.endsWith(".jpg") || filename.endsWith(".jpeg") || filename.endsWith(".png") || filename.endsWith(".gif"))
|
||||||
{
|
{
|
||||||
f.files = files;
|
f.files = files;
|
||||||
$('#filename-show').text(filename);
|
$('#filename-show').text(filename);
|
||||||
$('#urlblock').addClass('d-none');
|
$('#urlblock').addClass('d-none');
|
||||||
var fileReader = new FileReader();
|
var fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {$('#image-preview').attr('src', this.result);});
|
fileReader.addEventListener("load", function () {$('#image-preview').attr('src', this.result);});
|
||||||
$('#file-upload').attr('required', false);
|
$('#file-upload').attr('required', false);
|
||||||
checkForRequired();
|
checkForRequired();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#file-upload').on('change', function(e){
|
$('#file-upload').on('change', function(e){
|
||||||
f=document.getElementById('file-upload');
|
f=document.getElementById('file-upload');
|
||||||
$('#urlblock').addClass('d-none');
|
$('#urlblock').addClass('d-none');
|
||||||
$('#filename-show').text($('#file-upload')[0].files[0].name);
|
$('#filename-show').text($('#file-upload')[0].files[0].name);
|
||||||
var fileReader = new FileReader();
|
var fileReader = new FileReader();
|
||||||
fileReader.readAsDataURL(f.files[0]);
|
fileReader.readAsDataURL(f.files[0]);
|
||||||
fileReader.addEventListener("load", function () {$('#image-preview').attr('src', this.result);});
|
fileReader.addEventListener("load", function () {$('#image-preview').attr('src', this.result);});
|
||||||
checkForRequired();
|
checkForRequired();
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in New Issue