formMiniTrait.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. namespace App\Admin\Controllers\Traits\WxSettingTraits;
  3. use App\Admin\Renderable\BannerRender;
  4. use App\Admin\Renderable\IconRender;
  5. use App\Admin\Renderable\SearchRender;
  6. use App\Admin\Renderable\ShopGoodsRender;
  7. use App\Admin\Renderable\TagRender;
  8. use App\Models\Posts\WxTag;
  9. use App\Models\Shop\WxShopClassify;
  10. use App\Models\Shop\WxShopGoods;
  11. use App\Models\WxIcon;
  12. use App\Models\WxSearch;
  13. use App\Wen\Utils\AdminUtils;
  14. use App\Wen\Utils\FieldUtils;
  15. use App\Wen\Utils\GatewayUtils;
  16. use App\Wen\Utils\Settings;
  17. use App\Models\WxSlideshow;
  18. use App\Wen\Utils\SiteUtils;
  19. use Dcat\Admin\Form\NestedForm;
  20. use Dcat\Admin\Layout\Content;
  21. use Dcat\Admin\Widgets\Form;
  22. use Dcat\Admin\Widgets\Tooltip;
  23. use Illuminate\Http\Request;
  24. use Illuminate\Support\Facades\Cache;
  25. trait formMiniTrait{
  26. public function index_miniprogram(Content $content)
  27. {
  28. return $content->title('移动端配置')
  29. // ->body($this->buildPreviewButton())
  30. // ->body($this->newline())
  31. ->body(
  32. <<<HTML
  33. <div class="card">{$this->form_miniprogram()->render()}</div>
  34. HTML
  35. );
  36. }
  37. protected function form_miniprogram(){
  38. $form = new Form();
  39. $form->confirm('您确定要提交表单吗?', 'content');
  40. $form->disableResetButton();
  41. $form->tab('分享', function (Form $form) {
  42. $form->html(function () {
  43. return '';
  44. }, '<b>一、右上角分享</b>');
  45. $form->text('app_share_right', '默认')->default(Settings::get('app_share_right', '宠也 - 养宠上宠也'));
  46. $form->text('app_share_circle', '圈子页')->help('其中[circle_name]会被替换为该圈子的名称,[circle_introduce]会被替换为该圈子的简介')->default(Settings::get('app_share_circle', '[circle_name] - 宠也圈子'));
  47. $form->text('app_share_tag', '话题页')->help('其中[tag_name]会被替换为该话题的名称')->default(Settings::get('app_share_tag', '[tag_name] - 宠也'));
  48. $form->text('app_share_good', '商品页')->help('其中[good_name]会被替换为该商品的名称')->default(Settings::get('app_share_good', '[good_name] - 宠也商品'));
  49. $form->text('app_share_user', '我的页面')->help('其中[user_name]会被替换为该用户的昵称,[user_introduce]会被替换为该用户的签名')->default(Settings::get('app_share_user', '[user_name] - 我的主页'));
  50. $form->text('app_share_author', '他人主页')->help('其中[author_name]会被替换为被分享人的昵称,[author_introduce]会被替换为分享人的简')->default(Settings::get('app_share_author', '[author_name] - 宠也用户'));
  51. $form->text('app_share_shop', '店铺页')->help('其中[shop_name]会被替换为当前店铺的名字')->default(Settings::get('app_share_shop', '[shop_name] - 宠也店铺'));
  52. $form->text('app_share_search', '搜索页')->help('其中[search_content]会被替换为搜索内容前20个字符')->default(Settings::get('app_share_search', '[search_content] - 宠也搜索'));
  53. $form->divider();
  54. $form->html(function () {
  55. return '';
  56. }, '<b>二、按钮分享</b>');
  57. $form->text('app_share_post', '文章')->help('其中[post_content]会被替换为该文章内容前20字符,[author_name]会被替换为作者的名字')->default(Settings::get('app_share_post', '[post_content] - [author_name] - 宠也'));
  58. });
  59. $form->tab('话题', function (Form $form) {
  60. $form->multipleSelectTable('app_page_hot_tags', '热门话题')
  61. ->title('话题库')
  62. ->max(10)
  63. ->from(TagRender::make())
  64. ->model(WxTag::class, 'id', 'tags_name', 'selectTable:formMiniTrait:app_page_hot_tags')
  65. ->help('<a href="https://img.mini.minisns.cn/images/hot_tag_page.jpg" target="_blank">热门话题页面</a>:如果为空,则根据使用次数排序。<a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  66. ->default(Settings::get('app_page_hot_tags', ''));
  67. $form->radio('app_topic_list_style', '内容列表样式')->options([0=>'默认',1=>'瀑布流'])->help('话题页内容列表样式')->default(Settings::get('app_topic_list_style', 0));
  68. });
  69. $form->tab('图集', function (Form $form) {
  70. $form->text('app_wallpapers_name', '图集别名')->help('优先显示别名')->default(Settings::get('app_wallpapers_name', ''));
  71. });
  72. $form->tab('窗口动画', function (Form $form) {
  73. $animationtypes = [
  74. 'slide-in-right' => '新窗体从右侧进入',
  75. 'slide-in-left' => '新窗体从左侧进入',
  76. 'slide-in-top' => '新窗体从顶部进入',
  77. 'slide-in-bottom' => '新窗体从底部进入',
  78. 'pop-in' => '新窗体从左侧进入,且老窗体被挤压而出',
  79. 'fade-in' => '新窗体从透明到不透明逐渐显示',
  80. 'zoom-out' => '新窗体从小到大缩放显示',
  81. 'zoom-fade-out' => '新窗体从小到大逐渐放大并且从透明到不透明逐渐显示',
  82. 'none' => '无动画'
  83. ];
  84. $form->html(function () {
  85. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">Tips: 仅App支持该功能</div>';
  86. }, '');
  87. $res19 = __system__paycode__tip__(19);
  88. Tooltip::make('.mini_global_admin_open_not_support_tip')
  89. ->bottom()
  90. ->title($res19['tip']);
  91. $form->select('app_page_animation_1', '笔记动画')->help($res19['text'])->options($animationtypes)->default(Settings::get('app_page_animation_1', 'slider-in-right'));
  92. $form->select('app_page_animation_2', '圈子动画')->options($animationtypes)->default(Settings::get('app_page_animation_1', 'slider-in-right'));
  93. $form->select('app_page_animation_3', '商品动画')->options($animationtypes)->default(Settings::get('app_page_animation_3', 'slider-in-right'));
  94. $form->select('app_page_animation_4', '用户主页动画')->options($animationtypes)->default(Settings::get('app_page_animation_4', 'slider-in-right'));
  95. $form->select('app_page_animation_5', '话题动画')->options($animationtypes)->default(Settings::get('app_page_animation_5', 'slider-in-right'));
  96. $form->select('app_page_animation_7', '商品分类动画')->options($animationtypes)->default(Settings::get('app_page_animation_7', 'slider-in-right'));
  97. $form->select('app_page_animation_8', '帮助问答动画')->options($animationtypes)->default(Settings::get('app_page_animation_8', 'slider-in-right'));
  98. $form->select('app_page_animation_10', 'webview动画')->options($animationtypes)->default(Settings::get('app_page_animation_10', 'slider-in-right'));
  99. $form->select('app_page_animation_12', '用户名片动画')->options($animationtypes)->default(Settings::get('app_page_animation_12', 'slider-in-right'));
  100. $form->select('app_page_animation_18', '聊天界面动画')->options($animationtypes)->default(Settings::get('app_page_animation_18', 'slider-in-right'));
  101. $form->select('app_page_animation_20', '图集界面动画')->options($animationtypes)->default(Settings::get('app_page_animation_20', 'slider-in-right'));
  102. $form->select('app_page_animation_21', '图集主题界面动画')->options($animationtypes)->default(Settings::get('app_page_animation_21', 'slider-in-right'));
  103. $form->select('app_page_animation_6', '其他页面动画')->options($animationtypes)->default(Settings::get('app_page_animation_6', 'slider-in-right'));
  104. });
  105. $form->tab('ip归属地', function (Form $form) {
  106. $form->html(function () {
  107. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;">Tips: 需要先配置API,点击<a href="'.admin_url('settings/api').'" target="_blank">API配置</a></div>';
  108. }, '');
  109. $form->radio('app_ip_comment_show', '评论归属地')->options([0=>'不显示', 1=>'国家', 2=>'省份', 3=>'城市', 4=>'县城'])->default(Settings::get('app_ip_comment_show', 3));
  110. $form->radio('app_ip_post_show', '笔记归属地')->options([0=>'不显示', 1=>'国家', 2=>'省份', 3=>'城市', 4=>'县城'])->default(Settings::get('app_ip_post_show', 3));
  111. $form->radio('app_ip_user_show', '用户归属地')->options([0=>'不显示', 1=>'国家', 2=>'省份', 3=>'城市', 4=>'县城'])->default(Settings::get('app_ip_user_show', 3));
  112. });
  113. $form->action('settings/action/miniprogram');
  114. return $form;
  115. }
  116. public function miniprogram(Request $request){
  117. SiteUtils::forget_config_data();
  118. // 4
  119. Settings::set('app_share_right', $request->input('app_share_right'));
  120. Settings::set('app_share_user', $request->input('app_share_user'));
  121. Settings::set('app_share_author', $request->input('app_share_author'));
  122. Settings::set('app_share_shop', $request->input('app_share_shop'));
  123. Settings::set('app_share_circle', $request->input('app_share_circle'));
  124. Settings::set('app_share_tag', $request->input('app_share_tag'));
  125. Settings::set('app_share_good', $request->input('app_share_good'));
  126. Settings::set('app_share_search', $request->input('app_share_search'));
  127. Settings::set('app_share_post', $request->input('app_share_post'));
  128. Settings::set('app_page_hot_tags', $request->input('app_page_hot_tags'), true);
  129. Settings::set('app_topic_list_style', $request->input('app_topic_list_style'), true);
  130. Settings::set('app_wallpapers_name', $request->input('app_wallpapers_name'), true);
  131. Cache::forget('app_share_format');
  132. $app_share_format = [
  133. 'app_share_right' => $request->input('app_share_right'),
  134. 'app_share_user' => $request->input('app_share_user'),
  135. 'app_share_author' => $request->input('app_share_author'),
  136. 'app_share_shop' => $request->input('app_share_shop'),
  137. 'app_share_circle' => $request->input('app_share_circle'),
  138. 'app_share_tag' => $request->input('app_share_tag'),
  139. 'app_share_good' => $request->input('app_share_good'),
  140. 'app_share_search' => $request->input('app_share_search'),
  141. 'app_share_post' => $request->input('app_share_post'),
  142. ];
  143. Cache::put('app_share_format', json_encode($app_share_format));
  144. $animation = [
  145. "animation_1" => $request->input('app_page_animation_1'),
  146. "animation_2" => $request->input('app_page_animation_2'),
  147. "animation_3" => $request->input('app_page_animation_3'),
  148. "animation_4" => $request->input('app_page_animation_4'),
  149. "animation_5" => $request->input('app_page_animation_5'),
  150. "animation_6" => $request->input('app_page_animation_6'),
  151. "animation_7" => $request->input('app_page_animation_7'),
  152. "animation_8" => $request->input('app_page_animation_8'),
  153. "animation_10" => $request->input('app_page_animation_10'),
  154. "animation_12" => $request->input('app_page_animation_12'),
  155. "animation_18" => $request->input('app_page_animation_18'),
  156. "animation_20" => $request->input('app_page_animation_20'),
  157. "animation_21" => $request->input('app_page_animation_21'),
  158. ];
  159. Cache::forget('app_page_animation');
  160. Cache::put('app_page_animation', json_encode($animation));
  161. Settings::set('app_page_animation_1', $request->input('app_page_animation_1'), true);
  162. Settings::set('app_page_animation_2', $request->input('app_page_animation_2'), true);
  163. Settings::set('app_page_animation_3', $request->input('app_page_animation_3'), true);
  164. Settings::set('app_page_animation_4', $request->input('app_page_animation_4'), true);
  165. Settings::set('app_page_animation_5', $request->input('app_page_animation_5'), true);
  166. Settings::set('app_page_animation_6', $request->input('app_page_animation_6'), true);
  167. Settings::set('app_page_animation_7', $request->input('app_page_animation_7'), true);
  168. Settings::set('app_page_animation_8', $request->input('app_page_animation_8'), true);
  169. Settings::set('app_page_animation_10', $request->input('app_page_animation_10'), true);
  170. Settings::set('app_page_animation_12', $request->input('app_page_animation_12'), true);
  171. Settings::set('app_page_animation_18', $request->input('app_page_animation_18'), true);
  172. Settings::set('app_page_animation_20', $request->input('app_page_animation_20'), true);
  173. Settings::set('app_page_animation_21', $request->input('app_page_animation_21'), true);
  174. Settings::set('app_ip_comment_show', $request->input('app_ip_comment_show'), true);
  175. Settings::set('app_ip_post_show', $request->input('app_ip_post_show'), true);
  176. Settings::set('app_ip_user_show', $request->input('app_ip_user_show'), true);
  177. $__global_config_version__ = Settings::get('__global_config_version__', 1) + 1;
  178. Settings::set('__global_config_version__', $__global_config_version__);
  179. GatewayUtils::success('all', 13, [ 'version' => $__global_config_version__, 'file' => basename(__FILE__) ]);
  180. return $this->response()->success('成功!');
  181. }
  182. }