v1.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace zin;
  3. require_once dirname(__DIR__) . DS . 'datalist' . DS . 'v1.php';
  4. class storyLifeInfo extends wg
  5. {
  6. /**
  7. * @var mixed[]
  8. */
  9. protected static $defineProps = array
  10. (
  11. 'story' => '?object', // 当前需求。
  12. 'reviewers' => '?array', // 评审人数据。
  13. 'users' => '?array' // 用户列表。
  14. );
  15. protected function getItems()
  16. {
  17. global $lang;
  18. $story = $this->prop('story', data('story'));
  19. if(!$story) return array();
  20. $users = $this->prop('users', data('users'));
  21. $reviewers = $this->prop('reviewers', data('reviewers'));
  22. $items = array();
  23. $items[$lang->story->openedBy] = zget($users, $story->openedBy) . $lang->at . $story->openedDate;
  24. $items[$lang->story->assignedTo] = $story->assignedTo ? zget($users, $story->assignedTo) . $lang->at . $story->assignedDate : '';
  25. $items[$lang->story->reviewers] = array
  26. (
  27. 'children' => wg(div
  28. (
  29. setClass('row gap-2 flex-wrap'),
  30. array_values(array_map(function($reviewer, $result) use($users, $lang, $story)
  31. {
  32. return !empty($result) ? span(setClass('mr-2'), set::title($lang->story->reviewed), $story->status != 'changing' && $story->status != 'draft' ? set::style(array('color' => '#cbd0db')) : null, zget($users, $reviewer)) : span(setClass('mr-2'), set::title($lang->story->toBeReviewed), zget($users, $reviewer));
  33. }, array_keys($reviewers), array_values($reviewers)))
  34. ))
  35. );
  36. $items[$lang->story->reviewedDate] = $story->reviewedDate;
  37. $items[$lang->story->closedBy] = $story->closedBy ? zget($users, $story->closedBy) . $lang->at . $story->closedDate : '';
  38. $items[$lang->story->closedReason] = array
  39. (
  40. 'class' => 'resolution',
  41. 'children' => wg
  42. (
  43. $story->closedReason ? zget($lang->story->reasonList, $story->closedReason) : null,
  44. isset($story->extraStories[$story->duplicateStory]) ? a(set::href(createLink($story->extraStories[$story->duplicateStory]->type, 'view', "storyID=$story->duplicateStory")), set::title($story->extraStories[$story->duplicateStory]->title), "#{$story->duplicateStory} {$story->extraStories[$story->duplicateStory]->title}") : null
  45. )
  46. );
  47. $items[$lang->story->lastEditedBy] = $story->lastEditedBy ? zget($users, $story->lastEditedBy) . $lang->at . $story->lastEditedDate : '';
  48. return $items;
  49. }
  50. protected function build()
  51. {
  52. global $app;
  53. return new datalist
  54. (
  55. set::className('story-life-info'),
  56. set::items($this->getItems()),
  57. $app->getClientLang() == 'en' ? set::labelWidth(80) : null
  58. );
  59. }
  60. }