added views and functions for adding, editing and deleting groups through admin interface

This commit is contained in:
mwalbeck 2016-09-21 20:37:52 +02:00
parent 40992d676a
commit a1af585133
12 changed files with 245 additions and 28 deletions

View file

@ -3,10 +3,13 @@
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use App\Test;
class Group extends Model
{
protected $fillable = ["name"];
public function users()
{
return $this->hasMany(User::class);
@ -26,4 +29,26 @@ class Group extends Model
{
return $this->users;
}
public function addGroup($request)
{
$this->name = $request["name"];
$this->save();
return true;
}
public function updateGroup($request)
{
$this->update($request);
return true;
}
public function deleteGroup()
{
if (Auth::user()->isAdministrator()) {
$this->delete();
return true;
}
return false;
}
}

View file

@ -0,0 +1,56 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Group;
class GroupController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function showGroups()
{
$groups = Group::all();
return view('groups.showall', compact('groups'));
}
public function newGroup()
{
return view('groups.new');
}
public function addGroup()
{
$group = new Group;
$group->addGroup(request()->all());
return redirect('/admin/groups');
}
public function editGroup(Group $group)
{
return view('groups.edit', compact('group'));
}
public function updateGroup(Group $group)
{
$group->updateGroup(request()->all());
return redirect("/admin/groups");
}
public function confirmDeleteGroup(Group $group)
{
return view('groups.delete', compact('group'));
}
public function deleteGroup(Group $group)
{
$group->deleteGroup();
return redirect('/admin/groups');
}
}

View file

@ -15,7 +15,7 @@ class ModeratorController extends Controller
public function index()
{
return view('mod.index');
return view('admin.index');
}
public function showUsers()

View file

@ -58,7 +58,7 @@ class Test extends Model
public function updateTest($request)
{
$test->update($request);
$this->update($request);
}
public function nextQuestionNumber()

View file

@ -20,7 +20,18 @@
<button formaction="/{{ Auth::user()->getAdminPath() }}/users/new" class="btn btn-default">New User</button>
</form>
</div>
</div>
</div>
@if (Auth::user()->isAdministrator())
<div class="panel panel-default">
<div class="panel-heading">Groups</div>
<div class="panel-body">
<form method="get">
<button formaction="/{{ Auth::user()->getAdminPath() }}/groups" class="btn btn-default">Show Groups</button>
<button formaction="/{{ Auth::user()->getAdminPath() }}/groups/new" class="btn btn-default">New Group</button>
</form>
</div>
</div>
@endif
</div>
</div>
@stop

View file

@ -0,0 +1,18 @@
@extends('layouts.base')
@section('content')
<div class="container-fluid">
<div class="col-md-4 col-md-offset-4">
<h1>Are you Sure!</h1>
</br>
<form method="POST" action="/{{ Auth::user()->getAdminPath() }}/groups/{{ $group->id }}/delete">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button type="submit" class="btn btn-default">Yes</button>
</form>
<form method="GET" action="/{{ Auth::user()->getAdminPath() }}/groups">
<button type="submit" class="btn btn-default">No</button>
</form>
</div>
</div>
@stop

View file

@ -0,0 +1,21 @@
@extends('layouts.base')
@section('content')
<div class="container-fluid">
<div class="col-md-4 col-md-offset-4">
<h1>Edit Group: {{ $group->name }}</h1>
</br>
<form method="POST" action="/{{ Auth::user()->getAdminPath() }}/groups/{{ $group->id }}/edit">
{{ csrf_field() }}
{{ method_field('PATCH') }}
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" name="name" value="{{ $group->name }}">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
@stop

View file

@ -0,0 +1,19 @@
@extends('layouts.base')
@section('content')
<div class="container-fluid">
<div class="col-md-4 col-md-offset-4">
<h1>Create New Group</h1>
</br>
<form method="POST" action="/{{ Auth::user()->getAdminPath() }}/groups/new">
{{ csrf_field() }}
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" name="name">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
@stop

View file

@ -0,0 +1,46 @@
@extends('layouts.base')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Password</div>
<div class="panel-body">
<form method="post" action="/settings/update/password">
{{ csrf_field() }}
{{ method_field('PATCH') }}
<div class="form-group">
<h4>Change Password</h4>
<label>Old Password</label>
<input type="password" class="form-control" name="password_old">
<br>
<label>New Password</label>
<input type="password" class="form-control" name="password1_new">
<br>
<label>Repeat New Password</label>
<input type="password" class="form-control" name="password2_new">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Email</div>
<div class="panel-body">
<form method="post" action="/settings/update/email">
{{ csrf_field() }}
{{ method_field('PATCH') }}
<div class="form-group">
<h4>Change Email</h4>
<label>Email</label>
<input type="text" class="form-control" name="email" value="{{ $user->email }}">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
@stop

View file

@ -0,0 +1,38 @@
@extends('layouts.base')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Groups</div>
<div class="panel-body">
<table class="table">
<tr>
<th>#</th>
<th>Group</th>
<th>
<form method="get">
<button class="btn btn-sm btn-default pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/groups/new">Add Group</button>
</form>
</th>
</tr>
@foreach ($groups as $group)
<tr>
<td>{{ $group->id }}</td>
<td>{{ $group->name }}</td>
<td>
<form method="get" class="pull-right">
<button class="btn btn-sm btn-default pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/groups/{{ $group->id }}/edit">Edit</button>
<button class="btn btn-sm btn-default pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/groups/{{ $group->id }}/delete">Delete</button>
</form>
</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
</div>
</div>
@stop

View file

@ -1,25 +0,0 @@
@extends('layouts.base')
@section('content')
<div class="container-fluid">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-heading">Tests</div>
<div class="panel-body">
<form method="get">
<button formaction="/{{ Auth::user()->getAdminPath() }}/tests" class="btn btn-default">Show Tests</button>
<button formaction="/{{ Auth::user()->getAdminPath() }}/tests/new" class="btn btn-default">New Test</button>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Users</div>
<div class="panel-body">
<form method="get">
<button formaction="/{{ Auth::user()->getAdminPath() }}/users" class="btn btn-default">Show Users</button>
<button formaction="/{{ Auth::user()->getAdminPath() }}/users/new" class="btn btn-default">New User</button>
</form>
</div>
</div>
</div>
</div>
@stop

View file

@ -93,4 +93,12 @@ Route::group(['prefix' => 'admin'], function () {
Route::get('/users/{user}/delete', 'UserController@confirmDeleteUser');
Route::delete('/users/{user}', 'UserController@deleteUser');
Route::get('/groups', 'GroupController@showGroups');
Route::get('/groups/new', 'GroupController@newGroup');
Route::post('/groups/new', 'GroupController@addGroup');
Route::get('/groups/{group}/edit', 'GroupController@editGroup');
Route::patch('/groups/{group}/edit', 'GroupController@updateGroup');
Route::get('/groups/{group}/delete', 'GroupController@confirmDeleteGroup');
Route::delete('/groups/{group}/delete', 'GroupController@DeleteGroup');
});