| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- <?php
- namespace zin;
- jsVar('regenerateLang', $lang->aiapp->regenerate);
- jsVar('emptyNameWarning', $lang->aiapp->emptyNameWarning);
- jsVar('clearContextLang', $lang->aiapp->clearContext);
- jsVar('newChatTip', $lang->aiapp->newChatTip);
- jsVar('newVersionTip', $lang->aiapp->newVersionTip);
- jsVar('prompt', $miniProgram->prompt);
- jsVar('knowledgeLibs', $miniProgram->knowledgeLib);
- jsVar('postLink', createLink('aiapp', 'miniProgramChat', "id={$miniProgram->id}"));
- jsVar('messages', $messages);
- jsVar('isAppDisabled', $miniProgram->published == '0');
- jsVar('pathname', $miniProgram->name);
- $app->loadLang('ai');
- $isDeleted = $miniProgram->deleted === '1';
- $formGroups = array();
- if(count($fields) !== 0)
- {
- foreach($fields as $field)
- {
- if($field->type === 'textarea')
- {
- $control = textarea(
- set::rows(1),
- set::name("field-{$field->id}"),
- set::placeholder($field->placeholder),
- set::disabled($isDeleted),
- set::className('form-field'),
- setData('name', $field->name),
- setData('fid', $field->id)
- );
- }
- elseif($field->type === 'radio')
- {
- $options = explode(',', $field->options);
- $control = picker(
- set::name("field-{$field->id}"),
- set::items(array_combine($options, $options)),
- set::disabled($isDeleted),
- setData('name', $field->name),
- setData('fid', $field->id)
- );
- }
- elseif($field->type === 'checkbox')
- {
- $options = explode(',', $field->options);
- $control = picker(
- set::name("field-{$field->id}"),
- set::items(array_combine($options, $options)),
- set::multiple(true),
- set::disabled($isDeleted),
- setData('name', $field->name),
- setData('fid', $field->id)
- );
- }
- else
- {
- $control = input(
- set::name("field-{$field->id}"),
- set::placeholder($field->placeholder),
- set::disabled($isDeleted),
- set::className('form-field'),
- setData('name', $field->name),
- setData('fid', $field->id)
- );
- }
- $formGroups[] = formGroup(
- set::label($field->name),
- set::required($field->required === '1'),
- setData('name', $field->name),
- $control
- );
- }
- }
- jsVar('fields', $fields);
- list($iconName, $iconTheme) = explode('-', $miniProgram->icon);
- $star = in_array($miniProgram->id, $collectedIDs) ? 'star' : 'star-empty';
- $delete = $star === 'star' ? 'true' : 'false';
- btn(
- setClass('hidden'),
- setID('open-dialog'),
- setData('toggle', 'modal'),
- setData('target', '#disabled-dialog')
- );
- div(
- setClass('modal'),
- setData('backdrop', 'static'),
- setID('disabled-dialog'),
- div(
- setClass('modal-dialog shadow size-sm bd-none'),
- div(
- setClass('modal-content'),
- div(
- setClass('modal-body'),
- html('<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
- <circle cx="12.013" cy="12.0163" r="12" transform="rotate(0.0777774 12.013 12.0163)" fill="#FFA34D"/>
- <path d="M11.5573 14.7861C12.0809 14.7867 12.6054 14.2164 12.6063 13.6455L13.0103 6.08095C13.0112 5.51 13.0129 4.36812 11.442 4.36619C10.002 4.36442 9.8696 5.36341 9.86853 6.07709L10.2499 13.6426C10.5109 14.2138 11.0337 14.7854 11.5573 14.7861ZM11.5551 16.2134C10.7697 16.2124 9.98317 16.9252 9.98167 17.9243C9.98039 18.7807 10.6336 19.6379 11.55 19.6391C12.4664 19.6402 13.122 18.9273 13.1235 17.9282C13.125 16.929 12.3406 16.2144 11.5551 16.2134Z" fill="white"/>
- </svg>'),
- $lang->aiapp->disabledTip
- ),
- div(
- setClass('modal-footer'),
- btn(
- setClass('primary'),
- setData('dismiss', 'modal'),
- on::click('window.aiBrowseMiniProgram.backToSquare'),
- $lang->confirm
- )
- )
- )
- )
- );
- $starBtn = common::hasPriv('aiapp', 'collectMiniProgram')
- ? btn(
- setClass('ghost btn-star absolute'),
- set::size('md'),
- setData('url', createLink('aiapp', 'collectMiniProgram', "appID={$miniProgram->id}&delete={$delete}")),
- on::click('window.aiBrowseMiniProgram.handleStarBtnClick'),
- html(html::image("static/svg/{$star}.svg", "class='$star'")),
- $lang->aiapp->collect
- )
- : null;
- $generateBtn = common::hasPriv('aiapp', 'miniProgramChat')
- ? btn(
- setClass('primary block w-full generate-btn'),
- set::disabled($isDeleted),
- $lang->aiapp->generate,
- on::click('window.aiBrowseMiniProgram.startAIChat')
- )
- : null;
- div(
- setClass('mini-program fixed flex'),
- div(
- setClass('detail col shadow ring rounded h-full flex-none'),
- div(
- setClass('header relative flex flex-none'),
- div(
- setID('program-avatar'),
- setClass('program-avatar center flex-none'),
- setStyle(array('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('content flex-1 overflow-hidden'),
- div(
- setClass('title pb-2 ellipsis'),
- set::title($miniProgram->name),
- $miniProgram->name
- ),
- div(
- setClass('desc'),
- set::title($miniProgram->desc),
- $miniProgram->desc
- )
- ),
- $isDeleted
- ? label(
- setClass('danger'),
- $lang->aiapp->deleted
- )
- : $starBtn
- ),
- div(
- setClass('body col overflow-hidden', empty($formGroups) ? 'flex-none' : 'flex-1'),
- div(
- setClass('language-model flex flex-none justify-between items-center'),
- div(
- setClass('content flex gap-2.5'),
- span(
- setStyle(array('color' => 'var(--color-slate-700)')),
- $lang->aiapp->modelCurrent
- ),
- zui::aiModelName($miniProgram->model)
- ),
- empty($formGroups)
- ? null
- : btn(
- setClass('ghost'),
- set::size('md'),
- set::disabled($isDeleted),
- set::icon('trash'),
- $lang->aiapp->clear,
- on::click('window.aiBrowseMiniProgram.handleRestBtnClick')
- )
- ),
- empty($formGroups)
- ? null
- : div(
- setClass('form-container p-1 flex-1 overflow-y-auto'),
- setID('miniProgramForm'),
- form(
- set::grid(false),
- set::actions(array()),
- $formGroups
- )
- )
- ),
- div(
- setClass('footer flex-none'),
- $generateBtn
- )
- ),
- common::hasPriv('aiapp', 'miniProgramChat') ? div
- (
- setID('aiChatView'),
- setClass('shadow rounded flex-1 ring'),
- div
- (
- setClass('center h-full'),
- div
- (
- setClass('row items-center gap-2'),
- icon('lightbulb text-warning'),
- div(html(str_replace('{zaiConfigUrl}', createLink('zai', 'setting'), $lang->aiapp->langData->zaiConfigNotValid)))
- )
- ),
- on::init()->call('window.aiBrowseMiniProgram.initAIChatView', array(
- 'creatingChat' => array('title' => $miniProgram->name, 'chatType' => 'miniprogram'),
- 'noContexts' => true,
- 'hideHeader' => true,
- 'sendbox' => array('placeholder' => $lang->aiapp->continueasking),
- 'noMessagesTip' => array('html' => "<div class='row items-center gap-2'><i class='icon icon-lightbulb text-warning'></i><div>{$lang->aiapp->chatTip}</div></div>")
- ))
- ) : null
- );
- render();
|