EpisodesListController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace App\Admin\Controllers\Episode;
  3. use App\Admin\Actions\Grid\BatchEditEpisode;
  4. use App\Models\Episode;
  5. use App\Models\EpisodesList;
  6. use Dcat\Admin\Form;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Layout\Content;
  9. use Dcat\Admin\Show;
  10. use Dcat\Admin\Http\Controllers\AdminController;
  11. class EpisodesListController extends AdminController
  12. {
  13. /* @var Episode $episode*/
  14. private $episode;
  15. protected function title()
  16. {
  17. return $this->episode->name;
  18. }
  19. protected function content(Content $content, $episodeId = 1)
  20. {
  21. $this->episode = Episode::find($episodeId);
  22. return $content
  23. ->translation($this->translation())
  24. ->breadcrumb(
  25. ['text' => $this->episode->name],
  26. ['text' => '剧集上传'],
  27. )
  28. ->title($this->title())
  29. ->description('剧集上传');
  30. }
  31. public function index(Content $content,$episodeId = 0)
  32. {
  33. return $this->content($content,$episodeId)
  34. ->body($this->grid());
  35. }
  36. public function create(Content $content,$episodeId = 0)
  37. {
  38. return $this->content($content,$episodeId)
  39. ->body($this->form());
  40. }
  41. public function update($episodeId, $id = 0)
  42. {
  43. $this->episode = Episode::find($episodeId);
  44. return $this->form()->update($id);
  45. }
  46. public function store($episodeId = 0)
  47. {
  48. $this->episode = Episode::find($episodeId);
  49. return $this->form()->store();
  50. }
  51. public function edit($episodeId, Content $content, $id = 0)
  52. {
  53. return $this->content($content,$episodeId)
  54. ->body($this->form()->edit($id));
  55. }
  56. /**
  57. * Make a grid builder.
  58. *
  59. * @return Grid
  60. */
  61. protected function grid()
  62. {
  63. return Grid::make(EpisodesList::with(['episode'])->where('episodes_id', $this->episode->id), function (Grid $grid) {
  64. //$grid->column('id');
  65. $grid->column('sort')->display(function (){
  66. return '第'.$this->sort.'集';
  67. })->editable();
  68. $grid->column('episode.name','剧集名称');
  69. $grid->column('is_free')
  70. ->using(config('global.episode_free'))
  71. ->label(['success', 'primary'])->sortable();
  72. $grid->column('sale_price')->editable();
  73. $grid->column('url')->display(function (){
  74. return '<a href="'.$this->url.'">视频链接</a>';
  75. });
  76. $grid->hideColumns(['id']);
  77. $grid->batchActions([new BatchEditEpisode()]);
  78. $grid->disableViewButton();
  79. });
  80. }
  81. /**
  82. * Make a form builder.
  83. *
  84. * @return Form
  85. */
  86. protected function form()
  87. {
  88. return Form::make(new EpisodesList(), function (Form $form) {
  89. $sort = EpisodesList::where('episodes_id',$this->episode->id)->max('sort');
  90. $form->hidden('id');
  91. $form->hidden('episodes_id')->value();
  92. $form->number('sort')->default($sort + 1)->min(1);
  93. $form->radio('is_free')
  94. ->options(config('global.episode_free'))
  95. ->when(0, function (Form $form) {
  96. $form->number('sale_price')->min(1);;
  97. })->default(1);
  98. $form->file('url')->chunkSize(1024)->maxSize(1024 * 1024)->saveFullUrl()
  99. ->uniqueName()->autoUpload()
  100. ->autoSave(false)
  101. ->removable(false)
  102. ->width(4)->required();;
  103. $form->display('created_at');
  104. $form->disableViewButton();
  105. $form->disableDeleteButton();
  106. $form->disableListButton();
  107. $form->disableEditingCheck();
  108. $form->disableViewCheck();
  109. $form->disableCreatingCheck();
  110. });
  111. }
  112. }