mirror of
https://github.com/nextcloud/server.git
synced 2026-03-18 00:23:20 -04:00
Merge pull request #28881 from nextcloud/backport/28871/stable22
[stable22] Fix file creation from template without ext
This commit is contained in:
commit
3558d87ec4
10 changed files with 65 additions and 44 deletions
4
apps/files/js/dist/files-app-settings.js
vendored
4
apps/files/js/dist/files-app-settings.js
vendored
File diff suppressed because one or more lines are too long
2
apps/files/js/dist/files-app-settings.js.map
vendored
2
apps/files/js/dist/files-app-settings.js.map
vendored
File diff suppressed because one or more lines are too long
22
apps/files/js/dist/personal-settings.js
vendored
22
apps/files/js/dist/personal-settings.js
vendored
File diff suppressed because one or more lines are too long
2
apps/files/js/dist/personal-settings.js.map
vendored
2
apps/files/js/dist/personal-settings.js.map
vendored
File diff suppressed because one or more lines are too long
14
apps/files/js/dist/sidebar.js
vendored
14
apps/files/js/dist/sidebar.js
vendored
File diff suppressed because one or more lines are too long
2
apps/files/js/dist/sidebar.js.map
vendored
2
apps/files/js/dist/sidebar.js.map
vendored
File diff suppressed because one or more lines are too long
17
apps/files/js/dist/templates.js
vendored
17
apps/files/js/dist/templates.js
vendored
File diff suppressed because one or more lines are too long
2
apps/files/js/dist/templates.js.map
vendored
2
apps/files/js/dist/templates.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -27,3 +27,20 @@ export const getTemplates = async function() {
|
|||
const response = await axios.get(generateOcsUrl('apps/files/api/v1', 2) + 'templates')
|
||||
return response.data.ocs.data
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new file from a specified template
|
||||
*
|
||||
* @param {string} filePath The new file destination path
|
||||
* @param {string} templatePath The template source path
|
||||
* @param {string} templateType The template type e.g 'user'
|
||||
*/
|
||||
export const createFromTemplate = async function(filePath, templatePath, templateType) {
|
||||
const response = await axios.post(generateOcsUrl('apps/files/api/v1/templates', 2) + 'create', {
|
||||
filePath,
|
||||
templatePath,
|
||||
templateType,
|
||||
})
|
||||
|
||||
return response.data.ocs.data
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,14 +66,13 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { generateOcsUrl } from '@nextcloud/router'
|
||||
import { normalize } from 'path'
|
||||
import { showError } from '@nextcloud/dialogs'
|
||||
import axios from '@nextcloud/axios'
|
||||
import EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'
|
||||
import Modal from '@nextcloud/vue/dist/Components/Modal'
|
||||
|
||||
import { getCurrentDirectory } from '../utils/davUtils'
|
||||
import { getTemplates } from '../services/Templates'
|
||||
import { createFromTemplate, getTemplates } from '../services/Templates'
|
||||
import TemplatePreview from '../components/TemplatePreview'
|
||||
|
||||
const border = 2
|
||||
|
|
@ -113,7 +112,9 @@ export default {
|
|||
* @returns {string}
|
||||
*/
|
||||
nameWithoutExt() {
|
||||
return this.name.indexOf('.') > -1 ? this.name.split('.').slice(0, -1).join('.') : this.name
|
||||
return this.name.indexOf('.') > -1
|
||||
? this.name.split('.').slice(0, -1).join('.')
|
||||
: this.name
|
||||
},
|
||||
|
||||
emptyTemplate() {
|
||||
|
|
@ -198,14 +199,18 @@ export default {
|
|||
const currentDirectory = getCurrentDirectory()
|
||||
const fileList = OCA?.Files?.App?.currentFileList
|
||||
|
||||
try {
|
||||
const response = await axios.post(generateOcsUrl('apps/files/api/v1/templates', 2) + 'create', {
|
||||
filePath: `${currentDirectory}/${this.name}`,
|
||||
templatePath: this.selectedTemplate?.filename,
|
||||
templateType: this.selectedTemplate?.templateType,
|
||||
})
|
||||
// If the file doesn't have an extension, add the default one
|
||||
if (this.nameWithoutExt === this.name) {
|
||||
this.logger.debug('Fixed invalid filename', { name: this.name, extension: this.provider?.extension })
|
||||
this.name = this.name + this.provider?.extension
|
||||
}
|
||||
|
||||
const fileInfo = response.data.ocs.data
|
||||
try {
|
||||
const fileInfo = await createFromTemplate(
|
||||
normalize(`${currentDirectory}/${this.name}`),
|
||||
this.selectedTemplate?.filename,
|
||||
this.selectedTemplate?.templateType,
|
||||
)
|
||||
this.logger.debug('Created new file', fileInfo)
|
||||
|
||||
await fileList?.addAndFetchFileInfo(this.name)
|
||||
|
|
|
|||
Loading…
Reference in a new issue