diff -r 8ec189cc214d -r b2e0186daa5b src/cm/media/js/client/c_scopes.js --- a/src/cm/media/js/client/c_scopes.js Wed Mar 27 17:51:18 2013 +0100 +++ b/src/cm/media/js/client/c_scopes.js Tue Jun 25 11:56:01 2013 +0200 @@ -266,12 +266,22 @@ //elt is supposed to be c-c classed _addIdClass = function (elt, commentId) { CY.DOM.addClass(elt, 'c-id-' + commentId) ; + var block_elt = _findParentBlockElt(elt); + if (block_elt != null) { + _unpaintCategories(block_elt); + _repaintCategories(elt, block_elt); + } _updateCommentCounter(elt) ; } ; //elt is supposed to be c-c classed _removeIdClass = function (elt, commentId) { CY.DOM.removeClass(elt, 'c-id-' + commentId) ; + var block_elt = _findParentBlockElt(elt); + if (block_elt != null) { + _unpaintCategories(block_elt); + _repaintCategories(elt, block_elt, commentId); + } _updateCommentCounter(elt) ; } ; @@ -280,8 +290,51 @@ var re = _cgetRegExp('(?:^|\\s+)c-id-(?:\\d+)', 'g'); elt['className'] = elt['className'].replace(re, " ") ; _updateCommentCounter(elt) ; + var block_elt = _findParentBlockElt(elt); + if (block_elt != null) { + _unpaintCategories(block_elt); + } } ; +// Finds the closest parent of an element which is a block. +_findParentBlockElt = function(elt) { + var block_elt = elt; + var block_elt_style = block_elt.currentStyle || window.getComputedStyle(block_elt, ""); + var block_elt_display = block_elt_style.display; + while (block_elt != null && block_elt_display != 'block') { + block_elt = block_elt.parentElement; + block_elt_style = block_elt.currentStyle || window.getComputedStyle(block_elt, ""); + block_elt_display = block_elt_style.display; + } + return block_elt; +}; + +// Removes all vertical bars from a block element. +_unpaintCategories = function(block_elt) { + CY.DOM.removeClass(block_elt, 'cat1'); + CY.DOM.removeClass(block_elt, 'cat2'); + CY.DOM.removeClass(block_elt, 'cat3'); + CY.DOM.removeClass(block_elt, 'cat4'); + CY.DOM.removeClass(block_elt, 'cat5'); +} + +// Paints all vertical bars of a block element but the one for commentId if not null. +_repaintCategories = function(elt, block_elt, commentId) { + // Loop through all comments in this wrapper id + var wrapper_id = parseInt(getWrapperAncestor(elt).id.substr(3)); + var len = gDb.comments.length; + for (var i=0; i= wrapper_id) { + if (comment.category) { + CY.DOM.addClass(block_elt, 'cat' + comment.category); + } + } + } + } +} + _recAddComment = function (elt, commentId) { if (CY.DOM.hasClass(elt, 'c-c')) { _addIdClass(elt, commentId) ;