turbo #4

Merged
tracer merged 17 commits from turbo into master 2022-11-15 17:19:50 +01:00
18 changed files with 1 additions and 700 deletions
Showing only changes of commit d9b86de4bb - Show all commits

1
templates/themes/default Symbolic link
View File

@ -0,0 +1 @@
24unix.net

View File

@ -1,68 +0,0 @@
<nav class="navbar navbar-expand-md navbar-dark bg-dark sticky-top px-sm-5 border-0">
<a class="navbar-brand border-0" href="{{ path('app_main') }}">
<img src="{{ asset('build/images/24unix/24_logo_bg_64x64.png') }}" alt="24unix.net" id="site-logo">
</a>
<button class="navbar-toggler border-0" type="button" data-toggle="collapse" data-target="#CollapsingNavbar">
&#9776;
</button>
<div class="collapse navbar-collapse" id="CollapsingNavbar">
<ul class="navbar-nav ms-auto">
<!--
<li>
<form class="d-flex">
<input class="form-control me-2 my-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn" type="submit">Search</button>
</form>
</li>
-->
{% if is_granted('ROLE_USER') %}
<li class="nav-item dropdown me-auto">
<button type="button" id="navbar-dropdown" data-bs-target="#dropdown-menu" data-bs-toggle="dropdown"
class="btn btn-outline-dark dropdown-toggle button-login">
{% if app.user.avatar %}
<img class="rounded-circle"
width="50px"
src="{{ avatar_asset(app.user.avatar)|imagine_filter('squared_thumbnail_small') }}"
alt="profile image"/>
{% else %}
{{ app.user.username }}
{% endif %}
</button>
<div class="dropdown-menu dropdown-menu-dark dropdown-menu-end" id="dropdown-menu"
aria-labelledby="navbar-dropdown">
<a class="dropdown-item" href="{{ path('app_profile_edit') }}">
<span class="fa fa-lg fa-fw fa-user" aria-hidden="true"></span>
Profile</a>
<a class="dropdown-item" href="#">
<span class="fa fa-lg fa-fw fa-wrench" aria-hidden="true"></span>
Settings</a>
<div class="dropdown-divider"></div>
{% if is_granted('ROLE_ADMIN') %}
<a class="dropdown-item" href="{{ path('admin') }}">
<span class="fa fa-lg fa-fw fa-cog" aria-hidden="true"></span>
Administration
</a>
<div class="dropdown-divider"></div>
{% endif %}
<a class="dropdown-item" href="{{ path('security_logout') }}">
<span class="fa fa-lg fa-fw fa-sign-out" aria-hidden="true"></span>&nbsp;
Logout
</a>
</div>
</li>
{% else %}
<li class="nav-item">
<a class="btn btn-primary button-login" href="{{ path('security_login') }}" role="button"
id="buttonLogin">
<span class="fa fa-sign-in fa-lg fa-fw" aria-hidden="true"></span>Log In
</a>
</li>
{% endif %}
</ul>
</div>
</nav>

View File

