Refactored, minor fixes.

This commit is contained in:
Lars Jung 2011-06-16 21:20:18 +02:00
parent c045f0dc77
commit 490fe36947
5 changed files with 188 additions and 133 deletions

View File

@ -33,15 +33,24 @@ Install
Changelog
---------
### v0.2.2
*2011-06-16*
* refactored a lot, added some comments
* included fixes from [NumEricR](http://github.com/NumEricR/h5ai)
* added top/bottom message support, only basicly styled
### v0.2.1
*2011-06-16*
* fixed croped filenames
* fixed missing .png extension in header
* removed .html extension from Header-/ReadmeName references in dot.htaccess
* added some color to the links
* added changelog
### v0.2
*2011-06-15*

View File

@ -1,8 +1,7 @@
<!-- generated code ends here -->
</section>
<section id="icons">
</section>
<section id="h5ai-bottom"></section>
<section id="icons"></section>
<section id="bottom"></section>
</section>
<footer>
<a id="html5" href="http://www.w3.org/html/logo/" target="_blank" title="HTML5 semantics, storage & CSS3">
@ -11,7 +10,7 @@
<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://github.com/larrrs/h5ai" target="_blank" title="h5ai v0.2.1">h5ai</a>
<a href="http://github.com/larrrs/h5ai" target="_blank" title="h5ai v0.2.2">h5ai</a>
using
<a href="http://html5boilerplate.com" target="_blank" title="a rock-solid default for HTML5 awesome">HTML5 Boilerplate</a>
and

View File

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<title>Index</title>
<title>Index - styled with h5ai</title>
<link rel="shortcut icon" href="/h5ai/icons/folder.png" />
<link rel="apple-touch-icon" href="/h5ai/images/folder.png">
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold">
@ -18,7 +18,7 @@
<div class="clearfix"></div>
</nav>
<section id="content">
<section id="h5ai-top"></section>
<section id="top"></section>
<section id="details">
<!--
The following code was generated by apache's autoindex module. It is not valid HTML 5 for the

View File

@ -21,15 +21,16 @@ a:hover {
nav {
position: fixed;
z-index: 1;
width: 100%;
left: 0px;
top: 0px;
left: 0;
top: 0;
font-size: 0.85em;
background-color: rgb(240,240,240);
border-bottom: 1px solid rgb(225,225,225);
-webkit-box-shadow: 0px 0px 30px #555;
-moz-box-shadow: 0px 0px 30px #555;
box-shadow: 0px 0px 30px #555;
-webkit-box-shadow: 0 0 30px #555;
-moz-box-shadow: 0 0 30px #555;
box-shadow: 0 0 30px #555;
}
nav li {
cursor: pointer;
@ -45,15 +46,14 @@ nav li:hover, nav li:hover a {
opacity: 1.0;
}
nav a {
display: block
display: block;
height: 30px;
line-height: 30px;
padding: 4px 10px;
padding: 0 10px;
}
nav img {
vertical-align: bottom;
padding-right: 6px;
padding-bottom: 6px;
padding: 0 6px 6px 0;
}
nav li.crumb {
float: left;
@ -65,50 +65,46 @@ nav li.view {
}
section#h5ai-top {
#top {
display: none;
padding: 0px 0px 10px 0px;
margin: 0px 0px 80px 0px;
border-bottom: 1px solid #999;
padding-bottom: 10px;
margin-bottom: 80px;
border-bottom: 2px dashed #ddd;
}
#bottom {
display: none;
padding-top: 10px;
margin-top: 80px;
border-top: 2px dashed #ddd;
}
section#h5ai-bottom {
display: none;
padding: 10px 0px 0px 0px;
margin: 80px 0px 0px 0px;
border-top: 1px solid #999;
}
section#content {
#content {
max-width: 980px;
margin: 0px auto;
margin: 0 auto;
}
#details {
display: none;
}
table {
#details table {
display: block;
width: 100%;
border-collapse: collapse;
}
table {
display: block;
}
table tr.entry:hover, table tr.entry:hover a {
#details tr.entry:hover, #details tr.entry:hover a {
background-color: rgb(235,245,250);
background-color: #f0f0f0;
color: #e80;
cursor: pointer;
}
table th, table td {
#details th, #details td {
padding: 3px 6px;
text-align: left;
border: none;
}
table th {
#details th {
padding-bottom: 18px;
opacity: 0.4;
-webkit-transition: all 0.2s ease-in-out;
@ -116,57 +112,55 @@ table th {
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
table th.header:hover, table th.header:hover a {
#details th.header:hover, #details th.header:hover a {
color: #555;
cursor: pointer;
opacity: 0.9;
}
table th a, table th a:visited {
#details th a, #details th a:visited {
color: #555;
font-weight: normal;
}
table th a img {
#details th a img {
width: 12px;
height: 12px;
padding: 0px 8px;
padding: 0 8px;
}
table td {
#details td {
border: 1px solid #ddd;
border-left: 0px;
border-right: 0px;
border-left: none;
border-right: none;
}
table .icon {
#details .icon {
text-align: center;
width: 16px;
}
table .icon img {
#details .icon img {
width: 16px;
height: 16px;
padding-top: 2px;
}
table .name {
#details .name {
width: 682px;
max-width: 682px;
overflow: hidden;
white-space: nowrap;
}
table .date {
#details .date {
text-align: right;
width: 160px;
min-width: 160px;
white-space: nowrap;
}
table .size {
#details .size {
text-align: right;
width: 70px;
min-width: 70px;
white-space: nowrap;
}
div#empty {
#details .empty {
text-align: center;
margin: 50px 0px;
margin: 50px 0;
color: #ddd;
font-size: 5em;
font-weight: bold;
@ -194,31 +188,32 @@ div#empty {
#icons .entry:hover {
color: #e80;
border-color: #eee;
-webkit-box-shadow: 0px 0px 20px #555;
-moz-box-shadow: 0px 0px 20px #555;
box-shadow: 0px 0px 20px #999;
-webkit-box-shadow: 0 0 20px #555;
-moz-box-shadow: 0 0 20px #555;
box-shadow: 0 0 20px #999;
}
#icons .entry img {
width: 48px;
height: 48px;
margin: 0px 0px 8px 0px;
margin-bottom: 8px;
}
footer {
position: fixed;
z-index: 1;
width: 100%;
left: 0px;
bottom: 0px;
padding: 10px 0px;
left: 0;
bottom: 0;
padding: 10px 0;
border-top: 1px solid rgb(225,225,225);
background-color: rgb(240,240,240);
color: #999;
font-size: 0.85em;
text-align: center;
-webkit-box-shadow: 0px 0px 30px #555;
-moz-box-shadow: 0px 0px 30px #555;
box-shadow: 0px 0px 30px #555;
-webkit-box-shadow: 0 0 30px #555;
-moz-box-shadow: 0 0 30px #555;
box-shadow: 0 0 30px #555;
}
footer a, footer a:visited {
color: #555;

View File

@ -1,35 +1,71 @@
( function( $ ) {
/*******************************
* init after dom load
*******************************/
$( function() {
checkViewmode();
addBreadcrumb();
addTopAndBottom();
initViews();
} );
/*******************************
* config
*******************************/
var columnClasses = [ "icon", "name", "date", "size" ];
var defaultSortOrder = "C=N;O=A"
var h5aiPath = "/h5ai"
var views = [ "details", "icons" ];
var viewmodes = [ "details", "icons" ];
$( function() {
init();
} );
function init () {
/*******************************
* local stored viewmode
*******************************/
checkView();
convertToHtml5();
addBreadcrumb();
addColumnClasses();
initTableRows();
addSortOrderIcons();
addTopAndBottom();
initViews();
function getViewmode() {
var viewmode = localStorage.getItem( "h5ai.viewmode" );
if ( $.inArray( viewmode, viewmodes ) ) {
return viewmode;
};
return viewmodes[0];
};
function convertToHtml5() {
$( "td" ).removeAttr( "align" ).removeAttr( "valign" );
function setViewmode( viewmode ) {
localStorage.setItem( "h5ai.viewmode", viewmode );
checkViewmode();
};
function checkViewmode() {
if ( getViewmode() === "icons" ) {
$( "#details" ).hide();
$( "#icons" ).show();
} else {
$( "#details" ).show();
$( "#icons" ).hide();
}
};
/*******************************
* breadcrumb
*******************************/
function addBreadcrumb() {
@ -42,7 +78,7 @@
var part = parts[idx];
if ( part !== "" ) {
path += part + "/";
$ul.append( $( "<li class=\"crumb\"><a href='" + path + "'><img src='" + h5aiPath + "/icons/crumb.png' alt='>' />" + part + "</a></li>" ) );
$ul.append( $( "<li class='crumb'><a href='" + path + "'><img src='" + h5aiPath + "/icons/crumb.png' alt='>' />" + part + "</a></li>" ) );
}
}
@ -55,6 +91,18 @@
};
/*******************************
* details view
*******************************/
function convertToHtml5() {
$( "#details td" ).removeAttr( "align" ).removeAttr( "valign" );
};
function getColumnClass( idx ) {
if ( idx >= 0 && idx < columnClasses.length ) {
@ -66,7 +114,7 @@
function addColumnClasses() {
$( "tr" ).each( function () {
$( "#details tr" ).each( function () {
var colIdx = 0;
$( this ).find( "th,td" ).each( function () {
$( this ).addClass( getColumnClass( colIdx ) );
@ -78,19 +126,19 @@
function initTableRows() {
$( "th a" ).closest( "th" )
$( "#details th a" ).closest( "th" )
.addClass( "header" )
.click( function () {
document.location.href = $( this ).find( "a" ).attr( "href" );
} );
$( "td.name a" ).closest( "tr" )
$( "#details td.name a" ).closest( "tr" )
.addClass( "entry" )
.click( function () {
document.location.href = $( this ).find( "td.name a" ).attr( "href" );
} );
$dataRows = $( "td" ).closest( "tr" );
$dataRows = $( "#details td" ).closest( "tr" );
if ( $dataRows.size() === 0 || $dataRows.size() === 1 && $dataRows.find( "td.name a" ).text() === "Parent Directory" ) {
$( "#details" ).append( $( "<div id=\"empty\">empty</div>" ) );
$( "#details" ).append( $( "<div class='empty'>empty</div>" ) );
}
};
@ -108,86 +156,90 @@
$icon = $( "<img src='" + h5aiPath + "/icons/descending.png' class='sort' alt='descending' />" );
}
if ( order.indexOf( "C=N" ) >= 0 ) {
$( "th.name a" ).append( $icon );
$( "#details th.name a" ).append( $icon );
} else if ( order.indexOf( "C=M" ) >= 0 ) {
$( "th.date a" ).prepend( $icon );
$( "#details th.date a" ).prepend( $icon );
} else if ( order.indexOf( "C=S" ) >= 0 ) {
$( "th.size a" ).prepend( $icon );
$( "#details th.size a" ).prepend( $icon );
}
};
function addTopAndBottom() {
function initDetailsView() {
$( "#h5ai-top" ).load( "h5ai.top.html", function( response, status, xhr ) {
if (status != "error") {
$( "#h5ai-top" ).show();
}
} );
$( "#h5ai-bottom" ).load( "h5ai.bottom.html", function( response, status, xhr ) {
if (status != "error") {
$( "#h5ai-bottom" ).show();
}
} );
convertToHtml5();
addColumnClasses();
initTableRows();
addSortOrderIcons();
};
function checkView() {
if ( getView() === "icons" ) {
$( "#details" ).hide();
$( "#icons" ).show();
} else {
$( "#details" ).show();
$( "#icons" ).hide();
}
};
function getView() {
var view = localStorage.getItem( "h5ai.view" );
if ( $.inArray( view, views ) ) {
return view;
};
return views[0];
};
/*******************************
* icons view
*******************************/
function setView( view ) {
localStorage.setItem( "h5ai.view", view );
checkView();
};
function initViews() {
function initIconsView() {
var $div = $( "<div></div>" );
$( "td.name a" ).closest( "tr" ).each( function () {
$( "#details td.name a" ).closest( "tr" ).each( function () {
var $tr = $( this );
var icon = $tr.find( "td.icon img" ).attr( "src" ).replace( "icon", "image" );
var name = $tr.find( "td.name a" ).text();
$( "<div class=\"entry\"></div>" )
.append( $( "<img src=\"" + icon + "\" />" ) )
.append( $( "<div class=\"label\">" + name + "</div>" ) )
.append( $( "<img src='" + icon + "' />" ) )
.append( $( "<div class='label'>" + name + "</div>" ) )
.click( function () {
document.location.href = $tr.find( "td.name a" ).attr( "href" );
} ).
appendTo( $div );
} );
$div.append( $( "<div class=\"clearfix\"></div>" ) );
$div.append( $( "<div class='clearfix'></div>" ) );
$( "#icons" ).append( $div );
};
/*******************************
* init views
*******************************/
function initViews() {
initDetailsView();
initIconsView();
$( "#viewdetails" ).closest( "li" )
.click( function () {
setView( "details" );
setViewmode( "details" );
} );
$( "#viewicons" ).closest( "li" )
.click( function () {
setView( "icons" );
setViewmode( "icons" );
} );
};
/*******************************
* top and bottom messages
*******************************/
function addTopAndBottom() {
$( "#top" ).load( "h5ai.top.html", function( response, status, xhr ) {
if (status != "error") {
$( "#top" ).show();
}
} );
$( "#bottom" ).load( "h5ai.bottom.html", function( response, status, xhr ) {
if (status != "error") {
$( "#bottom" ).show();
}
} );
};
} )( jQuery );