CreateButton.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace Dcat\Admin\Grid\Tools;
  3. use Dcat\Admin\Form;
  4. use Dcat\Admin\Grid;
  5. use Illuminate\Contracts\Support\Renderable;
  6. class CreateButton implements Renderable
  7. {
  8. /**
  9. * @var Grid
  10. */
  11. protected $grid;
  12. protected $mode;
  13. public function __construct(Grid $grid)
  14. {
  15. $this->grid = $grid;
  16. $this->mode = $grid->option('create_mode');
  17. }
  18. protected function renderDialogCreateButton()
  19. {
  20. if ($this->mode !== Grid::CREATE_MODE_DIALOG) {
  21. return;
  22. }
  23. $new = trans('admin.new');
  24. $url = $this->grid->createUrl();
  25. [$width, $height] = $this->grid->option('dialog_form_area');
  26. Form::modal($new)
  27. ->click(".{$this->grid->getName()}-create")
  28. ->success('LA.reload()')
  29. ->dimensions($width, $height)
  30. ->render();
  31. return "<a data-url='$url' class='btn btn-sm btn-success {$this->grid->getName()}-create'><i class='fa fa-plus'></i><span class='hidden-xs'>&nbsp; $new</span></a>";
  32. }
  33. protected function renderQuickCreateButton()
  34. {
  35. if ($this->mode !== Grid::CREATE_MODE_QUICK) {
  36. return;
  37. }
  38. $new = trans('admin.new');
  39. return "<a class='btn btn-sm btn-success quick-create-button-{$this->grid->getName()}'><i class='fa fa-plus'></i><span class='hidden-xs'>&nbsp; $new</span></a>";
  40. }
  41. protected function renderCreateButton()
  42. {
  43. if ($this->mode && $this->mode !== Grid::CREATE_MODE_DEFAULT) {
  44. return;
  45. }
  46. $new = trans('admin.new');
  47. $url = $this->grid->createUrl();
  48. return "<a href='{$url}' class='btn btn-sm btn-success btn-mini'>
  49. <i class='fa fa-plus'></i><span class='hidden-xs'>&nbsp;&nbsp;{$new}</span>
  50. </a>";
  51. }
  52. public function render()
  53. {
  54. return "<div class='btn-group' style='margin-right:3px'>{$this->renderCreateButton()}{$this->renderQuickCreateButton()}{$this->renderDialogCreateButton()}</div>";
  55. }
  56. }