mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-24 01:29:35 +02:00
Merge pull request #25060 from overleaf/mj-core-pug-bs5
[web] Convert various pug pages to BS5 GitOrigin-RevId: f42de89eca778db19d5faa8a19fa8a210c7a749b
This commit is contained in:
committed by
Copybot
parent
447be67f78
commit
d7bd665bee
@@ -16,6 +16,7 @@ import ProjectAuditLogHandler from '../Project/ProjectAuditLogHandler.js'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import AuthenticationController from '../Authentication/AuthenticationController.js'
|
||||
import PrivilegeLevels from '../Authorization/PrivilegeLevels.js'
|
||||
import SplitTestHandler from '../SplitTests/SplitTestHandler.js'
|
||||
|
||||
// This rate limiter allows a different number of requests depending on the
|
||||
// number of callaborators a user is allowed. This is implemented by providing
|
||||
@@ -244,6 +245,10 @@ async function generateNewInvite(req, res) {
|
||||
async function viewInvite(req, res) {
|
||||
const projectId = req.params.Project_id
|
||||
const { token } = req.params
|
||||
|
||||
// Read split test assignment so that it's available for Pug to read
|
||||
await SplitTestHandler.promises.getAssignment(req, res, 'core-pug-bs5')
|
||||
|
||||
const _renderInvalidPage = function () {
|
||||
res.status(404)
|
||||
logger.debug({ projectId }, 'invite not valid, rendering not-valid page')
|
||||
|
||||
@@ -4,9 +4,13 @@ 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 = {
|
||||
getV1Template(req, res) {
|
||||
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)) {
|
||||
@@ -25,7 +29,7 @@ const TemplatesController = {
|
||||
mainFile: req.query.mainFile,
|
||||
brandVariationId: req.query.brandVariationId,
|
||||
}
|
||||
return res.render(
|
||||
res.render(
|
||||
path.resolve(
|
||||
__dirname,
|
||||
'../../../views/project/editor/new_from_template'
|
||||
@@ -55,7 +59,7 @@ const TemplatesController = {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getV1Template: TemplatesController.getV1Template,
|
||||
getV1Template: expressify(TemplatesController.getV1Template),
|
||||
createProjectFromV1Template: expressify(
|
||||
TemplatesController.createProjectFromV1Template
|
||||
),
|
||||
|
||||
@@ -4,7 +4,8 @@ block vars
|
||||
- var suppressFooter = true
|
||||
- var suppressCookieBanner = true
|
||||
- var suppressSkipToContent = true
|
||||
- bootstrap5PageStatus = 'disabled'
|
||||
- bootstrap5PageStatus = 'enabled'
|
||||
- bootstrap5PageSplitTest = 'core-pug-bs5'
|
||||
|
||||
block content
|
||||
.editor.full-size
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
extends ../../layout-marketing
|
||||
|
||||
block vars
|
||||
- bootstrap5PageStatus = 'disabled'
|
||||
- bootstrap5PageStatus = 'enabled'
|
||||
- bootstrap5PageSplitTest = 'core-pug-bs5'
|
||||
|
||||
block content
|
||||
main.content.content-alt#main-content
|
||||
.container
|
||||
.row
|
||||
.col-md-8.col-md-offset-2
|
||||
.col-md-8.col-md-offset-2.offset-md-2
|
||||
.card.project-invite-invalid
|
||||
.page-header.text-centered
|
||||
h1 #{translate("invite_not_valid")}
|
||||
.row.text-center
|
||||
.col-md-12
|
||||
p
|
||||
| #{translate("invite_not_valid_description")}.
|
||||
.row.text-center.actions
|
||||
.col-md-12
|
||||
a.btn.btn-secondary-info.btn-secondary(href="/project") #{translate("back_to_your_projects")}
|
||||
|
||||
.card-body
|
||||
.page-header.text-center
|
||||
h1 #{translate("invite_not_valid")}
|
||||
.row.text-center
|
||||
.col-12.col-md-12
|
||||
p
|
||||
| #{translate("invite_not_valid_description")}.
|
||||
.row.text-center.actions
|
||||
.col-12.col-md-12
|
||||
a.btn.btn-secondary-info.btn-secondary(href="/project") #{translate("back_to_your_projects")}
|
||||
|
||||
@@ -1,37 +1,39 @@
|
||||
extends ../../layout-marketing
|
||||
|
||||
block vars
|
||||
- bootstrap5PageStatus = 'disabled'
|
||||
- bootstrap5PageStatus = 'enabled'
|
||||
- bootstrap5PageSplitTest = 'core-pug-bs5'
|
||||
|
||||
block content
|
||||
main.content.content-alt#main-content
|
||||
.container
|
||||
.row
|
||||
.col-md-8.col-md-offset-2
|
||||
.col-12.col-md-8.col-md-offset-2.offset-md-2
|
||||
.card.project-invite-accept
|
||||
.page-header.text-centered
|
||||
h1 #{translate("user_wants_you_to_see_project", {username:owner.first_name, projectname:""})}
|
||||
br
|
||||
em #{project.name}
|
||||
.row.text-center
|
||||
.col-md-12
|
||||
p
|
||||
| #{translate("accepting_invite_as")}
|
||||
em #{user.email}
|
||||
.row
|
||||
.col-md-12
|
||||
form.form(
|
||||
data-ol-regular-form
|
||||
method="POST",
|
||||
action="/project/"+invite.projectId+"/invite/token/"+token+"/accept"
|
||||
)
|
||||
input(name='_csrf', type='hidden', value=csrfToken)
|
||||
input(name='token', type='hidden', value=token)
|
||||
.form-group.text-center
|
||||
button.btn.btn-lg.btn-primary(
|
||||
type="submit"
|
||||
data-ol-disabled-inflight
|
||||
)
|
||||
span(data-ol-inflight="idle") #{translate("join_project")}
|
||||
span(hidden data-ol-inflight="pending") #{translate("joining")}…
|
||||
.form-group.text-center
|
||||
.card-body
|
||||
.page-header.text-center
|
||||
h1 #{translate("user_wants_you_to_see_project", {username:owner.first_name, projectname:""})}
|
||||
br
|
||||
em #{project.name}
|
||||
.row.text-center
|
||||
.col-12.col-md-12
|
||||
p
|
||||
| #{translate("accepting_invite_as")}
|
||||
em #{user.email}
|
||||
.row
|
||||
.col-12.col-md-12
|
||||
form.form(
|
||||
data-ol-regular-form
|
||||
method="POST",
|
||||
action="/project/"+invite.projectId+"/invite/token/"+token+"/accept"
|
||||
)
|
||||
input(name='_csrf', type='hidden', value=csrfToken)
|
||||
input(name='token', type='hidden', value=token)
|
||||
.form-group.text-center
|
||||
button.btn.btn-lg.btn-primary(
|
||||
type="submit"
|
||||
data-ol-disabled-inflight
|
||||
)
|
||||
span(data-ol-inflight="idle") #{translate("join_project")}
|
||||
span(hidden data-ol-inflight="pending") #{translate("joining")}…
|
||||
.form-group.text-center
|
||||
|
||||
@@ -117,6 +117,7 @@ describe('CollaboratorsInviteController', function () {
|
||||
|
||||
this.SplitTestHandler = {
|
||||
promises: {
|
||||
getAssignment: sinon.stub().resolves({ variant: 'default' }),
|
||||
getAssignmentForUser: sinon.stub().resolves({ variant: 'default' }),
|
||||
},
|
||||
}
|
||||
|
||||
@@ -18,6 +18,11 @@ describe('TemplatesController', function () {
|
||||
'./TemplatesManager': (this.TemplatesManager = {
|
||||
promises: { createProjectFromV1Template: sinon.stub() },
|
||||
}),
|
||||
'../SplitTests/SplitTestHandler': (this.SplitTestHandler = {
|
||||
promises: {
|
||||
getAssignment: sinon.stub().resolves({ variant: 'default' }),
|
||||
},
|
||||
}),
|
||||
},
|
||||
})
|
||||
this.next = sinon.stub()
|
||||
|
||||
Reference in New Issue
Block a user