videos: remove video uploads lol
This commit is contained in:
parent
0f10e1ea16
commit
872d9c613b
16 changed files with 30 additions and 136 deletions
|
@ -8,7 +8,6 @@ HCAPTCHA_SECRET=blahblahblah
|
||||||
YOUTUBE_KEY=blahblahblah
|
YOUTUBE_KEY=blahblahblah
|
||||||
PUSHER_ID=blahblahblah
|
PUSHER_ID=blahblahblah
|
||||||
PUSHER_KEY=blahblahblah
|
PUSHER_KEY=blahblahblah
|
||||||
IMGUR_KEY=blahblahblah
|
|
||||||
SPAM_SIMILARITY_THRESHOLD=0.5
|
SPAM_SIMILARITY_THRESHOLD=0.5
|
||||||
SPAM_URL_SIMILARITY_THRESHOLD=0.1
|
SPAM_URL_SIMILARITY_THRESHOLD=0.1
|
||||||
SPAM_SIMILAR_COUNT_THRESHOLD=10
|
SPAM_SIMILAR_COUNT_THRESHOLD=10
|
||||||
|
|
|
@ -86,7 +86,7 @@ from .volunteer_janitor import VolunteerJanitorRecord
|
||||||
|
|
||||||
# Then the import * from files.*
|
# Then the import * from files.*
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
from files.helpers.images import *
|
from files.helpers.media import *
|
||||||
from files.helpers.lazy import *
|
from files.helpers.lazy import *
|
||||||
from files.helpers.security import *
|
from files.helpers.security import *
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from sqlalchemy.orm import deferred, aliased
|
from sqlalchemy.orm import deferred, aliased
|
||||||
from secrets import token_hex
|
from secrets import token_hex
|
||||||
import pyotp
|
import pyotp
|
||||||
from files.helpers.images import *
|
from files.helpers.media import *
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
from .alts import Alt
|
from .alts import Alt
|
||||||
from .saves import *
|
from .saves import *
|
||||||
|
|
|
@ -50,7 +50,6 @@ SORTS_POSTS = {
|
||||||
SORTS_POSTS.update(SORTS_COMMON)
|
SORTS_POSTS.update(SORTS_COMMON)
|
||||||
SORTS_COMMENTS = SORTS_COMMON
|
SORTS_COMMENTS = SORTS_COMMON
|
||||||
|
|
||||||
IMGUR_KEY = environ.get("IMGUR_KEY").strip()
|
|
||||||
PUSHER_ID = environ.get("PUSHER_ID", "").strip()
|
PUSHER_ID = environ.get("PUSHER_ID", "").strip()
|
||||||
PUSHER_KEY = environ.get("PUSHER_KEY", "").strip()
|
PUSHER_KEY = environ.get("PUSHER_KEY", "").strip()
|
||||||
DEFAULT_COLOR = environ.get("DEFAULT_COLOR", "fff").strip()
|
DEFAULT_COLOR = environ.get("DEFAULT_COLOR", "fff").strip()
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
from PIL import Image, ImageOps
|
|
||||||
from PIL.ImageSequence import Iterator
|
|
||||||
from webptools import gifwebp
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
from flask import Request
|
||||||
|
from PIL import Image, ImageOps
|
||||||
|
from webptools import gifwebp
|
||||||
|
|
||||||
def process_image(filename=None, resize=0):
|
def process_image(filename=None, resize=0):
|
||||||
|
|
||||||
i = Image.open(filename)
|
i = Image.open(filename)
|
||||||
|
|
||||||
if resize and i.width > resize:
|
if resize and i.width > resize:
|
|
@ -1,13 +1,11 @@
|
||||||
import time
|
import time
|
||||||
from os import remove
|
|
||||||
from PIL import Image as IMAGE
|
|
||||||
|
|
||||||
from files.helpers.wrappers import *
|
from files.helpers.wrappers import *
|
||||||
from files.helpers.alerts import *
|
from files.helpers.alerts import *
|
||||||
from files.helpers.sanitize import *
|
from files.helpers.sanitize import *
|
||||||
from files.helpers.security import *
|
from files.helpers.security import *
|
||||||
from files.helpers.get import *
|
from files.helpers.get import *
|
||||||
from files.helpers.images import *
|
from files.helpers.media import *
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
from files.classes import *
|
from files.classes import *
|
||||||
from flask import *
|
from flask import *
|
||||||
|
@ -16,7 +14,6 @@ from .front import frontlist
|
||||||
from files.helpers.comments import comment_on_publish, comment_on_unpublish
|
from files.helpers.comments import comment_on_publish, comment_on_unpublish
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import requests
|
import requests
|
||||||
from urllib.parse import quote, urlencode
|
|
||||||
|
|
||||||
month = datetime.now().strftime('%B')
|
month = datetime.now().strftime('%B')
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from files.helpers.wrappers import *
|
from files.helpers.wrappers import *
|
||||||
from files.helpers.alerts import *
|
from files.helpers.alerts import *
|
||||||
from files.helpers.images import *
|
from files.helpers.media import process_image
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
from files.helpers.comments import comment_on_publish
|
from files.helpers.comments import comment_on_publish
|
||||||
from files.classes import *
|
from files.classes import *
|
||||||
|
@ -152,22 +152,7 @@ def api_comment(v):
|
||||||
body += f"\n\n"
|
body += f"\n\n"
|
||||||
else:
|
else:
|
||||||
body += f'\n\n<a href="{image}">{image}</a>'
|
body += f'\n\n<a href="{image}">{image}</a>'
|
||||||
elif file.content_type.startswith('video/'):
|
else: abort(400, "Image files only")
|
||||||
file.save("video.mp4")
|
|
||||||
with open("video.mp4", 'rb') as f:
|
|
||||||
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
|
|
||||||
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
|
|
||||||
try: url = req['link']
|
|
||||||
except:
|
|
||||||
error = req['error']
|
|
||||||
if error == 'File exceeds max duration': error += ' (60 seconds)'
|
|
||||||
abort(400, error)
|
|
||||||
if url.endswith('.'): url += 'mp4'
|
|
||||||
if app.config['MULTIMEDIA_EMBEDDING_ENABLED']:
|
|
||||||
body += f"\n\n{url}"
|
|
||||||
else:
|
|
||||||
body += f'\n\n<a href="{url}">{url}</a>'
|
|
||||||
else: abort(400, "Image/Video files only")
|
|
||||||
|
|
||||||
body_html = sanitize(body, comment=True)
|
body_html = sanitize(body, comment=True)
|
||||||
|
|
||||||
|
@ -330,19 +315,7 @@ def edit_comment(cid, v):
|
||||||
file.save(name)
|
file.save(name)
|
||||||
url = process_image(name)
|
url = process_image(name)
|
||||||
body += f"\n\n"
|
body += f"\n\n"
|
||||||
elif file.content_type.startswith('video/'):
|
else: abort(400, "Image files only")
|
||||||
file.save("video.mp4")
|
|
||||||
with open("video.mp4", 'rb') as f:
|
|
||||||
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
|
|
||||||
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
|
|
||||||
try: url = req['link']
|
|
||||||
except:
|
|
||||||
error = req['error']
|
|
||||||
if error == 'File exceeds max duration': error += ' (60 seconds)'
|
|
||||||
abort(400, error)
|
|
||||||
if url.endswith('.'): url += 'mp4'
|
|
||||||
body += f"\n\n{url}"
|
|
||||||
else: abort(400, "Image/Video files only")
|
|
||||||
|
|
||||||
body_html = sanitize(body, edit=True)
|
body_html = sanitize(body, edit=True)
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ from files.helpers.alerts import *
|
||||||
from files.helpers.comments import comment_filter_moderated
|
from files.helpers.comments import comment_filter_moderated
|
||||||
from files.helpers.contentsorting import sort_objects
|
from files.helpers.contentsorting import sort_objects
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
|
from files.helpers.media import process_image
|
||||||
from files.helpers.strings import sql_ilike_clean
|
from files.helpers.strings import sql_ilike_clean
|
||||||
from files.classes import *
|
from files.classes import *
|
||||||
from flask import *
|
from flask import *
|
||||||
|
@ -320,22 +321,7 @@ def edit_post(pid, v):
|
||||||
body += f"\n\n"
|
body += f"\n\n"
|
||||||
else:
|
else:
|
||||||
body += f'\n\n<a href="{url}">{url}</a>'
|
body += f'\n\n<a href="{url}">{url}</a>'
|
||||||
elif file.content_type.startswith('video/'):
|
else: abort(400, "Image files only")
|
||||||
file.save("video.mp4")
|
|
||||||
with open("video.mp4", 'rb') as f:
|
|
||||||
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
|
|
||||||
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
|
|
||||||
try: url = req['link']
|
|
||||||
except:
|
|
||||||
error = req['error']
|
|
||||||
if error == 'File exceeds max duration': error += ' (60 seconds)'
|
|
||||||
abort(400, error)
|
|
||||||
if url.endswith('.'): url += 'mp4'
|
|
||||||
if app.config['MULTIMEDIA_EMBEDDING_ENABLED']:
|
|
||||||
body += f"\n\n"
|
|
||||||
else:
|
|
||||||
body += f'\n\n<a href="{url}">{url}</a>'
|
|
||||||
else: abort(400, "Image/Video files only")
|
|
||||||
|
|
||||||
body_html = sanitize(body, edit=True)
|
body_html = sanitize(body, edit=True)
|
||||||
|
|
||||||
|
@ -739,23 +725,8 @@ def submit_post(v, sub=None):
|
||||||
body += f"\n\n"
|
body += f"\n\n"
|
||||||
else:
|
else:
|
||||||
body += f'\n\n<a href="{image}">{image}</a>'
|
body += f'\n\n<a href="{image}">{image}</a>'
|
||||||
elif file.content_type.startswith('video/'):
|
|
||||||
file.save("video.mp4")
|
|
||||||
with open("video.mp4", 'rb') as f:
|
|
||||||
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
|
|
||||||
except requests.Timeout: return error("Video upload timed out, please try again!")
|
|
||||||
try: url = req['link']
|
|
||||||
except:
|
|
||||||
err = req['error']
|
|
||||||
if err == 'File exceeds max duration': err += ' (60 seconds)'
|
|
||||||
return error(err)
|
|
||||||
if url.endswith('.'): url += 'mp4'
|
|
||||||
if app.config['MULTIMEDIA_EMBEDDING_ENABLED']:
|
|
||||||
body += f"\n\n"
|
|
||||||
else:
|
|
||||||
body += f'\n\n<a href="{url}">{url}</a>'
|
|
||||||
else:
|
else:
|
||||||
return error("Image/Video files only.")
|
return error("Image files only")
|
||||||
|
|
||||||
body_html = sanitize(body)
|
body_html = sanitize(body)
|
||||||
|
|
||||||
|
@ -809,21 +780,9 @@ def submit_post(v, sub=None):
|
||||||
|
|
||||||
name2 = name.replace('.webp', 'r.webp')
|
name2 = name.replace('.webp', 'r.webp')
|
||||||
copyfile(name, name2)
|
copyfile(name, name2)
|
||||||
post.thumburl = process_image(name2, resize=100)
|
post.thumburl = process_image(name2, resize=100)
|
||||||
elif file.content_type.startswith('video/'):
|
|
||||||
file.save("video.mp4")
|
|
||||||
with open("video.mp4", 'rb') as f:
|
|
||||||
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
|
|
||||||
except requests.Timeout: return error("Video upload timed out, please try again!")
|
|
||||||
try: url = req['link']
|
|
||||||
except:
|
|
||||||
err = req['error']
|
|
||||||
if err == 'File exceeds max duration': err += ' (60 seconds)'
|
|
||||||
return error(err)
|
|
||||||
if url.endswith('.'): url += 'mp4'
|
|
||||||
post.url = url
|
|
||||||
else:
|
else:
|
||||||
return error("Image/Video files only.")
|
return error("Image files only")
|
||||||
|
|
||||||
if not post.thumburl and post.url:
|
if not post.thumburl and post.url:
|
||||||
gevent.spawn(thumbnail_thread, post.id)
|
gevent.spawn(thumbnail_thread, post.id)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from files.helpers.alerts import *
|
from files.helpers.alerts import *
|
||||||
|
from files.helpers.media import process_image
|
||||||
from files.helpers.sanitize import *
|
from files.helpers.sanitize import *
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
from files.mail import *
|
from files.mail import *
|
||||||
|
@ -171,21 +172,9 @@ def settings_profile_post(v):
|
||||||
file.save(name)
|
file.save(name)
|
||||||
url = process_image(name)
|
url = process_image(name)
|
||||||
bio += f"\n\n"
|
bio += f"\n\n"
|
||||||
elif file.content_type.startswith('video/'):
|
|
||||||
file.save("video.mp4")
|
|
||||||
with open("video.mp4", 'rb') as f:
|
|
||||||
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
|
|
||||||
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
|
|
||||||
try: url = req['link']
|
|
||||||
except:
|
|
||||||
error = req['error']
|
|
||||||
if error == 'File exceeds max duration': error += ' (60 seconds)'
|
|
||||||
abort(400, error)
|
|
||||||
if url.endswith('.'): url += 'mp4'
|
|
||||||
bio += f"\n\n{url}"
|
|
||||||
else:
|
else:
|
||||||
if request.headers.get("Authorization") or request.headers.get("xhr"): abort(400, "Image/Video files only")
|
if request.headers.get("Authorization") or request.headers.get("xhr"): abort(400, "Image files only")
|
||||||
return render_template("settings_profile.html", v=v, error="Image/Video files only."), 400
|
return render_template("settings_profile.html", v=v, error="Image files only"), 400
|
||||||
|
|
||||||
bio_html = sanitize(bio)
|
bio_html = sanitize(bio)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from files.helpers.media import process_image
|
||||||
from files.mail import *
|
from files.mail import *
|
||||||
from files.__main__ import app, limiter, mail
|
from files.__main__ import app, limiter, mail
|
||||||
from files.helpers.alerts import *
|
from files.helpers.alerts import *
|
||||||
|
@ -311,19 +312,7 @@ def submit_contact(v: Optional[User]):
|
||||||
file.save(name)
|
file.save(name)
|
||||||
url = process_image(name)
|
url = process_image(name)
|
||||||
html += f'<img data-bs-target="#expandImageModal" data-bs-toggle="modal" onclick="expandDesktopImage(this.src)" class="img" src="{url}" loading="lazy">'
|
html += f'<img data-bs-target="#expandImageModal" data-bs-toggle="modal" onclick="expandDesktopImage(this.src)" class="img" src="{url}" loading="lazy">'
|
||||||
elif file.content_type.startswith('video/'):
|
else: abort(400, "Image files only")
|
||||||
file.save("video.mp4")
|
|
||||||
with open("video.mp4", 'rb') as f:
|
|
||||||
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
|
|
||||||
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
|
|
||||||
try: url = req['link']
|
|
||||||
except:
|
|
||||||
error = req['error']
|
|
||||||
if error == 'File exceeds max duration': error += ' (60 seconds)'
|
|
||||||
abort(400, error)
|
|
||||||
if url.endswith('.'): url += 'mp4'
|
|
||||||
html += f"<p>{url}</p>"
|
|
||||||
else: abort(400, "Image/Video files only")
|
|
||||||
|
|
||||||
new_comment = Comment(author_id=v.id if v else NOTIFICATIONS_ID,
|
new_comment = Comment(author_id=v.id if v else NOTIFICATIONS_ID,
|
||||||
parent_submission=None,
|
parent_submission=None,
|
||||||
|
|
|
@ -4,6 +4,7 @@ import time
|
||||||
import math
|
import math
|
||||||
from files.classes.views import ViewerRelationship
|
from files.classes.views import ViewerRelationship
|
||||||
from files.helpers.alerts import *
|
from files.helpers.alerts import *
|
||||||
|
from files.helpers.media import process_image
|
||||||
from files.helpers.sanitize import *
|
from files.helpers.sanitize import *
|
||||||
from files.helpers.strings import sql_ilike_clean
|
from files.helpers.strings import sql_ilike_clean
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
|
@ -602,19 +603,7 @@ def messagereply(v):
|
||||||
file.save(name)
|
file.save(name)
|
||||||
url = process_image(name)
|
url = process_image(name)
|
||||||
body_html += f'<img data-bs-target="#expandImageModal" data-bs-toggle="modal" onclick="expandDesktopImage(this.src)" class="img" src="{url}" loading="lazy">'
|
body_html += f'<img data-bs-target="#expandImageModal" data-bs-toggle="modal" onclick="expandDesktopImage(this.src)" class="img" src="{url}" loading="lazy">'
|
||||||
elif file.content_type.startswith('video/'):
|
else: abort(400, "Image files only")
|
||||||
file.save("video.mp4")
|
|
||||||
with open("video.mp4", 'rb') as f:
|
|
||||||
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
|
|
||||||
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
|
|
||||||
try: url = req['link']
|
|
||||||
except:
|
|
||||||
error = req['error']
|
|
||||||
if error == 'File exceeds max duration': error += ' (60 seconds)'
|
|
||||||
abort(400, error)
|
|
||||||
if url.endswith('.'): url += 'mp4'
|
|
||||||
body_html += f"<p>{url}</p>"
|
|
||||||
else: abort(400, "Image/Video files only")
|
|
||||||
|
|
||||||
|
|
||||||
c = Comment(author_id=v.id,
|
c = Comment(author_id=v.id,
|
||||||
|
|
|
@ -521,7 +521,7 @@
|
||||||
|
|
||||||
<label class="btn btn-secondary format m-0" for="file-upload-reply-{{c.fullname}}">
|
<label class="btn btn-secondary format m-0" for="file-upload-reply-{{c.fullname}}">
|
||||||
<div id="filename-show-reply-{{c.fullname}}"><i class="far fa-image"></i></div>
|
<div id="filename-show-reply-{{c.fullname}}"><i class="far fa-image"></i></div>
|
||||||
<input autocomplete="off" id="file-upload-reply-{{c.fullname}}" type="file" multiple="multiple" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-reply-{{c.fullname}}','file-upload-reply-{{c.fullname}}')" hidden>
|
<input autocomplete="off" id="file-upload-reply-{{c.fullname}}" type="file" multiple="multiple" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-reply-{{c.fullname}}','file-upload-reply-{{c.fullname}}')" hidden>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<a id="save-reply-to-{{c.fullname}}" class="btn btn-primary ml-2 fl-r commentmob" onclick="post_comment('{{c.fullname}}', '{{c.post.id}}', {{level}})"role="button">Comment</a>
|
<a id="save-reply-to-{{c.fullname}}" class="btn btn-primary ml-2 fl-r commentmob" onclick="post_comment('{{c.fullname}}', '{{c.post.id}}', {{level}})"role="button">Comment</a>
|
||||||
|
@ -559,7 +559,7 @@
|
||||||
{% if c.sentto == MODMAIL_ID %}
|
{% if c.sentto == MODMAIL_ID %}
|
||||||
<label class="btn btn-secondary m-0 mt-3" for="file-upload">
|
<label class="btn btn-secondary m-0 mt-3" for="file-upload">
|
||||||
<div id="filename"><i class="far fa-image"></i></div>
|
<div id="filename"><i class="far fa-image"></i></div>
|
||||||
<input autocomplete="off" id="file-upload" type="file" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename','file-upload')" hidden>
|
<input autocomplete="off" id="file-upload" type="file" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename','file-upload')" hidden>
|
||||||
</label>
|
</label>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<textarea autocomplete="off" maxlength="10000" id="input-message" form="contactform" name="message" class="form-control" required></textarea>
|
<textarea autocomplete="off" maxlength="10000" id="input-message" form="contactform" name="message" class="form-control" required></textarea>
|
||||||
<label class="btn btn-secondary m-0 mt-3" for="file-upload">
|
<label class="btn btn-secondary m-0 mt-3" for="file-upload">
|
||||||
<div id="filename"><i class="far fa-image"></i></div>
|
<div id="filename"><i class="far fa-image"></i></div>
|
||||||
<input autocomplete="off" id="file-upload" type="file" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename','file-upload')" hidden>
|
<input autocomplete="off" id="file-upload" type="file" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename','file-upload')" hidden>
|
||||||
</label>
|
</label>
|
||||||
{% if not v and hcaptcha %}
|
{% if not v and hcaptcha %}
|
||||||
<div class="h-captcha" data-sitekey="{{hcaptcha}}"></div>
|
<div class="h-captcha" data-sitekey="{{hcaptcha}}"></div>
|
||||||
|
|
|
@ -384,7 +384,7 @@
|
||||||
|
|
||||||
<label class="btn btn-secondary format d-inline-block m-0">
|
<label class="btn btn-secondary format d-inline-block m-0">
|
||||||
<div id="filename-show"><i class="far fa-image"></i></div>
|
<div id="filename-show"><i class="far fa-image"></i></div>
|
||||||
<input autocomplete="off" id="file-upload" type="file" name="file" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} accept="image/*, video/*" onchange="changename('filename-show','file-upload')" hidden>
|
<input autocomplete="off" id="file-upload" type="file" name="file" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} accept="image/*" onchange="changename('filename-show','file-upload')" hidden>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
|
|
|
@ -294,7 +294,7 @@
|
||||||
<a class="format btn btn-secondary" role="button" onclick="commentForm('post-edit-box-{{p.id}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF"><span class="font-weight-bolder text-uppercase">GIF</span></a>
|
<a class="format btn btn-secondary" role="button" onclick="commentForm('post-edit-box-{{p.id}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF"><span class="font-weight-bolder text-uppercase">GIF</span></a>
|
||||||
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-edit-{{p.id}}">
|
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-edit-{{p.id}}">
|
||||||
<div id="filename-show-edit-{{p.id}}"><i class="far fa-image"></i></div>
|
<div id="filename-show-edit-{{p.id}}"><i class="far fa-image"></i></div>
|
||||||
<input autocomplete="off" id="file-upload-edit-{{p.id}}" type="file" multiple="multiple" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-edit-{{p.id}}','file-upload-edit-{{p.id}}')" hidden>
|
<input autocomplete="off" id="file-upload-edit-{{p.id}}" type="file" multiple="multiple" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-edit-{{p.id}}','file-upload-edit-{{p.id}}')" hidden>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<small class="format d-none"><i class="fas fa-link" aria-hidden="true"></i></small>
|
<small class="format d-none"><i class="fas fa-link" aria-hidden="true"></i></small>
|
||||||
|
@ -455,7 +455,7 @@
|
||||||
|
|
||||||
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-reply-{{p.fullname}}">
|
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-reply-{{p.fullname}}">
|
||||||
<div id="filename-show-reply-{{p.fullname}}"><i class="far fa-image"></i></div>
|
<div id="filename-show-reply-{{p.fullname}}"><i class="far fa-image"></i></div>
|
||||||
<input autocomplete="off" id="file-upload-reply-{{p.fullname}}" type="file" multiple="multiple" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-reply-{{p.fullname}}','file-upload-reply-{{p.fullname}}')" hidden>
|
<input autocomplete="off" id="file-upload-reply-{{p.fullname}}" type="file" multiple="multiple" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-reply-{{p.fullname}}','file-upload-reply-{{p.fullname}}')" hidden>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<a id="save-reply-to-{{p.fullname}}" role="button" form="reply-to-{{p.fullname}}" class="btn btn-primary text-whitebtn ml-auto fl-r" onclick="post_comment('{{p.fullname}}', '{{p.id}}')">Comment</a>
|
<a id="save-reply-to-{{p.fullname}}" role="button" form="reply-to-{{p.fullname}}" class="btn btn-primary text-whitebtn ml-auto fl-r" onclick="post_comment('{{p.fullname}}', '{{p.id}}')">Comment</a>
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
<img loading="lazy" id="image-preview" style="max-width:50%">
|
<img loading="lazy" id="image-preview" style="max-width:50%">
|
||||||
<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 File</div>
|
<div id="filename-show">Select File</div>
|
||||||
<input autocomplete="off" id="file-upload" type="file" name="file" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} accept="image/*, video/*" hidden>
|
<input autocomplete="off" id="file-upload" type="file" name="file" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} accept="image/*" hidden>
|
||||||
</label>
|
</label>
|
||||||
<small class="form-text text-muted">Optional if you have text.</small>
|
<small class="form-text text-muted">Optional if you have text.</small>
|
||||||
<small class="form-text text-muted">You can upload images or videos up to 60 seconds.</small>
|
<small class="form-text text-muted">You can upload images or videos up to 60 seconds.</small>
|
||||||
|
@ -110,7 +110,7 @@
|
||||||
|
|
||||||
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-submit">
|
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-submit">
|
||||||
<div id="filename-show-submit"><i class="far fa-image"></i></div>
|
<div id="filename-show-submit"><i class="far fa-image"></i></div>
|
||||||
<input autocomplete="off" id="file-upload-submit" multiple="multiple" type="file" name="file2" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-submit','file-upload-submit');checkForRequired()" hidden>
|
<input autocomplete="off" id="file-upload-submit" multiple="multiple" type="file" name="file2" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-submit','file-upload-submit');checkForRequired()" hidden>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div id="preview" class="preview my-3"></div>
|
<div id="preview" class="preview my-3"></div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue