Кто-нибудь добавил пользовательское поле в список задач Показать в панели инструментов (Phabricator)

Я добавил due_date в пользовательское поле Manifest. Теперь я хочу, чтобы там, где когда-либо отображался список задач для пользователя, там также отображался срок исполнения.
Я знаю, что это очень небольшое изменение в кодовой базе, но я не могу отладить это.

введите описание изображения здесь

0

Решение

Я пропустил шаг вам нужно, я думаю, чтобы позвонить $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()));
}
}

надеюсь, это поможет

1

Другие решения

Хорошо, не решение, но место для начала …

Чтобы изменить это, вам нужно отредактировать

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 (), но опять же Я не совсем уверен, как вы делаете это для отображения в вашем списке

1

По вопросам рекламы [email protected]