@ -1,105 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}Spookie{% endblock %}</title>
<link rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>">
{% block stylesheets %}
{{ encore_entry_link_tags('app') }}
{% endblock %}
{% block javascripts %}
{{ encore_entry_script_tags('app') }}
<!-- Matomo -->
<script>
let _paq = window._paq = window._paq || []
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["trackPageView"])
_paq.push(["enableLinkTracking"]);
(function () {
const u = "https://analytics.24unix.net/"
_paq.push(["setTrackerUrl", u + "matomo.php"])
_paq.push(["setSiteId", "1"])
const d = document, g = d.createElement("script"), s = d.getElementsByTagName("script")[0]
g.async = true
g.src = u + "matomo.js"
s.parentNode.insertBefore(g, s)
})()
</script>
<!-- End Matomo Code -->
{% endblock %}
</head>
<body>
{% include '@default/_header.html.twig' %}
<!-- sidebar -->
<nav id="sidebar" class="m-3">
<ul class="list-group ml1" id="main-menu">
<li class="list-group-item list-group-item-action">
<a href="{{ path('app_projects') }}" class="text-decoration-none">
<span class="fa fa-lg fa-fw fa-file-code-o" aria-hidden="true" title="Projects"></span>
<span class="menuText">&nbsp;Projects</span>
</a>
</li>
<li class="list-group-item list-group-item-action">
<a href="//git.24unix.net" class="text-decoration-none" target="_blank">
<span class="fa fa-lg fa-fw fa-gitea" aria-hidden="true" title="Gitea"></span>
<span class="menuText">&nbsp;Gitea</span>
</a>
<span class="menuText"><span class="fa fa-external-link" aria-hidden="true"></span></span>
</li>
<li class="list-group-item list-group-item-action">
<a href="//cloud.24unix.net" class="text-decoration-none" target="_blank">
<span class="fa fa-lg fa-fw fa-nextcloud" aria-hidden="true" title="NextCloud"></span>
<span class="menuText">&nbsp;NextCloud</span>
</a>
<span class="menuText"><span class="fa fa-external-link" aria-hidden="true"></span></span>
</li>
<li class="list-group-item list-group-item-action">
<a href="#" id="toggleSidebar">
<span id="toggleIcon" class="fa fa-lg fa-caret-square-o-left"></span>
</a>
</li>
<!-- <a href="//pastebin.24unix.net">pastebin.24unix.net</a>-->
</ul>
</nav>
<div class="container-fluid" id="content">
<div class="col m-3" id="main_content">
{% for message in app.flashes('success') %}
<div class="alert alert-success">
{{ message }}
</div>
{% endfor %}
{% for message in app.flashes('error') %}
<div class="alert alert-danger">
{{ message }}
</div>
{% endfor %}
{% block body %}
<div class="m-5">
<h1 class="title-show">Quote of the Moment</h1>
<div class="quote-box p-3">
<span class="fa fa-quote-left"></span><br>
{{ quote | raw | nl2br }}
</div>
</div>
{% endblock %}
</div>
</div>
{% include '@default/_footer.html.twig' %}
</body>
</html>

View File

@ -1,13 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}page_name{% endblock %}
{% block body %}
{{ page.content | raw }}
<br>
Page created by: <a href="{{ path('app_profile', { 'username': page.owner.username }) }}">{{ page.owner.username }}</a>
{{ page.createdAt | ago }}
{% if page.modifiedAt %}
(last update: {{ page.modifiedAt | ago }})
{% endif %}
{% endblock %}

View File

