From 852d39b8e36280068c6ecf3c40bca33acdf6487d Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Tue, 14 Jun 2016 16:13:38 +0100 Subject: [PATCH] some big changes --- README.md | 4 +- assets/public/css/styles.css | 558 ++++++++++++++++++++++++++++++-- assets/public/js/application.js | 96 ++++++ assets/templates/base.tmpl | 30 +- assets/templates/listing.tmpl | 17 +- binary.go | 171 ++++------ 6 files changed, 711 insertions(+), 165 deletions(-) diff --git a/README.md b/README.md index 498c7463..1810e488 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ ## Roadmap -+ [ ] Rename files ++ [x] Rename files + [ ] Upload files and drag & drop -+ [ ] Delete files ++ [x] Delete files + [ ] Download files + [ ] Preview files + [ ] Search ? diff --git a/assets/public/css/styles.css b/assets/public/css/styles.css index 1804d879..deda8d61 100644 --- a/assets/public/css/styles.css +++ b/assets/public/css/styles.css @@ -1,10 +1,423 @@ -* { - padding: 0; +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ + + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ + +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/** + * Remove default margin. + */ + +body { margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ + + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, canvas, progress, video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ + +[hidden], template { + display: none; +} + +/* Links + ========================================================================== */ + + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ + +a:active, a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, kbd, pre, samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, input, optgroup, select, textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, html input[type="button"], +/* 1 */ + +input[type="reset"], input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ + +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + box-sizing: content-box; + /* 2 */ +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} +td, th { + padding: 0; +} + +/* TANANANA */ + body { font-family: 'Roboto', sans-serif; text-rendering: optimizespeed; + padding-top: 4em; } a { color: #006ed3; @@ -23,19 +436,6 @@ th:first-child, td:first-child { th:last-child, td:last-child { padding-right: 1em; } -header { - background-color: #03A9F4; - color: #fff; - padding: 1.3em 0; -} -header i { - -margin: 0 .2em; - -color: rgba(255,255,255,0.3); - -font-style: normal; -} h1 { font-size: 1.5em; font-weight: normal; @@ -52,13 +452,6 @@ h1 a:hover { main { display: block; } -.meta { - font-size: 12px; - padding-top: 15px; - padding-bottom: 15px; - background-color: #4FC3F7; - color: #fff; -} .meta-item { margin-right: 1em; } @@ -68,9 +461,10 @@ table { } tr { border-bottom: 1px dashed #dadada; + transition: .1s ease all; } -tr:not(:first-child):hover { - background-color: #ffffec; +tr.selected { + background-color: #ccc; } th, td { text-align: left; @@ -113,25 +507,20 @@ footer { font-size: 12px; text-align: center; } - .container { - margin: 0 auto; - width: 95%; - max-width: 960px; + margin: 0 auto; + width: 95%; + max-width: 960px; } - - .listing i { - vertical-align: middle; + vertical-align: middle; } - pre { - border: 1px solid #e6e6e6; + border: 1px solid #e6e6e6; background-color: #f5f5f5; border-radius: .5em; padding: 1em; } - @media (max-width: 600px) { .hideable { display: none; @@ -144,3 +533,104 @@ pre { text-align: right; } } + +/* MY STYLES */ + +* { + box-sizing: border-box; +} + +/* MATERIAL ICONS */ + +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 1.5em; + /* Preferred icon size */ + display: inline-block; + line-height: 1; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + white-space: nowrap; + direction: ltr; + /* Support for all WebKit browsers. */ + -webkit-font-smoothing: antialiased; + /* Support for Safari and Chrome. */ + text-rendering: optimizeLegibility; + /* Support for Firefox. */ + -moz-osx-font-smoothing: grayscale; + /* Support for IE. */ + font-feature-settings: 'liga'; +} + +/* HEADER */ + +header { + background-color: #8BC34A; + padding: 1.7em 0; +} +header h1 { + margin: 0; + font-size: 2em; +} +header p { + font-size: 1.5em; + padding: 0.25em 0; +} +header p i { + vertical-align: middle; +} +header, #toolbar { + position: absolute; + width: 100%; + top: 0; + left: 0; + padding: .5em; + display: flex; +} +#toolbar div, +header div { + flex-grow: 1; + vertical-align: middle; +} +#toolbar p, +header p { + display: inline-block; + margin: 0; + vertical-align: middle; +} +#toolbar { + background-color: #6f6f6f; + color: #fff; + top: -4em; + opacity: 0; + transition: .2s ease-in-out all; +} +#toolbar.enabled { + top: 0; + opacity: 1; +} +#toolbar div:nth-child(2) { + text-align: right; +} +.action { + border: 0; + border-radius: 50%; + margin: 0 .2em; + display: inline-block; + cursor: pointer; + transition: .2s ease all; +} +.action.disabled { + opacity: 0; +} +.action i { + padding: .5em; + border-radius: 50%; + transition: .5s ease-in-out all; +} +.action:hover i { + background-color: rgba(0, 0, 0, 0.1); +} diff --git a/assets/public/js/application.js b/assets/public/js/application.js index e69de29b..8f483f52 100644 --- a/assets/public/js/application.js +++ b/assets/public/js/application.js @@ -0,0 +1,96 @@ +"use strict"; + +var selectedItems = []; + +document.addEventListener("DOMContentLoaded", function(event) { + var items = document.getElementsByTagName('tr'); + Array.from(items).forEach(link => { + link.addEventListener('click', function(event) { + var url = link.getElementsByTagName('a')[0].getAttribute('href'); + if (selectedItems.indexOf(url) == -1) { + link.classList.add('selected'); + selectedItems.push(url); + } else { + link.classList.remove('selected'); + var i = selectedItems.indexOf(url); + if (i != -1) { + selectedItems.splice(i, 1); + } + } + + var event = new CustomEvent('changed-selected'); + document.dispatchEvent(event); + return false; + }); + }); + + document.getElementById("back").addEventListener("click", backEvent); + document.getElementById("delete").addEventListener("click", deleteEvent); + document.getElementById("download").addEventListener("click", downloadEvent); + return false; +}); + +var backEvent = function(event) { + var items = document.getElementsByTagName('tr'); + Array.from(items).forEach(link => { + link.classList.remove('selected'); + }); + selectedItems = []; + + var event = new CustomEvent('changed-selected'); + document.dispatchEvent(event); + return false; +} + +var deleteEvent = function(event) { + Array.from(selectedItems).forEach(item => { + var request = new XMLHttpRequest(); + request.open("DELETE", item); + request.send(); + request.onreadystatechange = function() { + if (request.readyState == 4) { + if (request.status != 200) { + alert("something wrong happened!"); + return false; + } + + alert(item + " deleted"); + // Add removing animation + } + } + }); + return false; +} + +var downloadEvent = function(event) { + Array.from(selectedItems).forEach(item => { + window.open(item + "?download=true"); + }); + return false; +} + +document.addEventListener("changed-selected", function(event) { + var toolbar = document.getElementById("toolbar"); + var selectedNumber = selectedItems.length; + + document.getElementById("selected-number").innerHTML = selectedNumber; + + if (selectedNumber) { + toolbar.classList.add("enabled"); + + if (selectedNumber > 1) { + document.getElementById("open").classList.add("disabled"); + document.getElementById("rename").classList.add("disabled"); + } + + if (selectedNumber == 1) { + document.getElementById("open").classList.remove("disabled"); + document.getElementById("rename").classList.remove("disabled"); + } + + return false; + } + + toolbar.classList.remove("enabled"); + return false; +}); diff --git a/assets/templates/base.tmpl b/assets/templates/base.tmpl index f9ebb2fa..596c7982 100644 --- a/assets/templates/base.tmpl +++ b/assets/templates/base.tmpl @@ -3,21 +3,41 @@ {{.Name}} - + + +
-
-

