diff --git a/package-lock.json b/package-lock.json index 97bf9a8..1e166d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "laravel-file-manager", - "version": "3.0.2", + "version": "3.0.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "laravel-file-manager", - "version": "3.0.2", + "version": "3.0.3", "license": "MIT", "dependencies": { "axios": "^0.25.0", diff --git a/package.json b/package.json index 9ba977c..587f6d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "laravel-file-manager", - "version": "3.0.3", + "name": "cebelerk.laravel-file-manager", + "version": "3.0.4", "description": "File manager for Laravel", "keywords": [ "laravel", diff --git a/src/components/blocks/NavbarBlock.vue b/src/components/blocks/NavbarBlock.vue index 07667ca..b148ad6 100644 --- a/src/components/blocks/NavbarBlock.vue +++ b/src/components/blocks/NavbarBlock.vue @@ -113,6 +113,15 @@ > +
@@ -247,6 +256,14 @@ export default { hiddenFiles() { return this.$store.state.fm.settings.hiddenFiles; }, + + /** + * Insert button state + * @returns {boolean} + */ + insertDisabled() { + return this.$store.state.fm[this.activeManager].selected.files.length <= 0; + }, }, methods: { /** @@ -305,6 +322,17 @@ export default { this.$store.commit('fm/settings/toggleHiddenFiles'); }, + /** + * Insert + */ + insertSelected() { + window.dispatchEvent( + new CustomEvent('fm:insert', { + detail: { files: this.$store.getters['fm/selectedItems'] }, + }) + ); + }, + /** * Show modal window * @param modalName diff --git a/src/components/blocks/mixins/contextMenuActions.js b/src/components/blocks/mixins/contextMenuActions.js index 9f50929..6e9509a 100644 --- a/src/components/blocks/mixins/contextMenuActions.js +++ b/src/components/blocks/mixins/contextMenuActions.js @@ -61,6 +61,17 @@ export default { }); }, + /** + * Select file + */ + insertAction() { + window.dispatchEvent( + new CustomEvent('fm:insert', { + detail: { files: this.$store.getters['fm/selectedItems'] }, + }) + ); + }, + /** * Select file */ diff --git a/src/components/blocks/mixins/contextMenuRules.js b/src/components/blocks/mixins/contextMenuRules.js index fb2cffb..951ee09 100644 --- a/src/components/blocks/mixins/contextMenuRules.js +++ b/src/components/blocks/mixins/contextMenuRules.js @@ -47,6 +47,14 @@ export default { return !this.multiSelect && this.firstItemType === 'file' && this.canEdit(this.selectedItems[0].extension); }, + /** + * Insert - menu item status - show or hide + * @returns {boolean|*} + */ + insertRule() { + return this.firstItemType === 'file' && this.canEdit(this.selectedItems[0].extension); + }, + /** * Select - menu item status - show or hide * @returns {boolean|null} diff --git a/src/components/manager/mixins/manager.js b/src/components/manager/mixins/manager.js index 96ff1e0..af8d7e1 100644 --- a/src/components/manager/mixins/manager.js +++ b/src/components/manager/mixins/manager.js @@ -100,20 +100,12 @@ export default { // search in selected array const alreadySelected = this.selected[type].includes(path); - // if pressed Ctrl -> multi select - if (event.ctrlKey || event.metaKey) { - if (!alreadySelected) { - // add new selected item - this.$store.commit(`fm/${this.manager}/setSelected`, { type, path }); - } else { - // remove selected item - this.$store.commit(`fm/${this.manager}/removeSelected`, { type, path }); - } - } - - // single select - if (!event.ctrlKey && !alreadySelected && !event.metaKey) { - this.$store.commit(`fm/${this.manager}/changeSelected`, { type, path }); + if (!alreadySelected) { + // add new selected item + this.$store.commit(`fm/${this.manager}/setSelected`, { type, path }); + } else { + // remove selected item + this.$store.commit(`fm/${this.manager}/removeSelected`, { type, path }); } }, diff --git a/src/components/modals/views/PropertiesModal.vue b/src/components/modals/views/PropertiesModal.vue index 01fb8df..7fd6f87 100644 --- a/src/components/modals/views/PropertiesModal.vue +++ b/src/components/modals/views/PropertiesModal.vue @@ -131,7 +131,9 @@ export default { }) .then((response) => { if (response.data.result.status === 'success') { - this.url = response.data.url; + const url = new URL(response.data.url); + + this.url = url.pathname; } }); }, diff --git a/src/lang/en.js b/src/lang/en.js index b117c3b..31c9513 100644 --- a/src/lang/en.js +++ b/src/lang/en.js @@ -24,6 +24,7 @@ const en = { upload: 'Upload', uploadSelect: 'Select files', hidden: ' Hidden files', + insert: 'Insert', }, clipboard: { actionType: 'Type', @@ -49,6 +50,7 @@ const en = { edit: 'Edit', audioPlay: 'Play', videoPlay: 'Play', + insert: 'Insert', }, info: { directories: 'Folders:', diff --git a/src/lang/ru.js b/src/lang/ru.js index 7c0f64b..64d1780 100644 --- a/src/lang/ru.js +++ b/src/lang/ru.js @@ -24,6 +24,7 @@ const ru = { upload: 'Загрузить', uploadSelect: 'Выбрать файлы', hidden: 'Скрытые файлы', + insert: 'Выбрать', }, clipboard: { actionType: 'Тип операции', @@ -49,6 +50,7 @@ const ru = { edit: 'Редактировать', audioPlay: 'Воспроизвести', videoPlay: 'Воспроизвести', + insert: 'Выбрать', }, info: { directories: 'Папок:',