I adapted the great customization Matthias created, to allow for 1234#12345: links to events in other cases. And I made the event ids less prominent.
name: EasyEvents
description: Makes linking to bug events easier
author: Matthias Pigulla, Michel de Ruiter
version: 1.3
js:
$(".bugevent .summary").each(function() {
var content = $(this);
content.append('<span class="eventid">' +
content.find('.date a').attr('name')
.replace('BugEvent.', '#') +
'</span>');
});
function isTextNode() {
return this.nodeType == 3;
}
function findLinks() {
$('.bugevent.detailed .body').contents().filter(isTextNode)
.each(function() {
var ref = RegExp(/(\d*)#(\d+)/g);
while (ref.test(this.data)) {
var casenr = RegExp.$1, event = RegExp.$2;
var link = '#BugEvent.' + event;
if ($('#bugevent_' + event).length > 0)
casenr = ''; // Only use case number if necessary.
else { // Event not on this page:
if (casenr == '') // case number must be there;
continue; // else just forget about it.
link = '?' + casenr + link;
}
var oldlength = this.data.length;
var patLength = casenr.length + 1 + event.length;
var before = this.data.substring(0, ref.lastIndex - patLength);
var after = this.data.substring(ref.lastIndex, this.data.length);
this.parentNode.insertBefore(document.createTextNode(before), this);
var a = document.createElement("a");
a.setAttribute("href", link);
var text = casenr + '#\u200d' + event; // Prevent recursion (‍)!
a.appendChild(document.createTextNode(text));
this.parentNode.insertBefore(a, this);
if (typeof this.textContent !== "undefined")
this.textContent = after;
else
this.nodeValue = after; // IE
ref.lastIndex += this.data.length - oldlength;
}
});
}
findLinks();
$(window).on('BugViewChange', findLinks);
css:
.bugevent .eventid {
float: right;
font-size: xx-small;
color: #CCC;
}