square.html.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace zin;
  3. jsVar('category', $category);
  4. $navItems = array();
  5. $showTag = in_array($category, array('collection', 'discovery', 'latest'));
  6. if(count($categoryList) <= 9)
  7. {
  8. foreach($categoryList as $key => $value)
  9. {
  10. $isActive = $category === $key;
  11. $navItems[] = array(
  12. 'text' => $value,
  13. 'active' => $isActive,
  14. 'url' => createLink('aiapp', 'square', "category=$key"),
  15. 'badge' => $isActive ? array('text' => $pager->recTotal, 'class' => 'size-sm rounded-full white') : null,
  16. 'props' => array('data-id' => $key)
  17. );
  18. }
  19. }
  20. else
  21. {
  22. foreach(array_slice($categoryList, 0, 8) as $key => $value)
  23. {
  24. $isActive = $category === $key;
  25. $navItems[] = array(
  26. 'text' => $value,
  27. 'active' => $isActive,
  28. 'url' => createLink('aiapp', 'square', "category=$key"),
  29. 'badge' => $isActive ? array('text' => $pager->recTotal, 'class' => 'size-sm rounded-full white') : null,
  30. 'props' => array('data-id' => $key)
  31. );
  32. }
  33. $moreCategoryList = array_slice($categoryList, 8);
  34. $subItems = array();
  35. foreach($moreCategoryList as $key => $value)
  36. {
  37. $subItems[] = array(
  38. 'text' => $value,
  39. 'active' => $key === $category,
  40. 'url' => createLink('aiapp', 'square', "category=$key"),
  41. 'attrs' => array('data-id' => $key)
  42. );
  43. }
  44. $isActive = array_key_exists($category, $moreCategoryList);
  45. $navItems[] = array(
  46. 'text' => $isActive ? $moreCategoryList[$category] : $lang->aiapp->more,
  47. 'active' => $isActive,
  48. 'type' => 'dropdown',
  49. 'caret' => 'down',
  50. 'badge' => $isActive ? array('text' => $pager->recTotal, 'class' => 'size-sm rounded-full white') : null,
  51. 'props' => array('data-id' => $key),
  52. 'items' => $subItems,
  53. );
  54. }
  55. featureBar(set::items($navItems));
  56. toolbar(hasPriv('ai', 'miniPrograms') ? item(set(array(
  57. 'type' => 'primary',
  58. 'text' => $lang->aiapp->manageGeneralAgent,
  59. 'url' => createLink('ai', 'miniPrograms'),
  60. ))) : null);
  61. $miniProgramCard = function($miniProgram) use ($categoryList, $collectedIDs, $showTag)
  62. {
  63. global $config, $lang;
  64. list($iconName, $iconTheme) = explode('-', $miniProgram->icon);
  65. $star = in_array($miniProgram->id, $collectedIDs) ? 'star' : 'star-empty';
  66. $delete = $star === 'star' ? 'true' : 'false';
  67. $starBtn = common::hasPriv('aiapp', 'collectMiniProgram')
  68. ? btn(
  69. set::size('md'),
  70. setClass('ghost btn-star'),
  71. setData('url', createLink('aiapp', 'collectMiniProgram', "appID={$miniProgram->id}&delete={$delete}")),
  72. on::click('window.aiSquare.handleStarBtnClick'),
  73. html(html::image("static/svg/{$star}.svg", "class='$star'")),
  74. $lang->aiapp->collect
  75. )
  76. : null;
  77. return a(
  78. common::hasPriv('aiapp', 'view') ? set::href(createLink('aiapp', 'view', "id={$miniProgram->id}")) : null,
  79. setClass('miniprogram-card'),
  80. div(
  81. setClass('program-content'),
  82. div(
  83. setClass('program-text'),
  84. div(
  85. setClass('title'),
  86. set::title($miniProgram->name),
  87. $miniProgram->name
  88. ),
  89. div(
  90. setClass('desc'),
  91. set::title($miniProgram->desc),
  92. $miniProgram->desc
  93. )
  94. ),
  95. div(
  96. setClass('program-avatar'),
  97. btn(setClass('btn-avatar'), setStyle(array(
  98. 'width' => '46px',
  99. 'height' => '46px',
  100. 'border-radius' => '50%',
  101. 'display' => 'flex',
  102. 'justify-content' => 'center',
  103. 'align-items' => 'center',
  104. 'border' => "1px solid {$config->ai->miniPrograms->themeList[$iconTheme][1]}",
  105. 'background-color' => "{$config->ai->miniPrograms->themeList[$iconTheme][0]}"
  106. )), html($config->ai->miniPrograms->iconList[$iconName]))
  107. )
  108. ),
  109. div(
  110. setClass('program-actions'),
  111. div(
  112. setClass('badge'),
  113. setClass(array('invisible' => !$showTag)),
  114. set::title($categoryList[$miniProgram->category]),
  115. $categoryList[$miniProgram->category]
  116. ),
  117. $starBtn
  118. )
  119. );
  120. };
  121. if(empty($miniPrograms))
  122. {
  123. panel(
  124. div(
  125. setClass('dtable-empty-tip'),
  126. div(setClass('row gap-4 items-center'), span
  127. (
  128. setClass('text-gray'),
  129. $lang->noData
  130. ))
  131. )
  132. );
  133. }
  134. else
  135. {
  136. div(setClass('miniprogram-container'), array_map($miniProgramCard, $miniPrograms));
  137. }
  138. empty($miniPrograms) ? null : div(
  139. setClass('pager-container'),
  140. pager(set(usePager()))
  141. );
  142. render();