@ -1,74 +0,0 @@
{# templates/projects/index.html.twig #}
{% extends '@default/base.html.twig' %}
{% block title %} Projects {% endblock %}
{% block body %}
<div class="container-fluid box">
<div class="row">
<h2>This is an overview of my current public (and open source) projects.</h2>
<!-- projects List -->
<div class="col-sm-12">
{% for project in projects %}
<div class="project-container bg-dark my-4">
<div class="row">
<div class="col-sm-3">
<a href="{{ path('app_projects', { name: project.name }) }}">
{% if project.teaserImage %}
<img
class="project-image"
src="/uploads/projects/{{ project.teaserImage }}"
alt="Teaser">
{% else %}
<img
class="project-image"
src="{{ asset('build/images/24unix/24_logo_bg_96x96.png') }}"
alt="Teaser">
{% endif %}
</a>
<br>
<div>
{% for developer in project.developer %}
<a class="align-left blog-details"
href="{{ path('app_profile', { 'username':developer.username }) }}">
{% if developer.avatar is not null %}
<img class="rounded-circle mt-5 mb-4 ms-5"
src="{{ avatar_asset(developer.avatar)|imagine_filter('squared_thumbnail_small') }}" alt="profile image"/>
<br>
{% endif %}
<div class="ms-5 mb-4">
<a href="{{ path('app_profile', { 'username':developer.username }) }}">{{ developer.username }}</a>
</div>
{% endfor %}
</div>
</div>
<div class="col-sm-8 mt-2">
<a href="{{ path('app_projects', { name: project.name }) }}">
<div class="article-title d-inline-block pl-3 align-middle">
<h2>{{ project.name }}</h2>
</div>
</a>
<br>
<div class="blog-teaser mb-2 pb-2 text-xl-start">
{{ project.description }}
<br>
<br>
started: {{ project.createdAt | ago }}
</div>
</div>
</div>
</div>
{% endfor %}
</div>
{% if is_granted('ROLE_ADMIN') %}
<div class="text-xl-start">
<a href="{{ path('app_main') }}"><span class="fa fa-plus-circle"></span></a>
</div>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -1,35 +0,0 @@
{# templates/blog/blog_show.html.twig #}
{% extends '@default/base.html.twig' %}
{% block title %}Projects{% endblock %}
{% block body %}
<div class="row">
<div class="col-sm-12">
{% if is_granted('ROLE_ADMIN') %}
<div class="d-flex justify-content-end">
<a href="{{ path('app_main', { id : project.id }) }}"><span class="fa fa-3x fa-fw fa-edit"></span></a>
<a href="{{ path('app_main', { id : project.id }) }}"><span class="fa fa-3x fa-fw fa-trash"></span></a>
</div>
{% endif %}
<div class="show-article-container p-3 mt-4">
<div class="show-article-title-container d-inline-block pl-3 align-middle">
<h2>{{ project.name }}</h2>
</div>
<div>
Source: <a href="{{ project.url }}" target="_blank">{{ project.url }}</a>&nbsp;
<span class="fa fa-external-link" aria-hidden="true"></span>
</div>
<div class="row">
<div class="col-sm-12">
<div class="article-text">
{{ readme | markdown_to_html }}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,22 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}Reset your password{% endblock %}
{% block body %}
{% for flash_error in app.flashes('reset_password_error') %}
<div class="alert alert-danger" role="alert">{{ flash_error }}</div>
{% endfor %}
<h1>Reset your password</h1>
{{ form_start(requestForm) }}
{{ form_row(requestForm.account) }}
<div>
<small>
Enter your email address or your username and we will send you a
link to reset your password.
</small>
</div>
<button class="btn btn-primary float-end">Send password reset email</button>
{{ form_end(requestForm) }}
{% endblock %}

View File

@ -1,46 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}Log In!{% endblock %}
{% block body %}
<div class="container rounded">
<div class="row">
<div class="login-form bg-dark mt-4 p-4">
<form method="post" class="row g-3">
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
{% if error %}
<div class="alert-dark alert-danger">
{{ error.messageKey|trans(error.messageData, 'security') }}
</div>
{% endif %}
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
<div class="col-12">
<label for="inputUsername">Username or eMail</label>
<input type="text" name="username" id="inputUsername"
class="form-control" {# value="{{ last_username }}" #} required autofocus>
</div>
<div class="col-12">
<label for="inputPassword">Password</label>
<input type="password" name="password" id="inputPassword" class="form-control" required>
</div>
<div class="form-check mx-3">
<label>
<input type="checkbox" name="_remember_me" class="form-check-input">Remember me
</label>
</div>
<div>
<a href="{{ path('security_forgot_password') }}">Forgot password?</a>
<button class="btn btn-primary float-end" type="submit">
Sign in
</button>
</div>
<a href="{{ path('security_register') }}">Need an account? Register now.</a>
</form>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,9 +0,0 @@
<h1>Hi!</h1>
<p>To reset your password, please visit the following link</p>
<a href="{{ url('security_recovery_reset', {token: resetToken.token}) }}">Reset password</a>
<p>This link will expire in {{ resetToken.expirationMessageKey|trans(resetToken.expirationMessageData, 'ResetPasswordBundle') }}.</p>
<p>Cheers!</p>

View File

@ -1,39 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en" style="margin:0;padding:0;">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="format-detection" content="telephone=no"/>
<title></title>
<style type="text/css">
@media screen and (max-width: 599px) {
div {
max-width: 100% !important;
}
}
body {
background-color: #1e1f1e;
margin:25px;
padding:0;
}
</style>
</head>
<body>
<div style="border-collapse:collapse;border-spacing:0;">
<h1>Hi {{ username }}, please confirm your email!</h1>
<p>
Please confirm your email address by clicking the following link: <br><br>
<a href="{{ signedUrl|raw }}">Confirm my Email</a>.
<br>
This link will expire in {{ expiresAtMessageKey|trans(expiresAtMessageData, 'VerifyEmailBundle') }}.
</p>
<p>
Kind regards,
24unix.net
</p>
</div>
</body>
</html>

View File

@ -1,11 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}Password Reset Email Sent{% endblock %}
{% block body %}
<p>
If an account matching your email exists, then an email was just sent that contains a link that you can use to reset your password.
This link will expire in {{ resetToken.expirationMessageKey|trans(resetToken.expirationMessageData, 'ResetPasswordBundle') }}.
</p>
<p>If you don't receive an email please check your spam folder or <a href="{{ path('security_forgot_password') }}">try again</a>.</p>
{% endblock %}