- {{range $url, $name := .BreadcrumbMap}}{{if eq $url "/"}}Home{{end}}{{if ne $url "/"}}>{{$name}}{{end}}{{end}} -

+
+

File Manager chevron_right {{ .Name }}

+
+
+ Search +
+
+
file_upload
+
+
+
arrow_back
+

0 selected.

+
+
+
open_in_new
+
mode_edit
+
file_download
+
delete
+
+
+ + File Manager {{range $url, $name := .BreadcrumbMap}}>{{$name}}{{end}}
{{ template "content" .Data }}
diff --git a/assets/templates/listing.tmpl b/assets/templates/listing.tmpl index 14ef36bd..bfca646c 100644 --- a/assets/templates/listing.tmpl +++ b/assets/templates/listing.tmpl @@ -1,16 +1,7 @@ {{ define "content" }} -
-
- {{.NumDirs}} director{{if eq 1 .NumDirs}}y{{else}}ies{{end}} - {{.NumFiles}} file{{if ne 1 .NumFiles}}s{{end}} - {{- if ne 0 .ItemsLimitedTo}} - (of which only {{.ItemsLimitedTo}} are displayed) - {{- end}} -
-
- -
+
There are {{.NumDirs}} director{{if eq 1 .NumDirs}}y{{else}}ies{{end}} and {{.NumFiles}} file{{if ne 1 .NumFiles}}s{{end}} in here.
+ @@ -50,9 +41,9 @@
{{- if .IsDir}} - + folder {{- else}} - + insert_drive_file {{- end}} {{.Name}} diff --git a/binary.go b/binary.go index f5bbfaf8..58cbcbae 100644 --- a/binary.go +++ b/binary.go @@ -10,35 +10,20 @@ package filemanager import ( - "bytes" - "compress/gzip" "fmt" - "io" "io/ioutil" "os" "path/filepath" "strings" - "time" ) -func bindataRead(data []byte, name string) ([]byte, error) { - gz, err := gzip.NewReader(bytes.NewBuffer(data)) +// bindataRead reads the given file from disk. It returns an error on failure. +func bindataRead(path, name string) ([]byte, error) { + buf, err := ioutil.ReadFile(path) if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) + err = fmt.Errorf("Error reading asset %s at %s: %v", name, path, err) } - - var buf bytes.Buffer - _, err = io.Copy(&buf, gz) - clErr := gz.Close() - - if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) - } - if clErr != nil { - return nil, err - } - - return buf.Bytes(), nil + return buf, err } type asset struct { @@ -46,130 +31,94 @@ type asset struct { info os.FileInfo } -type bindataFileInfo struct { - name string - size int64 - mode os.FileMode - modTime time.Time -} - -func (fi bindataFileInfo) Name() string { - return fi.name -} -func (fi bindataFileInfo) Size() int64 { - return fi.size -} -func (fi bindataFileInfo) Mode() os.FileMode { - return fi.mode -} -func (fi bindataFileInfo) ModTime() time.Time { - return fi.modTime -} -func (fi bindataFileInfo) IsDir() bool { - return false -} -func (fi bindataFileInfo) Sys() interface{} { - return nil -} - -var _publicCssStylesCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x55\xed\x6e\xab\x38\x10\xfd\x7d\x23\xe5\x1d\x2c\x55\x57\x37\x59\x05\x44\x3e\xc8\x55\xc9\x9f\x5d\xad\xd4\x07\xd8\x37\x30\xd8\x80\x55\x83\x91\xed\x34\xc9\xae\xfa\xee\x3b\xc6\x36\x18\x42\xf7\xa3\xb4\x6a\x98\xf1\x1c\xcf\xcc\x39\x33\xf9\x05\xfd\xb5\x5e\x21\xf8\xe9\x30\x21\xac\xad\x32\x94\x5c\xac\xa1\xc1\xb2\x62\xad\x7d\xff\x5c\xaf\x72\x41\x1e\xfe\x6c\x29\x5a\x1d\x95\xb8\x61\xfc\x91\xa1\x1f\x7f\x88\x5c\x68\xf1\x63\x87\x14\x6e\x55\xa4\xa8\x64\xa5\x83\xd0\xf4\xae\x23\x49\x5b\x02\x36\x03\x2d\x3a\xcd\x1a\xf6\x27\x55\x1d\xa5\xc4\xc2\x62\x8f\x59\x08\x2e\x64\x86\x5e\x92\xe4\x4c\xc9\x31\x04\x20\xb4\x10\x12\x6b\x26\x20\x99\x56\xb4\xd4\x05\x66\xb5\xf8\xa0\x72\x87\xea\x3d\x72\x9f\xe7\x50\xc7\xfd\x6b\x51\x96\xf6\x78\x4d\x31\x31\xa7\x5f\xd4\xb5\x81\xca\x1e\xb3\xb2\x23\x4e\x4b\x9d\xa1\x9f\xdf\x2f\x53\xb3\x64\x55\xed\xed\x80\xa2\xeb\xac\x64\x52\xe9\xa8\xa8\x19\x27\x3b\xa4\x49\xf8\xbe\x8c\xb9\xa7\xcd\x10\xcc\xf1\x24\x76\x7c\x9d\x87\xba\x7b\x87\x58\x9b\xbe\x3f\x95\xe3\xe2\xbd\x92\xe2\xda\x92\x68\x68\xdb\xf1\xb7\xd7\xb7\xd3\x65\xda\x80\xb2\x2c\x2f\x33\x76\xf7\xf1\x91\x36\x9e\x53\x87\xca\x0c\xee\x7a\x35\x10\x8e\xe2\x43\x7f\xef\x7a\xe5\x80\x64\x95\xe3\xcd\x21\x4d\x77\xfe\x2f\x89\x8f\xdb\xfe\x40\xaf\x04\xa5\x1f\x9c\x1a\x6e\x64\x83\xb9\x43\xde\x4f\xb4\xa2\x80\x74\x73\x77\xda\xe3\x0e\xe6\x1b\xb5\x65\x0e\x91\xc6\x73\xab\x99\xa6\x91\xea\x70\xd1\x63\xde\x24\xee\x9c\xc7\x70\x5c\x72\x71\x8b\xee\x19\xaa\x19\x21\xb4\x0d\x65\xe2\xbd\x19\xa2\x9c\xb3\x4e\x31\x35\xa4\x32\x17\x19\x6b\x6b\x50\xa4\x1e\xfd\x53\xfd\x3c\xa9\xee\x6a\x14\xcc\x99\x97\x5e\x83\x59\xeb\xcf\x12\xa6\x3a\x8e\x61\x0c\x72\x2e\x8a\x77\xeb\x8f\x1b\xaa\xf1\x52\xfd\x87\xee\x3e\xd3\x97\x16\x1d\xd8\xd3\x27\x3b\x4c\x94\x16\xcd\xc4\xb5\x40\xfa\xe9\xed\xf7\xe3\xdb\xcf\x45\xd2\x7d\x1a\x11\x34\xb3\xf1\xb9\x58\x86\x9f\xc4\xa5\x71\xce\xa9\x3f\x73\x63\x04\x84\x8a\xf6\x49\xe2\x67\x21\x17\x12\xca\x37\x97\x72\xdc\x29\xa8\xc3\x7f\x72\xd1\xa3\x2c\xed\xc1\x21\xf7\xee\x8e\x08\x56\x35\x25\xe8\x85\x60\xf3\xf8\x80\xac\x15\x7a\x13\x4e\xce\x76\x4a\xc0\x42\xa9\x50\x55\x49\x0b\x3f\x48\x66\x7a\x26\x6c\x61\xce\x2a\x20\xca\x4c\xdc\x93\xe2\x47\xbd\xeb\x7a\x3e\x67\xff\xa3\xff\x21\x91\xe7\xc1\xba\xac\x56\x7b\xd7\x5c\x76\x39\xc7\x5e\x22\xe0\x55\x1f\x95\xf7\x43\xe9\x9a\x15\x98\xfb\x32\x1a\x10\x37\xf7\xed\x25\x4b\x4a\x3a\xf5\x09\xf4\xee\xa5\x0d\xe4\x48\x4c\x93\xef\xff\x7d\xf5\x84\x7d\xec\x15\xb2\x78\x41\x90\x75\x27\x14\xb3\xf3\x81\x73\x25\xf8\x55\x8f\x19\xc7\x2d\x6e\x68\x4f\x52\x5c\x89\x6b\x37\xd3\x9f\xdb\x8b\xf1\x7e\xd8\x06\x37\x50\x4e\x94\x4b\x8a\xdf\xa1\x4b\xe6\x1f\x24\xc2\xe7\x53\x6f\x7a\xeb\xdd\x26\x60\x89\x81\x4e\xd2\x28\xd8\x18\xc3\xa0\x1c\xcc\x73\xf9\xf7\x6e\x97\x42\xe8\x51\x87\x83\x86\x4e\x09\x68\xf9\x90\x2c\x6a\x61\x1c\xea\xb0\x83\x05\x6d\x01\xc8\x82\xc2\x28\x16\x10\x00\x5b\xc3\x42\x7f\x1b\x37\x2d\xbe\x6a\x01\x87\xbe\x39\xc2\x5e\x53\x43\x18\xf8\xef\x91\xb7\x9c\x13\x4f\x75\x0f\xc4\x99\xd2\x90\x92\xdd\xd9\xff\x5c\xcb\x7a\x05\xdd\xb0\xc7\xec\x64\xda\x91\x04\xaa\x18\x4c\x24\x3d\x9b\xe7\xeb\xdd\x52\xa6\xe6\x99\xae\x00\x89\x09\xbb\xaa\x0c\x05\x7b\x3c\x1c\x33\x7f\xed\xaf\x0d\x25\x0c\xa3\x4d\x50\xc6\x39\x81\x32\xb6\xbe\xaf\x31\x6c\x6f\x1a\x2e\x9d\xc9\x26\x75\xdf\xf1\xc6\xf6\xe9\x1a\xbb\x28\xf2\x40\xe8\xae\x8d\x61\x48\x9d\xb5\xba\xb6\x01\x9b\xc3\xb6\xd7\x7c\x68\x08\x41\x66\x5f\xba\xa9\x5f\x7c\x5f\x4d\x85\xbb\x06\x7e\xff\x0e\x00\x00\xff\xff\x2d\x20\x80\x5e\x3e\x09\x00\x00") - -func publicCssStylesCssBytes() ([]byte, error) { - return bindataRead( - _publicCssStylesCss, - "public/css/styles.css", - ) -} - +// publicCssStylesCss reads file data from disk. It returns an error on failure. func publicCssStylesCss() (*asset, error) { - bytes, err := publicCssStylesCssBytes() + path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\public\\css\\styles.css" + name := "public/css/styles.css" + bytes, err := bindataRead(path, name) if err != nil { return nil, err } - info := bindataFileInfo{name: "public/css/styles.css", size: 2366, mode: os.FileMode(438), modTime: time.Unix(1465649750, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _publicJsApplicationJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00") - -func publicJsApplicationJsBytes() ([]byte, error) { - return bindataRead( - _publicJsApplicationJs, - "public/js/application.js", - ) + fi, err := os.Stat(path) + if err != nil { + err = fmt.Errorf("Error reading asset info %s at %s: %v", name, path, err) + } + + a := &asset{bytes: bytes, info: fi} + return a, err } +// publicJsApplicationJs reads file data from disk. It returns an error on failure. func publicJsApplicationJs() (*asset, error) { - bytes, err := publicJsApplicationJsBytes() + path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\public\\js\\application.js" + name := "public/js/application.js" + bytes, err := bindataRead(path, name) if err != nil { return nil, err } - info := bindataFileInfo{name: "public/js/application.js", size: 0, mode: os.FileMode(438), modTime: time.Unix(1465589118, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _templatesBaseTmpl = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x54\x4f\x6f\xfb\x36\x0c\x3d\x67\xc0\xbe\x03\x27\xfc\x00\x27\x40\x6a\xa7\xc0\xba\x01\xad\x9d\xa1\xff\x80\x1d\xba\x6e\x58\x7b\xd9\x69\x50\x2c\x3a\x56\x27\x4b\x9e\x24\x27\xcd\x8c\x7c\xf7\x51\x96\xdd\x64\xc5\x7e\xb9\x98\x54\xc8\x47\x3e\xf2\x49\xf9\x77\x0f\xbf\xde\xbf\xfe\xf1\xdb\x23\xd4\xbe\x51\xeb\x6f\xbf\xc9\xc7\xef\x2c\xaf\x91\x8b\x60\xcc\x72\x2f\xbd\xc2\x75\xdf\xa7\xcf\xbc\xc1\xe3\x31\xcf\xe2\xc1\xf0\x5f\x83\x9e\x83\xa6\xf3\x82\xed\x24\xee\x5b\x63\x3d\x83\xd2\x68\x8f\xda\x17\x6c\x2f\x85\xaf\x0b\x81\x3b\x59\xe2\xc5\xe0\x2c\x41\x6a\xe9\x25\x57\x17\xae\xe4\x0a\x8b\xcb\x74\xc5\x06\xa4\x59\xee\x4a\x2b\x5b\x0f\xce\x96\x05\xab\xbd\x6f\xdd\x75\x96\x75\x0e\xd3\x8a\xd0\xf8\x1e\x9d\x69\x30\x2d\x4d\x93\xa1\xc0\xab\x1f\xae\x7e\xbc\xe4\xab\xf4\xcd\xb1\x75\x9e\xc5\xc4\x11\x45\x49\xfd\x17\xd4\x16\xab\x22\x99\x40\x02\x80\x4b\xb7\xc6\x6c\x15\xf2\x56\xba\x01\xa5\x74\xee\xa7\x8a\x37\x52\x1d\x8a\xdf\xcd\xc6\x78\x73\xfd\xfd\x6a\xb5\xbc\x5a\xad\x12\xb0\xa8\x8a\xc4\xf9\x83\x42\x57\x23\xfa\x04\xfc\xa1\xc5\x22\xf1\xf8\xee\x43\x5a\x32\x54\x02\x88\xa5\x42\x30\x3b\x05\xb3\x58\x9b\x65\x7f\x56\x52\x61\xc3\x35\xdf\xa2\x95\x34\x0e\xab\xb9\x0a\xd9\x59\x8c\x4d\xc9\xfc\x20\x1e\x4e\xc8\x8e\x5e\x36\xb9\x64\x4e\x3b\xc8\x37\x46\x1c\xc8\x00\xfa\x0d\x8b\x41\x3b\xe6\x0a\xb9\x83\x52\x71\xe7\x0a\x16\xa6\xce\xa5\x46\x3b\xe0\x02\xc4\xe0\xcb\x93\x03\xd0\xf7\x96\xeb\x2d\xc2\x97\xce\xaa\x25\x7c\x09\x7b\x83\xeb\x02\xd2\x3b\x4b\x98\xa5\xed\x9a\xcd\x2f\xbc\x3d\x1e\xfb\x5e\x56\x80\x7f\x0f\x61\xc0\x32\x46\x3b\xe7\x23\xaf\xbe\x0f\x87\xc7\x23\x5b\xff\x4c\xfb\xc8\x33\x4e\xba\x40\x2d\xc6\x1c\x8d\xe7\x39\x72\x4d\xcb\x91\xeb\xff\xc9\x25\x4b\x8f\x5a\x3a\x03\x18\x3e\xa7\xd6\xb3\xd8\x7b\x18\x09\xb1\x9c\xd8\x67\x1f\xf4\x07\xb7\x21\xc6\xa3\x1d\xe8\x81\xc7\xa6\x55\xdc\x23\xb0\x51\x84\x0c\xd2\x07\x4e\x1a\x0d\xc8\x11\x60\x4c\x21\xdc\xca\x18\x3f\x4d\xf2\x05\xed\x0e\x05\xec\xa5\xaf\x81\x3a\x1e\xd6\xaa\x8d\x69\x91\x06\x0a\xda\x10\x01\xb4\x96\x66\x3b\x72\x99\xb4\x55\x72\x21\x0e\x2e\xe4\xda\x20\x2b\xb6\xbe\x0f\x07\x81\x56\x3a\x94\xc8\xce\x6a\x4c\x0a\x1f\xe4\xc4\x06\x39\xbd\xf1\x1d\x8f\xa7\xa3\x18\xaa\x4e\x97\x5e\x1a\x0d\xca\xd0\xfd\x90\xff\x20\x35\x8f\x5e\x36\x38\xc7\x70\x75\x04\xbe\x2f\x81\xdb\x05\xf4\x43\xf4\x8c\x66\x3e\xc7\x34\x40\xdd\x47\xba\x50\x14\x05\x74\x14\x57\x91\x12\xc4\x47\xdc\xcc\xa2\xef\xac\xbe\x89\xde\x31\x7e\x76\xdc\x82\x80\x82\xb6\xb6\x87\x50\x86\x90\xb6\xe8\x6f\xbd\xb7\x72\xd3\x91\x9b\x88\xb1\x76\xb2\x58\xdc\x9c\xea\x49\xf7\xcc\x9f\xe7\x62\x71\x02\xff\x04\x72\xd6\xce\x94\xf7\x95\xc4\xff\xb6\x35\xf5\x35\x7e\x3e\xf1\x02\x91\x7a\xf3\x14\xa6\x82\x2f\xd4\xa1\xde\xce\x47\xf0\x18\x1e\xc8\x84\x5e\x9f\xa4\x0b\xc1\xb7\xd6\xf2\x43\xda\x5a\xba\xd8\x61\xdc\xa9\x53\xf4\x04\xa5\x94\xac\xe6\xc2\x94\x5d\x43\x90\x81\xec\x23\xdd\x51\x32\xdd\xdd\xe1\x95\x6f\xc3\xf3\x36\x67\x01\x84\x4d\x84\x27\x44\x7a\x84\xec\x23\x2f\xeb\xf9\xe7\xb5\xc4\xb8\xf3\x37\x28\xcf\xc6\xcb\x4a\x52\x8d\x6f\xe9\xbf\x01\x00\x00\xff\xff\xdd\xf5\x33\x13\x65\x05\x00\x00") - -func templatesBaseTmplBytes() ([]byte, error) { - return bindataRead( - _templatesBaseTmpl, - "templates/base.tmpl", - ) + fi, err := os.Stat(path) + if err != nil { + err = fmt.Errorf("Error reading asset info %s at %s: %v", name, path, err) + } + + a := &asset{bytes: bytes, info: fi} + return a, err } +// templatesBaseTmpl reads file data from disk. It returns an error on failure. func templatesBaseTmpl() (*asset, error) { - bytes, err := templatesBaseTmplBytes() + path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\templates\\base.tmpl" + name := "templates/base.tmpl" + bytes, err := bindataRead(path, name) if err != nil { return nil, err } - info := bindataFileInfo{name: "templates/base.tmpl", size: 1381, mode: os.FileMode(438), modTime: time.Unix(1465648069, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _templatesListingTmpl = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x57\x6d\x4f\xe3\x46\x10\xfe\x0c\x12\xff\x61\xb5\x95\x10\x7c\xb0\x63\x87\x97\x92\x34\x76\xa5\xaa\xaa\x8a\x04\xb4\x2a\xf4\xcb\x7d\xdb\x64\xc7\xf1\xea\xfc\xc2\xed\x6e\x48\x72\x56\xfe\xfb\xcd\xf8\x25\x31\x21\x07\x41\xe1\x10\xa7\x48\xc9\xd8\x3b\xfb\xcc\xcc\x33\xcf\xae\x26\x45\xc1\x24\x44\x2a\x03\xc6\x47\x79\x66\x21\xb3\x9c\x2d\x16\x07\xfb\x03\xa9\x1e\xd8\x28\x11\xc6\x04\x3c\x05\x2b\x78\x78\xb0\xbf\x57\xbe\x54\x32\xe0\x66\x92\xa6\x42\xcf\x79\xe3\x41\x5b\x05\x82\xe8\xd2\x6d\x6f\x60\xee\x45\xd6\xde\xed\x28\x0b\x29\x0f\x07\xc3\xb0\x28\xdc\x9b\x49\xfa\xa7\xd2\x66\xb1\x18\x74\x86\x21\x93\x4a\xc3\xc8\xe6\xba\x28\x54\xc4\xe0\x0b\xf3\xd9\xca\x61\x5e\x14\x90\x18\x58\x2c\x14\x18\x34\x33\x49\x7b\x08\x7b\xbb\x28\x7f\xa9\x04\x9a\x30\x11\xda\x65\x08\xac\xb4\x0a\x51\xaf\x6e\x00\x2e\x0a\x87\x55\x9e\x1e\x73\x2f\x11\xd3\x5c\xa9\x14\xb1\xe5\x5d\x4e\xd4\x7c\x3f\xf2\x51\x1e\xb1\x69\xac\x46\x31\xcb\xb3\x64\xce\xaa\x44\xd6\x01\xca\x74\x84\x06\xac\xdc\xdc\x27\x62\x0e\xf2\x78\x2d\x76\x99\x0f\xd1\xdd\x41\xbe\xf1\x6d\xf3\x4b\x9f\x76\x5f\x12\x65\xac\xca\xc6\x55\x6b\xac\x18\x26\xf0\xb4\x1f\x18\x49\x09\x47\x82\x19\x69\x35\x04\x39\x9c\xaf\x9a\x57\x91\x68\x63\x10\xb2\x36\x75\xf9\x4b\xef\x2a\xa3\x61\x42\x64\x92\x1d\x61\x6f\xdc\xdb\x5c\x5b\xc6\x33\x91\x02\x3f\x66\x47\x48\x90\xfb\x8f\x96\xa0\x19\xa7\x00\xfc\xb8\x62\x07\x01\x04\x8b\x35\x44\x01\xff\xdd\xe0\x86\x80\xfc\x0f\x73\x72\x0c\xc8\xaf\x69\xc3\x06\x72\x0f\x13\xb2\x83\x0d\xac\xd5\x5d\xe2\xe1\x0d\x82\xb1\x81\x79\x18\xb3\xa9\x92\x36\x0e\xb8\x8f\xcc\xb3\x18\xd4\x38\xb6\x01\x77\x4f\xe9\xe9\x01\xb4\x51\x79\x86\x6b\xae\x8f\x4f\x0a\xa6\x7f\xe4\xb3\x80\x7b\x18\xd2\xef\xba\xbd\x6e\xd7\xef\x9d\xb2\x73\xd7\x3b\x39\xbb\xb8\xe8\xf5\x50\x31\x13\x03\x6c\x96\xa8\xec\x73\xbf\xca\xfb\x97\xc9\xbd\x23\xb4\xce\xa7\xb8\xd6\xc1\x45\xfc\xc6\x88\xf8\x2d\x5a\xc4\x90\x34\xb7\x63\x47\x6c\x47\x8e\xf8\x39\xb8\x91\xf9\x34\xdb\x8e\x9d\x77\x2a\x79\x2d\x70\x7d\x7a\x30\x6c\xa7\x11\xf2\x4b\x8a\x36\xea\xeb\xab\x14\x4d\xfe\x6f\xa6\xe8\x5b\x04\xfb\xd0\x8a\xde\xc0\xce\x73\x8a\x6e\x91\xb3\x73\x7b\xdf\x87\x9b\x9d\x15\xfd\xd6\x25\x6f\xa5\xe8\xe6\xb2\x8f\x95\x04\xba\xfc\xf9\xb3\x12\xb7\xea\x75\x97\x36\xf9\xbf\x99\xc4\xaf\x73\xa9\x22\x05\xf2\x43\xcb\x7c\x03\x43\xcf\xc9\xbc\x45\xd0\xce\x3d\x7f\x3f\x7e\x76\x96\xfa\x8f\x28\xfb\x45\xb9\xa3\xa1\x1b\xa3\x35\xaf\x0c\x73\x39\x2f\xe7\xa2\x6a\xa3\x16\xd9\x18\xea\x44\xea\x41\x6d\x35\xd2\xc8\x70\xad\x1c\x4c\xec\xff\xff\xae\x28\x8d\x6a\xa1\x39\x37\xee\xa5\xc1\xe9\xb3\xa9\x7e\x6f\xa0\x9a\x73\x16\x09\x16\x09\x27\xca\x13\x92\x06\x5a\xdd\x59\x3d\x5d\xe1\x01\x94\x80\x4d\xb1\x7a\x02\xc4\xaa\x6a\x23\xb6\xa9\x7c\x0a\x86\x33\xa8\x63\x61\x66\x9d\xfc\x15\x88\x4b\x7e\xd6\x26\xd1\x72\xf2\x28\x67\x5f\x34\x1e\x4d\xb4\x44\x5c\x4d\x31\x32\x58\x53\xb1\xa9\x5e\xe4\x89\x49\x81\x03\x6d\xd5\x61\xee\xf8\x3c\x3c\x4c\xa5\x30\xf1\x6f\x8f\x37\xb6\xca\x5a\xdf\x83\x09\xd0\x1d\x46\xcc\xa2\xf9\xf7\x24\x15\x59\xf5\xbc\x86\xb0\x6a\x33\x02\x3c\xb9\xcb\x06\x24\x34\xc2\x05\x32\x4a\xd4\x12\x0a\x35\x73\x47\x2b\xbc\xeb\x79\xe7\x8e\xe7\x3b\x5e\xf7\xce\x3f\xeb\x7b\xa7\x7d\xef\xec\x13\x6f\x07\x5d\x7a\x7a\x7e\xc7\xeb\x76\xc8\x9f\x79\x27\x95\x27\xfb\xf7\x9a\x39\xde\xaf\x7d\xcf\xe3\x65\x5e\xe8\x17\x2e\xd3\x5b\xaa\xed\x51\x9a\xf8\xb6\xd6\x1b\x99\x94\x64\x6b\x34\xc7\xbf\x51\xe8\x58\xfe\x73\xfa\x16\x00\x00\xff\xff\x5e\x54\x3a\xef\x52\x0d\x00\x00") - -func templatesListingTmplBytes() ([]byte, error) { - return bindataRead( - _templatesListingTmpl, - "templates/listing.tmpl", - ) + fi, err := os.Stat(path) + if err != nil { + err = fmt.Errorf("Error reading asset info %s at %s: %v", name, path, err) + } + + a := &asset{bytes: bytes, info: fi} + return a, err } +// templatesListingTmpl reads file data from disk. It returns an error on failure. func templatesListingTmpl() (*asset, error) { - bytes, err := templatesListingTmplBytes() + path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\templates\\listing.tmpl" + name := "templates/listing.tmpl" + bytes, err := bindataRead(path, name) if err != nil { return nil, err } - info := bindataFileInfo{name: "templates/listing.tmpl", size: 3410, mode: os.FileMode(438), modTime: time.Unix(1465682438, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _templatesSingleTmpl = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x8f\x41\xca\xc3\x20\x10\x85\xf7\x81\xdc\x61\xf0\x00\xc9\xe6\xe7\x5f\x99\x2c\xda\x2b\xf4\x02\xa2\x93\x30\x10\x35\xd5\xb4\x50\xc4\xbb\x57\x4d\x0d\x2d\xb4\xcb\x79\xef\x7d\x03\x5f\x08\xa0\x70\x22\x83\xc0\xa4\x35\x1b\x9a\x8d\x41\x8c\x6d\xd3\x36\x5c\x0b\x32\x20\x17\xe1\xfd\x50\xba\x74\xa2\x63\x63\xee\x00\x12\x47\x13\xe0\x15\xba\xcb\x63\x4d\x30\x69\x31\xe3\x8e\x02\x70\xd2\x33\x78\x27\x07\x16\x42\x77\x12\x1e\xff\xff\x62\xcc\x64\xe1\x70\xf1\xf8\x09\x8b\x9b\x22\x7b\xc0\xe5\xfa\x8a\xf3\xbe\x74\xbf\x1f\xdd\x49\xa1\xad\x02\xc7\xe6\xf5\x77\x75\x38\xa6\xa4\x3b\xef\x9e\x69\xc5\xfb\x9c\xd5\xa5\x51\xd5\xbc\xcf\xea\x45\xf4\x2d\x7f\x06\x00\x00\xff\xff\xb9\x79\x52\x14\x2a\x01\x00\x00") - -func templatesSingleTmplBytes() ([]byte, error) { - return bindataRead( - _templatesSingleTmpl, - "templates/single.tmpl", - ) + fi, err := os.Stat(path) + if err != nil { + err = fmt.Errorf("Error reading asset info %s at %s: %v", name, path, err) + } + + a := &asset{bytes: bytes, info: fi} + return a, err } +// templatesSingleTmpl reads file data from disk. It returns an error on failure. func templatesSingleTmpl() (*asset, error) { - bytes, err := templatesSingleTmplBytes() + path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\templates\\single.tmpl" + name := "templates/single.tmpl" + bytes, err := bindataRead(path, name) if err != nil { return nil, err } - info := bindataFileInfo{name: "templates/single.tmpl", size: 298, mode: os.FileMode(438), modTime: time.Unix(1465651677, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil + fi, err := os.Stat(path) + if err != nil { + err = fmt.Errorf("Error reading asset info %s at %s: %v", name, path, err) + } + + a := &asset{bytes: bytes, info: fi} + return a, err } // Asset loads and returns the asset for the given name.