roletemplates.html.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace zin;
  3. function buildTemplateModal($lang) {
  4. return div(
  5. setClass('modal fade'),
  6. setData('backdrop', 'static'),
  7. setID('roleTemplateModal'),
  8. div(
  9. setClass('modal-dialog'),
  10. div(
  11. setClass('modal-content'),
  12. div(
  13. setClass('modal-header'),
  14. div(
  15. setClass('modal-title flex items-center gap-1'),
  16. span(setID('modalTitle'), $lang->ai->prompts->addRoleTemplate),
  17. small(
  18. setClass('text-gray hidden'),
  19. setID('modalSubtitle'),
  20. $lang->ai->prompts->editRoleTemplateTip
  21. )
  22. )
  23. ),
  24. div(
  25. setClass('modal-actions'),
  26. button(
  27. setClass('btn square ghost'),
  28. setData('dismiss', 'modal'),
  29. span(setClass('close'))
  30. )
  31. ),
  32. div(
  33. setClass('modal-body'),
  34. form(
  35. setID('roleTemplateForm'),
  36. setClass('not-watch'),
  37. set::actions(array()),
  38. formGroup(
  39. set::label($lang->ai->prompts->role),
  40. set::width('1/1'),
  41. set::required(true),
  42. input(
  43. set::type('text'),
  44. set::name('role'),
  45. set::id('role'),
  46. setClass('form-control'),
  47. set::placeholder($lang->ai->prompts->rolePlaceholder)
  48. )
  49. ),
  50. formGroup(
  51. set::label($lang->ai->prompts->characterization),
  52. set::width('1/1'),
  53. set::required(true),
  54. textarea(
  55. set::name('characterization'),
  56. set::id('characterization'),
  57. setClass('form-control'),
  58. set::rows(4),
  59. set::placeholder($lang->ai->prompts->charPlaceholder)
  60. )
  61. ),
  62. input(
  63. set::type('hidden'),
  64. set::name('id')
  65. )
  66. )
  67. ),
  68. div(
  69. setClass('modal-footer flex justify-end'),
  70. button(
  71. setID('saveTemplate'),
  72. setClass('btn primary'),
  73. $lang->save
  74. )
  75. )
  76. )
  77. )
  78. );
  79. }
  80. function buildTemplateList($roleTemplates, $lang) {
  81. return div(
  82. set::id('roleList'),
  83. setClass('flex col gap-2'),
  84. ...array_map(function($role) use ($lang) {
  85. return div(
  86. setClass('role-template'),
  87. setClass('border border-gray-300 rounded p-3 w-full'),
  88. div(
  89. setClass('flex justify-between items-center gap-4'),
  90. p(
  91. setClass('text-ellipsis'),
  92. set::title($role->role),
  93. $role->role
  94. ),
  95. div(
  96. setClass('flex gap-1'),
  97. button(
  98. setClass('btn ghost btn-apply'),
  99. setData('role', $role->role),
  100. setData('characterization', $role->characterization),
  101. span(setClass('text-primary'), $lang->ai->apply)
  102. ),
  103. hasPriv('ai', 'roleTemplates') ? array(
  104. button(
  105. setClass('btn ghost square btn-edit'),
  106. setData('id', $role->id),
  107. setData('role', $role->role),
  108. setData('characterization', $role->characterization),
  109. icon(setClass('icon icon-edit text-primary'))
  110. ),
  111. button(
  112. setClass('btn ghost square btn-delete'),
  113. setData('id', $role->id),
  114. icon(setClass('icon icon-trash text-primary'))
  115. )
  116. ) : null
  117. )
  118. ),
  119. p(
  120. setClass('text-gray-600 text-ellipsis py-1'),
  121. set::title($role->characterization),
  122. $role->characterization
  123. )
  124. );
  125. }, $roleTemplates)
  126. );
  127. }
  128. function buildTemplatePanel($lang, $roleTemplates = []) {
  129. return div(
  130. set::id('roleTemplate'),
  131. setClass('hidden'),
  132. div(
  133. setClass('flex gap-2 items-center w-full justify-between'),
  134. h4(
  135. setClass('flex gap-1 items-center'),
  136. span(
  137. setClass('text-md'),
  138. $lang->ai->prompts->roleTemplate
  139. ),
  140. icon(
  141. setClass('icon icon-help'),
  142. setData('toggle', 'tooltip'),
  143. setData('placement', 'top'),
  144. setData('title', $lang->ai->prompts->roleTemplateTip)
  145. )
  146. ),
  147. hasPriv('ai', 'roleTemplates') ? button(
  148. set::id('btnAddTemplate'),
  149. setClass('btn square ghost'),
  150. icon(setClass('icon icon-plus text-primary'))
  151. ) : null
  152. ),
  153. div(
  154. set::id('roleListContainer'),
  155. buildTemplateList($roleTemplates ?? [], $lang)
  156. )
  157. );
  158. }