project.html.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * The project view file of my module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  5. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  6. * @author Tingting Dai <daitingting@easycorp.ltd>
  7. * @package my
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('delayInfo', $lang->project->delayInfo);
  12. jsVar('confirmDeleteTip', $lang->project->confirmDelete);
  13. featurebar
  14. (
  15. set::current($status),
  16. set::linkParams("status={key}&orderBy={$orderBy}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}")
  17. );
  18. $this->loadModel('project');
  19. $config->project->dtable->fieldList['id']['type'] = 'id';
  20. $config->project->dtable->fieldList['id']['checkbox'] = false;
  21. $config->project->dtable->fieldList['status']['show'] = false;
  22. $config->project->dtable->fieldList['budget']['show'] = false;
  23. $config->project->dtable->fieldList['hasProduct']['map'] = $lang->project->projectTypeList;
  24. if($config->edition != 'open') $config->project->dtable->fieldList['workflowGroup']['map'] = $this->loadModel('workflowGroup')->getPairs('project', 'all', 1, 'all');
  25. $settings = $this->loadModel('datatable')->getSetting('my');
  26. $projects = initTableData($projects, $settings, $this->project);
  27. $waitCount = 0;
  28. $doingCount = 0;
  29. $suspendedCount = 0;
  30. $closedCount = 0;
  31. foreach($projects as $project)
  32. {
  33. $this->project->formatDataForList($project, array());
  34. if($project->status == 'wait') $waitCount ++;
  35. if($project->status == 'doing') $doingCount ++;
  36. if($project->status == 'suspended') $suspendedCount ++;
  37. if($project->status == 'closed') $closedCount ++;
  38. if(!empty($project->PM))
  39. {
  40. $project->PMAccount = $project->PM;
  41. $project->PMAvatar = $usersAvatar[$project->PM];
  42. $project->PM = \zget($users, $project->PM);
  43. }
  44. if($project->budget)
  45. {
  46. $projectBudget = in_array($this->app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $lang->project->tenThousand : round((float)$project->budget, 2);
  47. $project->budget = zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget;
  48. }
  49. else
  50. {
  51. $project->budget = $lang->project->future;
  52. }
  53. $project->end = $project->end == LONG_TIME ? $lang->project->longTime : $project->end;
  54. $project->estimate = helper::formatHours($project->estimate);
  55. $project->consume = helper::formatHours($project->consume);
  56. }
  57. $projects = array_values($projects);
  58. $footerHtml = sprintf($lang->project->summary, count($projects));
  59. if($status == 'openedbyme') $footerHtml = sprintf($lang->project->allSummary, count($projects), $waitCount, $doingCount, $suspendedCount, $closedCount);
  60. dtable
  61. (
  62. set::cols($settings),
  63. set::data($projects),
  64. set::customCols(true),
  65. set::onRenderCell(jsRaw('window.onRenderProjectNameCell')),
  66. set::orderBy($orderBy),
  67. set::sortLink(createLink('my', 'project', "status={$status}&orderBy={name}_{sortType}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}")),
  68. set::footer(array(array('html' => $footerHtml), 'flex', 'pager')),
  69. set::footPager(usePager()),
  70. set::emptyTip($lang->project->empty)
  71. );
  72. render();