formEmojiTrait.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace App\Admin\Controllers\Traits\WxSettingTraits;
  3. use App\Wen\Utils\AdminUtils;
  4. use App\Wen\Utils\GatewayUtils;
  5. use App\Wen\Utils\Settings;
  6. use App\Wen\Utils\SiteUtils;
  7. use Dcat\Admin\Form\NestedForm;
  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 formEmojiTrait{
  13. public function index_emoji(Content $content)
  14. {
  15. return $content->title('表情配置')->description('所有表情的alt不可重复。')
  16. // ->body($this->buildPreviewButton())
  17. // ->body($this->newline())
  18. ->body(
  19. <<<HTML
  20. <div class="card">{$this->form_emoji()->render()}</div>
  21. HTML
  22. );
  23. }
  24. protected function form_emoji(){
  25. $form = new Form();
  26. $form->confirm('您确定要提交表单吗?', 'content');
  27. $form->disableResetButton();
  28. $form->tab('第一页', function (Form $form){
  29. $form->table('app_emoji_page_1','图片表情', function (NestedForm $table) {
  30. $table->text('alt', 'alt')->help('会把内容中[坏笑]替换成表情展示')->default('[坏笑]');
  31. $table->image('emoji', '表情')->help('<a href="https://img.mini.minisns.cn/2023/05/14/cfb8b73b224490acf0375bf3a5f35c4d.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/2023/05/14/cfb8b73b224490acf0375bf3a5f35c4d.png');
  32. $table->number('height', '高度')->help('单位px。在内容中显示表情时图片的高度')->default(20);
  33. $table->number('width', '宽度')->help('单位px。在内容中显示表情时图片的宽度')->default(20);
  34. })->default(Settings::get('app_emoji_page_1', ''));
  35. });
  36. $form->tab('第二页', function (Form $form){
  37. $form->table('app_emoji_page_2','图片表情', function (NestedForm $table) {
  38. $table->text('alt', 'alt')->help('会把内容中[坏笑]替换成表情展示')->default('[坏笑]');
  39. $table->image('emoji', '表情')->help('<a href="https://img.mini.minisns.cn/2023/05/14/cfb8b73b224490acf0375bf3a5f35c4d.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/2023/05/14/cfb8b73b224490acf0375bf3a5f35c4d.png');
  40. $table->number('height', '高度')->help('单位px。在内容中显示表情时图片的高度')->default(20);
  41. $table->number('width', '宽度')->help('单位px。在内容中显示表情时图片的宽度')->default(20);
  42. })->default(Settings::get('app_emoji_page_2', ''));
  43. });
  44. $form->tab('第三页', function (Form $form){
  45. $form->table('app_emoji_page_3','图片表情', function (NestedForm $table) {
  46. $table->text('alt', 'alt')->help('会把内容中[坏笑]替换成表情展示')->default('[坏笑]');
  47. $table->image('emoji', '表情')->help('<a href="https://img.mini.minisns.cn/2023/05/14/cfb8b73b224490acf0375bf3a5f35c4d.png" download="about_logo.jpg" target="_blank">点击下载默认图</a>,最好是png透明图')->url('files/uploads')->autoUpload()->uniqueName()->default('https://img.mini.minisns.cn/2023/05/14/cfb8b73b224490acf0375bf3a5f35c4d.png');
  48. $table->number('height', '高度')->help('单位px。在内容中显示表情时图片的高度')->default(20);
  49. $table->number('width', '宽度')->help('单位px。在内容中显示表情时图片的宽度')->default(20);
  50. })->default(Settings::get('app_emoji_page_3', ''));
  51. });
  52. $form->action('settings/action/emoji');
  53. return $form;
  54. }
  55. public function emoji(Request $request){
  56. SiteUtils::forget_config_data();
  57. Settings::set('app_emoji_page_1', AdminUtils::_table_data($request->input('app_emoji_page_1')), true);
  58. Settings::set('app_emoji_page_2', AdminUtils::_table_data($request->input('app_emoji_page_2')), true);
  59. Settings::set('app_emoji_page_3', AdminUtils::_table_data($request->input('app_emoji_page_3')), true);
  60. Cache::forget('app_emoji_cache');
  61. Cache::forget('app_emoji_alt_str');
  62. $app_emoji_alt_str = '';
  63. $page1 = json_decode(AdminUtils::_table_data($request->input('app_emoji_page_1')) ?: '[]', true);
  64. $page2 = json_decode(AdminUtils::_table_data($request->input('app_emoji_page_2')) ?: '[]', true);
  65. $page3 = json_decode(AdminUtils::_table_data($request->input('app_emoji_page_3')) ?: '[]', true);
  66. $app_emoji_cache = [];
  67. $partern = '';
  68. if($page1){
  69. foreach ($page1 as $emoji){
  70. $key = _preg_prepare($emoji['alt']);
  71. $app_emoji_cache[$emoji['alt']] = $emoji;
  72. $app_emoji_alt_str .= '|'.$emoji['alt'];
  73. if(_empty_($partern)){
  74. $partern = '$'.$key.'';
  75. }else{
  76. $partern .= '|'.$key.'';
  77. }
  78. }
  79. }
  80. if($page2){
  81. foreach ($page2 as $emoji){
  82. $key = _preg_prepare($emoji['alt']);
  83. $app_emoji_cache[$emoji['alt']] = $emoji;
  84. $app_emoji_alt_str .= '|'.$emoji['alt'];
  85. if(_empty_($partern)){
  86. $partern = '$'.$key.'';
  87. }else{
  88. $partern .= '|'.$key.'';
  89. }
  90. }
  91. }
  92. if($page3){
  93. foreach ($page3 as $emoji){
  94. $key = _preg_prepare($emoji['alt']);
  95. $app_emoji_cache[$emoji['alt']] = $emoji;
  96. $app_emoji_alt_str .= '|'.$emoji['alt'];
  97. if(_empty_($partern)){
  98. $partern = '$'.$key.'';
  99. }else{
  100. $partern .= '|'.$key.'';
  101. }
  102. }
  103. }
  104. if($partern){
  105. $partern .= '$';
  106. }
  107. $app_emoji_cache['partern'] = $partern;
  108. Cache::put('app_emoji_cache', json_encode($app_emoji_cache));
  109. Cache::put('app_emoji_alt_str', $app_emoji_alt_str);
  110. $__global_config_version__ = Settings::get('__global_config_version__', 1) + 1;
  111. Settings::set('__global_config_version__', $__global_config_version__);
  112. GatewayUtils::success('all', 13, [ 'version' => $__global_config_version__, 'file' => basename(__FILE__) ]);
  113. return $this->response()->success('成功!');
  114. }
  115. }