diff --git a/README.md b/README.md
index d0ea6294..74adca9c 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# h5ai
-Don't use files from this repository (`src` folder) for installation.
+Please don't use files from this repository (`src` folder) for installation.
They need to be preprocessed/compiled to work correctly. You'll find a
precompiled package on the [project page](http://larsjung.de/h5ai).
@@ -17,18 +17,47 @@ h5ai is provided under the terms of the [MIT License](http://github.com/lrsjng/h
## h5ai profits from these great projects
* [AmplifyJS](http://amplifyjs.com) (MIT/GPL)
-* [Datejs](http://www.datejs.com) (MIT)
* [Faenza icon set](http://tiheum.deviantart.com/art/Faenza-Icons-173323228) (GPL)
* [HTML5 ★ Boilerplate](http://html5boilerplate.com)
* [jQuery](http://jquery.com) (MIT/GPL)
+* [jQuery.fracs](http://larsjung.de/fracs) (MIT)
* [jQuery.mousewheel](http://github.com/brandonaaron/jquery-mousewheel) (MIT)
* [modernizr](http://www.modernizr.com) (MIT/BSD)
+* [Moment.js](http://momentjs.com) (MIT)
* [qrcode](http://www.d-project.com/qrcode/index.html) (MIT)
+* [underscore.js](http://underscorejs.org) (MIT)
## Changelog
+### v0.19 - *2012-04-??*
+
+* adds lots of config options
+* changes in `config.js` and `h5ai.htaccess`
+* fixes js problems in IE 7+8
+* hides broken tree view in IE < 9, adds a message to the footer
+* removes hash changes since they break logical browser history
+* fixes thumbnail size for portrait images in icon view
+* fixes problems with file type recognition
+* adds an info page at `/_h5ai`
+* sort order is preserved while browsing
+* removes PHP error messages on thumbnail generation
+* fixes PHP some problems with packed download
+* adds support for tarred downloads
+* changes crumb image for folders with an index file
+* adds `index.php` to use h5ai in non-Apache environments
+* switches from [Datejs](http://www.datejs.com) to [Moment.js](http://momentjs.com)
+* adds [underscore.js](http://underscorejs.org)
+* fixes mousewheel problems, updates [jQuery.mousewheel](http://github.com/brandonaaron/jquery-mousewheel) to 3.0.6
+* updates lv translation
+* adds ro translation by [Jakob Cosoroabă](http://github.com/midday)
+* adds ja translation by [metasta](http://github.com/metasta)
+* adds nb translation by [Sindre Sorhus](http://github.com/sindresorhus)
+* adds sr translation by [Goran](http://github.com/vBm)
+* adds gr translation by [xhmikosr](http://github.com/xhmikosr)
+
+
### v0.18 - *2012-02-24*
* adds optional QRCode display
diff --git a/build.properties b/build.properties
index d4865527..20c056d4 100644
--- a/build.properties
+++ b/build.properties
@@ -3,7 +3,7 @@ custom = true
# project
project.name = h5ai
-project.version = 0.18
+project.version = 0.19
# src
@@ -18,4 +18,5 @@ release.dir = release
# tools
tool.wepp = wepp
tool.jslint = jslint
+tool.jshint = jshint
diff --git a/build.xml b/build.xml
index eadb4674..48e26d10 100644
--- a/build.xml
+++ b/build.xml
@@ -54,6 +54,11 @@
+
+
+
+
+
@@ -77,7 +82,6 @@
-
@@ -113,4 +117,14 @@
+
+
+
+ JSHint @{files}
+
+
+
+
+
+
diff --git a/src/_h5ai/.htaccess b/src/_h5ai/.htaccess
index be958da7..39567eb6 100644
--- a/src/_h5ai/.htaccess
+++ b/src/_h5ai/.htaccess
@@ -1,5 +1,4 @@
-
Options -Indexes
AddType text/html .php
@@ -9,6 +8,7 @@ AddType text/html .php
# if php doesn't get interpreted try to
# uncomment one of the following lines
###########################################
+
#AddHandler application/x-httpd-php .php
#AddHandler application/x-httpd-php5 .php
#AddHandler application/x-httpd-php52 .php
@@ -19,19 +19,19 @@ AddType text/html .php
#AddHandler php53-script .php
-# cache images, css and js for 52 weeks
+# cache images, css and js for 7 days
- Header set Cache-Control "max-age=31449600, public"
+ Header set Cache-Control "max-age=604800, public"
- Header set Cache-Control "max-age=31449600, public"
+ Header set Cache-Control "max-age=604800, public"
- Header set Cache-Control "max-age=31449600, public"
+ Header set Cache-Control "max-age=604800, public"
- Header set Cache-Control "max-age=31449600, public"
+ Header set Cache-Control "max-age=604800, public"
diff --git a/src/_h5ai/cache/readme.md b/src/_h5ai/cache/README.md
similarity index 100%
rename from src/_h5ai/cache/readme.md
rename to src/_h5ai/cache/README.md
diff --git a/src/_h5ai/config.js b/src/_h5ai/config.js
index 5b7705b1..368dbfce 100644
--- a/src/_h5ai/config.js
+++ b/src/_h5ai/config.js
@@ -17,16 +17,17 @@ var H5AI_CONFIG = {
"h5aiAbsHref": "/_h5ai/",
/*
- * Filenames of customized header and footer files to look for
- * in each folder. For Example:
- *
- * "customHeader": "_h5ai.header.html",
- * "customFooter": "_h5ai.footer.html",
- *
- * This is disabled by default.
+ * Spacing of the main content.
+ * Left and right will be added to a minimum of 30px. Top and bottom
+ * are calculated relative to the top and bottom bar heights.
*/
- "customHeader": null,
- "customFooter": null,
+ "spacing": {
+ "maxWidth": 960,
+ "top": 50,
+ "right": "auto",
+ "bottom": 50,
+ "left": "auto"
+ },
/*
* An array of view modes the user may choose from. Currently there
@@ -35,8 +36,111 @@ var H5AI_CONFIG = {
* view mode is fixed and the selector buttons are hidden.
* The user selected view mode is also stored local in modern browsers
* so that it will be persistent.
+ *
+ * Set parent folder labels to real folder names.
*/
- "viewmodes": ["details", "icons"],
+ "view": {
+ "modes": ["details", "icons"],
+ "setParentFolderLabels": true
+ },
+
+
+
+
+ /*
+ * Extensions in alphabetical order.
+ */
+
+ /*
+ * Show a clickable breadcrumb.
+ */
+ "crumb": {
+ "enabled": true
+ },
+
+ /*
+ * Filenames of customized header and footer files to look for
+ * in each folder.
+ */
+ "custom": {
+ "enabled": false,
+ "header": "_h5ai.header.html",
+ "footer": "_h5ai.footer.html"
+ },
+
+ /*
+ * EXPLICITLY: USE "shell" ON YOUR OWN RISK.
+ *
+ * Requires PHP on the server.
+ * Enable packaged download of selected entries.
+ * Execution: "php", "shell".
+ * Supported formats: "tar", "zip".
+ */
+ "download": {
+ "enabled": false,
+ "execution": "shell",
+ "format": "zip"
+ },
+
+ /*
+ * Allow filtering the displayed files and folders.
+ * Note: filters will be treated as JavaScript regular expressions
+ * if you prefix them with "re:".
+ */
+ "filter": {
+ "enabled": true
+ },
+
+ /*
+ * Associative array of folders and their HTTP status codes to
+ * avoid HEAD requests to that folders. The key (folder) must start
+ * and end with a slash (/).
+ * For example
+ * "/some/folder/": 200
+ * will always return HTTP status 200 (OK), which will be interpreted
+ * as a non auto indexed folder, that means a folder containing an
+ * appropriate default index file.
+ */
+ "folderstatus": {
+ "enabled": false,
+ "folders": {}
+ },
+
+ /*
+ * Localization, for example "en", "de" etc. - see "langs" below for
+ * possible values. Adjust it to your needs. If lang is not found in
+ * "langs" it defaults to "en".
+ *
+ * Optionally try to use browser language, falls back to previous
+ * specified language.
+ */
+ "l10n": {
+ "enabled": true,
+ "lang": "en",
+ "useBrowserLang": true
+ },
+
+ /*
+ * Link the hover effects between crumb, main view and tree.
+ */
+ "link-hover-states": {
+ "enabled": true
+ },
+
+ /*
+ * Show QRCodes on hovering files.
+ */
+ "qrcode": {
+ "enabled": false,
+ "size": 150
+ },
+
+ /*
+ * Make entries selectable. At the moment only needed for packaged download.
+ */
+ "select": {
+ "enabled": true
+ },
/*
* Default sort order is a two letter code. The first letter specifies
@@ -44,162 +148,126 @@ var H5AI_CONFIG = {
* second letter specifies the sort order: "a" for "ascending" or "d"
* for "descending".
*/
- "sortorder": "na",
+ "sort": {
+ "enabled": true,
+ "order": "na"
+ },
/*
- * Show a folder tree, boolean.
+ * Show additional info in a statusbar.
+ */
+ "statusbar": {
+ "enabled": true
+ },
+
+ /*
+ * Requires PHP on the server.
+ * Show thumbnails for image files. Needs the "/_h5ai/cache" folder to be
+ * writable for the Apache Server.
+ */
+ "thumbnails": {
+ "enabled": true,
+ "types": ["bmp", "gif", "ico", "image", "jpg", "png", "tiff"],
+ "delay": 1000
+ },
+
+ /*
+ * Replace window title with current breadcrumb.
+ */
+ "title": {
+ "enabled": true
+ },
+
+ /*
+ * Show a folder tree.
* Note that this tree might have side effects as it sends HEAD requests
* to the folders, and therefore will invoke index.php scripts. Use
- * folderStatus below to avoid such requests.
+ * "folderstatus" above to avoid such requests.
* It might also affect performance significantly.
+ *
+ * Slide tree bar into viewport if there is enough space.
*/
- "showTree": true,
-
- /*
- * Slide tree bar into viewport if there is enough space, boolean.
- */
- "slideTree": true,
-
- /*
- * Associative array of folders and their HTTP status codes to
- * avoid HEAD requests to that folders. The key (folder) must start
- * and end with a slash (/).
- * For example:
- * "/some/folder/": 200
- * will always return HTTP status 200 (OK), which will be interpreted
- * as a non auto indexed folder, that means a folder containing an
- * appropriate default index file.
- */
- "folderStatus": {},
-
- /*
- * Localization, for example "en", "de" etc. - see h5aiLangs below for
- * possible values. Adjust it to your needs. If lang is not found in
- * h5aiLangs it defaults to "en".
- */
- "lang": "en",
-
- /*
- * Try to use browser language, falls back to previous specified lang.
- */
- "useBrowserLang": true,
-
- /*
- * Set parent folder labels to real folder names.
- */
- "setParentFolderLabels": true,
-
- /*
- * Link the hover effects between crumb, extended view and tree.
- */
- "linkHoverStates": true,
-
- /*
- * Date format in detailed view, for example: "yyyy-MM-dd HH:mm:ss"
- * Syntax as specified by date.js
- * http://code.google.com/p/datejs/wiki/FormatSpecifiers
- */
- "dateFormat": "yyyy-MM-dd HH:mm",
-
- /*
- * Requires PHP on the server.
- * Show thumbnails for image files.
- */
- "showThumbs": true,
- "thumbTypes": ["bmp", "gif", "ico", "image", "jpg", "png", "tiff"],
-
- /*
- * Requires PHP on the server.
- * Enable zipped download of selected entries.
- */
- "zippedDownload": false,
-
- /*
- * Show QRCodes on hovering files.
- * Set this to the desired size in pixel or null to not display QRCodes.
- * A good size to start with might be 150.
- */
- "qrCodesSize": null,
-
- /*
- * Allow filtering the displayed files and folders.
- * Filters are ment to be JavaScript regular expressions.
- */
- "showFilter": false
+ "tree": {
+ "enabled": true,
+ "slide": true
+ }
},
/*
- * File types mapped to file extensions.
+ * File types mapped to file extensions. In alphabetical order.
*/
"types": {
- "archive": [".tar.bz2", ".tar.gz", ".tgz"],
- "audio": [".aif", ".m4a", ".mid", ".mp3", ".mpa", ".ra", ".ogg", ".wav", ".wma"],
- "authors": ["authors"],
- "bin": [".class", ".o", ".so"],
- "blank": [],
- "bmp": [".bmp"],
- "c": [".c"],
- "calc": [".ods", ".ots", ".xlr", ".xls", ".xlsx"],
- "cd": [".cue", ".iso"],
- "copying": ["copying", "license"],
- "cpp": [".cpp"],
- "css": [".css", ".less"],
- "deb": [".deb"],
- "default": [],
- "doc": [".doc", ".docx", ".odm", ".odt", ".ott"],
- "draw": [".drw"],
- "eps": [".eps"],
- "exe": [".exe"],
- "folder": [],
- "folder-home": [],
- "folder-open": [],
- "folder-page": [],
- "folder-parent": [],
- "gif": [".gif"],
- "gzip": [".gz"],
- "h": [".h"],
- "hpp": [".hpp"],
- "html": [".htm", ".html", ".shtml"],
- "ico": [".ico"],
- "image": [".xpm"],
- "install": ["install"],
- "java": [".java"],
- "jpg": [".jpg", ".jpeg"],
- "js": [".js", ".json"],
- "log": [".log", "changelog"],
- "makefile": [".pom", "build.xml", "pom.xml"],
- "package": [],
- "pdf": [".pdf"],
- "php": [".php"],
- "playlist": [".m3u"],
- "png": [".png"],
- "pres": [".odp", ".otp", ".pps", ".ppt", ".pptx"],
- "psd": [".psd"],
- "py": [".py"],
- "rar": [".rar"],
- "rb": [".rb"],
- "readme": ["readme"],
- "rpm": [".rpm"],
- "rss": [".rss"],
- "rtf": [".rtf"],
- "script": [".conf", ".csh", ".ini", ".ksh", ".sh", ".shar", ".tcl"],
- "source": [],
- "sql": [],
- "tar": [".tar"],
- "tex": [".tex"],
- "text": [".markdown", ".md", ".text", ".txt"],
- "tiff": [".tiff"],
- "unknown": [],
- "vcal": [".vcal"],
- "video": [".avi", ".flv", ".mov", ".mp4", ".mpg", ".rm", ".swf", ".vob", ".wmv"],
- "xml": [".xml"],
- "zip": [".bz2", ".jar", ".war", ".z", ".Z", ".zip"]
+ "archive": [".tar.bz2", ".tar.gz", ".tgz"],
+ "audio": [".aif", ".flac", ".m4a", ".mid", ".mp3", ".mpa", ".ra", ".ogg", ".wav", ".wma"],
+ "authors": ["authors"],
+ "bin": [".class", ".o", ".so"],
+ "blank": [],
+ "bmp": [".bmp"],
+ "c": [".c"],
+ "calc": [".ods", ".ots", ".xlr", ".xls", ".xlsx"],
+ "cd": [".cue", ".iso"],
+ "copying": ["copying", "license"],
+ "cpp": [".cpp"],
+ "css": [".css", ".less"],
+ "deb": [".deb"],
+ "default": [],
+ "doc": [".doc", ".docx", ".odm", ".odt", ".ott"],
+ "draw": [".drw"],
+ "eps": [".eps"],
+ "exe": [".bat", ".cmd", ".exe"],
+ "folder": [],
+ "folder-home": [],
+ "folder-open": [],
+ "folder-page": [],
+ "folder-parent": [],
+ "gif": [".gif"],
+ "gzip": [".gz"],
+ "h": [".h"],
+ "hpp": [".hpp"],
+ "html": [".htm", ".html", ".shtml"],
+ "ico": [".ico"],
+ "image": [".xpm"],
+ "install": ["install"],
+ "java": [".java"],
+ "jpg": [".jpg", ".jpeg"],
+ "js": [".js", ".json"],
+ "log": [".log", "changelog"],
+ "makefile": [".pom", "build.xml", "pom.xml"],
+ "package": [],
+ "pdf": [".pdf"],
+ "php": [".php"],
+ "playlist": [".m3u", ".m3u8", ".pls"],
+ "png": [".png"],
+ "pres": [".odp", ".otp", ".pps", ".ppt", ".pptx"],
+ "psd": [".psd"],
+ "py": [".py"],
+ "rar": [".rar"],
+ "rb": [".rb"],
+ "readme": ["readme"],
+ "rpm": [".rpm"],
+ "rss": [".rss"],
+ "rtf": [".rtf"],
+ "script": [".conf", ".csh", ".ini", ".ksh", ".sh", ".shar", ".tcl"],
+ "source": [],
+ "sql": [],
+ "tar": [".tar"],
+ "tex": [".tex"],
+ "text": [".diff", ".markdown", ".md", ".patch", ".text", ".txt"],
+ "tiff": [".tiff"],
+ "unknown": [],
+ "vcal": [".vcal"],
+ "video": [".avi", ".flv", ".mkv", ".mov", ".mp4", ".mpg", ".rm", ".swf", ".vob", ".wmv"],
+ "xml": [".xml"],
+ "zip": [".7z", ".bz2", ".jar", ".lzma", ".war", ".z", ".Z", ".zip"]
},
/*
- * Available translations.
+ * Available translations. "en" in first place as a reference, otherwise in alphabetical order.
+ *
+ * Date format is used in detailed view, for example: "YYYY-MM-DD HH:mm:ss"
+ * Syntax as specified by Moment.js (http://momentjs.com)
*/
"langs": {
@@ -215,7 +283,8 @@ var H5AI_CONFIG = {
"folders": "folders",
"files": "files",
"download": "download",
- "noMatch": "no match"
+ "noMatch": "no match",
+ "dateFormat": "YYYY-MM-DD HH:mm"
},
"bg": {
@@ -228,9 +297,7 @@ var H5AI_CONFIG = {
"parentDirectory": "Предходна директория",
"empty": "празно",
"folders": "папки",
- "files": "файлове",
- "download": "download",
- "noMatch": "no match"
+ "files": "файлове"
},
"cs": {
@@ -243,9 +310,7 @@ var H5AI_CONFIG = {
"parentDirectory": "Nadřazený adresář",
"empty": "prázdný",
"folders": "složek",
- "files": "souborů",
- "download": "download",
- "noMatch": "no match"
+ "files": "souborů"
},
"de": {
@@ -260,7 +325,8 @@ var H5AI_CONFIG = {
"folders": "Ordner",
"files": "Dateien",
"download": "Download",
- "noMatch": "keine Treffer"
+ "noMatch": "keine Treffer",
+ "dateFormat": "DD.MM.YYYY HH:mm"
},
"es": {
@@ -274,8 +340,7 @@ var H5AI_CONFIG = {
"empty": "vacío",
"folders": "Directorios",
"files": "Archivos",
- "download": "Descargar",
- "noMatch": "no match"
+ "download": "Descargar"
},
"fr": {
@@ -290,7 +355,22 @@ var H5AI_CONFIG = {
"folders": "Répertoires",
"files": "Fichiers",
"download": "télécharger",
- "noMatch": "no match"
+ "noMatch": "rien trouvé"
+ },
+
+ "gr": {
+ "lang": "ελληνικά",
+ "details": "Λεπτομέρειες",
+ "icons": "Εικονίδια",
+ "name": "Όνομα",
+ "lastModified": "Τελευταία Τροποποίηση",
+ "size": "Μέγεθος",
+ "parentDirectory": "Προηγούμενος Κατάλογος",
+ "empty": "κενό",
+ "folders": "Φάκελοι",
+ "files": "Αρχεία",
+ "download": "Μεταμόρφωση",
+ "noMatch": "Κανένα Ταίριασμα"
},
"it": {
@@ -303,10 +383,23 @@ var H5AI_CONFIG = {
"parentDirectory": "Cartella Superiore",
"empty": "vuota",
"folders": "cartelle",
- "files": "file",
- "download": "download",
- "noMatch": "no match"
- },
+ "files": "file"
+ },
+
+ "ja": {
+ "lang": "日本語",
+ "details": "詳細",
+ "icons": "アイコン",
+ "name": "名前",
+ "lastModified": "変更日",
+ "size": "サイズ",
+ "parentDirectory": "親フォルダ",
+ "empty": "項目なし",
+ "folders": "フォルダ",
+ "files": "ファイル",
+ "download": "ダウンロード",
+ "noMatch": "一致なし"
+ },
"lv": {
"lang": "latviešu",
@@ -320,7 +413,22 @@ var H5AI_CONFIG = {
"folders": "mapes",
"files": "faili",
"download": "lejupielādēt",
- "noMatch": "no match"
+ "noMatch": "nav sakritības"
+ },
+
+ "nb": {
+ "lang": "norwegian",
+ "details": "detaljer",
+ "icons": "ikoner",
+ "name": "Navn",
+ "lastModified": "Sist endret",
+ "size": "Størrelse",
+ "parentDirectory": "Overordnet mappe",
+ "empty": "tom",
+ "folders": "mapper",
+ "files": "filer",
+ "download": "last ned",
+ "noMatch": "ingen treff"
},
"nl": {
@@ -331,11 +439,7 @@ var H5AI_CONFIG = {
"lastModified": "Laatste wijziging",
"size": "Grootte",
"parentDirectory": "Bovenliggende map",
- "empty": "lege",
- "folders": "folders",
- "files": "files",
- "download": "download",
- "noMatch": "no match"
+ "empty": "lege"
},
"pl": {
@@ -348,9 +452,7 @@ var H5AI_CONFIG = {
"parentDirectory": "Katalog nadrzędny",
"empty": "pusty",
"folders": "foldery",
- "files": "pliki",
- "download": "download",
- "noMatch": "no match"
+ "files": "pliki"
},
"pt": {
@@ -363,9 +465,22 @@ var H5AI_CONFIG = {
"parentDirectory": "Diretório superior",
"empty": "vazio",
"folders": "pastas",
- "files": "arquivos",
- "download": "download",
- "noMatch": "no match"
+ "files": "arquivos"
+ },
+
+ "ro": {
+ "lang": "română",
+ "details": "detalii",
+ "icons": "pictograme",
+ "name": "nume",
+ "lastModified": "ultima modificare",
+ "size": "mărime",
+ "parentDirectory": "dosar părinte",
+ "empty": "gol",
+ "folders": "dosar",
+ "files": "fişiere",
+ "download": "descarcă",
+ "noMatch": "0 rezultate"
},
"ru": {
@@ -378,9 +493,7 @@ var H5AI_CONFIG = {
"parentDirectory": "Главная директория",
"empty": "пусто",
"folders": "папки",
- "files": "файлы",
- "download": "download",
- "noMatch": "no match"
+ "files": "файлы"
},
"sk": {
@@ -393,9 +506,22 @@ var H5AI_CONFIG = {
"parentDirectory": "Nadriadený priečinok",
"empty": "prázdny",
"folders": "priečinkov",
- "files": "súborov",
+ "files": "súborov"
+ },
+
+ "sr": {
+ "lang": "srpski",
+ "details": "detalji",
+ "icons": "ikone",
+ "name": "Ime",
+ "lastModified": "Poslednja modifikacija",
+ "size": "Veličina",
+ "parentDirectory": "Roditeljski direktorijum",
+ "empty": "prazno",
+ "folders": "direktorijum",
+ "files": "fajlovi",
"download": "download",
- "noMatch": "no match"
+ "noMatch": "bez poklapanja"
},
"sv": {
@@ -406,11 +532,7 @@ var H5AI_CONFIG = {
"lastModified": "Senast ändrad",
"size": "Filstorlek",
"parentDirectory": "Till överordnad mapp",
- "empty": "tom",
- "folders": "folders",
- "files": "files",
- "download": "download",
- "noMatch": "no match"
+ "empty": "tom"
},
"tr": {
@@ -424,8 +546,7 @@ var H5AI_CONFIG = {
"empty": "boş",
"folders": "klasörler",
"files": "dosyalar",
- "download": "indir",
- "noMatch": "no match"
+ "download": "indir"
},
"zh-cn": {
@@ -439,8 +560,7 @@ var H5AI_CONFIG = {
"empty": "空文件夹",
"folders": "文件夹",
"files": "文件",
- "download": "下载",
- "noMatch": "no match"
+ "download": "下载"
},
"zh-tw": {
@@ -454,8 +574,7 @@ var H5AI_CONFIG = {
"empty": "空資料夾",
"folders": "資料夾",
"files": "檔案",
- "download": "下載",
- "noMatch": "no match"
+ "download": "下載"
}
}
};
diff --git a/src/_h5ai/config.php b/src/_h5ai/config.php
index 8ab74296..95143e8b 100644
--- a/src/_h5ai/config.php
+++ b/src/_h5ai/config.php
@@ -14,7 +14,7 @@ $H5AI_CONFIG = array(
* This configuration assumes that h5ai is installed
* in the webroot directory of the Apache server.
*/
- "ROOT_ABS_PATH" => safe_dirname(safe_dirname(__FILE__)),
+ "ROOT_ABS_PATH" => dirname(dirname(__FILE__)),
/*
* Files/folders that should not be listed. Specified
diff --git a/src/_h5ai/css/inc/table.less b/src/_h5ai/css/inc/apache-autoindex-table.less
similarity index 66%
rename from src/_h5ai/css/inc/table.less
rename to src/_h5ai/css/inc/apache-autoindex-table.less
index cfd5241b..5fcd86a1 100644
--- a/src/_h5ai/css/inc/table.less
+++ b/src/_h5ai/css/inc/apache-autoindex-table.less
@@ -1,33 +1,32 @@
-#table {
+#data-apache-autoindex {
+ max-width: 960px;
+ margin: 0 auto;
+
table {
display: block;
width: 100%;
border-collapse: collapse;
th, td {
- padding: 3px 6px;
+ padding: 6px;
text-align: left;
border: none;
}
th {
padding-bottom: 18px;
- opacity: 0.4;
- .transition(all 0.2s ease-in-out);
- &:hover, &:hover a {
- color: #555;
- cursor: pointer;
- opacity: 0.9;
- }
a, a:visited {
color: #555;
font-weight: normal;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.4;
+ .transition(all 0.2s ease-in-out);
- img {
- width: 12px;
- height: 12px;
- padding: 0 8px;
+ &:hover {
+ color: #555;
+ opacity: 0.9;
}
}
}
@@ -35,6 +34,20 @@
border: 1px solid #ddd;
border-left: none;
border-right: none;
+ overflow: hidden;
+ white-space: nowrap;
+ font-size: 16px;
+
+ a, a:active, a:visited {
+ display: block;
+ color: #555;
+ text-decoration: none;
+ cursor: pointer;
+
+ &:hover {
+ color: #e80;
+ }
+ }
}
td:nth-child(1), th:nth-child(1) {
text-align: center;
@@ -43,26 +56,23 @@
img {
width: 16px;
height: 16px;
- padding-top: 2px;
+ position: relative;
+ top: -2px;
}
}
td:nth-child(2), th:nth-child(2) {
width: 682px;
max-width: 682px;
- overflow: hidden;
- white-space: nowrap;
}
td:nth-child(3), th:nth-child(3) {
text-align: right;
width: 160px;
min-width: 160px;
- white-space: nowrap;
}
td:nth-child(4), th:nth-child(4) {
text-align: right;
width: 70px;
min-width: 70px;
- white-space: nowrap;
}
}
}
diff --git a/src/_h5ai/css/inc/bottombar.less b/src/_h5ai/css/inc/bottombar.less
new file mode 100644
index 00000000..d902d81c
--- /dev/null
+++ b/src/_h5ai/css/inc/bottombar.less
@@ -0,0 +1,67 @@
+
+#bottombar {
+ position: fixed;
+ z-index: 5;
+ width: 100%;
+ left: 0;
+ bottom: 0;
+ padding: 6px 0 8px 0;
+ .vert-gradient(rgb(241,241,241), rgb(228,228,228));
+ border-top: 1px solid rgb(210,210,210);
+
+ color: #999;
+ text-align: center;
+
+ a, a:active, a:visited {
+ color: #555;
+ text-decoration: none;
+ .transition(all 0.2s ease-in-out);
+ opacity: 0.7;
+
+ &:hover {
+ color: #e80;
+ opacity: 1;
+ }
+ }
+ .left {
+ display: block;
+ padding: 0 8px;
+ float: left
+ }
+ .center {
+ display: block;
+ margin: 0 100px;
+ }
+ .right {
+ display: block;
+ padding: 0 8px;
+ float: right
+ }
+ .noJsMsg {
+ color: #c33;
+ margin-left: 16px;
+ }
+ .oldBrowser {
+ display: none;
+ color: #c33;
+ margin-left: 16px;
+ a, a:active, a:visited {
+ color: #c33;
+ text-decoration: underline;
+ &:hover {
+ color: #e80;
+ }
+ }
+ }
+ .status {
+ .sep {
+ display: inline-block;
+ padding: 0 6px;
+ }
+ &.default {
+ }
+ &.dynamic {
+ display: none;
+ }
+ }
+}
diff --git a/src/_h5ai/css/inc/content.less b/src/_h5ai/css/inc/content.less
index cd84d554..3c17fbfe 100644
--- a/src/_h5ai/css/inc/content.less
+++ b/src/_h5ai/css/inc/content.less
@@ -1,18 +1,31 @@
#content {
max-width: 960px;
- margin: 0 auto;
+ margin: 50px auto;
+ font-size: 16px;
+}
- > header {
- display: none;
- padding-bottom: 10px;
- margin-bottom: 80px;
- border-bottom: 2px dashed #ddd;
- }
- > footer {
- display: none;
- padding-top: 10px;
- margin-top: 80px;
- border-top: 2px dashed #ddd;
+
+#content-header, #content-footer {
+
+ a, a:active, a:visited {
+ color: #2080FF;
+ text-decoration: none;
+ cursor: pointer;
+
+ &:hover {
+ color: #68A9FF;
+ }
}
}
+
+
+#content-header {
+ padding-bottom: 12px;
+ margin-bottom: 32px;
+}
+
+#content-footer {
+ padding-top: 12px;
+ margin-top: 32px;
+}
diff --git a/src/_h5ai/css/inc/download.less b/src/_h5ai/css/inc/download.less
new file mode 100644
index 00000000..d56119ec
--- /dev/null
+++ b/src/_h5ai/css/inc/download.less
@@ -0,0 +1,30 @@
+
+#download {
+ display: none;
+ .topbar-right;
+ .transition(all 0.2s ease-in-out);
+
+ &.failed {
+ background-color: rgba(255,0,0,0.5);
+ }
+}
+
+#download-auth {
+ display: none;
+ position: fixed;
+ z-index: 5;
+ left: 0;
+ top: 0;
+ .vert-gradient(rgb(241,241,241), rgb(228,228,228));
+ border: 1px solid rgb(210,210,210);
+
+ input {
+ display: block;
+ margin: 4px 6px;
+ border: 1px solid rgb(210,210,210);
+ font-family: Ubuntu, sans-serif;
+ color: #555;
+ background-color: rgba(255,255,255,1);
+ width: 100px;
+ }
+}
diff --git a/src/_h5ai/css/inc/extended.less b/src/_h5ai/css/inc/extended.less
index 5ef2e69e..32e9ba23 100644
--- a/src/_h5ai/css/inc/extended.less
+++ b/src/_h5ai/css/inc/extended.less
@@ -13,6 +13,8 @@
clear: both;
&.header {
+ font-size: 13px;
+
a, a:active, a:visited {
padding-bottom: 18px;
color: #555;
@@ -42,7 +44,6 @@
}
}
&.entry {
-
a, a:active, a:visited {
display: block;
color: #555;
@@ -54,10 +55,10 @@
background-color: #f6f6f6;
color: #e80;
}
- &.selected:not(.selecting), &.selecting:not(.selected) {
- border-color: rgba(240,100,0,0.2);
- background-color: rgba(240,100,0,0.2);
- }
+ }
+ &.selected:not(.selecting) a, &.selecting:not(.selected) a {
+ border-color: rgba(240,100,0,0.2);
+ background-color: rgba(240,100,0,0.2);
}
&.error {
a, a:active, a:visited {
@@ -102,7 +103,7 @@
width: 16px;
height: 16px;
&.thumb {
- border: 1px solid #eee;
+ // border: 1px solid #ddd;
}
}
}
@@ -132,18 +133,6 @@
width: 80px;
white-space: nowrap;
}
- &.entry.thumb .icon.small {
- overflow: hidden;
- padding: 5px;
-
- img {
- background-color: #eee;
- width: 16px;
- height: 16px;
- border: 1px solid #ddd;
- overflow: hidden;
- }
- }
}
}
.empty, .no-match {
@@ -206,19 +195,15 @@
border-color: #eee;
background-color: #f6f6f6;
}
- &.selected:not(.selecting), &.selecting:not(.selected) {
- border-color: rgba(240,100,0,0.2);
- background-color: rgba(240,100,0,0.2);
- }
.icon {
display: block;
img {
- min-width: 48px;
- min-height: 48px;
+ max-width: 100px;
+ height: 48px;
margin-bottom: 8px;
&.thumb {
- border: 1px solid #eee;
+ // border: 1px solid #ddd;
}
}
}
@@ -233,6 +218,10 @@
display: none;
}
}
+ &.selected:not(.selecting) a, &.selecting:not(.selected) a {
+ border-color: rgba(240,100,0,0.2);
+ background-color: rgba(240,100,0,0.2);
+ }
&.error {
a, a:active, a:visited {
color: #aaa;
@@ -253,21 +242,6 @@
}
}
}
- &.entry.thumb .icon.big {
- width: 100px;
- height: 58px;
- overflow: hidden;
-
- img {
- background-color: #eee;
- min-width: 46px;
- min-height: 46px;
- min-width: 12px;
- min-height: 12px;
- border: 1px solid #ddd;
- overflow: hidden;
- }
- }
}
}
.empty, .no-match {
diff --git a/src/_h5ai/css/inc/filter.less b/src/_h5ai/css/inc/filter.less
new file mode 100644
index 00000000..8ae0ae6d
--- /dev/null
+++ b/src/_h5ai/css/inc/filter.less
@@ -0,0 +1,19 @@
+
+#filter {
+ .topbar-right;
+
+ input {
+ display: none;
+ border: none;
+ font-family: Ubuntu, sans-serif;
+ color: #555;
+ background-color: rgba(0,0,0,0);
+ width: 100px;
+ }
+
+ &.current {
+ input {
+ display: inline;
+ }
+ }
+}
diff --git a/src/_h5ai/css/inc/footer.less b/src/_h5ai/css/inc/footer.less
deleted file mode 100644
index 02495140..00000000
--- a/src/_h5ai/css/inc/footer.less
+++ /dev/null
@@ -1,108 +0,0 @@
-
-body > footer {
- position: fixed;
- z-index: 5;
- width: 100%;
- left: 0;
- bottom: 0;
- padding: 6px 0 8px 0;
- .vert-gradient(rgb(241,241,241), rgb(228,228,228));
- border-top: 1px solid rgb(210,210,210);
-
- color: #999;
- font-size: 0.85em;
- text-align: center;
-
- a, a:active, a:visited {
- color: #555;
- text-decoration: none;
- .transition(all 0.2s ease-in-out);
- opacity: 0.7;
-
- &:hover {
- color: #e80;
- opacity: 1;
- }
- }
- .left {
- display: block;
- padding: 0 8px;
- float: left
- }
- .center {
- display: block;
- margin: 0 100px;
- }
- .right {
- display: block;
- padding: 0 8px;
- float: right
- }
- .noJsMsg {
- color: #c33;
- margin-left: 16px;
- }
- .status {
- .sep {
- display: inline-block;
- padding: 0 6px;
- }
- &.default {
- }
- &.dynamic {
- display: none;
- }
- }
- #langSelector {
- position: relative;
- cursor: pointer;
-
- .langOptions {
- position: absolute;
- z-index: 2;
- overflow: auto;
- display: none;
- right: 0;
- top: 0;
- max-height: 200px;
- background-color: rgb(241,241,241);
- border: 1px solid rgb(210,210,210);
-
- > .scrollbar {
- margin: 0;
- width: 6px;
- background-color: rgb(210,210,210);
-
- .drag {
- background-color: rgb(180,180,180);
- }
- &.dragOn .drag {
- background-color: rgb(150,150,150);
- }
- }
-
- ul {
- margin: 0;
- padding: 0;
- list-style: none;
- text-align: left;
-
- li {
- padding: 8px 24px 10px 24px;
- white-space: nowrap;
- border-top: 1px solid rgb(231,231,231);
- .transition(all 0.2s ease-in-out);
-
- &.current {
- color: #333;
- background-color: rgba(255,255,255,0.8);
- }
- &:hover {
- color: #e80;
- background-color: rgba(255,255,255,0.8);
- }
- }
- }
- }
- }
-}
diff --git a/src/_h5ai/css/inc/h5ai-info.less b/src/_h5ai/css/inc/h5ai-info.less
new file mode 100644
index 00000000..dc65b089
--- /dev/null
+++ b/src/_h5ai/css/inc/h5ai-info.less
@@ -0,0 +1,63 @@
+
+body#h5ai-info {
+ font-family: Ubuntu, Arial, sans;
+ margin: 0 auto;
+ font-size: 20px;
+ color: #555;
+ max-width: 600px;
+ text-align: center;
+
+ .h5ai {
+ font-family: 'Miltonian Tattoo';
+ font-weight: normal;
+ }
+ h1 {
+ font-size: 3.6em;
+ margin: 0.9em 0 0 0;
+ }
+ h2 {
+ font-size: 1.15em;
+ margin: 2.6em 0 0 0;
+ }
+ p {
+ line-height: 1.6em;
+ }
+ p + p {
+ margin-top: 1.2em;
+ }
+ li {
+ margin-top: 0.6em;
+ line-height: 1.4em;
+ }
+
+ #tests {
+ display: inline-block;
+ list-style-type: none;
+ text-align: left;
+ margin: 0;
+ padding: 0;
+
+ .test-label {
+ display: inline-block;
+ width: 300px;
+ }
+ .test-result {
+ display: inline-block;
+ width: 70px;
+ text-align: right;
+ font-weight: bold;
+ color: #aaa;
+
+ &.test-passed {
+ color: #5a5;
+ }
+ &.test-failed {
+ color: #a55;
+ }
+ }
+ }
+
+ #bottombar {
+ font-size: 13px;
+ }
+}
diff --git a/src/_h5ai/css/inc/l10n.less b/src/_h5ai/css/inc/l10n.less
new file mode 100644
index 00000000..c47f9746
--- /dev/null
+++ b/src/_h5ai/css/inc/l10n.less
@@ -0,0 +1,53 @@
+
+#langSelector {
+ position: relative;
+ cursor: pointer;
+
+ .langOptions {
+ position: absolute;
+ z-index: 2;
+ overflow: auto;
+ display: none;
+ right: 0;
+ top: 0;
+ max-height: 200px;
+ background-color: rgb(241,241,241);
+ border: 1px solid rgb(210,210,210);
+
+ > .scrollbar {
+ margin: 0;
+ width: 6px;
+ background-color: rgb(210,210,210);
+
+ .drag {
+ background-color: rgb(180,180,180);
+ }
+ &.dragOn .drag {
+ background-color: rgb(150,150,150);
+ }
+ }
+
+ ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ text-align: left;
+
+ li {
+ padding: 8px 24px 10px 24px;
+ white-space: nowrap;
+ border-top: 1px solid rgb(231,231,231);
+ .transition(all 0.2s ease-in-out);
+
+ &.current {
+ color: #333;
+ background-color: rgba(255,255,255,0.8);
+ }
+ &:hover {
+ color: #e80;
+ background-color: rgba(255,255,255,0.8);
+ }
+ }
+ }
+ }
+}
diff --git a/src/_h5ai/css/inc/mixins.less b/src/_h5ai/css/inc/mixins.less
index a9691734..e1ecd862 100644
--- a/src/_h5ai/css/inc/mixins.less
+++ b/src/_h5ai/css/inc/mixins.less
@@ -1,5 +1,4 @@
-
.border-radius (@radius) {
-webkit-border-radius: @radius; /* Saf3-4, iOS 1-3.2, Android <1.6 */
-moz-border-radius: @radius; /* FF1-3.6 */
@@ -56,4 +55,3 @@
-moz-background-size: @size; /* FF3.6 */
background-size: @size; /* Opera, IE9, Saf5, Chrome, FF4 */
}
-
diff --git a/src/_h5ai/css/inc/nav.less b/src/_h5ai/css/inc/nav.less
deleted file mode 100644
index 89c4f580..00000000
--- a/src/_h5ai/css/inc/nav.less
+++ /dev/null
@@ -1,135 +0,0 @@
-
-.nav-highlight {
- background-color: rgba(255,255,255,0.5);
- opacity: 1.0;
-}
-
-.nav-hover {
- .nav-highlight;
- color: #e80;
-}
-
-@nav-sep-border: 1px solid rgba(0,0,0,0.05);
-
-.nav-left {
- float: left;
- border-right: @nav-sep-border;
-}
-
-.nav-right {
- float: right;
- border-left: @nav-sep-border;
-}
-
-body > nav {
- position: fixed;
- z-index: 5;
- width: 100%;
- left: 0;
- top: 0;
- font-size: 0.85em;
- .vert-gradient(rgb(241,241,241), rgb(228,228,228));
- border-bottom: 1px solid rgb(210,210,210);
-
- span.jsDisabledFallback {
- display: block;
- height: 30px;
- line-height: 30px;
- padding: 0 10px;
- color: #999;
- }
- a, a:active, a:visited, span.element {
- color: #555;
- cursor: pointer;
- text-decoration: none;
- opacity: 0.7;
- .transition(all 0.2s ease-in-out);
-
- display: block;
- height: 30px;
- line-height: 30px;
- padding: 0 10px;
-
- &:hover, &.hover {
- .nav-hover;
- }
- }
- .current {
- a, span.element {
- .nav-highlight;
- }
- }
- img {
- position: relative;
- top: -2px;
- width: 16px;
- height: 16px;
- }
- img + span, img + input {
- margin-left: 6px;
- }
- .crumb {
- .nav-left;
- .hint {
- margin-left: 8px;
- font-style: italic;
- color: #999;
- }
- img.hint {
- width: 10px;
- height: 10px;
- }
- }
- .view {
- .nav-right;
- }
- #download {
- display: none;
- .nav-right;
- .transition(all 0.2s ease-in-out);
-
- &.failed {
- background-color: rgba(255,0,0,0.5);
- }
- }
- #filter {
- .nav-right;
-
- input {
- display: none;
- border: none;
- font-family: Ubuntu, sans-serif;
- color: #555;
- background-color: rgba(0,0,0,0);
- width: 100px;
- }
-
- &.current {
- input {
- display: inline;
- }
- }
- }
-}
-
-
-#download-auth {
- display: none;
- position: fixed;
- z-index: 5;
- left: 0;
- top: 0;
- font-size: 0.85em;
- .vert-gradient(rgb(241,241,241), rgb(228,228,228));
- border: 1px solid rgb(210,210,210);
-
- input {
- display: block;
- margin: 4px 6px;
- border: 1px solid rgb(210,210,210);
- font-family: Ubuntu, sans-serif;
- color: #555;
- background-color: rgba(255,255,255,1);
- width: 100px;
- }
-}
diff --git a/src/_h5ai/css/inc/responsive.less b/src/_h5ai/css/inc/responsive.less
index ffe47861..3b0b52ca 100644
--- a/src/_h5ai/css/inc/responsive.less
+++ b/src/_h5ai/css/inc/responsive.less
@@ -1,5 +1,6 @@
+
@media only screen and (max-width: 500px) {
-body > nav {
+#topbar {
.view span {
display: none;
}
@@ -12,7 +13,7 @@ body > nav {
}
@media only screen and (max-width: 350px) {
-body > nav {
+#topbar {
.crumb {
display: none;
}
@@ -28,9 +29,29 @@ body > nav {
display: none;
}
}
-body > footer {
+#bottombar {
.center {
display: none;
}
}
}
+
+@media print {
+a[href]:after {
+ content: "";
+}
+#topbar {
+ position: static;
+ margin-bottom: 2em;
+ .view, #download {
+ display: none;
+ }
+}
+#bottombar {
+ position: static;
+ margin-top: 2em;
+}
+#tree {
+ display: none !important;
+}
+}
diff --git a/src/_h5ai/css/inc/topbar.less b/src/_h5ai/css/inc/topbar.less
new file mode 100644
index 00000000..9b5577a7
--- /dev/null
+++ b/src/_h5ai/css/inc/topbar.less
@@ -0,0 +1,88 @@
+
+#topbar {
+ position: fixed;
+ z-index: 5;
+ width: 100%;
+ left: 0;
+ top: 0;
+ .vert-gradient(rgb(241,241,241), rgb(228,228,228));
+ border-bottom: 1px solid rgb(210,210,210);
+}
+
+
+.topbar-highlight {
+ background-color: rgba(255,255,255,0.5);
+ opacity: 1.0;
+}
+
+.topbar-hover {
+ .topbar-highlight;
+ color: #e80;
+}
+
+@topbar-sep-border: 1px solid rgba(0,0,0,0.05);
+
+.topbar-left {
+ float: left;
+ border-right: @topbar-sep-border;
+}
+
+.topbar-right {
+ float: right;
+ border-left: @topbar-sep-border;
+}
+
+
+#navbar {
+ list-style: none;
+ list-style-image: none;
+ margin: 0;
+ padding: 0;
+
+ a, a:active, a:visited, span.element {
+ color: #555;
+ cursor: pointer;
+ text-decoration: none;
+ opacity: 0.7;
+ .transition(all 0.2s ease-in-out);
+
+ display: block;
+ height: 30px;
+ line-height: 30px;
+ padding: 0 10px;
+
+ &:hover, &.hover {
+ .topbar-hover;
+ }
+ }
+ .current {
+ a, span.element {
+ .topbar-highlight;
+ }
+ }
+ img {
+ position: relative;
+ top: -2px;
+ width: 16px;
+ height: 16px;
+ }
+ img + span, img + input {
+ margin-left: 6px;
+ }
+ .crumb {
+ .topbar-left;
+ .hint {
+ margin-left: 8px;
+ font-style: italic;
+ color: #999;
+ }
+ img.hint {
+ width: 14px;
+ height: 14px;
+ opacity: 0.8;
+ }
+ }
+ .view {
+ .topbar-right;
+ }
+}
diff --git a/src/_h5ai/css/inc/tree.less b/src/_h5ai/css/inc/tree.less
index 6bd2e477..1462593b 100644
--- a/src/_h5ai/css/inc/tree.less
+++ b/src/_h5ai/css/inc/tree.less
@@ -7,7 +7,6 @@
height: 100%;
z-index: 3;
overflow: auto;
- font-size: 0.85em;
padding: 8px;
background-color: rgb(241,241,241);
border-right: 2px solid rgb(221,221,221);
@@ -28,20 +27,12 @@
}
.entry {
- .blank, .indicator {
+ .indicator {
display: inline-block;
width: 16px;
height: 25px;
float: left;
- }
- .indicator {
- opacity: 0.7;
- .transition(all 0.2s ease-in-out);
- cursor: pointer;
- &:hover {
- opacity: 1;
- }
img {
position: relative;
left: 0;
@@ -52,13 +43,23 @@
.transition(all 0.2s ease-in-out);
}
&.open {
+ cursor: pointer;
+ opacity: 0.7;
img {
.transform(rotate(90deg));
}
}
+ &.close {
+ cursor: pointer;
+ opacity: 0.7;
+ }
&.unknown {
+ cursor: pointer;
opacity: 0.3;
}
+ &.none {
+ opacity: 0;
+ }
}
> a, > a:active, > a.visited {
margin-left: 16px;
@@ -92,16 +93,8 @@
margin-left: 12px;
font-size: 0.9em;
color: #ccc;
- img {
- width: 10px;
- height: 10px;
- vertical-align: baseline;
- }
}
}
- &.file {
- display: none;
- }
&.current {
> a, > a:active, > a:visited {
border: 1px solid rgb(221,221,221);
diff --git a/src/_h5ai/css/main.less b/src/_h5ai/css/main.less
deleted file mode 100644
index a803f9cc..00000000
--- a/src/_h5ai/css/main.less
+++ /dev/null
@@ -1,58 +0,0 @@
-
-@import "inc/h5bp-norm";
-@import "inc/mixins";
-
-
-body {
- font-family: Ubuntu, sans-serif;
- font-size: 16px;
- color: #555;
- background-color: #fff;
- margin: 80px 30px;
-}
-
-
-@import "inc/nav";
-@import "inc/content";
-@import "inc/table";
-@import "inc/extended";
-@import "inc/tree";
-@import "inc/context";
-@import "inc/footer";
-@import "inc/responsive";
-
-
-html.js {
- .hideOnJs {
- display: none;
- }
-}
-html.no-js {
- .hideOnNoJs {
- display: none;
- }
-}
-html.h5ai-js {
- #h5ai-reference:after {
- content: " (js)";
- }
-}
-html.h5ai-php {
- #h5ai-reference:after {
- content: " (php)";
- }
-
- #table {
- display: none;
- }
-
- #tree, #content > header, #content > footer {
- display: block;
- }
-
- html.no-js {
- #extended.details-view, #extended.icons-view {
- display: block;
- }
- }
-}
diff --git a/src/_h5ai/css/styles.less b/src/_h5ai/css/styles.less
new file mode 100644
index 00000000..2cc2b6c9
--- /dev/null
+++ b/src/_h5ai/css/styles.less
@@ -0,0 +1,47 @@
+
+@import "inc/h5bp-norm";
+@import "inc/mixins";
+
+::-moz-selection { background: #68A9FF; color: #fff; text-shadow: none; }
+::selection { background: #68A9FF; color: #fff; text-shadow: none; }
+
+body {
+ font-family: Ubuntu, sans-serif;
+ font-size: 13px;
+ color: #555;
+ background-color: #fff;
+ margin: 30px;
+}
+
+
+@import "inc/topbar";
+@import "inc/download";
+@import "inc/filter";
+
+@import "inc/content";
+@import "inc/extended";
+
+@import "inc/bottombar";
+@import "inc/l10n";
+
+@import "inc/tree";
+@import "inc/context";
+@import "inc/apache-autoindex-table";
+
+@import "inc/responsive";
+
+@import "inc/h5ai-info";
+
+
+html.js .hideOnJs, html.no-js .hideOnNoJs {
+ display: none;
+}
+html.oldie {
+ .oldBrowser {
+ display: inline !important;
+ }
+ #tree {
+ display: none !important;
+ }
+}
+
diff --git a/src/_h5ai/footer.html b/src/_h5ai/footer.html
index e1f65ffe..12a8c4d2 100644
--- a/src/_h5ai/footer.html
+++ b/src/_h5ai/footer.html
@@ -1,31 +1,4 @@
-
-
-
-
-
-
-
+
+