mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-23 05:50:55 +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',
|
||||
'PhabricatorDifferenceEngine' => 'infrastructure/diff/PhabricatorDifferenceEngine.php',
|
||||
'PhabricatorDifferentialConfigOptions' => 'applications/differential/config/PhabricatorDifferentialConfigOptions.php',
|
||||
'PhabricatorDiffusionConfigOptions' => 'applications/diffusion/config/PhabricatorDiffusionConfigOptions.php',
|
||||
'PhabricatorDirectoryController' => 'applications/directory/controller/PhabricatorDirectoryController.php',
|
||||
'PhabricatorDirectoryMainController' => 'applications/directory/controller/PhabricatorDirectoryMainController.php',
|
||||
'PhabricatorDisabledUserController' => 'applications/auth/controller/PhabricatorDisabledUserController.php',
|
||||
|
@ -2133,6 +2134,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorDefaultSearchEngineSelector' => 'PhabricatorSearchEngineSelector',
|
||||
'PhabricatorDeveloperConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||
'PhabricatorDifferentialConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||
'PhabricatorDiffusionConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||
'PhabricatorDirectoryController' => 'PhabricatorController',
|
||||
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
|
||||
'PhabricatorDisabledUserController' => 'PhabricatorAuthController',
|
||||
|
|
|
@ -64,13 +64,21 @@ final class PhabricatorConfigGroupController
|
|||
$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();
|
||||
foreach ($options as $option) {
|
||||
$summary = $engine->getOutput($option, 'summary');
|
||||
|
||||
$item = id(new PhabricatorObjectItemView())
|
||||
->setHeader($option->getKey())
|
||||
->setHref('/config/edit/'.$option->getKey().'/')
|
||||
->addAttribute(phutil_escape_html($option->getSummary()));
|
||||
->addAttribute($summary);
|
||||
|
||||
if (!$option->getHidden() && !$option->getMasked()) {
|
||||
$current_value = PhabricatorEnv::getEnvConfig($option->getKey());
|
||||
|
|
|
@ -151,7 +151,24 @@ final class PhabricatorConfigOption
|
|||
}
|
||||
|
||||
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) {
|
||||
|
|
|
@ -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