1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-01-07 05:11:05 +01:00
phorge-phorge/src/infrastructure/markup/PhabricatorMarkupOneOff.php
epriestley b2c829f274 Move PhrictionContent from RemarkupInterface (deprecated) to PHUIRemarkupView
Summary:
Depends on D19092. Ref T13077. This modernizes markup rendering for PhrictionContent.

This is a little messy because table of contents generation isn't straightforward.

Test Plan: Viewed Phriction documents with and without 3+ headers, saw ToC vs no ToC. Edited/previewed documents. Grepped for affected symbols. Checked DarkConsole for sensible cache behavior.

Maniphest Tasks: T13077

Differential Revision: https://secure.phabricator.com/D19093
2018-02-15 17:40:51 -08:00

138 lines
3 KiB
PHP

<?php
/**
* DEPRECATED. Use @{class:PHUIRemarkupView}.
*/
final class PhabricatorMarkupOneOff
extends Phobject
implements PhabricatorMarkupInterface {
private $content;
private $preserveLinebreaks;
private $engineRuleset;
private $engine;
private $disableCache;
private $contentCacheFragment;
private $generateTableOfContents;
private $tableOfContents;
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 setEngine(PhutilMarkupEngine $engine) {
$this->engine = $engine;
return $this;
}
public function getEngine() {
return $this->engine;
}
public function setDisableCache($disable_cache) {
$this->disableCache = $disable_cache;
return $this;
}
public function getDisableCache() {
return $this->disableCache;
}
public function setGenerateTableOfContents($generate) {
$this->generateTableOfContents = $generate;
return $this;
}
public function getGenerateTableOfContents() {
return $this->generateTableOfContents;
}
public function getTableOfContents() {
return $this->tableOfContents;
}
public function setContentCacheFragment($fragment) {
$this->contentCacheFragment = $fragment;
return $this;
}
public function getContentCacheFragment() {
return $this->contentCacheFragment;
}
public function getMarkupFieldKey($field) {
$fragment = $this->getContentCacheFragment();
if ($fragment !== null) {
return $fragment;
}
return PhabricatorHash::digestForIndex($this->getContent()).':oneoff';
}
public function newMarkupEngine($field) {
if ($this->engine) {
return $this->engine;
}
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) {
if ($this->getGenerateTableOfContents()) {
$toc = PhutilRemarkupHeaderBlockRule::renderTableOfContents($engine);
$this->tableOfContents = $toc;
}
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;
}
}