config.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. {extend name="index_layout"/}
  2. {block name="main"}
  3. <style>
  4. .lang-tabs{margin:0 0 15px 0;border-bottom:1px solid #eee;display:flex;gap:8px;flex-wrap:wrap}
  5. .lang-tabs a,.lang-tabs .lang-pill{display:inline-block;padding:9px 14px;border:1px solid #e6e6e6;border-bottom:none;border-radius:6px 6px 0 0;background:#f8f8f8;color:#333;line-height:1.4}
  6. .lang-tabs a.active,.lang-tabs .lang-pill.active{background:#16baaa;color:#fff;border-color:#16baaa}
  7. .lang-tabs .tag-ok{color:#16b777;margin-left:4px}
  8. .lang-tabs .tag-empty{color:#ff5722;margin-left:4px}
  9. .lang-note{margin:-6px 0 15px 110px;color:#999;font-size:12px}
  10. </style>
  11. <div class="layui-card">
  12. <form class="layui-form" action="" method="post" data-field="config">
  13. {if $data.info.name == 'cms'}
  14. <input type="hidden" name="lang" value="{$currentConfigLang}">
  15. {/if}
  16. {if $data.tips && $data.tips.value}
  17. <div class="alert alert-info-light" style="margin-bottom:10px;">
  18. {if $data.tips.title}
  19. <b>{$data.tips.title}</b><br>
  20. {/if}
  21. {$data.tips.value|raw}
  22. </div>
  23. {/if}
  24. {if $data.info.name == 'cms' && count($configLangs)}
  25. <div class="layui-form-item">
  26. <label class="layui-form-label">编辑语言</label>
  27. <div class="layui-input-block lang-tabs">
  28. {volist name="configLangs" id="item"}
  29. <a href="{:url('addon/config',['name'=>$data.info.name,'lang'=>$item.mark])}" class="{if $currentConfigLang == $item.mark}active{/if}">{$item.name} ({$item.mark})</a>
  30. {/volist}
  31. </div>
  32. <div class="layui-input-block lang-note">
  33. {if $currentConfigLang == $defaultConfigLang}
  34. 当前为默认语言:保存到 CMS 主配置。
  35. {else /}
  36. 当前为非默认语言:仅保存站点信息翻译,不覆盖默认配置;未填写的项前台将回退到默认语言。
  37. {/if}
  38. </div>
  39. </div>
  40. {/if}
  41. <div class="layui-tabs layui-tabs-panel">
  42. {if count($groupList)>1}
  43. <ul class="layui-tabs-header">
  44. {foreach name="groupList" id="tab"}
  45. <li>{$tab}</li>
  46. {/foreach}
  47. </ul>
  48. {/if}
  49. <div class="layui-tabs-body">
  50. {foreach name="groupList" id="group" key="groupName"}
  51. <div {if count($groupList)>1}class="layui-tabs-item"{/if}>
  52. {foreach name="data['config']" item="form" key="o_key"}
  53. {if ((!isset($form['group']) || $form['group']=='') && $groupName=='other') || (isset($form['group']) && $form['group']==$group)}
  54. {php}$isCmsLangField = in_array($form['name'], ['site_name','site_title','site_keyword','site_description','site_logo_light','site_logo_dark']);{/php}
  55. {if !($data.info.name == 'cms' && $currentConfigLang != $defaultConfigLang && !$isCmsLangField)}
  56. <div data-favisible="{$form.visible|default=''}" class="{if $form.visible??''}layui-hide{/if}">
  57. <div class="layui-form-item">
  58. <label class="layui-form-label">{$form.title}</label>
  59. {switch name="form.type"}
  60. {case value="text"}
  61. <div class="layui-input-block">
  62. <input {$form.extend|raw} type="text" name="row[{$form.name}]" lay-verify="{$form.rule ?? ''}" placeholder="请输入{$form.title}" autocomplete="off" class="layui-input" value="{$form.value}">
  63. </div>
  64. {/case}
  65. {case value="number"}
  66. <div class="layui-input-block">
  67. <input {$form.extend|raw} type="number" name="row[{$form.name}]" lay-verify="{$form.rule ?? ''}" placeholder="请输入{$form.title}" autocomplete="off" lay-affix="number" class="layui-input" value="{$form.value}">
  68. </div>
  69. {/case}
  70. {case value="password"}
  71. <div class="layui-input-block">
  72. <input {$form.extend|raw} type="password" name="row[{$form.name}]" lay-verify="{$form.rule ?? ''}" placeholder="请输入{$form.title}" autocomplete="off" class="layui-input" value="{$form.value}">
  73. </div>
  74. {/case}
  75. {case value="array"}
  76. <dl {$form.extend|raw} class="layui-input-block fieldlist" data-name="row[{$form.name}]" data-id="{$form.name}">
  77. <dd>
  78. <ins>键名</ins>
  79. <ins>键值</ins>
  80. </dd>
  81. <dd><button type="button" class="layui-btn btn-append">追加</button></dd>
  82. <textarea name="row[{$form.name}]" class="layui-textarea layui-hide">{$form.value|json_encode}</textarea>
  83. </dl>
  84. {/case}
  85. {case value="checkbox"}
  86. <div class="layui-input-block">
  87. {foreach name="form.options" item="opt" key="opt_k"}
  88. <input type="checkbox" name="row[{$form.name}][]" lay-skin="primary" title="{$opt}" value="{$opt_k}" {in name="opt_k" value="$form.value|default=''"} checked{/in}>
  89. {/foreach}
  90. </div>
  91. {/case}
  92. {case value="radio"}
  93. <div class="layui-input-block">
  94. {foreach name="form.options" item="opt" key="opt_k"}
  95. <input type="radio" name="row[{$form.name}]" value="{$opt_k}" title="{$opt}" {eq name="form.value" value="$opt_k"} checked{/eq}>
  96. {/foreach}
  97. </div>
  98. {/case}
  99. {case value="select"}
  100. <div class="layui-input-block">
  101. <select name="row[{$form.name}]">
  102. <option value=""></option>
  103. {foreach name="form.options" item="opt" key="opt_k"}
  104. <option value="{$opt_k}" {eq name="form.value" value="$opt_k"}selected{/eq}>{$opt}</option>
  105. {/foreach}
  106. </select>
  107. </div>
  108. {/case}
  109. {case value="textarea"}
  110. <div class="layui-input-block">
  111. <textarea {$form.extend|raw} lay-verify="{$form.rule ?? ''}" placeholder="请输入{$form.title}" class="layui-textarea" name="row[{$form.name}]">{$form.value}</textarea>
  112. </div>
  113. {/case}
  114. {case value="image" break="0"}{/case}
  115. {case value="images"}
  116. <div class="layui-input-block">
  117. <div class="layui-col-xs6">
  118. <input type="text" name="row[{$form.name}]" id="c-{$form.name}" value="{$form.value|default=''}" class="layui-input">
  119. </div>
  120. <button type="button" class="layui-btn faupload" id="faupload-{$form.name}" data-multiple="{$form.type=='image'?'false':'true'}" data-input-id="c-{$form.name}" data-preview-id="p-{$form.name}" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp"><i class="iconfont icon-upload-line"></i> 上传</button><button type="button" class="layui-btn fachoose" data-multiple="{$form.type=='image'?'false':'true'}" data-input-id="c-{$form.name}" data-mimetype="image/*" id="fachoose-c-{$form.name}"><i class="iconfont icon-list-unordered"></i> 选择</button>
  121. <ul class="layui-row list-inline plupload-preview" id="p-{$form.name}"></ul>
  122. </div>
  123. {/case}
  124. {case value="file" break="0"}{/case}
  125. {case value="files"}
  126. <div class="layui-input-block">
  127. <div class="layui-col-xs6">
  128. <input type="text" name="row[{$form.name}]" id="c-{$form.name}" value="{$form.value|default=''}" class="layui-input">
  129. </div>
  130. <button type="button" class="layui-btn faupload" id="faupload-{$form.name}" data-multiple="{$form.type=='file'?'false':'true'}" data-input-id="c-{$form.name}" data-preview-id="p-{$form.name}" data-type="file"><i class="iconfont icon-upload-line"></i> 上传</button><button type="button" class="layui-btn fachoose" data-multiple="{$form.type=='file'?'false':'true'}" data-input-id="c-{$form.name}" id="fachoose-c-{$form.name}"><i class="iconfont icon-list-unordered"></i> 选择</button>
  131. </div>
  132. {/case}
  133. {case value="editor"}
  134. <div class="layui-input-block">
  135. <textarea {$form.extend|raw} name="row[{$form.name}]" id="editor-{$form.name}" class="layui-textarea editor" rows="5">{$form.value}</textarea>
  136. </div>
  137. {/case}
  138. {/switch}
  139. {if isset($form.tip) && $form.tip}<div class="layui-form-mid no-float layui-word-aux">{$form.tip|raw}</div>{/if}
  140. </div>
  141. </div>
  142. {/if}
  143. {/if}
  144. {/foreach}
  145. </div>
  146. {/foreach}
  147. </div>
  148. </div>
  149. <div class="layui-form-item layer-footer pb-4">
  150. <div class="layui-input-block ps-3">
  151. <button class="layui-btn disabled" lay-submit data-refresh="false">{if $data.info.name == 'cms' && $currentConfigLang != $defaultConfigLang}保存当前语言翻译{else /}立即提交{/if}</button>
  152. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  153. </div>
  154. </div>
  155. </form>
  156. </div>
  157. {/block}