Merge branch 'develop'

This commit is contained in:
Lars Jung 2013-09-04 16:13:38 +02:00
commit 96315dc365
279 changed files with 2225 additions and 1741 deletions

View File

@ -1,31 +1,26 @@
# h5ai
**a modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee**
**h5ai** is a modern HTTP web server index for Apache httpd, lighttpd, nginx and Cherokee.
The preferred way to report a bug or make a feature request is to
create [a new issue](http://github.com/lrsjng/h5ai/issues/new) on GitHub!
create [a new issue](https://github.com/lrsjng/h5ai/issues/new) on GitHub!
## Install
( **note:** please don't use files from the `src` folder for installation,
they need to be preprocessed to work correctly )
**Note:** please don't use files from the `src` folder for installation,
they need to be preprocessed to work correctly!
You'll find a preprocessed package, as well as detailed installation
instructions on the [project page](http://larsjung.de/h5ai/).
## Build
( there are repositories for the latest [releases](http://release.larsjung.de/h5ai/) and [dev builds](http://release.larsjung.de/h5ai/dev/) )
If you want to build **h5ai** yourself you need to install the build tool [fQuery](http://larsjung.de/fquery/) first:
There are repositories for the latest [releases](http://release.larsjung.de/h5ai/) and [dev builds](http://release.larsjung.de/h5ai/dev/).
But if you want to build **h5ai** yourself you need to install the build tool [fQuery](http://larsjung.de/fquery/) first:
> npm install -g fquery
This will install fQuery and its command line tool `makejs`. Run `makejs --help` to see if everything
worked fine.
To clone and build the project run the following commands.
worked fine. To clone and build the project run the following commands.
You'll find a new directory `build` including a fresh zipball.
> git clone git://github.com/lrsjng/h5ai.git
@ -35,7 +30,7 @@ You'll find a new directory `build` including a fresh zipball.
## License
**h5ai** is provided under the terms of the [MIT License](http://github.com/lrsjng/h5ai/blob/develop/LICENSE.md).
**h5ai** is provided under the terms of the [MIT License](https://github.com/lrsjng/h5ai/blob/develop/LICENSE.md).
It profits from these great projects:
[Faenza icon set](http://tiheum.deviantart.com/art/Faenza-Icons-173323228) (GPL),
@ -44,10 +39,10 @@ It profits from these great projects:
[jQuery](http://jquery.com) (MIT),
[jQuery.filedrop](http://www.github.com/weixiyen/jquery-filedrop) (MIT),
[jQuery.fracs](http://larsjung.de/fracs/) (MIT),
[jQuery.mousewheel](http://github.com/brandonaaron/jquery-mousewheel) (MIT),
[jQuery.mousewheel](https://github.com/brandonaaron/jquery-mousewheel) (MIT),
[jQuery.qrcode](http://larsjung.de/qrcode/) (MIT),
[jQuery.scrollpanel](http://larsjung.de/scrollpanel/) (MIT),
[markdown-js](http://github.com/evilstreak/markdown-js) (MIT),
[markdown-js](https://github.com/evilstreak/markdown-js) (MIT),
[Modernizr](http://www.modernizr.com) (MIT/BSD),
[modulejs](http://larsjung.de/modulejs/) (MIT),
[Moment.js](http://momentjs.com) (MIT),
@ -56,7 +51,26 @@ It profits from these great projects:
## Changelog
( **h5ai** uses [semantic versioning](http://semver.org/) )
**h5ai** uses [semantic versioning](http://semver.org/).
### v0.24.0 - *2013-09-04*
* updates image and text preview
* adds variable icon sizes
* adds optional natural sort of items
* adds optional checkboxes to select items
* adds text preview modes: none, fixed, markdown
* optionally hide folders in main view
* makes use of EXIF thumbnails optional
* fixes file deletion of multiple files
* fixes `setParentFolderLabels = false`
* fixes shell-arg and RegExp escape issues
* cleans code
* updates info page `/_h5ai`
* adds `aiff` to `audio` types
* adds `da` translation by Ronnie Milbo
* updates to `pl` translation by Mark
### v0.23.0 - *2013-07-21*
@ -127,11 +141,11 @@ It profits from these great projects:
* improves filter (now ignorecase, now only checks if chars in right order)
* adds keyboard support to image preview (space, enter, backspace, left, right, up, down, f, esc)
* adds text file preview and highlighting with [SyntaxHighlighter](http://alexgorbatchev.com/SyntaxHighlighter/) (same keys as img preview)
* adds Markdown preview with [markdown-js](http://github.com/evilstreak/markdown-js)
* adds Markdown preview with [markdown-js](https://github.com/evilstreak/markdown-js)
* adds new type `markdown`
* changes language code `gr` to `el`
* adds localization for filter placeholder
* adds `hu` translation by [Rodolffo](http://github.com/Rodolffo)
* adds `hu` translation by [Rodolffo](https://github.com/Rodolffo)
* updates to [jQuery.qrcode](http://larsjung.de/qrcode/) 0.2
* updates to [jQuery.scrollpanel](http://larsjung.de/scrollpanel/) 0.1
* updates to [modulejs](http://larsjung.de/modulejs/) 0.2
@ -168,13 +182,13 @@ It profits from these great projects:
* 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
* fixes mousewheel problems, updates [jQuery.mousewheel](https://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 [vBm](http://github.com/vBm)
* adds `gr` translation by [xhmikosr](http://github.com/xhmikosr)
* adds `ro` translation by [Jakob Cosoroabă](https://github.com/midday)
* adds `ja` translation by [metasta](https://github.com/metasta)
* adds `nb` translation by [Sindre Sorhus](https://github.com/sindresorhus)
* adds `sr` translation by [vBm](https://github.com/vBm)
* adds `gr` translation by [xhmikosr](https://github.com/xhmikosr)
### v0.18 - *2012-02-24*
@ -194,7 +208,7 @@ It profits from these great projects:
* improves url hashes
* updates year in `LICENSE.TXT`
* updates es translation
* adds `zh-tw` translation by [Yao Wei](http://github.com/medicalwei)
* adds `zh-tw` translation by [Yao Wei](https://github.com/medicalwei)
* updates `zh-cn` translation
@ -230,7 +244,7 @@ It profits from these great projects:
### v0.15.2 - *2011-09-18*
* adds `it` translation by [Salvo Gentile](http://github.com/SalvoGentile) and [Marco Patriarca](http://github.com/Fexys)
* adds `it` translation by [Salvo Gentile](https://github.com/SalvoGentile) and [Marco Patriarca](https://github.com/Fexys)
* switches build process from scripp to wepp
@ -249,7 +263,7 @@ It profits from these great projects:
### v0.14.1 - *2011-09-01*
* display meta information in bottom bar (icon view)
* adds `zh-cn` translation by [Dongsheng Cai](http://github.com/dongsheng)
* adds `zh-cn` translation by [Dongsheng Cai](https://github.com/dongsheng)
* adds `pl` translation by Radosław Zając
* adds `ru` translation by Богдан Илюхин
@ -283,13 +297,13 @@ It profits from these great projects:
* changes value of option `lang` from `undefined` to `null`
* adds some new keys to `h5aiLangs`
* adds browser caching rules for css and js
* adds `pt` translation by [Jonnathan](http://github.com/jonnsl)
* adds `pt` translation by [Jonnathan](https://github.com/jonnsl)
* adds `bg` translation by George Andonov
### v0.12.3 - *2011-07-30*
* adds `tr` translation by [Batuhan Icoz](http://github.com/batuhanicoz)
* adds `tr` translation by [Batuhan Icoz](https://github.com/batuhanicoz)
### v0.12.2 - *2011-07-30*
@ -325,9 +339,9 @@ It profits from these great projects:
### v0.10 - *2011-07-24*
* fixes problems with XAMPP on Windows (see `dot.htaccess` comments for instructions)
* fixes tree fade-in-fade-out effect for small displays ([issue #6](http://github.com/lrsjng/h5ai/issues/6))
* adds custom scrollbar to tree ([issue #6](http://github.com/lrsjng/h5ai/issues/6))
* fixes broken links caused by URI encoding/decoding ([issue #9](http://github.com/lrsjng/h5ai/issues/9))
* fixes tree fade-in-fade-out effect for small displays ([issue #6](https://github.com/lrsjng/h5ai/issues/6))
* adds custom scrollbar to tree ([issue #6](https://github.com/lrsjng/h5ai/issues/6))
* fixes broken links caused by URI encoding/decoding ([issue #9](https://github.com/lrsjng/h5ai/issues/9))
* adds "empty" to localization (hope Google Translate did a good job here)
@ -337,8 +351,8 @@ It profits from these great projects:
* fixes size of tree view (now there's a ugly scrollbar, hopefully will be fixed)
* refactores js to improve performance and cleaned code
* adds caching for folder status codes and content
* adds `fr` translation by [Nicolas](http://github.com/Nicosmos)
* adds `nl` translation by [Stefan de Konink](http://github.com/skinkie)
* adds `fr` translation by [Nicolas](https://github.com/Nicosmos)
* adds `nl` translation by [Stefan de Konink](https://github.com/skinkie)
* adds `sv` translation by Oscar Carlsson
@ -426,7 +440,7 @@ It profits from these great projects:
### v0.2.2 - *2011-06-16*
* refactores a lot, adds some comments
* includes fixes from [NumEricR](http://github.com/NumEricR)
* includes fixes from [NumEricR](https://github.com/NumEricR)
* adds top/bottom message support, only basicly styled

View File

@ -2,82 +2,49 @@
'use strict';
var path = require('path'),
pkg = require('./package.json'),
root = path.resolve(__dirname),
src = path.join(root, 'src'),
build = path.join(root, 'build'),
jshint = {
// Enforcing Options
bitwise: true,
curly: true,
eqeqeq: true,
forin: true,
latedef: true,
newcap: true,
noempty: true,
plusplus: true,
trailing: true,
undef: true,
// Environments
browser: true,
// Globals
predef: [
'modulejs'
]
},
handlebarsEnv = {
pkg: pkg
},
mapSrc = function (blob) {
return blob.source.replace(src, build).replace(/\.less$/, '.css').replace(/\.jade$/, '');
},
mapRoot = function (blob) {
return blob.source.replace(root, path.join(build, '_h5ai'));
};
module.exports = function (make) {
var Event = make.Event,
var path = require('path'),
pkg = require('./package.json'),
root = path.resolve(__dirname),
src = path.join(root, 'src'),
build = path.join(root, 'build'),
$ = make.fQuery,
moment = make.moment;
mapSrc = $.map.p(src, build).s('.less', '.css').s('.jade', ''),
mapRoot = $.map.p(root, build);
make.version('>=0.8.1');
make.version('>=0.10.0');
make.defaults('build');
make.before(function () {
handlebarsEnv.stamp = moment().format('YYYY-MM-DD HH:mm:ss');
var moment = make.moment();
make.env = {
pkg: pkg,
stamp: moment.format('YYYY-MM-DD HH:mm:ss')
};
$.info({ method: 'before', message: pkg.version + ' ' + make.env.stamp });
});
make.target('check-version', [], 'add git info to dev builds').async(function (done, fail) {
if (!/-dev$/.test(pkg.version)) {
if (!/\+$/.test(pkg.version)) {
done();
return;
}
$.git(root, function (err, result) {
pkg.version += '-' + result.revListOriginMasterHead.length + '-' + result.revParseHead.slice(0, 7);
Event.info({
method: 'check-version',
message: 'version set to ' + pkg.version
});
pkg.version += result.buildSuffix;
$.info({ method: 'check-version', message: 'version set to ' + pkg.version });
done();
});
});
@ -85,45 +52,67 @@ module.exports = function (make) {
make.target('clean', [], 'delete build folder').sync(function () {
$.rmfr($.I_AM_SURE, build);
$.DELETE(build);
});
make.target('lint', [], 'lint all JavaScript files with JSHint').sync(function () {
var jshint = {
// Enforcing Options
bitwise: true,
curly: true,
eqeqeq: true,
forin: true,
latedef: true,
newcap: true,
noempty: true,
plusplus: true,
trailing: true,
undef: true,
// Environments
browser: true
},
globals = {
'modulejs': true
};
$(src + '/_h5ai/client/js: **/*.js, ! lib/**')
.jshint(jshint);
.jshint(jshint, globals);
});
make.target('build', ['check-version'], 'build all updated files').sync(function () {
var header = '/* ' + pkg.name + ' ' + pkg.version + ' - ' + pkg.url + ' */';
$(src + ': _h5ai/client/js/*.js')
.modified(mapSrc, $(src + ': _h5ai/client/js/**'))
.includify()
.uglifyjs()
.write($.OVERWRITE, mapSrc);
.uglifyjs({header: header})
.WRITE(mapSrc);
$(src + ': _h5ai/client/css/*.less')
.modified(mapSrc, $(src + ': _h5ai/client/css/**'))
.less()
.cssmin()
.write($.OVERWRITE, mapSrc);
.cssmin({header: header})
.WRITE(mapSrc);
$(src + ': **/*.jade')
.modified(mapSrc)
.handlebars(handlebarsEnv)
.handlebars(make.env)
.jade()
.write($.OVERWRITE, mapSrc);
.WRITE(mapSrc);
$(src + ': **, ! _h5ai/client/js/**, ! _h5ai/client/css/**, ! **/*.jade')
.modified(mapSrc)
.handlebars(handlebarsEnv)
.write($.OVERWRITE, mapSrc);
.handlebars(make.env)
.WRITE(mapSrc);
$(root + ': README*, LICENSE*')
.modified(mapRoot)
.write($.OVERWRITE, mapRoot);
.WRITE(mapRoot);
});
@ -133,28 +122,28 @@ module.exports = function (make) {
.modified(mapSrc, $(src + ': _h5ai/client/js/**'))
.includify()
// .uglifyjs()
.write($.OVERWRITE, mapSrc);
.WRITE(mapSrc);
$(src + ': _h5ai/client/css/*.less')
.modified(mapSrc, $(src + ': _h5ai/client/css/**'))
.less()
// .cssmin()
.write($.OVERWRITE, mapSrc);
.WRITE(mapSrc);
$(src + ': **/*.jade')
.modified(mapSrc)
.handlebars(handlebarsEnv)
.handlebars(make.env)
.jade()
.write($.OVERWRITE, mapSrc);
.WRITE(mapSrc);
$(src + ': **, ! _h5ai/client/js/**, ! _h5ai/client/css/**, ! **/*.jade')
.modified(mapSrc)
.handlebars(handlebarsEnv)
.write($.OVERWRITE, mapSrc);
.handlebars(make.env)
.WRITE(mapSrc);
$(root + ': README*, LICENSE*')
.modified(mapRoot)
.write($.OVERWRITE, mapRoot);
.WRITE(mapRoot);
});

View File

@ -1,6 +1,6 @@
{
"name": "h5ai",
"version": "0.23.0",
"version": "0.24.0",
"description": "a modern HTTP web server index",
"url": "http://larsjung.de/h5ai/",
"author": "Lars Jung",

View File

@ -7,10 +7,8 @@
left: 0;
bottom: 0;
padding: 6px 0 8px 0;
// .vert-gradient(rgb(241,241,241), rgb(228,228,228));
background-color: @col-widget-back;
border-top: @border-widget;
// .box-shadow(0 -2px 4px 0 rgba(0, 0, 0, 0.15);
color: #999;
text-align: center;
@ -46,7 +44,6 @@
margin-left: 16px;
}
.noBrowserMsg {
display: none;
color: @col-error;
margin-left: 16px;
a, a:active, a:visited {

View File

@ -2,7 +2,7 @@
#content {
max-width: 960px;
margin: 50px auto;
font-size: 16px;
font-size: 15px;
}
#content-header, #content-footer {

View File

@ -1,7 +1,7 @@
#content {
border: 1px dashed #fff;
.border-radius(8px);
border-radius: 8px;
.transition(border-color 0.2s ease-in-out);
&.hint {

View File

@ -54,14 +54,11 @@
}
}
td:nth-child(1), th:nth-child(1) {
text-align: center;
width: 16px;
color: #ccc;
font-size: 0.9em;
width: 24px;
img {
width: 16px;
height: 16px;
width: 24px;
height: 24px;
}
}
td:nth-child(2), th:nth-child(2) {

View File

@ -4,6 +4,7 @@
@col-hover: rgb(29,119,194);
@col-border: rgba(0,0,0,0.05);
@col-border-strong: rgba(0,0,0,0.15);
@col-border-stronger: rgba(0,0,0,0.3);
@col-error: rgb(204,51,51);
@ -16,41 +17,50 @@
@col-widget-back-sel: rgba(255,255,255,0.8);
@col-widget-sep: @col-border;
// @col-sb-back: rgb(210,210,210);
// @col-sb-thumb: rgb(180,180,180);
// @col-sb-thumb-active: rgb(150,150,150);
@col-sb-back: rgba(0,0,0,0.08);
@col-sb-thumb: rgba(0,0,0,0.15);
@col-sb-thumb-active: rgba(0,0,0,0.25);
@border-widget: 1px solid @col-border;
@border-widget-sep: 1px solid @col-widget-sep;
@font-family: Ubuntu, sans-serif;
@font-weight: 300;
@font-family-mono: "Ubuntu Mono", monospace;
html { overflow-y: auto; }
::-moz-selection { background: #68A9FF; color: #fff; text-shadow: none; }
::selection { background: #68A9FF; color: #fff; text-shadow: none; }
.transition (@transition) {
-webkit-transition: @transition;
transition: @transition;
}
.transform (@transform) {
-webkit-transform: @transform;
-ms-transform: @transform;
transform: @transform;
zoom: 1;
}
html {
min-height: 100%;
overflow: auto;
&.js .noJsMsg {
display: none;
}
&.browser .noBrowserMsg {
display: none;
}
}
body {
font-family: @font-family;
// font-weight: 400;
font-size: 13px;
font-weight: @font-weight;
color: @col;
background-color: @col-back;
margin: 30px;
}
html.js .hideOnJs, html.no-js .hideOnNoJs {
display: none;
}
html.no-browser .noBrowserMsg {
display: inline !important;
}

View File

@ -32,15 +32,15 @@ body#h5ai-info {
display: block;
color: #aaa;
.value {
margin-left: 0.5em;
padding: 2px 4px;
.border-radius(4px);
font-family: @font-family-mono;
letter-spacing: 0.1em;
background-color: @col-widget-back;
border: @border-widget;
}
}
code {
margin: 0 0.2em;
padding: 2px 4px;
border-radius: 4px;
font-family: @font-family-mono;
letter-spacing: 0.1em;
background-color: @col-widget-back;
border: @border-widget;
}
h1 {
font-size: 3.6em;
@ -70,7 +70,7 @@ body#h5ai-info {
.test-label {
display: inline-block;
width: 300px;
width: 350px;
}
.test-result {
display: inline-block;
@ -90,7 +90,7 @@ body#h5ai-info {
margin: 4px 0 12px 12px;
font-size: 0.7em;
color: #aaa;
width: 310px;
width: 350px;
line-height: 1.2em;
}
}

View File

@ -9,6 +9,6 @@
padding: 2px 6px 2px 6px;
color: #fff;
background-color: rgba(0, 0, 0, 0.2);
.border-radius(4px);
border-radius: 4px;
text-align: center;
}

View File

@ -1,130 +1,18 @@
#pv-img-overlay {
display: none;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 100;
background-color: rgba(0,0,0,0.5);
.transition(background-color 0.3s ease-in-out);
text-align: center;
}
#pv-img-content, #pv-spinner {
position: fixed;
}
@check-white: #f8f8f8;
@check-black: #e8e8e8;
#pv-img-image {
position: absolute;
max-width: 100%;
max-height: 100%;
border: 2px solid #fff;
.border-radius(4px);
background-color: @check-white;
background-image:
-webkit-linear-gradient(45deg, @check-black 25%, transparent 25%, transparent 75%, @check-black 75%, @check-black),
-webkit-linear-gradient(45deg, @check-black 25%, transparent 25%, transparent 75%, @check-black 75%, @check-black);
background-size: 60px 60px;
background-position: 0 0, 30px 30px
}
#pv-img-overlay.fullscreen {
background-color: #111;
#pv-img-image {
border: 0;
.border-radius(0);
}
}
#pv-img-close {
position: fixed;
width: 100%;
height: 100%;
cursor: pointer;
}
#pv-img-prev {
position: fixed;
cursor: pointer;
}
#pv-img-next {
position: fixed;
cursor: pointer;
}
#pv-img-buttons, #pv-img-topbuttons {
list-style: none;
list-style-image: none;
margin: 0;
padding: 0;
img {
position: relative;
top: -2px;
width: 16px;
height: 16px;
}
img + span, img + input {
margin-left: 6px;
}
input {
background-color: rgba(255,255,255,0.1);
border: none;
color: #ccc;
}
.bar-label {
display: block;
color: #ccc;
height: 30px;
line-height: 30px;
padding: 0 10px;
opacity: 0.7;
.transition(all 0.2s ease-in-out);
}
.bar-highlight {
background-color: rgba(255,255,255,0.1);
opacity: 1.0;
}
@bar-sep-border: 1px solid rgba(255,255,255,0.08);
.bar-button {
.bar-label;
cursor: pointer;
&:hover, &.hover {
.bar-highlight;
}
}
.bar-left {
float: left;
border-right: @bar-sep-border;
}
.bar-right {
float: right;
border-left: @bar-sep-border;
}
}
#pv-img-bottombar {
position: fixed;
z-index: 5;
width: 100%;
height: 32px;
left: 0;
bottom: 0;
// .vert-gradient(rgb(27,27,27), rgb(14,14,14));
background-color: rgb(27,27,27);
border-top: 1px solid rgb(45,45,45);
background-position: 0 0, 30px 30px;
box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.3);
}

View File

@ -1,35 +1,13 @@
#pv-txt-overlay {
display: none;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 100;
background-color: rgba(0,0,0,0.5);
text-align: center;
}
#pv-txt-content {
max-width: 960px;
margin: 0 auto;
padding: 10px;
background-color: #fff;
border: 2px solid #fff;
.border-radius(4px);
text-align: left;
overflow: auto;
position: relative;
}
#pv-txt-spinner {
position: fixed;
}
#pv-txt-text {
max-width: 960px;
text-align: left;
background-color: #fff;
margin: 0 auto;
padding: 8px;
overflow: auto;
box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.3);
&.highlighted {
word-break: break-all;
@ -143,90 +121,3 @@
}
}
}
#pv-txt-close {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
cursor: pointer;
}
#pv-txt-prev {
position: fixed;
cursor: pointer;
}
#pv-txt-next {
position: fixed;
cursor: pointer;
}
#pv-txt-buttons, #pv-txt-topbuttons {
list-style: none;
list-style-image: none;
margin: 0;
padding: 0;
img {
position: relative;
top: -2px;
width: 16px;
height: 16px;
}
img + span, img + input {
margin-left: 6px;
}
input {
background-color: rgba(255,255,255,0.1);
border: none;
color: #ccc;
}
.bar-label {
display: block;
color: #ccc;
height: 30px;
line-height: 30px;
padding: 0 10px;
opacity: 0.7;
.transition(all 0.2s ease-in-out);
}
.bar-highlight {
background-color: rgba(255,255,255,0.1);
opacity: 1.0;
}
@bar-sep-border: 1px solid rgba(255,255,255,0.05);
.bar-button {
.bar-label;
cursor: pointer;
&:hover, &.hover {
.bar-highlight;
}
}
.bar-left {
float: left;
border-right: @bar-sep-border;
}
.bar-right {
float: right;
border-left: @bar-sep-border;
}
}
#pv-txt-bottombar {
position: fixed;
z-index: 5;
width: 100%;
height: 32px;
left: 0;
bottom: 0;
.vert-gradient(rgb(27,27,27), rgb(14,14,14));
border-top: 1px solid rgb(45,45,45);
}

View File

@ -0,0 +1,166 @@
#pv-overlay {
display: none;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 100;
background-color: rgba(0,0,0,0.5);
.transition(background-color 0.3s ease-in-out);
text-align: center;
}
#pv-overlay.fullscreen {
background-color: #111;
}
#pv-content {
position: absolute;
}
#pv-spinner {
position: absolute;
img {
width: 100px;
height: 100px;
margin: -50px -50px;
}
}
#pv-close-area {
position: absolute;
right: 8px;
top: 8px;
cursor: pointer;
img {
background-color: rgba(0,0,0,0.5);
border-radius: 8px;
width: 48px;
height: 48px;
opacity: 0.5;
}
&:hover, &.hover {
img {
opacity: 1;
}
}
}
#pv-prev-area, #pv-next-area {
position: absolute;
top: 50%;
cursor: pointer;
img {
background-color: rgba(0,0,0,0.5);
border-radius: 8px;
width: 48px;
height: 48px;
margin: -72px 0;
padding: 48px 0;
opacity: 0.5;
}
&:hover, &.hover {
img {
opacity: 1;
}
}
}
#pv-prev-area {
left: 8px;
}
#pv-next-area {
right: 8px;
}
#pv-buttons {
list-style: none;
list-style-image: none;
margin: 0;
padding: 0;
img {
position: relative;
top: -2px;
width: 16px;
height: 16px;
}
img + span, img + input {
margin-left: 6px;
}
input {
background-color: rgba(255,255,255,0.1);
border: none;
color: #ccc;
}
.bar-label {
display: block;
color: #ccc;
height: 30px;
line-height: 30px;
padding: 0 10px;
opacity: 0.7;
.transition(all 0.2s ease-in-out);
}
.bar-highlight {
background-color: rgba(255,255,255,0.1);
opacity: 1.0;
}
@bar-sep-border: 1px solid rgba(255,255,255,0.08);
.bar-button {
.bar-label;
cursor: pointer;
&:hover, &.hover {
.bar-highlight;
}
}
.bar-left {
float: left;
border-right: @bar-sep-border;
}
.bar-right {
float: right;
border-left: @bar-sep-border;
}
}
#pv-bottombar {
position: fixed;
z-index: 5;
width: 100%;
height: 32px;
left: 0;
bottom: 0;
background-color: rgb(27,27,27);
border-top: 1px solid rgb(45,45,45);
}
#pv-overlay.fullscreen {
#pv-bottombar {
opacity: 0.5;
}
}
@media only screen and (max-width: 700px) {
#pv-prev-area, #pv-next-area, #pv-close-area {
display: none !important;
}
}

View File

@ -11,9 +11,9 @@
display: none;
}
}
#view.view-details, #view.view-list {
#view.view-details {
.header .label, .item .label {
margin-right: 110px;
margin-right: 80px !important;
}
.header .date, .item .date {
display: none;

View File

@ -6,10 +6,8 @@
min-height: 30px;
left: 0;
top: 0;
// .vert-gradient(rgb(241,241,241), rgb(228,228,228));
background-color: @col-widget-back;
border-bottom: @border-widget;
// .box-shadow(0 2px 4px 0 rgba(0, 0, 0, 0.15);
}

View File

@ -12,15 +12,12 @@
border-right: @border-widget;
.sp-scrollbar {
// margin: 8px 8px 8px 0;
width: 6px;
background-color: @col-sb-back;
// .border-radius(3px);
cursor: pointer;
.sp-thumb {
background-color: @col-sb-thumb;
// .border-radius(3px);
}
&.active .sp-thumb {
background-color: @col-sb-thumb-active;
@ -63,14 +60,13 @@
padding: 4px 6px;
color: #555;
border: 1px solid rgba(0,0,0,0);
.border-radius(3px);
border-radius: 3px;
text-decoration: none;
opacity: 0.7;
&:hover, &.hover {
color: @col-hover;
background-color: @col-widget-back-hover;
// border-color: rgba(0,0,0,0.05);
opacity: 1;
}
}

View File

@ -10,8 +10,8 @@
&.item {
a, a:active, a:visited {
border-top: 1px solid @item-border-col-sep;
border-bottom: 1px solid @item-border-col-sep;
height: @icon-size + 6px;
&:hover, &.hover {
border-color: @item-border-col-hover;
@ -19,28 +19,29 @@
}
// needs to be here, to not conflict with header fields
.icon, .label, .date, .size {
padding: 8px 6px;
.icon {
padding: 8px;
}
.label, .date, .size {
padding: ((@icon-size - 16px)/2) 8px;
}
}
&.item + .item {
a, a:active, a:visited {
border-top: none;
}
}
.icon.small {
.icon.square {
display: inline-block;
position: absolute;
left: 0;
top: -2px;
width: 16px;
top: -4px;
width: @icon-size;
img {
width: @icon-size;
height: @icon-size;
}
}
.label {
margin: 0 270px 0 24px;
margin: 0 230px 0 (@icon-size + 16px);
}
.date {
@ -54,5 +55,67 @@
right: 0;
top: 0;
}
.selector {
margin-top: -1px;
}
}
}
.view-details-sized(@size) {
li {
&.item {
a, a:active, a:visited {
height: @size + 6px;
}
.label, .date, .size {
padding: ((@size - 16px)/2) 8px;
}
}
.icon.square {
width: @size;
img {
width: @size;
height: @size;
}
}
.label {
margin: 0 230px 0 (@size + 16px);
}
}
}
#view.view-details {
&.size-16 {
.view-details-sized(16px)
}
&.size-24 {
.view-details-sized(24px)
}
&.size-32 {
.view-details-sized(32px)
}
&.size-48 {
.view-details-sized(48px)
}
&.size-64 {
.view-details-sized(64px)
}
&.size-96 {
.view-details-sized(96px)
}
}

View File

@ -5,33 +5,43 @@
&.item {
float: left;
margin: 2px;
a, a:active, a:visited {
float: left;
margin: 2px;
padding: 8px;
width: 164px;
height: 24px;
width: @icon-size + 182px;
height: @icon-size + 6px;
border: 1px solid rgba(0,0,0,0);
&:hover, &.hover {
border-color: @item-border-col-hover;
}
}
// needs to be here, to not conflict with header fields
.icon {
padding: 8px;
}
.label, .date, .size {
padding: ((@icon-size - 16px)/2) 8px;
}
}
.icon.small {
.icon.square {
display: inline-block;
position: absolute;
left: 11px;
top: 9px;
width: 16px;
left: 0;
top: -4px;
width: @icon-size;
img {
width: @icon-size;
height: @icon-size;
}
}
.label {
display: block;
max-width: 140px;
margin: 0 0 0 24px;
margin: 0 0 0 (@icon-size + 8px);
}
.date, .size {
@ -39,3 +49,62 @@
}
}
}
.view-grid-sized(@size) {
li {
&.item {
a, a:active, a:visited {
width: @size + 182px;
height: @size + 6px;
}
.label, .date, .size {
padding: ((@size - 16px)/2) 8px;
}
}
.icon.square {
width: @size;
img {
width: @size;
height: @size;
}
}
.label {
margin: 0 0 0 (@size + 8px);
}
}
}
#view.view-grid {
&.size-16 {
.view-grid-sized(16px)
}
&.size-24 {
.view-grid-sized(24px)
}
&.size-32 {
.view-grid-sized(32px)
}
&.size-48 {
.view-grid-sized(48px)
}
&.size-64 {
.view-grid-sized(64px)
}
&.size-96 {
.view-grid-sized(96px)
}
}

View File

@ -6,13 +6,13 @@
&.item {
float: left;
margin: 8px;
a, a:active, a:visited {
float: left;
margin: 8px;
padding: 8px;
width: 100px;
height: 120px;
min-width: 96px;
width: @icon-size * 2;
height: @icon-size + 72px;
border: 1px solid rgba(0,0,0,0);
&:hover, &.hover {
@ -21,10 +21,15 @@
}
}
.icon.big {
.icon.rational {
display: block;
height: 48px;
height: @icon-size;
margin-bottom: 6px;
img {
max-width: @icon-size * 2;
max-height: @icon-size;
}
}
.label {
@ -44,3 +49,54 @@
height: 120px;
}
}
.view-icons-sized(@size) {
li {
&.item {
a, a:active, a:visited {
width: @size * 2;
height: @size + 72px;
}
}
.icon.rational {
height: @size;
img {
max-width: @size * 2;
max-height: @size;
}
}
}
}
#view.view-icons {
&.size-16 {
.view-icons-sized(16px)
}
&.size-24 {
.view-icons-sized(24px)
}
&.size-32 {
.view-icons-sized(32px)
}
&.size-48 {
.view-icons-sized(48px)
}
&.size-64 {
.view-icons-sized(64px)
}
&.size-96 {
.view-icons-sized(96px)
}
}

View File

@ -1,62 +0,0 @@
#view.view-list {
li {
&.header {
display: list-item;
}
&.item {
a, a:active, a:visited {
border-top: 1px solid @item-border-col-sep;
border-bottom: 1px solid @item-border-col-sep;
height: 60px;
&:hover, &.hover {
border-color: @item-border-col-hover;
}
}
// needs to be here, to not conflict with header fields
.icon {
padding: 8px 6px;
}
.label, .date, .size {
padding: 18px 6px;
}
}
&.item + .item {
a, a:active, a:visited {
border-top: none;
}
}
.icon.big {
display: inline-block;
position: absolute;
left: 0;
top: -2px;
width: 100px;
}
.label {
margin: 0 270px 0 110px;
}
.date {
position: absolute;
right: 100px;
top: 0;
}
.size {
position: absolute;
right: 0;
top: 0;
}
}
}

View File

@ -1,4 +1,16 @@
@item-border-col-sep: @col-border;
@item-background-col-hover: rgba(0,0,0,0.02);
@item-border-col-hover: @col-border;
@item-background-col-sel: rgba(0,0,0,0.02);
@item-border-col-sel: @col-border-strong;
@icon-size: 48px;
#selection-rect {
display: none;
position: absolute;
@ -9,15 +21,6 @@
background-color: rgba(0,0,0,0.01);
}
@item-border-col-sep: @col-border;
@item-background-col-hover: rgba(0,0,0,0.02);
@item-border-col-hover: @col-border;
@item-background-col-sel: rgba(0,0,0,0.02);
@item-border-col-sel: @col-border-strong;
#view {
display: none;
@ -70,24 +73,28 @@
}
&.item {
font-size: 15px;
a, a:active, a:visited {
display: block;
overflow: hidden;
&:hover, &.hover {
// color: #e80;
color: @col-hover;
background-color: @item-background-col-hover;
border-color: @item-border-col-hover;
}
&:hover {
.selector {
display: block;
}
}
}
&.selected:not(.selecting), &.selecting:not(.selected) {
a, a:active, a:visited {
// color: #000;
// color: @col-hover;
background-color: @item-background-col-sel;
border-color: @item-border-col-sel;
@ -96,6 +103,15 @@
border-color: @item-border-col-sel;
}
}
.selector {
display: block;
// border-color: @col-border-stronger;
img {
display: block;
}
}
}
}
@ -105,7 +121,6 @@
color: #aaa;
&:hover, &.hover {
// color: #e80;
color: @col-hover;
}
}
@ -129,25 +144,10 @@
text-align: center;
img {
vertical-align: top;
&.thumb {
.box-shadow(0 0 0 1px #ddd);
}
}
&.small {
img {
max-width: 16px;
max-height: 16px;
}
}
&.big {
img {
max-width: 100px;
max-height: 48px;
box-shadow: 0 0 0 1px #ddd;
}
}
}
@ -156,17 +156,41 @@
display: block;
overflow: hidden;
text-align: left;
text-overflow: ellipsis;
}
.date {
text-align: right;
width: 160px;
width: 130px;
}
.size {
text-align: right;
width: 80px;
}
.selector {
display: none;
position: absolute;
left: 0;
top: 0;
width: 18px;
height: 18px;
background-color: #fff;
border: 1px solid @col-border-strong;
cursor: pointer;
.transition(all 0.2s ease-in-out);
&:hover {
border-color: @col-border-stronger;
}
img {
display: none;
width: 100%;
height: 100%;
}
}
}
.empty, .no-match {

View File

@ -1,57 +0,0 @@
.border-radius (@radius) {
-webkit-border-radius: @radius; /* Saf3-4, iOS 1-3.2, Android <1.6 */
-moz-border-radius: @radius; /* FF1-3.6 */
border-radius: @radius; /* Opera 10.5, IE9, Saf5, Chrome, FF4, iOS 4, Android 2.1+ */
}
.background-clip () {
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
.box-shadow (@shadow) {
-webkit-box-shadow: @shadow; /* Saf3-4 */
-moz-box-shadow: @shadow; /* FF3.5 - 3.6 */
box-shadow: @shadow; /* Opera 10.5, IE9, FF4+, Chrome 10+ */
}
.transition (@transition) {
-webkit-transition: @transition; /* Saf3.2+, Chrome */
-moz-transition: @transition; /* FF4+ */
-ms-transition: @transition; /* IE10? */
-o-transition: @transition; /* Opera 10.5+ */
transition: @transition;
}
.transform (@transform) {
-webkit-transform: @transform; /* Saf3.1+, Chrome */
-moz-transform: @transform; /* FF3.5+ */
-ms-transform: @transform; /* IE9 */
-o-transform: @transform; /* Opera 10.5 */
transform: @transform;
zoom: 1;
}
.vert-gradient (@top, @bottom) {
background-color: @top;
background-image: -webkit-gradient(linear, left top, left bottom, from(@top), to(@bottom)); /* Saf4+, Chrome */
background-image: -webkit-linear-gradient(top, @top, @bottom); /* Chrome 10+, Saf5.1+, iOS 5+ */
background-image: -moz-linear-gradient(top, @top, @bottom); /* FF3.6 */
background-image: -ms-linear-gradient(top, @top, @bottom); /* IE10 */
background-image: -o-linear-gradient(top, @top, @bottom); /* Opera 11.10+ */
background-image: linear-gradient(top, @top, @bottom);
}
.background-size (@size) {
-webkit-background-size: @size; /* Saf3-4 */
-moz-background-size: @size; /* FF3.6 */
background-size: @size; /* Opera, IE9, Saf5, Chrome, FF4 */
}

View File

@ -2,8 +2,6 @@
@import "lib/h5bp-normalize";
@import "lib/h5bp-main-header";
@import "lib/mixins";
@import "inc/general";
@import "inc/topbar";
@import "inc/bottombar";
@ -13,6 +11,7 @@
@import "inc/l10n";
@import "inc/tree";
@import "inc/qrcode";
@import "inc/preview";
@import "inc/preview-img";
@import "inc/preview-txt";
@import "inc/notify";
@ -21,7 +20,6 @@
@import "inc/view";
@import "inc/view-details";
@import "inc/view-icons";
@import "inc/view-list";
@import "inc/view-grid";
// @import "inc/context-menu";
@import "inc/dropbox";

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 770 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 743 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 781 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 654 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 617 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Some files were not shown because too many files have changed in this diff Show More