added views and functions for adding, editing and deleting groups through admin interface
This commit is contained in:
parent
40992d676a
commit
a1af585133
12 changed files with 245 additions and 28 deletions
app
resources/views
admin
groups
mod
routes
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
56
app/Http/Controllers/GroupController.php
Normal file
56
app/Http/Controllers/GroupController.php
Normal 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');
|
||||
}
|
||||
}
|
|
@ -15,7 +15,7 @@ class ModeratorController extends Controller
|
|||
|
||||
public function index()
|
||||
{
|
||||
return view('mod.index');
|
||||
return view('admin.index');
|
||||
}
|
||||
|
||||
public function showUsers()
|
||||
|
|
|
@ -58,7 +58,7 @@ class Test extends Model
|
|||
|
||||
public function updateTest($request)
|
||||
{
|
||||
$test->update($request);
|
||||
$this->update($request);
|
||||
}
|
||||
|
||||
public function nextQuestionNumber()
|
||||
|
|
|
@ -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
|
18
resources/views/groups/delete.blade.php
Normal file
18
resources/views/groups/delete.blade.php
Normal 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
|
21
resources/views/groups/edit.blade.php
Normal file
21
resources/views/groups/edit.blade.php
Normal 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
|
19
resources/views/groups/new.blade.php
Normal file
19
resources/views/groups/new.blade.php
Normal 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
|
46
resources/views/groups/settings.blade.php
Normal file
46
resources/views/groups/settings.blade.php
Normal 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
|
38
resources/views/groups/showall.blade.php
Normal file
38
resources/views/groups/showall.blade.php
Normal 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
|
|
@ -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
|
|
@ -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');
|
||||
|
||||
});
|
Reference in a new issue