diff --git a/src/applications/config/editor/PhabricatorConfigEditor.php b/src/applications/config/editor/PhabricatorConfigEditor.php index a2ca330fdf..cb21eb2a0d 100644 --- a/src/applications/config/editor/PhabricatorConfigEditor.php +++ b/src/applications/config/editor/PhabricatorConfigEditor.php @@ -18,7 +18,7 @@ final class PhabricatorConfigEditor switch ($xaction->getTransactionType()) { case PhabricatorConfigTransaction::TYPE_EDIT: return array( - 'deleted' => (bool)$object->getIsDeleted(), + 'deleted' => (int)$object->getIsDeleted(), 'value' => $object->getValue(), ); } @@ -54,7 +54,7 @@ final class PhabricatorConfigEditor $v['value']); } - $object->setIsDeleted($v['deleted']); + $object->setIsDeleted((int)$v['deleted']); $object->setValue($v['value']); break; } diff --git a/src/applications/conpherence/controller/ConpherenceController.php b/src/applications/conpherence/controller/ConpherenceController.php index 6ca418661d..3050ceb224 100644 --- a/src/applications/conpherence/controller/ConpherenceController.php +++ b/src/applications/conpherence/controller/ConpherenceController.php @@ -155,7 +155,9 @@ abstract class ConpherenceController extends PhabricatorController { $item->addClass('conpherence-selected'); $item->addClass('hide-unread-count'); } - $nav->addCustomBlock($item->render()); + + // TODO: [HTML] Clean this up when we clean up HTML stuff in Conpherence. + $nav->addCustomBlock(phutil_safe_html($item->render())); } if (empty($conpherences) || $read) { $nav->addCustomBlock($this->getNoConpherencesBlock()); diff --git a/src/applications/conpherence/view/ConpherenceTransactionView.php b/src/applications/conpherence/view/ConpherenceTransactionView.php index c44b80faa5..bcb3278fa7 100644 --- a/src/applications/conpherence/view/ConpherenceTransactionView.php +++ b/src/applications/conpherence/view/ConpherenceTransactionView.php @@ -35,6 +35,7 @@ final class ConpherenceTransactionView extends AphrontView { ->setEpoch($transaction->getDateCreated()) ->setContentSource($transaction->getContentSource()); + $content = null; $content_class = null; switch ($transaction->getTransactionType()) { case ConpherenceTransactionType::TYPE_TITLE: diff --git a/src/applications/daemon/view/PhabricatorDaemonLogListView.php b/src/applications/daemon/view/PhabricatorDaemonLogListView.php index c60b584209..190e17c3cd 100644 --- a/src/applications/daemon/view/PhabricatorDaemonLogListView.php +++ b/src/applications/daemon/view/PhabricatorDaemonLogListView.php @@ -47,17 +47,17 @@ final class PhabricatorDaemonLogListView extends AphrontView { case PhabricatorDaemonLog::STATUS_RUNNING: $style = 'color: #00cc00'; $title = 'Running'; - $symbol = '•'; + $symbol = "\xE2\x80\xA2"; break; case PhabricatorDaemonLog::STATUS_DEAD: $style = 'color: #cc0000'; $title = 'Died'; - $symbol = '•'; + $symbol = "\xE2\x80\xA2"; break; case PhabricatorDaemonLog::STATUS_EXITED: $style = 'color: #000000'; $title = 'Exited'; - $symbol = '•'; + $symbol = "\xE2\x80\xA2"; break; case PhabricatorDaemonLog::STATUS_UNKNOWN: default: // fallthrough diff --git a/src/applications/differential/view/DifferentialChangesetFileTreeSideNavBuilder.php b/src/applications/differential/view/DifferentialChangesetFileTreeSideNavBuilder.php index 6ee62cc218..f2b1e59f40 100644 --- a/src/applications/differential/view/DifferentialChangesetFileTreeSideNavBuilder.php +++ b/src/applications/differential/view/DifferentialChangesetFileTreeSideNavBuilder.php @@ -116,10 +116,13 @@ final class DifferentialChangesetFileTreeSideNavBuilder { } $tree->destroy(); - $filetree = - '
'. - implode("\n", $filetree). - '
'; + $filetree = phutil_tag( + 'div', + array( + 'class' => 'phabricator-filetree', + ), + $filetree); + $nav->addLabel(pht('Changed Files')); $nav->addCustomBlock($filetree); $nav->setActive(true); diff --git a/src/applications/differential/view/DifferentialRevisionDetailView.php b/src/applications/differential/view/DifferentialRevisionDetailView.php index 55204ed32b..75fe45bfaf 100644 --- a/src/applications/differential/view/DifferentialRevisionDetailView.php +++ b/src/applications/differential/view/DifferentialRevisionDetailView.php @@ -80,7 +80,7 @@ final class DifferentialRevisionDetailView extends AphrontView { foreach ($this->auxiliaryFields as $field) { $value = $field->renderValueForRevisionView(); - if (strlen($value)) { + if ($value !== null) { $label = rtrim($field->renderLabelForRevisionView(), ':'); $properties->addProperty($label, $value); } diff --git a/src/applications/directory/controller/PhabricatorDirectoryMainController.php b/src/applications/directory/controller/PhabricatorDirectoryMainController.php index eca0c28b1a..e61cf16b48 100644 --- a/src/applications/directory/controller/PhabricatorDirectoryMainController.php +++ b/src/applications/directory/controller/PhabricatorDirectoryMainController.php @@ -345,7 +345,7 @@ final class PhabricatorDirectoryMainController array( ), array( - phutil_tag('strong', array(), $title.':'), + phutil_tag('strong', array(), $title.': '), $body ))); $this->minipanels[] = $panel; diff --git a/src/applications/feed/view/PhabricatorFeedStoryView.php b/src/applications/feed/view/PhabricatorFeedStoryView.php index bf23a53890..9900b5e9a7 100644 --- a/src/applications/feed/view/PhabricatorFeedStoryView.php +++ b/src/applications/feed/view/PhabricatorFeedStoryView.php @@ -111,7 +111,7 @@ final class PhabricatorFeedStoryView extends PhabricatorFeedView { require_celerity_resource('phabricator-feed-css'); - return phutil_tag( + return phutil_render_tag( 'div', array( 'class' => $this->oneLine @@ -119,7 +119,7 @@ final class PhabricatorFeedStoryView extends PhabricatorFeedView { : 'phabricator-feed-story', 'style' => $image_style, ), - array($head, $body, $foot)); + $this->renderSingleView(array($head, $body, $foot))); } } diff --git a/src/applications/herald/controller/HeraldTranscriptController.php b/src/applications/herald/controller/HeraldTranscriptController.php index 62af029da8..7008b49c6a 100644 --- a/src/applications/herald/controller/HeraldTranscriptController.php +++ b/src/applications/herald/controller/HeraldTranscriptController.php @@ -476,21 +476,21 @@ final class HeraldTranscriptController extends HeraldController { $rows = array(); foreach ($data as $name => $value) { - if (!is_scalar($value) && !is_null($value)) { - $value = implode("\n", $value); - } + if (!($value instanceof PhutilSafeHTML)) { + if (!is_scalar($value) && !is_null($value)) { + $value = implode("\n", $value); + } - if (strlen($value) > 256) { - $value = phutil_tag( - 'textarea', - array( - 'class' => 'herald-field-value-transcript', - ), - $value); - } else if ($name === 'Object Link') { - // The link cannot be escaped - } else { - $value = phutil_escape_html($value); + if (strlen($value) > 256) { + $value = phutil_tag( + 'textarea', + array( + 'class' => 'herald-field-value-transcript', + ), + $value); + } else { + $value = phutil_escape_html($value); + } } $rows[] = array( diff --git a/src/applications/owners/controller/PhabricatorOwnersEditController.php b/src/applications/owners/controller/PhabricatorOwnersEditController.php index a5aece08d1..1be18ddd8c 100644 --- a/src/applications/owners/controller/PhabricatorOwnersEditController.php +++ b/src/applications/owners/controller/PhabricatorOwnersEditController.php @@ -32,7 +32,10 @@ final class PhabricatorOwnersEditController $package->setName($request->getStr('name')); $package->setDescription($request->getStr('description')); $old_auditing_enabled = $package->getAuditingEnabled(); - $package->setAuditingEnabled($request->getStr('auditing') === 'enabled'); + $package->setAuditingEnabled( + ($request->getStr('auditing') === 'enabled') + ? 1 + : 0); $primary = $request->getArr('primary'); $primary = reset($primary); diff --git a/src/applications/slowvote/controller/PhabricatorSlowvoteCreateController.php b/src/applications/slowvote/controller/PhabricatorSlowvoteCreateController.php index 5dcb904707..3f3d5f1b6d 100644 --- a/src/applications/slowvote/controller/PhabricatorSlowvoteCreateController.php +++ b/src/applications/slowvote/controller/PhabricatorSlowvoteCreateController.php @@ -23,7 +23,7 @@ final class PhabricatorSlowvoteCreateController if ($request->isFormPost()) { $poll->setQuestion($request->getStr('question')); $poll->setResponseVisibility($request->getInt('response_visibility')); - $poll->setShuffle($request->getBool('shuffle', false)); + $poll->setShuffle((int)$request->getBool('shuffle', false)); $poll->setMethod($request->getInt('method')); if (!strlen($poll->getQuestion())) { diff --git a/src/applications/transactions/storage/PhabricatorApplicationTransaction.php b/src/applications/transactions/storage/PhabricatorApplicationTransaction.php index 72e7ac08ad..00bbde7e3d 100644 --- a/src/applications/transactions/storage/PhabricatorApplicationTransaction.php +++ b/src/applications/transactions/storage/PhabricatorApplicationTransaction.php @@ -143,7 +143,7 @@ abstract class PhabricatorApplicationTransaction foreach ($phids as $phid) { $links[] = $this->renderHandleLink($phid); } - return implode(', ', $links); + return phutil_safe_html(implode(', ', $links)); } public function getIcon() { diff --git a/src/view/layout/PhabricatorObjectItemListView.php b/src/view/layout/PhabricatorObjectItemListView.php index 76b9c7655f..4ae41564ca 100644 --- a/src/view/layout/PhabricatorObjectItemListView.php +++ b/src/view/layout/PhabricatorObjectItemListView.php @@ -53,8 +53,7 @@ final class PhabricatorObjectItemListView extends AphrontView { $string = nonempty($this->noDataString, pht('No data.')); $items = id(new AphrontErrorView()) ->setSeverity(AphrontErrorView::SEVERITY_NODATA) - ->appendChild(phutil_escape_html($string)) - ->render(); + ->appendChild(phutil_escape_html($string)); } $pager = null; diff --git a/webroot/rsrc/js/application/core/behavior-dark-console.js b/webroot/rsrc/js/application/core/behavior-dark-console.js index 99370a9342..50a3471997 100644 --- a/webroot/rsrc/js/application/core/behavior-dark-console.js +++ b/webroot/rsrc/js/application/core/behavior-dark-console.js @@ -40,6 +40,8 @@ JX.behavior('dark-console', function(config, statics) { statics.visible = config.visible; statics.selected = config.selected; + install_shortcut(); + return statics.root; } @@ -202,29 +204,30 @@ JX.behavior('dark-console', function(config, statics) { JX.DOM.setContent(statics.el.panel, div); } - // Install keyboard shortcut. - var desc = 'Toggle visibility of DarkConsole.'; - new JX.KeyboardShortcut('`', desc) - .setHandler(function(manager) { - statics.visible = !statics.visible; + function install_shortcut() { + var desc = 'Toggle visibility of DarkConsole.'; + new JX.KeyboardShortcut('`', desc) + .setHandler(function(manager) { + statics.visible = !statics.visible; - if (statics.visible) { - JX.DOM.show(root); - if (statics.req.current) { - draw_request(statics.req.current); + if (statics.visible) { + JX.DOM.show(root); + if (statics.req.current) { + draw_request(statics.req.current); + } + } else { + JX.DOM.hide(root); } - } else { - JX.DOM.hide(root); - } - // Save user preference. - new JX.Request('/~/', JX.bag) - .setData({visible: statics.visible ? 1 : 0}) - .send(); + // Save user preference. + new JX.Request('/~/', JX.bag) + .setData({visible: statics.visible ? 1 : 0}) + .send(); - // Force resize listeners to take effect. - JX.Stratcom.invoke('resize'); - }) - .register(); + // Force resize listeners to take effect. + JX.Stratcom.invoke('resize'); + }) + .register(); + } });