@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use prose diffs in Phriction

Summary: Ref T3353. This improves whitespace display of prose diffs and uses them in Phriction.

Test Plan: {F1677957}

Reviewers: chad, avivey

Reviewed By: avivey

Subscribers: avivey

Maniphest Tasks: T3353

Differential Revision: https://secure.phabricator.com/D16062

+20 -53
+12 -53
src/applications/phriction/controller/PhrictionDiffController.php
··· 45 45 $text_l = $content_l->getContent(); 46 46 $text_r = $content_r->getContent(); 47 47 48 - $text_l = phutil_utf8_hard_wrap($text_l, 80); 49 - $text_l = implode("\n", $text_l); 50 - $text_r = phutil_utf8_hard_wrap($text_r, 80); 51 - $text_r = implode("\n", $text_r); 48 + $diff_view = id(new PhabricatorApplicationTransactionTextDiffDetailView()) 49 + ->setOldText($text_l) 50 + ->setNewText($text_r); 52 51 53 - $engine = new PhabricatorDifferenceEngine(); 54 - $changeset = $engine->generateChangesetFromFileContent($text_l, $text_r); 55 - 56 - $changeset->setFilename($content_r->getTitle()); 57 - 58 - $changeset->setOldProperties( 59 - array( 60 - 'Title' => $content_l->getTitle(), 61 - )); 62 - $changeset->setNewProperties( 63 - array( 64 - 'Title' => $content_r->getTitle(), 65 - )); 66 - 67 - $whitespace_mode = DifferentialChangesetParser::WHITESPACE_SHOW_ALL; 68 - 69 - $parser = id(new DifferentialChangesetParser()) 70 - ->setUser($viewer) 71 - ->setChangeset($changeset) 72 - ->setRenderingReference("{$l},{$r}"); 73 - 74 - $parser->readParametersFromRequest($request); 75 - $parser->setWhitespaceMode($whitespace_mode); 76 - 77 - $engine = new PhabricatorMarkupEngine(); 78 - $engine->setViewer($viewer); 79 - $engine->process(); 80 - $parser->setMarkupEngine($engine); 81 - 82 - $spec = $request->getStr('range'); 83 - list($range_s, $range_e, $mask) = 84 - DifferentialChangesetParser::parseRangeSpecification($spec); 85 - 86 - $parser->setRange($range_s, $range_e); 87 - $parser->setMask($mask); 88 - 89 - if ($request->isAjax()) { 90 - return id(new PhabricatorChangesetResponse()) 91 - ->setRenderedChangeset($parser->renderChangeset()); 92 - } 93 - 94 - $changes = id(new DifferentialChangesetListView()) 95 - ->setUser($this->getViewer()) 96 - ->setChangesets(array($changeset)) 97 - ->setVisibleChangesets(array($changeset)) 98 - ->setRenderingReferences(array("{$l},{$r}")) 99 - ->setRenderURI('/phriction/diff/'.$document->getID().'/') 100 - ->setTitle(pht('Changes')) 52 + $changes = id(new PHUIObjectBoxView()) 53 + ->setHeaderText(pht('Content Changes')) 101 54 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 102 - ->setParser($parser); 55 + ->appendChild( 56 + phutil_tag( 57 + 'div', 58 + array( 59 + 'class' => 'prose-diff-frame', 60 + ), 61 + $diff_view)); 103 62 104 63 require_celerity_resource('phriction-document-css'); 105 64
+8
webroot/rsrc/css/application/differential/changeset-view.css
··· 93 93 user-select: none; 94 94 } 95 95 96 + .prose-diff { 97 + white-space: pre-wrap; 98 + } 99 + 100 + .prose-diff-frame { 101 + padding: 12px; 102 + } 103 + 96 104 .prose-diff span.old, 97 105 .prose-diff span.new { 98 106 padding: 0 2px;