1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-09 16:32:39 +01:00

Allow custom hyperlinks; Pass differential.diff-id into remarkup engine config

Summary: This allows extensions to have more options for generating custom
hyperlinks.

Test Plan:
custom-inline rules are moved before default rules. Test existing products which
implement custom rules.
Make sure you use "$this->getEngine()->storeText()" in rules.

Reviewers: epriestley, jungejason

Reviewed By: jungejason

CC: aran, epriestley, emiraga, jungejason

Differential Revision: 1024
This commit is contained in:
Emir Habul 2011-10-20 09:41:38 -07:00
parent e788f0f766
commit f447e5d709
2 changed files with 16 additions and 10 deletions

View file

@ -58,7 +58,9 @@ final class DifferentialRevisionCommentListView extends AphrontView {
require_celerity_resource('differential-revision-comment-list-css');
$engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine();
$engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine(array(
'differential.diff' => $this->target
));
$inlines = mgroup($this->inlines, 'getCommentID');

View file

@ -48,12 +48,13 @@ class PhabricatorMarkupEngine {
));
}
public static function newDifferentialMarkupEngine() {
public static function newDifferentialMarkupEngine(array $options = array()) {
return self::newMarkupEngine(array(
'custom-inline' => PhabricatorEnv::getEnvConfig(
'differential.custom-remarkup-rules'),
'custom-block' => PhabricatorEnv::getEnvConfig(
'differential.custom-remarkup-block-rules'),
'differential.diff' => idx($options, 'differential.diff'),
));
}
@ -75,6 +76,7 @@ class PhabricatorMarkupEngine {
'remarkup.enable-embedded-youtube'),
'custom-inline' => array(),
'custom-block' => array(),
'differential.diff' => null,
'macros' => true,
'uri.allowed-protocols' => PhabricatorEnv::getEnvConfig(
'uri.allowed-protocols'),
@ -92,9 +94,19 @@ class PhabricatorMarkupEngine {
$engine->setConfig(
'uri.allowed-protocols',
$options['uri.allowed-protocols']);
$engine->setConfig('differential.diff', $options['differential.diff']);
$rules = array();
$rules[] = new PhutilRemarkupRuleEscapeRemarkup();
$custom_rule_classes = $options['custom-inline'];
if ($custom_rule_classes) {
foreach ($custom_rule_classes as $custom_rule_class) {
PhutilSymbolLoader::loadClass($custom_rule_class);
$rules[] = newv($custom_rule_class, array());
}
}
if ($options['fileproxy']) {
$rules[] = new PhabricatorRemarkupRuleProxyImage();
}
@ -122,14 +134,6 @@ class PhabricatorMarkupEngine {
$rules[] = new PhabricatorRemarkupRuleMention();
$custom_rule_classes = $options['custom-inline'];
if ($custom_rule_classes) {
foreach ($custom_rule_classes as $custom_rule_class) {
PhutilSymbolLoader::loadClass($custom_rule_class);
$rules[] = newv($custom_rule_class, array());
}
}
$rules[] = new PhutilRemarkupRuleEscapeHTML();
$rules[] = new PhutilRemarkupRuleMonospace();
$rules[] = new PhutilRemarkupRuleBold();