promptsettargetform.html.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace zin;
  3. include './promptnav.html.php';
  4. jsVar('promptID', $promptID);
  5. jsVar('promptModule', $prompt->module);
  6. jsVar('lang', array(
  7. 'saveFailed' => $lang->ai->saveFail
  8. ));
  9. /* 构建选项列表 */
  10. function buildOptions($lang, $prompt, $config)
  11. {
  12. $optionGroups = array();
  13. foreach ($config->ai->targetForm as $name => $forms)
  14. {
  15. $options = array();
  16. foreach (array_keys($forms) as $form)
  17. {
  18. if(isset($forms[$form]->for) && strpos(',' . $forms[$form]->for . ',', ',' . $prompt->module . ',') === false) continue;
  19. $value = "$name.$form";
  20. $isChecked = $value == $prompt->targetForm;
  21. $options[] = radio(
  22. set::primary(true),
  23. set::typeClass('radio'),
  24. set::name('targetForm'),
  25. set::value($value),
  26. set::checked($isChecked),
  27. set::text($lang->ai->targetForm[$name][$form])
  28. );
  29. }
  30. if(empty($options)) continue;
  31. $optionGroups[] = div(
  32. setClass('option-group'),
  33. h5(setClass('group-name'), span($lang->ai->targetForm[$name]['common'])),
  34. div(
  35. setClass('options'),
  36. ...$options
  37. )
  38. );
  39. }
  40. return $optionGroups;
  41. }
  42. /* 构建预览列表 */
  43. function buildPreviewList($lang, $prompt, $dataPreview)
  44. {
  45. return ul(
  46. setClass('preview-list'),
  47. li(h5($lang->ai->prompts->dataPreview), p
  48. (
  49. setClass('pre'),
  50. $dataPreview
  51. )),
  52. li(
  53. h5($lang->ai->prompts->rolePreview),
  54. p($prompt->role),
  55. p($prompt->characterization)
  56. ),
  57. li(
  58. h5($lang->ai->prompts->promptPreview),
  59. p($prompt->purpose),
  60. p($prompt->elaboration)
  61. )
  62. );
  63. }
  64. div(
  65. setClass('prompt-set-target'),
  66. formPanel(set::id('mainForm'), set::actions(
  67. array(
  68. array('text' => $lang->ai->nextStep, 'class' => 'btn primary', 'id' => 'submit', 'btnType' => 'button'),
  69. array('text' => $lang->ai->goTesting, 'class' => 'btn btn-secondary', 'id' => 'go-test-btn', 'btnType' => 'submit', 'name' => 'goTesting', 'value' => '1')
  70. )
  71. ), div(
  72. setClass('panel-container'),
  73. div(setClass('form-panel'), div(
  74. setClass('section-header'),
  75. h4(setClass('text-md'), $lang->ai->prompts->selectTargetForm),
  76. small(setClass('text-gray'), $lang->ai->prompts->selectTargetFormTip)
  77. ), div(
  78. setClass('section-content'),
  79. buildOptions($lang, $prompt, $config),
  80. div
  81. (
  82. setClass('pl-4 py-3'),
  83. radio
  84. (
  85. set::name('targetForm'),
  86. set::value('empty.empty'),
  87. set::checked(empty($prompt->targetForm) || $prompt->targetForm == 'empty.empty'),
  88. set::text($lang->ai->prompts->noRedirect)
  89. )
  90. )
  91. )),
  92. div(
  93. setClass('preview-panel'),
  94. div(
  95. setClass('section-header'),
  96. h4(setClass('text-md'), $lang->ai->prompts->inputPreview)
  97. ),
  98. div(
  99. setClass('section-content'),
  100. buildPreviewList($lang, $prompt, $dataPreview)
  101. )
  102. )
  103. ))
  104. );