Skip to content

Commit bc9f835

Browse files
author
wandycandra
committed
edited for my project
1 parent 90b38f4 commit bc9f835

File tree

24 files changed

+463
-56
lines changed

24 files changed

+463
-56
lines changed

package.json

Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,37 @@
11
{
2-
"name": "laravel-file-manager",
3-
"version": "2.4.14",
4-
"description": "File manager for Laravel",
5-
"keywords": [
6-
"laravel",
7-
"file",
8-
"manager"
2+
"_args": [
3+
[
4+
5+
"C:\\laragon\\bkcuvue"
6+
]
97
],
10-
"author": "Aleksandr Manekin <[email protected]>",
11-
"private": false,
12-
"license": "MIT",
13-
"main": "src/init.js",
14-
"scripts": {
15-
"serve": "vue-cli-service serve",
16-
"build": "vue-cli-service build",
17-
"lint": "vue-cli-service lint",
18-
"test:unit": "vue-cli-service test:unit"
8+
"_from": "[email protected]",
9+
10+
"_inBundle": false,
11+
"_integrity": "sha512-e+kfVr+YNJ9xr5fCzQ4joOAEf4LiLYx4pS06GUSZt2uwoIvlHIQ8u4w1yw3rQ9We8CyB5fV6oi/K6S0HBGXekg==",
12+
"_location": "/laravel-file-manager",
13+
"_phantomChildren": {
14+
"debug": "3.1.0"
15+
},
16+
"_requested": {
17+
"type": "version",
18+
"registry": true,
19+
20+
"name": "laravel-file-manager",
21+
"escapedName": "laravel-file-manager",
22+
"rawSpec": "2.4.12",
23+
"saveSpec": null,
24+
"fetchSpec": "2.4.12"
25+
},
26+
"_requiredBy": [
27+
"/"
28+
],
29+
"_resolved": "https://registry.npmjs.org/laravel-file-manager/-/laravel-file-manager-2.4.12.tgz",
30+
"_spec": "2.4.12",
31+
"_where": "C:\\laragon\\bkcuvue",
32+
"author": {
33+
"name": "Aleksandr Manekin",
34+
"email": "[email protected]"
1935
},
2036
"dependencies": {
2137
"axios": "^0.18.0",
@@ -26,6 +42,7 @@
2642
"vue-codemirror": "^4.0.5",
2743
"vuex": "^3.0.1"
2844
},
45+
"description": "File manager for Laravel",
2946
"devDependencies": {
3047
"@vue/cli-plugin-babel": "^3.0.5",
3148
"@vue/cli-plugin-eslint": "^3.0.5",
@@ -39,5 +56,21 @@
3956
"node-sass": "^4.9.0",
4057
"sass-loader": "^7.0.1",
4158
"vue-template-compiler": "^2.5.17"
42-
}
59+
},
60+
"keywords": [
61+
"laravel",
62+
"file",
63+
"manager"
64+
],
65+
"license": "MIT",
66+
"main": "src/init.js",
67+
"name": "laravel-file-manager",
68+
"private": false,
69+
"scripts": {
70+
"build": "vue-cli-service build",
71+
"lint": "vue-cli-service lint",
72+
"serve": "vue-cli-service serve",
73+
"test:unit": "vue-cli-service test:unit"
74+
},
75+
"version": "2.4.12"
4376
}

public/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<meta name="viewport" content="width=device-width,initial-scale=1.0">
77
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
88
<title>new-file-manager</title>
9-
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
10-
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.13.0/css/all.css">
9+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
10+
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.2/css/all.css">
1111
</head>
1212
<body>
1313
<noscript>
@@ -16,7 +16,7 @@
1616
</strong>
1717
</noscript>
1818
<div class="container">
19-
<div style="height: 400px;">
19+
<div style="height: 800px;">
2020
<div id="fm"></div>
2121
</div>
2222
</div>

src/FileManager.vue

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<script>
3434
/* eslint-disable import/no-duplicates, no-param-reassign */
3535
import { mapState } from 'vuex';
36+
import { mapGetters } from 'vuex';
3637
// Axios
3738
import HTTP from './http/axios';
3839
import EventBus from './eventBus';
@@ -49,6 +50,11 @@ import Notification from './components/blocks/Notification.vue';
4950
import translate from './mixins/translate';
5051
5152
export default {
53+
data() {
54+
return {
55+
id:''
56+
}
57+
},
5258
name: 'FileManager',
5359
mixins: [translate],
5460
components: {
@@ -74,6 +80,7 @@ export default {
7480
},
7581
created() {
7682
// manual settings
83+
this.id = '0';
7784
this.$store.commit('fm/settings/manualSettings', this.settings);
7885
7986
// initiate Axios
@@ -83,7 +90,12 @@ export default {
8390
8491
// initialize app settings
8592
this.$store.dispatch('fm/initializeApp');
86-
93+
if(this.currentUser.can['index_disk_cu']){
94+
this.$store.dispatch('fm/index');
95+
}else{
96+
this.$store.dispatch('fm/indexCu', this.currentUser.id_cu);
97+
}
98+
8799
/**
88100
* todo Keyboard event
89101
*/
@@ -110,6 +122,10 @@ export default {
110122
showModal: state => state.modal.showModal,
111123
fullScreen: state => state.settings.fullScreen,
112124
}),
125+
126+
...mapGetters('auth',{
127+
currentUser: 'currentUser'
128+
}),
113129
},
114130
methods: {
115131
/**

src/components/blocks/Navbar.vue

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
<template>
23
<div class="fm-navbar mb-3">
34
<div class="row justify-content-between">
@@ -70,14 +71,15 @@
7071
v-on:click="paste">
7172
<i class="fas fa-paste"></i>
7273
</button>
73-
</div>
74-
<div class="btn-group" role="group">
74+
<div class="btn-group" role="group">
7575
<button type="button" class="btn btn-secondary"
7676
v-bind:title="lang.btn.hidden"
7777
v-on:click="toggleHidden">
7878
<i class="fas" v-bind:class="[hiddenFiles ? 'fa-eye': 'fa-eye-slash']"></i>
7979
</button>
8080
</div>
81+
</div>
82+
8183
</div>
8284
<div class="col-auto text-right">
8385
<div class="btn-group" role="group">
@@ -117,10 +119,17 @@
117119
<script>
118120
import translate from './../../mixins/translate';
119121
import EventBus from './../../eventBus';
122+
import { mapGetters } from 'vuex';
123+
124+
120125
121126
export default {
122127
mixins: [translate],
123128
computed: {
129+
...mapGetters('auth',{
130+
currentUser: 'currentUser'
131+
}),
132+
124133
/**
125134
* Active manager name
126135
* @returns {default.computed.activeManager|(function())|string|activeManager}
@@ -242,7 +251,15 @@ export default {
242251
* Paste
243252
*/
244253
paste() {
245-
this.$store.dispatch('fm/paste');
254+
let idCu = this.currentUser.id_cu;
255+
let canIndexDisk = false;
256+
if(this.currentUser.can['index_disk_cu']){
257+
canIndexDisk = true;
258+
}
259+
this.$store.dispatch('fm/paste',{
260+
idCu,
261+
canIndexDisk
262+
});
246263
},
247264
248265
/**

src/components/manager/GridView.vue

Lines changed: 86 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
<template>
22
<div class="fm-grid">
33
<div class="d-flex align-content-start flex-wrap">
4-
<div v-if="!isRootPath" v-on:click="levelUp" class="fm-grid-item text-center" >
4+
<div v-if="!isRootPath && selectedDirectory!=cuName" v-on:click="levelUp" class="fm-grid-item text-center" >
55
<div class="fm-item-icon">
66
<i class="fas fa-level-up-alt fa-5x pb-2"></i>
77
</div>
88
<div class="fm-item-info"><strong>..</strong></div>
99
</div>
1010

11-
<div class="fm-grid-item text-center unselectable"
11+
<div v-if="!isMobile()" class="fm-grid-item text-center unselectable"
1212
v-for="(directory, index) in directories"
1313
v-bind:key="`d-${index}`"
1414
v-bind:title="directory.basename"
1515
v-bind:class="{'active': checkSelect('directories', directory.path)}"
1616
v-on:click="selectItem('directories', directory.path, $event)"
17+
@mousedown="setMainDir(directory.path)"
1718
v-on:dblclick.stop="selectDirectory(directory.path)"
1819
v-on:contextmenu.prevent="contextMenu(directory, $event)">
1920
<div class="fm-item-icon">
@@ -23,7 +24,23 @@
2324
<div class="fm-item-info">{{ directory.basename }}</div>
2425
</div>
2526

26-
<div class="fm-grid-item text-center unselectable"
27+
<div v-if="isMobile()" class="fm-grid-item text-center unselectable"
28+
v-for="(directory, index) in directories"
29+
v-bind:key="`d-${index}`"
30+
v-bind:title="directory.basename"
31+
v-bind:class="{'active': checkSelect('directories', directory.path)}"
32+
v-on:mousedown = "setMainDir(directory.path)"
33+
v-on:click.stop="selectDirectory(directory.path)"
34+
v-on:contextmenu.prevent="contextMenu(directory, $event)">
35+
<div class="fm-item-icon">
36+
<i class="fa-5x pb-2"
37+
v-bind:class="(acl && directory.acl === 0) ? 'fas fa-unlock-alt' : 'far fa-folder'"></i>
38+
</div>
39+
<div class="fm-item-info">{{ directory.basename }}</div>
40+
</div>
41+
42+
43+
<div v-if="!isMobile()" class="fm-grid-item text-center unselectable"
2744
v-for="(file, index) in files"
2845
v-bind:key="`f-${index}`"
2946
v-bind:title="file.basename"
@@ -46,6 +63,30 @@
4663
{{ bytesToHuman(file.size) }}
4764
</div>
4865
</div>
66+
67+
<div v-if="isMobile()" class="fm-grid-item text-center unselectable"
68+
v-for="(file, index) in files"
69+
v-bind:key="`f-${index}`"
70+
v-bind:title="file.basename"
71+
v-bind:class="{'active': checkSelect('files', file.path)}"
72+
v-on:mousedown="selectItem('files', file.path, $event)"
73+
v-on:dblclick="selectAction(file.path, file.extension)"
74+
v-on:contextmenu.prevent="contextMenu(file, $event)">
75+
<div class="fm-item-icon">
76+
<i v-if="acl && file.acl === 0" class="fas fa-unlock-alt fa-5x pb-2"></i>
77+
<thumbnail v-else-if="thisImage(file.extension)"
78+
v-bind:disk="disk"
79+
v-bind:file="file">
80+
</thumbnail>
81+
<i v-else class="far fa-5x pb-2"
82+
v-bind:class="extensionToIcon(file.extension)"></i>
83+
</div>
84+
<div class="fm-item-info">
85+
{{ `${file.filename}.${file.extension}` }}
86+
<br>
87+
{{ bytesToHuman(file.size) }}
88+
</div>
89+
</div>
4990
</div>
5091
</div>
5192
</template>
@@ -55,6 +96,8 @@ import translate from './../../mixins/translate';
5596
import helper from './../../mixins/helper';
5697
import managerHelper from './mixins/manager';
5798
import Thumbnail from './Thumbnail.vue';
99+
import { mapGetters } from 'vuex';
100+
import generalStore from './../../store/state';
58101
59102
export default {
60103
name: 'grid-view',
@@ -63,6 +106,9 @@ export default {
63106
data() {
64107
return {
65108
disk: '',
109+
cuName:'',
110+
mainDir:'',
111+
flag: false,
66112
};
67113
},
68114
props: {
@@ -78,6 +124,12 @@ export default {
78124
}
79125
},
80126
computed: {
127+
...mapGetters('fm',{
128+
selectedDirectory:'selectedDirectory'
129+
}),
130+
...mapGetters('auth',{
131+
currentUser: 'currentUser'
132+
}),
81133
/**
82134
* Image extensions list
83135
* @returns {*}
@@ -86,18 +138,49 @@ export default {
86138
return this.$store.state.fm.settings.imageExtensions;
87139
},
88140
},
141+
created() {
142+
if(this.currentUser.id_cu==0){
143+
if(this.currentUser.can['index_disk_cu']){
144+
this.cuName='';
145+
}else{
146+
this.cuName='BKCU';
147+
}
148+
}else{
149+
this.cuName = this.currentUser.cu.name;
150+
}
151+
},
89152
methods: {
90153
/**
91154
* Check file extension (image or no)
92155
* @param extension
93156
* @returns {boolean}
94157
*/
158+
setMainDir(directory){
159+
if(this.currentUser.id_cu==0){
160+
if(this.selectedDirectory==null){
161+
this.flag=false;
162+
}
163+
164+
if(!this.flag){
165+
this.mainDir = directory;
166+
this.flag = true;
167+
}
168+
generalStore.mainDir = this.mainDir;
169+
}
170+
},
95171
thisImage(extension) {
96172
// extension not found
97173
if (!extension) return false;
98174
99175
return this.imageExtensions.includes(extension.toLowerCase());
100176
},
177+
isMobile() {
178+
if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
179+
return true
180+
} else {
181+
return false
182+
}
183+
},
101184
},
102185
};
103186
</script>

0 commit comments

Comments
 (0)