summaryrefslogtreecommitdiff
path: root/web-ui/app/js/tags
diff options
context:
space:
mode:
authorLisa Junger <ljunger@thoughtworks.com>2015-01-06 16:30:57 +0100
committerLisa Junger <ljunger@thoughtworks.com>2015-01-06 16:35:53 +0100
commit0ff59644d8e804bcab928d184b31a5e6cdc2f6ed (patch)
treeb6f4cd6f9826ea2e9d9e6e4e485a0fb32b78451d /web-ui/app/js/tags
parent2c19e7acbfb238e4fcd17725142c7ae9c43a3a77 (diff)
Issue #182: Escape special chars in tag list.
Diffstat (limited to 'web-ui/app/js/tags')
-rw-r--r--web-ui/app/js/tags/ui/tag.js19
1 files changed, 17 insertions, 2 deletions
diff --git a/web-ui/app/js/tags/ui/tag.js b/web-ui/app/js/tags/ui/tag.js
index a77155a7..0d2d2ebf 100644
--- a/web-ui/app/js/tags/ui/tag.js
+++ b/web-ui/app/js/tags/ui/tag.js
@@ -43,7 +43,7 @@ define(
this.viewFor = function (tag, template) {
return template({
tagName: tag.default ? i18n('tags.' + tag.name) : tag.name,
- ident: tag.ident,
+ ident: this.hashIdent(tag.ident),
count: this.badgeType(tag) === 'total' ? tag.counts.total : (tag.counts.total - tag.counts.read),
displayBadge: this.displayBadge(tag),
badgeType: this.badgeType(tag),
@@ -89,6 +89,21 @@ define(
}
};
+ this.hashIdent = function(ident) {
+ if (typeof ident === 'undefined') {
+ return '';
+ }
+ if (typeof ident === 'number') {
+ return ident;
+ }
+ if (ident.match(/^[a-zA-Z0-9 ]+$/)) {
+ return ident;
+ }
+
+ /*jslint bitwise: true */
+ return Math.abs(String(ident).split('').reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a;},0));
+ };
+
this.removeSearchingClass = function() {
if (this.attr.tag.name === 'all'){
this.$node.removeClass('searching');
@@ -106,7 +121,7 @@ define(
this.renderAndAttach = function (parent, data) {
var rendered = this.viewFor(data.tag, templates.tags.tag);
parent.append(rendered);
- this.initialize('#tag-' + data.tag.ident, data);
+ this.initialize('#tag-' + this.hashIdent(data.tag.ident), data);
this.on(parent, events.tags.teardown, this.teardown);
};
}