View File

@ -1,60 +0,0 @@
{% extends '@default/base.html.twig' %}
{% form_theme registrationForm _self %}
{% block title %}Register{% endblock %}
{% block form_row %}
{%- set widget_attr = {} -%}
{%- if help is not empty -%}
{%- set widget_attr = {attr: {'aria-describedby': id ~"_help"}} -%}
{%- endif -%}
{{- form_label(form, null, {
label_attr: { class: 'sr-only' }
}) -}}
{{- form_errors(form) -}}
{{- form_widget(form, widget_attr) -}}
{{- form_help(form) -}}
{% endblock %}
{% block body %}
{% for flash_error in app.flashes('verify_email_error') %}
<div class="alert alert-danger" role="alert">{{ flash_error }}</div>
{% endfor %}
<div class="container rounded">
<div class="row">
<div class="login-form bg-dark mt-4 p-4">
<h1 class="h3 mb-3 font-weight-normal">Register</h1>
{{ form_start(registrationForm, {
attr: { class: 'form-signin' }
}) }}
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
{{ form_row(registrationForm.username, {
attr: { placeholder: 'User name' }
}) }}
{{ form_row(registrationForm.email, {
attr: { placeholder: 'eMail' }
}) }}
{{ form_row(registrationForm.password.first, {
attr: { placeholder: 'Password'}
}) }}
{{ form_row(registrationForm.password.second, {
attr: { placeholder: 'Confirm password'}
}) }}
{{ form_row(registrationForm.agreeTerms) }}
<button type="submit" class="btn btn-primary float-end">Register</button>
{{ form_end(registrationForm) }}
</div>
</div>
</div>
{% endblock %}

View File

@ -1,19 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}Registration finished{% endblock %}
{% block body %}
<div class="container rounded">
<div class="row">
<div class="login-form bg-dark mt-4 p-4">
<h1 class="h3 mb-3 font-weight-normal">Registration finished</h1>
<p>You'll receive an email soon to confirm your identity.</p>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,20 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}Verify eMail{% endblock %}
{% block body %}
<div class="container">
<div class="row">
<div class="login-form bg-dark mt-4 p-4">
<h1 class="h3 mb-3 font-weight-normal">Verify your Email</h1>
<p>
A verification email was sent - please check it to enable your
account before logging in.
</p>
<form method="POST">
<button type="submit" class="btn btn-primary">Re-send Email</button>
</form>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,12 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}Reset your password{% endblock %}
{% block body %}
<h1>Reset your password</h1>
{{ form_start(resetForm) }}
{{ form_row(resetForm.plainPassword) }}
<button class="btn btn-primary">Update password</button>
{{ form_end(resetForm) }}
{% endblock %}

View File

