From c58f6377fcdc3625a7434c4ebdacf9f1ff83ad59 Mon Sep 17 00:00:00 2001 From: Kazuki Shimizu Date: Mon, 4 Jun 2018 00:18:09 +0900 Subject: [PATCH 1/2] Find all text when collect diff data Fixes #2050 --- src/main/twirl/gitbucket/core/repo/commentform.scala.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/twirl/gitbucket/core/repo/commentform.scala.html b/src/main/twirl/gitbucket/core/repo/commentform.scala.html index 0febbd363..22f160796 100644 --- a/src/main/twirl/gitbucket/core/repo/commentform.scala.html +++ b/src/main/twirl/gitbucket/core/repo/commentform.scala.html @@ -155,7 +155,7 @@ 'oldLine': oldTh.attr('line-number'), 'newLine': newTh.attr('line-number'), 'type': tr.has('td.insert').length > 0 ? 'insert' : tr.has('td.delete').length > 0 ? 'delete' : 'equal', - 'text': tr.find('td>span').text() + 'text': tr.find('td span').text() }) tr = tr.prev('tr:has(th.line-num)'); From 05e1807a95ea2a0c8945bc793e29e573325cd065 Mon Sep 17 00:00:00 2001 From: Kazuki Shimizu Date: Tue, 5 Jun 2018 22:33:48 +0900 Subject: [PATCH 2/2] Fix to add a line comment correctly on split mode Related with #2051 --- .../gitbucket/core/helper/diff.scala.html | 6 +- .../core/repo/commentform.scala.html | 69 +++++++++++++++++-- 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/src/main/twirl/gitbucket/core/helper/diff.scala.html b/src/main/twirl/gitbucket/core/helper/diff.scala.html index ce580862c..fb7d1dd40 100644 --- a/src/main/twirl/gitbucket/core/helper/diff.scala.html +++ b/src/main/twirl/gitbucket/core/helper/diff.scala.html @@ -335,7 +335,11 @@ $(function(){ .append(renderStatBar(add, del).attr('title', (add + del) + " lines changed").tooltip()); @if(hasWritePermission) { - diffText.find('.body').each(function(){ $('+').prependTo(this); }); + diffText.find('.body').filter(function(i, e) { + return $(e).has('span').length > 0; + }).each(function(){ + $('+').prependTo(this); + }); } @if(showLineNotes){ var fileName = table.attr('filename'); diff --git a/src/main/twirl/gitbucket/core/repo/commentform.scala.html b/src/main/twirl/gitbucket/core/repo/commentform.scala.html index 7d06501fc..e7df47b9b 100644 --- a/src/main/twirl/gitbucket/core/repo/commentform.scala.html +++ b/src/main/twirl/gitbucket/core/repo/commentform.scala.html @@ -140,6 +140,14 @@ } function getDiffData(tr){ + if(window.viewType === 0) { + return getDiffDataOnSplitMode(tr); + } else { + return getDiffDataOnUnifiedMode(tr); + } + } + + function getDiffDataOnUnifiedMode(tr) { var result = []; var count = 0; @@ -147,16 +155,19 @@ var oldTh = tr.find('th.oldline'); var newTh = tr.find('th.newline'); - if(!oldTh.attr('line-number') && !newTh.attr('line-number')){ + var oldLineNumber = oldTh.attr('line-number'); + var newLineNumber = newTh.attr('line-number'); + + if(!oldLineNumber && !newLineNumber){ break; } result.unshift({ - 'oldLine': oldTh.attr('line-number'), - 'newLine': newTh.attr('line-number'), + 'oldLine': oldLineNumber, + 'newLine': newLineNumber, 'type': tr.has('td.insert').length > 0 ? 'insert' : tr.has('td.delete').length > 0 ? 'delete' : 'equal', 'text': tr.find('td span').text() - }) + }); tr = tr.prev('tr:has(th.line-num)'); count++; @@ -164,5 +175,55 @@ return result; } + + function getDiffDataOnSplitMode(tr) { + var result = []; + var count = 0; + + while(tr && count < 4){ + var oldTh = tr.find('th.oldline'); + var newTh = tr.find('th.newline'); + + var oldLineNumber = oldTh.attr('line-number'); + var newLineNumber = newTh.attr('line-number'); + + if(!oldLineNumber && !newLineNumber){ + break; + } + + var oldTd = oldTh.next(); + var newTd = newTh.next(); + + if (oldTd.hasClass('equal') && newTd.hasClass('equal')) { + result.unshift({ + 'oldLine': oldLineNumber, + 'newLine': newLineNumber, + 'type': 'equal', + 'text': newTd.find('span').text() + }); + count++; + } else { + if(newLineNumber) { + result.unshift({ + 'newLine': newLineNumber, + 'type': 'insert', + 'text': newTd.find('span').text() + }); + count++; + } + if(oldLineNumber) { + result.unshift({ + 'oldLine': oldLineNumber, + 'type': 'delete', + 'text': oldTd.find('span').text() + }); + count++; + } + } + tr = tr.prev('tr:has(th.line-num)'); + } + + return result; + } }