diff --git a/assets/styles/app.css b/assets/styles/app.css index 6af0bd9..e93ede0 100644 --- a/assets/styles/app.css +++ b/assets/styles/app.css @@ -392,3 +392,12 @@ fieldset { width: 24; height: 24; } + +.toolbar-button { + background-color: var(--background-color); + border: 1px solid var(--color-text); +} + +.toolbar-item { + margin-right: 5px; +} diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml index 7eab89b..4c2432c 100644 --- a/config/packages/translation.yaml +++ b/config/packages/translation.yaml @@ -1,8 +1,7 @@ framework: - default_locale: en + default_locale: de translator: default_path: '%kernel.project_dir%/translations' fallbacks: - en - - de - + - de \ No newline at end of file diff --git a/security.yaml b/security.yaml deleted file mode 100644 index 3edec0e..0000000 --- a/security.yaml +++ /dev/null @@ -1 +0,0 @@ -# vim syn=yaml ts=2 sts=2 sw=2 smartindent expandtab diff --git a/src/Component/Sorter/FileSorter.php b/src/Component/Sorter/FileSorter.php index 4c20a26..3aad6a2 100644 --- a/src/Component/Sorter/FileSorter.php +++ b/src/Component/Sorter/FileSorter.php @@ -23,8 +23,8 @@ class FileSorter { static public function sortTypeDesc(array $element1,array $element2): int { if ($element1['dir'] === $element2['dir']) { - return (strcmp($element2,$element1)); - } elseif ($element1[dir]) { + return (strcmp($element2['name'],$element1['name'])); + } elseif ($element1['dir']) { return 1; } return -1; diff --git a/src/Controller/WebrootController.php b/src/Controller/WebrootController.php index 5b45406..e2056e2 100644 --- a/src/Controller/WebrootController.php +++ b/src/Controller/WebrootController.php @@ -87,6 +87,39 @@ abstract class WebrootController extends AbstractController ->findAbspathByUrl($url); } + public function getDisplayFileSize(int $size): string + { + $display_size = ""; + if ($size > 1073741824) { + $size_type = "GB"; + + $display_size .= ((int) ($size / 1073741824)) + . "." + . ((int) ((($size % 1073741824) * 10) / 1073741824)) + . " GiB"; + } elseif ($size > 1048576) { + $display_size .= ((int) ($size / 1048576)) + . "." + . ((int) ((($size % 1048576) * 10) / 1048576)) + . " MiB"; + } elseif ($size > 1024) { + $display_size .= ((int) ($size / 1024)) + . "." + . ((int) ((($size % 1024) * 10) / 1024)) + . " KiB"; + } else { + $display_size .= $size . " B"; + } + return $display_size; + } + + public function getDisplayMtime(int $mtime): string + { + $dt = new \DateTime(); + $dt->setTimestamp($mtime); + return $dt->format($this->trans("directory.timefmt",domain:'mydevel.webroot.app')); + } + protected function getDirectoryList(string $url): array { $abspath = $this->getAbspathByUrl($url); @@ -120,16 +153,20 @@ abstract class WebrootController extends AbstractController if (!$fileperm['read']) { continue; } - + $mtime = filemtime($file_abspath); if (is_file($file_abspath)) { + $filesize = filesize($file_abspath); + $dirlist[] = [ "name" => $dirent, "icon" => "icon-file", "href" => $fileurl, - "size" => filesize($file_abspath), + "size" => $filesize, + "display_size" => $this->getDisplayFileSize($filesize), "delete" => $fileperm['delete'], "write" => $fileperm['write'], - "mtime" => filemtime($file_abspath), + "mtime" => $mtime, + "display_mtime" => $this->getDisplayMtime($mtime), "read" => true, "dir" => false, ]; @@ -138,10 +175,12 @@ abstract class WebrootController extends AbstractController "name" => $dirent, "icon"=>"icon-directory", "href" => $fileurl, - "size" => "-", + "size" => "0", + "display_size" => "-", "delete" => $fileperm['delete'], "write" => $fileperm['write'], - "mtime" => filemtime($file_abspath), + "mtime" => $mtime, + "display_mtime" => $this->getDisplayMtime($mtime), "read" => true, "dir" => true, ]; @@ -158,28 +197,39 @@ abstract class WebrootController extends AbstractController throw AccessDeniedHttpException("You are not allowed to accesss this resource!"); } + $sort_url = [ + "type" => $url . "?S=T;0=A", + "name" => $url . "?S=N;T=A", + "size" => $url . "?S=S;T=A", + "date" => $url . "?S=D;T=A", + ]; + $sorter = FileSorter::class; switch ($sort) { case FileSortType::TYPE_ASC: uasort($dirlist,[$sorter,'sortTypeAsc']); + $sort_url["type"] = $url . "?S=T;O=D"; breaK; case FileSortType::TYPE_DESC: uasort($dirlist,[$sorter,'sortTypeDesc']); break; case FileSortType::NAME_ASC: uasort($dirlist,[$sorter,'sortNameAsc']); + $sort_url["name"] = $url . "?S=N;O=D"; break; case FileSortType::NAME_DESC: uasort($dirlist,[$sorter,'sortNameDesc']); break; case FileSortType::SIZE_ASC: uasort($dirlist,[$sorter,'sortSizeAsc']); + $sort_url["size"] = $url ."?S=S;O=D"; break; case FileSortType::SIZE_DESC: uasort($dirlist,[$sorter,'sortSizeDesc']); break; case FileSortType::DATE_ASC: uasort($dirlist,[$sorter,'sortDateAsc']); + $sort_url["date"] = $url . "?S=D;O=D"; break; case FileSortType::DATE_DESC: uasort($dirlist,[$sorter,'sortDateDesc']); @@ -190,6 +240,12 @@ abstract class WebrootController extends AbstractController return $this->render('webroot/directory.html.twig', array_merge( $this->getControllerVariables(), [ + "msg"=> [ + 'filename' => $this->trans("directory.filename",domain:'mydevel.webroot.app'), + 'mtime' => $this->trans("directory.mtime",domain:'mydevel.webroot.app'), + 'filesize' => $this->trans("directory.filesize",domain:'mydevel.webroot.app'), + 'title' => $this->trans("directory.title",["url"=>$url],domain:'mydevel.webroot.app'), + ], "parent_url"=>$routeconf['parent_url'], "url"=>$url, "read"=>$dirperm['read'], @@ -202,6 +258,7 @@ abstract class WebrootController extends AbstractController ? $this->generateUrl($routeconf['mkdir_route'],["path"=>$routeconf['path']]) . "/" : substr($this->generateUrl($routeconf['mkdir_route'],['path'=>"."]),0,-1)), "dir_entries"=>$dirlist, + "sort_url" => $sort_url, ] )); } @@ -212,6 +269,7 @@ abstract class WebrootController extends AbstractController return FileSortType::TYPE_ASC; } $sa = explode(";",$sort); + $s0 = $sa[0]; if (sizeof($sa) > 1) { $s1 = explode("=",$sa[1]); if (sizeof($s1) !== 2) { @@ -221,6 +279,7 @@ abstract class WebrootController extends AbstractController $s1 = ['O','A']; } + $ret = FileSortType::TYPE_ASC; switch ($s0) { case 'T': diff --git a/templates/webroot/directory.html.twig b/templates/webroot/directory.html.twig index 0c3575f..e4a8764 100644 --- a/templates/webroot/directory.html.twig +++ b/templates/webroot/directory.html.twig @@ -1,46 +1,46 @@ {% extends 'base.html.twig' %} -{% block body %} -

