Files
overleaf-cep/services/web/app/src/Features/Templates/TemplatesController.mjs
Antoine Clausse a2d9c8f813 Merge pull request #28584 from overleaf/ac-some-web-esm-migration-5
[web] Convert some Features files to ES modules (part 5)

GitOrigin-RevId: 0cad67f9afe0095e2b066bf2f4d3717c00540dab
2025-10-08 08:06:15 +00:00

63 lines
1.9 KiB
JavaScript

import path from 'node:path'
import SessionManager from '../Authentication/SessionManager.js'
import TemplatesManager from './TemplatesManager.js'
import ProjectHelper from '../Project/ProjectHelper.js'
import logger from '@overleaf/logger'
import { expressify } from '@overleaf/promise-utils'
const TemplatesController = {
async getV1Template(req, res) {
const templateVersionId = req.params.Template_version_id
const templateId = req.query.id
if (!/^[0-9]+$/.test(templateVersionId) || !/^[0-9]+$/.test(templateId)) {
logger.err(
{ templateVersionId, templateId },
'invalid template id or version'
)
return res.sendStatus(400)
}
const data = {
templateVersionId,
templateId,
name: req.query.templateName,
compiler: ProjectHelper.compilerFromV1Engine(req.query.latexEngine),
imageName: req.query.texImage,
mainFile: req.query.mainFile,
brandVariationId: req.query.brandVariationId,
}
res.render(
path.resolve(
import.meta.dirname,
'../../../views/project/editor/new_from_template'
),
data
)
},
async createProjectFromV1Template(req, res) {
const userId = SessionManager.getLoggedInUserId(req.session)
const project = await TemplatesManager.promises.createProjectFromV1Template(
req.body.brandVariationId,
req.body.compiler,
req.body.mainFile,
req.body.templateId,
req.body.templateName,
req.body.templateVersionId,
userId,
req.body.imageName
)
delete req.session.templateData
if (!project) {
throw new Error('failed to create project from template')
}
return res.redirect(`/project/${project._id}`)
},
}
export default {
getV1Template: expressify(TemplatesController.getV1Template),
createProjectFromV1Template: expressify(
TemplatesController.createProjectFromV1Template
),
}