WuYongJie 9595267ee7
Some checks failed
Tests / PHP 8.1 (push) Has been cancelled
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
chore: 导入 Akaunting 初始源码与团队协作规则
2026-07-20 18:20:25 +08:00

109 lines
2.7 KiB
PHP

<?php
namespace App\View\Components\Index;
use App\Abstracts\View\Component;
use App\Events\Common\BulkActionsAdding;
class Bulkaction extends Component
{
public $class;
public $text = '';
public $path = '';
public $actions = [];
/**
* Create a new component instance.
*
* @return void
*/
public function __construct(
string $class, string $text = '', string $path = '', $actions = []
) {
$this->class = $class;
$this->text = $text;
$this->path = $path;
$this->actions = $this->getActions($actions);
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|string
*/
public function render()
{
return view('components.index.bulkaction.index');
}
protected function getActions($actions)
{
if (! empty($actions)) {
return $actions;
}
if (class_exists($this->class)) {
$bulk_action = app($this->class);
event(new BulkActionsAdding($bulk_action));
$this->text = $bulk_action->text;
if (is_array($bulk_action->path)) {
$this->path = route('bulk-actions.action', $bulk_action->path);
} else {
$this->path = url('common/bulk-actions/' . $bulk_action->path);
}
} else {
$bulk_action = new \stdClass();
$bulk_action->text = '';
$bulk_action->path = '';
$bulk_action->actions = [];
$bulk_action->icons = [];
event(new BulkActionsAdding($bulk_action));
if (is_array($bulk_action->path)) {
$this->path = route('bulk-actions.action', $bulk_action->path);
} else {
$this->path = url('common/bulk-actions/' . $bulk_action->path);
}
}
$query = [];
if (request()->has('page')) {
$query['page'] = request()->get('page');
}
if (request()->has('limit')) {
$query['limit'] = request()->get('limit');
}
if ($query) {
$this->path .= '?' . http_build_query($query);
}
$actions = [];
if ($bulk_action->actions) {
foreach ($bulk_action->actions as $key => $action) {
if ((isset($action['permission']) && ! user()->can($action['permission']))) {
continue;
}
if (empty($action['icon']) && array_key_exists($key, $bulk_action->icons)) {
$action['icon'] = $bulk_action->icons[$key];
}
$actions[$key] = $action;
}
}
return $actions;
}
}