v1.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. /**
  3. * The backBtn widget class file of zin module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  6. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author sunhao<sunhao@easycorp.ltd>
  8. * @package zin
  9. * @link http://www.zentao.net
  10. */
  11. namespace zin;
  12. require_once dirname(__DIR__) . DS . 'btn' . DS . 'v1.php';
  13. /**
  14. * 后退按钮(backBtn)部件类。
  15. * The back button widget class.
  16. *
  17. * @author Hao Sun
  18. */
  19. class backBtn extends btn
  20. {
  21. /**
  22. * Define widget properties.
  23. *
  24. * @var array
  25. * @access protected
  26. */
  27. protected static $defineProps = array(
  28. 'back?: string="APP"' // 定义返回行为,可以为 `'APP'`(默认值,返回打开当前页面时的上一个历史记录)、 `'GLOBAL'`(返回上一个全局历史记录)、`'moduleName-methodName'`(从历史记录中向后查找符合指定路径的历史记录)。
  29. );
  30. /**
  31. * Override the getProps method.
  32. *
  33. * @access protected
  34. * @return array
  35. */
  36. protected function getProps()
  37. {
  38. global $app;
  39. $backs = array(
  40. 'task' => 'execution-task,my-work,my-contribute,execution-tree,execution-grouptask,project-execution,product-track,repo-view,story-change,execution-kanban,execution-taskkanban,my-index,feedback-adminview,projectstory-track,execution-calendar,my-effort,company-effort,company-calendar,product-dynamic,project-dynamic,execution-dynamic,project-view,execution-view,task-view',
  41. 'story' => 'product-browse,projectstory-story,execution-story,my-work,my-contribute,productplan-view,build-view,projectbuild-view,product-track,repo-view,testcase-zerocase,my-index,feedback-adminview,projectstory-track,task-view,my-effort,company-effort,company-calendar,demandpool-track,product-dynamic,project-dynamic,execution-dynamic,project-view,execution-view,ticket-browse,ticket-view,roadmap-view,charter-view,demand-view,review-assess,review-audit,action-trash,execution-task,testcase-browse,story-view',
  42. 'bug' => 'bug-browse,project-bug,my-work,my-contribute,execution-bug,bug-view,qa-index,execution-task,product-track,execution-task,task-view,repo-view,story-change,repo-review,feedback-adminview,my-index,projectstory-track,my-effort,company-effort,company-calendar,product-dynamic,project-dynamic,execution-dynamic,project-view,execution-view,ticket-browse,ticket-view,productplan-view',
  43. 'testcase' => 'testcase-browse,testcase-browseScene,project-testcase,my-work,my-contribute,execution-testcase,testtask-cases,testsuite-view,product-browse,testcase-view,qa-index,caselib-browse,product-track,story-change,my-index,projectstory-track,my-effort,company-effort,company-calendar,product-dynamic,project-dynamic,execution-dynamic,project-view,execution-view,testreport-view,bug-browse,project-bug,bug-view,testcase-groupcase',
  44. 'testsuite' => 'testsuite-browse,testsuite-view,testtask-cases,my-index,product-dynamic,project-dynamic,execution-dynamic,project-view,execution-view',
  45. 'testtask' => 'testtask-browse,testtask-cases,qa-index,testcase-browse,execution-build,my-index,my-effort,company-effort,company-calendar,product-dynamic,project-dynamic,execution-dynamic,project-view,execution-view,project-testcase,project-testtask,execution-testtask',
  46. 'testreport' => 'testreport-browse,project-testreport,execution-testreport,execution-testtask',
  47. 'tree' => 'product-browse,project-browse,execution-task,bug-browse,projectstory-story,host-browse,execution-story,feedback-admin,ticket-browse,testcase-browse,caselib-browse,dataview-browse,deliverable-browse,workflowdatasource-browse',
  48. 'doc' => 'doc-mySpace,doc-productSpace,doc-projectSpace,doc-teamSpace,doc-view,execution-doc',
  49. 'design' => 'design-browse,projectstory-track,my-effort,company-effort,company-calendar,my-index',
  50. 'release' => 'release-browse,release-view,product-roadmap,kanban-view,projectrelease-browse,story-view,my-index,my-effort,company-effort,company-calendar,product-dynamic,project-dynamic,project-view',
  51. 'productplan' => 'productplan-browse,kanban-view,projectplan-browse,my-index,my-effort,company-effort,company-calendar,product-dynamic,project-dynamic,project-view,charter-view',
  52. 'programplan' => 'project-execution',
  53. 'projectrelease' => 'projectrelease-browse',
  54. 'projectstory' => 'projectstory-story',
  55. 'build' => 'execution-build,build-view,project-index,kanban-view,testtask-browse,projectbuild-browse,my-effort,company-effort,company-calendar,my-index,project-dynamic,execution-dynamic,project-view,execution-view,testtask-view',
  56. 'projectbuild' => 'projectbuild-browse,projectbuild-view,project-index',
  57. 'repo' => 'repo-maintain,repo-log,repo-browse,repo-view,repo-review,mr-view,repo-browsewebhooks,repo-browserule',
  58. 'mr' => 'pullreq-browse,mr-browse,my-audit',
  59. 'pullreq' => 'pullreq-browse',
  60. 'compile' => 'compile-browse',
  61. 'store' => 'store-browse',
  62. 'space' => 'space-browse',
  63. 'serverroom' => 'serverroom-browse',
  64. 'project' => 'program-browse,program-project,project-browse,project-view,project-team,charter-view,project-template,project-deliverable',
  65. 'product' => 'product-all,product-browse,program-productview,program-product,product-view,product-dynamic,my-index,charter-view,testtask-view,roadmap-browse,productplan-browse,product-track,product-project,release-browse,product-roadmap,doc-productspace,tree-browse,product-whitelist,APP',
  66. 'gitlab' => 'space-browse,gitlab-browseproject',
  67. 'gitfox' => 'space-browse',
  68. 'zanode' => 'zanode-browse,zanode-view',
  69. 'zahost' => 'zahost-browse,zahost-view',
  70. 'stakeholder' => 'stakeholder-browse,program-stakeholder',
  71. 'execution' => 'execution-story,execution-team,execution-index,execution->view,project-execution,execution-all,project-index,user-execution,execution-relation,programplan-relation',
  72. 'ai' => 'ai-models',
  73. 'api' => 'api-index',
  74. 'demand' => 'demand-browse,demand-view,my-work,my-contribute,feedback-adminview,feedback-admin,my-index,demandpool-track,product-dynamic',
  75. 'issue' => 'issue-browse,issue-view,my-index,project-index,project-dynamic,execution-dynamic,project-view,execution-view',
  76. 'risk' => 'risk-browse,risk-view,my-index,project-index,project-dynamic,execution-dynamic,project-view,execution-view',
  77. 'opportunity' => 'opportunity-browse,opportunity-view,my-index,project-index,project-dynamic,execution-dynamic,project-view,execution-view',
  78. 'meeting' => 'meeting-browse,meeting-view,my-index,project-dynamic,execution-dynamic,project-view,execution-view,my-meeting',
  79. 'todo' => 'my-todo,my-effort,company-effort,company-calendar',
  80. 'feedback' => 'feedback-admin,feedback-browse,my-work,my-contribute,my-effort,company-effort,company-calendar',
  81. 'ticket' => 'my-effort,company-effort,company-calendar,ticket-browse,my-work,my-contribute',
  82. 'designguide' => 'designguide-browse,designguide-view,execution-task,task-view', // For designguide plugin.
  83. 'deploy' => 'deploy-browse,deploy-steps,deploy-scope,deploy-view,deploy-cases',
  84. 'service' => 'service-browse,service-manage,service-view',
  85. 'domain' => 'domain-browse,domain-view',
  86. 'researchtask' => 'marketresearch-task,my-index,product-dynamic,project-dynamic,project-view,my-contribute',
  87. 'review' => 'review-browse,project-deliverable,my-index,product-dynamic,project-dynamic,project-view,programplan-browse,project-execution,my-contribute,my-audit',
  88. 'charter' => 'my-index,charter-browse,charter-view,my-audit,program-browse,project-view',
  89. 'roadmap' => 'charter-view',
  90. 'approvalflow' => 'approvalflow-browse',
  91. 'host' => 'host-browse,my-index',
  92. 'deploy' => 'deploy-browse',
  93. 'program' => 'program-browse,program-productview',
  94. 'workflowgroup' => 'workflowgroup-project,workflowgroup-deliverable',
  95. 'cm' => 'cm-browse,cm-view,my-contribute',
  96. 'deliverable' => 'deliverable-browse,project-deliverable,action-trash',
  97. 'weekly' => 'weekly-browse',
  98. 'milestone' => 'weekly-browse',
  99. 'nc' => 'nc-browse',
  100. 'budget' => 'budget-browse,action-trash'
  101. );
  102. $props = parent::getProps();
  103. $back = $this->prop('back');
  104. $module = $app->getModuleName();
  105. $method = $app->getMethodName();
  106. if($back != 'APP')
  107. {
  108. $props['data-back'] = $back;
  109. }
  110. elseif(isset($backs[$module]))
  111. {
  112. $backList = explode(',', $backs[$module]);
  113. $backList = array_diff($backList, array("$module-$method"));
  114. $props['data-back'] = implode(',', $backList);
  115. }
  116. else
  117. {
  118. $props['data-back'] = empty($back) ? 'APP' : $back;
  119. }
  120. return $props;
  121. }
  122. /**
  123. * Override the getClassList method.
  124. *
  125. * @access protected
  126. * @return array
  127. */
  128. protected function getClassList()
  129. {
  130. $classList = parent::getClassList();
  131. $classList['open-url'] = true;
  132. return $classList;
  133. }
  134. }