| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <?php
- namespace zin;
- jsVar('category', $category);
- $navItems = array();
- $showTag = in_array($category, array('collection', 'discovery', 'latest'));
- if(count($categoryList) <= 9)
- {
- foreach($categoryList as $key => $value)
- {
- $isActive = $category === $key;
- $navItems[] = array(
- 'text' => $value,
- 'active' => $isActive,
- 'url' => createLink('aiapp', 'square', "category=$key"),
- 'badge' => $isActive ? array('text' => $pager->recTotal, 'class' => 'size-sm rounded-full white') : null,
- 'props' => array('data-id' => $key)
- );
- }
- }
- else
- {
- foreach(array_slice($categoryList, 0, 8) as $key => $value)
- {
- $isActive = $category === $key;
- $navItems[] = array(
- 'text' => $value,
- 'active' => $isActive,
- 'url' => createLink('aiapp', 'square', "category=$key"),
- 'badge' => $isActive ? array('text' => $pager->recTotal, 'class' => 'size-sm rounded-full white') : null,
- 'props' => array('data-id' => $key)
- );
- }
- $moreCategoryList = array_slice($categoryList, 8);
- $subItems = array();
- foreach($moreCategoryList as $key => $value)
- {
- $subItems[] = array(
- 'text' => $value,
- 'active' => $key === $category,
- 'url' => createLink('aiapp', 'square', "category=$key"),
- 'attrs' => array('data-id' => $key)
- );
- }
- $isActive = array_key_exists($category, $moreCategoryList);
- $navItems[] = array(
- 'text' => $isActive ? $moreCategoryList[$category] : $lang->aiapp->more,
- 'active' => $isActive,
- 'type' => 'dropdown',
- 'caret' => 'down',
- 'badge' => $isActive ? array('text' => $pager->recTotal, 'class' => 'size-sm rounded-full white') : null,
- 'props' => array('data-id' => $key),
- 'items' => $subItems,
- );
- }
- featureBar(set::items($navItems));
- toolbar(hasPriv('ai', 'miniPrograms') ? item(set(array(
- 'type' => 'primary',
- 'text' => $lang->aiapp->manageGeneralAgent,
- 'url' => createLink('ai', 'miniPrograms'),
- ))) : null);
- $miniProgramCard = function($miniProgram) use ($categoryList, $collectedIDs, $showTag)
- {
- global $config, $lang;
- list($iconName, $iconTheme) = explode('-', $miniProgram->icon);
- $star = in_array($miniProgram->id, $collectedIDs) ? 'star' : 'star-empty';
- $delete = $star === 'star' ? 'true' : 'false';
- $starBtn = common::hasPriv('aiapp', 'collectMiniProgram')
- ? btn(
- set::size('md'),
- setClass('ghost btn-star'),
- setData('url', createLink('aiapp', 'collectMiniProgram', "appID={$miniProgram->id}&delete={$delete}")),
- on::click('window.aiSquare.handleStarBtnClick'),
- html(html::image("static/svg/{$star}.svg", "class='$star'")),
- $lang->aiapp->collect
- )
- : null;
- return a(
- common::hasPriv('aiapp', 'view') ? set::href(createLink('aiapp', 'view', "id={$miniProgram->id}")) : null,
- setClass('miniprogram-card'),
- div(
- setClass('program-content'),
- div(
- setClass('program-text'),
- div(
- setClass('title'),
- set::title($miniProgram->name),
- $miniProgram->name
- ),
- div(
- setClass('desc'),
- set::title($miniProgram->desc),
- $miniProgram->desc
- )
- ),
- div(
- setClass('program-avatar'),
- btn(setClass('btn-avatar'), setStyle(array(
- 'width' => '46px',
- 'height' => '46px',
- 'border-radius' => '50%',
- 'display' => 'flex',
- 'justify-content' => 'center',
- 'align-items' => 'center',
- 'border' => "1px solid {$config->ai->miniPrograms->themeList[$iconTheme][1]}",
- 'background-color' => "{$config->ai->miniPrograms->themeList[$iconTheme][0]}"
- )), html($config->ai->miniPrograms->iconList[$iconName]))
- )
- ),
- div(
- setClass('program-actions'),
- div(
- setClass('badge'),
- setClass(array('invisible' => !$showTag)),
- set::title($categoryList[$miniProgram->category]),
- $categoryList[$miniProgram->category]
- ),
- $starBtn
- )
- );
- };
- if(empty($miniPrograms))
- {
- panel(
- div(
- setClass('dtable-empty-tip'),
- div(setClass('row gap-4 items-center'), span
- (
- setClass('text-gray'),
- $lang->noData
- ))
- )
- );
- }
- else
- {
- div(setClass('miniprogram-container'), array_map($miniProgramCard, $miniPrograms));
- }
- empty($miniPrograms) ? null : div(
- setClass('pager-container'),
- pager(set(usePager()))
- );
- render();
|