mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-13 12:54:53 +01:00
Summary: Shows a timeline of all modified settings Fixes T6545 Will show all settings (no pagination, should be not so difficult to add if needed but most installs won't have hundreds of settings changes) I'm not happy by how the PhabricatorConfigTransaction object is instructed to render the config keys but i don't see any other reasonable way. We could always show the keys though. Test Plan: Changed settings and called the history page Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T6545 Differential Revision: https://secure.phabricator.com/D11088
156 lines
4.1 KiB
PHP
156 lines
4.1 KiB
PHP
<?php
|
|
|
|
final class PhabricatorConfigTransaction
|
|
extends PhabricatorApplicationTransaction {
|
|
|
|
const TYPE_EDIT = 'config:edit';
|
|
|
|
public function getApplicationName() {
|
|
return 'config';
|
|
}
|
|
|
|
public function getApplicationTransactionType() {
|
|
return PhabricatorConfigConfigPHIDType::TYPECONST;
|
|
}
|
|
|
|
public function getApplicationTransactionCommentObject() {
|
|
return null;
|
|
}
|
|
|
|
public function getTitle() {
|
|
$author_phid = $this->getAuthorPHID();
|
|
|
|
$old = $this->getOldValue();
|
|
$new = $this->getNewValue();
|
|
|
|
switch ($this->getTransactionType()) {
|
|
case self::TYPE_EDIT:
|
|
|
|
// TODO: After T2213 show the actual values too; for now, we don't
|
|
// have the tools to do it without making a bit of a mess of it.
|
|
|
|
$old_del = idx($old, 'deleted');
|
|
$new_del = idx($new, 'deleted');
|
|
if ($old_del && !$new_del) {
|
|
return pht(
|
|
'%s created this configuration entry.',
|
|
$this->renderHandleLink($author_phid));
|
|
} else if (!$old_del && $new_del) {
|
|
return pht(
|
|
'%s deleted this configuration entry.',
|
|
$this->renderHandleLink($author_phid));
|
|
} else if ($old_del && $new_del) {
|
|
// This is a bug.
|
|
return pht(
|
|
'%s deleted this configuration entry (again?).',
|
|
$this->renderHandleLink($author_phid));
|
|
} else {
|
|
return pht(
|
|
'%s edited this configuration entry.',
|
|
$this->renderHandleLink($author_phid));
|
|
}
|
|
break;
|
|
}
|
|
|
|
return parent::getTitle();
|
|
}
|
|
|
|
public function getTitleForFeed(PhabricatorFeedStory $story = null) {
|
|
$author_phid = $this->getAuthorPHID();
|
|
|
|
$old = $this->getOldValue();
|
|
$new = $this->getNewValue();
|
|
|
|
switch ($this->getTransactionType()) {
|
|
case self::TYPE_EDIT:
|
|
$old_del = idx($old, 'deleted');
|
|
$new_del = idx($new, 'deleted');
|
|
if ($old_del && !$new_del) {
|
|
return pht(
|
|
'%s created %s.',
|
|
$this->renderHandleLink($author_phid),
|
|
$this->getObject()->getConfigKey());
|
|
} else if (!$old_del && $new_del) {
|
|
return pht(
|
|
'%s deleted %s.',
|
|
$this->renderHandleLink($author_phid),
|
|
$this->getObject()->getConfigKey());
|
|
} else if ($old_del && $new_del) {
|
|
// This is a bug.
|
|
return pht(
|
|
'%s deleted %s (again?).',
|
|
$this->renderHandleLink($author_phid),
|
|
$this->getObject()->getConfigKey());
|
|
} else {
|
|
return pht(
|
|
'%s edited %s.',
|
|
$this->renderHandleLink($author_phid),
|
|
$this->getObject()->getConfigKey());
|
|
}
|
|
break;
|
|
}
|
|
|
|
return parent::getTitle();
|
|
}
|
|
|
|
|
|
public function getIcon() {
|
|
switch ($this->getTransactionType()) {
|
|
case self::TYPE_EDIT:
|
|
return 'fa-pencil';
|
|
}
|
|
|
|
return parent::getIcon();
|
|
}
|
|
|
|
public function hasChangeDetails() {
|
|
switch ($this->getTransactionType()) {
|
|
case self::TYPE_EDIT:
|
|
return true;
|
|
}
|
|
return parent::hasChangeDetails();
|
|
}
|
|
|
|
public function renderChangeDetails(PhabricatorUser $viewer) {
|
|
$old = $this->getOldValue();
|
|
$new = $this->getNewValue();
|
|
|
|
if ($old['deleted']) {
|
|
$old_text = '';
|
|
} else {
|
|
$old_text = PhabricatorConfigJSON::prettyPrintJSON($old['value']);
|
|
}
|
|
|
|
if ($new['deleted']) {
|
|
$new_text = '';
|
|
} else {
|
|
$new_text = PhabricatorConfigJSON::prettyPrintJSON($new['value']);
|
|
}
|
|
|
|
return $this->renderTextCorpusChangeDetails(
|
|
$viewer,
|
|
$old_text,
|
|
$new_text);
|
|
}
|
|
|
|
public function getColor() {
|
|
$old = $this->getOldValue();
|
|
$new = $this->getNewValue();
|
|
|
|
switch ($this->getTransactionType()) {
|
|
case self::TYPE_EDIT:
|
|
$old_del = idx($old, 'deleted');
|
|
$new_del = idx($new, 'deleted');
|
|
|
|
if ($old_del && !$new_del) {
|
|
return PhabricatorTransactions::COLOR_GREEN;
|
|
} else if (!$old_del && $new_del) {
|
|
return PhabricatorTransactions::COLOR_RED;
|
|
} else {
|
|
return PhabricatorTransactions::COLOR_BLUE;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|