generated from liutk/owl-admin-base
148 lines
4.9 KiB
PHP
148 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
use Slowlyo\OwlAdmin\Admin;
|
|
use Slowlyo\OwlAdmin\Renderers\Drawer;
|
|
use Slowlyo\OwlAdmin\Renderers\Dialog;
|
|
use Slowlyo\OwlAdmin\Renderers\DrawerAction;
|
|
use Slowlyo\OwlAdmin\Renderers\DialogAction;
|
|
use Slowlyo\OwlAdmin\Renderers\LinkAction;
|
|
|
|
trait CustomActionTrait
|
|
{
|
|
/**
|
|
* 新增按钮
|
|
*
|
|
* @param string $type
|
|
* @param string $size
|
|
* @param string $width
|
|
*
|
|
* @return DialogAction|DrawerAction|LinkAction
|
|
*/
|
|
protected function createTypeButton(string $type = '', string $size = '', string $width = ''): DialogAction|DrawerAction|LinkAction
|
|
{
|
|
switch ($type) {
|
|
case 'drawer':
|
|
$form = $this->form(false)->api($this->getStorePath())->onEvent([]);
|
|
|
|
$drawer = Drawer::make()->title(__('admin.create'))->body($form)->closeOnOutside();
|
|
if($width){
|
|
$drawer->width($width);
|
|
}else{
|
|
$drawer->size($size);
|
|
}
|
|
$button = DrawerAction::make()->drawer($drawer);
|
|
break;
|
|
case 'dialog':
|
|
$form = $this->form(false)->api($this->getStorePath())->onEvent([]);
|
|
|
|
$button = DialogAction::make()->dialog(
|
|
Dialog::make()->title(__('admin.create'))->body($form)->size($size)
|
|
);
|
|
break;
|
|
default:
|
|
$button = LinkAction::make()->link($this->getCreatePath());
|
|
break;
|
|
}
|
|
|
|
return $button->label(__('admin.create'))->icon('fa fa-add')->level('primary');
|
|
}
|
|
|
|
/**
|
|
* 行编辑按钮
|
|
*
|
|
* @param string $type
|
|
* @param string $size
|
|
* @param string $width
|
|
*
|
|
* @return DialogAction|DrawerAction|LinkAction
|
|
*/
|
|
protected function rowEditTypeButton(string $type = '', string $size = '', string $width = ''): DialogAction|DrawerAction|LinkAction
|
|
{
|
|
switch ($type) {
|
|
case 'drawer':
|
|
$form = $this->form(true)
|
|
->api($this->getUpdatePath())
|
|
->initApi($this->getEditGetDataPath())
|
|
->redirect('')
|
|
->onEvent([]);
|
|
|
|
$drawer = Drawer::make()->title(__('admin.edit'))->body($form)->closeOnOutside();
|
|
|
|
if($width){
|
|
$drawer->width($width);
|
|
}else{
|
|
$drawer->size($size);
|
|
}
|
|
|
|
$button = DrawerAction::make()->drawer($drawer);
|
|
break;
|
|
case 'dialog':
|
|
$form = $this->form(true)
|
|
->api($this->getUpdatePath())
|
|
->initApi($this->getEditGetDataPath())
|
|
->redirect('')
|
|
->onEvent([]);
|
|
|
|
$button = DialogAction::make()->dialog(
|
|
Dialog::make()->title(__('admin.edit'))->body($form)->size($size)
|
|
);
|
|
break;
|
|
default:
|
|
$button = LinkAction::make()->link($this->getEditPath());
|
|
break;
|
|
}
|
|
|
|
return $button->label(__('admin.edit'))->icon('fa-regular fa-pen-to-square')->level('link');
|
|
}
|
|
|
|
/**
|
|
* 行详情按钮
|
|
*
|
|
* @param string $type
|
|
* @param string $size
|
|
* @param string $width
|
|
*
|
|
* @return DialogAction|DrawerAction|LinkAction
|
|
*/
|
|
protected function rowShowTypeButton(string $type = '', string $size = '', string $width = ''): DialogAction|DrawerAction|LinkAction
|
|
{
|
|
switch ($type) {
|
|
case 'drawer':
|
|
$drawer = Drawer::make()->title(__('admin.show'))->name('detail_info')->body($this->detail('$id'))->closeOnOutside();
|
|
|
|
if($width){
|
|
$drawer->width($width);
|
|
}else{
|
|
$drawer->size($size);
|
|
}
|
|
//补充详情操作按钮扩展
|
|
try{
|
|
$actions = $this->detailActions();
|
|
}catch(\BadMethodCallException $e){
|
|
$actions = [];
|
|
}
|
|
$drawer->actions($actions);
|
|
|
|
$button = DrawerAction::make()->drawer($drawer);
|
|
break;
|
|
case 'dialog':
|
|
//补充详情操作按钮扩展
|
|
$dialog = Dialog::make()->title(__('admin.show'))->name('detail_info')->body($this->detail('$id'))->size($size);
|
|
try{
|
|
$actions = $this->detailActions();
|
|
}catch(\BadMethodCallException $e){
|
|
$actions = [];
|
|
}
|
|
$dialog->actions($actions);
|
|
$button = DialogAction::make()->dialog($dialog);
|
|
break;
|
|
default:
|
|
$button = LinkAction::make()->link($this->getShowPath());
|
|
break;
|
|
}
|
|
|
|
return $button->label(__('admin.show'))->icon('fa-regular fa-eye')->level('link');
|
|
}
|
|
} |