diff --git a/assets/binary.go b/assets/binary.go index 9b681519..f96d6d21 100644 --- a/assets/binary.go +++ b/assets/binary.go @@ -8,6 +8,7 @@ // assets/public/js/form2js.js // assets/templates/actions.tmpl // assets/templates/base.tmpl +// assets/templates/buttons.tmpl // assets/templates/editor.tmpl // assets/templates/frontmatter.tmpl // assets/templates/listing.tmpl @@ -183,6 +184,24 @@ func templatesBaseTmpl() (*asset, error) { return a, err } +// templatesButtonsTmpl reads file data from disk. It returns an error on failure. +func templatesButtonsTmpl() (*asset, error) { + path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\templates\\buttons.tmpl" + name := "templates/buttons.tmpl" + bytes, err := bindataRead(path, name) + if err != nil { + return nil, err + } + + 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 +} + // templatesEditorTmpl reads file data from disk. It returns an error on failure. func templatesEditorTmpl() (*asset, error) { path := "D:\\Code\\Go\\src\\github.com\\hacdias\\caddy-filemanager\\assets\\templates\\editor.tmpl" @@ -333,6 +352,7 @@ var _bindata = map[string]func() (*asset, error){ "public/js/form2js.js": publicJsForm2jsJs, "templates/actions.tmpl": templatesActionsTmpl, "templates/base.tmpl": templatesBaseTmpl, + "templates/buttons.tmpl": templatesButtonsTmpl, "templates/editor.tmpl": templatesEditorTmpl, "templates/frontmatter.tmpl": templatesFrontmatterTmpl, "templates/listing.tmpl": templatesListingTmpl, @@ -395,6 +415,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "templates": &bintree{nil, map[string]*bintree{ "actions.tmpl": &bintree{templatesActionsTmpl, map[string]*bintree{}}, "base.tmpl": &bintree{templatesBaseTmpl, map[string]*bintree{}}, + "buttons.tmpl": &bintree{templatesButtonsTmpl, map[string]*bintree{}}, "editor.tmpl": &bintree{templatesEditorTmpl, map[string]*bintree{}}, "frontmatter.tmpl": &bintree{templatesFrontmatterTmpl, map[string]*bintree{}}, "listing.tmpl": &bintree{templatesListingTmpl, map[string]*bintree{}}, diff --git a/assets/public/css/styles.css b/assets/public/css/styles.css index 4b265daa..4b693333 100644 --- a/assets/public/css/styles.css +++ b/assets/public/css/styles.css @@ -1,13 +1,13 @@ /* NORMALIZE CSS */ html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100% + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% } body { - margin: 0 + margin: 0 } article, @@ -22,137 +22,137 @@ menu, nav, section, summary { - display: block + display: block } audio, canvas, progress, video { - display: inline-block + display: inline-block } audio:not([controls]) { - display: none; - height: 0 + display: none; + height: 0 } progress { - vertical-align: baseline + vertical-align: baseline } template, [hidden] { - display: none + display: none } a { - background-color: transparent; - -webkit-text-decoration-skip: objects + background-color: transparent; + -webkit-text-decoration-skip: objects } a:active, a:hover { - outline-width: 0 + outline-width: 0 } abbr[title] { - border-bottom: none; - text-decoration: underline; - text-decoration: underline dotted + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted } b, strong { - font-weight: inherit + font-weight: inherit } b, strong { - font-weight: bolder + font-weight: bolder } dfn { - font-style: italic + font-style: italic } h1 { - font-size: 2em; - margin: 0.67em 0 + font-size: 2em; + margin: 0.67em 0 } mark { - background-color: #ff0; - color: #000 + background-color: #ff0; + color: #000 } small { - font-size: 80% + font-size: 80% } sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline } sub { - bottom: -0.25em + bottom: -0.25em } sup { - top: -0.5em + top: -0.5em } img { - border-style: none; - max-width: 100%; + border-style: none; + max-width: 100%; } svg:not(:root) { - overflow: hidden + overflow: hidden } code, kbd, pre, samp { - font-family: monospace, monospace; - font-size: 1em + font-family: monospace, monospace; + font-size: 1em } figure { - margin: 1em 40px + margin: 1em 40px } hr { - box-sizing: content-box; - height: 0; - overflow: visible + box-sizing: content-box; + height: 0; + overflow: visible } button, input, select, textarea { - font: inherit; - margin: 0 + font: inherit; + margin: 0 } optgroup { - font-weight: bold + font-weight: bold } button, input { - overflow: visible + overflow: visible } button, select { - text-transform: none + text-transform: none } button, @@ -160,26 +160,26 @@ button, html [type="button"], [type="reset"], [type="submit"] { - /* -webkit-appearance: button; */ - text-decoration: none; - color: #fff !important; - background-color: #26a69a; - text-align: center; - letter-spacing: .5px; - -webkit-transition: .2s ease-out; - transition: .2s ease-out; - cursor: pointer; - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); - border: none; - border-radius: 2px; - display: inline-block; - height: 2.25em; - line-height: 2.25em; - outline: 0; - padding: 0 2rem; - text-transform: uppercase; - vertical-align: middle; - -webkit-tap-highlight-color: transparent; + /* -webkit-appearance: button; */ + text-decoration: none; + color: #fff !important; + background-color: #26a69a; + text-align: center; + letter-spacing: .5px; + -webkit-transition: .2s ease-out; + transition: .2s ease-out; + cursor: pointer; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + border: none; + border-radius: 2px; + display: inline-block; + height: 2.25em; + line-height: 2.25em; + outline: 0; + padding: 0 2rem; + text-transform: uppercase; + vertical-align: middle; + -webkit-tap-highlight-color: transparent; } button::-moz-focus-inner, @@ -187,8 +187,8 @@ button::-moz-focus-inner, . [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0 + border-style: none; + padding: 0 } button:-moz-focusring, @@ -197,781 +197,858 @@ button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText + outline: 1px dotted ButtonText } fieldset { - border: none; - margin: 0; - padding: 0; - -webkit-column-break-inside: avoid; - page-break-inside: avoid; - break-inside: avoid; + border: none; + margin: 0; + padding: 0; + -webkit-column-break-inside: avoid; + page-break-inside: avoid; + break-inside: avoid; } legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal } textarea { - overflow: auto + overflow: auto } [type="checkbox"], [type="radio"] { - box-sizing: border-box; - padding: 0 + box-sizing: border-box; + padding: 0 } [type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { - height: auto + height: auto } [type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px + -webkit-appearance: textfield; + outline-offset: -2px } [type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { - -webkit-appearance: none + -webkit-appearance: none } ::-webkit-input-placeholder { - color: inherit; - opacity: 0.54 + color: inherit; + opacity: 0.54 } ::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit + -webkit-appearance: button; + font: inherit } /* TANANANA */ body { - font-family: 'Roboto', sans-serif; - padding-top: 5em; - background-color: #fcfcfc; - text-rendering: optimizespeed; + font-family: 'Roboto', sans-serif; + padding-top: 5em; + background-color: #fcfcfc; + text-rendering: optimizespeed; } a { - text-decoration: none; - color: #006ed3; + text-decoration: none; + color: #006ed3; } a:hover, h1 a:hover { - color: #319cff; + color: #319cff; } #summary, header { - padding-right: 7%; - padding-left: 7%; + padding-right: 7%; + padding-left: 7%; } td:first-child, th:first-child { - padding-left: 1em; + padding-left: 1em; } td:last-child, th:last-child { - padding-right: 1em; + padding-right: 1em; } h1 { - font-size: 1.5em; - font-weight: normal; - overflow-x: hidden; - white-space: nowrap; - text-overflow: ellipsis; + font-size: 1.5em; + font-weight: normal; + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis; } h1 a { - color: inherit; + color: inherit; } h1 a:hover { - text-decoration: underline; + text-decoration: underline; } main { - display: block; + display: block; } .meta-item { - margin-right: 1em; + margin-right: 1em; } table { - width: 100%; - border-collapse: collapse; + width: 100%; + border-collapse: collapse; } tr { - cursor: pointer; - -webkit-transition: 0.1s ease all; - transition: 0.1s ease all; - border-bottom: 1px dashed #dadada; + cursor: pointer; + -webkit-transition: 0.1s ease all; + transition: 0.1s ease all; + border-bottom: 1px dashed #dadada; } tr.selected { - background-color: #ccc; + background-color: #ccc; } td, th { - padding: 1em 0; - text-align: left; + padding: 1em 0; + text-align: left; } th { - font-size: 16px; - padding-top: 15px; - padding-bottom: 15px; - white-space: nowrap; + font-size: 16px; + padding-top: 15px; + padding-bottom: 15px; + white-space: nowrap; } th a { - color: black; + color: black; } th svg { - vertical-align: middle; + vertical-align: middle; } td { - font-size: 14px; + font-size: 14px; } td:first-child { - width: 50%; + width: 50%; } td:last-child, th:last-child { - text-align: right; + text-align: right; } td:first-child svg { - position: absolute; + position: absolute; } td .goup, td .name { - margin-left: 1.1em; - vertical-align: middle; - white-space: pre-wrap; - word-break: break-all; - color: #424242; - overflow-wrap: break-word; + margin-left: 1.1em; + vertical-align: middle; + white-space: pre-wrap; + word-break: break-all; + color: #424242; + overflow-wrap: break-word; } footer { - font-size: 0.6em; - margin: 3em 0 2em; - text-align: center; - color: grey; + font-size: 0.6em; + margin: 3em 0 2em; + text-align: center; + color: grey; } footer a, footer a:hover { - color: inherit; + color: inherit; } .container { - width: 95%; - max-width: 960px; - margin: 0 auto; + width: 95%; + max-width: 960px; + margin: 0 auto; } pre { - padding: 1em; - border: 1px solid #e6e6e6; - border-radius: 0.5em; - background-color: #f5f5f5; + padding: 1em; + border: 1px solid #e6e6e6; + border-radius: 0.5em; + background-color: #f5f5f5; } @media (max-width: 600px) { - .hideable { - display: none; - } - td:first-child { - width: auto; - } - td:nth-child(2), - th:nth-child(2) { - padding-right: 5%; - text-align: right; - } + .hideable { + display: none; + } + td:first-child { + width: auto; + } + td:nth-child(2), + th:nth-child(2) { + padding-right: 5%; + text-align: right; + } } /* MY STYLES */ * { - box-sizing: border-box; + box-sizing: border-box; } /* MATERIAL ICONS */ .material-icons { - font-family: 'Material Icons'; - font-size: 1.5em; - font-weight: normal; - font-style: normal; - line-height: 1; - /* Preferred icon size */ - display: inline-block; - white-space: nowrap; - letter-spacing: normal; - text-transform: none; - word-wrap: normal; - 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. */ - -webkit-font-feature-settings: 'liga'; - font-feature-settings: 'liga'; + font-family: 'Material Icons'; + font-size: 1.5em; + font-weight: normal; + font-style: normal; + line-height: 1; + /* Preferred icon size */ + display: inline-block; + white-space: nowrap; + letter-spacing: normal; + text-transform: none; + word-wrap: normal; + 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. */ + -webkit-font-feature-settings: 'liga'; + font-feature-settings: 'liga'; } /* HEADER */ header { - z-index: 999; - padding: 1.7em 0; - background-color: #2196f3; + z-index: 999; + padding: 1.7em 0; + background-color: #2196f3; } header h1 { - font-size: 2em; - margin: 0; + font-size: 2em; + margin: 0; } header a, header a:hover { - color: inherit; + color: inherit; } header p { - font-size: 1.5em; + font-size: 1.5em; } header p i { - font-size: 1em !important; - color: rgba(255, 255, 255, .31); + font-size: 1em !important; + color: rgba(255, 255, 255, .31); } header #logout { - background-color: rgba(0, 0, 0, 0.1); - border-radius: 0; - margin: -0.5em -0.5em -0.5em 0; - padding: .5em; + background-color: rgba(0, 0, 0, 0.1); + border-radius: 0; + margin: -0.5em -0.5em -0.5em 0; + padding: .5em; } header p i { - vertical-align: middle; + vertical-align: middle; } -header #search { - position: relative; - display: inline-block; - height: 100%; - padding: 0.75em; - vertical-align: middle; - color: #fff; - border-radius: 0.3em; - background-color: #1e88e5; - transition: .1s ease all; +#search { + position: relative; + display: inline-block; + height: 100%; + padding: 0.75em; + vertical-align: middle; + color: #fff; + border-radius: 0.3em; + background-color: #1e88e5; + transition: .1s ease all; } -header #search.active { - background-color: #fff; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); +#search.active { + background-color: #fff; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); } -header #search.active i, -header #search.active input { - color: #212121; +#search.active i, +#search.active input { + color: #212121; } -header #search i, -header #search input { - vertical-align: middle; +#search i, +#search input { + vertical-align: middle; } -header #search i { - margin-right: 0.3em; - color: rgba(255, 255, 255, .5); +#search i { + margin-right: 0.3em; + color: rgba(255, 255, 255, .5); } -header #search input { - min-width: 20em; - border: 0; - outline: 0; - color: #fff; - background-color: transparent; +#search input { + min-width: 20em; + border: 0; + outline: 0; + color: #fff; + background-color: transparent; } -header #search.active div { - visibility: visible; - opacity: 1; - top: 100%; +#search.active div { + visibility: visible; + opacity: 1; + top: 100%; } -header #search div { - position: absolute; - top: 0; - width: 100%; - left: 0; - z-index: 999999; - background-color: #fff; - text-align: left; - color: #ccc; - box-shadow: 0 2px 3px rgba(0, 0, 0, .06), 0 2px 2px rgba(0, 0, 0, .12); - padding: .5em; - border-bottom-left-radius: .3em; - border-bottom-right-radius: .3em; - transition: .1s ease all; - visibility: hidden; - opacity: 0; +#search div { + position: absolute; + top: 0; + width: 100%; + left: 0; + z-index: 999999; + background-color: #fff; + text-align: left; + color: #ccc; + box-shadow: 0 2px 3px rgba(0, 0, 0, .06), 0 2px 2px rgba(0, 0, 0, .12); + padding: .5em; + border-bottom-left-radius: .3em; + border-bottom-right-radius: .3em; + transition: .1s ease all; + visibility: hidden; + opacity: 0; } -header #search.active div i { - color: #ccc; - display: block; - text-align: center; +#search.active div i, +#sidebar #search.active div i { + color: #ccc; + display: block; + text-align: center; } -header #search::-webkit-input-placeholder { - /* WebKit, Blink, Edge */ - color: rgba(255, 255, 255, .5); +#search::-webkit-input-placeholder { + /* WebKit, Blink, Edge */ + color: rgba(255, 255, 255, .5); } -header #search:-moz-placeholder { - opacity: 1; - /* Mozilla Firefox 4 to 18 */ - color: rgba(255, 255, 255, .5); +#search:-moz-placeholder { + opacity: 1; + /* Mozilla Firefox 4 to 18 */ + color: rgba(255, 255, 255, .5); } -header #search::-moz-placeholder { - opacity: 1; - /* Mozilla Firefox 19+ */ - color: rgba(255, 255, 255, .5); +#search::-moz-placeholder { + opacity: 1; + /* Mozilla Firefox 19+ */ + color: rgba(255, 255, 255, .5); } -header #search:-ms-input-placeholder { - /* Internet Explorer 10-11 */ - color: rgba(255, 255, 255, .5); +#search:-ms-input-placeholder { + /* Internet Explorer 10-11 */ + color: rgba(255, 255, 255, .5); } #toolbar, header { - position: fixed; - top: 0; - left: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - width: 100%; - padding: 0.5em; - color: #fff; + position: fixed; + top: 0; + left: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + padding: 0.5em; + color: #fff; } #toolbar div, header div { - vertical-align: middle; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; + vertical-align: middle; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; } #toolbar p, header p { - display: inline-block; - margin: 0; - vertical-align: middle; + display: inline-block; + margin: 0; + vertical-align: middle; +} + +header #open-nav { + display: none; } #toolbar p a, #toolbar p a:hover, header p a, header p a:hover { - color: inherit; + color: inherit; } #toolbar { - z-index: 1000; - top: -4em; - -webkit-transition: 0.2s ease-in-out all; - transition: 0.2s ease-in-out all; - opacity: 0; - color: #fff; - background-color: #6f6f6f; + z-index: 1000; + top: -4em; + -webkit-transition: 0.2s ease-in-out all; + transition: 0.2s ease-in-out all; + opacity: 0; + color: #fff; + background-color: #6f6f6f; } #toolbar.enabled { - top: 0; - opacity: 1; + top: 0; + opacity: 1; } #toolbar div:nth-child(2), header div:nth-child(2) { - text-align: right; + text-align: right; } .action { - display: inline-block; - margin: 0 0.2em; - cursor: pointer; - -webkit-transition: 0.2s ease all; - transition: 0.2s ease all; - border: 0; - border-radius: 50%; + display: inline-block; + margin: 0 0.2em; + cursor: pointer; + -webkit-transition: 0.2s ease all; + transition: 0.2s ease all; + border: 0; + border-radius: 50%; } .action.disabled { - opacity: 0.2; - cursor: not-allowed; + opacity: 0.2; + cursor: not-allowed; } .action i { - padding: 0.5em; - -webkit-transition: 0.2s ease-in-out all; - transition: 0.2s ease-in-out all; - border-radius: 50%; + padding: 0.5em; + -webkit-transition: 0.2s ease-in-out all; + transition: 0.2s ease-in-out all; + border-radius: 50%; } .action:hover i { - background-color: rgba(0, 0, 0, .1); + background-color: rgba(0, 0, 0, .1); +} + +header .action span { + display: none; } .floating { - position: fixed; - bottom: 1em; - right: 1em; + position: fixed; + bottom: 1em; + right: 1em; } .floating .action { - background-color: #68EFAD; - color: #306e50; - box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); + background-color: #68EFAD; + color: #306e50; + box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); } #newdir { - position: fixed; - bottom: 1.3em; - right: 5em; - transition: .2s ease all; - opacity: 0; - border: 0; - box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24); - padding: .5em; - width: 10em; - border-radius: .2em; + position: fixed; + bottom: 1.3em; + right: 5em; + transition: .2s ease all; + opacity: 0; + border: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24); + padding: .5em; + width: 10em; + border-radius: .2em; } #newdir.enabled { - opacity: 1; + opacity: 1; } *, *:hover, *:active, *:focus { - outline: 0 + outline: 0 } +/* SIDEBAR */ + + /* LISTING */ #listing { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 0 0.5em; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding: 0 0.5em; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } #listing.list { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } #listing .item { - margin: 0 0.5em 1em; - padding: 0.5em; - cursor: pointer; - -webkit-transition: 0.2s ease all; - transition: 0.2s ease all; - border: 0.2em solid #fff; - border-radius: 0.2em; - background-color: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - position: relative; + margin: 0 0.5em 1em; + padding: 0.5em; + cursor: pointer; + -webkit-transition: 0.2s ease all; + transition: 0.2s ease all; + border: 0.2em solid #fff; + border-radius: 0.2em; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + position: relative; } #listing .item:hover .checkbox { - opacity: 1; + opacity: 1; } #listing .item .checkbox { - position: absolute; - top: -.9em; - right: -.9em; - border-radius: 50%; - background: #fff; - border: 0; - -webkit-appearance: initial; - box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); - line-height: 0; - padding: .4em; - transition: .2s ease all; - opacity: 0; + position: absolute; + top: -.9em; + right: -.9em; + border-radius: 50%; + background: #fff; + border: 0; + -webkit-appearance: initial; + box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); + line-height: 0; + padding: .4em; + transition: .2s ease all; + opacity: 0; } #listing .checkbox i { - font-size: 1em; - margin: 0; + font-size: 1em; + margin: 0; } .item:hover { - box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !important; + box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !important; } .item.selected { - border-color: #6f6f6f !important; + border-color: #6f6f6f !important; } .item div { - display: inline-block; - vertical-align: middle; + display: inline-block; + vertical-align: middle; } .item p { - font-size: 0.9em; - margin: 0; - color: #4e4e4e; + font-size: 0.9em; + margin: 0; + color: #4e4e4e; } .item span { - font-weight: bold; + font-weight: bold; } .item i { - font-size: 4em; - margin-right: 0.1em; + font-size: 4em; + margin-right: 0.1em; } .item a, .item a:hover { - color: #6f6f6f; + color: #6f6f6f; } /* ANIMATIONS */ i.spin { - -webkit-animation: 1s spin linear infinite; - animation: 1s spin linear infinite; + -webkit-animation: 1s spin linear infinite; + animation: 1s spin linear infinite; } @-webkit-keyframes spin { - 100% { - -webkit-transform: rotate(-360deg); - transform: rotate(-360deg); - } + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } } @keyframes spin { - 100% { - -webkit-transform: rotate(-360deg); - transform: rotate(-360deg); - } + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } } /* EDITOR */ #editor .frontmatter { - -webkit-column-count: 2; - -moz-column-count: 2; - column-count: 2; - -webkit-column-gap: 1em; - -moz-column-gap: 1em; - column-gap: 1em; - margin-bottom: 1em; + -webkit-column-count: 2; + -moz-column-count: 2; + column-count: 2; + -webkit-column-gap: 1em; + -moz-column-gap: 1em; + column-gap: 1em; + margin-bottom: 1em; } #editor .group, #editor #editor-source { - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); - display: block; - border-radius: .2em; - padding: .5em; - margin-bottom: 1em; - -webkit-column-break-inside: avoid; - page-break-inside: avoid; - break-inside: avoid; - background-color: #fff; - display: inline-block; - width: 100%; - break-inside: avoid-column; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + display: block; + border-radius: .2em; + padding: .5em; + margin-bottom: 1em; + -webkit-column-break-inside: avoid; + page-break-inside: avoid; + break-inside: avoid; + background-color: #fff; + display: inline-block; + width: 100%; + break-inside: avoid-column; } #editor .block { - border-bottom: 1px solid #eee; - margin-bottom: .5em; - padding-bottom: .5em; + border-bottom: 1px solid #eee; + margin-bottom: .5em; + padding-bottom: .5em; } #editor .block:last-child { - border: 0; - margin: 0; - padding: 0; + border: 0; + margin: 0; + padding: 0; } #editor .block label { - display: block; - color: #212121; - font-weight: 500; + display: block; + color: #212121; + font-weight: 500; } #editor h3 { - margin: 0 0 .5em; - display: inline-block; - vertical-align: middle; - width: calc(100% - 2.5em); + margin: 0 0 .5em; + display: inline-block; + vertical-align: middle; + width: calc(100% - 2.5em); } #editor .block input, #editor .block .actions { - display: inline-block; + display: inline-block; } #editor .block input, #editor .block textarea, #editor fieldset input, #editor fieldset textarea { - border: 0; - background-color: transparent; - overflow: hidden; - color: #9E9E9E; - resize: none; - width: calc(100% - 1.5em); + border: 0; + background-color: transparent; + overflow: hidden; + color: #9E9E9E; + resize: none; + width: calc(100% - 1.5em); } #editor .action { - border: 0; - background-color: transparent; - font-size: .8em; - margin: 0; + border: 0; + background-color: transparent; + font-size: .8em; + margin: 0; } #editor .delete, #editor .add { - color: #ddd; + color: #ddd; } #editor i { - padding: 0; + padding: 0; } #editor .add:hover i { - color: #8BC34A; + color: #8BC34A; } #editor .delete:hover i { - color: #E53935; + color: #E53935; } #editor .add:hover i, #editor .delete:hover i { - background-color: transparent; + background-color: transparent; } #editor fieldset> .action { - opacity: 0; + opacity: 0; } #editor fieldset:hover> .action { - opacity: 1; + opacity: 1; } #editor textarea[name="content"] { - display: none; + display: none; } #editor fieldset fieldset { - margin-left: 1em; + margin-left: 1em; } #editor button span { - vertical-align: middle; - transition: 0.2s ease-in-out all; + vertical-align: middle; + transition: 0.2s ease-in-out all; } #editor button span i { - vertical-align: sub; - font-size: 1.3rem; - margin-right: .2em; + vertical-align: sub; + font-size: 1.3rem; + margin-right: .2em; } #editor #publish { - background-color: #167169; + background-color: #167169; } #editor .group.temp { - background-color: #f5f5f5; + background-color: #f5f5f5; } #editor .group.temp label { - font-weight: lighter; - font-size: .8em; - margin-bottom: 1em; - color: #7d7d7d; + font-weight: lighter; + font-size: .8em; + margin-bottom: 1em; + color: #7d7d7d; } #editor .group.temp input { - color: #212121; + color: #212121; } #editor .right { - display: inline-block; - text-align: right; - float: right; + display: inline-block; + text-align: right; + float: right; } @media screen and (max-width: 1024px) { - header p a:first-of-type, - header p i:first-of-type { - display: none; - } + header #prev { + display: none; + } + header #open-nav { + display: inline-block; + } + /* SIDEBAR */ + header> div:nth-child(2) { + position: fixed; + top: 0; + z-index: 999999; + background-color: #fff; + height: 100%; + width: 95%; + max-width: 20em; + text-align: left; + color: #212121; + left: -100%; + transition: .2s ease-in-out all; + } + header> div:nth-child(2).active { + left: 0; + } + header #search { + height: auto; + background-color: transparent; + color: #212121; + padding: 0; + border-bottom: 1px solid #eee; + border-radius: 0; + display: block; + } + header #search input { + color: #212121; + display: inline-block; + width: auto; + min-width: 0; + } + header #search i { + color: #212121; + display: inline-block; + padding: .5em; + margin: 0; + } + header> div:nth-child(2)> div { + display: block; + } + header> div:nth-child(2) .action { + border-radius: 0 !important; + padding: 0 !important; + margin: 0 !important; + text-align: left; + background-color: transparent !important; + } + header> div:nth-child(2) .action:hover { + background-color: rgba(0, 0, 0, .1); + } + header> div:nth-child(2) .action:hover i { + background-color: transparent; + } + header> div:nth-child(2) .action i { + border-radius: 0; + } + header> div:nth-child(2) .action span {} + header> div:nth-child(2) .action i, + header> div:nth-child(2) .action span { + vertical-align: middle; + display: inline-block; + } } diff --git a/assets/public/js/application.js b/assets/public/js/application.js index 22f31f6d..7b897f35 100644 --- a/assets/public/js/application.js +++ b/assets/public/js/application.js @@ -357,11 +357,11 @@ var handleViewType = function(viewList) { if (viewList == "true") { listing.classList.add('list'); - button.innerHTML = 'view_module'; + button.innerHTML = 'view_module Switch view'; return false; } - button.innerHTML = 'view_list'; + button.innerHTML = 'view_list Switch view'; listing.classList.remove('list'); return false; } @@ -766,6 +766,7 @@ document.addEventListener("editor", (event) => { * BOOTSTRAP * * * * * * * * * * * * * * * * * * */ + document.addEventListener("DOMContentLoaded", function(event) { // Add event to logout button document.getElementById("logout").addEventListener("click", event => { @@ -783,6 +784,9 @@ document.addEventListener("DOMContentLoaded", function(event) { document.getElementById("open").addEventListener("click", openEvent); document.getElementById("delete").addEventListener("click", deleteEvent); document.getElementById("download").addEventListener("click", downloadEvent); + document.getElementById("open-nav").addEventListener("click", event => { + let sidebar = document.querySelector("header > div:nth-child(2)").classList.toggle("active"); + }); if (document.getElementById('listing')) { document.sendCostumEvent('listing'); @@ -793,4 +797,4 @@ document.addEventListener("DOMContentLoaded", function(event) { } return false; -}); \ No newline at end of file +}); diff --git a/assets/templates/base.tmpl b/assets/templates/base.tmpl index f0616765..effeb83a 100644 --- a/assets/templates/base.tmpl +++ b/assets/templates/base.tmpl @@ -27,6 +27,10 @@ {{ end }} +
+ menu +
+

