diff --git a/src/applications/differential/controller/DifferentialChangesetViewController.php b/src/applications/differential/controller/DifferentialChangesetViewController.php
index 3d7454c229..e1c35f9808 100644
--- a/src/applications/differential/controller/DifferentialChangesetViewController.php
+++ b/src/applications/differential/controller/DifferentialChangesetViewController.php
@@ -244,12 +244,14 @@ final class DifferentialChangesetViewController extends DifferentialController {
$detail->setVsChangesetID($left_source);
$panel = new DifferentialPrimaryPaneView();
- $panel->appendChild(phutil_render_tag('div',
+ $panel->appendChild(
+ phutil_tag(
+ 'div',
array(
'class' => 'differential-review-stage',
'id' => 'differential-review-stage',
- ), $detail->render())
- );
+ ),
+ $detail->render()));
return $this->buildStandardPageResponse(
array(
diff --git a/src/applications/differential/view/DifferentialDiffTableOfContentsView.php b/src/applications/differential/view/DifferentialDiffTableOfContentsView.php
index 75de304237..cd30fa0c90 100644
--- a/src/applications/differential/view/DifferentialDiffTableOfContentsView.php
+++ b/src/applications/differential/view/DifferentialDiffTableOfContentsView.php
@@ -148,7 +148,7 @@ final class DifferentialDiffTableOfContentsView extends AphrontView {
$rows[] =
'
'.
- phutil_render_tag(
+ phutil_tag(
'td',
array(
'class' => 'differential-toc-char',
diff --git a/src/applications/differential/view/DifferentialLocalCommitsView.php b/src/applications/differential/view/DifferentialLocalCommitsView.php
index f3f6eab6de..6a3cae9439 100644
--- a/src/applications/differential/view/DifferentialLocalCommitsView.php
+++ b/src/applications/differential/view/DifferentialLocalCommitsView.php
@@ -88,13 +88,13 @@ final class DifferentialLocalCommitsView extends AphrontView {
$summary = phutil_utf8_shorten($summary, 80);
$view = new AphrontMoreView();
- $view->setSome(phutil_escape_html($summary));
+ $view->setSome($summary);
if ($message && (trim($summary) != trim($message))) {
- $view->setMore(nl2br(phutil_escape_html($message)));
+ $view->setMore(phutil_escape_html_newlines($message));
}
- $row[] = phutil_render_tag(
+ $row[] = phutil_tag(
'td',
array(
'class' => 'summary',
diff --git a/src/applications/differential/view/DifferentialRevisionCommentListView.php b/src/applications/differential/view/DifferentialRevisionCommentListView.php
index 8edeaeea81..ebccc8c78a 100644
--- a/src/applications/differential/view/DifferentialRevisionCommentListView.php
+++ b/src/applications/differential/view/DifferentialRevisionCommentListView.php
@@ -159,22 +159,29 @@ final class DifferentialRevisionCommentListView extends AphrontView {
array(
'markup' => implode("\n", $hidden),
));
- $hidden = javelin_render_tag(
+ $hidden = javelin_tag(
'div',
array(
'sigil' => "differential-all-comments-container",
),
- '');
+ phutil_tag(
+ 'div',
+ array(
+ 'class' => 'differential-older-comments-are-hidden',
+ ),
+ array(
+ pht(
+ '%d older comments are hidden. ',
+ number_format(count($hidden))),
+ javelin_tag(
+ 'a',
+ array(
+ 'href' => '#',
+ 'mustcapture' => true,
+ 'sigil' => 'differential-show-all-comments',
+ ),
+ pht('Show all comments.')),
+ )));
} else {
$hidden = null;
}
diff --git a/src/applications/diffusion/controller/DiffusionBrowseFileController.php b/src/applications/diffusion/controller/DiffusionBrowseFileController.php
index 534ddd7e8c..b690c484ea 100644
--- a/src/applications/diffusion/controller/DiffusionBrowseFileController.php
+++ b/src/applications/diffusion/controller/DiffusionBrowseFileController.php
@@ -271,6 +271,10 @@ final class DiffusionBrowseFileController extends DiffusionController {
'sigil' => 'diffusion-source',
),
implode("\n", $rows));
+
+ // TODO: [HTML] Major cheating here.
+ $corpus_table = phutil_safe_html($corpus_table);
+
$corpus = phutil_tag(
'div',
array(
@@ -723,18 +727,29 @@ final class DiffusionBrowseFileController extends DiffusionController {
array(
'target' => 'scroll_target',
));
- $anchor_text = '';
+ $anchor_text = phutil_tag(
+ 'a',
+ array(
+ 'id' => 'scroll_target',
+ ),
+ '');
} else {
$anchor_text = null;
}
- $blame[] = phutil_render_tag(
+ $blame[] = phutil_tag(
'td',
array(
),
- $anchor_text.
- "\xE2\x80\x8B". // NOTE: See phabricator-oncopy behavior.
- $line['data']);
+ array(
+ $anchor_text,
+
+ // NOTE: See phabricator-oncopy behavior.
+ "\xE2\x80\x8B",
+
+ // TODO: [HTML] Not ideal.
+ phutil_safe_html($line['data']),
+ ));
$rows[] = phutil_tag(
'tr',
diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php
index 7181c0b5da..52392e1746 100644
--- a/src/applications/diffusion/controller/DiffusionCommitController.php
+++ b/src/applications/diffusion/controller/DiffusionCommitController.php
@@ -442,13 +442,25 @@ final class DiffusionCommitController extends DiffusionController {
foreach ($parents as $parent) {
$parent_links[] = $handles[$parent->getPHID()]->renderLink();
}
- $props['Parents'] = implode(' · ', $parent_links);
+ $props['Parents'] = array_interleave(
+ " \xC2\xB7 ",
+ $parent_links);
}
$request = $this->getDiffusionRequest();
- $props['Branches'] = 'Unknown';
- $props['Tags'] = 'Unknown';
+ $props['Branches'] = phutil_tag(
+ 'span',
+ array(
+ 'id' => 'commit-branches',
+ ),
+ 'Unknown');
+ $props['Tags'] = phutil_tag(
+ 'span',
+ array(
+ 'id' => 'commit-tags',
+ ),
+ 'Unknown');
$callsign = $request->getRepository()->getCallsign();
$root = '/diffusion/'.$callsign.'/commit/'.$commit->getCommitIdentifier();
@@ -906,8 +918,8 @@ final class DiffusionCommitController extends DiffusionController {
),
$ref);
}
- $ref_links = implode(', ', $ref_links);
- return $ref_links;
+
+ return array_interleave(', ', $ref_links);
}
private function buildRawDiffResponse(DiffusionRequest $drequest) {
diff --git a/src/applications/ponder/view/PonderAddCommentView.php b/src/applications/ponder/view/PonderAddCommentView.php
index 16a324e7f4..f23f624df7 100644
--- a/src/applications/ponder/view/PonderAddCommentView.php
+++ b/src/applications/ponder/view/PonderAddCommentView.php
@@ -44,8 +44,8 @@ final class PonderAddCommentView extends AphrontView {
->setValue($is_serious ? 'Submit' : 'Editorialize'));
$view = id(new AphrontMoreView())
- ->setSome(id(new AphrontNullView())->render())
- ->setMore($form->render())
+ ->setSome('')
+ ->setMore(phutil_safe_html($form->render()))
->setExpandText('Add Comment');
return $view->render();
diff --git a/src/view/layout/AphrontMoreView.php b/src/view/layout/AphrontMoreView.php
index 3eb89714a5..0bd1b82d80 100644
--- a/src/view/layout/AphrontMoreView.php
+++ b/src/view/layout/AphrontMoreView.php
@@ -22,17 +22,19 @@ final class AphrontMoreView extends AphrontView {
}
public function render() {
- $some = $this->some;
- $text = "(Show More\xE2\x80\xA6)";
- if ($this->expandtext !== null) {
- $text = $this->expandtext;
- }
+ $content = array();
+ $content[] = $this->some;
- $link = null;
if ($this->more && $this->more != $this->some) {
+ $text = "(Show More\xE2\x80\xA6)";
+ if ($this->expandtext !== null) {
+ $text = $this->expandtext;
+ }
+
Javelin::initBehavior('aphront-more');
- $link = ' '.javelin_tag(
+ $content[] = ' ';
+ $content[] = javelin_tag(
'a',
array(
'sigil' => 'aphront-more-view-show-more',
@@ -45,11 +47,11 @@ final class AphrontMoreView extends AphrontView {
$text);
}
- return javelin_render_tag(
+ return javelin_tag(
'div',
array(
'sigil' => 'aphront-more-view',
),
- $some.$link);
+ $content);
}
}