docviewer.html.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. * The docviewer view file of weekly module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2025 禅道软件(青岛)有限公司(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 Shujie Tian <tianshujie@chandao.com>
  7. * @package weekly
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('projectID', $projectID);
  12. $privs = array();
  13. $privs['view'] = hasPriv('weekly', 'view');
  14. $privs['edit'] = common::canModify('project', $project) && hasPriv('weekly', 'edit');
  15. $privs['delete'] = common::canModify('project', $project) && hasPriv('weekly', 'delete');
  16. $privs['exportReport'] = hasPriv('weekly', 'exportReport');
  17. $privs['collect'] = 'no';
  18. $privs['restoreDoc'] = false;
  19. $app->loadLang('doc');
  20. $langData = array();
  21. foreach($lang->doc->docLang as $key => $value) $langData[$key] = $value;
  22. $langData['history'] = $lang->history;
  23. $langData['cancel'] = $lang->cancel;
  24. $langData['settings'] = $lang->settings;
  25. $langData['refreshData'] = $lang->weekly->refreshData;
  26. $langData['saveDraft'] = $lang->doc->saveDraft;
  27. $langData['release'] = $lang->doc->release;
  28. $langData['enterFullscreen'] = $lang->doc->docLang->enterFullscreen;
  29. $langData['exitFullscreen'] = $lang->doc->docLang->exitFullscreen;
  30. $langData['docOutline'] = $lang->weekly->outline;
  31. $langData['accessDenied'] = $lang->doc->accessDenied;
  32. $langData['delete'] = $lang->weekly->delete;
  33. $langData['confirmDelete'] = $lang->weekly->confirmDelete;
  34. $langData['confirmRefresh'] = $lang->weekly->confirmRefresh;
  35. $langData['needEditable'] = $lang->weekly->disabledHint->edit;
  36. $langData['reportList'] = $lang->weekly->reportList;
  37. $langData['edit'] = $lang->weekly->edit;
  38. $langData['deleted'] = $lang->deleted;
  39. /* 定义编辑报告时右侧的快捷菜单标签。*/
  40. $quickEditMenuTabs = array();
  41. if($mode == 'edit')
  42. {
  43. $langData['insertSystemData'] = $lang->reporttemplate->insertSystemData;
  44. /* Build tabs. */
  45. foreach($lang->reporttemplate->quickEditMenuList as $menuKey => $menuName) $quickEditMenuTabs[$menuKey] = array('key' => $menuKey, 'text' => $menuName, 'items' => array());
  46. /* Build property tree. */
  47. foreach($fields as $fieldKey => $fieldName)
  48. {
  49. $quickEditMenuTabs['properties']['items'][] = array('id' => "property_{$fieldKey}", 'text' => $fieldName, 'holder' => array('name' => "property_{$fieldKey}", 'text' => (string)$properties["property_{$fieldKey}"]));
  50. }
  51. /* Build data list tree. */
  52. foreach($lang->reporttemplate->filterList as $filterKey => $filterName)
  53. {
  54. if(in_array($filterKey, array('HLDS', 'DDS', 'DBDS', 'ADS')) && in_array($project->model, array('scrum', 'agileplus', 'kanban'))) continue;
  55. $quickEditMenuTabs['lists']['items'][] = array('id' => "list_{$filterKey}", 'text' => $filterName, 'url' => '###', 'data-toggle' => 'modal', 'data-size' => 'sm', 'data-url' => $this->createLink('reporttemplate', 'ajaxBuildZentaoListConfig', "type={$filterKey}&oldBlockID=0&projectID={$projectID}"));
  56. }
  57. /* Build measurement tree. */
  58. foreach($lang->reporttemplate->measurementList as $groupKey => $measurements)
  59. {
  60. $items = array();
  61. foreach($measurements as $measurementKey => $measurementName)
  62. {
  63. if($groupKey == 'execution')
  64. {
  65. $items[] = array('id' => "measurement_{$groupKey}_{$measurementKey}", 'text' => $measurementName, 'url' => '###', 'onClick' => jsRaw('window.insertExecutionMeasurement'), 'data-type' => "{$groupKey}_{$measurementKey}", 'data-project' => $projectID, 'hint' => $this->lang->reporttemplate->notice->filter . $this->lang->colon . $lang->reporttemplate->executionDataTips);
  66. }
  67. else
  68. {
  69. $items[] = array('id' => "measurement_{$groupKey}_{$measurementKey}", 'text' => $measurementName, 'url' => '###', 'data-toggle' => 'modal', 'data-url' => $this->createLink('reporttemplate', 'ajaxBuildZentaoMeasurementConfig', "type={$groupKey}_{$measurementKey}&blockID=0&projectID={$projectID}"));
  70. }
  71. }
  72. $quickEditMenuTabs['measurements']['items'][] = array
  73. (
  74. 'id' => $groupKey,
  75. 'text' => $lang->reporttemplate->{$groupKey},
  76. 'items' => $items
  77. );
  78. }
  79. /* Build chart tree. */
  80. foreach($lang->reporttemplate->chartList as $groupKey => $chartList)
  81. {
  82. $groupItems = array();
  83. foreach($chartList as $classKey => $charts)
  84. {
  85. $classItems = array();
  86. foreach($charts as $chartKey => $chartName)
  87. {
  88. $noCondition = false;
  89. if(in_array($groupKey, array('project', 'execution'))) $noCondition = true;
  90. if($groupKey == 'project' && $chartKey == 'summary') $noCondition = false;
  91. if($noCondition)
  92. {
  93. $classItems[] = array('id' => "chart_{$groupKey}_{$chartKey}", 'text' => $chartName, 'url' => '###', 'onClick' => jsRaw('window.insertExecutionChart'), 'data-type' => "{$groupKey}_{$classKey}_{$chartKey}", 'data-project' => $projectID);
  94. }
  95. else
  96. {
  97. $classItems[] = array('id' => "chart_{$groupKey}_{$chartKey}", 'text' => $chartName, 'url' => '###', 'data-toggle' => 'modal', 'data-url' => $this->createLink('reporttemplate', 'ajaxBuildZentaoChartConfig', "type={$groupKey}_{$classKey}_{$chartKey}&blockID=0&projectID={$projectID}"));
  98. }
  99. }
  100. $groupItems[] = array
  101. (
  102. 'id' => $classKey,
  103. 'text' => $lang->reporttemplate->{$classKey},
  104. 'items' => $classItems
  105. );
  106. }
  107. $quickEditMenuTabs['charts']['items'][] = array
  108. (
  109. 'id' => $groupKey,
  110. 'text' => $lang->reporttemplate->{$groupKey},
  111. 'items' => $groupItems
  112. );
  113. }
  114. }
  115. docViewer
  116. (
  117. set::doc((array)$report),
  118. set::docID((int)$report->id),
  119. set::mode($mode),
  120. set::privs($privs),
  121. set::userMap($userList),
  122. set::langData($langData),
  123. set::historyFetcher(createLink('action', 'ajaxGetList', 'objectType=weekly&objectID={objectID}')),
  124. set::historyPanel(array('objectType' => 'weekly')),
  125. set::editorProps(array('onClickHolder' => jsRaw('window.clickHolder'))),
  126. set::docFetcher(createLink('weekly', 'ajaxGetReport', 'reportID={docID}&version={version}')),
  127. set::quickEditMenu(array_values($quickEditMenuTabs)),
  128. set::openViewSidebar('quick-edit-menu')
  129. );