diff --git a/src/_h5ai/client/images/favicon/app-114.png b/src/_h5ai/client/images/favicon/app-114.png deleted file mode 100644 index 6de58eaa..00000000 Binary files a/src/_h5ai/client/images/favicon/app-114.png and /dev/null differ diff --git a/src/_h5ai/client/images/favicon/app-144.png b/src/_h5ai/client/images/favicon/app-144.png deleted file mode 100644 index ecd9a74f..00000000 Binary files a/src/_h5ai/client/images/favicon/app-144.png and /dev/null differ diff --git a/src/_h5ai/client/images/favicon/app-152.png b/src/_h5ai/client/images/favicon/app-152.png new file mode 100644 index 00000000..3f8e9fa5 Binary files /dev/null and b/src/_h5ai/client/images/favicon/app-152.png differ diff --git a/src/_h5ai/client/images/favicon/app-16-32.ico b/src/_h5ai/client/images/favicon/app-16-32.ico new file mode 100644 index 00000000..5c6e9412 Binary files /dev/null and b/src/_h5ai/client/images/favicon/app-16-32.ico differ diff --git a/src/_h5ai/client/images/favicon/app-16.ico b/src/_h5ai/client/images/favicon/app-16.ico deleted file mode 100644 index 63ead9eb..00000000 Binary files a/src/_h5ai/client/images/favicon/app-16.ico and /dev/null differ diff --git a/src/_h5ai/client/images/favicon/app-48.png b/src/_h5ai/client/images/favicon/app-48.png deleted file mode 100644 index bf477170..00000000 Binary files a/src/_h5ai/client/images/favicon/app-48.png and /dev/null differ diff --git a/src/_h5ai/client/images/favicon/app-57.png b/src/_h5ai/client/images/favicon/app-57.png deleted file mode 100644 index bd9fd698..00000000 Binary files a/src/_h5ai/client/images/favicon/app-57.png and /dev/null differ diff --git a/src/_h5ai/client/images/favicon/app-72.png b/src/_h5ai/client/images/favicon/app-72.png deleted file mode 100644 index 1e893f8b..00000000 Binary files a/src/_h5ai/client/images/favicon/app-72.png and /dev/null differ diff --git a/src/_h5ai/client/images/favicon/app.svg b/src/_h5ai/client/images/favicon/app.svg index f9f62db9..a2faca00 100644 --- a/src/_h5ai/client/images/favicon/app.svg +++ b/src/_h5ai/client/images/favicon/app.svg @@ -14,7 +14,10 @@ width="16" version="1.1" inkscape:version="0.48.4 r9939" - sodipodi:docname="folder.svg"> + sodipodi:docname="app.svg" + inkscape:export-filename="/home/lars/env/workspace/h5ai/src/_h5ai/client/images/favicon/app-32.png" + inkscape:export-xdpi="180" + inkscape:export-ydpi="180"> <defs id="defs10" /> <sodipodi:namedview @@ -26,14 +29,14 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1871" + inkscape:window-width="1877" inkscape:window-height="1056" id="namedview8" showgrid="true" inkscape:zoom="41.7193" inkscape:cx="10.567799" inkscape:cy="6.7528912" - inkscape:window-x="49" + inkscape:window-x="43" inkscape:window-y="24" inkscape:window-maximized="1" inkscape:current-layer="svg7384" diff --git a/src/_h5ai/client/js/inc/core/location.js b/src/_h5ai/client/js/inc/core/location.js index e6691a9c..7dc133ed 100644 --- a/src/_h5ai/client/js/inc/core/location.js +++ b/src/_h5ai/client/js/inc/core/location.js @@ -97,7 +97,7 @@ modulejs.define('core/location', ['_', 'modernizr', 'core/settings', 'core/event _.each(json.items, function (jsonItem) { - var e = Item.get(jsonItem.absHref, jsonItem.time, jsonItem.size, jsonItem.is_managed, jsonItem.content); + var e = Item.get(jsonItem.absHref, jsonItem.time, jsonItem.size, jsonItem.is_managed, jsonItem.content, jsonItem.md5, jsonItem.sha1); found[e.absHref] = true; }); diff --git a/src/_h5ai/client/js/inc/model/item.js b/src/_h5ai/client/js/inc/model/item.js index 75a564d9..d702221e 100644 --- a/src/_h5ai/client/js/inc/model/item.js +++ b/src/_h5ai/client/js/inc/model/item.js @@ -41,7 +41,7 @@ modulejs.define('model/item', ['_', 'core/types', 'core/event', 'core/settings', cache = {}, - getItem = function (absHref, time, size, isManaged, isContentFetched) { + getItem = function (absHref, time, size, isManaged, isContentFetched, md5, sha1) { absHref = location.forceEncoding(absHref); @@ -63,6 +63,12 @@ modulejs.define('model/item', ['_', 'core/types', 'core/event', 'core/settings', if (isContentFetched) { self.isContentFetched = true; } + if (md5) { + self.md5 = md5; + } + if (sha1) { + self.sha1 = sha1; + } return self; }, @@ -100,7 +106,7 @@ modulejs.define('model/item', ['_', 'core/types', 'core/event', 'core/settings', if (response.items) { _.each(response.items, function (item) { - getItem(item.absHref, item.time, item.size, item.is_managed, item.content); + getItem(item.absHref, item.time, item.size, item.is_managed, item.content, item.md5, item.sha1); }); } diff --git a/src/_h5ai/conf/options.json b/src/_h5ai/conf/options.json index 6d2edf01..8acbce8d 100644 --- a/src/_h5ai/conf/options.json +++ b/src/_h5ai/conf/options.json @@ -15,7 +15,7 @@ Options "spacing": { "bottom": 50, "left": "auto", - "maxWidth": 960, + "maxWidth": 1024, "right": "auto", "top": 50 }, diff --git a/src/_h5ai/index.html.jade b/src/_h5ai/index.html.jade index a3f48010..63bd7ad8 100644 --- a/src/_h5ai/index.html.jade +++ b/src/_h5ai/index.html.jade @@ -11,12 +11,8 @@ html.no-js.browser( lang="en" ) title {{pkg.name}} {{pkg.version}} Server Setup meta( name="description", content="{{pkg.name}} server details" ) meta( name="viewport", content="width=device-width" ) - link( rel="shortcut icon", href="client/images/favicon/app-16.ico" ) - link( rel="apple-touch-icon-precomposed", type="image/png", href="client/images/favicon/app-48.png" ) - link( rel="apple-touch-icon-precomposed", sizes="57x57", type="image/png", href="client/images/favicon/app-57.png" ) - link( rel="apple-touch-icon-precomposed", sizes="72x72", type="image/png", href="client/images/favicon/app-72.png" ) - link( rel="apple-touch-icon-precomposed", sizes="114x114", type="image/png", href="client/images/favicon/app-114.png" ) - link( rel="apple-touch-icon-precomposed", sizes="144x144", type="image/png", href="client/images/favicon/app-144.png" ) + link( rel="shortcut icon", href="client/images/favicon/app-16-32.ico" ) + link( rel="apple-touch-icon-precomposed", type="image/png", href="client/images/favicon/app-152.png" ) link( rel="stylesheet", href="//fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic,700italic|Ubuntu:300italic,700italic,300,700" ) link( rel="stylesheet", href="client/css/styles.css" ) script( src="client/js/scripts.js", data-mode="info" ) diff --git a/src/_h5ai/server/php/inc/class-app.php b/src/_h5ai/server/php/inc/class-app.php index 2af5744b..a656f4de 100644 --- a/src/_h5ai/server/php/inc/class-app.php +++ b/src/_h5ai/server/php/inc/class-app.php @@ -160,6 +160,9 @@ class App { return array(); } + // return $this->get_all_items(); + // return json_decode(file_get_contents(CACHE_PATH . "/item.json")); + $cache = array(); $folder = Item::get($this, $this->to_path($url), $cache); @@ -197,12 +200,34 @@ class App { } + public function cummulate_folders($item, &$cache) { + + if (!$item->is_folder) { + return; + } + + $max_date = $item->date; + $sum_size = 0; + foreach ($item->get_content($cache) as $child) { + $this->cummulate_folders($child, $cache); + if ($child->date > $max_date) { + $max_date = $child->date; + } + $sum_size += $child->size; + } + + $item->date = $max_date; + $item->size = $sum_size; + } + + public function get_all_items() { $cache = array(); $root = Item::get($this, ROOT_PATH, $cache); $this->get_all_item_content($root, $cache); + $this->cummulate_folders($root, $cache); uasort($cache, array("Item", "cmp")); $result = array(); diff --git a/src/_h5ai/server/php/inc/class-item.php b/src/_h5ai/server/php/inc/class-item.php index 482669fd..1d5674d9 100644 --- a/src/_h5ai/server/php/inc/class-item.php +++ b/src/_h5ai/server/php/inc/class-item.php @@ -87,6 +87,18 @@ class Item { $this->date = @filemtime($this->path); $this->size = Item::filesize($app, $this->path); $this->is_content_fetched = false; + + // $options = $app->get_options(); + // if (!$this->is_folder && $options["hashes"]["enabled"]) { + if (!$this->is_folder) { + // $this->md5 = md5_file($this->path); + // $this->sha1 = sha1_file($this->path); + $this->md5 = null; + $this->sha1 = null; + } else { + $this->md5 = null; + $this->sha1 = null; + } } @@ -101,6 +113,9 @@ class Item { if ($this->is_folder) { $obj["is_managed"] = $this->app->is_managed_url($this->url); $obj["content"] = $this->is_content_fetched; + } else { + $obj["md5"] = $this->md5; + $obj["sha1"] = $this->sha1; } return $obj; diff --git a/src/_h5ai/server/php/inc/page.php.jade b/src/_h5ai/server/php/inc/page.php.jade index d32a0f71..21d99faf 100644 --- a/src/_h5ai/server/php/inc/page.php.jade +++ b/src/_h5ai/server/php/inc/page.php.jade @@ -15,12 +15,8 @@ html.no-js.browser( lang="en" ) title index ยท styled with {{pkg.name}} {{pkg.version}} ({{pkg.url}}) meta( name="description", content="index styled with {{pkg.name}} {{pkg.version}} ({{pkg.url}})" ) meta( name="viewport", content="width=device-width" ) - link( rel="shortcut icon", href!="#{app_href}client/images/favicon/app-16.ico" ) - link( rel="apple-touch-icon-precomposed", type="image/png", href!="#{app_href}client/images/favicon/app-48.png" ) - link( rel="apple-touch-icon-precomposed", sizes="57x57", type="image/png", href!="#{app_href}client/images/favicon/app-57.png" ) - link( rel="apple-touch-icon-precomposed", sizes="72x72", type="image/png", href!="#{app_href}client/images/favicon/app-72.png" ) - link( rel="apple-touch-icon-precomposed", sizes="114x114", type="image/png", href!="#{app_href}client/images/favicon/app-114.png" ) - link( rel="apple-touch-icon-precomposed", sizes="144x144", type="image/png", href!="#{app_href}client/images/favicon/app-144.png" ) + link( rel="shortcut icon", href!="#{app_href}client/images/favicon/app-16-32.ico" ) + link( rel="apple-touch-icon-precomposed", type="image/png", href!="#{app_href}client/images/favicon/app-152.png" ) link( rel="stylesheet", href="//fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic,700italic|Ubuntu:300italic,700italic,300,700" ) link( rel="stylesheet", href!="#{app_href}client/css/styles.css" ) script( src!="#{app_href}client/js/scripts.js" )