@ -0,0 +1,70 @@ | |||
<?php | |||
/** | |||
* | |||
* | |||
* | |||
*/ | |||
class Filemanager | |||
{ | |||
/** | |||
* | |||
* | |||
* @param [type] $path [description] | |||
* @return [type] [description] | |||
*/ | |||
public function find($path) | |||
{ | |||
$results = []; | |||
// getting files from directory | |||
$files = scandir($path); | |||
foreach($files as $file) { | |||
// ignore parent directories | |||
if ($file === '.' || $file === '..') { | |||
continue; | |||
} | |||
// getting meta for file | |||
$meta = stat($path.'/'.$file); | |||
$result = [ | |||
'filename' => $file, | |||
'is_file' => is_file($path.'/'.$file), | |||
'meta' => [ | |||
'updated_at' => \Carbon\Carbon::parse($meta['mtime'])->format('d.m.Y h:m:i') | |||
] | |||
]; | |||
if ($result['is_file']) { | |||
$result['size'] = $this->formatBytes($meta['size']); | |||
} | |||
$results[] = $result; | |||
} | |||
return $results; | |||
} | |||
/** | |||
* | |||
* @param [type] $size [description] | |||
* @param integer $precision [description] | |||
* @return [type] [description] | |||
*/ | |||
private function formatBytes($size, $precision = 1) | |||
{ | |||
if ($size === 0) { | |||
return '0 bytes'; | |||
} | |||
$base = log($size, 1024); | |||
$suffixes = array('bytes', 'kB', 'MB', 'G', 'T'); | |||
return round(pow(1024, $base - floor($base)), $precision).' '.$suffixes[floor($base)]; | |||
} | |||
} |
@ -1 +1,13 @@ | |||
(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{null:function(n,w){}}]); | |||
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["spritemap"],{ | |||
/***/ null: | |||
/*!******************************!*\ | |||
!*** spritemap-dummy-module ***! | |||
\******************************/ | |||
/***/ (function(module, exports) { | |||
/***/ }) | |||
}]); |
@ -1 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg"><symbol id="icon-add-circle" viewBox="0 0 30 30"><title>add-circle</title><path d="M21.27 16.23v-2.461h-5.039V8.73H13.77v5.039H8.731v2.461h5.039v5.039h2.461V16.23h5.039zM15 2.52q5.156 0 8.818 3.662T27.48 15t-3.662 8.818T15 27.48t-8.818-3.662T2.52 15t3.662-8.818T15 2.52z"/></symbol><symbol id="icon-email" viewBox="0 0 30 30"><title>email</title><path d="M25.02 10.02V7.5L15 13.77 4.98 7.5v2.52L15 16.231zm0-5.04q.996 0 1.729.762t.732 1.758v15q0 .996-.732 1.758t-1.729.762H4.981q-.996 0-1.729-.762T2.52 22.5v-15q0-.996.732-1.758t1.729-.762H25.02z"/></symbol><symbol id="icon-secret" viewBox="0 0 30 30"><title>secret</title><path d="M8.73 17.52q.996 0 1.758-.762T11.25 15t-.762-1.758-1.758-.762-1.729.762T6.269 15t.732 1.758 1.729.762zm7.09-5.04h12.949v5.039h-2.52v4.98h-4.98v-4.98H15.82q-.762 2.051-2.842 3.516T8.73 22.5q-3.105 0-5.303-2.197T1.23 15t2.197-5.303T8.73 7.5q2.168 0 4.248 1.465t2.842 3.516z"/></symbol><symbol id="icon-tag" viewBox="0 0 30 30"><title>tag</title><path d="M6.855 8.73q.762 0 1.318-.557t.557-1.318-.557-1.318-1.318-.557-1.318.557-.557 1.318.557 1.318 1.318.557zm19.922 5.743q.703.703.703 1.758t-.703 1.758l-8.789 8.789q-.703.703-1.758.703t-1.758-.703l-11.25-11.25q-.703-.703-.703-1.758V4.981q0-.996.732-1.729T4.98 2.52h8.789q1.055 0 1.758.703z"/></symbol></svg> | |||
<svg xmlns="http://www.w3.org/2000/svg"><symbol id="icon-add-circle" viewBox="0 0 30 30"><title>add-circle</title><path d="M21.27 16.23v-2.461h-5.039V8.73H13.77v5.039H8.731v2.461h5.039v5.039h2.461V16.23h5.039zM15 2.52q5.156 0 8.818 3.662T27.48 15t-3.662 8.818T15 27.48t-8.818-3.662T2.52 15t3.662-8.818T15 2.52z"/></symbol><symbol id="icon-back" viewBox="0 0 30 30"><title>back</title><path d="M12.48 11.25q6.094.879 9.404 4.658t4.365 9.111q-4.512-6.387-13.77-6.387v5.098L3.749 15l8.73-8.73v4.98z"/></symbol><symbol id="icon-email" viewBox="0 0 30 30"><title>email</title><path d="M25.02 10.02V7.5L15 13.77 4.98 7.5v2.52L15 16.231zm0-5.04q.996 0 1.729.762t.732 1.758v15q0 .996-.732 1.758t-1.729.762H4.981q-.996 0-1.729-.762T2.52 22.5v-15q0-.996.732-1.758t1.729-.762H25.02z"/></symbol><symbol id="icon-folder" viewBox="0 0 30 30"><title>folder</title><path d="M12.48 4.98L15 7.5h10.02q.996 0 1.729.762t.732 1.758V22.5q0 .996-.732 1.758t-1.729.762H4.981q-.996 0-1.729-.762T2.52 22.5v-15q0-.996.732-1.758t1.729-.762h7.5z"/></symbol><symbol id="icon-secret" viewBox="0 0 30 30"><title>secret</title><path d="M8.73 17.52q.996 0 1.758-.762T11.25 15t-.762-1.758-1.758-.762-1.729.762T6.269 15t.732 1.758 1.729.762zm7.09-5.04h12.949v5.039h-2.52v4.98h-4.98v-4.98H15.82q-.762 2.051-2.842 3.516T8.73 22.5q-3.105 0-5.303-2.197T1.23 15t2.197-5.303T8.73 7.5q2.168 0 4.248 1.465t2.842 3.516z"/></symbol><symbol id="icon-tag" viewBox="0 0 30 30"><title>tag</title><path d="M6.855 8.73q.762 0 1.318-.557t.557-1.318-.557-1.318-1.318-.557-1.318.557-.557 1.318.557 1.318 1.318.557zm19.922 5.743q.703.703.703 1.758t-.703 1.758l-8.789 8.789q-.703.703-1.758.703t-1.758-.703l-11.25-11.25q-.703-.703-.703-1.758V4.981q0-.996.732-1.729T4.98 2.52h8.789q1.055 0 1.758.703z"/></symbol></svg> |
@ -0,0 +1,5 @@ | |||
<!-- Generated by IcoMoon.io --> | |||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30"> | |||
<title>back</title> | |||
<path d="M12.48 11.25q6.094 0.879 9.404 4.658t4.365 9.111q-4.512-6.387-13.77-6.387v5.098l-8.73-8.73 8.73-8.73v4.98z"></path> | |||
</svg> |
@ -0,0 +1,5 @@ | |||
<!-- Generated by IcoMoon.io --> | |||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30"> | |||
<title>folder</title> | |||
<path d="M12.48 4.98l2.52 2.52h10.020q0.996 0 1.729 0.762t0.732 1.758v12.48q0 0.996-0.732 1.758t-1.729 0.762h-20.039q-0.996 0-1.729-0.762t-0.732-1.758v-15q0-0.996 0.732-1.758t1.729-0.762h7.5z"></path> | |||
</svg> |
@ -0,0 +1,23 @@ | |||
<urban-filemanager-directory> | |||
<div class="file-table__row"> | |||
<div class="file-table__column file-table__column--select" onchange={ (event) => { props.handleMarked(event, this) } }> | |||
<input type="checkbox" value="true" /> | |||
</div> | |||
<div class="file-table__column file-table__column--filename" onclick={ (event) => { props.handleClick(event, this) } }> | |||
<svg class="icon fill-primary mr-2" aria-hidden="true"> | |||
<use xlink:href="/symbol-defs.svg#icon-folder"></use> | |||
</svg> | |||
{ props.file.filename } | |||
</div> | |||
<div class="file-table__column file-table__column--date"> | |||
<div class="file-table__inner has-text-right">{ props.file.meta.updated_at }</div> | |||
</div> | |||
</div> | |||
<script> | |||
export default { | |||
} | |||
</script> | |||
</urban-filemanager-directory> |
@ -0,0 +1,20 @@ | |||
<urban-filemanager-parent> | |||
<div class="file-table__row"> | |||
<div class="file-table__column file-table__column--select"> | |||
</div> | |||
<div class="file-table__column file-table__column--filename" onclick={ (event) => { props.handleClick(event, this) } }> | |||
<svg class="icon fill-grey mr-2" aria-hidden="true"> | |||
<use xlink:href="/symbol-defs.svg#icon-back"></use> | |||
</svg> | |||
.. | |||
</div> | |||
</div> | |||
<script> | |||
export default { | |||
} | |||
</script> | |||
</urban-filemanager-parent> |
@ -0,0 +1,44 @@ | |||
/** | |||
* | |||
* | |||
* | |||
*/ | |||
@mixin component__file-table() | |||
{ | |||
.file-table { | |||
display: block; | |||
width: 100%; | |||
&__row { | |||
display: flex; | |||
flex-wrap: wrap; | |||
padding: 5px 0; | |||
border-bottom: 1px solid $grey; | |||
} | |||
&__inner { | |||
width: 100%; | |||
} | |||
&__column { | |||
display: flex; | |||
flex: 2; | |||
align-items: center; | |||
&--select { | |||
max-width: 30px; | |||
input[type=checkbox] { | |||
margin: -17px 0 0 0; | |||
} | |||
} | |||
} | |||
} | |||
.bucket-filemanager { | |||
padding: 10px 15px 15px 15px; | |||
border: 1px solid $grey-light; | |||
} | |||
} |
@ -0,0 +1,26 @@ | |||
/** | |||
* | |||
* | |||
* | |||
*/ | |||
@mixin component__icon() | |||
{ | |||
.icon { | |||
display: inline-block; | |||
font-size: inherit; | |||
height: 1.5em; | |||
width: 1.5em; | |||
overflow: visible; | |||
max-height: 100%; | |||
max-width: 100%; | |||
} | |||
.fill-primary { | |||
fill: $primary; | |||
} | |||
.fill-grey { | |||
fill: $grey; | |||
} | |||
} |