Component Groups. Closes #146.

This commit is contained in:
James Brooks
2015-01-04 20:56:10 +00:00
parent 35c0d25112
commit 0846cfdbca
12 changed files with 305 additions and 2 deletions

View File

@@ -3,13 +3,39 @@
namespace CachetHQ\Cachet\Http\Controllers;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\ComponentGroup;
use GrahamCampbell\Binput\Facades\Binput;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\View;
class DashComponentController extends Controller
{
protected $subMenu = [];
protected $subTitle = 'Components';
public function __construct()
{
$this->subMenu = [
'components' => [
'title' => 'Components',
'url' => URL::route('dashboard.components'),
'icon' => 'ion-ios-keypad',
'active' => false,
],
'groups' => [
'title' => 'Component Groups',
'url' => URL::route('dashboard.components.groups'),
'icon' => 'ion-folder',
'active' => false,
],
];
View::share('subTitle', $this->subTitle);
View::share('subMenu', $this->subMenu);
}
/**
* Shows the components view.
*
@@ -19,9 +45,28 @@ class DashComponentController extends Controller
{
$components = Component::orderBy('order')->orderBy('created_at')->get();
$this->subMenu['components']['active'] = true;
return View::make('dashboard.components.index')->with([
'pageTitle' => 'Components - Dashboard',
'components' => $components,
'subMenu' => $this->subMenu,
]);
}
/**
* Shows the component groups view.
*
* @return \Illuminate\View\View
*/
public function showComponentGroups()
{
$this->subMenu['groups']['active'] = true;
return View::make('dashboard.groups')->with([
'pageTitle' => 'Component Groups - Dashboard',
'groups' => ComponentGroup::all(),
'subMenu' => $this->subMenu,
]);
}
@@ -34,9 +79,12 @@ class DashComponentController extends Controller
*/
public function showEditComponent(Component $component)
{
$groups = ComponentGroup::all();
return View::make('dashboard.components.edit')->with([
'pageTitle' => 'Editing "'.$component->name.'" Component - Dashboard',
'component' => $component,
'groups' => $groups,
]);
}
@@ -62,8 +110,11 @@ class DashComponentController extends Controller
*/
public function showAddComponent()
{
$groups = ComponentGroup::all();
return View::make('dashboard.components.add')->with([
'pageTitle' => 'Add Component - Dashboard',
'groups' => $groups,
]);
}
@@ -93,4 +144,25 @@ class DashComponentController extends Controller
return Redirect::back();
}
/**
* Shows the add component group view.
*
* @return \Illuminate\View\View
*/
public function showAddComponentGroup()
{
return View::make('dashboard.components.add-group')->with([
'pageTitle' => 'Create Component Group',
]);
}
public function postAddComponentGroup()
{
$_group = Binput::get('group');
$group = ComponentGroup::create($_group);
return Redirect::back()->withGroup($group);
}
}

View File

@@ -43,7 +43,26 @@ class Component extends Model implements TransformableInterface
*
* @var string[]
*/
protected $fillable = ['name', 'description', 'status', 'user_id', 'tags', 'link', 'order'];
protected $fillable = [
'name',
'description',
'status',
'user_id',
'tags',
'link',
'order',
'group_id',
];
/**
* Components can belong to a group.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function group()
{
return $this->belongsTo('CachetHQ\Cachet\Models\ComponentGroup', 'group_id', 'id');
}
/**
* Lookup all of the incidents reported on the component.

View File

@@ -0,0 +1,45 @@
<?php
namespace CachetHQ\Cachet\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletingTrait;
use Watson\Validating\ValidatingTrait;
/**
* @property int $id
* @property int $component_id
* @property int $group_id
* @property \Carbon\Carbon $created_at
* @property \Carbon\Carbon $updated_at
*/
class ComponentGroup extends Model
{
use SoftDeletingTrait, ValidatingTrait;
/**
* The validation rules.
*
* @var string[]
*/
protected $rules = [
'name' => 'required|unique:component_groups',
];
/**
* The fillable properties.
*
* @var string[]
*/
protected $fillable = ['name'];
/**
* A group can have many components.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function components()
{
return $this->hasMany('CachetHQ\Cachet\Models\Component', 'id', 'group_id');
}
}