formPcTrait.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. namespace App\Admin\Controllers\Traits\WxSettingTraits;
  3. use App\Admin\Renderable\TagRender;
  4. use App\Models\Posts\WxTag;
  5. use App\Wen\Utils\GatewayUtils;
  6. use App\Wen\Utils\Settings;
  7. use App\Wen\Utils\SiteUtils;
  8. use Dcat\Admin\Layout\Content;
  9. use Dcat\Admin\Widgets\Form;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Cache;
  12. trait formPcTrait{
  13. public function index_pc(Content $content)
  14. {
  15. return $content->title('PC配置')
  16. // ->body($this->buildPreviewButton())
  17. // ->body($this->newline())
  18. ->body(
  19. <<<HTML
  20. <div class="card">{$this->form_pc()->render()}</div>
  21. HTML
  22. );
  23. }
  24. protected function form_pc(){
  25. $form = new Form();
  26. $form->confirm('您确定要提交表单吗?', 'content');
  27. $form->disableResetButton();
  28. $form->tab('基础', function (Form $form) {
  29. $form->html(function () {
  30. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">tips:301跳转会附带一个url参数from,其值为真实的请求路径,而且301跳转后,浏览器会存在缓存</div>';
  31. }, '');
  32. $form->radio('pc_mdoe', 'PC端处理')->options([
  33. 0 => '不处理',
  34. 1 => '301跳转',
  35. 2 => 'html页面',
  36. ])->default(Settings::get('pc_mdoe', 0));
  37. $form->listbox('pc_mdoe_page_range', '处理页面范围')->options([1=>'/', 2=>'/hot', 3=>'/tag/id', 4=>'/design/id', 5=>'/contact',
  38. 6=>'/circles/id', 7=>'/circle/id', 8=>'/clause/id', 9=>'/login',
  39. 10=>'/search/id/keyword', 11 => '/single/id', 12 => '/tool/id', 13=>'/404'])->customFormat(function ($value){
  40. return Settings::get('pc_mdoe_page_range', [1,2,3,4,5,6,7,8,9,10,11,12,13]);
  41. })->help('右边代表选中');
  42. $form->url('pc_mdoe_301_url', '301跳转地址')->placeholder('https://www.minisns.cn')->default(Settings::get('pc_mdoe_301_url', ''));
  43. $form->htmlEditor('pc_mdoe_html_code', 'html页面代码')->default(Settings::get('pc_mdoe_html_code', ''));
  44. });
  45. $form->tab('外观', function (Form $form) {
  46. $form->color('--color-primary', '--color-primary')->default(Settings::get('--color-primary', '#fc3a72'));
  47. $form->color('--color-secondary', '--color-secondary')->default(Settings::get('--color-secondary', '#2d3d8b'));
  48. $form->color('--primary-border-color', '--primary-border-color')->default(Settings::get('--primary-border-color', '#9b9b9b'));
  49. $form->color('--secondary-border-color', '--secondary-border-color')->default(Settings::get('--secondary-border-color', '#f0f8ff'));
  50. $form->color('--color-success', '--color-success')->default(Settings::get('--color-success', '#09815C'));
  51. $form->color('--color-danger', '--color-danger')->default(Settings::get('--color-danger', '#e3363e'));
  52. $form->color('--color-warning', '--color-warning')->default(Settings::get('--color-warning', '#e38836'));
  53. $form->color('--color-info', '--color-info')->default(Settings::get('--color-info', '#4da7d4'));
  54. $form->color('--color-light', '--color-light')->default(Settings::get('--color-light', '#f8f9f9'));
  55. $form->color('--color-grey', '--color-grey')->default(Settings::get('--color-grey', '#f7f8f9'));
  56. $form->color('--color-dark', '--color-dark')->default(Settings::get('--color-dark', '#000c2d'));
  57. $form->color('--color-light-dark', '--color-light-dark')->default(Settings::get('--color-light-dark', '#333333'));
  58. $form->color('--color-muted', '--color-muted')->default(Settings::get('--color-muted', '#687385'));
  59. $form->color('--color-white', '--color-white')->default(Settings::get('--color-white', '#FFFFFF'));
  60. $form->color('--mutted-border-color', '--mutted-border-color')->default(Settings::get('--mutted-border-color', '#eaecee'));
  61. });
  62. $form->tab('头部', function (Form $form) {
  63. $form->html(function () {
  64. return '<a href="'.admin_url('settings/menu').'" style="display: block; padding-top: 10px; color: cornflowerblue;">全局设置->菜单->父级菜单[id为1]</a>';
  65. }, '导航菜单');
  66. });
  67. $form->tab('页脚', function (Form $form) {
  68. $form->html(function () {
  69. return '<a href="'.admin_url('settings/menu').'" style="display: block; padding-top: 10px; color: cornflowerblue;">全局设置->菜单->父级菜单[id为2]</a>';
  70. }, '认证&合作');
  71. $form->html(function () {
  72. return '<a href="'.admin_url('settings/menu').'" style="display: block; padding-top: 10px; color: cornflowerblue;">全局设置->菜单->父级菜单[id为3]</a>';
  73. }, '赞助商&技术支持');
  74. });
  75. $form->tab('右侧栏', function (Form $form) {
  76. });
  77. $form->tab('首页', function (Form $form) {
  78. $form->text('pc_index_effect_character', '动效字')->help('就是首页那一行动效字,用|号隔开')->default(Settings::get('pc_index_effect_character', '我想真正的幸福只有一种,|就是自己拥有爱的能力,|珍重爱的人或它。|既不攀比,也很努力,|一觉醒来,面对暂新的生活与爱的ta。'));
  79. $form->listbox('pc_index_qrcode_list', '二维码展示')->options([
  80. 'app' => 'App',
  81. 'mp' => '公众号',
  82. 'mini' => '小程序',
  83. 'douyin' => '抖音'
  84. ])->customFormat(function ($value){
  85. return Settings::get('pc_index_qrcode_list', ['app', 'mini']);
  86. })->help('右边代表选中');
  87. $form->multipleSelectTable('app_hot_tags', '热门话题')
  88. ->title('话题库')
  89. ->max(10)
  90. ->from(TagRender::make())
  91. ->model(WxTag::class, 'id', 'tags_name', 'selectTable:formPcTrait:app_hot_tags')
  92. ->help('<a href="'.admin_url('tags').'" target="_blank">话题列表页</a>:如果为空,则根据使用次数排序。<a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  93. ->default(Settings::get('app_hot_tags', ''));
  94. $form->image('pc_index_right_banner', 'banner图')->help('建议和默认图片大小。 <a href="https://img.mini.minisns.cn/icons/pc_login_bg.png" download="pc_index_right_banner.jpg" target="_blank" style="color: steelblue">点击下载默认图</a>')->url('files/uploads')->autoUpload()->uniqueName()->default(Settings::get('pc_login_bg', 'https://img.mini.minisns.cn/icons/pc_login_bg.png'));
  95. $form->text('pc_index_contributors', '社区贡献者')->help('填写用户id,英文逗号隔开')->default(Settings::get('pc_index_contributors', '10000,10001,11580,11581,11583'));
  96. });
  97. $form->tab('登录', function (Form $form) {
  98. $form->image('pc_login_bg', '登录背景图')->help('建议和默认图片大小。 <a href="https://img.mini.minisns.cn/icons/pc_login_bg.png" download="app_login_bg.jpg" target="_blank" style="color: steelblue">点击下载默认图</a>')->url('files/uploads')->autoUpload()->default(Settings::get('pc_login_bg', 'https://img.mini.minisns.cn/icons/pc_login_bg.png'));
  99. });
  100. $form->tab('搜索', function (Form $form) {
  101. $form->text('pc_search_input_placeholder', 'placeholder')->help('搜索框提示语')->default(Settings::get('pc_search_input_placeholder', '在这里写下你想寻找的'));
  102. $form->text('pc_search_hot_keywords', '热门关键词')->help('英文逗号隔开,这里为空时,则调用搜索记录设置为热门的搜索')->default(Settings::get('pc_search_hot_keywords', '第一次养宠物,拉肚子,挑食'));
  103. });
  104. $form->action('settings/action/pc');
  105. return $form;
  106. }
  107. public function pc(Request $request){
  108. SiteUtils::forget_config_data();
  109. Settings::set('pc_mdoe', $request->input('pc_mdoe'));
  110. Settings::set('pc_mdoe_page_range', $request->input('pc_mdoe_page_range'));
  111. Settings::set('pc_mdoe_301_url', $request->input('pc_mdoe_301_url'));
  112. Settings::set('pc_mdoe_html_code', $request->input('pc_mdoe_html_code'));
  113. Settings::set('--color-primary', $request->input('--color-primary'));
  114. Settings::set('--color-secondary', $request->input('--color-secondary'));
  115. Settings::set('--primary-border-color', $request->input('--primary-border-color'));
  116. Settings::set('--secondary-border-color', $request->input('--secondary-border-color'));
  117. Settings::set('--color-success', $request->input('--color-success'));
  118. Settings::set('--color-danger', $request->input('--color-danger'));
  119. Settings::set('--color-warning', $request->input('--color-warning'));
  120. Settings::set('--color-info', $request->input('--color-info'));
  121. Settings::set('--color-light', $request->input('--color-light'));
  122. Settings::set('--color-grey', $request->input('--color-grey'));
  123. Settings::set('--color-dark', $request->input('--color-dark'));
  124. Settings::set('--color-muted', $request->input('--color-muted'));
  125. Settings::set('--color-white', $request->input('--color-white'));
  126. Settings::set('--mutted-border-color', $request->input('--mutted-border-color'));
  127. Settings::set('app_hot_tags', $request->input('app_hot_tags'), true);
  128. $admin_color = [
  129. '--color-primary' => $request->input('--color-primary'),
  130. '--color-secondary' => $request->input('--color-secondary'),
  131. '--primary-border-color' => $request->input('--primary-border-color'),
  132. '--secondary-border-color' => $request->input('--secondary-border-color'),
  133. '--color-success' => $request->input('--color-success'),
  134. '--color-danger' => $request->input('--color-danger'),
  135. '--color-warning' => $request->input('--color-warning'),
  136. '--color-info' => $request->input('--color-info'),
  137. '--color-light' => $request->input('--color-light'),
  138. '--color-grey' => $request->input('--color-grey'),
  139. '--color-dark' => $request->input('--color-dark'),
  140. '--color-muted' => $request->input('--color-muted'),
  141. '--color-white' => $request->input('--color-white'),
  142. '--mutted-border-color' => $request->input('--mutted-border-color'),
  143. ];
  144. Cache::forget('admin_color');
  145. Cache::put('admin_color', json_encode($admin_color));
  146. Settings::set('pc_index_qrcode_list', $request->input('pc_index_qrcode_list'), true);
  147. Settings::set('pc_index_effect_character', $request->input('pc_index_effect_character'), true);
  148. Settings::set('pc_index_contributors', $request->input('pc_index_contributors'), true);
  149. Settings::set('pc_index_right_banner', $request->input('pc_index_right_banner'), true);
  150. Settings::set('pc_search_input_placeholder', $request->input('pc_search_input_placeholder'), true);
  151. Settings::set('pc_search_hot_keywords', $request->input('pc_search_hot_keywords'), true);
  152. Settings::set('pc_login_bg', $request->input('pc_login_bg'), true);
  153. $__global_config_version__ = Settings::get('__global_config_version__', 1) + 1;
  154. Settings::set('__global_config_version__', $__global_config_version__);
  155. GatewayUtils::success('all', 13, [ 'version' => $__global_config_version__, 'file' => basename(__FILE__) ]);
  156. return $this->response()->success('成功!');
  157. }
  158. }