committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 304 additions and 88 deletions
-
11apps/files_sharing/appinfo/routes.php
-
8apps/files_sharing/js/dist/additionalScripts.js
-
2apps/files_sharing/js/dist/additionalScripts.js.map
-
2apps/files_sharing/js/dist/collaboration.js
-
2apps/files_sharing/js/dist/collaboration.js.map
-
4apps/files_sharing/js/dist/files_sharing.js
-
2apps/files_sharing/js/dist/files_sharing.js.map
-
108apps/files_sharing/js/dist/files_sharing_tab.js
-
2apps/files_sharing/js/dist/files_sharing_tab.js.map
-
2apps/files_sharing/js/dist/main.js
-
2apps/files_sharing/js/dist/main.js.map
-
6apps/files_sharing/js/dist/personal-settings.js
-
2apps/files_sharing/js/dist/personal-settings.js.map
-
22apps/files_sharing/lib/Controller/SettingsController.php
-
2apps/files_sharing/lib/External/Manager.php
-
20apps/files_sharing/lib/Helper.php
-
7apps/files_sharing/lib/Settings/Personal.php
-
2apps/files_sharing/lib/SharedMount.php
-
45apps/files_sharing/src/components/PersonalSettings.vue
-
125apps/files_sharing/src/components/SelectShareFolderDialogue.vue
-
5config/config.sample.php
-
11lib/private/Share20/Manager.php
8
apps/files_sharing/js/dist/additionalScripts.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
apps/files_sharing/js/dist/additionalScripts.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
apps/files_sharing/js/dist/collaboration.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
4
apps/files_sharing/js/dist/files_sharing.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
apps/files_sharing/js/dist/files_sharing.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
108
apps/files_sharing/js/dist/files_sharing_tab.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
apps/files_sharing/js/dist/files_sharing_tab.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
apps/files_sharing/js/dist/main.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
6
apps/files_sharing/js/dist/personal-settings.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
apps/files_sharing/js/dist/personal-settings.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,125 @@ |
|||
<!-- |
|||
- @copyright 2021 Hinrich Mahler <nextcloud@mahlerhome.de> |
|||
- |
|||
- @license GNU AGPL version 3 or any later version |
|||
- |
|||
- This program is free software: you can redistribute it and/or modify |
|||
- it under the terms of the GNU Affero General Public License as |
|||
- published by the Free Software Foundation, either version 3 of the |
|||
- License, or (at your option) any later version. |
|||
- |
|||
- This program is distributed in the hope that it will be useful, |
|||
- but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
- GNU Affero General Public License for more details. |
|||
- |
|||
- You should have received a copy of the GNU Affero General Public License |
|||
- along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
--> |
|||
|
|||
<template> |
|||
<div class="share-folder"> |
|||
<span>{{ t('files', 'Set default folder for accepted shares') }} </span> |
|||
|
|||
<!-- Folder picking form --> |
|||
<form class="share-folder__form" @reset.prevent.stop="resetFolder"> |
|||
<input class="share-folder__picker" |
|||
type="text" |
|||
:placeholder="readableDirectory" |
|||
@click.prevent="pickFolder"> |
|||
|
|||
<!-- Show reset button if folder is different --> |
|||
<input v-if="readableDirectory !== defaultDirectory" |
|||
class="share-folder__reset" |
|||
type="reset" |
|||
:value="t('files', 'Reset')" |
|||
:aria-label="t('files', 'Reset folder to system default')"> |
|||
</form> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import axios from '@nextcloud/axios' |
|||
import path from 'path' |
|||
import { generateUrl } from '@nextcloud/router' |
|||
import { getFilePickerBuilder, showError } from '@nextcloud/dialogs' |
|||
import { loadState } from '@nextcloud/initial-state' |
|||
|
|||
const defaultDirectory = loadState('files_sharing', 'default_share_folder', '/') |
|||
const directory = loadState('files_sharing', 'share_folder', defaultDirectory) |
|||
|
|||
export default { |
|||
name: 'SelectShareFolderDialogue', |
|||
data() { |
|||
return { |
|||
directory, |
|||
defaultDirectory, |
|||
} |
|||
}, |
|||
computed: { |
|||
readableDirectory() { |
|||
if (!this.directory) { |
|||
return '/' |
|||
} |
|||
return this.directory |
|||
}, |
|||
}, |
|||
methods: { |
|||
async pickFolder() { |
|||
|
|||
// Setup file picker |
|||
const picker = getFilePickerBuilder(t('files', 'Choose a default folder for accepted shares')) |
|||
.startAt(this.readableDirectory) |
|||
.setMultiSelect(false) |
|||
.setModal(true) |
|||
.setType(1) |
|||
.setMimeTypeFilter(['httpd/unix-directory']) |
|||
.allowDirectories() |
|||
.build() |
|||
|
|||
try { |
|||
// Init user folder picking |
|||
const dir = await picker.pick() || '/' |
|||
if (!dir.startsWith('/')) { |
|||
throw new Error(t('files', 'Invalid path selected')) |
|||
} |
|||
|
|||
// Fix potential path issues and save results |
|||
this.directory = path.normalize(dir) |
|||
await axios.put(generateUrl('/apps/files_sharing/settings/shareFolder'), { |
|||
shareFolder: this.directory, |
|||
}) |
|||
} catch (error) { |
|||
showError(error.message || t('files', 'Unknown error')) |
|||
} |
|||
}, |
|||
|
|||
resetFolder() { |
|||
this.directory = this.defaultDirectory |
|||
axios.delete(generateUrl('/apps/files_sharing/settings/shareFolder')) |
|||
}, |
|||
}, |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
.share-folder { |
|||
&__form { |
|||
display: flex; |
|||
} |
|||
|
|||
&__picker { |
|||
cursor: pointer; |
|||
min-width: 266px; |
|||
} |
|||
|
|||
// Make the reset button looks like text |
|||
&__reset { |
|||
background-color: transparent; |
|||
border: none; |
|||
font-weight: normal; |
|||
text-decoration: underline; |
|||
font-size: inherit; |
|||
} |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue