mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-31 17:08:22 +01:00
Add a Delete link to Differential inline comment previews
Summary: This lets you delete inlines from the preview at the bottom of the page, instead of hunting for them through the diffs. There is not yet a keyboard shortcut. The mechanism for updating the inlines in the diffs is kind of a hack and I'm sure I'm special-casing way too much, but at least it works. Test Plan: Load revision with many diffs. Create inlines all over the place. Delete them all. Mwahaha. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Maniphest Tasks: T1433, T1431 Differential Revision: https://secure.phabricator.com/D3131
This commit is contained in:
parent
ce8bcf887d
commit
8e5189b439
3 changed files with 36 additions and 0 deletions
|
@ -90,6 +90,9 @@ final class DifferentialInlineCommentView extends AphrontView {
|
|||
);
|
||||
|
||||
$sigil = 'differential-inline-comment';
|
||||
if ($this->preview) {
|
||||
$sigil = $sigil . ' differential-inline-comment-preview';
|
||||
}
|
||||
|
||||
$content = $inline->getContent();
|
||||
$handles = $this->handles;
|
||||
|
@ -177,6 +180,14 @@ final class DifferentialInlineCommentView extends AphrontView {
|
|||
'sigil' => 'differential-inline-preview-jump',
|
||||
),
|
||||
'Not Visible');
|
||||
$links[] = javelin_render_tag(
|
||||
'a',
|
||||
array(
|
||||
'href' => '#',
|
||||
'mustcapture' => true,
|
||||
'sigil' => 'differential-inline-delete',
|
||||
),
|
||||
'Delete');
|
||||
}
|
||||
|
||||
if ($links) {
|
||||
|
|
|
@ -134,6 +134,10 @@ JX.install('DifferentialInlineCommentEditor', {
|
|||
var remove_old = (op == 'edit' || op == 'delete');
|
||||
if (remove_old) {
|
||||
JX.DOM.remove(this.getRow());
|
||||
var other_rows = this.getOtherRows();
|
||||
for(var i = 0; i < other_rows.length; ++i) {
|
||||
JX.DOM.remove(other_rows[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// Once the user saves something, get rid of the 'undo' option. A
|
||||
|
@ -251,6 +255,7 @@ JX.install('DifferentialInlineCommentEditor', {
|
|||
properties : {
|
||||
operation : null,
|
||||
row : null,
|
||||
otherRows: [],
|
||||
table : null,
|
||||
onRight : null,
|
||||
ID : null,
|
||||
|
|
|
@ -200,6 +200,25 @@ JX.behavior('differential-edit-inline-comments', function(config) {
|
|||
var handle_inline_action = function(node, op) {
|
||||
var data = JX.Stratcom.getData(node);
|
||||
var row = node.parentNode.parentNode;
|
||||
var other_rows = [];
|
||||
if (JX.Stratcom.hasSigil(node, 'differential-inline-comment-preview')) {
|
||||
// The DOM structure around the comment is different if it's part of the
|
||||
// preview, so make sure not to pass the wrong container.
|
||||
row = node;
|
||||
if (op === 'delete') {
|
||||
// Furthermore, deleting a comment in the preview does not automatically
|
||||
// delete other occurrences of the same comment, so do that manually.
|
||||
var nodes = JX.DOM.scry(
|
||||
document.body,
|
||||
'div',
|
||||
'differential-inline-comment');
|
||||
for (var i = 0; i < nodes.length; ++i) {
|
||||
if (JX.Stratcom.getData(nodes[i]).id === data.id) {
|
||||
other_rows.push(nodes[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var original = data.original;
|
||||
if (op == 'reply') {
|
||||
|
@ -217,6 +236,7 @@ JX.behavior('differential-edit-inline-comments', function(config) {
|
|||
.setOnRight(data.on_right)
|
||||
.setOriginalText(original)
|
||||
.setRow(row)
|
||||
.setOtherRows(other_rows)
|
||||
.setTable(row.parentNode)
|
||||
.start();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue