Compare commits
30 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
b6ff09f8b3 | ||
|
9afbd2c002 | ||
|
49289c439c | ||
|
cc02ee5e65 | ||
|
498d920e49 | ||
|
301c9329af | ||
|
29fae07f0e | ||
|
31f0e3658c | ||
|
b9c25218f1 | ||
|
9e2eed8fc2 | ||
|
f71e39d3b1 | ||
|
afa2e51970 | ||
|
16618c9f11 | ||
|
9d15cc5f26 | ||
|
ea8a72d375 | ||
|
ded1ffc983 | ||
|
5668b927f6 | ||
|
b12c040727 | ||
|
64955075f5 | ||
|
5651afb5ef | ||
|
8ca6129404 | ||
|
6ccfb40ce2 | ||
|
64ef4d3a24 | ||
|
aae02e06fe | ||
|
8f85f2c8ab | ||
|
8f7897495f | ||
|
b525e7e19c | ||
|
367722a973 | ||
|
049ff109f8 | ||
|
ca63ea21a8 |
61
CHANGELOG.md
@@ -1,3 +1,64 @@
|
||||
# [2.2.0](https://github.com/oupala/apaxy/compare/2.1.3...2.2.0) (2020-03-19)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **doc:** fix links in table of content ([cc02ee5](https://github.com/oupala/apaxy/commit/cc02ee5e65359a95315d7d848589d4f4b05b8e14))
|
||||
* favicon not being loaded when using Apaxy in a subdirectory ([b9c2521](https://github.com/oupala/apaxy/commit/b9c25218f177b22ba0590706692d47f54986cd0d))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* optimize icons ([49289c4](https://github.com/oupala/apaxy/commit/49289c439cd032a95a4be93e1eb74f0fc7e821ef))
|
||||
* **theme:** add a proper dark mode (and globally improve CSS styles) ([301c932](https://github.com/oupala/apaxy/commit/301c9329af1ceea467b786ce287ae5557a08002b))
|
||||
|
||||
|
||||
|
||||
## [2.1.3](https://github.com/oupala/apaxy/compare/2.1.2...2.1.3) (2019-07-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* remove useless js ([afa2e51](https://github.com/oupala/apaxy/commit/afa2e51)), closes [#132](https://github.com/oupala/apaxy/issues/132)
|
||||
|
||||
|
||||
|
||||
## [2.1.2](https://github.com/oupala/apaxy/compare/2.1.1...2.1.2) (2019-06-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add gif extension to image gallery viewer ([5668b92](https://github.com/oupala/apaxy/commit/5668b92))
|
||||
|
||||
|
||||
|
||||
## [2.1.1](https://github.com/oupala/apaxy/compare/2.1.0...2.1.1) (2019-06-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* improve cli parameters management ([8ca6129](https://github.com/oupala/apaxy/commit/8ca6129))
|
||||
|
||||
|
||||
|
||||
# [2.1.0](https://github.com/oupala/apaxy/compare/2.0.1...2.1.0) (2019-05-30)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* install script can set a header and a footer message ([8f85f2c](https://github.com/oupala/apaxy/commit/8f85f2c))
|
||||
|
||||
|
||||
|
||||
## [2.0.1](https://github.com/oupala/apaxy/compare/2.0.0...2.0.1) (2019-05-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* make the script apaxy-configure.sh more robust ([367722a](https://github.com/oupala/apaxy/commit/367722a))
|
||||
|
||||
|
||||
|
||||
# [2.0.0](https://github.com/oupala/apaxy/compare/1.0.0...2.0.0) (2019-05-29)
|
||||
|
||||
|
||||
|
@@ -6,9 +6,10 @@ apaxy is a customisable theme built to enhance the experience of browsing web di
|
||||
|
||||
- [features](#features)
|
||||
- [installation](#installation)
|
||||
- [docker images](#docker-images)
|
||||
- [docker image](#docker-image)
|
||||
- [apaxy themes](#apaxy-themes)
|
||||
- [mime Types](#mime-types)
|
||||
- [media types](#media-types)
|
||||
- [gallery](#gallery)
|
||||
- [troubleshooting](#troubleshooting)
|
||||
- [credits](#credits)
|
||||
|
||||
@@ -28,7 +29,7 @@ Apaxy may be basic, but it gives you a great deal of creative freedom when styli
|
||||
|
||||
apaxy requires an apache (2.2.11+) enabled http server.
|
||||
|
||||
### Quick Start
|
||||
### Quick start
|
||||
|
||||
If you would like, you can automate the installation of Apaxy with the included `apaxy-configure.sh` script.
|
||||
|
||||
@@ -42,7 +43,7 @@ Then run the configuration script as a user that can write to the `installWebPat
|
||||
|
||||
The files will be copied to the web server directory, and modified automatically based on the settings specified.
|
||||
|
||||
### Manual Install
|
||||
### Manual install
|
||||
|
||||
Let's assume you have a folder named `share` in your server root directory (the path thus being `http://mywebsite.com/share`) that you'd like to use as your listing directory:
|
||||
|
||||
|
144
apaxy-configure.sh
Normal file → Executable file
@@ -16,11 +16,17 @@ set -eo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
# default config
|
||||
defaultLogLevel=2
|
||||
defaultLogFile="$(basename "${0}" .sh).log"
|
||||
defaultConfigFile="apaxy.config"
|
||||
defaultApacheWebRootPath="/var/www/html"
|
||||
defaultInstallWebPath=""
|
||||
defaultEnableGallery=false
|
||||
defaultHeaderMessage=""
|
||||
defaultFooterMessage=""
|
||||
defaultLogLevel=2
|
||||
defaultLogFile="$(basename "${0}" .sh).log"
|
||||
|
||||
workingDirectory="$(dirname "${0}")"
|
||||
logLevel="${defaultLogLevel}"
|
||||
|
||||
# functions
|
||||
|
||||
@@ -39,9 +45,12 @@ EOF
|
||||
|
||||
Available optionnal parameters are :
|
||||
-h - display help
|
||||
-c - set path/to/apaxy.config file that contains all configuration
|
||||
-d - set path/to/dir/ directory where apaxy will be installed on the filesystem
|
||||
-w - set path/to/dir/ directory where apaxy will be available on the httpd server
|
||||
-g - enable or disable gallery feature
|
||||
-hm - set the default header message displayed on top of each page
|
||||
-fm - set the default footer message displayed on bottom of each page
|
||||
-ll - set the log level
|
||||
-lf - set the log file
|
||||
EOF
|
||||
@@ -52,7 +61,7 @@ EOF
|
||||
##
|
||||
displayUsage () {
|
||||
cat <<EOF
|
||||
usage - $(basename "${0}") [-h] [-d path/to/dir/] [-w path/to/dir/] [-g true|false] [-ll logLevel] [-lf logFile]
|
||||
usage - $(basename "${0}") [-h] [-c path/to/apaxy.config] [-d path/to/dir/] [-w path/to/dir/] [-g true|false] [-hm "header message"] [-fm "footer message"] [-ll logLevel] [-lf logFile]
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -83,17 +92,6 @@ log () {
|
||||
fi
|
||||
}
|
||||
|
||||
# getting parameters value from config file (can be overloaded by cli values)
|
||||
workingDirectory=$(dirname "$0")
|
||||
|
||||
if [ -f "${workingDirectory}/apaxy.config" ]; then
|
||||
# shellcheck source=apaxy.config
|
||||
source "${workingDirectory}/apaxy.config"
|
||||
else
|
||||
log 1 "ERROR - apaxy configuration not found, please restore or create the configuration file apaxy.config"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# getting parameters value from cli (can overload config file values)
|
||||
while [ "$#" -ge 1 ] ; do
|
||||
case "${1}" in
|
||||
@@ -101,25 +99,37 @@ while [ "$#" -ge 1 ] ; do
|
||||
displayHelp
|
||||
exit 0
|
||||
;;
|
||||
-c) # set path/to/apaxy.config file that contains all configuration
|
||||
shiftStep=2
|
||||
paramConfigFile="${2}"
|
||||
;;
|
||||
-d) # set path/to/dir/ directory where apaxy will be available on the httpd server
|
||||
shiftStep=2
|
||||
apacheWebRootPath="${2}"
|
||||
paramApacheWebRootPath="${2}"
|
||||
;;
|
||||
-w) # set path/to/dir/ directory where apaxy will be installed on the filesystem
|
||||
shiftStep=2
|
||||
installWebPath="${2}"
|
||||
paramInstallWebPath="${2}"
|
||||
;;
|
||||
-g) # enable or disable gallery feature
|
||||
shiftStep=2
|
||||
enableGallery="${2}"
|
||||
paramEnableGallery="${2}"
|
||||
;;
|
||||
-hm) # set the default header message displayed on top of each page
|
||||
shiftStep=2
|
||||
paramHeaderMessage="${2}"
|
||||
;;
|
||||
-fm) # set the default footer message displayed on bottom of each page
|
||||
shiftStep=2
|
||||
paramFooterMessage="${2}"
|
||||
;;
|
||||
-ll) # set the log level
|
||||
shiftStep=2
|
||||
logLevel="${2}"
|
||||
paramLogLevel="${2}"
|
||||
;;
|
||||
-lf) # set the log file
|
||||
shiftStep=2
|
||||
logFile="${2}"
|
||||
paramLogFile="${2}"
|
||||
;;
|
||||
*)
|
||||
displayUsage
|
||||
@@ -137,34 +147,93 @@ while [ "$#" -ge 1 ] ; do
|
||||
done
|
||||
|
||||
# setting parameters value
|
||||
if [ -z "${apacheWebRootPath}" ]
|
||||
if [ -r "${paramConfigFile}" ]
|
||||
then
|
||||
# getting parameters value from config file (config file name set by cli values)
|
||||
configFile="${paramConfigFile}"
|
||||
# shellcheck source=apaxy.config
|
||||
source "${configFile}"
|
||||
elif [ -r "${workingDirectory}/${defaultConfigFile}" ]
|
||||
then
|
||||
# getting parameters value from config file (config file name is default)
|
||||
configFile="${workingDirectory}/${defaultConfigFile}"
|
||||
# shellcheck source=apaxy.config
|
||||
source "${configFile}"
|
||||
else
|
||||
log 1 "apaxy configuration not found, using internal config from script shell itself"
|
||||
configFile=null
|
||||
fi
|
||||
|
||||
if [ -n "${paramApacheWebRootPath}" ]
|
||||
then
|
||||
apacheWebRootPath="${paramApacheWebRootPath}"
|
||||
elif [ -z "${apacheWebRootPath}" ]
|
||||
then
|
||||
apacheWebRootPath="${defaultApacheWebRootPath}"
|
||||
fi
|
||||
|
||||
if [ -z "${installWebPath}" ]
|
||||
if [ -n "${paramInstallWebPath}" ]
|
||||
then
|
||||
installWebPath="${paramInstallWebPath}"
|
||||
elif [ -z "${installWebPath}" ]
|
||||
then
|
||||
installWebPath="${defaultInstallWebPath}"
|
||||
fi
|
||||
|
||||
if [ -n "${apacheWebRootPath}" ] && [ -z "${installWebPath}" ]
|
||||
if [ -n "${paramApacheWebRootPath}" ]
|
||||
then
|
||||
installDir="${apacheWebRootPath}"
|
||||
else
|
||||
installDir="${apacheWebRootPath}${installWebPath}"
|
||||
apacheWebRootPath="${paramApacheWebRootPath}"
|
||||
elif [ -z "${apacheWebRootPath}" ]
|
||||
then
|
||||
apacheWebRootPath="${defaultApacheWebRootPath}"
|
||||
fi
|
||||
|
||||
if [ -z "${enableGallery}" ]
|
||||
if [ -n "${paramInstallWebPath}" ]
|
||||
then
|
||||
installWebPath="${paramInstallWebPath}"
|
||||
elif [ -z "${installWebPath}" ]
|
||||
then
|
||||
installWebPath="${defaultInstallWebPath}"
|
||||
fi
|
||||
|
||||
installDir="${apacheWebRootPath}${installWebPath}"
|
||||
|
||||
if [ -n "${paramEnableGallery}" ]
|
||||
then
|
||||
enableGallery="${paramEnableGallery}"
|
||||
elif [ -z "${enableGallery}" ]
|
||||
then
|
||||
enableGallery="${defaultEnableGallery}"
|
||||
fi
|
||||
|
||||
if [ -z "${logLevel}" ]
|
||||
if [ -n "${paramHeaderMessage}" ]
|
||||
then
|
||||
headerMessage="${paramHeaderMessage}"
|
||||
elif [ -z "${headerMessage}" ]
|
||||
then
|
||||
headerMessage="${defaultHeaderMessage}"
|
||||
fi
|
||||
|
||||
if [ -n "${paramFooterMessage}" ]
|
||||
then
|
||||
footerMessage="${paramFooterMessage}"
|
||||
elif [ -z "${footerMessage}" ]
|
||||
then
|
||||
footerMessage="${defaultFooterMessage}"
|
||||
fi
|
||||
|
||||
if [ -n "${paramLogLevel}" ]
|
||||
then
|
||||
logLevel="${paramLogLevel}"
|
||||
elif [ -z "${logLevel}" ]
|
||||
then
|
||||
logLevel="${defaultLogLevel}"
|
||||
fi
|
||||
|
||||
if [ -z "${logFile}" ]
|
||||
if [ -n "${paramLogFile}" ]
|
||||
then
|
||||
logFile="${paramLogFile}"
|
||||
elif [ -z "${logFile}" ]
|
||||
then
|
||||
logFile="${workingDirectory}/${defaultLogFile}"
|
||||
fi
|
||||
@@ -181,6 +250,19 @@ then
|
||||
fi
|
||||
|
||||
# script
|
||||
|
||||
# output current config
|
||||
log 3 "- current config"
|
||||
log 3 " configFile: ${configFile}"
|
||||
log 3 " apacheWebRootPath: ${apacheWebRootPath}"
|
||||
log 3 " installWebPath: ${installWebPath}"
|
||||
log 3 " installDir: ${installDir}"
|
||||
log 3 " enableGallery: ${enableGallery}"
|
||||
log 3 " headerMessage: ${headerMessage}"
|
||||
log 3 " footerMessage: ${footerMessage}"
|
||||
log 3 " logLevel: ${logLevel}"
|
||||
log 3 " logFile: ${logFile}"
|
||||
|
||||
log 1 "- creating install directory ${installDir}"
|
||||
mkdir -p "${installDir}"
|
||||
if [ ! -d "${installDir}" ] || [ ! -w "${installDir}" ]; then
|
||||
@@ -189,7 +271,9 @@ if [ ! -d "${installDir}" ] || [ ! -w "${installDir}" ]; then
|
||||
fi
|
||||
|
||||
log 1 "- copying apaxy in install directory"
|
||||
cp -r apaxy/* "${installDir}/"
|
||||
# we want globbing
|
||||
# shellcheck disable=SC2086
|
||||
cp -r ${workingDirectory}/apaxy/* "${installDir}/"
|
||||
|
||||
log 1 "- configuring apaxy in install directory"
|
||||
|
||||
@@ -212,6 +296,8 @@ log 2 "- setting path in html files"
|
||||
files=$(find ${installDir} -name "*.html")
|
||||
while read -r file; do
|
||||
sed -i "s|{FOLDERNAME}|${installWebPath}|g" "${file}"
|
||||
sed -i "s|{HEADER-MESSAGE}|${headerMessage}|g" "${file}"
|
||||
sed -i "s|{FOOTER-MESSAGE}|${footerMessage}|g" "${file}"
|
||||
done <<< "${files}"
|
||||
|
||||
log 2 "- syncing filesystem"
|
||||
|
@@ -50,3 +50,9 @@ installWebPath=""
|
||||
# please enable it with caution
|
||||
#
|
||||
enableGallery=false
|
||||
|
||||
# set the default header message displayed on top of each page
|
||||
defaultHeaderMessage=""
|
||||
|
||||
# set the default footer message displayed on bottom of each page
|
||||
defaultFooterMessage=""
|
||||
|
@@ -19,11 +19,13 @@ Options +Indexes
|
||||
# index options
|
||||
IndexOptions +Charset=UTF-8 +FancyIndexing +FoldersFirst +HTMLTable +IconsAreLinks +IgnoreCase +NameWidth=* +SuppressDescription +SuppressRules +XHTML
|
||||
|
||||
# meta viewport
|
||||
IndexHeadInsert "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />"
|
||||
# favicon & meta viewport
|
||||
IndexHeadInsert "\
|
||||
<link rel=\"shortcut icon\" href=\"{FOLDERNAME}/theme/favicon.ico\" />\
|
||||
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />"
|
||||
|
||||
# hide ".htaccess" file, "favicon.ico" file and "/theme" directory
|
||||
IndexIgnore .htaccess favicon.ico /theme
|
||||
# hide ".htaccess" file and "/theme" directory
|
||||
IndexIgnore .htaccess /theme
|
||||
|
||||
|
||||
#
|
||||
@@ -123,7 +125,7 @@ AddIconByType (audio,{FOLDERNAME}/theme/icons/audio.png) audio/*
|
||||
AddIconByType (playlist,{FOLDERNAME}/theme/icons/video.png) video/vnd.mpegurl
|
||||
|
||||
# all video
|
||||
# ext: 3g2 3gp h261 h263 h264 jpgv jpm jpgm mj2 mjp2 mp4 mp4v mpg4 mpeg mpg mpe m1v m2v ogv qt mov uvh uvvh uvm uvvm uvp uvvp uvs uvvs uvv uvvv dvb fvt mxu m4u pyv uvu uvvu viv webm f4v fli flv m4v mkv mk3d mks mng asf asx avi vob wmv wm wmx wvx movie smv
|
||||
# ext: 3g2 3gp h261 h263 h264 jpgv jpm jpgm mj2 mjp2 mp4 mp4v mpg4 mpeg mpg mpe m1v m2v ogv qt mov uvh uvvh uvm uvvm uvp uvvp uvs uvvs uvv uvvv dvb fvt mxu m4u pyv uvu uvvu viv webm f4v fli flv m4v mkv mk3d mks mng asf asx avi vob wmv wm wmx wvx movie smv
|
||||
AddIconByType (video,{FOLDERNAME}/theme/icons/video.png) video/*
|
||||
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
var imageSelector = [
|
||||
'tr:not(.parent) td.indexcolname a[href$=".png"]',
|
||||
'tr:not(.parent) td.indexcolname a[href$=".jpg"]',
|
||||
'tr:not(.parent) td.indexcolname a[href$=".jpeg"]',
|
||||
'tr:not(.parent) td.indexcolname a[href$=".gif"]',
|
||||
].join(', ');
|
||||
|
||||
lightGallery(document.getElementById('indexlist'), {
|
||||
|
@@ -1,13 +1,3 @@
|
||||
// fix links when not adding a / at the end of the URI
|
||||
var uri = window.location.pathname.substr(1);
|
||||
if (uri.substring(uri.length - 1) !== '/') {
|
||||
var indexes = document.getElementsByClassName('indexcolname');
|
||||
for (let i of indexes) {
|
||||
var a = i.getElementsByTagName('a')[0];
|
||||
a.href = '/' + a.getAttribute('href', 2);
|
||||
}
|
||||
}
|
||||
|
||||
// content filtering, based on "light javascript table filter" by Chris Coyier
|
||||
// https://codepen.io/chriscoyier/pen/tIuBL - MIT License
|
||||
(function(document) {
|
||||
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
@@ -1,5 +1,5 @@
|
||||
<div class="block">
|
||||
You can add your own HTML above or below the directory listing. Simply explore the <code>header.html</code> and <code>footer.html</code> files.
|
||||
{FOOTER-MESSAGE}
|
||||
</div><!--/.postlisting-->
|
||||
|
||||
</div><!--/.wrapper-->
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<div class="block">
|
||||
You can add your own HTML above or below the directory listing. Simply explore the <code>header.html</code> and <code>footer.html</code> files.
|
||||
{FOOTER-MESSAGE}
|
||||
</div><!--/.postlisting-->
|
||||
|
||||
</div><!--/.wrapper-->
|
||||
|
@@ -7,3 +7,5 @@
|
||||
</ol>
|
||||
|
||||
<input type="search" id="filter" placeholder="filter contents" />
|
||||
|
||||
{HEADER-MESSAGE}
|
||||
|
@@ -5,3 +5,5 @@
|
||||
</ol>
|
||||
|
||||
<input type="search" id="filter" placeholder="filter contents" />
|
||||
|
||||
{HEADER-MESSAGE}
|
||||
|
Before Width: | Height: | Size: 551 B After Width: | Height: | Size: 471 B |
Before Width: | Height: | Size: 554 B After Width: | Height: | Size: 559 B |
Before Width: | Height: | Size: 551 B After Width: | Height: | Size: 495 B |
Before Width: | Height: | Size: 227 B After Width: | Height: | Size: 108 B |
Before Width: | Height: | Size: 663 B After Width: | Height: | Size: 733 B |
Before Width: | Height: | Size: 554 B After Width: | Height: | Size: 542 B |
Before Width: | Height: | Size: 506 B After Width: | Height: | Size: 593 B |
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 734 B |
Before Width: | Height: | Size: 599 B After Width: | Height: | Size: 560 B |
Before Width: | Height: | Size: 592 B After Width: | Height: | Size: 604 B |
Before Width: | Height: | Size: 671 B After Width: | Height: | Size: 610 B |
Before Width: | Height: | Size: 311 B After Width: | Height: | Size: 346 B |
Before Width: | Height: | Size: 586 B After Width: | Height: | Size: 467 B |
Before Width: | Height: | Size: 535 B After Width: | Height: | Size: 589 B |
Before Width: | Height: | Size: 679 B After Width: | Height: | Size: 634 B |
Before Width: | Height: | Size: 817 B After Width: | Height: | Size: 763 B |
Before Width: | Height: | Size: 846 B After Width: | Height: | Size: 684 B |
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 566 B |
Before Width: | Height: | Size: 431 B After Width: | Height: | Size: 417 B |
Before Width: | Height: | Size: 591 B After Width: | Height: | Size: 577 B |
Before Width: | Height: | Size: 395 B After Width: | Height: | Size: 405 B |
Before Width: | Height: | Size: 650 B After Width: | Height: | Size: 636 B |
Before Width: | Height: | Size: 655 B After Width: | Height: | Size: 725 B |
Before Width: | Height: | Size: 551 B After Width: | Height: | Size: 471 B |
Before Width: | Height: | Size: 504 B After Width: | Height: | Size: 533 B |
Before Width: | Height: | Size: 530 B After Width: | Height: | Size: 542 B |
Before Width: | Height: | Size: 770 B After Width: | Height: | Size: 735 B |
Before Width: | Height: | Size: 792 B After Width: | Height: | Size: 736 B |
Before Width: | Height: | Size: 671 B After Width: | Height: | Size: 739 B |
Before Width: | Height: | Size: 788 B After Width: | Height: | Size: 679 B |
Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 651 B |
Before Width: | Height: | Size: 675 B After Width: | Height: | Size: 727 B |
Before Width: | Height: | Size: 540 B After Width: | Height: | Size: 562 B |
Before Width: | Height: | Size: 540 B After Width: | Height: | Size: 562 B |
Before Width: | Height: | Size: 423 B After Width: | Height: | Size: 414 B |
Before Width: | Height: | Size: 614 B After Width: | Height: | Size: 516 B |
Before Width: | Height: | Size: 627 B After Width: | Height: | Size: 504 B |
Before Width: | Height: | Size: 614 B After Width: | Height: | Size: 639 B |
Before Width: | Height: | Size: 799 B After Width: | Height: | Size: 758 B |
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 661 B |
Before Width: | Height: | Size: 610 B After Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 679 B After Width: | Height: | Size: 736 B |
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 691 B |
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 615 B |
Before Width: | Height: | Size: 743 B After Width: | Height: | Size: 769 B |
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 562 B |
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 823 B |
Before Width: | Height: | Size: 384 B After Width: | Height: | Size: 400 B |
Before Width: | Height: | Size: 660 B After Width: | Height: | Size: 558 B |
Before Width: | Height: | Size: 660 B After Width: | Height: | Size: 640 B |
Before Width: | Height: | Size: 627 B After Width: | Height: | Size: 504 B |
Before Width: | Height: | Size: 613 B After Width: | Height: | Size: 589 B |
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 442 B |
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 363 B |
Before Width: | Height: | Size: 677 B After Width: | Height: | Size: 596 B |
Before Width: | Height: | Size: 463 B After Width: | Height: | Size: 407 B |
Before Width: | Height: | Size: 654 B After Width: | Height: | Size: 729 B |
Before Width: | Height: | Size: 680 B After Width: | Height: | Size: 641 B |
Before Width: | Height: | Size: 556 B After Width: | Height: | Size: 489 B |
Before Width: | Height: | Size: 556 B After Width: | Height: | Size: 456 B |
Before Width: | Height: | Size: 492 B After Width: | Height: | Size: 463 B |
Before Width: | Height: | Size: 739 B After Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 585 B After Width: | Height: | Size: 519 B |
Before Width: | Height: | Size: 617 B After Width: | Height: | Size: 546 B |
@@ -19,14 +19,18 @@ button,hr,input{overflow:visible}audio,canvas,progress,video{display:inline-bloc
|
||||
|
||||
html {
|
||||
min-height: 100%;
|
||||
border-top: 10px solid #ECEEF1;
|
||||
border-bottom: 10px solid #ECEEF1;
|
||||
color: #61666c;
|
||||
background-color: #fff;
|
||||
font-weight: 400;
|
||||
font-size: 1em;
|
||||
font-family: sans-serif;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
line-height: 2em;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
background-color: #232323;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 20px;
|
||||
@@ -38,17 +42,31 @@ code {
|
||||
}
|
||||
|
||||
a {
|
||||
color: #61666c;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
a {
|
||||
color: #e9e9e9;
|
||||
}
|
||||
}
|
||||
|
||||
a, img {
|
||||
border: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a > img:hover {
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #2a2a2a;
|
||||
color: #bababa;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
a:hover {
|
||||
color: #696969;
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------*\
|
||||
@@ -65,18 +83,27 @@ a:hover {
|
||||
Filter (search box)
|
||||
\*------------------------------------*/
|
||||
#filter {
|
||||
float: right;
|
||||
font-size:.75em;
|
||||
padding: .5em;
|
||||
margin-bottom: .5em;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: .25em;
|
||||
width: 10em;
|
||||
transition: width 0.25s ease;
|
||||
background-color: rgba(0, 0, 0, 0.04);
|
||||
float: right;
|
||||
font-size:.75em;
|
||||
padding: .5em;
|
||||
margin-bottom: .5em;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
border-radius: .25em;
|
||||
width: 10em;
|
||||
transition: width 0.25s ease;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
#filter {
|
||||
background-color: rgba(255, 255, 255, 0.07);
|
||||
border-color: rgba(255, 255, 255, 0.15);
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
#filter:focus {
|
||||
width: 14em;
|
||||
width: 14em;
|
||||
}
|
||||
|
||||
/*------------------------------------*\
|
||||
Demo block
|
||||
\*------------------------------------*/
|
||||
@@ -96,6 +123,21 @@ table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: .875em;
|
||||
color: rgb(143, 143, 143);
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
table {
|
||||
color: rgb(111, 111, 111);
|
||||
}
|
||||
}
|
||||
|
||||
.odd {
|
||||
background-color: rgb(244, 244, 244);
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.odd {
|
||||
background-color: rgb(50, 50, 50);
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
@@ -103,10 +145,6 @@ tr {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
tr:hover td {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
font-size: .75em;
|
||||
@@ -137,7 +175,6 @@ td {
|
||||
padding: 5px 0;
|
||||
outline: 0;
|
||||
border: 0;
|
||||
border-bottom: 1px solid #edf1f5;
|
||||
vertical-align: middle;
|
||||
text-align: left;
|
||||
transition: background 300ms ease;
|
||||
@@ -146,6 +183,11 @@ td {
|
||||
-moz-transition: background 300ms ease;
|
||||
-webkit-transition: background 300ms ease;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
td {
|
||||
border-color: #424242;
|
||||
}
|
||||
}
|
||||
|
||||
td a {
|
||||
display: block;
|
||||
@@ -172,83 +214,83 @@ tr.parent a[href^="/"] {
|
||||
Media query for small screens
|
||||
\*------------------------------------*/
|
||||
@media (max-width: 768px) {
|
||||
body {
|
||||
padding: 10px;
|
||||
}
|
||||
.indexcollastmod { display: none; }
|
||||
.wrapper { max-width: 100%; }
|
||||
body {
|
||||
padding: 10px;
|
||||
}
|
||||
.indexcollastmod { display: none; }
|
||||
.wrapper { max-width: 100%; }
|
||||
}
|
||||
|
||||
/*------------------------------------*\
|
||||
Error pages
|
||||
Error pages
|
||||
/*------------------------------------*/
|
||||
/* Animation */
|
||||
@-webkit-keyframes fadeDown {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0);
|
||||
}
|
||||
0% {
|
||||
opacity: 0;
|
||||
-webkit-transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes fadeDown {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-moz-transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
-moz-transform: translateY(0);
|
||||
}
|
||||
0% {
|
||||
opacity: 0;
|
||||
-moz-transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
-moz-transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-keyframes fadeDown {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-ms-transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
-ms-transform: translateY(0);
|
||||
}
|
||||
0% {
|
||||
opacity: 0;
|
||||
-ms-transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
-ms-transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@-o-keyframes fadeDown {
|
||||
0% {
|
||||
opacity: 0;
|
||||
-o-transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
-o-transform: translateY(0);
|
||||
}
|
||||
0% {
|
||||
opacity: 0;
|
||||
-o-transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
-o-transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeDown {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
.fadeDown {
|
||||
-webkit-animation:fadeDown 1s ease;
|
||||
-moz-animation:fadeDown 1s ease;
|
||||
-ms-animation:fadeDown 1s ease;
|
||||
-o-animation:fadeDown 1s ease;
|
||||
animation:fadeDown 1s ease;
|
||||
-webkit-animation:fadeDown 1s ease;
|
||||
-moz-animation:fadeDown 1s ease;
|
||||
-ms-animation:fadeDown 1s ease;
|
||||
-o-animation:fadeDown 1s ease;
|
||||
animation:fadeDown 1s ease;
|
||||
}
|
||||
|
||||
/* Error code display */
|
||||
.errorCode {
|
||||
font-size: 80px;
|
||||
font-size: 80px;
|
||||
}
|
||||
|
||||
/*------------------------------------*\
|
||||
@@ -256,47 +298,57 @@ tr.parent a[href^="/"] {
|
||||
\*------------------------------------*/
|
||||
|
||||
.breadcrumb {
|
||||
white-space: nowrap;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.breadcrumb li {
|
||||
display: inline-block;
|
||||
line-height: 26px;
|
||||
margin: 0 9px 0 -10px;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
color: rgb(154, 154, 154);
|
||||
display: inline-block;
|
||||
line-height: 10px;
|
||||
margin: 0 9px 20px -10px;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.breadcrumb li {
|
||||
color: rgb(100, 100, 100);
|
||||
}
|
||||
}
|
||||
|
||||
.breadcrumb li::before,
|
||||
.breadcrumb li::after {
|
||||
border-right: 1px solid #666666;
|
||||
content: '';
|
||||
display: block;
|
||||
height: 50%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: -1;
|
||||
transform: skewX(45deg);
|
||||
border-right: 1.5px solid #000;
|
||||
content: '';
|
||||
display: block;
|
||||
height: 50%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: -1;
|
||||
transform: skewX(45deg);
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.breadcrumb li::before,
|
||||
.breadcrumb li::after {
|
||||
border-color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.breadcrumb li::after {
|
||||
bottom: 0;
|
||||
top: auto;
|
||||
transform: skewX(-45deg);
|
||||
bottom: 0;
|
||||
top: auto;
|
||||
transform: skewX(-45deg);
|
||||
}
|
||||
|
||||
.breadcrumb li:last-of-type::before,
|
||||
.breadcrumb li:last-of-type::after {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.breadcrumb li a {
|
||||
letter-spacing: -1px;
|
||||
text-decoration: none;
|
||||
letter-spacing: -1px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.breadcrumb li:nth-of-type(1) a { color: hsl(0, 0%, 70%); }
|
||||
.breadcrumb li:nth-of-type(2) a { color: hsl(0, 0%, 65%); }
|
||||
.breadcrumb li:nth-of-type(3) a { color: hsl(0, 0%, 50%); }
|
||||
.breadcrumb li:nth-of-type(4) a { color: hsl(0, 0%, 45%); }
|
||||
|
1282
package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "apaxy",
|
||||
"version": "2.0.0",
|
||||
"version": "2.2.0",
|
||||
"description": "A simple, customisable theme for your Apache directory listing.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|