miniprogramview.html.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace zin;
  3. $fieldsTableProps = array('control' => 'dtable', 'data' => array(), 'cols' => array());
  4. $fieldsTableProps['cols'][] = array('name' => 'name', 'title' => $lang->ai->miniPrograms->field->name, 'type' => 'shortTitle', 'sortType' => false);
  5. $fieldsTableProps['cols'][] = array('name' => 'type', 'title' => $lang->ai->miniPrograms->field->type, 'type' => 'category', 'sortType' => false);
  6. $fieldsTableProps['cols'][] = array('name' => 'options', 'title' => $lang->ai->miniPrograms->optionName, 'type' => 'shortTitle', 'sortType' => false);
  7. $fieldsTableProps['cols'][] = array('name' => 'placeholder', 'title' => $lang->ai->miniPrograms->field->placeholder, 'flex' => 1);
  8. $fieldsTableProps['cols'][] = array('name' => 'required', 'title' => $lang->ai->miniPrograms->field->required, 'width' => 80);
  9. foreach ($fields as $field)
  10. {
  11. $fieldsTableProps['data'][] = array
  12. (
  13. 'name' => $field->name,
  14. 'type' => $lang->ai->miniPrograms->field->typeList[$field->type],
  15. 'options' => empty($field->options) ? '-' : $field->options,
  16. 'placeholder' => empty($field->placeholder) ? '-' : $field->placeholder,
  17. 'required' => $lang->ai->miniPrograms->field->requiredOptions[$field->required]
  18. );
  19. }
  20. $formatedPrompt = str_replace('&lt;', '<', $miniProgram->prompt);
  21. $formatedPrompt = str_replace('&gt;', '>', $formatedPrompt);
  22. $formatedPrompt = preg_replace('/<([^>]+)>/', '<strong><$1></strong>', $formatedPrompt);
  23. list($iconName, $iconTheme) = explode('-', $miniProgram->icon);
  24. $basicInfoProps = array('control' => 'datalist', 'items' => array());
  25. $basicInfoProps['items'][$lang->ai->miniPrograms->category] = $categoryList[$miniProgram->category];
  26. $basicInfoProps['items'][$lang->prompt->name] = $miniProgram->name;
  27. $basicInfoProps['items'][$lang->ai->miniPrograms->desc] = array('content' => wg(div(set::title($miniProgram->desc), $miniProgram->desc)));
  28. $basicInfoProps['items'][$lang->prompt->model] = array('content' => wg(zui::aiModelName($miniProgram->model)));
  29. $basicInfoProps['items'][$lang->prompt->status] = $lang->ai->miniPrograms->publishedOptions[$miniProgram->published];
  30. $basicInfoProps['items'][$lang->ai->miniPrograms->icon] = array
  31. (
  32. 'content' => wg(div(
  33. setClass('w-12 h-12 rounded-full border center'),
  34. setStyle(array('border' => "1px solid {$config->ai->miniPrograms->themeList[$iconTheme][1]}", 'background-color' => $config->ai->miniPrograms->themeList[$iconTheme][0])),
  35. html($config->ai->miniPrograms->iconList[$iconName]))
  36. )
  37. );
  38. /* 初始化主栏内容。Init sections in main column. */
  39. $sections = array();
  40. $sections[] = setting()
  41. ->title($lang->ai->miniPrograms->fieldConfiguration)
  42. ->control($fieldsTableProps);
  43. $sections[] = setting()
  44. ->title($lang->ai->miniPrograms->promptTemplate)
  45. ->control('html')
  46. ->content($formatedPrompt);
  47. /* 初始化侧边栏标签页。Init sidebar tabs. */
  48. $tabs = array();
  49. /* 基本信息。Legend basic items. */
  50. $tabs[] = setting()
  51. ->group('basic')
  52. ->title($lang->ai->prompts->basicInfo)
  53. ->control($basicInfoProps);
  54. /* 右上角工具栏。 The top right toolbar. */
  55. $isNotBuiltIn = $miniProgram->builtIn == '0';
  56. $isPublished = $miniProgram->published == '1';
  57. $toolbar = array();
  58. if($isNotBuiltIn && $isPublished && hasPriv('ai', 'exportMiniProgram'))
  59. {
  60. $toolbar[] = array('icon' => 'export', 'size' => 'md', 'type' => 'primary', 'text' => $lang->ai->export, 'className' => 'ajax-submit', 'download' => "{$miniProgram->name}.ztapp.zip", 'url' => createLink('ai', 'exportMiniProgram', "appID=$miniProgram->id"));
  61. }
  62. if(hasPriv('ai', 'createMiniProgram'))
  63. {
  64. $toolbar[] = array('icon' => 'plus', 'size' => 'md', 'type' => 'primary', 'text' => $lang->ai->miniPrograms->create, 'url' => createLink('ai', 'createMiniProgram'));
  65. }
  66. /* 底部操作栏。 The bottom actions bar. */
  67. $actions = array();
  68. if($miniProgram->deleted !== '1')
  69. {
  70. if($isPublished)
  71. {
  72. if(hasPriv('ai', 'unpublishMiniProgram')) $actions[] = array('icon' => 'ban-circle', 'text' => $lang->ai->prompts->action->unpublish, 'className' => 'ajax-submit', 'data-confirm' => array('message' => $lang->ai->miniPrograms->disableTip, 'icon' => 'icon-exclamation-sign icon-lg text-warning icon-2x opacity-100'), 'url' => createLink('ai', 'unpublishMiniProgram', "appID=$miniProgram->id"));
  73. }
  74. else
  75. {
  76. if($isNotBuiltIn && hasPriv('ai', 'editMiniProgram'))
  77. {
  78. $actions[] = array('icon' => 'edit', 'text' => $lang->ai->prompts->action->edit, 'url' => createLink('ai', 'editMiniProgram', "appID=$miniProgram->id"));
  79. }
  80. if($isNotBuiltIn && hasPriv('ai', 'testMiniProgram'))
  81. {
  82. $actions[] = array('icon' => 'menu-backend', 'text' => $lang->ai->prompts->action->test, 'data-toggle' => 'modal', 'data-size' => 'full', 'url' => createLink('ai', 'testMiniProgram', "appID=$miniProgram->id"));
  83. }
  84. if(hasPriv('ai', 'publishMiniProgram'))
  85. {
  86. $actions[] = array('icon' => 'publish', 'text' => $lang->ai->prompts->action->publish, 'className' => 'ajax-submit', 'data-confirm' => array('message' => $lang->ai->miniPrograms->publishTip, 'icon' => 'icon-exclamation-sign icon-lg text-warning icon-2x opacity-100'), 'url' => createLink('ai', 'publishMiniProgram', "appID=$miniProgram->id"));
  87. }
  88. if($isNotBuiltIn && hasPriv('ai', 'deleteMiniProgram'))
  89. {
  90. $actions[] = array('icon' => 'trash', 'text' => $lang->ai->prompts->action->delete, 'className' => 'ajax-submit', 'data-confirm' => array('message' => $lang->ai->miniPrograms->deleteTip, 'icon' => 'icon-exclamation-sign icon-lg text-warning icon-2x opacity-100'), 'url' => createLink('ai', 'deleteMiniProgram', "appID=$miniProgram->id&deleted=1"));
  91. }
  92. }
  93. }
  94. detail
  95. (
  96. set::objectType('miniProgram'),
  97. set::object($miniProgram),
  98. set::sections($sections),
  99. set::tabs($tabs),
  100. set::toolbar(array('items' => $toolbar, 'gap' => 2)),
  101. set::actions(array_values($actions)),
  102. set::backBtn(array('back' => 'ai-miniPrograms'))
  103. );