diff --git a/src/infrastructure/markup/PhabricatorMarkupOneOff.php b/src/infrastructure/markup/PhabricatorMarkupOneOff.php index d3350bfd27..58c5d054dd 100644 --- a/src/infrastructure/markup/PhabricatorMarkupOneOff.php +++ b/src/infrastructure/markup/PhabricatorMarkupOneOff.php @@ -1,80 +1,94 @@ <?php /** * Concrete object for accessing the markup engine with arbitrary blobs of * text, like form instructions. Usage: * * $output = PhabricatorMarkupEngine::renderOneObject( * id(new PhabricatorMarkupOneOff())->setContent($some_content), * 'default', * $viewer); * * This is less efficient than batching rendering, but appropriate for small * amounts of one-off text in form instructions. */ final class PhabricatorMarkupOneOff implements PhabricatorMarkupInterface { private $content; private $preserveLinebreaks; private $engineRuleset; + private $disableCache; public function setEngineRuleset($engine_ruleset) { $this->engineRuleset = $engine_ruleset; return $this; } public function getEngineRuleset() { return $this->engineRuleset; } public function setPreserveLinebreaks($preserve_linebreaks) { $this->preserveLinebreaks = $preserve_linebreaks; return $this; } public function setContent($content) { $this->content = $content; return $this; } public function getContent() { return $this->content; } + public function setDisableCache($disable_cache) { + $this->disableCache = $disable_cache; + return $this; + } + + public function getDisableCache() { + return $this->disableCache; + } + public function getMarkupFieldKey($field) { return PhabricatorHash::digestForIndex($this->getContent()).':oneoff'; } public function newMarkupEngine($field) { if ($this->engineRuleset) { return PhabricatorMarkupEngine::getEngine($this->engineRuleset); } else if ($this->preserveLinebreaks) { return PhabricatorMarkupEngine::getEngine(); } else { return PhabricatorMarkupEngine::getEngine('nolinebreaks'); } } public function getMarkupText($field) { return $this->getContent(); } public function didMarkupText( $field, $output, PhutilMarkupEngine $engine) { require_celerity_resource('phabricator-remarkup-css'); return phutil_tag( 'div', array( 'class' => 'phabricator-remarkup', ), $output); } public function shouldUseMarkupCache($field) { + if ($this->getDisableCache()) { + return false; + } + return true; } } diff --git a/src/infrastructure/markup/PhabricatorMarkupPreviewController.php b/src/infrastructure/markup/PhabricatorMarkupPreviewController.php index 5417df09ab..743bda0850 100644 --- a/src/infrastructure/markup/PhabricatorMarkupPreviewController.php +++ b/src/infrastructure/markup/PhabricatorMarkupPreviewController.php @@ -1,22 +1,23 @@ <?php final class PhabricatorMarkupPreviewController extends PhabricatorController { public function processRequest() { $request = $this->getRequest(); $viewer = $request->getUser(); $text = $request->getStr('text'); $output = PhabricatorMarkupEngine::renderOneObject( id(new PhabricatorMarkupOneOff()) ->setPreserveLinebreaks(true) + ->setDisableCache(true) ->setContent($text), 'default', $viewer); return id(new AphrontAjaxResponse()) ->setContent($output); } }