Я добавил due_date в пользовательское поле Manifest. Теперь я хочу, чтобы там, где когда-либо отображался список задач для пользователя, там также отображался срок исполнения.
Я знаю, что это очень небольшое изменение в кодовой базе, но я не могу отладить это.
Я пропустил шаг вам нужно, я думаю, чтобы позвонить $fields->readFieldsFromStoage($task)
а потом я использовал $field->getValueForStorage()
Я не могу сказать, насколько это правильно или законно, даже эффективно, но оно делает то, что, как я думаю, вы хотели
$fields = PhabricatorCustomField::getObjectFields(
$task,PhabricatorCustomField::ROLE_VIEW);
if ($fields){
$fields->readFieldsFromStorage($task);
foreach ($fields->getFields() as $field){
if ($field->getModernFieldKey()=='custom.mycustomfield'){
// in theory you might be able to add it like this
$item->addByline(pht('Due Date:%s', $field->getValueForStorage()));
$item->addByline(pht('Assigned: %s', $owner->renderLink()));
}
}
надеюсь, это поможет
Хорошо, не решение, но место для начала …
Чтобы изменить это, вам нужно отредактировать
ManiphestTaskListView.php в
phabricator / SRC / приложения / maniphest / просмотр
Где вы хотите указать срок исполнения, где находится «Назначено:»
if ($task->getOwnerPHID()) {
$owner = $handles[$task->getOwnerPHID()];
$item->addByline(pht('Assigned: %s', $owner->renderLink()));
}
Выделение пользовательских полей может потребовать немного больше исследований, я думаю, что вы можете получить доступ к пользовательским полям задач с помощью следующего
$fields = PhabricatorCustomField::getObjectFields(
$task,PhabricatorCustomField::ROLE_VIEW);
Затем вы можете вытащить поле, которое вы хотите, как это, если вам нужно, я подозреваю, что есть лучший способ сделать это … так что вы просто спросите конкретное поле
if ($fields){
foreach ($fields->getFields() as $field){
if ($field->getModernFieldKey()=='custom.mycustomfield'){
// in theory you might be able to add it like this
$item->addByline(pht('%s', $field->getXXXX()));
}
}
Я не уверен, что вам нужно сделать, чтобы получить значение настраиваемого поля, я использую getXXXX () для представления того, что вам может понадобиться, я думаю, что в настраиваемых полях часто есть метод render (), но опять же Я не совсем уверен, как вы делаете это для отображения в вашем списке