showfiles.html.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. /**
  3. * The showfiles view file of doc 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 Shujie Tian<tianshujie@easycorp.ltd>
  7. * @package doc
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('imageExtensionList', $config->file->imageExtensions);
  12. jsVar('sessionString', session_name() . '=' . session_id());
  13. jsVar('+searchLink', createLink('doc', 'showFiles', "type={$type}&objectID={$objectID}&viewType={$viewType}&browseType={$browseType}&param={$param}&orderBy=id_desc&recTotal=0&recPerPage=20&pageID=1&searchTitle=%s"));
  14. $filesBody = null;
  15. $canExport = $config->edition != 'open' && common::hasPriv('doc', 'exportFiles');
  16. $linkTpl = array('linkCreator' => helper::createLink('doc', $app->rawMethod, "type={$type}&objectID={$objectID}&viewType={$viewType}&browseType={$browseType}&param={$param}&orderBy={$orderBy}&recTotal={recTotal}&recPerPage={recPerPage}&pageID={page}&searchTitle={$searchTitle}"));
  17. if($viewType == 'list')
  18. {
  19. $fieldList = $config->doc->showfiles->dtable->fieldList;
  20. if($canExport) $fieldList['id']['type'] = 'checkID';
  21. $tableData = initTableData($files, $fieldList);
  22. $filesBody = dtable
  23. (
  24. set::checkable($canExport),
  25. set::userMap($users),
  26. set::cols($fieldList),
  27. set::data($tableData),
  28. set::emptyTip($lang->pager->noRecord),
  29. set::sortLink(inlink('showFiles', "type={$type}&objectID={$objectID}&viewType={$viewType}&browseType={$browseType}&param={$param}&orderBy={name}_{sortType}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}&searchTitle={$searchTitle}")),
  30. set::orderBy($orderBy),
  31. set::onRenderCell(jsRaw('window.renderCell')),
  32. set::footPager(usePager($linkTpl))
  33. );
  34. }
  35. elseif($files)
  36. {
  37. $cardsBox = null;
  38. foreach($files as $file)
  39. {
  40. $url = helper::createLink('file', 'download', "fileID={$file->id}");
  41. $url .= strpos($url, '?') === false ? '?' : '&';
  42. $url .= session_name() . '=' . session_id();
  43. $downloadLink = $this->createLink('file', 'download', "fileID={$file->id}&mouse=left");
  44. $cardsBox[] = div
  45. (
  46. setClass('col'),
  47. div
  48. (
  49. setClass('lib-file'),
  50. div
  51. (
  52. setClass('file'),
  53. a
  54. (
  55. set::href($url),
  56. set::title($file->title),
  57. set::target('_blank'),
  58. in_array($file->extension, array('jpg', 'jpeg', 'gif', 'png', 'bmp')) ? set('onclick', "return downloadFile({$file->id}, '{$file->extension}', {$file->imageWidth})") : null,
  59. in_array($file->extension, $config->file->imageExtensions) ? div
  60. (
  61. setClass('img-holder'),
  62. set('style', "background-image: url({$file->webPath})"),
  63. img(setClass(empty($file->imageWidth) ? 'not-exist' : ''), set('src', $file->webPath))
  64. ) : html($file->fileIcon)
  65. ),
  66. div(setClass('file-name'), set::title($file->title), $file->title),
  67. div
  68. (
  69. setClass('file-name text-gray'),
  70. $file->objectName,
  71. a
  72. (
  73. set::href(createLink(($file->objectType == 'requirement' ? 'story' : $file->objectType), 'view', "objectID={$file->objectID}")),
  74. set::title($file->sourceName),
  75. $file->sourceName,
  76. $file->objectType != 'doc' ? set(array('data-toggle' => 'modal', 'data-size' => 'lg')) : null
  77. )
  78. )
  79. )
  80. )
  81. );
  82. }
  83. $filesBody = panel
  84. (
  85. setClass('block-files'),
  86. div
  87. (
  88. setClass('row row-grid files-grid'),
  89. set('data-size', 300),
  90. $cardsBox
  91. ),
  92. pager(set::_className('flex justify-end items-center'), set(usePager($linkTpl)))
  93. );
  94. }
  95. else
  96. {
  97. $filesBody = div
  98. (
  99. setClass('table-empty-tip shadow ring rounded flex justify-center items-center'),
  100. setStyle(array('min-height' => '212px')),
  101. span(setClass('text-gray'), $lang->pager->noRecord)
  102. );
  103. }
  104. include 'lefttree.html.php';
  105. featureBar
  106. (
  107. li(searchToggle(set::module($type . 'DocFile'), set::open($browseType == 'bySearch')))
  108. );
  109. toolbar
  110. (
  111. div
  112. (
  113. setClass('flex'),
  114. $canExport ? btn
  115. (
  116. setClass('ghost export mr-2'),
  117. set::icon('export'),
  118. set::text($lang->export),
  119. set::url(createLink('doc', 'exportFiles', "objectID={$objectID}&objectType={$type}")),
  120. setData('size', 'sm'),
  121. setData('toggle', 'modal')
  122. ) : null,
  123. div
  124. (
  125. setClass('btn-group'),
  126. a
  127. (
  128. icon('bars'),
  129. setClass('btn switchBtn'),
  130. setClass($viewType == 'list' ? ' text-primary' : ''),
  131. set::href(inlink('showFiles', "type=$type&objectID=$objectID&viewType=list&browseType={$browseType}&param={$param}&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}&searchTitle={$searchTitle}")),
  132. set('data-app', $app->tab)
  133. ),
  134. a
  135. (
  136. icon('cards-view'),
  137. setClass('btn switchBtn'),
  138. setClass($viewType != 'list' ? ' text-primary' : ''),
  139. set::href(inlink('showFiles', "type=$type&objectID=$objectID&viewType=card&browseType={$browseType}&param={$param}&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}&searchTitle=$searchTitle")),
  140. set('data-app', $app->tab)
  141. )
  142. ),
  143. common::hasPriv('doc', 'createLib') ? btn
  144. (
  145. setClass('ml-4 btn secondary'),
  146. set::text($lang->doc->createLib),
  147. set::icon('plus'),
  148. set::url(createLink('doc', 'createLib', "type={$type}&objectID={$objectID}")),
  149. setData('toggle', 'modal'),
  150. setData('size', 'sm')
  151. ) : null
  152. )
  153. );
  154. div
  155. (
  156. div(setClass('mt-2'), $filesBody)
  157. );
  158. /* ====== Render page ====== */
  159. render();