{{ if .Config.HugoEnabled }}Hugo{{ else }}File Manager{{ end }} @@ -38,27 +42,7 @@

- {{ if .IsDir}} - - - -
- view_headline -
-
- file_upload -
- {{ else }} - {{ template "actions" . }} - {{ end }} - -
- exit_to_app -
+ {{ template "buttons" . }}
diff --git a/assets/templates/buttons.tmpl b/assets/templates/buttons.tmpl new file mode 100644 index 00000000..5f9dce57 --- /dev/null +++ b/assets/templates/buttons.tmpl @@ -0,0 +1,23 @@ +{{ define "buttons" }} +{{ if .IsDir}} + + + +
+ view_headline Switch view +
+
+ file_upload Upload +
+ {{ else }} + {{ template "actions" . }} +{{ end }} + +
+ exit_to_app Logout +
+{{ end }} diff --git a/page/page.go b/page/page.go index 4037af88..da6ddcf1 100644 --- a/page/page.go +++ b/page/page.go @@ -82,7 +82,7 @@ func (p Page) PrintAsHTML(w http.ResponseWriter, templates ...string) (int, erro if p.Minimal { templates = append(templates, "actions", "minimal") } else { - templates = append(templates, "actions", "base") + templates = append(templates, "buttons", "actions", "base") } var tpl *template.Template