Improved preformance for large directories. Changed build process.
2
.gitignore
vendored
|
@ -2,7 +2,7 @@
|
||||||
# Build folders to ignore
|
# Build folders to ignore
|
||||||
bin
|
bin
|
||||||
build
|
build
|
||||||
#target
|
target
|
||||||
|
|
||||||
build.local.*
|
build.local.*
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# h5ai v0.11   ·   a beautified Apache index
|
# h5ai v0.12   ·   a beautified Apache index
|
||||||
|
|
||||||
h5ai tries to make browsing files on a Apache HTTP server more comfortable. It makes use of the
|
h5ai tries to make browsing files on a Apache HTTP server more comfortable. It makes use of the
|
||||||
built-in autoindex module of Apache and adds styles and functionality to the page generated by
|
built-in autoindex module of Apache and adds styles and functionality to the page generated by
|
||||||
|
@ -17,6 +17,12 @@ please respect their rights.
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
### v0.12
|
||||||
|
*2011-07-28*
|
||||||
|
|
||||||
|
* improved performance
|
||||||
|
|
||||||
|
|
||||||
### v0.11
|
### v0.11
|
||||||
*2011-07-27*
|
*2011-07-27*
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ custom = true
|
||||||
|
|
||||||
# project
|
# project
|
||||||
project.name = h5ai
|
project.name = h5ai
|
||||||
project.version = 0.11
|
project.version = 0.12
|
||||||
|
|
||||||
|
|
||||||
# src
|
# src
|
||||||
|
@ -11,7 +11,8 @@ src.dir = src
|
||||||
|
|
||||||
|
|
||||||
# build
|
# build
|
||||||
build.dir = target
|
build.dir = build
|
||||||
|
release.dir = release
|
||||||
|
|
||||||
|
|
||||||
# libs
|
# libs
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
<target name="clean" depends="init">
|
<target name="clean" depends="init">
|
||||||
<delete dir="${build.dir}" />
|
<delete dir="${build.dir}" />
|
||||||
|
<delete dir="${release.dir}" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,6 +31,7 @@
|
||||||
<copy todir="${build.dir}">
|
<copy todir="${build.dir}">
|
||||||
<fileset dir="${src.dir}" />
|
<fileset dir="${src.dir}" />
|
||||||
</copy>
|
</copy>
|
||||||
|
<copy file="LICENSE.txt" todir="${build.dir}" />
|
||||||
<replace dir="${build.dir}">
|
<replace dir="${build.dir}">
|
||||||
<replacefilter token="%BUILD%" value="${build.label}" />
|
<replacefilter token="%BUILD%" value="${build.label}" />
|
||||||
<replacefilter token="%BUILD_NAME%" value="${project.name}" />
|
<replacefilter token="%BUILD_NAME%" value="${project.name}" />
|
||||||
|
@ -39,6 +41,13 @@
|
||||||
|
|
||||||
<scripp.dir dir="${build.dir}/h5ai/css" />
|
<scripp.dir dir="${build.dir}/h5ai/css" />
|
||||||
<scripp.dir dir="${build.dir}/h5ai/js" />
|
<scripp.dir dir="${build.dir}/h5ai/js" />
|
||||||
|
|
||||||
|
<!-- release -->
|
||||||
|
<mkdir dir="${release.dir}" />
|
||||||
|
<tar destfile="${release.dir}/${project.name}-${project.version}.tar" basedir="${build.dir}"/>
|
||||||
|
<gzip destfile="${release.dir}/${project.name}-${project.version}.tar.gz" src="${release.dir}/${project.name}-${project.version}.tar"/>
|
||||||
|
<delete file="${release.dir}/${project.name}-${project.version}.tar" />
|
||||||
|
<zip destfile="${release.dir}/${project.name}-${project.version}.zip" basedir="${build.dir}" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
release/h5ai-0.12.tar.gz
Normal file
BIN
release/h5ai-0.12.zip
Normal file
|
@ -28,8 +28,7 @@ var H5ai = function ( options, langs, pathCache ) {
|
||||||
};
|
};
|
||||||
this.config = $.extend( {}, defaults, options );
|
this.config = $.extend( {}, defaults, options );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************
|
/*******************************
|
||||||
* public api
|
* public api
|
||||||
*******************************/
|
*******************************/
|
||||||
|
@ -93,7 +92,7 @@ var H5ai = function ( options, langs, pathCache ) {
|
||||||
};
|
};
|
||||||
viewmode = this.getViewmode();
|
viewmode = this.getViewmode();
|
||||||
|
|
||||||
$( "body > nav li.view" ).hide().removeClass( "current" );
|
$( "#viewdetails,#viewicons" ).hide().removeClass( "current" );
|
||||||
|
|
||||||
if ( this.config.viewmodes.length > 1 ) {
|
if ( this.config.viewmodes.length > 1 ) {
|
||||||
if ( $.inArray( "details", this.config.viewmodes ) >= 0 ) {
|
if ( $.inArray( "details", this.config.viewmodes ) >= 0 ) {
|
||||||
|
@ -106,14 +105,11 @@ var H5ai = function ( options, langs, pathCache ) {
|
||||||
|
|
||||||
if ( viewmode === "details" ) {
|
if ( viewmode === "details" ) {
|
||||||
$( "#viewdetails" ).closest( "li" ).addClass( "current" );
|
$( "#viewdetails" ).closest( "li" ).addClass( "current" );
|
||||||
$( "#table" ).hide();
|
|
||||||
$( "#extended" ).addClass( "details-view" ).removeClass( "icons-view" ).show();
|
$( "#extended" ).addClass( "details-view" ).removeClass( "icons-view" ).show();
|
||||||
} else if ( viewmode === "icons" ) {
|
} else if ( viewmode === "icons" ) {
|
||||||
$( "#viewicons" ).closest( "li" ).addClass( "current" );
|
$( "#viewicons" ).closest( "li" ).addClass( "current" );
|
||||||
$( "#table" ).hide();
|
|
||||||
$( "#extended" ).removeClass( "details-view" ).addClass( "icons-view" ).show();
|
$( "#extended" ).removeClass( "details-view" ).addClass( "icons-view" ).show();
|
||||||
} else {
|
} else {
|
||||||
$( "#table" ).show();
|
|
||||||
$( "#extended" ).hide();
|
$( "#extended" ).hide();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -179,17 +175,6 @@ var H5ai = function ( options, langs, pathCache ) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************
|
|
||||||
* table view
|
|
||||||
*******************************/
|
|
||||||
|
|
||||||
this.initTableView = function () {
|
|
||||||
|
|
||||||
$( "#table td" ).removeAttr( "align" ).removeAttr( "valign" );
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************
|
/*******************************
|
||||||
* extended view
|
* extended view
|
||||||
*******************************/
|
*******************************/
|
||||||
|
@ -228,14 +213,17 @@ var H5ai = function ( options, langs, pathCache ) {
|
||||||
$li.find( "a.size" ).prepend( $icon );
|
$li.find( "a.size" ).prepend( $icon );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$.timer.log( "start entries" );
|
||||||
// entries
|
// entries
|
||||||
$( "#table td" ).closest( "tr" ).each( function () {
|
$( "#table td" ).closest( "tr" ).each( function () {
|
||||||
var path = pathCache.getPathForTableRow( document.location.pathname, this );
|
var path = pathCache.getPathForTableRow( document.location.pathname, this );
|
||||||
$ul.append( path.updateExtendedHtml() );
|
$ul.append( path.updateExtendedHtml() );
|
||||||
} );
|
} );
|
||||||
|
$.timer.log( "end entries" );
|
||||||
$( "#table" ).remove();
|
$( "#table" ).remove();
|
||||||
|
|
||||||
$( "#extended" ).append( $ul );
|
$( "#extended" ).append( $ul );
|
||||||
|
console.log( "folders", $( "#extended .folder" ).size() , "files", $( "#extended .file" ).size() );
|
||||||
|
|
||||||
// empty
|
// empty
|
||||||
if ( $ul.children( ".entry:not(.parentfolder)" ).size() === 0 ) {
|
if ( $ul.children( ".entry:not(.parentfolder)" ).size() === 0 ) {
|
||||||
|
@ -254,7 +242,6 @@ var H5ai = function ( options, langs, pathCache ) {
|
||||||
|
|
||||||
this.initViews = function () {
|
this.initViews = function () {
|
||||||
|
|
||||||
this.initTableView();
|
|
||||||
this.initExtendedView();
|
this.initExtendedView();
|
||||||
|
|
||||||
$( "#viewdetails" ).closest( "li" )
|
$( "#viewdetails" ).closest( "li" )
|
||||||
|
|
|
@ -1,45 +1,42 @@
|
||||||
|
|
||||||
|
var pathnameSplitRegEx = /^(\/(.*\/)*)([^\/]+\/?)$/;
|
||||||
|
var pathEndsWithSlashRegEx = /\/$/;
|
||||||
|
|
||||||
var PathCache = function () {
|
var PathCache = function () {
|
||||||
|
|
||||||
|
|
||||||
var pathnameRegEx = /^(\/(.*\/)*)([^\/]+\/?)$/;
|
this.cache = {};
|
||||||
|
this.objectCache = {};
|
||||||
|
|
||||||
|
|
||||||
this.splitPathname = function ( pathname ) {
|
this.splitPathname = function ( pathname ) {
|
||||||
|
|
||||||
if ( pathname === "/" ) {
|
if ( pathname === "/" ) {
|
||||||
return [ "", "/" ];
|
return [ "", "/" ];
|
||||||
};
|
};
|
||||||
var match = pathnameRegEx.exec( pathname );
|
var match = pathnameSplitRegEx.exec( pathname );
|
||||||
return [ match[1], match[3] ];
|
return [ match[1], match[3] ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
this.cache = {};
|
|
||||||
|
|
||||||
|
|
||||||
this.loadCache = function () {
|
this.loadCache = function () {
|
||||||
|
|
||||||
var json = localStorage.getItem( "h5ai.cache" );
|
var json = localStorage.getItem( "h5ai.cache" );
|
||||||
var objs = $.evalJSON( json );
|
var objs = $.evalJSON( json );
|
||||||
var cache = {};
|
var objectCache = {};
|
||||||
for ( idx in objs ) {
|
for ( idx in objs ) {
|
||||||
var obj = objs[idx];
|
var obj = objs[idx];
|
||||||
var path = this.objectToPath( obj );
|
objectCache[obj.r] = obj;
|
||||||
cache[path.absHref] = path;
|
|
||||||
};
|
};
|
||||||
return cache;
|
return objectCache;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
this.storeCache = function () {
|
this.storeCache = function () {
|
||||||
|
|
||||||
var objs = [];
|
var objs = [];
|
||||||
for ( ref in this.cache ) {
|
for ( ref in this.objectCache ) {
|
||||||
var path = this.cache[ref];
|
objs.push( this.objectCache[ref] );
|
||||||
if ( path.isFolder ) {
|
|
||||||
objs.push( this.pathToObject( path ) );
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
var json = $.toJSON( objs );
|
var json = $.toJSON( objs );
|
||||||
localStorage.setItem( "h5ai.cache", json );
|
localStorage.setItem( "h5ai.cache", json );
|
||||||
|
@ -77,45 +74,103 @@ var PathCache = function () {
|
||||||
};
|
};
|
||||||
return path;
|
return path;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
this.getAbsHref = function ( folder, tableRow ) {
|
||||||
|
|
||||||
|
if ( ! pathEndsWithSlashRegEx.test( folder ) ) {
|
||||||
|
folder += "/";
|
||||||
|
};
|
||||||
|
|
||||||
|
if ( tableRow === undefined ) {
|
||||||
|
return folder;
|
||||||
|
};
|
||||||
|
|
||||||
|
var $a = $( tableRow ).find( "td" ).eq( 1 ).find( "a" );
|
||||||
|
var isParentFolder = ( $a.text() === "Parent Directory" );
|
||||||
|
var href = $a.attr( "href" );
|
||||||
|
return isParentFolder ? undefined : folder + href;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
this.getPathForFolder = function ( folder ) {
|
this.getPathForFolder = function ( folder ) {
|
||||||
|
|
||||||
return this.getCachedPath( new Path( this, folder ) );
|
var absHref = this.getAbsHref( folder );
|
||||||
|
|
||||||
|
var cachedPath = this.cache[absHref];
|
||||||
|
if ( cachedPath !== undefined ) {
|
||||||
|
return cachedPath;
|
||||||
|
};
|
||||||
|
|
||||||
|
var path = new Path( this, folder );
|
||||||
|
this.cache[path.absHref] = path;
|
||||||
|
|
||||||
|
var obj = this.objectCache[absHref];
|
||||||
|
if ( obj !== undefined ) {
|
||||||
|
path.status = obj.s;
|
||||||
|
path.content = {};
|
||||||
|
path.treeOpen = obj.o;
|
||||||
|
for ( idx in obj.c ) {
|
||||||
|
var href = obj.c[idx];
|
||||||
|
path.content[href] = this.getPathForFolder( href );
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
var obj = this.pathToObject( path );
|
||||||
|
this.objectCache[obj.r] = obj;
|
||||||
|
this.storeCache();
|
||||||
|
};
|
||||||
|
|
||||||
|
return path;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
this.getPathForTableRow = function ( parentFolder, tableRow ) {
|
this.getPathForTableRow = function ( parentFolder, tableRow ) {
|
||||||
|
|
||||||
return this.getCachedPath( new Path( this, parentFolder, tableRow ) );
|
var absHref = this.getAbsHref( parentFolder, tableRow );
|
||||||
};
|
|
||||||
|
var cachedPath = this.cache[absHref];
|
||||||
|
|
||||||
this.getCachedPath = function ( path ) {
|
|
||||||
|
|
||||||
if ( path.isParentFolder ) {
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
var cachedPath = this.cache[path.absHref];
|
|
||||||
if ( cachedPath !== undefined ) {
|
if ( cachedPath !== undefined ) {
|
||||||
return cachedPath;
|
return cachedPath;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var path = new Path( this, parentFolder, tableRow );
|
||||||
|
if ( ! path.isParentFolder ) {
|
||||||
|
this.cache[path.absHref] = path;
|
||||||
|
|
||||||
|
var obj = this.objectCache[absHref];
|
||||||
|
if ( obj !== undefined ) {
|
||||||
|
path.status = obj.s;
|
||||||
|
path.content = {};
|
||||||
|
path.treeOpen = obj.o;
|
||||||
|
for ( idx in obj.c ) {
|
||||||
|
var href = obj.c[idx];
|
||||||
|
path.content[href] = this.getPathForFolder( href );
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
if ( path.isFolder && path.status !== undefined ) {
|
||||||
|
var obj = this.pathToObject( path );
|
||||||
|
this.objectCache[obj.r] = obj;
|
||||||
|
this.storeCache();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
this.cache[path.absHref] = path;
|
|
||||||
this.storeCache();
|
|
||||||
return path;
|
return path;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.cache = this.loadCache();
|
|
||||||
|
this.objectCache = this.loadCache();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var Path = function ( pathCache, folder, tableRow ) {
|
var Path = function ( pathCache, folder, tableRow ) {
|
||||||
|
|
||||||
if ( ! /\/$/.test( folder ) ) {
|
if ( ! pathEndsWithSlashRegEx.test( folder ) ) {
|
||||||
folder += "/";
|
folder += "/";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -128,7 +183,7 @@ var Path = function ( pathCache, folder, tableRow ) {
|
||||||
this.icon16 = $img.attr( "src" );
|
this.icon16 = $img.attr( "src" );
|
||||||
this.alt = $img.attr( "alt" );
|
this.alt = $img.attr( "alt" );
|
||||||
this.label = $a.text();
|
this.label = $a.text();
|
||||||
this.href = $a.attr("href"); //decodeURI( $a.attr("href") );
|
this.href = $a.attr("href");
|
||||||
this.date = $tds.eq( 2 ).text();
|
this.date = $tds.eq( 2 ).text();
|
||||||
this.size = $tds.eq( 3 ).text();
|
this.size = $tds.eq( 3 ).text();
|
||||||
} else {
|
} else {
|
||||||
|
@ -146,7 +201,7 @@ var Path = function ( pathCache, folder, tableRow ) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if ( /\/$/.test( this.label ) ) {
|
if ( pathEndsWithSlashRegEx.test( this.label ) ) {
|
||||||
this.label = this.label.slice( 0, -1 );
|
this.label = this.label.slice( 0, -1 );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -223,7 +278,14 @@ var Path = function ( pathCache, folder, tableRow ) {
|
||||||
|
|
||||||
this.updateCrumbHtml = function () {
|
this.updateCrumbHtml = function () {
|
||||||
|
|
||||||
|
if ( this.html.$crumb !== undefined && this.html.$crumb.data( "status" ) === this.status ) {
|
||||||
|
return this.html.$crumb;
|
||||||
|
};
|
||||||
|
|
||||||
var $html = $( "<li class='crumb' />" ).data( "path", this );
|
var $html = $( "<li class='crumb' />" ).data( "path", this );
|
||||||
|
if ( this.status !== undefined ) {
|
||||||
|
$html.data( "status", this.status );
|
||||||
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$html.addClass( this.isFolder ? "folder" : "file" );
|
$html.addClass( this.isFolder ? "folder" : "file" );
|
||||||
|
@ -264,7 +326,14 @@ var Path = function ( pathCache, folder, tableRow ) {
|
||||||
|
|
||||||
this.updateExtendedHtml = function () {
|
this.updateExtendedHtml = function () {
|
||||||
|
|
||||||
|
if ( this.html.$extended !== undefined && this.html.$extended.data( "status" ) === this.status ) {
|
||||||
|
return this.html.$extended;
|
||||||
|
};
|
||||||
|
|
||||||
var $html = $( "<li class='entry' />" ).data( "path", this );
|
var $html = $( "<li class='entry' />" ).data( "path", this );
|
||||||
|
if ( this.status !== undefined ) {
|
||||||
|
$html.data( "status", this.status );
|
||||||
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$html.addClass( this.isFolder ? "folder" : "file" );
|
$html.addClass( this.isFolder ? "folder" : "file" );
|
||||||
|
@ -339,6 +408,7 @@ var Path = function ( pathCache, folder, tableRow ) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.content = content;
|
this.content = content;
|
||||||
this.treeOpen = true;
|
this.treeOpen = true;
|
||||||
|
pathCache.objectCache[this.absHref] = pathCache.pathToObject( this );
|
||||||
$( "#tree" ).get( 0 ).updateScrollbar( true );
|
$( "#tree" ).get( 0 ).updateScrollbar( true );
|
||||||
this.updateTreeHtml( function() {
|
this.updateTreeHtml( function() {
|
||||||
$( "#tree" ).get( 0 ).updateScrollbar();
|
$( "#tree" ).get( 0 ).updateScrollbar();
|
||||||
|
@ -346,6 +416,7 @@ var Path = function ( pathCache, folder, tableRow ) {
|
||||||
}, this ) );
|
}, this ) );
|
||||||
} else if ( $indicator.hasClass( "open" ) ) {
|
} else if ( $indicator.hasClass( "open" ) ) {
|
||||||
this.treeOpen = false;
|
this.treeOpen = false;
|
||||||
|
pathCache.objectCache[this.absHref] = pathCache.pathToObject( this );
|
||||||
$indicator.removeClass( "open" );
|
$indicator.removeClass( "open" );
|
||||||
$( "#tree" ).get( 0 ).updateScrollbar( true );
|
$( "#tree" ).get( 0 ).updateScrollbar( true );
|
||||||
$html.find( "> ul.content" ).slideUp( function() {
|
$html.find( "> ul.content" ).slideUp( function() {
|
||||||
|
@ -353,6 +424,7 @@ var Path = function ( pathCache, folder, tableRow ) {
|
||||||
} );
|
} );
|
||||||
} else {
|
} else {
|
||||||
this.treeOpen = true;
|
this.treeOpen = true;
|
||||||
|
pathCache.objectCache[this.absHref] = pathCache.pathToObject( this );
|
||||||
$indicator.addClass( "open" );
|
$indicator.addClass( "open" );
|
||||||
$( "#tree" ).get( 0 ).updateScrollbar( true );
|
$( "#tree" ).get( 0 ).updateScrollbar( true );
|
||||||
$html.find( "> ul.content" ).slideDown( function() {
|
$html.find( "> ul.content" ).slideDown( function() {
|
||||||
|
|
|
@ -6,12 +6,27 @@
|
||||||
// @include "inc/h5ai.js"
|
// @include "inc/h5ai.js"
|
||||||
// @include "inc/tree.js"
|
// @include "inc/tree.js"
|
||||||
|
|
||||||
|
|
||||||
|
var Timer = function () {
|
||||||
|
|
||||||
|
this.start = new Date().getTime();;
|
||||||
|
this.last = this.start;
|
||||||
|
this.log = function ( label ) {
|
||||||
|
var now = new Date().getTime();
|
||||||
|
console.log( "timer", label, "+" + (now - this.last), "=" + (now - this.start) );
|
||||||
|
this.last = now;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
$.timer = new Timer();
|
||||||
|
|
||||||
|
|
||||||
/*******************************
|
/*******************************
|
||||||
* create
|
* create
|
||||||
*******************************/
|
*******************************/
|
||||||
|
|
||||||
|
$.timer.log( "start pathcache" );
|
||||||
var pathCache = new PathCache();
|
var pathCache = new PathCache();
|
||||||
|
$.timer.log( "end pathcache" );
|
||||||
var h5ai = new H5ai( h5aiOptions, h5aiLangs, pathCache );
|
var h5ai = new H5ai( h5aiOptions, h5aiLangs, pathCache );
|
||||||
var tree = new Tree( pathCache, h5ai );
|
var tree = new Tree( pathCache, h5ai );
|
||||||
|
|
||||||
|
@ -30,11 +45,12 @@
|
||||||
|
|
||||||
$( function() {
|
$( function() {
|
||||||
h5ai.init();
|
h5ai.init();
|
||||||
tree.init();
|
tree.init();
|
||||||
|
|
||||||
// just for testing, resets the local cache /////////
|
// just for testing, resets the local cache /////////
|
||||||
$( ".l10n-footerUsing" ).click( function () {
|
$( ".l10n-footerUsing" ).click( function () {
|
||||||
pathCache.cache = {};
|
pathCache.cache = {};
|
||||||
|
pathCache.objectCache = {};
|
||||||
pathCache.storeCache();
|
pathCache.storeCache();
|
||||||
} );
|
} );
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
|
|
|
@ -1,146 +0,0 @@
|
||||||
################################
|
|
||||||
# h5ai 0.11
|
|
||||||
# customized .htaccess
|
|
||||||
################################
|
|
||||||
|
|
||||||
|
|
||||||
# Options +Indexes
|
|
||||||
# Options +FollowSymLinks
|
|
||||||
|
|
||||||
|
|
||||||
<IfModule headers_module>
|
|
||||||
|
|
||||||
################################
|
|
||||||
# cache images for 52 weeks
|
|
||||||
################################
|
|
||||||
|
|
||||||
<FilesMatch "\.png$">
|
|
||||||
Header set Cache-Control "max-age=31449600, public"
|
|
||||||
</FilesMatch>
|
|
||||||
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
|
|
||||||
################################
|
|
||||||
# style auto index
|
|
||||||
################################
|
|
||||||
|
|
||||||
################################
|
|
||||||
# IMPORTANT FOR XAMPP
|
|
||||||
# if you're running XAMPP you might need to replace the
|
|
||||||
# following line with
|
|
||||||
# <IfModule autoindex_color_module>
|
|
||||||
################################
|
|
||||||
<IfModule autoindex_module>
|
|
||||||
|
|
||||||
################################
|
|
||||||
# uncomment the following line to force directory listing
|
|
||||||
# even for directories with valid index files
|
|
||||||
################################
|
|
||||||
|
|
||||||
# DirectoryIndex IGNORE-DEFAULT-INDEX-FILES
|
|
||||||
|
|
||||||
|
|
||||||
################################
|
|
||||||
# h5ai header and footer
|
|
||||||
################################
|
|
||||||
|
|
||||||
HeaderName /h5ai/header.html
|
|
||||||
ReadmeName /h5ai/footer.html
|
|
||||||
|
|
||||||
|
|
||||||
################################
|
|
||||||
# hide h5ai folder and config files from index
|
|
||||||
################################
|
|
||||||
|
|
||||||
IndexIgnore h5ai h5ai.header.html h5ai.footer.html
|
|
||||||
|
|
||||||
|
|
||||||
################################
|
|
||||||
# table options
|
|
||||||
################################
|
|
||||||
|
|
||||||
IndexOrderDefault Ascending Name
|
|
||||||
|
|
||||||
IndexOptions Type=text/html;h5ai=0.11
|
|
||||||
IndexOptions Charset=UTF-8
|
|
||||||
IndexOptions FancyIndexing
|
|
||||||
IndexOptions HTMLTable
|
|
||||||
IndexOptions XHTML
|
|
||||||
IndexOptions SuppressHTMLPreamble
|
|
||||||
IndexOptions SuppressRules
|
|
||||||
IndexOptions SuppressDescription
|
|
||||||
IndexOptions FoldersFirst
|
|
||||||
IndexOptions IgnoreCase
|
|
||||||
IndexOptions IconsAreLinks
|
|
||||||
IndexOptions VersionSort
|
|
||||||
IndexOptions NameWidth=*
|
|
||||||
|
|
||||||
|
|
||||||
################################
|
|
||||||
# icon mapping
|
|
||||||
################################
|
|
||||||
|
|
||||||
AddIcon /h5ai/icons/16x16/parent.png ..
|
|
||||||
AddIcon /h5ai/icons/16x16/folder.png ^^DIRECTORY^^
|
|
||||||
AddIcon /h5ai/icons/16x16/blank.png ^^BLANKICON^^
|
|
||||||
|
|
||||||
AddIcon /h5ai/icons/16x16/readme.png README
|
|
||||||
AddIcon /h5ai/icons/16x16/copying.png COPYING LICENSE
|
|
||||||
AddIcon /h5ai/icons/16x16/install.png INSTALL
|
|
||||||
AddIcon /h5ai/icons/16x16/authors.png AUTHORS
|
|
||||||
AddIcon /h5ai/icons/16x16/log.png LOG Log log
|
|
||||||
|
|
||||||
AddIcon /h5ai/icons/16x16/css.png .less
|
|
||||||
AddIcon /h5ai/icons/16x16/script.png .conf .ini .sh .shar .csh .ksh .tcl
|
|
||||||
AddIcon /h5ai/icons/16x16/makefile.png .pom pom.xml build.xml
|
|
||||||
AddIcon /h5ai/icons/16x16/bin.png .so .o
|
|
||||||
|
|
||||||
AddIcon /h5ai/icons/16x16/archive.png .tar.gz .tgz .tar.bz2
|
|
||||||
AddIcon /h5ai/icons/16x16/zip.png .zip .Z .z .jar .war .gz .bz2
|
|
||||||
AddIcon /h5ai/icons/16x16/tar.png .tar
|
|
||||||
AddIcon /h5ai/icons/16x16/pdf.png .pdf
|
|
||||||
AddIcon /h5ai/icons/16x16/deb.png .deb
|
|
||||||
AddIcon /h5ai/icons/16x16/rpm.png .rpm
|
|
||||||
AddIcon /h5ai/icons/16x16/cd.png .iso .cue
|
|
||||||
|
|
||||||
AddIconByType /h5ai/icons/16x16/png.png image/png
|
|
||||||
AddIconByType /h5ai/icons/16x16/jpg.png image/jpeg
|
|
||||||
AddIconByType /h5ai/icons/16x16/gif.png image/gif
|
|
||||||
AddIconByType /h5ai/icons/16x16/ico.png image/x-icon
|
|
||||||
AddIconByType /h5ai/icons/16x16/bmp.png image/x-ms-bmp
|
|
||||||
|
|
||||||
AddIconByType /h5ai/icons/16x16/html.png text/html
|
|
||||||
AddIconByType /h5ai/icons/16x16/css.png text/css
|
|
||||||
AddIconByType /h5ai/icons/16x16/xml.png application/xml
|
|
||||||
AddIconByType /h5ai/icons/16x16/js.png application/javascript application/json
|
|
||||||
AddIconByType /h5ai/icons/16x16/php.png application/x-httpd-php
|
|
||||||
|
|
||||||
AddIconByType /h5ai/icons/16x16/py.png text/x-python
|
|
||||||
AddIconByType /h5ai/icons/16x16/rb.png application/x-ruby
|
|
||||||
AddIconByType /h5ai/icons/16x16/java.png text/x-java
|
|
||||||
AddIconByType /h5ai/icons/16x16/cpp.png text/x-c++src
|
|
||||||
AddIconByType /h5ai/icons/16x16/hpp.png text/x-c++hdr
|
|
||||||
AddIconByType /h5ai/icons/16x16/c.png text/x-csrc
|
|
||||||
AddIconByType /h5ai/icons/16x16/h.png text/x-chdr
|
|
||||||
|
|
||||||
AddIconByType /h5ai/icons/16x16/pdf.png application/pdf
|
|
||||||
|
|
||||||
AddIconByType /h5ai/icons/16x16/rtf.png text/rtf application/rtf
|
|
||||||
AddIconByType /h5ai/icons/16x16/tex.png text/x-tex
|
|
||||||
AddIconByType /h5ai/icons/16x16/makefile.png text/x-makefile
|
|
||||||
|
|
||||||
AddIconByType /h5ai/icons/16x16/bin.png application/java-vm
|
|
||||||
AddIconByType /h5ai/icons/16x16/exe.png application/x-executable application/x-msdos-program
|
|
||||||
|
|
||||||
AddIconByType /h5ai/icons/16x16/text.png text/*
|
|
||||||
AddIconByType /h5ai/icons/16x16/image.png image/*
|
|
||||||
AddIconByType /h5ai/icons/16x16/audio.png audio/*
|
|
||||||
AddIconByType /h5ai/icons/16x16/video.png video/*
|
|
||||||
|
|
||||||
AddIconByEncoding /h5ai/icons/16x16/zip.png x-compress x-gzip x-bzip2
|
|
||||||
|
|
||||||
DefaultIcon /h5ai/icons/16x16/unknown.png
|
|
||||||
|
|
||||||
</IfModule>
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
<!-- generated code ends here -->
|
|
||||||
</section>
|
|
||||||
<section id="extended"></section>
|
|
||||||
<footer></footer>
|
|
||||||
</section>
|
|
||||||
<section id="tree"></section>
|
|
||||||
<footer>
|
|
||||||
<a id="html5" href="http://www.w3.org/html/logo/" target="_blank" title="HTML5 semantics, storage & CSS3">
|
|
||||||
<img class="logo" src="/h5ai/images/html5.png" alt="html5" />
|
|
||||||
<img class="techclass" src="/h5ai/images/html5-semantics.png" alt="html5-semantics" />
|
|
||||||
<img class="techclass" src="/h5ai/images/html5-storage.png" alt="html5-storage" />
|
|
||||||
<img class="techclass" src="/h5ai/images/html5-css3.png" alt="html5-css3" />
|
|
||||||
</a>
|
|
||||||
<a href="http://larsjung.de/h5ai" target="_blank" title="h5ai project page">h5ai 0.11</a>
|
|
||||||
<span class="l10n-footerUsing">using</span>
|
|
||||||
<a href="http://tiheum.deviantart.com/art/Faenza-Icons-173323228" target="_blank" title="icon theme for Gnome">Faenza icons</a>
|
|
||||||
</footer>
|
|
||||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
|
||||||
<script>window.jQuery || document.write( '<script src="/h5ai/js/lib/jquery.min.js"><\/script>' )</script>
|
|
||||||
<script src="/h5ai/options.js"></script>
|
|
||||||
<script src="/h5ai/js/main.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,35 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="no-js">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Directory index · styled with h5ai</title>
|
|
||||||
<meta name="h5ai-version" content="h5ai 0.11">
|
|
||||||
<meta name="description" content="Directory index styled with h5ai (http://larsjung.de/h5ai)">
|
|
||||||
<meta name="keywords" content="directory, index, autoindex, h5ai">
|
|
||||||
<link rel="shortcut icon" type="image/png" href="/h5ai/images/h5ai-16x16.png">
|
|
||||||
<link rel="apple-touch-icon" type="image/png" href="/h5ai/images/h5ai-48x48.png">
|
|
||||||
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/h5ai/css/main.css">
|
|
||||||
<script src="/h5ai/js/lib/modernizr.min.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav class="clearfix">
|
|
||||||
<span class="jsDisabledFallback">Directory index · JavaScript is disabled</span>
|
|
||||||
<ul>
|
|
||||||
<li id="viewicons" class="view">
|
|
||||||
<a href="#"><img src="/h5ai/images/view-icons.png" alt="view-icons" /><span class="l10n-viewIcons">icons</span></a>
|
|
||||||
</li>
|
|
||||||
<li id="viewdetails" class="view" >
|
|
||||||
<a href="#"><img src="/h5ai/images/view-details.png" alt="view-details" /><span class="l10n-viewDetails">details</span></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
<section id="content">
|
|
||||||
<header></header>
|
|
||||||
<section id="table" class="jsDisabledFallback">
|
|
||||||
<!--
|
|
||||||
The following code was generated by apache's autoindex module. It is not valid HTML 5 for the
|
|
||||||
reason, that 'align' and 'valign' attributes on the td element are obsolete. Both of them are
|
|
||||||
removed via javascript. The actual page should render as perfect HTML 5, even if the produced
|
|
||||||
source is not valid HTML 5.
|
|
||||||
-->
|
|
Before Width: | Height: | Size: 551 B |
Before Width: | Height: | Size: 554 B |
Before Width: | Height: | Size: 492 B |
Before Width: | Height: | Size: 551 B |
Before Width: | Height: | Size: 227 B |
Before Width: | Height: | Size: 663 B |
Before Width: | Height: | Size: 554 B |
Before Width: | Height: | Size: 506 B |
Before Width: | Height: | Size: 757 B |
Before Width: | Height: | Size: 699 B |
Before Width: | Height: | Size: 599 B |
Before Width: | Height: | Size: 592 B |
Before Width: | Height: | Size: 671 B |
Before Width: | Height: | Size: 311 B |
Before Width: | Height: | Size: 535 B |
Before Width: | Height: | Size: 679 B |
Before Width: | Height: | Size: 619 B |
Before Width: | Height: | Size: 846 B |
Before Width: | Height: | Size: 637 B |
Before Width: | Height: | Size: 441 B |
Before Width: | Height: | Size: 587 B |
Before Width: | Height: | Size: 409 B |
Before Width: | Height: | Size: 655 B |
Before Width: | Height: | Size: 551 B |
Before Width: | Height: | Size: 504 B |
Before Width: | Height: | Size: 530 B |
Before Width: | Height: | Size: 770 B |
Before Width: | Height: | Size: 792 B |
Before Width: | Height: | Size: 671 B |
Before Width: | Height: | Size: 788 B |
Before Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 675 B |
Before Width: | Height: | Size: 540 B |
Before Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 614 B |
Before Width: | Height: | Size: 614 B |
Before Width: | Height: | Size: 494 B |
Before Width: | Height: | Size: 799 B |
Before Width: | Height: | Size: 757 B |
Before Width: | Height: | Size: 610 B |
Before Width: | Height: | Size: 679 B |
Before Width: | Height: | Size: 629 B |
Before Width: | Height: | Size: 622 B |
Before Width: | Height: | Size: 743 B |
Before Width: | Height: | Size: 621 B |
Before Width: | Height: | Size: 781 B |
Before Width: | Height: | Size: 384 B |
Before Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 627 B |
Before Width: | Height: | Size: 613 B |
Before Width: | Height: | Size: 586 B |
Before Width: | Height: | Size: 510 B |
Before Width: | Height: | Size: 406 B |
Before Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 463 B |
Before Width: | Height: | Size: 654 B |
Before Width: | Height: | Size: 556 B |
Before Width: | Height: | Size: 556 B |
Before Width: | Height: | Size: 739 B |
Before Width: | Height: | Size: 585 B |
Before Width: | Height: | Size: 617 B |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 997 B |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.5 KiB |