diff --git a/README.md b/README.md
index 6529722..e5b9274 100644
--- a/README.md
+++ b/README.md
@@ -4,11 +4,11 @@
-
+
-
+
diff --git a/src/App/Controllers/Modules/GetContent.php b/src/App/Controllers/Modules/GetContent.php
index 22e1f0e..fc4a78c 100644
--- a/src/App/Controllers/Modules/GetContent.php
+++ b/src/App/Controllers/Modules/GetContent.php
@@ -25,7 +25,7 @@ public function getFiles(Request $request)
return response()->json(
array_merge(
- $this->lockList($path),
+ $this->lockList(),
[
'files' => [
'path' => $path,
@@ -56,7 +56,7 @@ protected function getData($dir)
if (!preg_grep($pattern, [$path])) {
if ($this->GFI) {
- $info = $this->getFolderInfo($path);
+ $info = $this->getFolderInfoFromList($this->getFolderContent($path, true));
}
$list[] = [
@@ -95,7 +95,7 @@ protected function getData($dir)
}
/**
- * helpers for folder ops.
+ * get directory data.
*
* @param mixed $folder
* @param mixed $rec
@@ -109,23 +109,12 @@ protected function getFolderContent($folder, $rec = false)
);
}
- protected function getFolderInfo($folder)
- {
- return $this->getFolderInfoFromList(
- $this->getFolderContent($folder, true)
- );
- }
-
- protected function getFolderInfoFromList($list)
- {
- $list = collect($list)->where('type', 'file');
-
- return [
- 'count' => $list->count(),
- 'size' => $list->pluck('size')->sum(),
- ];
- }
-
+ /**
+ * filter directory data by type.
+ *
+ * @param [type] $list
+ * @param [type] $type
+ */
protected function getFolderListByType($list, $type)
{
$list = collect($list)->where('type', $type);
@@ -137,8 +126,18 @@ protected function getFolderListByType($list, $type)
return $items;
}
- protected function getDirectoriesList($location)
+ /**
+ * get folder size.
+ *
+ * @param [type] $list
+ */
+ protected function getFolderInfoFromList($list)
{
- return str_replace($location, '', $this->storageDisk->allDirectories($location));
+ $list = collect($list)->where('type', 'file');
+
+ return [
+ 'count' => $list->count(),
+ 'size' => $list->pluck('size')->sum(),
+ ];
}
}
diff --git a/src/App/Controllers/Modules/Lock.php b/src/App/Controllers/Modules/Lock.php
index 63d9284..9ebe48d 100644
--- a/src/App/Controllers/Modules/Lock.php
+++ b/src/App/Controllers/Modules/Lock.php
@@ -12,9 +12,9 @@ trait Lock
*
* @param [type] $dirs
*/
- public function getLockList(Request $request)
+ public function getLockList()
{
- return response()->json($this->lockList($request->path));
+ return response()->json($this->lockList());
}
/**
@@ -22,11 +22,10 @@ public function getLockList(Request $request)
*
* @param [type] $path
*/
- public function lockList($path)
+ public function lockList()
{
return [
'locked' => $this->db->pluck('path'),
- 'dirs' => $this->getDirectoriesList($path),
];
}
@@ -71,8 +70,7 @@ public function lockItem(Request $request)
// broadcast
broadcast(new MediaFileOpsNotifications([
- 'op' => 'lock',
- 'path' => $path,
+ 'op' => 'lock',
]))->toOthers();
return compact('result');
diff --git a/src/MediaRoutes.php b/src/MediaRoutes.php
index edd11f0..9330aa4 100644
--- a/src/MediaRoutes.php
+++ b/src/MediaRoutes.php
@@ -17,17 +17,16 @@ public static function routes()
app('router')->post('upload-cropped', ['uses' => "$controller@uploadEditedImage", 'as' => 'uploadCropped']);
app('router')->post('upload-link', ['uses' => "$controller@uploadLink", 'as' => 'uploadLink']);
- app('router')->post('files', ['uses' => "$controller@getFiles", 'as' => 'files']);
- app('router')->post('directories', ['uses' => "$controller@getFolders", 'as' => 'directories']);
- app('router')->post('new-folder', ['uses' => "$controller@createNewFolder", 'as' => 'new_folder']);
+ app('router')->post('get-files', ['uses' => "$controller@getFiles", 'as' => 'get_files']);
+ app('router')->post('create-new-folder', ['uses' => "$controller@createNewFolder", 'as' => 'new_folder']);
app('router')->post('delete-file', ['uses' => "$controller@deleteItem", 'as' => 'delete_file']);
app('router')->post('move-file', ['uses' => "$controller@moveItem", 'as' => 'move_file']);
app('router')->post('rename-file', ['uses' => "$controller@renameItem", 'as' => 'rename_file']);
- app('router')->post('change-vis', ['uses' => "$controller@changeItemVisibility", 'as' => 'change_vis']);
+ app('router')->post('change-visibility', ['uses' => "$controller@changeItemVisibility", 'as' => 'change_vis']);
app('router')->post('lock-file', ['uses' => "$controller@lockItem", 'as' => 'lock_file']);
app('router')->get('global-search', ['uses' => "$controller@globalSearch", 'as' => 'global_search']);
- app('router')->post('locked-list', ['uses' => "$controller@getLockList", 'as' => 'locked_list']);
+ app('router')->post('get-locked-list', ['uses' => "$controller@getLockList", 'as' => 'locked_list']);
app('router')->post('folder-download', ['uses' => "$controller@downloadFolder", 'as' => 'folder_download']);
app('router')->post('files-download', ['uses' => "$controller@downloadFiles", 'as' => 'files_download']);
diff --git a/src/resources/assets/js/components/globalSearch/button.vue b/src/resources/assets/js/components/globalSearch/button.vue
index 9570d9b..efe280c 100644
--- a/src/resources/assets/js/components/globalSearch/button.vue
+++ b/src/resources/assets/js/components/globalSearch/button.vue
@@ -3,7 +3,7 @@
:disabled="loading || isLoading"
:title="trans('glbl_search')"
class="button"
- @click="done ? showSearchPanel() : init()">
+ @click.stop="done ? showSearchPanel() : init()">
diff --git a/src/resources/assets/js/components/globalSearch/panel.vue b/src/resources/assets/js/components/globalSearch/panel.vue
index e80bdc0..c79bc35 100644
--- a/src/resources/assets/js/components/globalSearch/panel.vue
+++ b/src/resources/assets/js/components/globalSearch/panel.vue
@@ -32,7 +32,7 @@
-
@@ -48,48 +48,25 @@
-
-
-
-
-
-
-
+
{{ item.name }}
+ @click.stop="goToFolder(item.dir_path, item.name)">
{{ item.dir_path }}
@@ -99,12 +76,12 @@
{{ item.last_modified_formated }}
+ @click.stop="deleteItem(item, i)">
{{ trans('delete') }}
+ @click.stop="addToMovableList(item)">
{{ inMovableList(item) ? trans('added') : trans('add_to_list') }}
@@ -123,7 +100,7 @@
+ @click.stop="closePanel()"/>
@@ -153,7 +130,7 @@ export default {
data() {
return {
filesIndex: [],
- filterdList: [],
+ filterdFilesList: [],
search: '',
noData: false,
linkCopied: false,
@@ -169,7 +146,7 @@ export default {
})
},
listCount() {
- return this.filterdList.length
+ return this.filterdFilesList.length
}
},
methods: {
@@ -187,7 +164,7 @@ export default {
})
EventHub.listen('global-search-deleted', (path) => {
- let list = this.filterdList
+ let list = this.filterdFilesList
return list.some((e, i) => {
if (e.path == path) {
@@ -220,12 +197,12 @@ export default {
let search = this.search
if (search) {
- this.filterdList = this.fuseLib.search(search)
+ this.filterdFilesList = this.fuseLib.search(search)
return this.noData = this.listCount ? false : true
}
- this.filterdList = []
+ this.filterdFilesList = []
}, 500),
ontransitionend() {
this.noData = this.search && !this.listCount ? true : false
diff --git a/src/resources/assets/js/components/image/editor/controls.vue b/src/resources/assets/js/components/image/editor/controls.vue
index 7fb3b60..e63ab16 100644
--- a/src/resources/assets/js/components/image/editor/controls.vue
+++ b/src/resources/assets/js/components/image/editor/controls.vue
@@ -1,14 +1,15 @@
-
diff --git a/src/resources/assets/js/components/image/editor/filters/controls.vue b/src/resources/assets/js/components/image/editor/filters/controls.vue
index 79599b3..c477ab0 100644
--- a/src/resources/assets/js/components/image/editor/filters/controls.vue
+++ b/src/resources/assets/js/components/image/editor/filters/controls.vue
@@ -16,7 +16,7 @@
+ @click.stop="resetFilter()">
@@ -43,7 +43,7 @@
:class="{'is-active': isUsed()}"
:disabled="processing"
class="btn-plain"
- @click="update()">
+ @click.stop="update()">
diff --git a/src/resources/assets/js/components/image/editor/filters/presets.vue b/src/resources/assets/js/components/image/editor/filters/presets.vue
index 3f4311d..05d74ff 100644
--- a/src/resources/assets/js/components/image/editor/filters/presets.vue
+++ b/src/resources/assets/js/components/image/editor/filters/presets.vue
@@ -1,18 +1,24 @@
-
{{ trans('presets') }}
+
+ {{ trans('presets') }}
+
-
-
diff --git a/src/resources/assets/js/components/image/editor/glitch/controls.vue b/src/resources/assets/js/components/image/editor/glitch/controls.vue
deleted file mode 100644
index 1a00262..0000000
--- a/src/resources/assets/js/components/image/editor/glitch/controls.vue
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
- {{ name }}
-
-
-
-
-
-
-
diff --git a/src/resources/assets/js/components/image/editor/glitch/index.vue b/src/resources/assets/js/components/image/editor/glitch/index.vue
deleted file mode 100644
index 93e68e0..0000000
--- a/src/resources/assets/js/components/image/editor/glitch/index.vue
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
- randomize
-
-
-
-
-
-
diff --git a/src/resources/assets/js/components/image/editor/main.vue b/src/resources/assets/js/components/image/editor/main.vue
index 5c7c09c..65a99ca 100644
--- a/src/resources/assets/js/components/image/editor/main.vue
+++ b/src/resources/assets/js/components/image/editor/main.vue
@@ -6,50 +6,35 @@
@@ -112,9 +97,11 @@
:disabled="processing || !hasChanged"
:title="trans('crop_reset')"
class="btn-plain"
- @click="operations('reset')">
-
+ @click.stop="operations('reset')">
+
+
+
@@ -122,9 +109,11 @@
:disabled="processing || !croppedByUser"
:title="trans('clear')"
class="btn-plain"
- @click="operations('clear')">
-
+ @click.stop="operations('clear')">
+
+
+
@@ -132,9 +121,11 @@
:disabled="processing || !hasChanged"
:title="trans('crop_apply')"
class="btn-plain"
- @click="applyChanges()">
-
+ @click.stop="applyChanges()">
+
+
+
@@ -155,7 +146,6 @@ export default {
filters: require('./filters/index.vue').default,
presets: require('./filters/presets.vue').default,
controls: require('./controls.vue').default,
- // glitch: require('./glitch/index.vue').default,
imageCompare: require('vue-image-compare2').default
},
props: [
@@ -176,7 +166,7 @@ export default {
diffOriginal: null,
diffCurrent: null,
showDiff: false,
- showGlitch: false,
+ diffDisable: true,
hasChanged: false,
processing: false,
@@ -210,7 +200,7 @@ export default {
)
},
hiddenBtns() {
- if (this.showDiff || this.showGlitch) {
+ if (this.showDiff) {
return {
opacity: 0,
visibility: 'hidden',
@@ -356,6 +346,7 @@ export default {
this.hasChanged = false
this.croppedByUser = false
this.reset = true
+ this.diffDisable = true
cropper.reset() // position, rotation, flip, zoom
cropper.clear() // selection
@@ -373,10 +364,7 @@ export default {
// filters
resetFilters() {
- if (this.showGlitch) {
- return EventHub.fire('reset-glitch')
- }
-
+ this.diffDisable = true
this.camanFilters = {}
this.imageCaman.reset()
this.imageCropper.replace(this.initData, true) // init
@@ -416,9 +404,6 @@ export default {
cropper.replace(this.toBase64(), true)
})
},
- toggleGlitch() {
- this.showGlitch = !this.showGlitch
- },
// save
getCropperData(cropper = this.imageCropper) {
@@ -471,9 +456,6 @@ export default {
},
// diff
- showDiffBtn() {
- return !this.file.type.includes('gif')
- },
toggleDiff() {
this.showDiff = !this.showDiff
},
@@ -497,12 +479,12 @@ export default {
scaleY: y < 1 ? -y : y // reset flip-vertical
})
- if (this.haveFilters()) {
- cropperClone.replace(this.initData, true)
- this.diffOriginal = this.getCropperData(cropperClone)
- } else {
+ cropperClone.replace(this.initData, true)
+
+ // make sure the returned original render is correct
+ setTimeout(() => {
this.diffOriginal = this.getCropperData(cropperClone)
- }
+ }, 100)
},
// utils
@@ -520,6 +502,11 @@ export default {
}
},
watch: {
+ hasChanged(val) {
+ if (val) {
+ this.diffDisable = false
+ }
+ },
showDiff(val) {
if (val) {
this.processing = true // hide main canvas
diff --git a/src/resources/assets/js/components/manager.vue b/src/resources/assets/js/components/manager.vue
index 8cc93b1..58bff6e 100644
--- a/src/resources/assets/js/components/manager.vue
+++ b/src/resources/assets/js/components/manager.vue
@@ -39,7 +39,8 @@ export default {
usageIntroPanel: require('./usageIntro/panel.vue').default,
uploadPreview: require('./utils/upload-preview.vue').default,
InfiniteLoading: require('vue-infinite-loading').default,
- filterAndSorting: require('./utils/filter-sort.vue').default
+ filterAndSorting: require('./toolbar/filter-sort.vue').default,
+ dirBookmarks: require('./toolbar/dir-bookmark.vue').default
},
name: 'media-manager',
mixins: [
@@ -85,7 +86,7 @@ export default {
disableShortCuts: false,
firstMeta: false, // for alt + click selection
firstRun: false, // deffer running logic on init
- folderWarning: false,
+ folderDeleteWarning: false,
imageWasEdited: false,
infoSidebar: false,
introIsOn: false,
@@ -94,13 +95,13 @@ export default {
loading_files: false,
no_files: false,
no_search: false,
- randomNames: false,
+ useRandomNamesForUpload: false,
showProgress: false,
- smallScreen: false,
+ isASmallScreen: false,
toolBar: true,
uploadArea: false,
waitingForUpload: false,
- useCopy: false,
+ copyFilesNotMove: false,
uploadPreviewOptionsPanelIsVisible: false,
globalSearchPanelIsVisible: false,
@@ -116,23 +117,24 @@ export default {
selectedFile: null,
global_search_item: null,
urlToUpload: null,
- selectedUploadPreview: null,
+ selectedUploadPreviewName: null,
+ audioFileMeta: {},
movableList: [],
bulkList: [],
dimensions: [],
files: [],
- filterdList: [],
+ filterdFilesList: [],
folders: [],
uploadPreviewList: [],
uploadPreviewNamesList: [],
uploadPreviewOptionsList: [],
+ dirBookmarks: [],
player: {
item: null,
fs: false,
playing: false
},
- audioFileMeta: {},
lockedList: [],
uploadPanelGradients: [
'linear-gradient(141deg, #009e6c 0, #00d1b2 71%, #00e7eb 100%)',
@@ -143,7 +145,7 @@ export default {
'linear-gradient(141deg, #1f191a 0, #363636 71%, #46403f 100%)'
],
progressCounter: 0,
- scrollByRows: 0
+ scrollByRowItemsCount: 0
}
},
created() {
@@ -261,12 +263,15 @@ export default {
this.global_search_item = data
this.fileTypeIs(data, 'folder')
- ? this.folderWarning = true
- : this.folderWarning = false
+ ? this.folderDeleteWarning = true
+ : this.folderDeleteWarning = false
this.deleteItem()
})
+ EventHub.listen('dir-bookmarks-update', (data) => {
+ this.dirBookmarks = data
+ })
},
shortCuts(e) {
@@ -400,7 +405,7 @@ export default {
}
// toggle file details sidebar
- if (key == 't' && !this.smallScreen) {
+ if (key == 't' && !this.isASmallScreen) {
this.toggleInfoSidebar()
this.saveUserPref()
}
@@ -470,6 +475,7 @@ export default {
this.clearUrlQuery()
this.clearLs()
this.ajaxError(false)
+ this.showNotif('Cache Cleared')
}
},
moveItem() {
@@ -493,14 +499,14 @@ export default {
if (!this.isBulkSelecting() && this.selectedFile) {
this.selectedFileIs('folder')
- ? this.folderWarning = true
- : this.folderWarning = false
+ ? this.folderDeleteWarning = true
+ : this.folderDeleteWarning = false
}
if (this.bulkItemsCount) {
this.bulkItemsFilter.some((item) => {
if (this.fileTypeIs(item, 'folder')) {
- return this.folderWarning = true
+ return this.folderDeleteWarning = true
}
})
}
diff --git a/src/resources/assets/js/components/toolbar/dir-bookmark.vue b/src/resources/assets/js/components/toolbar/dir-bookmark.vue
new file mode 100644
index 0000000..fd86927
--- /dev/null
+++ b/src/resources/assets/js/components/toolbar/dir-bookmark.vue
@@ -0,0 +1,158 @@
+
+
+
+ {{ bmCount }}
+ {{ trans('bm') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ trans('add_to_list') }}
+
+
+
+
+
+
+ {{ trans('reset') }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/resources/assets/js/components/toolbar/filter-sort.vue b/src/resources/assets/js/components/toolbar/filter-sort.vue
new file mode 100644
index 0000000..644d3f4
--- /dev/null
+++ b/src/resources/assets/js/components/toolbar/filter-sort.vue
@@ -0,0 +1,78 @@
+
+
+
+ {{ trans('filtration') }}
+
+
+
+
+
+ {{ trans(item) }}
+
+
+
+
+
+ {{ trans(item) }}
+
+
+
+
+
+
diff --git a/src/resources/assets/js/components/usageIntro/button.vue b/src/resources/assets/js/components/usageIntro/button.vue
index 70d9c0a..629c336 100644
--- a/src/resources/assets/js/components/usageIntro/button.vue
+++ b/src/resources/assets/js/components/usageIntro/button.vue
@@ -1,6 +1,6 @@