Dockerize Project
This commit is contained in:
commit
e679d02b41
205 changed files with 17941 additions and 0 deletions
36
templates/base.html.twig
Executable file
36
templates/base.html.twig
Executable file
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block title %}ventry.host{% endblock %}</title>
|
||||
<link rel="icon" type="image/png" href="{{ asset('assets/img/logo-white.png') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/style.css') }}">
|
||||
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,600" rel="stylesheet">
|
||||
<script src="https://unpkg.com/animejs@3.0.1/lib/anime.min.js" defer></script>
|
||||
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js" defer></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
|
||||
<meta property="og:type" content="website">
|
||||
{% block twitter_card %}
|
||||
<meta name='theme-color' content='#0275e1'/>
|
||||
<meta name='og:description'
|
||||
content='We have revamped our free File Hosting service and are excited to share the new features and benefits with you! With its customizability, you can change your experience to suit your needs with no limitations. Come check it out and see for yourself!'>
|
||||
<meta name='twitter:title' content='ventry.host | v²'>
|
||||
<meta name='twitter:card' content='summary_large_image'>
|
||||
<meta name='twitter:image' content='{{ asset('assets/img/large-banner-textonly.png') }}'>
|
||||
{% endblock %}
|
||||
{% block head %}{% endblock %}
|
||||
{% block styles %}{% endblock %}
|
||||
</head>
|
||||
<body class="is-boxed has-animations">
|
||||
<div class="body-wrap">
|
||||
{% block body %}{% endblock %}
|
||||
{% include 'partials/__footer.html.twig' %}
|
||||
</div>
|
||||
<script src="https://code.jquery.com/jquery-3.6.1.min.js"
|
||||
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>
|
||||
<script src="{{ asset('assets/js/main.min.js') }}" defer></script>
|
||||
</body>
|
||||
</html>
|
133
templates/faq/index.html.twig
Executable file
133
templates/faq/index.html.twig
Executable file
|
@ -0,0 +1,133 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}FAQ | ventry.host{% endblock %}
|
||||
|
||||
{% block styles %}
|
||||
<style>
|
||||
.feature {
|
||||
width: 100%;
|
||||
max-width: 1000px;
|
||||
flex-grow: 1;
|
||||
background-color: #15181D;
|
||||
border-radius: 15px;
|
||||
margin: 15px 32px 15px 32px;
|
||||
padding: 15px 15px;
|
||||
}
|
||||
|
||||
details summary {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
details summary > * {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
@media (min-width: 641px) {
|
||||
.hero-copy {
|
||||
padding-right: 0 !important;
|
||||
min-width: 552px;
|
||||
width: max-content;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
{% include 'partials/__header.html.twig' %}
|
||||
|
||||
<main>
|
||||
<section class="hero">
|
||||
<div class="container">
|
||||
<div class="hero-inner" style="justify-content: center;">
|
||||
<div class="hero-copy">
|
||||
<h1 class="hero-title mt-0">Frequently asked Questions</h1>
|
||||
<p class="hero-paragraph">Here you will find answers to the most frequently asked questions.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="features section">
|
||||
<div class="features-inner section-inner">
|
||||
<div class="features-wrap">
|
||||
<div class="feature text-left is-revealing">
|
||||
<details class="feature-title">
|
||||
<summary>
|
||||
<h4 style="margin-top:0;margin-bottom:0;" class="feature-title">What is
|
||||
ventry.host?</h4>
|
||||
</summary>
|
||||
<div class="faq-item">
|
||||
Ventry.host is the most reliable and most convenient free File Hosting service that
|
||||
you can find out there.<br><br>In addition to a variety of enhanced features, such
|
||||
as themes for your File Pages, custom CSS, and even faster upload speeds than ever
|
||||
before, it comes with a range of improvements as well.<br><br>In terms of its
|
||||
customization capabilities, it allows you to create a custom experience that suits
|
||||
your needs exactly, without constraints.<br><br>Our website design has been
|
||||
completely revamped, not to mention the code behind the upload of your files has
|
||||
also been revamped in order to ensure a smooth upload.<br><br>Truly the Bugatti of
|
||||
the File-Hosts.
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<div class="feature text-left is-revealing">
|
||||
<details class="feature-title">
|
||||
<summary>
|
||||
<h4 style="margin-top:0;margin-bottom:0;" class="feature-title">What do I use this
|
||||
for?</h4>
|
||||
</summary>
|
||||
<div class="faq-item">
|
||||
If you have a lot of files you upload to your computer, or if you take a lot of
|
||||
screenshots on your computer, then an online hosting service can be very useful for
|
||||
you.<br><br>The file host allows you to manage these files in an easy and convenient
|
||||
way.<br><br>You can share your files without any effort at all, and that makes it
|
||||
very comfortable for the user.
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<div class="feature text-left is-revealing">
|
||||
<details class="feature-title">
|
||||
<summary>
|
||||
<h4 style="margin-top:0;margin-bottom:0;">How do I set up ventry.host?</h4>
|
||||
</summary>
|
||||
<div class="faq-item">
|
||||
<span style="font-weight:bold;font-size:1.1em;color:lightgray;">Downloading ShareX</span><br>
|
||||
For any File uploader, it is required for you to download a program called "ShareX".
|
||||
This is totally virus-free and will NOT harm your computer. To download it, click <a
|
||||
href="https://github.com/ShareX/ShareX/releases/download/v15.0.0/ShareX-15.0.0-setup.exe">here</a>
|
||||
<br><br>
|
||||
<span style="font-weight:bold;font-size:1.1em;color:lightgray;">Creating your Account</span><br>
|
||||
The first thing you do, after you have downloaded ShareX is to create your account.
|
||||
To do this click <a href="../">here</a>. Enter your username and your password.
|
||||
Repeat your password to make sure you entered the right one.
|
||||
<br><br>
|
||||
<span style="font-weight:bold;font-size:1.1em;color:lightgray;">Updating/Setting your Settings</span>
|
||||
<br>Then head to the "Settings"-Tab or click <a
|
||||
href="">here</a>. From there on you will be able to
|
||||
customize your Discord-Embed, your File Page Themes and more.
|
||||
<br><br>
|
||||
<span style="font-weight:bold;font-size:1.1em;color:lightgray;">Downloading your ShareX Config</span>
|
||||
<br>Once you finish doing that, you can Press the "Download Config" button or click
|
||||
<a href="{{ path('app_config') }}">here</a>. Now open the file with ShareX and
|
||||
press on "Yes". Now you will be able to upload your Files to ventry.host!
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<div class="feature text-left is-revealing">
|
||||
<details class="feature-title">
|
||||
<summary>
|
||||
<h4 style="margin-top:0;margin-bottom:0;" class="feature-title">What if my question
|
||||
wasn't listed?</h4>
|
||||
</summary>
|
||||
<div class="faq-item">
|
||||
<div>
|
||||
You may join our Discord server and ask for assistance at any moment! We are a
|
||||
welcoming community that will help you find answers to your questions. You may
|
||||
join our server by clicking <a href="">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
{% endblock %}
|
27
templates/file_upload/index.html.twig
Executable file
27
templates/file_upload/index.html.twig
Executable file
|
@ -0,0 +1,27 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}{{ file.name }} | ventry.host{% endblock %}
|
||||
|
||||
{% block twitter_card %}
|
||||
<meta name='theme-color' content='#0275e1'/>
|
||||
<meta name='og:description'
|
||||
content='{{ file.name }} ({{ file.size|formatFilesize }}) uploaded by {{ file.user.username }}'>
|
||||
<meta name='twitter:title' content='ventry.host | v²'>
|
||||
<meta name='twitter:card' content='summary_large_image'>
|
||||
<meta name='twitter:image' content='{{ asset('uploads/' ~ file.user.id ~ '/' ~ file.name) }}'>
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
{% include 'partials/__header.html.twig' %}
|
||||
<main>
|
||||
<div class="container mt-48">
|
||||
<div class="preview-container m-auto " style="width: fit-content">
|
||||
<img loading="lazy" src="{{ asset('uploads/' ~ file.user.id ~ '/' ~ file.name) }}" class="custom-card" alt="{{ file.name }}">
|
||||
<p class="text-center mt-24 mb-0"><b>{{ file.originalFilename }}</b> uploaded by
|
||||
<b><a href="{{ path('app_user_profile', {'user': file.user.id}) }}" class="text-decoration-none text-white">{{ file.user.username }}</a></b> <span
|
||||
style="background-color: #1D2026;padding: 5px;border-radius: 7px;">{{ file.size|formatFilesize }}</span></p>
|
||||
<a href=""></a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
98
templates/home/index.html.twig
Executable file
98
templates/home/index.html.twig
Executable file
|
@ -0,0 +1,98 @@
|
|||
{# TODO: Make File Deleting Modal Dynamic to prevent redundant code #}
|
||||
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Dashboard | ventry.host{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css">
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
{% include 'partials/__header.html.twig' %}
|
||||
<main>
|
||||
<div class="container mt-48">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h1 class="m-0">Hello {{ app.user.username }}!</h1>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="{{ path('app_logout') }}" class="button button-danger ml-10"
|
||||
style="float:right;">Logout</a>
|
||||
<a href="{{ path('app_user_profile', {'user': app.user.id }) }}" class="button ml-10"
|
||||
style="float:right;">My Profile</a>
|
||||
<a href="{{ path('app_config') }}" class="button" style="float:right;">Download Config</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>Thank you for using ventry.host as your file hosting service!</p>
|
||||
|
||||
{% include 'partials/home/__statistics.html.twig' %}
|
||||
|
||||
<div class="image-grid">
|
||||
{% for file in files %}
|
||||
<div class="image-container">
|
||||
<img loading="lazy" draggable="false"
|
||||
src="{{ asset('uploads/' ~ file.user.id ~ '/' ~ file.name ) }}"
|
||||
alt="{{ file.name }}">
|
||||
<div class="overlay position-absolute bottom-0 start-0 p-2">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<p class="text-center rounded"
|
||||
style="background-color: rgba(0,0,0,0.3); color: white;">{{ file.name }}</p>
|
||||
<p class="text-center rounded"
|
||||
style="background-color: rgba(0,0,0,0.3); color: white;">{{ file.size|formatFilesize }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col d-flex justify-content-center">
|
||||
<button class="button button-danger" data-toggle="modal"
|
||||
data-target="#deleteModal-{{ file.id }}">
|
||||
Delete <i class="ml-1 fas fa-trash" style="margin-left: 4px;"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-center">
|
||||
<a class="button button-primary"
|
||||
href="{{ path('app_serve_file', {'filename': file.name}) }}">
|
||||
Open <i class="fas fa-link" style="margin-left: 4px;"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal fade mt-48" data-bs-theme="dark" id="deleteModal-{{ file.id }}" tabindex="-1"
|
||||
role="dialog" aria-labelledby="deleteModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="deleteModalLabel"><i class="fa fa-info-circle"></i>
|
||||
Confirm Delete</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p style="color:white;">Are you sure you want to delete this file?</p>
|
||||
<img loading="lazy" draggable="false"
|
||||
src="{{ asset('uploads/' ~ file.user.id ~ '/' ~ file.name ) }}"
|
||||
alt="{{ file.name }}" class="m-auto rounded" style="max-height:25vh;">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="button button-secondary" data-dismiss="modal">Cancel</button>
|
||||
<a class="button button-danger"
|
||||
href="{{ path('app_delete_file', {'filename': file.name, 'redirectToHome': true}) }}">
|
||||
Delete
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% if files is not empty %}
|
||||
{% include 'partials/home/__pagination.html.twig' %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
53
templates/landing/index.html.twig
Executable file
53
templates/landing/index.html.twig
Executable file
|
@ -0,0 +1,53 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block head %}
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css">
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
{% include 'partials/__header.html.twig' %}
|
||||
<main>
|
||||
<section class="hero m-auto">
|
||||
<div class="container">
|
||||
<div class="hero-inner">
|
||||
<div class="hero-copy">
|
||||
<h1 class="hero-title mt-0">ventry.host</h1>
|
||||
<p class="hero-paragraph">We have revamped our free File Hosting service and are excited to
|
||||
share the new features and benefits with you! With its customizability, you can change
|
||||
your experience to suit your needs with no limitations. Come check it out and see for
|
||||
yourself!</p>
|
||||
<div class="hero-cta">
|
||||
{% if app.user.username is not defined %}
|
||||
<a class="button button-primary" href="{{ path('app_register') }}"> Sign up for the
|
||||
Beta</a>
|
||||
<a class="button" href="{{ path('app_login') }}">Login</a>
|
||||
{% else %}
|
||||
<a class="button button-primary" href="{{ path('app_home') }}">Dashboard</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero-figure anime-element">
|
||||
<svg class="placeholder" width="528" height="396" viewBox="0 0 528 396">
|
||||
<rect width="528" height="396" style="fill:transparent;"></rect>
|
||||
</svg>
|
||||
<div class="hero-figure-box hero-figure-box-01" data-rotation="45deg"></div>
|
||||
<div class="hero-figure-box hero-figure-box-02" data-rotation="-45deg"></div>
|
||||
<div class="hero-figure-box hero-figure-box-04" data-rotation="-135deg"></div>
|
||||
<div class="hero-figure-box hero-figure-box-05"
|
||||
style="background-image: url('{{ asset('assets/img/logo-white.png') }}');background-size: cover; background-repeat: no-repeat"></div>
|
||||
<div class="hero-figure-box hero-figure-box-06"></div>
|
||||
<div class="hero-figure-box hero-figure-box-07"></div>
|
||||
<div class="hero-figure-box hero-figure-box-08" data-rotation="-22deg"></div>
|
||||
<div class="hero-figure-box hero-figure-box-09" data-rotation="-52deg"></div>
|
||||
<div class="hero-figure-box hero-figure-box-10" data-rotation="-50deg"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% include 'partials/__spacer.html.twig' %}
|
||||
{% include 'partials/landing/__features.html.twig' %}
|
||||
{% include 'partials/__spacer.html.twig' %}
|
||||
{% include 'partials/landing/__faq.html.twig' %}
|
||||
</main>
|
||||
{% endblock %}
|
34
templates/login/login.html.twig
Executable file
34
templates/login/login.html.twig
Executable file
|
@ -0,0 +1,34 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Login{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css">
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<main>
|
||||
<div class="container">
|
||||
<a class="button mt-24" href="{{ path('app_index') }}">Go back</a>
|
||||
<h3>Enter Information</h3>
|
||||
<div class="bg-card-secondary" style="padding: 1rem; border-radius: 10px">
|
||||
{% if error %}
|
||||
<div class="error">
|
||||
{{ error.messageKey|trans(error.messageData, 'security') }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<form action="{{ path('app_login') }}" method="POST" id="registerForm">
|
||||
<label for="username"><i class="fa-solid fa-user"></i> Username</label>
|
||||
<input class="textField" autocomplete="autocomplete" required="required" type="text"
|
||||
name="_username" placeholder="Enter username" id="username" value="{{ last_username }}">
|
||||
|
||||
<label for="password"><i class="fa-solid fa-lock"></i> Password</label>
|
||||
<input class="textField" autocomplete="autocomplete" required="required" type="password"
|
||||
name="_password" placeholder="Enter password" id="password"/>
|
||||
|
||||
<input class="button" type="submit" id="loginButton" name="login" value="Login">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
29
templates/partials/__footer.html.twig
Executable file
29
templates/partials/__footer.html.twig
Executable file
|
@ -0,0 +1,29 @@
|
|||
{% block footer %}
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<div class="site-footer-inner">
|
||||
<div class="brand footer-brand">
|
||||
<a href="#">
|
||||
<img class="header-logo-image" style="height: 40px;"
|
||||
src="{{ asset('assets/img/logo-white.png') }}"
|
||||
alt="Logo">
|
||||
</a>
|
||||
</div>
|
||||
<ul class="footer-links list-reset">
|
||||
<li>
|
||||
<a href="#">About us</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('app_faq') }}">FAQ's</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Support</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="footer-social-links list-reset">
|
||||
</ul>
|
||||
<div class="footer-copyright">© 2023 ventry.host</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
{% endblock %}
|
18
templates/partials/__header.html.twig
Executable file
18
templates/partials/__header.html.twig
Executable file
|
@ -0,0 +1,18 @@
|
|||
{% block header %}
|
||||
<div class="site-header">
|
||||
</div>
|
||||
<header id="header" class="site-header-no-bg sticky">
|
||||
<div class="container">
|
||||
<div class="site-header-no-bg-inner">
|
||||
<div class="brand header-brand">
|
||||
<h1 class="m-0">
|
||||
<a href="{{ path('app_index') }}">
|
||||
<img class="header-logo-image" style="height: 40px;"
|
||||
src="{{ asset('assets/img/logo-white.png') }}" alt="Logo">
|
||||
</a>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{% endblock %}
|
3
templates/partials/__spacer.html.twig
Executable file
3
templates/partials/__spacer.html.twig
Executable file
|
@ -0,0 +1,3 @@
|
|||
{% block spacer %}
|
||||
<div style="margin-bottom: 15em"></div>
|
||||
{% endblock %}
|
12
templates/partials/home/__gallery.html.twig
Executable file
12
templates/partials/home/__gallery.html.twig
Executable file
|
@ -0,0 +1,12 @@
|
|||
{% block gallery %}
|
||||
<div class="image-grid">
|
||||
{% for file in files %}
|
||||
<div class="image-container">
|
||||
<a href="{{ path('app_serve_file', {'filename': file.name}) }}">
|
||||
<img draggable="false" src="{{ asset('uploads/' ~ file.user.id ~ '/' ~ file.name) }}" class=""
|
||||
alt="{{ file.name }}">
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
23
templates/partials/home/__pagination.html.twig
Executable file
23
templates/partials/home/__pagination.html.twig
Executable file
|
@ -0,0 +1,23 @@
|
|||
{% block pagination %}
|
||||
<div class="pagination justify-content-center mt-24" data-bs-theme="dark">
|
||||
<ul class="pagination">
|
||||
{% if currentPage > 1 %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="{{ path('app_home', {'page': currentPage - 1}) }}">Previous</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% for page in 1..totalPages %}
|
||||
<li class="page-item {% if page == currentPage %}disabled{% endif %}">
|
||||
<a class="page-link" href="{{ path('app_home', {'page': page}) }}">{{ page }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
||||
{% if currentPage < totalPages %}
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="{{ path('app_home', {'page': currentPage + 1}) }}">Next</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock %}
|
51
templates/partials/home/__statistics.html.twig
Executable file
51
templates/partials/home/__statistics.html.twig
Executable file
|
@ -0,0 +1,51 @@
|
|||
{% block statistics %}
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="card custom-card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-2 d-flex align-items-center justify-content-center">
|
||||
<i class="fa-solid fa-file"></i> <!-- Updated icon for "Todays Uploads" -->
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<h5 class="card-title">Todays Uploads</h5>
|
||||
<p class="card-text" style="color: #888;">{{ todaysUploads }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="card custom-card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-2 d-flex align-items-center justify-content-center">
|
||||
<i class="fa-solid fa-upload"></i>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<h5 class="card-title">Total Uploads</h5>
|
||||
<p class="card-text" style="color: #888;">{{ totalUploads }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="card custom-card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-2 d-flex align-items-center justify-content-center">
|
||||
<i class="fa-solid fa-hdd"></i>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<h5 class="card-title">Storage Used</h5>
|
||||
<p class="card-text" style="color: #888;">{{ totalSize }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
12
templates/partials/landing/__faq.html.twig
Executable file
12
templates/partials/landing/__faq.html.twig
Executable file
|
@ -0,0 +1,12 @@
|
|||
{% block faq %}
|
||||
<section class="cta section" style="margin-top:5em;">
|
||||
<div class="container">
|
||||
<div class="cta-inner section-inner">
|
||||
<h3 class="section-title mt-0">Have questions?</h3>
|
||||
<div class="cta-cta">
|
||||
<a class="button button-primary button-wide-mobile" href="{{ path('app_faq') }}">Check our FAQ</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
67
templates/partials/landing/__features.html.twig
Executable file
67
templates/partials/landing/__features.html.twig
Executable file
|
@ -0,0 +1,67 @@
|
|||
{% block features %}
|
||||
<section class="features section">
|
||||
<div class="container">
|
||||
<div class="features-inner section-inner">
|
||||
<div class="features-wrap">
|
||||
<div class="feature text-center is-revealing">
|
||||
<div class="feature-inner">
|
||||
<div class="feature-icon">
|
||||
<i class="fa-solid fa-gauge-high fa-4x"></i>
|
||||
</div>
|
||||
<h4 class="feature-title mt-24">Fast</h4>
|
||||
<p class="text-sm mb-0">We have incredibly fast upload speeds.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature text-center is-revealing">
|
||||
<div class="feature-inner">
|
||||
<div class="feature-icon">
|
||||
<i class="fa-solid fa-user-pen fa-4x"></i>
|
||||
</div>
|
||||
<h4 class="feature-title mt-24">Customization</h4>
|
||||
<p class="text-sm mb-0">You have the ability to customize every aspect of your
|
||||
experience.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature text-center is-revealing">
|
||||
<div class="feature-inner">
|
||||
<div class="feature-icon">
|
||||
<i class="fa-solid fa-shield-halved fa-4x"></i>
|
||||
</div>
|
||||
<h4 class="feature-title mt-24">Secure</h4>
|
||||
<p class="text-sm mb-0">Your information is secure with us. We take our users'
|
||||
privacy seriously.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature text-center is-revealing">
|
||||
<div class="feature-inner">
|
||||
<div class="feature-icon">
|
||||
<i class="fa-solid fa-hand-holding-dollar fa-4x"></i>
|
||||
</div>
|
||||
<h4 class="feature-title mt-24">Free</h4>
|
||||
<p class="text-sm mb-0">Our host won't make You pay any money for our services.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature text-center is-revealing">
|
||||
<div class="feature-inner">
|
||||
<div class="feature-icon">
|
||||
<i class="fa-solid fa-infinity fa-4x"></i>
|
||||
</div>
|
||||
<h4 class="feature-title mt-24">No limits</h4>
|
||||
<p class="text-sm mb-0">There are no limits on Your enjoyment.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature text-center is-revealing">
|
||||
<div class="feature-inner">
|
||||
<div class="feature-icon">
|
||||
<i class="fa-solid fa-code-pull-request fa-4x"></i>
|
||||
</div>
|
||||
<h4 class="feature-title mt-24">Frequent Updates</h4>
|
||||
<p class="text-sm mb-0">We frequently update our host so that you never get bored
|
||||
when using it.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
21
templates/profile/index.html.twig
Normal file
21
templates/profile/index.html.twig
Normal file
|
@ -0,0 +1,21 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}{{ user.username }}'s Profile | ventry.host{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
{% include 'partials/__header.html.twig' %}
|
||||
<main>
|
||||
<div class="container mt-48">
|
||||
<div class="preview-container m-auto" style="width: fit-content">
|
||||
<div class="card custom-card text-center">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-white">{{ user.username }}</h5>
|
||||
<p class="card-text">User since: <b>{{ user.createdAt|date('Y-m-d H:i:s') }}</b></p>
|
||||
<p class="card-text">Uploads: <b>{{ user.files.count }}</b></p>
|
||||
</div>
|
||||
</div>
|
||||
<a href="{{ path('app_home') }}" class="button w-100">Go Home</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
38
templates/registration/register.html.twig
Executable file
38
templates/registration/register.html.twig
Executable file
|
@ -0,0 +1,38 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block title %}Register{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css">
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<main>
|
||||
<div class="container">
|
||||
<a class="button mt-24" href="{{ path('app_index') }}">Go back</a>
|
||||
<h3>Enter Information</h3>
|
||||
<div class="bg-card-secondary" style="padding: 1rem; border-radius: 10px">
|
||||
{{ form_start(registrationForm) }}
|
||||
|
||||
{% if form_errors(registrationForm.username) or form_errors(registrationForm.plainPassword) or form_errors(registrationForm) %}
|
||||
<div class="error">
|
||||
{{ form_errors(registrationForm) }}
|
||||
{{ form_errors(registrationForm.username) }}
|
||||
{{ form_errors(registrationForm.plainPassword) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<label for="username"><i class="fa-solid fa-user"></i> Username</label>
|
||||
{{ form_widget(registrationForm.username) }}
|
||||
|
||||
<label for="password"><i class="fa-solid fa-lock"></i> Password</label>
|
||||
{{ form_widget(registrationForm.plainPassword) }}
|
||||
|
||||
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
|
||||
|
||||
<button type="submit" class="button">Register</button>
|
||||
{{ form_end(registrationForm) }}
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
Loading…
Add table
Add a link
Reference in a new issue