mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-26 16:52:41 +01:00
Diffusion / MetaMTA options
Summary: Implement Diffusion MetaMTA options. Also make the fake '{{config.option}}' rule work, and use Remarkup to render summaries as well as descriptions. Test Plan: Looked at Diffusion rules, edited some, looked at setup issues, verified '{{config.option}}' linked to the right option. Reviewers: codeblock, btrahan Reviewed By: codeblock CC: aran Maniphest Tasks: T2255 Differential Revision: https://secure.phabricator.com/D4466
This commit is contained in:
parent
4a21ed5561
commit
b04a6a1999
4 changed files with 90 additions and 2 deletions
|
@ -756,6 +756,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorDeveloperConfigOptions' => 'applications/config/option/PhabricatorDeveloperConfigOptions.php',
|
'PhabricatorDeveloperConfigOptions' => 'applications/config/option/PhabricatorDeveloperConfigOptions.php',
|
||||||
'PhabricatorDifferenceEngine' => 'infrastructure/diff/PhabricatorDifferenceEngine.php',
|
'PhabricatorDifferenceEngine' => 'infrastructure/diff/PhabricatorDifferenceEngine.php',
|
||||||
'PhabricatorDifferentialConfigOptions' => 'applications/differential/config/PhabricatorDifferentialConfigOptions.php',
|
'PhabricatorDifferentialConfigOptions' => 'applications/differential/config/PhabricatorDifferentialConfigOptions.php',
|
||||||
|
'PhabricatorDiffusionConfigOptions' => 'applications/diffusion/config/PhabricatorDiffusionConfigOptions.php',
|
||||||
'PhabricatorDirectoryController' => 'applications/directory/controller/PhabricatorDirectoryController.php',
|
'PhabricatorDirectoryController' => 'applications/directory/controller/PhabricatorDirectoryController.php',
|
||||||
'PhabricatorDirectoryMainController' => 'applications/directory/controller/PhabricatorDirectoryMainController.php',
|
'PhabricatorDirectoryMainController' => 'applications/directory/controller/PhabricatorDirectoryMainController.php',
|
||||||
'PhabricatorDisabledUserController' => 'applications/auth/controller/PhabricatorDisabledUserController.php',
|
'PhabricatorDisabledUserController' => 'applications/auth/controller/PhabricatorDisabledUserController.php',
|
||||||
|
@ -2133,6 +2134,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorDefaultSearchEngineSelector' => 'PhabricatorSearchEngineSelector',
|
'PhabricatorDefaultSearchEngineSelector' => 'PhabricatorSearchEngineSelector',
|
||||||
'PhabricatorDeveloperConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
'PhabricatorDeveloperConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorDifferentialConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
'PhabricatorDifferentialConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
|
'PhabricatorDiffusionConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorDirectoryController' => 'PhabricatorController',
|
'PhabricatorDirectoryController' => 'PhabricatorController',
|
||||||
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
|
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
|
||||||
'PhabricatorDisabledUserController' => 'PhabricatorAuthController',
|
'PhabricatorDisabledUserController' => 'PhabricatorAuthController',
|
||||||
|
|
|
@ -64,13 +64,21 @@ final class PhabricatorConfigGroupController
|
||||||
$db_values = mpull($db_values, null, 'getConfigKey');
|
$db_values = mpull($db_values, null, 'getConfigKey');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$engine = id(new PhabricatorMarkupEngine())
|
||||||
|
->setViewer($this->getRequest()->getUser());
|
||||||
|
foreach ($options as $option) {
|
||||||
|
$engine->addObject($option, 'summary');
|
||||||
|
}
|
||||||
|
$engine->process();
|
||||||
|
|
||||||
$list = new PhabricatorObjectItemListView();
|
$list = new PhabricatorObjectItemListView();
|
||||||
foreach ($options as $option) {
|
foreach ($options as $option) {
|
||||||
|
$summary = $engine->getOutput($option, 'summary');
|
||||||
|
|
||||||
$item = id(new PhabricatorObjectItemView())
|
$item = id(new PhabricatorObjectItemView())
|
||||||
->setHeader($option->getKey())
|
->setHeader($option->getKey())
|
||||||
->setHref('/config/edit/'.$option->getKey().'/')
|
->setHref('/config/edit/'.$option->getKey().'/')
|
||||||
->addAttribute(phutil_escape_html($option->getSummary()));
|
->addAttribute($summary);
|
||||||
|
|
||||||
if (!$option->getHidden() && !$option->getMasked()) {
|
if (!$option->getHidden() && !$option->getMasked()) {
|
||||||
$current_value = PhabricatorEnv::getEnvConfig($option->getKey());
|
$current_value = PhabricatorEnv::getEnvConfig($option->getKey());
|
||||||
|
|
|
@ -151,7 +151,24 @@ final class PhabricatorConfigOption
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMarkupText($field) {
|
public function getMarkupText($field) {
|
||||||
return $this->getDescription();
|
switch ($field) {
|
||||||
|
case 'description':
|
||||||
|
$text = $this->getDescription();
|
||||||
|
break;
|
||||||
|
case 'summary':
|
||||||
|
$text = $this->getSummary();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: We should probably implement this as a real Markup rule, but
|
||||||
|
// markup rules are a bit of a mess right now and it doesn't hurt us to
|
||||||
|
// fake this.
|
||||||
|
$text = preg_replace(
|
||||||
|
'/{{([^}]+)}}/',
|
||||||
|
'[[/config/edit/\\1/ | \\1]]',
|
||||||
|
$text);
|
||||||
|
|
||||||
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function didMarkupText($field, $output, PhutilMarkupEngine $engine) {
|
public function didMarkupText($field, $output, PhutilMarkupEngine $engine) {
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorDiffusionConfigOptions
|
||||||
|
extends PhabricatorApplicationConfigOptions {
|
||||||
|
|
||||||
|
public function getName() {
|
||||||
|
return pht('Diffusion');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription() {
|
||||||
|
return pht('Configure Diffusion repository browsing.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOptions() {
|
||||||
|
return array(
|
||||||
|
$this->newOption(
|
||||||
|
'metamta.diffusion.subject-prefix',
|
||||||
|
'string',
|
||||||
|
'[Diffusion]')
|
||||||
|
->setDescription(pht('Subject prefix for Diffusion mail.')),
|
||||||
|
$this->newOption(
|
||||||
|
'metamta.diffusion.reply-handler-domain',
|
||||||
|
'string',
|
||||||
|
null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'See {{metamta.maniphest.reply-handler}}. This does the same '.
|
||||||
|
'thing, but affects Diffusion.')),
|
||||||
|
$this->newOption(
|
||||||
|
'metamta.diffusion.reply-handler',
|
||||||
|
'class',
|
||||||
|
'PhabricatorAuditReplyHandler')
|
||||||
|
->setBaseClass('PhabricatorMailReplyHandler')
|
||||||
|
->setDescription(pht('Override mail reply handler class.')),
|
||||||
|
$this->newOption(
|
||||||
|
'metamta.diffusion.attach-patches',
|
||||||
|
'bool',
|
||||||
|
false)
|
||||||
|
->setBoolOptions(
|
||||||
|
array(
|
||||||
|
pht("Attach Patches"),
|
||||||
|
pht("Do Not Attach Patches"),
|
||||||
|
))
|
||||||
|
->setDescription(pht(
|
||||||
|
'Set this to true if you want patches to be attached to commit '.
|
||||||
|
'notifications from Diffusion.')),
|
||||||
|
$this->newOption('metamta.diffusion.inline-patches', 'int', 0)
|
||||||
|
->setSummary(pht('Include patches in Diffusion mail as body text.'))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'To include patches in Diffusion email bodies, set this to a '.
|
||||||
|
'positive integer. Patches will be inlined if they are at most '.
|
||||||
|
'that many lines. By default, patches are not inlined.')),
|
||||||
|
$this->newOption('metamta.diffusion.byte-limit', 'int', 1024 * 1024)
|
||||||
|
->setDescription(pht('Hard byte limit on including patches in email.')),
|
||||||
|
$this->newOption('metamta.diffusion.time-limit', 'int', 60)
|
||||||
|
->setDescription(pht('Hard time limit on generating patches.')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue