Skip to content

Commit 4783d0f

Browse files
committed
refactor folder controller
1 parent 0fa6cc4 commit 4783d0f

File tree

5 files changed

+58
-49
lines changed

5 files changed

+58
-49
lines changed

src/controllers/FolderController.php

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,30 @@ class FolderController extends LfmController
1515
*/
1616
public function getFolders()
1717
{
18-
$user_path = parent::getRootFolderPath('user');
19-
$lfm_user_path = parent::getFileName($user_path);
20-
$user_folders = parent::getDirectories($user_path);
18+
$folder_types = [];
19+
$root_folders = [];
2120

22-
$share_path = parent::getRootFolderPath('share');
23-
$lfm_share_path = parent::getFileName($share_path);
24-
$shared_folders = parent::getDirectories($share_path);
21+
if (parent::allowMultiUser()) {
22+
$folder_types['user'] = 'root';
23+
}
24+
25+
if (true) {
26+
$folder_types['share'] = 'shares';
27+
}
28+
29+
foreach ($folder_types as $folder_type => $lang_key) {
30+
$root_folder_path = parent::getRootFolderPath($folder_type);
31+
32+
array_push($root_folders, (object)[
33+
'name' => trans('laravel-filemanager::lfm.title-' . $lang_key),
34+
'path' => parent::getInternalPath($root_folder_path),
35+
'children' => parent::getDirectories($root_folder_path),
36+
'has_next' => !($lang_key == end($folder_types))
37+
]);
38+
}
2539

2640
return view('laravel-filemanager::tree')
27-
->with('allow_multi_user', parent::allowMultiUser())
28-
->with('user_dir', $lfm_user_path['long'])
29-
->with('dirs', $user_folders)
30-
->with('share_dir', $lfm_share_path['long'])
31-
->with('shares', $shared_folders);
41+
->with(compact('root_folders'));
3242
}
3343

3444

src/traits/LfmHelpers.php

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,13 @@ public function getDirectories($path)
145145
$arr_dir = [];
146146

147147
foreach ($all_directories as $directory) {
148-
$dir_name = $this->getFileName($directory);
148+
$directory_name = $this->getName($directory);
149149

150-
if ($dir_name['short'] !== $thumb_folder_name) {
151-
$arr_dir[] = $dir_name;
150+
if ($directory_name !== $thumb_folder_name) {
151+
$arr_dir[] = (object)[
152+
'name' => $directory_name,
153+
'path' => $this->getInternalPath($directory)
154+
];
152155
}
153156
}
154157

@@ -174,7 +177,17 @@ public function getUserSlug()
174177
return empty(auth()->user()) ? '' : auth()->user()->$slug_of_user;
175178
}
176179

177-
public function getFileName($file)
180+
public function getName($file)
181+
{
182+
$lfm_file_path = $this->getInternalPath($file);
183+
184+
$arr_dir = explode('/', $lfm_file_path);
185+
$file_name = end($arr_dir);
186+
187+
return $file_name;
188+
}
189+
190+
public function getInternalPath($file)
178191
{
179192
if ($this->isRunningOnWindows()) {
180193
$file = str_replace('\\', '/', $file);
@@ -183,11 +196,7 @@ public function getFileName($file)
183196
$working_dir_start = $lfm_dir_start + strlen($this->getPathPrefix('dir'));
184197
$lfm_file_path = substr($file, $working_dir_start);
185198

186-
$arr_dir = explode('/', $lfm_file_path);
187-
$arr_filename['short'] = end($arr_dir);
188-
$arr_filename['long'] = str_replace('//', '/', '/' . $lfm_file_path);
189-
190-
return $arr_filename;
199+
return str_replace('//', '/', '/' . $lfm_file_path);
191200
}
192201

193202
public function error($error_type, $variables = [])

src/views/folders.blade.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
<?php $folder_name = $dir_name['short']; ?>
2-
<?php $folder_path = $dir_name['long']; ?>
1+
<?php $folder_name = $directory->name; ?>
2+
<?php $folder_path = $directory->path; ?>
33

44
<div class="thumbnail clickable">
55
<div data-id="{{ $folder_path }}" class="folder-item square">

src/views/grid-view.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
@if((sizeof($files) > 0) || (sizeof($directories) > 0))
44

5-
@foreach($directories as $key => $dir_name)
5+
@foreach($directories as $directory)
66
<div class="col-sm-4 col-md-3 col-lg-2 img-row">
77
@include('laravel-filemanager::folders')
88
</div>

src/views/tree.blade.php

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,19 @@
11
<ul class="list-unstyled">
2-
@if($allow_multi_user)
3-
<li>
4-
<a class="clickable folder-item" data-id="{{ $user_dir }}">
5-
<i class="fa fa-folder-open"></i> {{ Lang::get('laravel-filemanager::lfm.title-root') }}
6-
</a>
7-
</li>
8-
@foreach($dirs as $key => $dir_name)
9-
<li style="margin-left: 10px;">
10-
<a class="clickable folder-item" data-id="{{ $dir_name['long'] }}">
11-
<i class="fa fa-folder"></i> {{ $dir_name['short'] }}
12-
</a>
13-
</li>
14-
@endforeach
15-
<hr>
16-
@endif
17-
<li>
18-
<a class="clickable folder-item" data-id="{{ $share_dir }}">
19-
<i class="fa fa-folder"></i> {{ Lang::get('laravel-filemanager::lfm.title-shares') }}
20-
</a>
21-
</li>
22-
@foreach($shares as $key => $dir_name)
23-
<li style="margin-left: 10px;">
24-
<a class="clickable folder-item" data-id="{{ $dir_name['long'] }}">
25-
<i class="fa fa-folder"></i> {{ $dir_name['short'] }}
26-
</a>
27-
</li>
2+
@foreach($root_folders as $root_folder)
3+
<li>
4+
<a class="clickable folder-item" data-id="{{ $root_folder->path }}">
5+
<i class="fa fa-folder"></i> {{ $root_folder->name }}
6+
</a>
7+
</li>
8+
@foreach($root_folder->children as $directory)
9+
<li style="margin-left: 10px;">
10+
<a class="clickable folder-item" data-id="{{ $directory->path }}">
11+
<i class="fa fa-folder"></i> {{ $directory->name }}
12+
</a>
13+
</li>
14+
@endforeach
15+
@if($root_folder->has_next)
16+
<hr>
17+
@endif
2818
@endforeach
2919
</ul>

0 commit comments

Comments
 (0)