Update default theme
1
.gitignore
vendored
|
@ -6,5 +6,6 @@ composer.lock
|
|||
/public/photos/*
|
||||
!/public/photos/.gitkeep
|
||||
!/public/photos/Demo
|
||||
/public/photos/Demo/File example/
|
||||
/cache/*
|
||||
!/cache/.gitkeep
|
|
@ -2,7 +2,7 @@ FROM ubuntu/apache2
|
|||
|
||||
MAINTAINER Knah Tsaeb <knah-tsaeb_nanogal@knah-tsaeb.org>
|
||||
|
||||
LABEL version="0.2.0"
|
||||
LABEL version="0.3.0"
|
||||
LABEL description="Apache 2 / PHP / NanoGal"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
@ -30,7 +30,7 @@ WORKDIR /var/www/
|
|||
ENTRYPOINT "start.sh"
|
||||
|
||||
# Build image
|
||||
# docker build -t nanogal:0.2.0 .
|
||||
# docker build -t nanogal:0.3.0 .
|
||||
# Run container
|
||||
# docker run -v nanogal_datas:/var/www/datas:ro -v nanogal_photos:/var/www/public/photos:ro -e TZ=UTC -p 8187:80 --name nanogal nanogal:0.2.0
|
||||
# docker run -v /opt/nanogal/datas:/var/www/datas:ro -v /opt/nanogal/photos:/var/www/public/photos:ro -e TZ=UTC -p 8187:80 --name nanogal nanogal:0.2.0
|
||||
# docker run -v nanogal_datas:/var/www/datas:ro -v nanogal_photos:/var/www/public/photos:ro -e TZ=UTC -p 8187:80 --name nanogal nanogal:0.3.0
|
||||
# docker run -v /opt/nanogal/datas:/var/www/datas:ro -v /opt/nanogal/photos:/var/www/public/photos:ro -e TZ=UTC -p 8187:80 --name nanogal nanogal:0.3.0
|
41
README.md
|
@ -6,7 +6,7 @@ NanoGal is fork of [MinigalNano](https://github.com/sebsauvage/MinigalNano) and
|
|||
|
||||
Why fork ? Because I love understand and adapte application for my usage.
|
||||
|
||||
NanoGal is a very simple image gallery. It adheres to the KISS principle and is very easy to install. NanoGal does not have a web admin interface: You just upload your images in the photo folder on your server (using FTP, SFTP...). It only requires php and GD (no database, no special libraries like PEAR or ImageMagick).
|
||||
NanoGal is a very simple image gallery. It adheres to the KISS principle and is very easy to install. NanoGal does not have a web admin interface: You just upload your images in the photo folder on your server (using FTP, SFTP...). It's only requires PHP 8 with two extension mbstring and GD (no database), you need composer too.
|
||||
|
||||
NanoGal uses a javascript [gLightBox](https://github.com/biati-digital/glightbox), but it degrades gracefully if javascript is disabled.
|
||||
|
||||
|
@ -35,7 +35,7 @@ Image use
|
|||
|
||||
```shell
|
||||
wget https://forge.leslibres.org/Knah-Tsaeb/NanoGal/raw/branch/main/Dockerfile
|
||||
docker buildx build --no-cache -t nanogal:0.2.0 .
|
||||
docker buildx build --no-cache -t nanogal:0.3.0 .
|
||||
```
|
||||
|
||||
#### Start container
|
||||
|
@ -43,30 +43,31 @@ docker buildx build --no-cache -t nanogal:0.2.0 .
|
|||
You can use native docker volume.
|
||||
|
||||
```shell
|
||||
docker run -v nanogal_datas:/var/www/datas:ro -v nanogal_photos:/var/www/public/photos:ro -e TZ=UTC -p 8187:80 --name nanogal nanogal:0.2.0
|
||||
docker run -v nanogal_datas:/var/www/datas:ro -v nanogal_photos:/var/www/public/photos:ro -e TZ=UTC -p 8187:80 --name nanogal nanogal:0.3.0
|
||||
```
|
||||
|
||||
Or use absolute path
|
||||
|
||||
```shell
|
||||
docker run -v /opt/nanogal/datas:/var/www/datas:ro -v /opt/nanogal/photos:/var/www/public/photos:ro -e TZ=UTC -p 8187:80 --name nanogal nanogal:0.2.0
|
||||
docker run -v /opt/nanogal/datas:/var/www/datas:ro -v /opt/nanogal/photos:/var/www/public/photos:ro -e TZ=UTC -p 8187:80 --name nanogal nanogal:0.3.0
|
||||
```
|
||||
|
||||
### Classic way
|
||||
|
||||
- Requires `php` (8 or higher) and two extension `php-gd` and `php-mbstring`.
|
||||
- Place all the files in a directory on your server.
|
||||
- Run `composer install --no-dev`
|
||||
- Configure your web server to serve `public/` directory.
|
||||
- Upload your photos to the `photos/` subdirectory.
|
||||
- That's all.
|
||||
|
||||
## Usage
|
||||
|
||||
### WARNING
|
||||
> <svg id="admonition-caution" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" style="width:2em;fill:#c43933;vertical-align:middle"><path d="M7.254.545L.545 7.255v9.49l6.71 6.71h9.49l6.71-6.71v-9.49l-6.71-6.71h-9.49zm.79 1.91h7.911l5.59 5.59v7.91l-5.59 5.59h-7.91l-5.59-5.59V8.046l5.59-5.59zm3 3.815v7.64h1.912V6.27h-1.912zm0 9.55v1.91h1.912v-1.91h-1.912z" transform="translate(-1.142 -1.142) scale(2.09516)"/></svg> Caution<br>
|
||||
>
|
||||
> ### When you upload your file, some data are share, particularly [Exif data](https://en.wikipedia.org/wiki/Exif). Exif data can expose the GPS coordinates of where the photos/videos were taken. This may not be what you want.
|
||||
> If you want, you can delete this data. Under GNU/Linux you can install `exiftool`. In the `bin` directory you have bash script (`remove_gps_datas.sh`) for remove this data in all file present in your gallery. USE AT OUR RISK.
|
||||
|
||||
When you upload your file, some data are share, particularly [Exif data](https://en.wikipedia.org/wiki/Exif). Exif data can expose the GPS coordinates of where the photos/videos were taken. This may not be what you want.
|
||||
|
||||
If you want, you can delete this data. Under GNU/Linux you can install `exiftool`. In the `bin` directory you have bash script (`remove_gps_datas.sh`) for remove this data in all file present in your gallery. USE AT OUR RISK.
|
||||
|
||||
### Adding your photos
|
||||
|
||||
|
@ -101,10 +102,11 @@ If some thumbnails are wrong, you can purge this directory: Thumbnails will be a
|
|||
<?php
|
||||
$userConfig = [
|
||||
'templateFile' => 'board', // Template filename (must be placed in 'public/templates' folder)
|
||||
'iconsTheme' => null, // Icons theme (must be placed in 'public/templates/{iconsTheme}/assets/icons folder)
|
||||
'title' => 'NanoGal', // Text to be displayed in browser titlebar
|
||||
'description' => 'My gallery', // Use in meta tag "description"
|
||||
'author' => 'NanoGal', // Your name
|
||||
'skipObjects' => ['comment.html', '.gitkeep', 'aFolder', 'aFile.ext'], //Those files and folders will not be displayed
|
||||
'skipObjects' => ['comment.html', '.gitkeep', 'aFolder', 'aFile.ext'], // Those files and folders will not be displayed
|
||||
'imageCaptionPosition' => 'right', // Position of caption in lightbox
|
||||
'sortBy' => 'name', // Sort by name or date
|
||||
'orderBy' => 'desc', // Order by asc or desc
|
||||
|
@ -119,6 +121,7 @@ $userConfig = [
|
|||
| Option | Type | Default | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| templateFile | string | board | Template filename (must be placed in 'public/templates' folder) |
|
||||
| iconsTheme | string | null | Icons theme (must be placed in 'public/templates/{iconsTheme}/assets/icons folder) |
|
||||
| title | string | NanoGal | Text to be displayed in browser titlebar |
|
||||
| description | string | My gallery | Use in meta tag "description" |
|
||||
| author | string | NanoGal | Your name |
|
||||
|
@ -132,11 +135,20 @@ $userConfig = [
|
|||
| showShareLink | boll | false | Show share link for thumb, full, markdown link (thumb + link to full) |
|
||||
| nbItemsAtom | int | 25 | Number of item in atom feed
|
||||
|
||||
#### Notes
|
||||
|
||||
If you change the thumbsize, thumbnails are not re-create. If the difference between older and newer size are small, I think you don't need regen all thumb. But if you prefer, you can delete `cache/thumbs/*` for force re-create thumbnails.
|
||||
> <svg version="1.1" id="admonition-warning" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" style="width:2em; fill:#cc5e20;vertical-align:middle"><path d="M24 0a2 2 0 00-1.79 1.105l-22 44A2 2 0 002 48h44a2 2 0 001.79-2.895l-22-44A2 2 0 0024 0zm0 6.473L42.764 44H5.236L24 6.473zm-2.95 10.406l.872 16.828h4.19l.872-16.828h-5.933zm2.968 19.55c-.838 0-1.56.223-2.164.665-.582.442-.874 1.197-.874 2.267 0 1.024.292 1.77.874 2.235.605.442 1.326.664 2.164.664.814 0 1.511-.222 2.093-.664.605-.466.909-1.21.909-2.235 0-1.07-.304-1.825-.909-2.267-.582-.442-1.279-.664-2.093-.664z"/></svg> Warning<br>
|
||||
>
|
||||
> The `skipObjects` option hide folder or/and picture, but not blocking access. The ressource can be show in browser with direct URL.
|
||||
>
|
||||
> It's not a bug, it's a feature :-) For example, you can have a hidden folder containing images for your blog. The folder won't be directly visible in your gallery, but the images inside it can still be used directly in an article.
|
||||
|
||||
If you change any parameter, the cache file (html file and atom file) are delete and recreate.
|
||||
|
||||
> <svg version="1.1" id="admonition-note" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" style="width:2em; fill:#206ccc;vertical-align:middle"><path d="M24 0C10.745 0 0 10.745 0 24s10.745 24 24 24 24-10.745 24-24S37.255 0 24 0zm0 4c10.587 0 20 9.413 20 20s-9.413 20-20 20S4 34.587 4 24 13.413 4 24 4zm-1.988 9v4.002h3.98V13h-3.98zM20 19.016v3.998h2v7.984h-2V35h8.004v-4.002h-2.002V19.016H20z"/></svg> Note <br>
|
||||
>
|
||||
>If you change the thumbsize, thumbnails are not re-create. If the difference between older and newer size are small, I think you don't need regen all thumb. But if you prefer, you can delete `cache/thumbs/*` for force re-create thumbnails.
|
||||
>
|
||||
|
||||
If you change any parameter in config, the cache file (html file and atom file) are delete and recreate.
|
||||
|
||||
|
||||
## Ideas
|
||||
|
@ -166,11 +178,14 @@ The same idea can be use with another sync tool of course.
|
|||
|
||||
NanoGal is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE v3 (https://gnu.org/licenses/agpl-3.0.txt).
|
||||
|
||||
Icons :
|
||||
Base icons (public/assets/icons) :
|
||||
- Author: [Vectopus](https://github.com/Vectopus/Atlas-icons-font?ref=svgrepo.com)
|
||||
- License: [MIT License](https://github.com/Vectopus/Atlas-icons-font/blob/main/LICENSE)
|
||||
- Collection: [Atlas Variety Line Icons](https://www.svgrepo.com/collection/atlas-variety-line-icons/)
|
||||
|
||||
KT Icons :
|
||||
- See [KT-Color-Scheme](https://forge.leslibres.org/Knah-Tsaeb/KT-Color-Scheme) for all detail
|
||||
|
||||
Origin
|
||||
|
||||
- [MinigalNano by SebSauvage](https://github.com/sebsauvage/MinigalNano)
|
||||
|
|
|
@ -16,17 +16,18 @@ class FileAndDir {
|
|||
private $config = [];
|
||||
private $fileExtensions = [
|
||||
'deny' => ['sh', 'html', 'js', 'vbs', 'exe', 'md'],
|
||||
'txt' => ['txt', 'md'],
|
||||
'img' => ['jpeg', 'jpg', 'jpe', 'bmp', 'webp', 'gif', 'png'],
|
||||
'pdf' => ['pdf'],
|
||||
'zip' => ['7z', 'zip', 'gz', 'tar', 'rar', 'r[0-9]{2,}'],
|
||||
'doc' => ['odt', 'doc', 'docx'],
|
||||
'pres' => ['odp', 'ppt', 'pptx'],
|
||||
'spread' => ['ods', 'xls', 'xlsx'],
|
||||
'video' => ['ogv', 'mp4', 'mpg', 'mpeg', 'mov', 'avi', 'wmv', 'flv', 'webm'],
|
||||
'audio' => ['aiff', 'aif', 'wma', 'aac', 'flac', 'mp3', 'ogg', 'm4a'],
|
||||
'file-text' => ['txt', 'md'],
|
||||
'file-img' => ['jpeg', 'jpg', 'jpe', 'bmp', 'webp', 'gif', 'png'],
|
||||
'file-pdf' => ['pdf'],
|
||||
'file-zip' => ['7z', 'zip', 'gz', 'tar', 'rar', 'r[0-9]{2,}'],
|
||||
'file-doc' => ['odt', 'doc', 'docx'],
|
||||
'file-pres' => ['odp', 'ppt', 'pptx'],
|
||||
'file-spread' => ['ods', 'xls', 'xlsx'],
|
||||
'file-video' => ['ogv', 'mp4', 'mpg', 'mpeg', 'mov', 'avi', 'wmv', 'flv', 'webm'],
|
||||
'file-audio' => ['aiff', 'aif', 'wma', 'aac', 'flac', 'mp3', 'ogg', 'm4a'],
|
||||
];
|
||||
private $appUrl;
|
||||
private $iconsTheme = '/assets/icons/';
|
||||
|
||||
/**
|
||||
* Initializes the object with directory paths and configuration settings.
|
||||
|
@ -55,6 +56,9 @@ class FileAndDir {
|
|||
if ($config['showShareLink'] === true) {
|
||||
$this->appUrl = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'];
|
||||
}
|
||||
if ($config['iconsTheme'] !== null) {
|
||||
$this->iconsTheme = 'templates/' . $config['iconsTheme'] . '/assets/icons/';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -80,13 +84,13 @@ class FileAndDir {
|
|||
$path .= $item;
|
||||
|
||||
if ($index === count($navitems) - 1) {
|
||||
$breadcrumb_navigation .= '<li>'.htmlspecialchars($item).'</li>';
|
||||
$breadcrumb_navigation .= '<li>' . htmlspecialchars($item) . '</li>';
|
||||
} else {
|
||||
$breadcrumb_navigation .= '<li><a href="?dir=/' . htmlspecialchars($path) . '">' . htmlspecialchars($item) . '</a></li>';
|
||||
$path .= '/';
|
||||
}
|
||||
}
|
||||
return $breadcrumb_navigation.'</ul>';
|
||||
return $breadcrumb_navigation . '</ul>';
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
|
@ -138,16 +142,20 @@ class FileAndDir {
|
|||
}
|
||||
if (is_dir($this->currentDir . '/' . $file)) {
|
||||
if ($file != "." && $file != "..") {
|
||||
$type = 'folder';
|
||||
if ($this->defineThumbnailDir($file)) {
|
||||
$thumb = $this->makeFolderThumbUrl($file);
|
||||
} else {
|
||||
$thumb = $this->getfirstImage($file);
|
||||
}
|
||||
if (str_ends_with($thumb, 'folder-empty.svg')) {
|
||||
$type = 'folder-empty';
|
||||
}
|
||||
$listDir[] = [
|
||||
'name' => $file,
|
||||
'thumb' => $thumb,
|
||||
'link' => '?dir=' . urlencode($this->requestedDir . '/' . $file),
|
||||
'type' => 'folder',
|
||||
'type' => $type,
|
||||
'date' => date("Y-m-d", filemtime($this->currentDir . '/' . $file)),
|
||||
'size' => filesize($this->currentDir . '/' . $file),
|
||||
'dataAttr' => null,
|
||||
|
@ -160,8 +168,12 @@ class FileAndDir {
|
|||
if ($extension === 'deny') {
|
||||
continue;
|
||||
}
|
||||
if ($extension !== 'img') {
|
||||
$thumb = '/assets/images/filetype_' . $extension . '.svg';
|
||||
if ($extension !== 'file-img') {
|
||||
if (file_exists($this->iconsTheme . $extension . '.svg')) {
|
||||
$thumb = $this->iconsTheme . $extension . '.svg';
|
||||
} else {
|
||||
$thumb = '/assets/icons/' . $extension . '.svg';
|
||||
}
|
||||
} else {
|
||||
$thumb = $this->makeImageThumbUrl($file);
|
||||
}
|
||||
|
@ -210,7 +222,7 @@ class FileAndDir {
|
|||
if (in_array($directory->getFilename(), $this->config['skipObjects'])) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($file->getExtension(), $this->fileExtensions['img'])) {
|
||||
if (in_array($file->getExtension(), $this->fileExtensions['file-img'])) {
|
||||
$allFile[] = [
|
||||
'url' => $this->appUrl . '/' . $file->getPathname(),
|
||||
'thumb' => $this->appUrl . '/' . $this->makeImageThumbUrl($file->getPathname()),
|
||||
|
@ -236,13 +248,11 @@ class FileAndDir {
|
|||
*
|
||||
* @param string $file The name of the file whose extension is to be checked.
|
||||
*
|
||||
* @return string The category name of the file type based on its extension. Possible values
|
||||
* include 'img', 'md', 'pdf', 'zip', 'rar', 'tar', 'gzip', 'doc', 'pres',
|
||||
* 'ods', 'video', 'audio', or 'other' if the extension is not recognized.
|
||||
* @return string The category name of the file type based on its extension or 'other' for unknow file
|
||||
*/
|
||||
private function getExtension(string $file): string {
|
||||
if (!is_readable($this->currentDir . '/' . $file) || !is_file($this->currentDir . '/' . $file)) {
|
||||
return 'broken';
|
||||
return 'file-broken';
|
||||
}
|
||||
|
||||
$fileExtension = strtolower(pathinfo($file, PATHINFO_EXTENSION));
|
||||
|
@ -253,7 +263,7 @@ class FileAndDir {
|
|||
}
|
||||
}
|
||||
}
|
||||
return 'other';
|
||||
return 'file-other';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -311,10 +321,10 @@ class FileAndDir {
|
|||
private function makeImageThumbUrl(string $file): string {
|
||||
$pathinfo = pathinfo($file);
|
||||
$ext = strtolower($pathinfo['extension']);
|
||||
if (in_array($ext, $this->fileExtensions['img'])) {
|
||||
if (in_array($ext, $this->fileExtensions['file-img'])) {
|
||||
$imageName = $file;
|
||||
|
||||
if(empty($this->currentDir)){
|
||||
if (empty($this->currentDir)) {
|
||||
$path = $imageName;
|
||||
} else {
|
||||
$path = $this->currentDir . '/' . $imageName;
|
||||
|
@ -328,7 +338,11 @@ class FileAndDir {
|
|||
'&'
|
||||
);
|
||||
} else {
|
||||
$imgParams = 'assets/images/default.svg';
|
||||
if (file_exists($this->iconsTheme . 'folder-empty.svg')) {
|
||||
$imgParams = $this->iconsTheme . 'folder-empty.svg';
|
||||
} else {
|
||||
$imgParams = '/assets/icons/folder-empty.svg';
|
||||
}
|
||||
}
|
||||
return $imgParams;
|
||||
}
|
||||
|
@ -346,7 +360,12 @@ class FileAndDir {
|
|||
*/
|
||||
private function getFirstImage(string $dir): string {
|
||||
$fullPath = $this->currentDir . '/' . $dir;
|
||||
$imageName = 'assets/images/default.svg';
|
||||
|
||||
if (file_exists($this->iconsTheme . 'folder-empty.svg')) {
|
||||
$imageName = $this->iconsTheme . 'folder-empty.svg';
|
||||
} else {
|
||||
$imageName = '/assets/icons/folder-empty.svg';
|
||||
}
|
||||
|
||||
if (!is_dir($fullPath)) {
|
||||
return $imageName;
|
||||
|
@ -362,7 +381,7 @@ class FileAndDir {
|
|||
continue;
|
||||
}
|
||||
$ext = strtolower($pathinfo['extension']);
|
||||
if (in_array($ext, $this->fileExtensions['img'])) {
|
||||
if (in_array($ext, $this->fileExtensions['file-img'])) {
|
||||
$imageName = 'createthumb.php?' . http_build_query(
|
||||
array(
|
||||
'filename' => $fullPath . '/' . $file
|
||||
|
@ -516,7 +535,7 @@ class FileAndDir {
|
|||
* @return string|null The Lightbox class name if the resource type is valid, otherwise `null`.
|
||||
*/
|
||||
static function addToLightBox(string $ressourceType): string|null {
|
||||
if (in_array($ressourceType, ['video', 'img'])) {
|
||||
if (in_array($ressourceType, ['file-video', 'file-img'])) {
|
||||
return 'glightbox';
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -27,6 +27,6 @@
|
|||
"tests"
|
||||
],
|
||||
"dependencies": {
|
||||
"glightbox": "^3.3.0"
|
||||
"glightbox": "^3.3.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,41 @@
|
|||
{
|
||||
"require": {
|
||||
"stefangabos/zebra_image": "^2.8",
|
||||
"league/commonmark": "^2.5"
|
||||
"stefangabos/zebra_image": "^3.0",
|
||||
"league/commonmark": "^2.6"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"App\\" : "app/",
|
||||
"App\\": "app/",
|
||||
"Utils\\": "app/"
|
||||
}
|
||||
},
|
||||
"repositories": {
|
||||
"kt-color-scheme": {
|
||||
"type": "vcs",
|
||||
"url": "https://forge.leslibres.org/knah-tsaeb/kt-color-scheme"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"copy-css": "php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/css/kt-scheme.css', 'public/templates/default/assets/css/kt-scheme.css');\"",
|
||||
"copy-icons": [
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-audio.svg', 'public/templates/default/assets/icons/file-audio.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-block.svg', 'public/templates/default/assets/icons/file-block.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-broken.svg', 'public/templates/default/assets/icons/file-broken.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/filetype-doc.svg', 'public/templates/default/assets/icons/file-doc.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-unknown.svg', 'public/templates/default/assets/icons/file-other.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/filetype-pdf.svg', 'public/templates/default/assets/icons/file-pdf.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-pres.svg', 'public/templates/default/assets/icons/file-pres.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-spread.svg', 'public/templates/default/assets/icons/file-spread.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-text.svg', 'public/templates/default/assets/icons/file-text.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-video.svg', 'public/templates/default/assets/icons/file-video.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/file-zip.svg', 'public/templates/default/assets/icons/file-zip.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/folder-empty.svg', 'public/templates/default/assets/icons/folder-empty.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/ui-light-dark.svg', 'public/templates/default/assets/icons/ui-light-dark.svg');\"",
|
||||
"php -r \"copy('vendor/knah-tsaeb/kt-color-scheme/public/assets/icons/ui-arrow-up.svg', 'public/templates/default/assets/icons/ui-arrow-up.svg');\""
|
||||
],
|
||||
"build-sprite": "php vendor/knah-tsaeb/kt-color-scheme/bin/svg_sprite_generator.php -f public/templates/default/svg-preset -o public/templates/default/assets/icons/sprite.svg"
|
||||
},
|
||||
"require-dev": {
|
||||
"knah-tsaeb/kt-color-scheme": "^0.2.0"
|
||||
}
|
||||
}
|
||||
}
|
20
public/assets/icons/file-audio.svg
Normal file
|
@ -0,0 +1,20 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M8.18 17.73a1 1 0 111 .95 1 1 0 01-1-.95" id="path1" />
|
||||
<circle class="prefix__cls-1" cx="14.86" cy="16.77" r=".95" id="circle1" />
|
||||
<path class="prefix__cls-1" d="M15.82 16.77v-5.73l-5.73.96v5.73" id="path2" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27V22.5H3.41v-21h12.41z" id="path3" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96z" id="path4" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 914 B |
19
public/assets/icons/file-block.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96z" id="path1" />
|
||||
<path class="prefix__cls-1"
|
||||
d="M20.59 12l-2.86 1.91L14.86 12l-2.87 1.91L9.14 12l-2.87 1.91L3.41 12V1.5h12.41l4.77 4.77zm0 3.82l-2.86 1.91-2.87-1.91-2.87 1.91-2.85-1.91-2.87 1.91-2.86-1.91v6.68h17.18z"
|
||||
id="path2" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 859 B |
19
public/assets/icons/file-broken.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96z" id="path1" />
|
||||
<path class="prefix__cls-1"
|
||||
d="M20.59 12l-2.86 1.91L14.86 12l-2.87 1.91L9.14 12l-2.87 1.91L3.41 12V1.5h12.41l4.77 4.77zm0 3.82l-2.86 1.91-2.87-1.91-2.87 1.91-2.85-1.91-2.87 1.91-2.86-1.91v6.68h17.18z"
|
||||
id="path2" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 808 B |
18
public/assets/icons/file-doc.svg
Normal file
|
@ -0,0 +1,18 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M6.27 14.86h7.64m-7.64-3.81h7.64m-7.64 7.63h7.64m2.86-10.5V22.5H3.41V5.32h10.5z"
|
||||
id="path1" />
|
||||
<path class="prefix__cls-1" d="M16.77 18.68h3.82V4.36L17.73 1.5H7.23v3.82" id="path2" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 722 B |
19
public/assets/icons/file-other.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M20.59 6.27V22.5H3.41v-21h12.41z" id="path1" />
|
||||
<path class="prefix__cls-1"
|
||||
d="M20.59 6.27v.96h-5.73V1.5h.96zm-9.54 12.41h1.9M12 16.77v-1.12a1.92 1.92 0 01.56-1.35l.79-.79a1.88 1.88 0 00.56-1.35V12A1.92 1.92 0 0012 10.09 1.92 1.92 0 0010.09 12"
|
||||
id="path2" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 806 B |
18
public/assets/icons/file-pdf.svg
Normal file
|
@ -0,0 +1,18 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M2.45 12.95h13.36v5.73H2.45z" id="path1" />
|
||||
<path class="prefix__cls-1" d="M4.36 18.68v3.82h17.19V6.27L16.77 1.5H4.36v11.46" id="path2" />
|
||||
<path class="prefix__cls-1" d="M21.55 6.27v.96h-5.73V1.5h.95z" id="path3" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 751 B |
|
@ -1,7 +1,7 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__prefix__Layer_1" data-name="Layer 1"
|
||||
version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<style>
|
||||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__prefix__cls-1,
|
||||
.prefix__prefix__cls-2 {
|
||||
fill: none;
|
||||
|
@ -15,11 +15,11 @@
|
|||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="prefix__prefix__SVGRepo_iconCarrier" stroke-width="1">
|
||||
<g id="prefix__prefix__SVGRepo_iconCarrier" stroke-width="1" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<path class="prefix__prefix__cls-1" id="prefix__prefix__polygon2" d="M3.41 22.5v-21h12.41l4.77 4.77V22.5z" />
|
||||
<path class="prefix__prefix__cls-1" id="prefix__prefix__polygon3" d="M14.86 7.23V1.5h.96l4.77 4.77v.96z" />
|
||||
</g>
|
||||
<g id="prefix__prefix__SVGRepo_iconCarrier-5" transform="translate(6.233 9.414) scale(.46245)" display="inline">
|
||||
<g id="prefix__prefix__SVGRepo_iconCarrier-5" transform="matrix(.9999 0 0 .9999 9.131 16.272)" display="inline">
|
||||
<g id="prefix__prefix__presentation_standing" data-name="presentation standing" transform="translate(.47)">
|
||||
<path class="prefix__prefix__cls-2" id="prefix__prefix__line1" d="M.5 1.48h23" />
|
||||
<path class="prefix__prefix__cls-2" id="prefix__prefix__line2" d="M.5 16.81h23" />
|
Before (image error) Size: 1.6 KiB After (image error) Size: 1.6 KiB |
18
public/assets/icons/file-spread.svg
Normal file
|
@ -0,0 +1,18 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M15.82 11.05v6.68M12 12.95v4.78m-3.82-2.87v2.87M20.59 6.27V22.5H3.41v-21h12.41z"
|
||||
id="path1" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96z" id="path2" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 710 B |
|
@ -1,8 +1,8 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
|
@ -12,7 +12,7 @@
|
|||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1"
|
||||
d="M6.27 11.05h11.46M6.27 14.86h11.46M6.27 18.68h11.46M20.59 6.27V22.5H3.41v-21h12.41l4.77 4.77z" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96l4.77 4.77z" />
|
||||
d="M6.27 11.05h11.46M6.27 14.86h11.46M6.27 18.68h11.46m2.86-12.41V22.5H3.41v-21h12.41z" id="path1" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96z" id="path2" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 700 B After (image error) Size: 762 B |
19
public/assets/icons/file-video.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M7.23 11.05h5.73v6.68H7.23zm5.73 3.81l2.86 2.87h.95v-6.69h-.95l-2.86 2.87z"
|
||||
id="path1" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27V22.5H3.41v-21h12.41z" id="path2" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96z" id="path3" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 790 B |
19
public/assets/icons/file-zip.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<svg viewBox="-2.4 -2.4 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-4.346 -4.346) scale(2.16216)">
|
||||
<defs id="defs1">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M3.41 22.5h17.18V5.32L16.77 1.5H3.41z" id="path1" />
|
||||
<path class="prefix__cls-1"
|
||||
d="M12 1.5a1.91 1.91 0 011.91 1.91v3.82h-3.82V3.41A1.91 1.91 0 0112 1.5zm0 9.55zM13.91 13zM12 14.86zm1.91 1.91zm0 3.82zM12 18.68z"
|
||||
id="path2" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 773 B |
16
public/assets/icons/folder-empty.svg
Normal file
|
@ -0,0 +1,16 @@
|
|||
<svg viewBox="-4.8 -4.8 48 48" id="prefix__Layer_1" data-name="Layer 1" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<style id="style1">
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
<g id="prefix__SVGRepo_iconCarrier" transform="translate(-6.746 -6.746) scale(2.16216)">
|
||||
<path class="prefix__cls-1"
|
||||
d="M20.59 22.5H3.41a1.92 1.92 0 01-1.91-1.91V7.23h17.18v13.36a1.92 1.92 0 001.91 1.91z" id="path1" />
|
||||
<path class="prefix__cls-1" d="M22.5 3.41v17.18a1.91 1.91 0 01-3.82 0V7.23H5.32V1.5h9.54l1.87 1.91z" id="path2" />
|
||||
</g>
|
||||
</svg>
|
After (image error) Size: 666 B |
6
public/assets/icons/ui-light-dark.svg
Normal file
|
@ -0,0 +1,6 @@
|
|||
<svg fill="#000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"
|
||||
xml:space="preserve">
|
||||
<path
|
||||
d="M256 0C114.842 0 0 114.84 0 256s114.842 256 256 256 256-114.84 256-256S397.158 0 256 0zm66.225 451.558c-20.797 7.062-43.071 10.894-66.225 10.894-113.837 0-206.452-92.614-206.452-206.452S142.163 49.548 256 49.548c23.154 0 45.429 3.832 66.226 10.894-55.614 46.997-91 117.215-91 195.558s35.386 148.561 90.999 195.558z"
|
||||
id="SVGRepo_iconCarrier" />
|
||||
</svg>
|
After (image error) Size: 506 B |
|
@ -1,18 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96l4.77 4.77z" />
|
||||
<path class="prefix__cls-1"
|
||||
d="M20.59 12l-2.86 1.91L14.86 12l-2.87 1.91L9.14 12l-2.87 1.91L3.41 12V1.5h12.41l4.77 4.77V12zM20.59 15.82l-2.86 1.91-2.87-1.91-2.87 1.91-2.85-1.91-2.87 1.91-2.86-1.91v6.68h17.18v-6.68z" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 792 B |
|
@ -1,18 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-4.8 -4.8 33.6 33.6" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
</defs>
|
||||
<path class="prefix__cls-1"
|
||||
d="M20.59 22.5H3.41a1.92 1.92 0 01-1.91-1.91V7.23h17.18v13.36a1.92 1.92 0 001.91 1.91z" />
|
||||
<path class="prefix__cls-1" d="M22.5 3.41v17.18a1.91 1.91 0 01-3.82 0V7.23H5.32V1.5h9.54l1.87 1.91z" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 657 B |
|
@ -1,20 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M8.18 17.73a1 1 0 111 .95 1 1 0 01-1-.95" />
|
||||
<circle class="prefix__cls-1" cx="14.86" cy="16.77" r=".95" />
|
||||
<path class="prefix__cls-1" d="M15.82 16.77v-5.73l-5.73.96v5.73" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27V22.5H3.41v-21h12.41l4.77 4.77z" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96l4.77 4.77z" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 868 B |
|
@ -1,18 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96l4.77 4.77z" />
|
||||
<path class="prefix__cls-1"
|
||||
d="M20.59 12l-2.86 1.91L14.86 12l-2.87 1.91L9.14 12l-2.87 1.91L3.41 12V1.5h12.41l4.77 4.77V12zM20.59 15.82l-2.86 1.91-2.87-1.91-2.87 1.91-2.85-1.91-2.87 1.91-2.86-1.91v6.68h17.18v-6.68z" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 792 B |
|
@ -1,18 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1"
|
||||
d="M6.27 14.86h7.64M6.27 11.05h7.64M6.27 18.68h7.64M16.77 8.18V22.5H3.41V5.32h10.5l2.86 2.86z" />
|
||||
<path class="prefix__cls-1" d="M16.77 18.68h3.82V4.36L17.73 1.5H7.23v3.82" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 699 B |
|
@ -1,18 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M20.59 6.27V22.5H3.41v-21h12.41l4.77 4.77z" />
|
||||
<path class="prefix__cls-1"
|
||||
d="M20.59 6.27v.96h-5.73V1.5h.96l4.77 4.77zM11.05 18.68h1.9M12 16.77v-1.12a1.92 1.92 0 01.56-1.35l.79-.79a1.88 1.88 0 00.56-1.35V12A1.92 1.92 0 0012 10.09 1.92 1.92 0 0010.09 12" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 786 B |
|
@ -1,18 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M2.45 12.95h13.36v5.73H2.45z" />
|
||||
<path class="prefix__cls-1" d="M4.36 18.68v3.82h17.19V6.27L16.77 1.5H4.36v11.46" />
|
||||
<path class="prefix__cls-1" d="M21.55 6.27v.96h-5.73V1.5h.95l4.78 4.77z" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 718 B |
|
@ -1,18 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1"
|
||||
d="M15.82 11.05v6.68M12 12.95v4.78M8.18 14.86v2.87M20.59 6.27V22.5H3.41v-21h12.41l4.77 4.77z" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96l4.77 4.77z" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 696 B |
|
@ -1,19 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1"
|
||||
d="M7.23 11.05h5.73v6.68H7.23zM12.96 14.86l2.86 2.87h.95v-6.69h-.95l-2.86 2.87v.95z" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27V22.5H3.41v-21h12.41l4.77 4.77z" />
|
||||
<path class="prefix__cls-1" d="M20.59 6.27v.96h-5.73V1.5h.96l4.77 4.77z" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 776 B |
|
@ -1,18 +0,0 @@
|
|||
<svg width="800" height="800" viewBox="-2.4 -2.4 28.8 28.8" id="prefix__Layer_1" data-name="Layer 1"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="prefix__SVGRepo_iconCarrier">
|
||||
<defs>
|
||||
<style>
|
||||
.prefix__cls-1 {
|
||||
fill: none;
|
||||
stroke: #333333;
|
||||
stroke-miterlimit: 10;
|
||||
stroke-width: 1.2
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path class="prefix__cls-1" d="M3.41 22.5h17.18V5.32L16.77 1.5H3.41z" />
|
||||
<path class="prefix__cls-1"
|
||||
d="M12 1.5a1.91 1.91 0 011.91 1.91v3.82h-3.82V3.41A1.91 1.91 0 0112 1.5zM12 11.05zM13.91 13zM12 14.86zM13.91 16.77zM13.91 20.59zM12 18.68z" />
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 742 B |
|
@ -1,11 +0,0 @@
|
|||
<svg fill="#000000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"></g>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g>
|
||||
<g id="SVGRepo_iconCarrier">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M256,0C114.842,0,0,114.84,0,256s114.842,256,256,256s256-114.84,256-256S397.158,0,256,0z M322.225,451.558 c-20.797,7.062-43.071,10.894-66.225,10.894c-113.837,0-206.452-92.614-206.452-206.452S142.163,49.548,256,49.548 c23.154,0,45.429,3.832,66.226,10.894C266.612,107.439,231.226,177.657,231.226,256S266.612,404.561,322.225,451.558z"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 898 B |
2
public/assets/js/glightbox.min.js
vendored
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use stefangabos\Zebra_Image\Zebra_Image;
|
||||
use Utils\Utils;
|
||||
|
||||
error_reporting(-1);
|
||||
|
@ -42,7 +43,11 @@ if (file_exists($thumbname)) {
|
|||
|
||||
if (!is_readable($getFilename) || !is_file($getFilename)) {
|
||||
header('Content-type: image/svg+xml');
|
||||
$cannotopenImg = file_get_contents('assets/images/cannotopen.svg');
|
||||
if (file_exists('template/' . $config['iconsTheme'] . '/assets/icons/file-block.svg')) {
|
||||
$cannotopenImg = file_get_contents('template/' . $config['iconsTheme'] . '/assets/icons/file-block.svg');
|
||||
} else {
|
||||
$cannotopenImg = file_get_contents('assets/images/file-block.svg');
|
||||
}
|
||||
echo $cannotopenImg;
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ use Utils\Utils;
|
|||
|
||||
error_reporting(-1);
|
||||
|
||||
$version = "0.1.0";
|
||||
$version = "0.3.0";
|
||||
ini_set("memory_limit", "256M");
|
||||
|
||||
/*
|
||||
|
@ -18,6 +18,7 @@ See README.md
|
|||
*/
|
||||
$config = [
|
||||
'templateFile' => 'default', // Template filename (must be placed in 'public/templates' folder)
|
||||
'iconsTheme' => null, // Icons theme (must be placed in 'public/templates/{iconsTheme}/assets/icons folder)
|
||||
'title' => 'NanoGal', // Text to be displayed in browser titlebar
|
||||
'description' => 'My gallery', // Use in meta tag "description"
|
||||
'author' => 'NanoGal', // Your name
|
||||
|
|
|
@ -183,7 +183,52 @@ img {
|
|||
}
|
||||
|
||||
nav {
|
||||
font-size: 2.2rem;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
|
||||
nav {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
display: flex;
|
||||
gap: calc(var(--default-space) * 2);
|
||||
flex-wrap: wrap;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
a {
|
||||
color: var(--primary-lighten);
|
||||
font-weight: normal;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
nav li {
|
||||
margin: var(--default-space);
|
||||
list-style: none;
|
||||
font-size: calc(var(--font-size) * 1.2);
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
li {
|
||||
margin: auto 0;
|
||||
}
|
||||
|
||||
& li:not(:last-child)::after {
|
||||
content: "/";
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul {
|
||||
gap: 0;
|
||||
}
|
||||
}
|
||||
|
||||
body>nav {
|
||||
|
@ -221,7 +266,7 @@ aside * {
|
|||
width: min-content;
|
||||
}
|
||||
|
||||
.card:hover{
|
||||
.card:hover {
|
||||
transform: scale(1.2);
|
||||
z-index: 1;
|
||||
box-shadow: 0em 0em .3em .3em var(--background-color-darken);
|
||||
|
|
|
@ -62,9 +62,9 @@ use App\FileAndDir;
|
|||
</svg><a href="/"><?= $config['title']; ?></a>
|
||||
</h1>
|
||||
<a href="#" id="dark-mode" onclick="switchTheme();">
|
||||
<img height="24" src="/assets/images/moon.svg" alt="Dark/Light mode icon">
|
||||
<img height="24" src="/assets/icons/ui-light-dark.svg" alt="Dark/Light mode icon">
|
||||
</a>
|
||||
<nav>
|
||||
<nav class="breadcrumb">
|
||||
<?= $breadcrumb_navigation; ?>
|
||||
</nav>
|
||||
<aside>
|
||||
|
|
|
@ -104,7 +104,6 @@ body {
|
|||
margin: 0 auto;
|
||||
min-height: 100dvh;
|
||||
text-rendering: optimizeSpeed;
|
||||
font-size: var(--font-size);
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
|
@ -235,7 +234,8 @@ main,
|
|||
padding: 1rem;
|
||||
}
|
||||
|
||||
img {
|
||||
img,
|
||||
svg {
|
||||
transition: all .2s ease-in;
|
||||
border: none;
|
||||
}
|
||||
|
@ -267,6 +267,10 @@ figure {
|
|||
transition: all .2s ease-in;
|
||||
position: relative;
|
||||
width: min-content;
|
||||
|
||||
svg {
|
||||
fill: var(--dark-background-color);
|
||||
}
|
||||
}
|
||||
|
||||
figure a {
|
||||
|
@ -274,7 +278,7 @@ figure a {
|
|||
}
|
||||
|
||||
figcaption {
|
||||
color: var(--header-text-color);
|
||||
color: var(--light-text-color);
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
|
@ -304,10 +308,22 @@ footer a {
|
|||
background-color: var(--primary);
|
||||
color: var(--text-color-secondary);
|
||||
display: block;
|
||||
margin: .5%;
|
||||
padding: 1rem 4rem;
|
||||
margin: calc(var(--default-space) * 2.5);
|
||||
padding: calc(var(--default-space)* 2.5);
|
||||
position: fixed;
|
||||
right: 0;
|
||||
|
||||
svg {
|
||||
fill: var(--text-color-secondary);
|
||||
}
|
||||
}
|
||||
|
||||
#backtop:hover {
|
||||
color: var(--dark-background-color);
|
||||
|
||||
svg {
|
||||
fill: var(--dark-background-color);
|
||||
}
|
||||
}
|
||||
|
||||
#legend {
|
114
public/templates/default/assets/css/kt-scheme.css
Normal file
|
@ -0,0 +1,114 @@
|
|||
:root {
|
||||
color-scheme: dark light;
|
||||
|
||||
--primary: #cc2027;
|
||||
--primary-darken: #8E161B;
|
||||
--primary-lighten: #D64C52;
|
||||
--primary-text-contrast: #FFF;
|
||||
|
||||
--secondary: #20ccc5;
|
||||
--secondary-darken: #168E89;
|
||||
--secondary-lighten: #4CD6D0;
|
||||
--secondary-text-contrast: #000;
|
||||
|
||||
--error: #c43933;
|
||||
--error-darken: #892723;
|
||||
--error-lighten: #CF605B;
|
||||
--error-text-contrast: #FFF;
|
||||
|
||||
--info: #206ccc;
|
||||
--info-darken: #164B8E;
|
||||
--info-lighten: #4C89D6;
|
||||
--info-text-contrast: #FFF;
|
||||
|
||||
--success: #7dcc20;
|
||||
--success-darken: #578E16;
|
||||
--success-lighten: #97D64C;
|
||||
--success-text-contrast: #000;
|
||||
|
||||
--warning: #cc5e20;
|
||||
--warning-darken: #8E4116;
|
||||
--warning-lighten: #D67E4C;
|
||||
--warning-text-contrast: #FFF;
|
||||
|
||||
--divider: light-dark(#B2AFAF, #454343);
|
||||
|
||||
--background-color: light-dark(#fffbfb, #171414);
|
||||
--background-color-darken: light-dark(#B2AFAF, #100E0E);
|
||||
--background-color-lighten: light-dark(#FFFBFB, #454343);
|
||||
|
||||
--background-secondary-color: #ebebeb;
|
||||
|
||||
--light-background-color: #fffbfb;
|
||||
--dark-background-color: #171414;
|
||||
|
||||
--header-background-color: light-dark(#171414, #fffbfb);
|
||||
--header-background-color-darken: light-dark(#100E0E, #B2AFAF);
|
||||
--header-background-color-lighten: light-dark(#454343, #FFFBFB);
|
||||
|
||||
--header-text-color: light-dark(#fffbfb, #171414);
|
||||
--header-text-color-secondary: #ffffffb3;
|
||||
--header-text-color-disable: var(--divider);
|
||||
|
||||
--text-color: light-dark(#171414, #fffbfb);
|
||||
--text-color-secondary: #ffffffb3;
|
||||
--text-color-disable: light-dark(#454343, #B2AFAF);
|
||||
|
||||
--light-text-color: #171414;
|
||||
--dark-text-color: #fffbfb;
|
||||
|
||||
--text-color-inverse: light-dark(#fffbfb, #171414);
|
||||
--text-color-secondary-inverse: #ffffffb3;
|
||||
--text-color-disable-inverse: var(--divider);
|
||||
|
||||
--box-shadow-light: .4rem .4rem 0px .1rem #B2AFAF;
|
||||
--box-shadow-dark: .4rem .4rem 0px .1rem #454343;
|
||||
--box-shadow-auto: .4rem .4rem 0px .1rem var(--divider);
|
||||
|
||||
--h1-color: var(--primary);
|
||||
--h2-color: #c33d35;
|
||||
--h3-color: #b94f44;
|
||||
--h4-color: #ae5e52;
|
||||
--h5-color: #a16a61;
|
||||
--h6-color: #927671;
|
||||
|
||||
--font-size: 1.2em;
|
||||
--default-space: .2em;
|
||||
}
|
||||
|
||||
[data-theme="dark"] {
|
||||
color-scheme: dark;
|
||||
--background-color: #171414;
|
||||
--text-color: #fffbfb;
|
||||
--text-color-inverse: #171414;
|
||||
}
|
||||
|
||||
[data-theme="light"] {
|
||||
color-scheme: light;
|
||||
--background-color: #fffbfb;
|
||||
--text-color: #171414;
|
||||
--text-color-inverse: #fffbfb;
|
||||
}
|
||||
|
||||
* {
|
||||
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: var(--font-size);
|
||||
}
|
||||
|
||||
svg {
|
||||
display: inline-block;
|
||||
fill: var(--primary);
|
||||
height: var(--font-size);
|
||||
vertical-align: middle;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.svg-icon {
|
||||
height: var(--font-size);
|
||||
vertical-align: middle;
|
||||
width: auto;
|
||||
}
|
1
public/templates/default/assets/icons/file-audio.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg id="file-audio" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.455.545v22.91h19.09V5.875l-5.33-5.33H2.455zm1.91 1.91h9.54v5.73h5.73v13.36H4.365V2.455zm11.45.39l1.714 1.716 1.715 1.714h-3.43v-3.43zm.96 7.067l-7.64 1.28v4.54a1.97 1.97 0 00-.772.172 1.98 1.98 0 00-1.136 1.873 1.969 1.969 0 001.954 1.858 1.98 1.98 0 001.813-1.23 1.99 1.99 0 00.05-1.289v-4.308l3.821-.64v2.698h-.005a1.918 1.918 0 00-1.905 1.903 1.92 1.92 0 001.905 1.907c1.04 0 1.906-.866 1.906-1.907h.01V9.912zm-7.64 7.735v.035a.206.206 0 010-.035z" transform="matrix(2.09535 0 0 2.09515 -1.144 -1.142)"/></svg>
|
After (image error) Size: 615 B |
1
public/templates/default/assets/icons/file-block.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 48 48" id="file-block" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M2.455.545v22.91h19.09V5.875l-5.33-5.33H2.455zm1.91 1.91h9.54v5.73h5.73v13.36H4.365V2.455zm11.449.39l3.43 3.43h-3.43v-3.43zM12 9.135c-3.15 0-5.725 2.574-5.725 5.724 0 3.15 2.575 5.725 5.725 5.725 3.15 0 5.725-2.574 5.725-5.725 0-3.15-2.575-5.724-5.725-5.724zm0 1.91a3.8 3.8 0 011.945.528l-5.233 5.225a3.801 3.801 0 01-.526-1.939A3.8 3.8 0 0112 11.045zm3.293 1.882a3.8 3.8 0 01.52 1.932A3.801 3.801 0 0112 18.676a3.801 3.801 0 01-1.938-.526l5.23-5.223z" transform="matrix(2.09536 0 0 2.09514 -1.143 -1.142)"/></svg>
|
After (image error) Size: 613 B |
1
public/templates/default/assets/icons/file-broken.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 48 48" id="file-broken" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M4.002 0v25.068l7.992 5.336 6.014-3.998 5.97 4.002 6.016-4.006 6.016 4.002 7.994-5.336v-13.9L32.836 0H4.002zm4.002 4.002h19.992V16.01h12.006v6.924L36.006 25.6l-6.012-4.002-6.008 3.998-5.97-4.002-6.018 4.006-3.994-2.668V4.002zm23.992.818l7.186 7.188h-7.186V4.82zM4.002 28.266v19.736h40.002V28.266l-7.998 5.336-6.012-3.998-6.008 3.998-5.97-4.002-6.018 4.002-7.996-5.336zm25.992 6.14l6.016 4.004L40 35.746V44H8.006v-8.254l3.988 2.664 6.014-3.998 5.97 3.998 6.016-4.004z"/></svg>
|
After (image error) Size: 575 B |
1
public/templates/default/assets/icons/file-doc.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg version="1.1" id="filetype-doc" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-3.73 9.388c.513 0 .933.1 1.264.304.336.198.583.48.742.847.159.362.238.788.238 1.277 0 .49-.08.92-.244 1.285a1.837 1.837 0 01-.736.848c-.33.203-.754.304-1.27.304-.512 0-.935-.101-1.27-.304a1.868 1.868 0 01-.742-.854c-.159-.366-.239-.795-.239-1.285 0-.486.08-.91.239-1.271a1.83 1.83 0 01.741-.847c.336-.203.761-.304 1.278-.304zm5.263.006c.234 0 .47.027.708.08.243.048.472.126.688.232l-.33.807a3.483 3.483 0 00-.51-.192 1.833 1.833 0 00-.57-.086c-.379 0-.678.143-.899.43-.216.283-.324.673-.324 1.172 0 .499.103.886.31 1.164.212.274.53.41.953.41.208 0 .406-.024.596-.072.194-.049.389-.11.583-.185v.86a3.285 3.285 0 01-1.29.239c-.504 0-.919-.1-1.245-.298a1.86 1.86 0 01-.722-.847c-.155-.366-.232-.792-.232-1.278 0-.476.089-.898.266-1.264.176-.366.434-.653.774-.86.34-.208.754-.312 1.244-.312zm-12.166.067H6.78c.741 0 1.319.196 1.734.589.419.388.628.953.628 1.694 0 .543-.1.995-.304 1.357a1.94 1.94 0 01-.86.814c-.37.18-.81.271-1.318.271H5.22v-4.725zm6.904.767c-.42 0-.724.142-.914.424-.185.282-.278.67-.278 1.164 0 .495.093.883.278 1.166.19.278.492.417.907.417.424 0 .725-.14.906-.417.186-.283.278-.671.278-1.166 0-.494-.092-.882-.278-1.164-.18-.282-.48-.424-.9-.424zm-5.892.06v3.065h.423c.954 0 1.43-.523 1.43-1.57 0-.507-.112-.882-.337-1.124-.225-.248-.556-.372-.993-.372H6.23zm-1.83 5.058h15.197v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></svg>
|
After (image error) Size: 1.6 KiB |
1
public/templates/default/assets/icons/file-other.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg id="file-unknown" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.455.545v22.91h19.09V5.875l-5.33-5.33H2.455zm1.91 1.91h9.54v5.73h5.73v13.36H4.365V2.455zm11.45.39l3.43 3.43h-3.43v-3.43zm-3.737 6.32a6.22 6.22 0 00-1.783.242 7.656 7.656 0 00-1.512.628l.756 1.555a7.84 7.84 0 011.198-.5c.4-.123.8-.185 1.199-.185.39 0 .694.08.913.242a.79.79 0 01.342.685c0 .19-.033.366-.1.528a1.43 1.43 0 01-.342.486 5.841 5.841 0 01-.77.613c-.486.342-.814.68-.985 1.013-.171.324-.257.723-.257 1.198v.514h1.698v-.314c0-.2.029-.371.086-.514.067-.143.18-.29.342-.442a5.46 5.46 0 01.685-.556c.562-.4.98-.8 1.255-1.2.276-.399.414-.888.414-1.468 0-.77-.275-1.384-.827-1.84-.542-.457-1.313-.686-2.312-.686zm-.399 8.132c-.352 0-.647.09-.884.271-.238.18-.357.49-.357.928 0 .418.119.722.357.912.237.181.532.272.884.272.324 0 .604-.091.842-.272.247-.19.371-.494.371-.912 0-.438-.124-.747-.37-.928a1.352 1.352 0 00-.843-.271z" transform="translate(-1.142 -1.142) scale(2.09516)"/></svg>
|
After (image error) Size: 993 B |
1
public/templates/default/assets/icons/file-pdf.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg version="1.1" id="filetype-pdf" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-9.7 9.46h1.482c.61 0 1.06.128 1.35.384.292.252.437.61.437 1.073 0 .278-.057.538-.172.78-.114.243-.306.44-.575.59-.265.15-.625.225-1.08.225h-.43v1.674H6.151v-4.725zm4.11 0h1.562c.742 0 1.32.197 1.735.59.42.388.629.953.629 1.694 0 .543-.101.995-.304 1.357-.203.362-.49.633-.862.814-.37.18-.809.271-1.316.271h-1.444v-4.725zm4.879 0h2.708v.82h-1.722v1.22h1.602v.82h-1.602v1.866h-.986v-4.725zm-7.977.827v1.39h.338c.278 0 .497-.054.656-.165.163-.11.244-.298.244-.563 0-.211-.066-.375-.198-.49-.128-.114-.329-.172-.603-.172h-.437zm4.11 0v3.066h.425c.953 0 1.43-.523 1.43-1.57 0-.507-.113-.882-.338-1.124-.225-.248-.556-.372-.993-.372h-.523zm-6.872 5.059h15.196v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></svg>
|
After (image error) Size: 978 B |
1
public/templates/default/assets/icons/file-pres.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg id="file-pres" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M-7.345-16.865v46.429h38.69V-6.062L20.543-16.865H-7.345zm3.87 3.871H15.86V-1.38h11.614v27.074H-3.474v-38.687zm23.206.792l3.476 3.476 3.476 3.474H19.73v-6.95zM.48.348v19.2h5.8l-2.92 2.066v1.967h4.88l1.826-1.587v1.611h3.87v-1.68l1.94 1.686h4.878v-1.967l-2.963-2.097h5.73V.347H.48zm3.869 3.869H19.65v11.461H4.35V4.217z" transform="translate(11.594 17.436) scale(1.03385)"/></svg>
|
After (image error) Size: 474 B |
1
public/templates/default/assets/icons/file-spread.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 48 48" id="file-spread" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M5.716.668v48h40V11.836L34.548.668H5.716zM9.718 4.67h19.988v12.006h12.008v27.99H9.718V4.67zm23.99.818l3.594 3.594 3.593 3.592h-7.187V5.488zm-19.992 13.18v24h24v-24h-24zm4 4h6v6h-6v-6zm10 0h6v6h-6v-6zm-10 10h6v6h-6v-6zm10 0h6v6h-6v-6z" transform="translate(-1.716 -.668)"/></svg>
|
After (image error) Size: 378 B |
1
public/templates/default/assets/icons/file-text.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 48 48" id="file-text" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M2.455.545v22.91h19.09V5.875l-5.33-5.33H2.455zm1.91 1.91h9.54v5.73h5.73v13.36H4.365V2.455zm11.45.39l1.714 1.716 1.715 1.714h-3.43v-3.43zm-9.546 7.25v1.91h11.462v-1.91H6.269zm0 3.81v1.91h11.462v-1.91H6.269zm0 3.82v1.91h11.462v-1.91H6.269z" transform="matrix(2.09535 0 0 2.09517 -1.144 -1.142)"/></svg>
|
After (image error) Size: 398 B |
1
public/templates/default/assets/icons/file-video.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg id="file-video" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.455.545v22.91h19.09V5.875l-5.33-5.33H2.455zm1.91 1.91h9.54v5.73h5.73v13.36H4.365V2.455zm11.45.39l1.714 1.716 1.715 1.714h-3.43v-3.43zm-.391 7.241l-1.51 1.515v-1.506H6.276v8.59h7.638V17.17l1.51 1.516h2.3v-8.6h-2.3zm-7.238 1.92h3.82v4.77h-3.82v-4.77zm7.628.392v3.973l-1.9-1.906v-.16l1.9-1.907z" transform="matrix(2.09535 0 0 2.09515 -1.144 -1.142)"/></svg>
|
After (image error) Size: 456 B |
1
public/templates/default/assets/icons/file-zip.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg id="file-zip" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M4 0v48h40V9.174L34.824 0H4zm4.002 4.002h10.344a5.918 5.918 0 00-.35 2.002v10.004h12.008V6.004c0-.7-.125-1.375-.35-2.002h3.514l6.83 6.83v33.166H8.002V4.002zm15.998 0c1.129 0 2.002.873 2.002 2.002v6.002h-4.004V6.004c0-1.129.873-2.002 2.002-2.002z"/></svg>
|
After (image error) Size: 351 B |
1
public/templates/default/assets/icons/filetype-doc.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg version="1.1" id="filetype-doc" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-3.73 9.388c.513 0 .933.1 1.264.304.336.198.583.48.742.847.159.362.238.788.238 1.277 0 .49-.08.92-.244 1.285a1.837 1.837 0 01-.736.848c-.33.203-.754.304-1.27.304-.512 0-.935-.101-1.27-.304a1.868 1.868 0 01-.742-.854c-.159-.366-.239-.795-.239-1.285 0-.486.08-.91.239-1.271a1.83 1.83 0 01.741-.847c.336-.203.761-.304 1.278-.304zm5.263.006c.234 0 .47.027.708.08.243.048.472.126.688.232l-.33.807a3.483 3.483 0 00-.51-.192 1.833 1.833 0 00-.57-.086c-.379 0-.678.143-.899.43-.216.283-.324.673-.324 1.172 0 .499.103.886.31 1.164.212.274.53.41.953.41.208 0 .406-.024.596-.072.194-.049.389-.11.583-.185v.86a3.285 3.285 0 01-1.29.239c-.504 0-.919-.1-1.245-.298a1.86 1.86 0 01-.722-.847c-.155-.366-.232-.792-.232-1.278 0-.476.089-.898.266-1.264.176-.366.434-.653.774-.86.34-.208.754-.312 1.244-.312zm-12.166.067H6.78c.741 0 1.319.196 1.734.589.419.388.628.953.628 1.694 0 .543-.1.995-.304 1.357a1.94 1.94 0 01-.86.814c-.37.18-.81.271-1.318.271H5.22v-4.725zm6.904.767c-.42 0-.724.142-.914.424-.185.282-.278.67-.278 1.164 0 .495.093.883.278 1.166.19.278.492.417.907.417.424 0 .725-.14.906-.417.186-.283.278-.671.278-1.166 0-.494-.092-.882-.278-1.164-.18-.282-.48-.424-.9-.424zm-5.892.06v3.065h.423c.954 0 1.43-.523 1.43-1.57 0-.507-.112-.882-.337-1.124-.225-.248-.556-.372-.993-.372H6.23zm-1.83 5.058h15.197v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></svg>
|
After (image error) Size: 1.6 KiB |
1
public/templates/default/assets/icons/filetype-pdf.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg version="1.1" id="filetype-pdf" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M2.418.508v22.984h19.164V5.86L16.23.507H2.417zm1.984 1.984h9.465v5.73h5.731v3.008H4.402V2.492zm11.45.444l1.475 1.475 1.829 1.827h-3.304V2.936zm-9.7 9.46h1.482c.61 0 1.06.128 1.35.384.292.252.437.61.437 1.073 0 .278-.057.538-.172.78-.114.243-.306.44-.575.59-.265.15-.625.225-1.08.225h-.43v1.674H6.151v-4.725zm4.11 0h1.562c.742 0 1.32.197 1.735.59.42.388.629.953.629 1.694 0 .543-.101.995-.304 1.357-.203.362-.49.633-.862.814-.37.18-.809.271-1.316.271h-1.444v-4.725zm4.879 0h2.708v.82h-1.722v1.22h1.602v.82h-1.602v1.866h-.986v-4.725zm-7.977.827v1.39h.338c.278 0 .497-.054.656-.165.163-.11.244-.298.244-.563 0-.211-.066-.375-.198-.49-.128-.114-.329-.172-.603-.172h-.437zm4.11 0v3.066h.425c.953 0 1.43-.523 1.43-1.57 0-.507-.113-.882-.338-1.124-.225-.248-.556-.372-.993-.372h-.523zm-6.872 5.059h15.196v3.226H4.402v-3.226z" transform="matrix(2.02302 0 0 2.0884 -.276 -1.06)"/></svg>
|
After (image error) Size: 978 B |
1
public/templates/default/assets/icons/folder-empty.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg id="folder-empty" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M4.365.545v5.73H.545v14.321a2.888 2.888 0 002.86 2.859h17.184c.69 0 1.393-.225 1.948-.719.555-.493.918-1.271.918-2.147V2.455h-6.324L15.26.545H4.366zm1.91 1.91h8.184l1.87 1.91h5.216V20.59c0 .398-.114.577-.275.72-.16.143-.413.235-.677.236a.951.951 0 01-.958-.956V6.276H6.275v-3.82zm-3.82 5.73h15.27v12.419c.002.331.056.648.152.94H3.414a.95.95 0 01-.959-.958v-12.4z" transform="translate(-1.142 -1.142) scale(2.09516)"/></svg>
|
After (image error) Size: 524 B |
2
public/templates/default/assets/icons/sprite.svg
Normal file
After (image error) Size: 9 KiB |
1
public/templates/default/assets/icons/ui-arrow-up.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg version="1.1" id="ui-arrow-up" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M22 45c0 4 4.006 4 4 0V7.3l14.232 14.349c2.75 2.789 5.577.194 2.948-2.709C37.477 12.913 31.706 6.964 26 .94c-.595-.586-1.277-.953-2-.94-.77.01-1.432.364-2 .94l-17.18 18c-2.63 2.903.199 5.498 2.948 2.708L22 7.3z"/></svg>
|
After (image error) Size: 319 B |
1
public/templates/default/assets/icons/ui-light-dark.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg id="ui-light-dark" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path d="M24 0C10.769 0 0 10.769 0 24s10.769 24 24 24c12.235 0 22.356-9.21 23.813-21.059.118-.964.187-1.945.187-2.941 0-.965-.064-1.916-.176-2.852a24 24 0 00-.023-.185 23.84 23.84 0 00-.524-2.8 23.767 23.767 0 00-.869-2.743 24 24 0 00-.056-.145 23.909 23.909 0 00-1.157-2.515 24 24 0 00-.066-.127 24.025 24.025 0 00-1.412-2.291 24 24 0 00-.254-.356 24.15 24.15 0 00-1.557-1.941 24 24 0 00-.304-.336 24.251 24.251 0 00-1.774-1.727 24 24 0 00-.35-.3 24.137 24.137 0 00-2.11-1.602 24 24 0 00-.179-.115 24.01 24.01 0 00-2.36-1.371 24 24 0 00-.071-.041 24 24 0 00-.004.002A23.841 23.841 0 0024 0zm0 4c2.355 0 4.611.408 6.707 1.15A24 24 0 0021.434 24a24 24 0 009.277 18.85A20.038 20.038 0 0124 44C12.93 44 4 35.07 4 24S12.93 4 24 4z"/></svg>
|
After (image error) Size: 829 B |
|
@ -1,6 +1,22 @@
|
|||
<?php
|
||||
|
||||
use App\FileAndDir;
|
||||
use Utils\Utils;
|
||||
|
||||
function adaptIconName($defaultIcon) {
|
||||
$customName = $defaultIcon;
|
||||
if ($defaultIcon == 'file-other') {
|
||||
$customName = 'file-unknown';
|
||||
}
|
||||
if ($defaultIcon == 'file-doc') {
|
||||
$customName = 'filetype-doc';
|
||||
}
|
||||
if ($defaultIcon == 'file-pdf') {
|
||||
$customName = 'filetype-pdf';
|
||||
}
|
||||
return $customName;
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html data-theme="auto" lang="en">
|
||||
|
@ -18,9 +34,9 @@ use App\FileAndDir;
|
|||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<link rel="stylesheet" href="https://theme.knah-tsaeb.org/kt-scheme.css">
|
||||
<link rel="stylesheet" href="templates/default/assets/css/kt-scheme.css">
|
||||
<link href="assets/css/glightbox.min.css" rel="stylesheet">
|
||||
<link href="templates/default/default.css" rel="stylesheet">
|
||||
<link href="templates/default/assets/css/default.css" rel="stylesheet">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/assets/favicons/apple-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/assets/favicons/apple-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/assets/favicons/apple-icon-72x72.png">
|
||||
|
@ -68,16 +84,10 @@ use App\FileAndDir;
|
|||
<li><a href="<?= $config['website']; ?>">Site</a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="#" onclick="switchTheme();"><svg version="1.1" id="toggleDarkMode" viewBox="0 0 512 512">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"></g>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g>
|
||||
<g id="SVGRepo_iconCarrier">
|
||||
<path
|
||||
d="M256,0C114.842,0,0,114.84,0,256s114.842,256,256,256s256-114.84,256-256S397.158,0,256,0z M322.225,451.558 c-20.797,7.062-43.071,10.894-66.225,10.894c-113.837,0-206.452-92.614-206.452-206.452S142.163,49.548,256,49.548 c23.154,0,45.429,3.832,66.226,10.894C266.612,107.439,231.226,177.657,231.226,256S266.612,404.561,322.225,451.558z">
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
</a></li>
|
||||
<li><a href="#" onclick="switchTheme();"><svg viewBox="0 0 48 48" aria-hidden="true" focusable="false" role="presentation">
|
||||
<title>ui-light-dark</title>
|
||||
<use href="templates/default/assets/icons/sprite.svg#ui-light-dark"></use>
|
||||
</svg></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
@ -108,7 +118,14 @@ use App\FileAndDir;
|
|||
<?php foreach ($value as $entry) : ?>
|
||||
<figure>
|
||||
<a href="<?= $entry['link']; ?>" class="<?= FileAndDir::addToLightBox($entry['type']); ?> card-content" data-gallery="gallery" data-glightbox="<?= $entry['dataAttr']; ?>">
|
||||
<img src="<?= $entry['thumb']; ?>" loading="lazy" alt="" width="<?= $config['thumbSize']; ?>" height="<?= $config['thumbSize']; ?>">
|
||||
<?php if ($config['iconsTheme'] !== 'default' || ($entry['type'] === 'file-img' || $entry['type'] === 'folder')): ?>
|
||||
<img src="<?= $entry['thumb']; ?>" loading="lazy" alt="" width="<?= $config['thumbSize']; ?>" height="<?= $config['thumbSize']; ?>">
|
||||
<?php else: ?>
|
||||
<svg viewBox="0 0 48 48" aria-hidden="true" focusable="false" role="presentation" style="height:<?= $config['thumbSize']; ?>px">
|
||||
<title><?= $entry['type']; ?></title>
|
||||
<use href="templates/default/assets/icons/sprite.svg#<?= adaptIconName($entry['type']); ?>"></use>
|
||||
</svg>
|
||||
<?php endif; ?>
|
||||
</a>
|
||||
<figcaption>
|
||||
<?= $entry['name']; ?>
|
||||
|
@ -120,7 +137,10 @@ use App\FileAndDir;
|
|||
</section>
|
||||
</main>
|
||||
|
||||
<a href="#top" id="backtop">Top</a>
|
||||
<a href="#top" id="backtop"><svg viewBox="0 0 48 48" aria-hidden="true" focusable="false" role="presentation">
|
||||
<title>ui-arrow-up</title>
|
||||
<use href="templates/default/assets/icons/sprite.svg#ui-arrow-up"></use>
|
||||
</svg> Top</a>
|
||||
|
||||
<footer>
|
||||
Gallery by <?= $config['author']; ?> /
|
||||
|
|
14
public/templates/default/svg-preset
Normal file
|
@ -0,0 +1,14 @@
|
|||
public/templates/default/assets/icons/ui-arrow-up.svg
|
||||
public/templates/default/assets/icons/ui-light-dark.svg
|
||||
public/templates/default/assets/icons/file-audio.svg
|
||||
public/templates/default/assets/icons/file-block.svg
|
||||
public/templates/default/assets/icons/file-broken.svg
|
||||
public/templates/default/assets/icons/file-doc.svg
|
||||
public/templates/default/assets/icons/file-other.svg
|
||||
public/templates/default/assets/icons/file-pdf.svg
|
||||
public/templates/default/assets/icons/file-pres.svg
|
||||
public/templates/default/assets/icons/file-spread.svg
|
||||
public/templates/default/assets/icons/file-text.svg
|
||||
public/templates/default/assets/icons/file-video.svg
|
||||
public/templates/default/assets/icons/file-zip.svg
|
||||
public/templates/default/assets/icons/folder-empty.svg
|