Files
vuefilemanager/resources/js/helpers/itemHelpers.js
2022-02-28 17:38:18 +01:00

192 lines
6.5 KiB
JavaScript
Vendored

import i18n from '../i18n'
import store from '../store/index'
import { events } from '../bus'
const itemHelpers = {
install(Vue) {
Vue.prototype.$emptyTrash = function () {
store.dispatch('emptyTrash')
}
Vue.prototype.$emptyTrashQuietly = function () {
store.dispatch('emptyTrashQuietly')
}
Vue.prototype.$shareCancel = function () {
store.dispatch('shareCancel')
}
Vue.prototype.$toggleFavourites = function (entry) {
let favourites = store.getters.user.data.relationships.favourites.data
// Check if folder is in favourites and then add/remove from favourites
if (favourites && !favourites.find((el) => el.data.id === entry.data.id)) {
// Add to favourite folder that is not selected
if (!store.getters.clipboard.includes(entry)) {
this.$store.dispatch('addToFavourites', entry)
}
// Add to favourites all selected folders
if (store.getters.clipboard.includes(entry)) {
this.$store.dispatch('addToFavourites', null)
}
} else {
this.$store.dispatch('removeFromFavourites', entry)
}
}
Vue.prototype.$renameFileOrFolder = function (entry) {
events.$emit('popup:open', { name: 'rename-item', item: entry })
}
Vue.prototype.$moveFileOrFolder = function (entry) {
events.$emit('popup:open', { name: 'move', item: [entry] })
}
Vue.prototype.$createFolderByPopup = function () {
// Show alert message when create folder is disabled
if (store.getters.user && !store.getters.user.data.meta.restrictions.canCreateFolder) {
Vue.prototype.$temporarilyDisabledFolderCreate()
return
}
events.$emit('popup:open', { name: 'create-folder' })
}
Vue.prototype.$createFolder = function () {
// Show alert message when create folder is disabled
if (store.getters.user && !store.getters.user.data.meta.restrictions.canCreateFolder) {
Vue.prototype.$temporarilyDisabledFolderCreate()
return
}
store.dispatch('createFolder', {
name: i18n.t('popup_create_folder.folder_default_name'),
})
}
Vue.prototype.$downloadSelection = function (item = undefined) {
// Show alert message when download is disabled
if (store.getters.user && !store.getters.user.data.meta.restrictions.canDownload) {
Vue.prototype.$temporarilyDisabledDownload()
return
}
// Download folder zip
if (item && item.data.type === 'folder') {
store.dispatch('downloadZip', item)
return
}
// Download single item
if (item && item.data.type !== 'folder') {
Vue.prototype.$downloadFile(
item.data.attributes.file_url,
item.data.attributes.name + '.' + item.data.attributes.mimetype
)
return
}
// Download selection
let clipboard = store.getters.clipboard
if (clipboard.length > 1 || (clipboard.length === 1 && clipboard[0].data.type === 'folder')) {
store.dispatch('downloadZip')
}
}
Vue.prototype.$dissolveTeamFolder = function (folder) {
events.$emit('confirm:open', {
title: i18n.t('Are you sure you want to dissolve this team?'),
message: i18n.t(
'All team members will lose access to your files and existing folder will be moved into your "Files" section.'
),
action: {
id: folder.data.id,
operation: 'dissolve-team-folder',
},
})
}
Vue.prototype.$detachMeFromTeamFolder = function (folder) {
events.$emit('confirm:open', {
title: i18n.t('Are you sure you want to leave this team folder?'),
message: i18n.t(
"You will don't have access to the files and all your previously uploaded content will be part of this Team Folder you are leaving."
),
action: {
id: folder.data.id,
operation: 'leave-team-folder',
},
})
}
Vue.prototype.$createTeamFolder = function () {
// Show alert message when create folder is disabled
if (!store.getters.user.data.meta.restrictions.canCreateTeamFolder) {
Vue.prototype.$temporarilyDisabledFolderCreate()
return
}
events.$emit('popup:open', { name: 'create-team-folder' })
}
Vue.prototype.$convertAsTeamFolder = function (entry) {
events.$emit('popup:open', {
name: 'create-team-folder',
item: entry,
})
}
Vue.prototype.$createFileRequest = function (entry = undefined) {
events.$emit('popup:open', {
name: 'create-file-request',
item: entry,
})
}
Vue.prototype.$updateTeamFolder = function (entry) {
events.$emit('popup:open', {
name: 'update-team-folder',
item: entry,
})
}
Vue.prototype.$removeFavourite = function (folder) {
store.dispatch('removeFromFavourites', folder)
}
Vue.prototype.$deleteFileOrFolder = function (entry) {
if (!store.getters.clipboard.includes(entry)) {
store.dispatch('deleteItem', entry)
}
if (store.getters.clipboard.includes(entry)) {
store.dispatch('deleteItem')
}
}
Vue.prototype.$restoreFileOrFolder = function (entry) {
if (!store.getters.clipboard.includes(entry)) store.dispatch('restoreItem', entry)
if (store.getters.clipboard.includes(entry)) store.dispatch('restoreItem', null)
}
Vue.prototype.$shareFileOrFolder = function (entry) {
let event = entry.data.relationships.shared ? 'share-edit' : 'share-create'
events.$emit('popup:open', {
name: event,
item: entry,
})
}
},
}
export default itemHelpers