| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- <?php
- namespace zin;
- $viewType = $this->cookie->aiPromptsViewType ? $this->cookie->aiPromptsViewType : 'card';
- featureBar(set::current($status), set::linkParams("module={$module}&status={key}"));
- toolbar
- (
- item(set(array
- (
- 'type' => 'btnGroup',
- 'items' => array(
- array(
- 'icon' => 'format-list-bulleted',
- 'class' => 'btn-icon switchButton' . ($viewType == 'list' ? ' text-primary' : ''),
- 'data-type' => 'list',
- 'hint' => $lang->ai->prompts->viewTypeList['list']
- ),
- array(
- 'icon' => 'cards-view',
- 'class' => 'btn-icon switchButton' . ($viewType == 'card' ? ' text-primary' : ''),
- 'data-type' => 'card',
- 'hint' => $lang->ai->prompts->viewTypeList['card']
- )
- )
- ))),
- $this->config->edition != 'open' && common::hasPriv('ai', 'createprompt') ? item(set(array(
- 'class' => 'primary',
- 'icon' => 'plus',
- 'text' => $lang->ai->prompts->create,
- 'url' => inlink('createprompt'),
- 'data-toggle' => 'modal',
- 'data-size' => 'sm'
- ))) : null
- );
- $cols = $config->ai->dtable->prompts;
- $prompts = initTableData($prompts, $cols, $this->ai);
- foreach($prompts as $prompt)
- {
- if($prompt->targetForm)
- {
- $targetFormPath = explode('.', $prompt->targetForm);
- if(count($targetFormPath) == 2) $prompt->targetFormLabel = $prompt->targetForm == 'empty.empty' ? $lang->ai->targetForm[$targetFormPath[0]][$targetFormPath[1]] : $lang->ai->targetForm[$targetFormPath[0]]['common'] . ' / ' . $lang->ai->targetForm[$targetFormPath[0]][$targetFormPath[1]];
- }
- }
- $userListMap = array();
- foreach($userList as $user)
- {
- $userListMap[$user->account] = $user;
- }
- unset($lang->ai->prompts->modules['']);
- $moduleList = $this->config->edition == 'open' ? array_intersect_key($lang->ai->prompts->modules, array_flip($promptModules)) : $lang->ai->prompts->modules;
- $moduleTree = array();
- $index = 1;
- $activeKey = 0;
- foreach($moduleList as $moduleKey => $moduleName)
- {
- $item = new stdClass();
- $item->id = $index;
- $item->parent = 0;
- $item->name = $moduleName;
- $item->url = inlink('prompts', "module=$moduleKey");
- if($moduleKey == $module) $activeKey = $item->id;
- $moduleTree[] = $item;
- $index++;
- }
- sidebar
- (
- moduleMenu
- (
- set::showDisplay(false),
- set::modules($moduleTree),
- set::activeKey($activeKey),
- set::closeLink(inlink('prompts'))
- )
- );
- $buildDropdown = function($prompt) use ($config)
- {
- $items = array();
- if(!empty($prompt->actions))
- {
- foreach($prompt->actions as $action)
- {
- $actionName = $action['name'];
- $disabled = $action['disabled'];
- if(!isset($config->ai->actionList[$actionName])) continue;
- $actionConfig = $config->ai->actionList[$actionName];
- $item = array(
- 'text' => $actionConfig['text'],
- 'disabled' => $disabled
- );
- if(isset($actionConfig['url']))
- {
- if(is_array($actionConfig['url']))
- {
- $params = str_replace('{id}', (string)$prompt->id, $actionConfig['url']['params']);
- $item['url'] = helper::createLink($actionConfig['url']['module'], $actionConfig['url']['method'], $params);
- }
- else
- {
- $item['url'] = str_replace(
- array('{id}', '{module}', '{targetForm}'),
- array((string)$prompt->id, $prompt->module, $prompt->targetForm),
- $actionConfig['url']
- );
- }
- }
- if(isset($actionConfig['className'])) $item['innerClass'] = $actionConfig['className'];
- if(isset($actionConfig['data-toggle'])) $item['data-toggle'] = $actionConfig['data-toggle'];
- if(isset($actionConfig['data-size'])) $item['data-size'] = $actionConfig['data-size'];
- if(isset($actionConfig['data-confirm'])) $item['data-confirm'] = $actionConfig['data-confirm'];
- if(isset($actionConfig['data-app'])) $item['data-app'] = $actionConfig['data-app'];
- $items[] = $item;
- }
- }
- if(empty($items)) return null;
- return dropdown(
- btn(
- setClass('ghost size-sm card-action-btn'),
- set::icon('ellipsis-v')
- ),
- set::items($items),
- set::placement('bottom-end'),
- set::caret(false)
- );
- };
- $promptCard = function($prompt) use ($lang, $buildDropdown, $userListMap)
- {
- $creator = isset($userListMap[$prompt->createdBy]) ? $userListMap[$prompt->createdBy] : null;
- $creatorName = $creator ? $creator->realname : $prompt->createdBy;
- $draftTag = $prompt->status === 'draft'
- ? span(
- setClass('draft-tag'),
- $lang->ai->prompts->statuses['draft']
- )
- : null;
- return div(
- setClass('prompt-card'),
- a(
- set::href(inlink('promptview', "id={$prompt->id}")),
- h3(
- setClass('card-title'),
- set::title($prompt->name),
- span($prompt->name),
- $draftTag
- ),
- div(
- setClass('card-description'),
- set::title($prompt->desc),
- $prompt->desc
- ),
- div(
- setClass('card-meta'),
- div(
- setClass('creator'),
- avatar(
- set::size('sm'),
- set::text($creatorName),
- $creator && !empty($creator->avatar) ? set::src($creator->avatar) : null
- ),
- span($creatorName)
- ),
- span(
- setClass('created-date'),
- sprintf($lang->ai->prompts->createdDate . ':%s', substr($prompt->createdDate, 0, 10))
- )
- )
- ),
- $buildDropdown($prompt)
- );
- };
- function renderCardView($promptCard, $prompts)
- {
- return div(
- setClass('page-prompts'),
- div(
- setClass('prompts-container'),
- array_map($promptCard, $prompts)
- ),
- div(
- setClass('pager-container'),
- pager(set(usePager()))
- )
- );
- }
- function renderListView($cols, $prompts, $users, $module, $status, $orderBy, $pager, $lang)
- {
- return dtable
- (
- set::cols($cols),
- set::data($prompts),
- set::userMap($users),
- set::orderBy($orderBy),
- set::sortLink(inlink('prompts', "module={$module}&status={$status}&orderBy={name}_{sortType}&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}")),
- set::footPager(usePager()),
- set::emptyTip($lang->ai->prompts->emptyList)
- );
- }
- if($viewType == 'list')
- {
- renderListView($cols, $prompts, $users, $module, $status, $orderBy, $pager, $lang);
- }
- else
- {
- renderCardView($promptCard, $prompts);
- }
|