Skip to content

Commit 0af933a

Browse files
author
Joseph Salzano
committed
added user admin members list with promote demote and remove functions
1 parent b2304d0 commit 0af933a

File tree

6 files changed

+108
-21
lines changed

6 files changed

+108
-21
lines changed

app/Http/Controllers/ProjectController.php

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
namespace SoftwareHerd\Http\Controllers;
33

44
use SoftwareHerd\Project;
5+
use SoftwareHerd\User_Projects;
56
use Illuminate\Http\Request;
67

78
class ProjectController extends Controller
@@ -18,7 +19,15 @@ public function projectCreateProject(request $request)
1819
$project->get_involved_pitch = $request['get_involved_pitch'];
1920
$project->project_admin_user_id = $request->user()->id;
2021
$request->user()->projects()->save($project);
21-
return view('home');
22+
23+
$connection = new User_Projects();
24+
$connection->user_id = $request->user()->id;
25+
$connection->project_id = $project->id;
26+
$connection->user_name = $request->user()->name;
27+
$connection->project_name = $project->title;
28+
$connection->level = 3;
29+
$connection->save();
30+
return redirect('/project/'.$project->id);
2231
}
2332

2433
public function project($id) {
@@ -37,4 +46,31 @@ public function admin($id) {
3746
return redirect('/project_library');
3847
return view('project_admin', array('project' => $project));
3948
}
49+
50+
public function promote($user_id, $project_id) {
51+
$level = \DB::table('user_projects')->where('user_id', $user_id)->where('project_id', $project_id)->value('level');
52+
$level = $level + 1;
53+
\DB::table('user_projects')->where('user_id', $user_id)
54+
->where('project_id', $project_id)
55+
->update(['level' => $level]);
56+
57+
return redirect('/project_admin/'.$project_id);
58+
}
59+
public function demote($user_id, $project_id) {
60+
$level = \DB::table('user_projects')->where('user_id', $user_id)->where('project_id', $project_id)->value('level');
61+
$level = $level - 1;
62+
\DB::table('user_projects')->where('user_id', $user_id)
63+
->where('project_id', $project_id)
64+
->update(['level' => $level]);
65+
66+
return redirect('/project_admin/'.$project_id);
67+
}
68+
69+
public function removeMember($user_id, $project_id) {
70+
\DB::table('user_projects')->where('user_id', $user_id)
71+
->where('project_id', $project_id)
72+
->delete();
73+
74+
return redirect('/project_admin/'.$project_id);
75+
}
4076
}

app/Project.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Project extends Model
1010

1111
public function user()
1212
{
13-
return $this->hasMany('SoftwareHerd\User');
13+
return $this->belongsTo('SoftwareHerd\User', 'project_admin_user_id');
1414
}
1515

1616
public function posts()

app/User.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class User extends Authenticatable
1111

1212
public function projects()
1313
{
14-
return $this->hasMany('SoftwareHerd\Project');
14+
return $this->hasMany('SoftwareHerd\Project', 'project_admin_user_id');
1515
}
1616

1717
public function comments()

app/User_Projects.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ class User_Projects extends Model
88
{
99
//
1010
protected $table = 'user_projects';
11-
11+
public $timestamps = false;
1212
}

resources/views/project_admin.blade.php

Lines changed: 63 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,68 @@
55
@endsection
66

77
@section('content')
8-
<script type="text/javascript" src="{{ asset('/js/tinymce/tinymce.min.js') }}"></script>
9-
<script type="text/javascript">
10-
tinymce.init({
11-
selector : "#new-post-info",
12-
});
13-
</script>
8+
<div style="margin-bottom:20px">
9+
<button onClick="$('#admin_new_post').hide();$('#admin_manage_members').hide();$('#admin_manage_info').show();">Manage Project</button>
10+
<button onClick="$('#admin_new_post').hide();$('#admin_manage_info').hide();$('#admin_manage_members').show();">Manage Members</button>
11+
<button onClick="$('#admin_manage_info').hide();$('#admin_manage_members').hide();$('#admin_new_post').show();">New News Post</button>
12+
</div>
13+
<div id="admin_manage_info" style="display: none;">
14+
15+
</div>
1416

