95 lines
2.4 KiB
PHP
95 lines
2.4 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);
|
|
}
|
|
}
|
|
|
|
$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;
|
|
}
|
|
}
|