Index for {{ url }}

+{% block main %} +

{{ msg.title }}

{% if write %} - - create-icon - + - - upload-icon - + {% endif %}
- - - - + + + + + {% if parent_url %} - - - - + + + + + {% endif %} {% for entry in dir_entries %} - + - - + + {% endfor %} diff --git a/translations/mydevel.webroot.app+intl-icu.de.yaml b/translations/mydevel.webroot.app+intl-icu.de.yaml new file mode 100644 index 0000000..2eadbe4 --- /dev/null +++ b/translations/mydevel.webroot.app+intl-icu.de.yaml @@ -0,0 +1,6 @@ +directory: + timefmt: 'd.m.Y H:i:s' + filename: Dateiname + mtime: 'Zuletzt geändert' + filesize: Größe + title: 'Index für {url}' diff --git a/translations/mydevel.webroot.app+intl-icu.en.yaml b/translations/mydevel.webroot.app+intl-icu.en.yaml new file mode 100644 index 0000000..c8e9851 --- /dev/null +++ b/translations/mydevel.webroot.app+intl-icu.en.yaml @@ -0,0 +1,6 @@ +directory: + timefmt: 'Y.d.m H.i.s' + filename: 'Filename' + mtime: 'Last changed' + filesize: 'Size' + title: 'Index for {url}' diff --git a/translations/mydevel.webroot.de.yaml b/translations/mydevel.webroot.de.yaml deleted file mode 100644 index e07be7e..0000000 --- a/translations/mydevel.webroot.de.yaml +++ /dev/null @@ -1,13 +0,0 @@ -role: - superadmin: - name: __role.superadmin.name - descr: __role.superadmin.descr - admin: - name: __role.admin.name - descr: __role.admin.descr - user: - name: __role.user.name - descr: __role.user.descr - public: - name: __role.public.name - descr: __role.public.descr diff --git a/translations/mydevel.webroot.en.yaml b/translations/mydevel.webroot.en.yaml deleted file mode 100644 index e69de29..0000000
[icon]NameSizeLast changed[icon]{{ msg.filename }} {{ msg.filesize }}{{ msg.mtime }}

[icon]Zurück---Back [icon]---
[icon][icon] {{ entry.name }}{{ entry.size }}{{ entry.mtime }} {% if entry.delete %} @@ -48,6 +48,8 @@ [icon] {% endif %} {{ entry.display_size }}{{ entry.display_mtime }}