index.html.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. /**
  3. * The index view file of search 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 Gang Liu <liugang@easycorp.ltd>
  7. * @package search
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. jsVar('inputWords', $lang->search->inputWords);
  12. to::header();
  13. $items = array();
  14. foreach($results as $object)
  15. {
  16. $objectType = $object->objectType == 'case' ? 'testcase' : $object->objectType;
  17. if(($objectType == 'story' || $objectType == 'requirement' || $objectType == 'execution' || $objectType == 'issue') && !empty($object->extraType))
  18. {
  19. $objectType = $lang->search->objectTypeList[$object->extraType];
  20. }
  21. else
  22. {
  23. $objectType = $lang->searchObjects[$objectType];
  24. }
  25. $items[] = div
  26. (
  27. setClass('flex border-b h-20'),
  28. col
  29. (
  30. setClass('mr-4 pt-4 w-full'),
  31. div
  32. (
  33. setClass('flex flex-wrap'),
  34. a
  35. (
  36. setClass('text-md'),
  37. setStyle(array('line-height' => '22px')),
  38. set::href($object->url),
  39. !empty($object->dataApp) ? setData('app', $object->dataApp) : null,
  40. html($object->title)
  41. ),
  42. span
  43. (
  44. setClass('label rounded-full ml-2'),
  45. $object->objectID
  46. ),
  47. span
  48. (
  49. setClass('label rounded-full gray-pale ml-2'),
  50. $objectType
  51. )
  52. ),
  53. div
  54. (
  55. setClass('text-gray text-sm mt-2'),
  56. setStyle(array('line-height' => '18px')),
  57. html($object->summary)
  58. )
  59. ),
  60. div
  61. (
  62. setClass('flex items-center w-16'),
  63. a
  64. (
  65. setClass('btn primary-pale'),
  66. set(array('href' => $object->url, 'data-toggle' => 'modal', 'data-size' => 'lg')),
  67. $lang->search->preview
  68. )
  69. )
  70. );
  71. }
  72. form
  73. (
  74. setClass('w-1/2'),
  75. setStyle(array('margin' => '0 auto')),
  76. set::actions(false),
  77. set::ajax(array('beforeSubmit' => jsRaw('() => {searchWords($(event.target));return false;}'))),
  78. inputGroup
  79. (
  80. input
  81. (
  82. on::change('toggleClearWords'),
  83. setClass('shadow-none'),
  84. set::name('words'),
  85. set::value($words),
  86. set::placeholder($lang->search->inputWords)
  87. ),
  88. span
  89. (
  90. setClass('input-group-btn'),
  91. btn
  92. (
  93. on::click('clearWords'),
  94. setID('clearWords'),
  95. setClass('shadow-none' . (empty($words) ? ' hidden' : '')),
  96. icon('close')
  97. )
  98. ),
  99. picker
  100. (
  101. set::className('shadow-none border-l'),
  102. set::name('type[]'),
  103. set::value($type),
  104. set::menu(array('checkbox' => true)),
  105. set::items($typeList),
  106. set::multiple(true)
  107. ),
  108. span
  109. (
  110. setClass('input-group-btn border-l'),
  111. btn
  112. (
  113. setClass('text-primary shadow-none'),
  114. on::click("searchWords($(event.target).closest('form'))"),
  115. icon('search')
  116. )
  117. )
  118. )
  119. );
  120. $pagerItems = array();
  121. $pagerItems[] = array('type' => 'info', 'text' => '{page}/{pageTotal}');
  122. $pagerItems[] = array('type' => 'link', 'hint' => $lang->pager->previousPage, 'page' => 'prev', 'icon' => 'icon-angle-left');
  123. $pagerItems[] = array('type' => 'link', 'hint' => $lang->pager->nextPage, 'page' => 'next', 'icon' => 'icon-angle-right');
  124. panel
  125. (
  126. setID('searchResult'),
  127. setClass('shadow-none mt-4'),
  128. set::title($lang->search->result . ' :'),
  129. set::titleClass('text-md font-normal'),
  130. set::titleProps(array('style' => array('line-height' => '22px'))),
  131. set::headingClass('justify-start px-4 pt-4 pb-0'),
  132. set::bodyClass('px-6 pt-0 pb-2'),
  133. to::heading
  134. (
  135. div
  136. (
  137. setClass('text-md'),
  138. setStyle(array('line-height' => '22px')),
  139. html(sprintf($lang->search->resultCount, $pager->recTotal))
  140. )
  141. ),
  142. $items,
  143. $items ? div
  144. (
  145. setKey('footer'),
  146. setClass('flex justify-between'),
  147. span
  148. (
  149. setClass('mt-2'),
  150. sprintf($lang->search->executeInfo, $pager->recTotal, $consumed)
  151. ),
  152. pager
  153. (
  154. set::type('short'),
  155. set::items($pagerItems),
  156. set::_className('justify-end mt-2')
  157. )
  158. ) : null
  159. );
  160. render();