|
@@ -1,86 +1,82 @@
|
|
|
-/* eslint-disable
|
|
|
|
|
- node/handle-callback-err,
|
|
|
|
|
- max-len,
|
|
|
|
|
- no-return-assign,
|
|
|
|
|
- no-unused-vars,
|
|
|
|
|
-*/
|
|
|
|
|
-// TODO: This file was created by bulk-decaffeinate.
|
|
|
|
|
-// Fix any style issues and re-enable lint.
|
|
|
|
|
-/*
|
|
|
|
|
- * decaffeinate suggestions:
|
|
|
|
|
- * DS102: Remove unnecessary code created because of implicit returns
|
|
|
|
|
- * DS207: Consider shorter variations of null checks
|
|
|
|
|
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
|
|
|
- */
|
|
|
|
|
-let BrandVariationsHandler
|
|
|
|
|
const OError = require('@overleaf/o-error')
|
|
const OError = require('@overleaf/o-error')
|
|
|
const url = require('url')
|
|
const url = require('url')
|
|
|
const settings = require('settings-sharelatex')
|
|
const settings = require('settings-sharelatex')
|
|
|
const logger = require('logger-sharelatex')
|
|
const logger = require('logger-sharelatex')
|
|
|
const V1Api = require('../V1/V1Api')
|
|
const V1Api = require('../V1/V1Api')
|
|
|
|
|
+const sanitizeHtml = require('sanitize-html')
|
|
|
|
|
|
|
|
-module.exports = BrandVariationsHandler = {
|
|
|
|
|
- getBrandVariationById(brandVariationId, callback) {
|
|
|
|
|
- if (callback == null) {
|
|
|
|
|
- callback = function (error, brandVariationDetails) {}
|
|
|
|
|
- }
|
|
|
|
|
- if (brandVariationId == null || brandVariationId === '') {
|
|
|
|
|
- return callback(new Error('Branding variation id not provided'))
|
|
|
|
|
- }
|
|
|
|
|
- logger.log({ brandVariationId }, 'fetching brand variation details from v1')
|
|
|
|
|
- return V1Api.request(
|
|
|
|
|
- {
|
|
|
|
|
- uri: `/api/v2/brand_variations/${brandVariationId}`
|
|
|
|
|
- },
|
|
|
|
|
- function (error, response, brandVariationDetails) {
|
|
|
|
|
- if (error != null) {
|
|
|
|
|
- OError.tag(error, 'error getting brand variation details', {
|
|
|
|
|
- brandVariationId
|
|
|
|
|
- })
|
|
|
|
|
- return callback(error)
|
|
|
|
|
- }
|
|
|
|
|
- _formatBrandVariationDetails(brandVariationDetails)
|
|
|
|
|
- return callback(null, brandVariationDetails)
|
|
|
|
|
- }
|
|
|
|
|
- )
|
|
|
|
|
|
|
+module.exports = {
|
|
|
|
|
+ getBrandVariationById
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function getBrandVariationById(brandVariationId, callback) {
|
|
|
|
|
+ if (brandVariationId == null || brandVariationId === '') {
|
|
|
|
|
+ return callback(new Error('Branding variation id not provided'))
|
|
|
}
|
|
}
|
|
|
|
|
+ logger.log({ brandVariationId }, 'fetching brand variation details from v1')
|
|
|
|
|
+ V1Api.request(
|
|
|
|
|
+ {
|
|
|
|
|
+ uri: `/api/v2/brand_variations/${brandVariationId}`
|
|
|
|
|
+ },
|
|
|
|
|
+ function (error, response, brandVariationDetails) {
|
|
|
|
|
+ if (error != null) {
|
|
|
|
|
+ OError.tag(error, 'error getting brand variation details', {
|
|
|
|
|
+ brandVariationId
|
|
|
|
|
+ })
|
|
|
|
|
+ return callback(error)
|
|
|
|
|
+ }
|
|
|
|
|
+ formatBrandVariationDetails(brandVariationDetails)
|
|
|
|
|
+ sanitizeBrandVariationDetails(brandVariationDetails)
|
|
|
|
|
+ callback(null, brandVariationDetails)
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-var _formatBrandVariationDetails = function (details) {
|
|
|
|
|
|
|
+function formatBrandVariationDetails(details) {
|
|
|
if (details.export_url != null) {
|
|
if (details.export_url != null) {
|
|
|
- details.export_url = _setV1AsHostIfRelativeURL(details.export_url)
|
|
|
|
|
|
|
+ details.export_url = setV1AsHostIfRelativeURL(details.export_url)
|
|
|
}
|
|
}
|
|
|
if (details.home_url != null) {
|
|
if (details.home_url != null) {
|
|
|
- details.home_url = _setV1AsHostIfRelativeURL(details.home_url)
|
|
|
|
|
|
|
+ details.home_url = setV1AsHostIfRelativeURL(details.home_url)
|
|
|
}
|
|
}
|
|
|
if (details.logo_url != null) {
|
|
if (details.logo_url != null) {
|
|
|
- details.logo_url = _setV1AsHostIfRelativeURL(details.logo_url)
|
|
|
|
|
|
|
+ details.logo_url = setV1AsHostIfRelativeURL(details.logo_url)
|
|
|
}
|
|
}
|
|
|
if (details.journal_guidelines_url != null) {
|
|
if (details.journal_guidelines_url != null) {
|
|
|
- details.journal_guidelines_url = _setV1AsHostIfRelativeURL(
|
|
|
|
|
|
|
+ details.journal_guidelines_url = setV1AsHostIfRelativeURL(
|
|
|
details.journal_guidelines_url
|
|
details.journal_guidelines_url
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
if (details.journal_cover_url != null) {
|
|
if (details.journal_cover_url != null) {
|
|
|
- details.journal_cover_url = _setV1AsHostIfRelativeURL(
|
|
|
|
|
|
|
+ details.journal_cover_url = setV1AsHostIfRelativeURL(
|
|
|
details.journal_cover_url
|
|
details.journal_cover_url
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
if (details.submission_confirmation_page_logo_url != null) {
|
|
if (details.submission_confirmation_page_logo_url != null) {
|
|
|
- details.submission_confirmation_page_logo_url = _setV1AsHostIfRelativeURL(
|
|
|
|
|
|
|
+ details.submission_confirmation_page_logo_url = setV1AsHostIfRelativeURL(
|
|
|
details.submission_confirmation_page_logo_url
|
|
details.submission_confirmation_page_logo_url
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
if (details.publish_menu_icon != null) {
|
|
if (details.publish_menu_icon != null) {
|
|
|
- return (details.publish_menu_icon = _setV1AsHostIfRelativeURL(
|
|
|
|
|
|
|
+ details.publish_menu_icon = setV1AsHostIfRelativeURL(
|
|
|
details.publish_menu_icon
|
|
details.publish_menu_icon
|
|
|
- ))
|
|
|
|
|
|
|
+ )
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-var _setV1AsHostIfRelativeURL = urlString =>
|
|
|
|
|
|
|
+function sanitizeBrandVariationDetails(details) {
|
|
|
|
|
+ if (details.submit_button_html) {
|
|
|
|
|
+ details.submit_button_html = sanitizeHtml(
|
|
|
|
|
+ details.submit_button_html,
|
|
|
|
|
+ settings.modules.sanitize.options
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function setV1AsHostIfRelativeURL(urlString) {
|
|
|
// The first argument is the base URL to resolve against if the second argument is not absolute.
|
|
// The first argument is the base URL to resolve against if the second argument is not absolute.
|
|
|
// As it only applies if the second argument is not absolute, we can use it to transform relative URLs into
|
|
// As it only applies if the second argument is not absolute, we can use it to transform relative URLs into
|
|
|
// absolute ones using v1 as the host. If the URL is absolute (e.g. a filepicker one), then the base
|
|
// absolute ones using v1 as the host. If the URL is absolute (e.g. a filepicker one), then the base
|
|
|
// argument is just ignored
|
|
// argument is just ignored
|
|
|
- url.resolve(settings.apis.v1.url, urlString)
|
|
|
|
|
|
|
+ return url.resolve(settings.apis.v1.url, urlString)
|
|
|
|
|
+}
|