Allow component groups to be collapsed by default. Closes #1398
This commit is contained in:
@@ -27,14 +27,22 @@ final class AddComponentGroupCommand
|
||||
*/
|
||||
public $order;
|
||||
|
||||
/**
|
||||
* Is the component group collapsed?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $collapsed;
|
||||
|
||||
/**
|
||||
* The validation rules.
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
public $rules = [
|
||||
'name' => 'required|string',
|
||||
'order' => 'int',
|
||||
'name' => 'required|string',
|
||||
'order' => 'int',
|
||||
'collapsed' => 'bool',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -42,12 +50,14 @@ final class AddComponentGroupCommand
|
||||
*
|
||||
* @param string $name
|
||||
* @param int $order
|
||||
* @param bool $collapsed
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($name, $order)
|
||||
public function __construct($name, $order, $collapsed)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->order = (int) $order;
|
||||
$this->collapsed = $collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,14 +36,22 @@ final class UpdateComponentGroupCommand
|
||||
*/
|
||||
public $order;
|
||||
|
||||
/**
|
||||
* Is the component group collapsed?
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $collapsed;
|
||||
|
||||
/**
|
||||
* The validation rules.
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
public $rules = [
|
||||
'name' => 'string',
|
||||
'order' => 'int',
|
||||
'name' => 'string',
|
||||
'order' => 'int',
|
||||
'collapsed' => 'bool',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -52,13 +60,15 @@ final class UpdateComponentGroupCommand
|
||||
* @param \CachetHQ\Cachet\Models\ComponentGroup $group
|
||||
* @param string $name
|
||||
* @param int $order
|
||||
* @param bool $collapsed
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(ComponentGroup $group, $name, $order)
|
||||
public function __construct(ComponentGroup $group, $name, $order, $collapsed)
|
||||
{
|
||||
$this->group = $group;
|
||||
$this->name = $name;
|
||||
$this->order = (int) $order;
|
||||
$this->collapsed = $collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,8 +27,9 @@ class AddComponentGroupCommandHandler
|
||||
public function handle(AddComponentGroupCommand $command)
|
||||
{
|
||||
$group = ComponentGroup::create([
|
||||
'name' => $command->name,
|
||||
'order' => $command->order,
|
||||
'name' => $command->name,
|
||||
'order' => $command->order,
|
||||
'collapsed' => $command->collapsed,
|
||||
]);
|
||||
|
||||
event(new ComponentGroupWasAddedEvent($group));
|
||||
|
||||
@@ -26,13 +26,30 @@ class UpdateComponentGroupCommandHandler
|
||||
public function handle(UpdateComponentGroupCommand $command)
|
||||
{
|
||||
$group = $command->group;
|
||||
$group->update([
|
||||
'name' => $command->name,
|
||||
'order' => $command->order,
|
||||
]);
|
||||
$group->update($this->filter($command));
|
||||
|
||||
event(new ComponentGroupWasUpdatedEvent($group));
|
||||
|
||||
return $group;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the command data.
|
||||
*
|
||||
* @param \CachetHQ\Cachet\Bus\Commands\ComponentGroup\UpdateComponentGroupCommand $command
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function filter(UpdateComponentGroupCommand $command)
|
||||
{
|
||||
$params = [
|
||||
'name' => $command->name,
|
||||
'order' => $command->order,
|
||||
'collapsed' => $command->collapsed,
|
||||
];
|
||||
|
||||
return array_filter($params, function ($val) {
|
||||
return $val !== null;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,8 @@ class ComponentGroupController extends AbstractApiController
|
||||
try {
|
||||
$group = dispatch(new AddComponentGroupCommand(
|
||||
Binput::get('name'),
|
||||
Binput::get('order', 0)
|
||||
Binput::get('order', 0),
|
||||
Binput::get('collapsed')
|
||||
));
|
||||
} catch (QueryException $e) {
|
||||
throw new BadRequestHttpException();
|
||||
@@ -78,7 +79,8 @@ class ComponentGroupController extends AbstractApiController
|
||||
$group = dispatch(new UpdateComponentGroupCommand(
|
||||
$group,
|
||||
Binput::get('name'),
|
||||
Binput::get('order', 0)
|
||||
Binput::get('order', 0),
|
||||
Binput::get('collapsed')
|
||||
));
|
||||
} catch (QueryException $e) {
|
||||
throw new BadRequestHttpException();
|
||||
|
||||
@@ -276,7 +276,8 @@ class ComponentController extends Controller
|
||||
try {
|
||||
$group = dispatch(new AddComponentGroupCommand(
|
||||
Binput::get('name'),
|
||||
Binput::get('order', 0)
|
||||
Binput::get('order', 0),
|
||||
Binput::get('collapsed')
|
||||
));
|
||||
} catch (ValidationException $e) {
|
||||
return Redirect::route('dashboard.components.groups.add')
|
||||
@@ -302,7 +303,8 @@ class ComponentController extends Controller
|
||||
$group = dispatch(new UpdateComponentGroupCommand(
|
||||
$group,
|
||||
Binput::get('name'),
|
||||
Binput::get('order', 0)
|
||||
Binput::get('order', 0),
|
||||
Binput::get('collapsed')
|
||||
));
|
||||
} catch (ValidationException $e) {
|
||||
return Redirect::route('dashboard.components.groups.edit', ['id' => $group->id])
|
||||
|
||||
@@ -26,8 +26,9 @@ class ComponentGroup extends Model implements HasPresenter
|
||||
* @var string[]
|
||||
*/
|
||||
protected $casts = [
|
||||
'name' => 'string',
|
||||
'order' => 'int',
|
||||
'name' => 'string',
|
||||
'order' => 'int',
|
||||
'collapsed' => 'bool',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -35,7 +36,7 @@ class ComponentGroup extends Model implements HasPresenter
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
protected $fillable = ['name', 'order'];
|
||||
protected $fillable = ['name', 'order', 'collapsed'];
|
||||
|
||||
/**
|
||||
* The validation rules.
|
||||
@@ -43,8 +44,9 @@ class ComponentGroup extends Model implements HasPresenter
|
||||
* @var string[]
|
||||
*/
|
||||
public $rules = [
|
||||
'name' => 'required|string',
|
||||
'order' => 'int',
|
||||
'name' => 'required|string',
|
||||
'order' => 'int',
|
||||
'collapsed' => 'bool',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user