@ -1,55 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}
Profile of {{ user.username }}
{% endblock %}
{% block body %}
<div class="container box rounded bg-dark mt-5 mb-5">
<div class="row">
<div class="col-md-3 border-right">
<div class="d-flex flex-column align-items-center text-center p-3 py-5">
{% if user.avatar is not null %}
<img class="rounded-circle mt-5 mb-4"
src="{{ avatar_asset(user.avatar)|imagine_filter('squared_thumbnail_small') }}"
alt="profile image"/>
{% endif %}
{# {{ form_row(userForm.avatarName, { 'label': false }) }} #}
<form
action="{{ path('user_upload_avatar', { id: user.id}) }}"
method="POST"
enctype="multipart/form-data"
class="dropzone" id="dropzoneForm">
</form>
<div id="preview-content">{{ avatar_asset(user.avatar)|imagine_filter('squared_thumbnail_small') }}</div>
<span class="font-weight-bold">{{ user.username }}</span>
<span class="text-white-50"><span class="fa fa-lg fa-envelope me-1"></span>{{ user.email }}</span>
</div>
</div>
<div class="col-md-8 border-right">
<div class="p-3 py-5">
<div class="d-flex justify-content-between align-items-center mb-3">
<h4 class="text-right">User Profile</h4>
</div>
<div class="row mt-2">
{{ form_start(userForm) }}
{{ form_row(userForm.username) }}
{{ form_row(userForm.firstName) }}
{{ form_row(userForm.lastName) }}
{{ form_row(userForm.email) }}
{{ form_row(userForm.newPassword.first) }}
{{ form_row(userForm.newPassword.second) }}
{{ form_rest(userForm) }}
{{ form_end(userForm) }}
</div>
<div class="mb-5 text-center float-end">
<button class="btn btn-primary profile-button" type="submit">Save Profile</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,49 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}
Userlist
{% endblock %}
{% block body %}
<div class="container box rounded bg-dark mt-5 mb-5">
<div class="row">
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Username</th>
<th scope="col">First</th>
<th scope="col">Last</th>
<th scope="col">eMail</th>
<th scope="col">Registered</th>
<th scope="col">Manage</th>
</tr>
</thead>
{% for user in users %}
<tr>
<td>
<a href="{{ path('app_main', { '_switch_user': user.username }) }}">{{ user.username }}</a>
</td>
<td>
{{ user.firstName }}
</td>
<td>
{{ user.lastName }}
</td>
<td>
{{ user.email }}
</td>
<td>
{{ user.createdAt|ago }}
</td>
<td>
<button type="button" class="btn btn-outline-primary btn-lg btn-circle ml-2"><i class="fa fa-edit"></i> </button>
</td>
</tr>
{% endfor %}
</table>
</div>
</div>
{% endblock %}

View File

@ -1,63 +0,0 @@
{% extends '@default/base.html.twig' %}
{% block title %}
Profile of {{ user.username }}
{% endblock %}
{% block body %}
<div class="container box rounded bg-dark mt-5 mb-5">
<div class="row">
<div class="col-md-3 border-right">
<div class="d-flex flex-column align-items-center text-center p-3 py-5">
{% if user.avatar is not null %}
<img class="rounded-circle mt-5 mb-4"
src="{{ avatar_asset(user.avatar)|imagine_filter('squared_thumbnail_small') }}" alt="profile image"/>
{% endif %}
<span class="font-weight-bold">{{ user.username }}</span>
{% if is_granted('ROLE_ADMIN') %}
<span class="font-weight-bold">
<a href="{{ path('app_main', { '_switch_user': app.user.username }) }}">switch user {{ user.username }}</a>
</span>
{% endif %}
<span class="text-white-50"><i class="fa fa-lg fa-envelope me-1"></i>{{ user.email }}</span>
</div>
</div>
<div class="col-md-5 border-right">
<div class="p-3 py-5">
<div class="d-flex justify-content-between align-items-center mb-3">
<h4 class="text-right">User Profile</h4>
</div>
<div class="row mt-2">
<div class="col-md-6">
<label class="labels" for="first-name">First Name</label>
<input type="text" disabled id="first-name" class="form-control" placeholder="First Name"
value="{{ user.firstName }}">
</div>
<div class="col-md-6">
<label class="labels" for="last-name">Last Name</label>
<input type="text" disabled id="last-name" class="form-control" value="{{ user.lastName }}"
placeholder="Last Name">
</div>
<div class="col-md-6">
<label class="labels" for="username">Username</label>
<input type="text" disabled class="form-control" id="username" placeholder="eMail address"
value="{{ user.email }}">
</div>
</div>
<!--
<div class="mt-5 text-center">
<button class="btn btn-primary profile-button" type="button">Save Profile</button>
</div>
-->
</div>
</div>
</div>
</div>
{% endblock %}