app.html.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. /**
  3. * The app view file of doc module of ZenTaoPMS.
  4. * @copyright Copyright 2024 禅道软件(青岛)有限公司(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 Sun Hao<sunhao@easycorp.ltd>
  7. * @package doc
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. include($this->app->getModuleRoot() . 'ai/ui/promptmenu.html.php');
  12. /*
  13. * 定义库类型名称和图标。
  14. * Define the lib types and icons.
  15. */
  16. $libTypes = array();
  17. if($type === 'project')
  18. {
  19. $libTypes[] = array('type' => 'project', 'name' => $lang->projectCommon, 'icon' => 'project');
  20. $libTypes[] = array('type' => 'execution', 'name' => $lang->execution->common, 'icon' => 'run');
  21. }
  22. /**
  23. * 定义文档界面上的权限。
  24. * Define the privs of doc app.
  25. */
  26. $hasCustomSpace = $type == 'mine' || $type == 'custom';
  27. $projectTemplate = ($type === 'project' && !empty($project->isTpl)) || ($type == 'execution' && !empty($execution->isTpl));
  28. $privs = array();
  29. $privs['create'] = hasPriv('doc', 'create') && !$projectTemplate;
  30. $privs['edit'] = hasPriv('doc', 'edit') && !$projectTemplate;
  31. $privs['delete'] = hasPriv('doc', 'delete') && !$projectTemplate;
  32. $privs['view'] = hasPriv('doc', 'view');
  33. $privs['effort'] = $this->config->edition != 'open' && hasPriv('effort', 'createForObject');
  34. $privs['exportDoc'] = $this->config->edition != 'open' && hasPriv('doc', $type . '2export') && !$projectTemplate;
  35. $privs['exportApi'] = $this->config->edition != 'open' && hasPriv('api', 'export');
  36. $privs['moveDoc'] = hasPriv('doc', 'moveDoc') && !$projectTemplate;
  37. $privs['collect'] = hasPriv('doc', 'collect');
  38. $privs['createLib'] = hasPriv('doc', 'createLib');
  39. $privs['editLib'] = hasPriv('doc', 'editLib');
  40. $privs['moveLib'] = hasPriv('doc', 'moveLib') && !$projectTemplate;
  41. $privs['deleteLib'] = hasPriv('doc', 'deleteLib');
  42. $privs['sortDocLib'] = hasPriv('doc', 'sortDocLib');
  43. $privs['uploadFile'] = hasPriv('doc', 'create') && !$projectTemplate;
  44. $privs['editFile'] = hasPriv('file', 'edit');
  45. $privs['deleteFile'] = hasPriv('doc', 'deleteFile');
  46. $privs['exportFiles'] = hasPriv('doc', 'exportFiles') && !$projectTemplate;
  47. $privs['createSpace'] = $hasCustomSpace && hasPriv('doc', 'createSpace');
  48. $privs['deleteSpace'] = $hasCustomSpace && hasPriv('doc', 'deleteSpace');
  49. $privs['editSpace'] = $hasCustomSpace && hasPriv('doc', 'editSpace');
  50. $privs['addModule'] = hasPriv('doc', 'addCatalog');
  51. $privs['deleteModule'] = hasPriv('doc', 'deleteCatalog');
  52. $privs['editModule'] = hasPriv('doc', 'editCatalog');
  53. $privs['sortModule'] = hasPriv('doc', 'sortCatalog');
  54. $privs['sortDoclib'] = hasPriv('doc', 'sortDoclib');
  55. $privs['sortDoc'] = hasPriv('doc', 'sortDoc');
  56. $privs['batchMoveDoc'] = hasPriv('doc', 'batchMoveDoc');
  57. $privs['showFiles'] = hasPriv('doc', 'showFiles');
  58. $privs['createApi'] = hasPriv('api', 'create');
  59. $privs['editApi'] = hasPriv('api', 'edit');
  60. $privs['viewApi'] = hasPriv('api', 'view');
  61. $privs['createStruct'] = hasPriv('api', 'createStruct');
  62. $privs['createRelease']= hasPriv('api', 'createRelease');
  63. $privs['releases'] = hasPriv('api', 'releases');
  64. $privs['struct'] = hasPriv('api', 'struct');
  65. $privs['createOffice'] = $privs['create'];
  66. $privs['restoreDoc'] = $privs['edit'];
  67. $privs['addChapter'] = hasPriv('doc', 'addChapter');
  68. $privs['editChapter'] = hasPriv('doc', 'editChapter');
  69. $privs['deleteChapter'] = hasPriv('doc', 'deleteChapter');
  70. $privs['sortChapter'] = hasPriv('doc', 'sortChapter');
  71. $privs['productStory'] = hasPriv('product', 'browse');
  72. $privs['projectStory'] = hasPriv('projectstory', 'story');
  73. $privs['executionStory'] = hasPriv('execution', 'story');
  74. $privs['productCase'] = hasPriv('testcase', 'browse');
  75. $privs['caselibBrowse'] = hasPriv('caselib', 'browse');
  76. $privs['productBug'] = hasPriv('bug', 'browse');
  77. $privs['taskBrowse'] = hasPriv('execution', 'task');
  78. $privs['productplanBrowse'] = hasPriv('productplan', 'browse');
  79. $privs['releaseBrowse'] = hasPriv('release', 'browse');
  80. $privs['projectReleaseBrowse'] = hasPriv('projectRelease', 'browse');
  81. $privs['feedbackBrowse'] = hasPriv('feedback', 'admin');
  82. $privs['ticketBrowse'] = hasPriv('ticket', 'browse');
  83. $privs['requirementBrowse'] = hasPriv('product', 'requirement');
  84. $privs['epicBrowse'] = hasPriv('product', 'epic');
  85. $privs['storyView'] = hasPriv('story', 'view');
  86. $privs['taskView'] = hasPriv('task', 'view');
  87. $privs['caseView'] = hasPriv('testcase', 'view');
  88. $privs['bugView'] = hasPriv('bug', 'view');
  89. $privs['productplanView'] = hasPriv('productplan', 'view');
  90. $privs['releaseView'] = hasPriv('release', 'view');
  91. $privs['feedbackView'] = hasPriv('feedback', 'adminView');
  92. $privs['ticketView'] = hasPriv('ticket', 'view');
  93. $privs['programplanBrowse'] = hasPriv('programplan', 'browse');
  94. $privs['storyBrowse'] = $privs['productStory'] || $privs['executionStory'] || $privs['productplanView'];
  95. $privs['caseBrowse'] = $privs['productCase'] || $privs['caselibBrowse'];
  96. $privs['bugBrowse'] = $privs['productBug'] || $privs['productplanView'];
  97. $homeName = false;
  98. if($app->moduleName == 'doc' && isset($lang->doc->spaceList[$type]) && !$noSpace) $homeName = $lang->doc->spaceList[$type];
  99. docApp
  100. (
  101. set::spaceType($type),
  102. set::libTypes($libTypes),
  103. set::mode($mode),
  104. set::noSpace($noSpace),
  105. set::homeName($homeName),
  106. set::pager(array('recTotal' => $recTotal, 'recPerPage' => $recPerPage, 'page' => $pageID)),
  107. set::privs($privs),
  108. set::showLibFiles($privs['showFiles'] ? array('product', 'project', 'execution') : false),
  109. set::formatDataItem
  110. (
  111. jsCallback('type', 'item')
  112. ->beginIf('type === "doc"', 'item.api', 'typeof item.id === "number"')
  113. ->do('item.id = `api.${item.id}`')
  114. ->endIf()
  115. ->do('return item')
  116. ),
  117. set('$options', jsRaw('window.setDocAppOptions'))
  118. );