任何在任务列表中添加自定义字段的人都显示在仪表板中(Phabricator)

时间:2018-07-18 14:49:16

标签: php project-management phabricator

我已将Due_date添加到清单自定义字段中。现在,我希望将任务列表显示给用户,然后在该位置也显示“到期日期”。 我知道它在代码库中的更改很小,但是我无法调试它。

enter image description here

2 个答案:

答案 0 :(得分:1)

不是解决方案,而是开始的地方...

要更改此设置,您需要进行编辑

ManiphestTaskListView.php

phabricator / src / applications / maniphest / view

您要放置到期日的位置是放置“已分配:”的位置

  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 :(得分:1)

我错过了您需要打电话给$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()));
           }
        }

希望有帮助