diff --git a/app/assets/javascripts/pretty-text/sanitizer.js.es6 b/app/assets/javascripts/pretty-text/sanitizer.js.es6 index f62df9d4bb2..512e3328465 100644 --- a/app/assets/javascripts/pretty-text/sanitizer.js.es6 +++ b/app/assets/javascripts/pretty-text/sanitizer.js.es6 @@ -98,6 +98,14 @@ export function sanitize(text, whiteLister) { return "-STRIP-"; } + // Heading ids must begin with `heading--` + if ( + ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].indexOf(tag) !== -1 && + value.match(/^heading\-\-[a-zA-Z0-9\-\_]+$/) + ) { + return attr(name, value); + } + const custom = whiteLister.getCustom(); for (let i=0; i { QUnit.test("ids on headings", assert => { const pt = new PrettyText(buildOptions({ siteSettings: {} })); assert.equal(pt.sanitize("

Test Heading

"), "

Test Heading

"); - assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); - assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); - assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); - assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); - assert.equal(pt.sanitize(`
Test Heading
`), `
Test Heading
`); - assert.equal(pt.sanitize(`
Test Heading
`), `
Test Heading
`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`
Test Heading
`), `
Test Heading
`); + assert.equal(pt.sanitize(`
Test Heading
`), `
Test Heading
`); +}); + +QUnit.test("poorly formed ids on headings", assert => { + let pt = new PrettyText(buildOptions({ siteSettings: {} })); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); + assert.equal(pt.sanitize(`

Test Heading

`), `

Test Heading

`); }); QUnit.test("urlAllowed", assert => {