promptview.html.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace zin;
  3. detailHeader
  4. (
  5. to::prefix(backBtn
  6. (
  7. set::icon('back'),
  8. setClass('primary-outline size-md'),
  9. set::url(inlink('prompts')),
  10. $lang->goback
  11. )),
  12. to::title
  13. (
  14. entityLabel
  15. (
  16. set::entityID($prompt->id),
  17. set::level(1),
  18. set::text($prompt->name)
  19. )
  20. ),
  21. to::suffix
  22. (
  23. $config->edition != 'open' && common::hasPriv('ai', 'createprompt') ? btn(setClass('primary'), set::icon('plus'), set::url(createLink('ai', 'createprompt')), setData('toggle', 'modal'), setData('size', 'sm'), $lang->ai->prompts->create) : null
  24. )
  25. );
  26. $selectTargetForm = '';
  27. if(!empty($prompt->targetForm))
  28. {
  29. $targetForm = explode('.', $prompt->targetForm);
  30. $selectTargetForm = $lang->ai->targetForm[$targetForm[0]][$targetForm[1]];
  31. }
  32. $fnBuildPublishInfo = function() use ($actions, $prompt, $users, $lang)
  33. {
  34. $lastPublishAction = null;
  35. foreach(array_reverse($actions) as $action)
  36. {
  37. if(in_array($action->action, array('published', 'unpublished')))
  38. {
  39. $lastPublishAction = $action;
  40. break;
  41. }
  42. }
  43. $items = array();
  44. if($prompt->status == 'active')
  45. {
  46. $items[] = item(set::name($lang->ai->prompts->publishedBy), zget($users, empty($lastPublishAction) ? $prompt->createdBy : $lastPublishAction->actor));
  47. }
  48. else
  49. {
  50. $items[] = item
  51. (
  52. set::name(empty($lastPublishAction) ? $lang->ai->prompts->publishedBy : $lang->ai->prompts->draftedBy),
  53. !empty($lastPublishAction) ? zget($users, $lastPublishAction->actor) : ''
  54. );
  55. }
  56. return $items;
  57. };
  58. if($prompt->status != 'draft' || !$this->ai->isExecutable($prompt)) unset($config->ai->actions->promptview['mainActions'][1]);
  59. $actionList = $this->loadModel('common')->buildOperateMenu($prompt);
  60. $fnBuildFieldConfig = function() use ($lang, $fieldConfig)
  61. {
  62. if(empty($fieldConfig)) return array();
  63. $fields = array();
  64. foreach($fieldConfig as $field)
  65. {
  66. $control = $lang->ai->miniPrograms->field->typeList[$field->type];
  67. $required = $lang->ai->requiredList[$field->required];
  68. $options = $field->options ?: '-';
  69. $fields[] = div(setClass('mb-1'), $field->name . ' (' . $control . ', ' . $required . ') : ' . $options);
  70. }
  71. return section(set::title($lang->ai->miniPrograms->field->fields), $fields);
  72. };
  73. detailBody
  74. (
  75. sectionList
  76. (
  77. section(set::title($lang->ai->prompts->role), set::content($prompt->role)),
  78. section(set::title($lang->ai->prompts->characterization), set::content($prompt->characterization)),
  79. section
  80. (
  81. set::title($lang->ai->prompts->object),
  82. set::content($prompt->module ? $lang->ai->dataSource[$prompt->module]['common'] : '')
  83. ),
  84. section(set::title($lang->ai->prompts->field), set::content($dataPreview)),
  85. $fnBuildFieldConfig(),
  86. section(set::title($lang->ai->prompts->setPurpose), set::content($prompt->purpose)),
  87. section(set::title($lang->ai->prompts->elaboration), set::content($prompt->elaboration)),
  88. section(set::title($lang->ai->prompts->selectTargetForm), set::content($selectTargetForm))
  89. ),
  90. history
  91. (
  92. setClass('canvas shadow-none mt-2'),
  93. setStyle(array('--tw-ring-color' => '#fff')),
  94. set::objectType('prompt'),
  95. set::objectID($prompt->id)
  96. ),
  97. $config->edition != 'open' ? floatToolbar
  98. (
  99. set::object($prompt),
  100. to::prefix(backBtn(set::icon('back'), set::url(inlink('prompts')), $lang->goback)),
  101. set::main($actionList['mainActions']),
  102. set::suffix($actionList['suffixActions'])
  103. ) : null,
  104. detailSide
  105. (
  106. setClass('ml-2'),
  107. tabs
  108. (
  109. set::collapse(true),
  110. tabPane
  111. (
  112. set::key('promptBasicInfo'),
  113. set::title($lang->ai->prompts->basicInfo),
  114. set::active(true),
  115. tableData(item(set::name($lang->prompt->module), $prompt->module ? $lang->ai->dataSource[$prompt->module]['common'] : ''), item(set::name($lang->prompt->desc), div(setClass('w-64 text-clip'), set::title($prompt->desc), $prompt->desc)), item(set::name($lang->prompt->status), $lang->ai->prompts->statuses[$prompt->status]), item(set::name($lang->prompt->model), zui::aiModelName($prompt->model)))
  116. ),
  117. tabPane
  118. (
  119. set::key('promptEditInfo'),
  120. set::title($lang->ai->prompts->editInfo),
  121. tableData(item(set::name($lang->prompt->createdBy), zget($users, $prompt->createdBy) . $lang->at . $prompt->createdDate), $fnBuildPublishInfo(), item(set::name($lang->prompt->editedBy), $prompt->editedBy ? zget($users, $prompt->editedBy) . $lang->at . $prompt->editedDate : ''))
  122. )
  123. )
  124. )
  125. );