mirror of
https://github.com/Jackzmc/storage.git
synced 2025-05-12 03:53:14 +00:00
Merge server folder to root
This commit is contained in:
parent
b89a0ab191
commit
6ed02cef31
4417 changed files with 25524 additions and 1 deletions
11
templates/about.html.hbs
Normal file
11
templates/about.html.hbs
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{#> layouts/main }}
|
||||
<div class="content">
|
||||
<h4>Credits</h4>
|
||||
<ul>
|
||||
<li><a href="https://www.flaticon.com/free-icons/default" title="default icons">Default icons created by kliwir art -
|
||||
Flaticon</a></li>
|
||||
<li><a href="https://webgradients.com/">https://webgradients.com/</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{/layouts/main}}
|
67
templates/auth/forgot-password.html.hbs
Normal file
67
templates/auth/forgot-password.html.hbs
Normal file
|
@ -0,0 +1,67 @@
|
|||
{{#> layouts/default body-class="has-background-white-ter login-bg" }}
|
||||
<br><br>
|
||||
<div class="container py-6" style="width:20%"> <!-- TODO: fix width on mobile -->
|
||||
<h1 class="title is-1 has-text-centered">{{ meta.app_name }}</h1>
|
||||
<div class="box is-radiusless">
|
||||
<h4 class="title is-4 has-text-centered">Forgot Password</h4>
|
||||
<p class="subtitle is-6 mt-2 has-text-centered">An email will be sent to reset your password</p>
|
||||
|
||||
{{#if email_available }}
|
||||
{{#unless (eq (len form.form_errors) 0) }}
|
||||
<div class="notification is-danger is-light">
|
||||
<b>Failed with errors:</b>
|
||||
<ul>
|
||||
{{#each form.form_errors}}
|
||||
<li>{{msg}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
{{#if success }}
|
||||
<div class="notification is-success is-light">
|
||||
An email has been sent if an account exists with that email address.
|
||||
</div>
|
||||
{{/if}}
|
||||
<form method="post" action="/auth/login?return_to={{return_to}}">
|
||||
<input type="hidden" name="_csrf" value="{{ csrf_token }}">
|
||||
<div class="field">
|
||||
<div class="control has-icons-left">
|
||||
<input required name="email" class="input {{#if errors.email}}is-danger{{/if}}" type="email" placeholder="Email">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-envelope"></i>
|
||||
</span>
|
||||
</div>
|
||||
{{#if errors.email }}
|
||||
<p class="help is-danger">{{errors.email}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
<hr>
|
||||
<div class="buttons">
|
||||
<button class="button is-link is-fullwidth" type="submit" >Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
{{else}}
|
||||
<div class="notification is-warning is-light">
|
||||
Email support is unavailable, please contact an administrator to reset your password.
|
||||
</div>
|
||||
{{/if}}
|
||||
<br>
|
||||
<span>
|
||||
<a href="/auth/login">Login</a>
|
||||
{{#if can_register}}
|
||||
| <a href="/auth/register">Register</a>{{/if}}
|
||||
</span>
|
||||
<div class="field is-pulled-right">
|
||||
<div class="control">
|
||||
<div class="select is-small">
|
||||
<select>
|
||||
<option selected value="en-us">English</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>Powered by <b><a href="{{meta.repo_url}}">{{ meta.app_name }}</a></b> v{{meta.app_version}}</p>
|
||||
</div>
|
||||
{{/layouts/default}}
|
83
templates/auth/login.html.hbs
Normal file
83
templates/auth/login.html.hbs
Normal file
|
@ -0,0 +1,83 @@
|
|||
{{#> layouts/default body-class="has-background-white-ter login-bg" }}
|
||||
<br><br>
|
||||
<div class="container py-6" style="width:20%"> <!-- TODO: fix width on mobile -->
|
||||
<h1 class="title is-1 has-text-centered">{{ meta.app_name }}</h1>
|
||||
<div class="box is-radiusless">
|
||||
<h4 class="title is-4 has-text-centered">Login</h4>
|
||||
{{#unless (eq (len form.form_errors) 0) }}
|
||||
<div class="notification is-danger is-light">
|
||||
<b>Login failed with errors:</b>
|
||||
<ul>
|
||||
{{#each form.form_errors}}
|
||||
<li>{{msg}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{#if logged_out }}
|
||||
<div class="notification is-success is-light">
|
||||
You have been logged out successfully.
|
||||
</div>
|
||||
{{/if}}
|
||||
<form method="post" action="/auth/login?return_to={{return_to}}">
|
||||
<input type="hidden" name="_csrf" value="{{ csrf_token }}">
|
||||
<div class="field">
|
||||
<label class="label">Username / Email</label>
|
||||
<div class="control has-icons-left">
|
||||
<input required name="username" class="input {{#if errors.username}}is-danger{{/if}}" type="text" placeholder="Username or Email">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
{{#if errors.username }}
|
||||
<p class="help is-danger">{{errors.username}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label">Password</label>
|
||||
<div class="control has-icons-left">
|
||||
<input required name="password" class="input {{#if errors.password}}is-danger{{/if}}" type="password" placeholder="hunter2">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-key"></i>
|
||||
</span>
|
||||
</div>
|
||||
{{#if errors.username }}
|
||||
<p class="help is-danger">{{errors.password}}</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{!-- TODO: Not implemented --}}
|
||||
{{!-- <div class="field">
|
||||
<div class="control">
|
||||
<label class="checkbox">
|
||||
<input name="remember_me" type="checkbox">
|
||||
Remember Me</a>
|
||||
</label>
|
||||
</div>
|
||||
</div> --}}
|
||||
<hr>
|
||||
<div class="buttons">
|
||||
<button class="button is-link is-fullwidth" type="submit" >Login</button>
|
||||
{{#if sso_enabled}}
|
||||
<a href="/login/sso" class="button is-fullwidth">Login with SSO</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</form>
|
||||
<br>
|
||||
<span>
|
||||
{{#if can_register}}
|
||||
<a href="/auth/register">Register</a>
|
||||
| {{/if}}<a href="/auth/forgot-password">Forgot password?</a>
|
||||
</span>
|
||||
<div class="field is-pulled-right">
|
||||
<div class="control">
|
||||
<div class="select is-small">
|
||||
<select>
|
||||
<option selected value="en-us">English</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>Powered by <b><a href="{{meta.repo_url}}">{{ meta.app_name }}</a></b> v{{meta.app_version}}</p>
|
||||
</div>
|
||||
{{/layouts/default}}
|
71
templates/auth/register.html.hbs
Normal file
71
templates/auth/register.html.hbs
Normal file
|
@ -0,0 +1,71 @@
|
|||
{{#> layouts/default body-class="has-background-white-ter login-bg" }}
|
||||
<br><br>
|
||||
<div class="container py-6" style="width:20%"> <!-- TODO: fix width on mobile -->
|
||||
<h1 class="title is-1 has-text-centered">{{ meta.app_name }}</h1>
|
||||
<div class="box is-radiusless">
|
||||
<h4 class="title is-4 has-text-centered">Register</h4>
|
||||
{{#if can_register }}
|
||||
<form method="post" action="/auth/register">
|
||||
<input type="hidden" name="_csrf" value="{{ csrf_token }}">
|
||||
<div class="field">
|
||||
<label class="label">Username</label>
|
||||
<div class="control has-icons-left">
|
||||
<input required name="username" class="input" type="text" placeholder="Username">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-user"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label">Email</label>
|
||||
<div class="control has-icons-left">
|
||||
<input required name="username" class="input" type="email" placeholder="Email">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-email"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label">Password</label>
|
||||
<div class="control has-icons-left">
|
||||
<input required name="password" class="input" type="password" placeholder="hunter2">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-key"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label">Password (confirm)</label>
|
||||
<div class="control has-icons-left">
|
||||
<input required name="password" class="input" type="password" placeholder="hunter2">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fas fa-key"></i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="buttons">
|
||||
<button class="button is-link is-fullwidth" type="submit" >Register</button>
|
||||
</div>
|
||||
</form>
|
||||
{{else}}
|
||||
<div class="notification is-danger is-light">
|
||||
<p><i class="fas fa-xmark"></i> Registration has been disabled</p>
|
||||
</div>
|
||||
{{/if}}
|
||||
<span>
|
||||
<a href="/auth/login">Login</a>
|
||||
</span>
|
||||
<div class="field is-pulled-right">
|
||||
<div class="control">
|
||||
<div class="select is-small">
|
||||
<select>
|
||||
<option selected value="en-us">English</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>Powered by <b><a href="{{meta.repo_url}}">{{ meta.app_name }}</a></b> v{{meta.app_version}}</p>
|
||||
</div>
|
||||
{{/layouts/default}}
|
12
templates/errors/404.html.hbs
Normal file
12
templates/errors/404.html.hbs
Normal file
|
@ -0,0 +1,12 @@
|
|||
{{#> layouts/default body-class="has-background-white-ter login-bg" }}
|
||||
<br><br>
|
||||
<div class="container py-6" style="width:20%"> <!-- TODO: fix width on mobile -->
|
||||
<h1 class="title is-1 has-text-centered">storage-app</h1>
|
||||
<div class="box is-radiusless">
|
||||
<h4 class="title is-4 has-text-centered">404 Page Not Found</h4>
|
||||
<p>The requested resource <code>{{ path }}</code> can't be found</p>
|
||||
<br>
|
||||
<p><a href="/">Return home</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{{/layouts/default}}
|
36
templates/index.html.hbs
Normal file
36
templates/index.html.hbs
Normal file
|
@ -0,0 +1,36 @@
|
|||
{{#> layouts/main }}
|
||||
<div class="">
|
||||
<h4 class="title is-4 is-inline">Libraries</h4>
|
||||
<div class="is-pulled-right is-inline-block">
|
||||
<div class="buttons">
|
||||
<div class="button is-small">
|
||||
Display
|
||||
</div>
|
||||
<div class="button is-small">
|
||||
Sort
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="my-2">
|
||||
<table class="table is-fullwidth">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Name </td>
|
||||
<td>Size </td>
|
||||
<td>Last Updated </td>
|
||||
<td>Owner </td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="px-4 py-4">
|
||||
<a href="/library/dbabbf7d-9b63-487b-9908-57c2df11b2d2/My Library/">My Library</a>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>Me</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{{/layouts/main}}
|
20
templates/layouts/default.html.hbs
Normal file
20
templates/layouts/default.html.hbs
Normal file
|
@ -0,0 +1,20 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="/static/favicon.png" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>storage-app</title>
|
||||
<!-- TODO: use static -->
|
||||
<link href="/static/css/main.css" rel="stylesheet" />
|
||||
<link rel="stylesheet" href="/static/css/bulma.min.css">
|
||||
<link href="/static/icons/css/fontawesome.css" rel="stylesheet" />
|
||||
<link href="/static/icons/css/solid.css" rel="stylesheet" />
|
||||
<link href="/static/icons/css/regular.css" rel="stylesheet" />
|
||||
<link href="/static/icons/css/brands.css" rel="stylesheet" />
|
||||
</head>
|
||||
<body class="{{body-class}}">
|
||||
{{> @partial-block }}
|
||||
</body>
|
||||
</html>
|
11
templates/layouts/main.html.hbs
Normal file
11
templates/layouts/main.html.hbs
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{#> layouts/default }}
|
||||
{{> partials/nav }}
|
||||
<div class="mx-3 columns" style="height: 100%">
|
||||
<div class="column pl-0 sidebar-column">
|
||||
{{> partials/sidebar }}
|
||||
</div>
|
||||
<div class="column is-10">
|
||||
{{> @partial-block }}
|
||||
</div>
|
||||
</div>
|
||||
{{/layouts/default}}
|
82
templates/libraries.html.hbs
Normal file
82
templates/libraries.html.hbs
Normal file
|
@ -0,0 +1,82 @@
|
|||
{{#> layouts/main }}
|
||||
<div class="">
|
||||
<nav class="breadcrumb is-inline-block is-size-5 mb-0" aria-label="breadcrumbs">
|
||||
<ul>
|
||||
<li><a class="has-text-black" href="/library/{{library.id}}/{{library.name}}/">{{ library.name }}</a></li>
|
||||
{{#each path_segments}}
|
||||
<li>
|
||||
<a class="has-text-black" href="/library/{{../library.id}}/{{../library.name}}/{{path}}" aria-current="page"> {{ segment }} </a>
|
||||
</li>
|
||||
{{/each}}
|
||||
<div class="button is-small">
|
||||
+
|
||||
</div>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class="is-pulled-right is-inline-block">
|
||||
<div class="buttons">
|
||||
<div class="button is-small">
|
||||
Display
|
||||
</div>
|
||||
<div class="button is-small">
|
||||
Sort
|
||||
</div>
|
||||
<div class="button is-small">
|
||||
Info
|
||||
</div>
|
||||
<div class="button is-small">
|
||||
...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="my-2">
|
||||
<table class="table is-fullwidth">
|
||||
<thead>
|
||||
<tr class="file-list">
|
||||
<td style="width:0"><input type="checkbox" /></td>
|
||||
<td style="width:0"></td>
|
||||
<td style="width:0"></td>
|
||||
<td>Name </td>
|
||||
<td>Size </td>
|
||||
<td>Last Updated </td>
|
||||
<td>Owner </td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each files }}
|
||||
<tr class="file-list">
|
||||
<td><input type="checkbox" /></td>
|
||||
<td>
|
||||
<a class="has-text-black">
|
||||
<span class="icon is-large">
|
||||
<i class="fas fa-star fa-xl"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
<td class="filecell-icon">
|
||||
<span class="icon is-large">
|
||||
{{#if (eq type "folder") }}
|
||||
<i class="fas fa-folder fa-xl"></i>
|
||||
{{/if}}
|
||||
{{#if (eq type "file") }}
|
||||
<i class="fas fa-file fa-xl"></i>
|
||||
{{/if}}
|
||||
</span>
|
||||
</td>
|
||||
<td class="filecell-label pl-4">
|
||||
{{#if (eq type "folder")}}
|
||||
<a href="{{../parent}}{{ path }}">{{ path }}/</a>
|
||||
{{/if}}
|
||||
{{#if (eq type "file") }}
|
||||
<a target="_blank" href="/file/{{../library.id}}/{{../parent}}{{ path }}">{{ path }}</a>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td>{{ bytes size }}</td>
|
||||
<td>{{ updated }}</td>
|
||||
<td>Me</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{{/layouts/main}}
|
8
templates/partials/breadcrumb.html.hbs
Normal file
8
templates/partials/breadcrumb.html.hbs
Normal file
|
@ -0,0 +1,8 @@
|
|||
<nav class="breadcrumb" aria-label="breadcrumbs">
|
||||
<ul>
|
||||
<li><a href="#">Bulma</a></li>
|
||||
<li><a href="#">Documentation</a></li>
|
||||
<li><a href="#">Components</a></li>
|
||||
<li class="is-active"><a href="#" aria-current="page">Breadcrumb</a></li>
|
||||
</ul>
|
||||
</nav>
|
68
templates/partials/nav.html.hbs
Normal file
68
templates/partials/nav.html.hbs
Normal file
|
@ -0,0 +1,68 @@
|
|||
<nav class="navbar mb-4 has-background-white-ter" aria-label="main navigation">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<h3 class="title is-3">storage-app</h3>
|
||||
</a>
|
||||
<button class="navbar-burger" aria-label="menu" aria-expanded="false">
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="navbar-start">
|
||||
|
||||
</div>
|
||||
<div class="navbar-end">
|
||||
{{#if session.user }} <!-- TODO: only show w/ route is library/files -->
|
||||
<div class="navbar-item" style="width:300px">
|
||||
<div class="field" style="width:100%" >
|
||||
<p class="control has-icons-left">
|
||||
<input class="input is-small" type="search" placeholder="Search files (CTRL + K)"></input>
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if session.user }}
|
||||
<div class="navbar-item">
|
||||
<a class="icon has-text-black">
|
||||
<i class="far fa-bell"></i>
|
||||
<span class="ml-2" >0</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link">
|
||||
<img src="/static/img/default_user.png" alt="User Image" />
|
||||
{{ session.user.name }}
|
||||
</a>
|
||||
|
||||
<div class="navbar-dropdown mr-4 is-right is-radiusless">
|
||||
<div class="dropdown-content">
|
||||
<div class="navbar-item">
|
||||
{{ session.user.username }}
|
||||
</div>
|
||||
<div class="navbar-item">
|
||||
{{ session.user.email }}
|
||||
</div>
|
||||
<hr class="navbar-divider">
|
||||
<a class="navbar-item" href="/settings">
|
||||
<i class="fa fa-cog"></i>Settings
|
||||
</a>
|
||||
<a class="navbar-item" href="/admin">
|
||||
<i class="fa fa-star"></i> Admin Panel
|
||||
</a>
|
||||
<hr class="navbar-divider">
|
||||
<a class="navbar-item has-text-danger" href="/auth/logout">
|
||||
<i class="fa fa-square-up-right"></i>Logout
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</nav>
|
13
templates/partials/sidebar.html.hbs
Normal file
13
templates/partials/sidebar.html.hbs
Normal file
|
@ -0,0 +1,13 @@
|
|||
<aside class="sidebar pl-0 mb-0">
|
||||
<p class="sidebar-header">Workspace</p>
|
||||
<ul class="sidebar-list">
|
||||
<li class="{{is-active-exact route '/'}} {{is-active route '/library'}}"><a href="/"><i class="fa fa-file"></i> Files</a></li>
|
||||
<li class="{{is-active route '/favorites'}}"><a href="/favorites"><i class="fas fa-heart"></i> Favorites</a></li>
|
||||
<li class="{{is-active route '/activity'}}"><a href="/activity"><i class="fas fa-clock"></i> Activities</a></li>
|
||||
</ul>
|
||||
<p class="sidebar-header">Help</p>
|
||||
<ul class="sidebar-list">
|
||||
<li class="{{is-active-exact route '/help'}}"><a href="/help">Help</a></li>
|
||||
<li class="{{is-active route '/help/about'}}"><a href="/help/about">About</a></li>
|
||||
</ul>
|
||||
</aside>
|
Loading…
Add table
Add a link
Reference in a new issue