CreateButton.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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->getCreateUrl();
  25. $gridName = $this->grid->getName();
  26. $class = 'dialog-create'.($gridName ? "-{$gridName}" : $gridName);
  27. [$width, $height] = $this->grid->option('dialog_form_area');
  28. Form::dialog($new)
  29. ->click(".{$class}")
  30. ->success('Dcat.reload()')
  31. ->dimensions($width, $height);
  32. return "<button data-url='$url' class='btn btn-primary {$class}'><i class='feather icon-plus'></i><span class='d-none d-sm-inline'>&nbsp; $new</span></button>";
  33. }
  34. protected function renderCreateButton()
  35. {
  36. if ($this->mode && $this->mode !== Grid::CREATE_MODE_DEFAULT) {
  37. return;
  38. }
  39. $new = trans('admin.new');
  40. $url = $this->grid->getCreateUrl();
  41. return "<a href='{$url}' class='btn btn-primary'>
  42. <i class='feather icon-plus'></i><span class='d-none d-sm-inline'>&nbsp;&nbsp;{$new}</span>
  43. </a>";
  44. }
  45. public function render()
  46. {
  47. return $this->grid->tools()->format(
  48. "<div class='btn-group' style='margin-right:3px'>{$this->renderCreateButton()}{$this->renderDialogCreateButton()}</div>"
  49. );
  50. }
  51. }