some big changes
parent
03ac5ad5e1
commit
852d39b8e3
|
@ -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 ?
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
});
|
|
@ -3,21 +3,41 @@
|
|||
<head>
|
||||
<title>{{.Name}}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script src="https://use.fontawesome.com/ede56571a0.js"></script>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<link href='https://fonts.googleapis.com/css?family=Roboto:400,500' rel='stylesheet' type='text/css'>
|
||||
<link rel="stylesheet" href="/_filemanagerinternal/css/styles.css">
|
||||
|
||||
<script src="/_filemanagerinternal/js/application.js"></script>
|
||||
<style>
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="container">
|
||||
<h1>
|
||||
{{range $url, $name := .BreadcrumbMap}}{{if eq $url "/"}}<a href="{{$url}}">Home</a>{{end}}{{if ne $url "/"}}<i>></i><a href="{{$url}}">{{$name}}</a>{{end}}{{end}}
|
||||
</h1>
|
||||
<div>
|
||||
<p>File Manager <i class="material-icons">chevron_right</i> {{ .Name }}</p>
|
||||
</div>
|
||||
<div>
|
||||
Search
|
||||
</div>
|
||||
<div>
|
||||
<div class="action" id="upload"><i class="material-icons">file_upload</i></div>
|
||||
</div>
|
||||
</header>
|
||||
<div id="toolbar">
|
||||
<div>
|
||||
<div class="action" id="back"><i class="material-icons">arrow_back</i></div>
|
||||
<p><span id="selected-number">0</span> selected.</p>
|
||||
</div>
|
||||
<div>
|
||||
<div class="action" id="open"><i class="material-icons">open_in_new</i></div>
|
||||
<div class="action" id="rename"><i class="material-icons">mode_edit</i></div>
|
||||
<div class="action" id="download"><i class="material-icons">file_download</i></div>
|
||||
<div class="action" id="delete"><i class="material-icons">delete</i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
File Manager {{range $url, $name := .BreadcrumbMap}}<i>></i><a href="/{{$url}}">{{$name}}</a>{{end}}
|
||||
<main>
|
||||
{{ template "content" .Data }}
|
||||
</main>
|
||||
|
|
|
@ -1,16 +1,7 @@
|
|||
{{ define "content" }}
|
||||
<div class="meta">
|
||||
<div id="summary" class="container">
|
||||
<span class="meta-item"><b>{{.NumDirs}}</b> director{{if eq 1 .NumDirs}}y{{else}}ies{{end}}</span>
|
||||
<span class="meta-item"><b>{{.NumFiles}}</b> file{{if ne 1 .NumFiles}}s{{end}}</span>
|
||||
{{- if ne 0 .ItemsLimitedTo}}
|
||||
<span class="meta-item">(of which only <b>{{.ItemsLimitedTo}}</b> are displayed)</span>
|
||||
{{- end}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="listing">
|
||||
<div>There are {{.NumDirs}}</b> director{{if eq 1 .NumDirs}}y{{else}}ies{{end}} and {{.NumFiles}}</b> file{{if ne 1 .NumFiles}}s{{end}} in here.</div>
|
||||
|
||||
<table class="container" aria-describedby="summary">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -50,9 +41,9 @@
|
|||
<td>
|
||||
<a href="{{.URL}}">
|
||||
{{- if .IsDir}}
|
||||
<i class="fa fa-folder fa-2x" aria-hidden="true"></i>
|
||||
<i class="material-icons">folder</i>
|
||||
{{- else}}
|
||||
<i class="fa fa-file-text-o fa-2x" aria-hidden="true"></i>
|
||||
<i class="material-icons">insert_drive_file</i>
|
||||
{{- end}}
|
||||
<span class="name">{{.Name}}</span>
|
||||
</a>
|
||||
|
|
171
binary.go
171
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.
|
||||
|
|
Loading…
Reference in New Issue