summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@protonmail.com>2021-09-17 09:52:02 +0200
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2021-09-17 20:26:31 +0000
commitd9c4ff3c246992add0621bae44d2df799f563db0 (patch)
treee0849c44b37a54bb97b7ae372a02b69fd9369691 /apps
parent021d5ab7ae2d1fbfefc7fdf339ae502af120c6fe (diff)
downloadnextcloud-server-d9c4ff3c246992add0621bae44d2df799f563db0.tar.gz
nextcloud-server-d9c4ff3c246992add0621bae44d2df799f563db0.zip
Fix file creation from template without ext
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'apps')
-rw-r--r--apps/files/src/services/Templates.js16
-rw-r--r--apps/files/src/views/TemplatePicker.vue16
2 files changed, 27 insertions, 5 deletions
diff --git a/apps/files/src/services/Templates.js b/apps/files/src/services/Templates.js
index c1a8992d661..ca8d8e38f2c 100644
--- a/apps/files/src/services/Templates.js
+++ b/apps/files/src/services/Templates.js
@@ -27,3 +27,19 @@ 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/create'), {
+ filePath,
+ templatePath,
+ templateType,
+ })
+ return response.data.ocs.data
+}
diff --git a/apps/files/src/views/TemplatePicker.vue b/apps/files/src/views/TemplatePicker.vue
index 3043865816c..0543890d9af 100644
--- a/apps/files/src/views/TemplatePicker.vue
+++ b/apps/files/src/views/TemplatePicker.vue
@@ -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() {
@@ -205,7 +206,12 @@ export default {
templateType: this.selectedTemplate?.templateType,
})
- 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)