Explorar el Código

Make the translation sanitization optional

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
tags/v20.0.0beta1
Christoph Wurst hace 4 años
padre
commit
74db91910c
No account linked to committer's email address

+ 3
- 3
core/js/dist/files_client.js
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/files_client.js.map
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/files_fileinfo.js
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/files_fileinfo.js.map
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/files_iedavclient.js
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/files_iedavclient.js.map
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 16
- 16
core/js/dist/install.js
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/install.js.map
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 22
- 22
core/js/dist/login.js
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/login.js.map
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 58
- 58
core/js/dist/main.js
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/main.js.map
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 20
- 20
core/js/dist/maintenance.js
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/maintenance.js.map
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 2
- 2
core/js/dist/recommendedapps.js
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 1
core/js/dist/recommendedapps.js.map
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 10
- 8
core/src/OC/l10n.js Ver fichero

@@ -12,6 +12,7 @@ import _ from 'underscore'
import $ from 'jquery'
import DOMPurify from 'dompurify'
import Handlebars from 'handlebars'
import identity from 'lodash/fp/identity'
import escapeHTML from 'escape-html'

import OC from './index'
@@ -84,15 +85,20 @@ const L10n = {
* @param {number} [count] number to replace %n with
* @param {array} [options] options array
* @param {bool} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)
* @param {bool} [options.sanitize=true] enable/disable sanitization (by default enabled)
* @returns {string}
*/
translate: function(app, text, vars, count, options) {
const defaultOptions = {
escape: true,
sanitize: true,
}
const allOptions = options || {}
_.defaults(allOptions, defaultOptions)

const optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity
const optEscape = allOptions.escape ? escapeHTML : identity

// TODO: cache this function to avoid inline recreation
// of the same function over and over again in case
// translate() is used in a loop
@@ -101,13 +107,9 @@ const L10n = {
function(a, b) {
const r = vars[b]
if (typeof r === 'string' || typeof r === 'number') {
if (allOptions.escape) {
return DOMPurify.sanitize(escapeHTML(r))
} else {
return DOMPurify.sanitize(r)
}
return optSanitize(optEscape(r))
} else {
return DOMPurify.sanitize(a)
return optSanitize(a)
}
}
)
@@ -120,9 +122,9 @@ const L10n = {
}

if (typeof vars === 'object' || count !== undefined) {
return DOMPurify.sanitize(_build(translation, vars, count))
return optSanitize(_build(translation, vars, count))
} else {
return DOMPurify.sanitize(translation)
return optSanitize(translation)
}
},


Cargando…
Cancelar
Guardar