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: 'Папок:',