Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit b902911

Browse files
committed
v2.3.6
1 parent 82595e7 commit b902911

File tree

18 files changed

+262
-183
lines changed

18 files changed

+262
-183
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ new Vue({
6868
- toggle between `random names` & `original names` for uploaded files
6969
- download selected ["including bulk selection"](https://github.com/ctf0/Laravel-Media-Manager/wiki/Download-Files-as-a-ZipFile)
7070
- directly copy selected file link
71-
- use manager [from modal with ease](https://github.com/ctf0/Laravel-Media-Manager/wiki/Use-The-Manager-From-A-Modal)
71+
- use the manager
72+
+ [from modal with ease](https://github.com/ctf0/Laravel-Media-Manager/wiki/Use-The-Manager-From-A-Modal)
73+
+ [with any wysiwyg editor](https://github.com/ctf0/Laravel-Media-Manager/wiki/Use-The-Manager-With-Any-WYSIWYG-Editor)
7274
- auto scroll to selected item when using (left/up, right/down, home, end)
7375
- [lock/unlock selected files/folders](https://github.com/ctf0/Laravel-Media-Manager/wiki/Lock-Files-&-Folder) "***sqlite needs to be installed"***
7476
- search

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"require": {
2121
"php" : "~7.0",
2222
"illuminate/support": "5.4 || 5.5",
23+
"maennchen/zipstream-php": "^0.5.0",
2324
"ctf0/package-changelog": "^1.0"
2425
},
2526
"autoload": {

logs/v2.3.5.txt

Lines changed: 0 additions & 10 deletions
This file was deleted.

logs/v2.3.6.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Fix
2+
3+
- show correct total size in delete modal
4+
- add some sense to css classes
5+
- move dropzone file input inside its own form so you don’t have a bazillion inputs at the end of the DOM on each toggle of the modal
6+
- some cleanup to the media-controller
7+
8+
# New
9+
10+
- add support for WYSIWYG Editors
11+
https://github.com/ctf0/Laravel-Media-Manager/wiki/Use-The-Manager-With-Any-WYSIWYG-Editor
12+
- sidebar no selection icon is now a btn to reset “bulk select & search”
13+
14+
# Zip
15+
16+
- you can now download folders as a zip as well
17+
- the zipping is now done on server & downloaded as a stream, so no worries about memory issues nor you need to install any extra js packages
18+
- sadly no more progress for zipping as the form submit is not being handled by js, so any ideas/PRs are welcome
19+
20+
21+
# Update
22+
23+
- update readme
24+
- update assets
25+
- update wiki

src/Controllers/MediaController.php

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace ctf0\MediaManager\Controllers;
44

55
use Exception;
6+
use ZipStream\ZipStream;
67
use Illuminate\Http\Request;
78
use App\Http\Controllers\Controller;
89

@@ -107,9 +108,9 @@ public function upload(Request $request)
107108
$file_type = $one->getMimeType();
108109

109110
$original = $one->getClientOriginalName();
110-
$file_ext = $one->getClientOriginalExtension();
111-
$get_name = str_replace(".$file_ext", '', $original);
112-
$file_name = $random_name ? uniqid() . ".$file_ext" : $this->cleanName($get_name, null, $file_ext) . ".$file_ext";
111+
$get_name = pathinfo($original, PATHINFO_FILENAME);
112+
$file_ext = pathinfo($original, PATHINFO_EXTENSION);
113+
$file_name = $random_name ? uniqid() . ".$file_ext" : $this->cleanName($get_name, null) . ".$file_ext";
113114
$destination = "$upload_path/$file_name";
114115

115116
try {
@@ -355,4 +356,58 @@ public function lock_file(Request $request)
355356

356357
return response()->json(['message'=>"'$path' " . ucfirst($state)]);
357358
}
359+
360+
/**
361+
* zip folder.
362+
*
363+
* @param Request $request [description]
364+
*
365+
* @return [type] [description]
366+
*/
367+
public function folder_download(Request $request)
368+
{
369+
$name = $request->name;
370+
$dir = "{$request->folders}/$name";
371+
372+
return response()->stream(function () use ($name, $dir) {
373+
$zip = new ZipStream("$name.zip", [
374+
'content_type' => 'application/octet-stream',
375+
]);
376+
377+
foreach ($this->storageDisk->allFiles($dir) as $file) {
378+
$name = pathinfo($file, PATHINFO_BASENAME);
379+
$stream = $this->storageDisk->readStream($file);
380+
381+
$zip->addFileFromStream($name, $stream);
382+
}
383+
384+
$zip->finish();
385+
});
386+
}
387+
388+
/**
389+
* zip files.
390+
*
391+
* @param Request $request [description]
392+
*
393+
* @return [type] [description]
394+
*/
395+
public function files_download(Request $request)
396+
{
397+
$name = $request->name;
398+
$list = json_decode($request->list, true);
399+
400+
return response()->stream(function () use ($name, $list) {
401+
$zip = new ZipStream("$name.zip", [
402+
'content_type' => 'application/octet-stream',
403+
]);
404+
405+
foreach ($list as $file) {
406+
$stream = fopen($file['path'], 'r');
407+
$zip->addFileFromStream($file['name'], $stream);
408+
}
409+
410+
$zip->finish();
411+
});
412+
}
358413
}

src/Controllers/OpsTrait.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ protected function getData($dir)
2525
if (!preg_grep($pattern, [$folder])) {
2626
$time = $this->storageDisk->lastModified($folder);
2727
$files[] = [
28-
'name' => strpos($folder, '/') > 1 ? str_replace('/', '', strrchr($folder, '/')) : $folder,
28+
'name' => pathinfo($folder, PATHINFO_BASENAME),
2929
'type' => 'folder',
3030
'path' => $this->storageDisk->url($folder),
3131
'size' => $this->folderSize($folder),
@@ -40,7 +40,7 @@ protected function getData($dir)
4040
if (!preg_grep($pattern, [$file])) {
4141
$time = $this->storageDisk->lastModified($file);
4242
$files[] = [
43-
'name' => strpos($file, '/') > 1 ? str_replace('/', '', strrchr($file, '/')) : $file,
43+
'name' => pathinfo($file, PATHINFO_BASENAME),
4444
'type' => $this->storageDisk->mimeType($file),
4545
'path' => $this->storageDisk->url($file),
4646
'size' => $this->storageDisk->size($file),
@@ -109,7 +109,7 @@ protected function folderFiles($folder)
109109
}
110110

111111
/**
112-
* get file path from storange.
112+
* get file path from storage.
113113
*
114114
* @param [type] $disk [description]
115115
* @param [type] $name [description]

src/MediaRoutes.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public static function routes()
2121
Route::post('move_file', ['uses' => '\ctf0\MediaManager\Controllers\MediaController@move_file', 'as' => 'move_file']);
2222
Route::post('rename_file', ['uses' => '\ctf0\MediaManager\Controllers\MediaController@rename_file', 'as' => 'rename_file']);
2323
Route::post('lock_file', ['uses' => '\ctf0\MediaManager\Controllers\MediaController@lock_file', 'as' => 'lock_file']);
24+
25+
Route::post('folder_download', ['uses' => '\ctf0\MediaManager\Controllers\MediaController@folder_download', 'as' => 'folder_download']);
26+
Route::post('files_download', ['uses' => '\ctf0\MediaManager\Controllers\MediaController@files_download', 'as' => 'files_download']);
2427
});
2528
}
2629
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script>
2+
export default {
3+
name: 'editor-media-manager',
4+
data() {
5+
return {
6+
showModal: false
7+
}
8+
},
9+
methods: {
10+
toggleModal() {
11+
this.showModal = !this.showModal
12+
}
13+
},
14+
render() {}
15+
}
16+
</script>

src/resources/assets/js/components/media.vue

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import SelectedFile from './mixins/selected'
88
import Restriction from './mixins/restriction'
99
import Watchers from './mixins/watch'
1010
import Computed from './mixins/computed'
11-
import Download from './mixins/download'
1211
1312
import Bounty from 'vue-bounty'
1413
@@ -23,7 +22,6 @@ export default {
2322
LockFile,
2423
SelectedFile,
2524
Restriction,
26-
Download,
2725
Computed,
2826
Watchers
2927
],
@@ -80,8 +78,12 @@ export default {
8078
8179
navDirection: null,
8280
gradients: [
83-
'linear-gradient(45deg,#6FE594,#27A47C)',
84-
'linear-gradient(45deg,#F1467A,#FB949E)'
81+
'linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)',
82+
'linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%)',
83+
'linear-gradient(141deg, #12af2f 0%, #23d160 71%, #2ce28a 100%)',
84+
'linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%)',
85+
'linear-gradient(141deg, #ff0561 0%, #ff3860 71%, #ff5257 100%)',
86+
'linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)'
8587
]
8688
}
8789
},
@@ -134,6 +136,7 @@ export default {
134136
new Dropzone('#new-upload', {
135137
createImageThumbnails: false,
136138
parallelUploads: 10,
139+
hiddenInputContainer: '#new-upload',
137140
uploadMultiple: true,
138141
forceFallback: false,
139142
ignoreHiddenFiles: true,

src/resources/assets/js/components/mixins/download.js

Lines changed: 0 additions & 92 deletions
This file was deleted.

0 commit comments

Comments
 (0)