diff options
author | Christoph <c@kluenter.de> | 2016-03-09 15:37:18 +0100 |
---|---|---|
committer | Christoph <c@kluenter.de> | 2016-03-09 15:37:18 +0100 |
commit | 3994188a0e4d9468518132f179eb56fab7760fbe (patch) | |
tree | 224e5d536b9a6c4859671b2cff57f1f60236ef9f /web-ui/app/js/helpers | |
parent | 281f88ba668e38883e822ea5bd96134ad3a3aa6c (diff) | |
parent | 23b175742f20d96e5b5d3d9cfcc0ed7067197f92 (diff) |
Merge pull request #636 from pixelated/dev/sandbox
Dev/sandbox
Diffstat (limited to 'web-ui/app/js/helpers')
-rw-r--r-- | web-ui/app/js/helpers/sanitizer.js | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/web-ui/app/js/helpers/sanitizer.js b/web-ui/app/js/helpers/sanitizer.js index eea1f0f7..443e8602 100644 --- a/web-ui/app/js/helpers/sanitizer.js +++ b/web-ui/app/js/helpers/sanitizer.js @@ -23,6 +23,16 @@ define(['DOMPurify', 'he'], function (DOMPurify, he) { */ var sanitizer = {}; + sanitizer.whitelist = [{ + // highlight tag open + pre: '<em class="search-highlight">', + post: '<em class="search-highlight">' + }, { + // highlight tag close + pre: '</em>', + post: '</em>' + }]; + /** * Adds html line breaks to a plaintext with line breaks (incl carriage return) * @@ -55,16 +65,24 @@ define(['DOMPurify', 'he'], function (DOMPurify, he) { }; /** - * Runs a given dirty body through he, thereby encoding everything - * as HTML entities. - * - * @param {string} dirtyBody The unsanitized string - * @return {string} Safe-to-display HTML string - */ + * Runs a given dirty body through he, thereby encoding everything + * as HTML entities. + * + * @param {string} dirtyBody The unsanitized string + * @return {string} Safe-to-display HTML string + */ sanitizer.purifyText = function (dirtyBody) { - return he.encode(dirtyBody, { + var escapedBody = he.encode(dirtyBody, { encodeEverything: true }); + + this.whitelist.forEach(function(entry) { + while (escapedBody.indexOf(entry.pre) > -1) { + escapedBody = escapedBody.replace(entry.pre, entry.post); + } + }); + + return escapedBody; }; /** |