15-
<form action="/write_post/{{ $project->id }}" method="post">
16-
<div class="form-group">
17-
<textarea class="form-control" name="title" id="new-post" rows="1" placeholder="Your Post's Title"></textarea>
18-
<textarea class="form-control" name="summary" id="new-post" rows="2" placeholder="Your Post's Summary or Short Description"></textarea>
19-
<textarea name="info" id="new-post-info" rows="20"></textarea>
20-
</div>
21-
<button type="submit" class="btn btn-primary">Create Post</button>
22-
<input type="hidden" value="{{ Session::token() }}" name="_token">
23-
{{ csrf_field() }}
24-
</form>
17+
18+
<div id="admin_manage_members" style="display: none;">
19+
<div class="panel panel-default" style="padding: 10px; width:350px; height:430px; ">
20+
<h4>Members List</h4>
21+
<div style="overflow-y: scroll; width:330px; height:370px">
22+
<table class="table table-hover table-striped">
23+
<?php
24+
$users = \DB::select('select * from user_projects where project_id = :id', ['id' => $project->id]);
25+
?>
26+
@foreach($users as $user)
27+
<tr>
28+
<td style="width:50%">Joe{{$user->user_name}}</td>
29+
<td style="width:20%">Member{{$user->level}}</td>
30+
<td style="width:30%">
31+
<a href="/promote/{{$user->user_id}}/{{$user->project_id}}" style="width:30%">
32+
P
33+
</a>
34+
<a href="/demote/{{$user->user_id}}/{{$user->project_id}}" style="width:30%">
35+
D
36+
</a>
37+
@if($user->user_id != Auth::user()->id) // So we can never delete all from a project by mistake
38+
<a href="/remove/{{$user->user_id}}/{{$user->project_id}}" style="width:30%">
39+
X
40+
</a>
41+
@endif
42+
</td>
43+
</tr>
44+
@endforeach
45+
</table>
46+
</div>
47+
</div>
48+
</div>
49+
50+
51+
<div id="admin_new_post" style="display: none;">
52+
<script type="text/javascript" src="{{ asset('/js/tinymce/tinymce.min.js') }}"></script>
53+
<script type="text/javascript">
54+
tinymce.init({
55+
selector : "#new-post-info",
56+
plugins : ["advlist autolink lists link image charmap print preview anchor", "searchreplace visualblocks code fullscreen", "insertdatetime media table contextmenu paste"],
57+
toolbar : "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
58+
});
59+
</script>
60+
61+
<form action="/write_post/{{ $project->id }}" method="post">
62+
<div class="form-group">
63+
<textarea class="form-control" name="title" id="new-post" rows="1" placeholder="Your Post's Title"></textarea>
64+
<textarea class="form-control" name="summary" id="new-post" rows="2" placeholder="Your Post's Summary or Short Description"></textarea>
65+
<textarea name="info" id="new-post-info" rows="20"></textarea>
66+
</div>
67+
<button type="submit" class="btn btn-primary">Create Post</button>
68+
<input type="hidden" value="{{ Session::token() }}" name="_token">
69+
{{ csrf_field() }}
70+
</form>
71+
</div>
2572
@endsection

routes/web.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818

1919
Route::get('project/{id}', 'ProjectController@project'); //Route for individual project
2020
Route::get('project_library', 'ProjectController@projects'); //Route for project library
21+
2122
Route::get('project_admin/{id}', 'ProjectController@admin'); //Route for project admin page
23+
Route::get('/promote/{user_id}/{project_id}', 'ProjectController@promote');
24+
Route::get('/demote/{user_id}/{project_id}', 'ProjectController@demote');
25+
Route::get('/remove/{user_id}/{project_id}', 'ProjectController@removeMember');
2226

2327
Route::get('user/{id}', 'UserController@user')->middleware('auth'); //Route for individual project
2428
Route::get('members/{id}', 'User_ProjectsController@project_members')->middleware('auth'); //Route for project members
@@ -31,7 +35,7 @@
3135

3236
Route::get('/new_project', function () { //view for creating new project
3337
return view('new_project');
34-
});
38+
})->middleware('auth');
3539

3640
Route::post('/createproject', [ //new project creation
3741
'uses' => 'ProjectController@projectCreateProject',

0 commit comments

Comments
 (0)