diff --git a/app/Http/Controllers/Projects/IssueController.php b/app/Http/Controllers/Projects/IssueController.php index d0f1e9d..16147d8 100644 --- a/app/Http/Controllers/Projects/IssueController.php +++ b/app/Http/Controllers/Projects/IssueController.php @@ -42,4 +42,24 @@ class IssueController extends Controller { return view('projects.issues.show', compact('project', 'issue')); } + + public function edit(Project $project, Issue $issue) + { + return view('projects.issues.edit', compact('project', 'issue')); + } + + public function update(Request $request, Project $project, Issue $issue) + { + $issueData = $request->validate([ + 'title' => 'required|max:60', + 'body' => 'required|max:255', + ]); + $issue->title = $issueData['title']; + $issue->body = $issueData['body']; + $issue->save(); + + flash(__('issue.updated'), 'success'); + + return redirect()->route('projects.issues.show', [$project, $issue]); + } } diff --git a/resources/views/projects/issues/edit.blade.php b/resources/views/projects/issues/edit.blade.php new file mode 100755 index 0000000..cbd2194 --- /dev/null +++ b/resources/views/projects/issues/edit.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.project') + +@section('subtitle', __('issue.update')) + +@section('content-project') +
+
+ {{ Form::model($issue, ['route' => ['projects.issues.update', $project, $issue], 'method' => 'patch']) }} +
+

{{ __('issue.update') }}

+
+ {!! FormField::text('title', ['label' => __('issue.title')]) !!} + {!! FormField::textarea('body', ['label' => __('issue.body')]) !!} +
+ +
+ {{ Form::close() }} +
+
+@endsection diff --git a/resources/views/projects/issues/show.blade.php b/resources/views/projects/issues/show.blade.php index a632104..4a8f716 100755 --- a/resources/views/projects/issues/show.blade.php +++ b/resources/views/projects/issues/show.blade.php @@ -14,6 +14,9 @@ {{ __('issue.body') }}{{ $issue->body }} + diff --git a/routes/web/projects.php b/routes/web/projects.php index fe5e331..53b6af9 100644 --- a/routes/web/projects.php +++ b/routes/web/projects.php @@ -52,6 +52,8 @@ Route::group(['middleware' => ['auth'], 'namespace' => 'Projects'], function () Route::get('projects/{project}/issues/create', 'IssueController@create')->name('projects.issues.create'); Route::post('projects/{project}/issues', 'IssueController@store')->name('projects.issues.store'); Route::get('projects/{project}/issues/{issue}', 'IssueController@show')->name('projects.issues.show'); + Route::get('projects/{project}/issues/{issue}/edit', 'IssueController@edit')->name('projects.issues.edit'); + Route::patch('projects/{project}/issues/{issue}', 'IssueController@update')->name('projects.issues.update'); /* * Tasks Routes diff --git a/tests/Feature/Projects/ProjectIssuesTest.php b/tests/Feature/Projects/ProjectIssuesTest.php index 83b5544..7ae6f45 100644 --- a/tests/Feature/Projects/ProjectIssuesTest.php +++ b/tests/Feature/Projects/ProjectIssuesTest.php @@ -79,17 +79,17 @@ class ProjectIssuesTest extends TestCase 'body' => 'This is a project issue body.', ]); - $this->visitRoute('projects.issues.index', $project); + $this->visitRoute('projects.issues.show', [$project, $issue]); $this->seeElement('a', ['id' => 'edit-issue-'.$issue->id]); $this->click('edit-issue-'.$issue->id); - $this->seeRouteIs('projects.issues.index', [$project, 'action' => 'issue-edit', 'issue_id' => $issue->id]); + $this->seeRouteIs('projects.issues.edit', [$project, $issue]); $this->submitForm(__('issue.update'), [ 'title' => 'First Issue.', 'body' => 'This is a project issue body.', ]); - $this->seePageIs(route('projects.issues.index', $project)); + $this->seePageIs(route('projects.issues.show', [$project, $issue])); $this->see(__('issue.updated')); $this->seeInDatabase('issues', [