DistMessageController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. namespace App\Distributor\Controllers;
  3. use App\Distributor\Repositories\DistCustomMessage;
  4. use App\Distributor\Repositories\DistMessage;
  5. use App\Distributor\Repositories\DistReadStatus;
  6. use Dcat\Admin\Admin;
  7. use Dcat\Admin\Form;
  8. use Dcat\Admin\Grid;
  9. use Dcat\Admin\Http\Controllers\AdminController;
  10. use Dcat\Admin\Layout\Content;
  11. use Dcat\Admin\Show;
  12. class DistMessageController extends AdminController
  13. {
  14. /**
  15. * page index
  16. */
  17. public function index(Content $content)
  18. {
  19. return $content
  20. ->header('列表')
  21. ->description('全部')
  22. ->breadcrumb(['text'=>'列表','url'=>''])
  23. ->body($this->grid());
  24. }
  25. /**
  26. * Make a grid builder.
  27. *
  28. * @return Grid
  29. */
  30. protected function grid()
  31. {
  32. //插入JS
  33. Admin::script(
  34. <<<JS
  35. $(document).ready(function() {
  36. $('.grid-row-clickable').on('click', function() {
  37. var id = $(this).data('id');
  38. if (id) {
  39. window.location.href = '/dist/messages/' + id;
  40. }
  41. });
  42. });
  43. JS
  44. );
  45. return Grid::make(new DistCustomMessage(), function (Grid $grid) {
  46. $grid->setActionClass(Grid\Displayers\Actions::class);
  47. // 添加“查看”按钮
  48. $grid->actions(function (Grid\Displayers\Actions $actions) {
  49. $actions->append('<a href="/dist/messages/'. $actions->row->id.'" class="btn btn-sm btn-primary">View Detail</a>');
  50. });
  51. // 设置数据源
  52. //$grid->model()->setData($messagesArray);
  53. //$grid->column('id');//->sortable();
  54. $grid->column('created_at','time');
  55. // $grid->column('title','message_title');
  56. $grid->column('title','message_title')->display(function ($title) {
  57. $isRead = $this->is_read;
  58. $style = $isRead == 0 ? 'font-weight: bold;' : '';
  59. $label = $isRead == 0 ? '(未读)' : '';
  60. return "<span style='{$style}'>{$title} {$label}</span>";
  61. });
  62. $grid->column('content');
  63. //$grid->column('sender_id');
  64. $grid->column('is_read');
  65. $grid->disableCreateButton();
  66. $grid->disableDeleteButton();
  67. $grid->disableEditButton();
  68. // 添加查看按钮
  69. // 添加点击事件,点击一行进入详情页
  70. // $grid->filter(function (Grid\Filter $filter) {
  71. // $filter->equal('id');
  72. // });
  73. });
  74. }
  75. /**
  76. * Make a show builder.
  77. *
  78. * @param mixed $id
  79. *
  80. * @return Show
  81. */
  82. protected function detail($id)
  83. {
  84. $this->markAsRead($id);
  85. return Show::make($id, new DistMessage(), function (Show $show) {
  86. //$show->field('id');
  87. //$show->field('sender_id');
  88. $show->field('created_at');
  89. $show->field('title');
  90. $show->field('content');
  91. // Disable all toolbar actions and buttons
  92. $show->panel()
  93. ->tools(function (Show\Tools $tools) {
  94. $tools->disableEdit(); // Disable edit button
  95. $tools->disableDelete(); // Disable delete button
  96. });
  97. });
  98. }
  99. //
  100. // /**
  101. // * Make a form builder.
  102. // *
  103. // * @return Form
  104. // */
  105. // protected function form()
  106. // {
  107. // return Form::make(new DistMessage(), function (Form $form) {
  108. // $form->display('id');
  109. // $form->text('title');
  110. // $form->text('content');
  111. // $form->text('sender_id');
  112. // $form->text('target_type');
  113. // $form->text('target_ids');
  114. //
  115. // $form->display('created_at');
  116. // $form->display('updated_at');
  117. // });
  118. // }
  119. /**
  120. * 标记消息为已读
  121. */
  122. public function markAsRead($messageId)
  123. {
  124. $userId = getDistributorId();
  125. if (DistReadStatus::markAsRead($messageId, $userId)) {
  126. return true;
  127. }
  128. return false;
  129. }
  130. }