Files
overleaf-cep/services/web/app/src/Features/Templates/TemplatesController.js
Mathias Jakobsen d7bd665bee Merge pull request #25060 from overleaf/mj-core-pug-bs5
[web] Convert various pug pages to BS5

GitOrigin-RevId: f42de89eca778db19d5faa8a19fa8a210c7a749b
2025-04-29 08:06:01 +00:00

67 lines
2.1 KiB
JavaScript

const path = require('path')
const SessionManager = require('../Authentication/SessionManager')
const TemplatesManager = require('./TemplatesManager')
const ProjectHelper = require('../Project/ProjectHelper')
const logger = require('@overleaf/logger')
const { expressify } = require('@overleaf/promise-utils')
const SplitTestHandler = require('../SplitTests/SplitTestHandler')
const TemplatesController = {
async getV1Template(req, res) {
// Read split test assignment so that it's available for Pug to read
await SplitTestHandler.promises.getAssignment(req, res, 'core-pug-bs5')
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(
__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}`)
},
}
module.exports = {
getV1Template: expressify(TemplatesController.getV1Template),
createProjectFromV1Template: expressify(
TemplatesController.createProjectFromV1Template
),
}