Browse Source

User can edit a project issue

pull/37/head
Nafies Luthfi 7 years ago
parent
commit
9cfc4754e0
  1. 20
      app/Http/Controllers/Projects/IssueController.php
  2. 23
      resources/views/projects/issues/edit.blade.php
  3. 3
      resources/views/projects/issues/show.blade.php
  4. 2
      routes/web/projects.php
  5. 6
      tests/Feature/Projects/ProjectIssuesTest.php

20
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]);
}
}

23
resources/views/projects/issues/edit.blade.php

@ -0,0 +1,23 @@
@extends('layouts.project')
@section('subtitle', __('issue.update'))
@section('content-project')
<div class="row">
<div class="col-sm-6 col-sm-offset-2">
{{ Form::model($issue, ['route' => ['projects.issues.update', $project, $issue], 'method' => 'patch']) }}
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">{{ __('issue.update') }}</h3></div>
<div class="panel-body">
{!! FormField::text('title', ['label' => __('issue.title')]) !!}
{!! FormField::textarea('body', ['label' => __('issue.body')]) !!}
</div>
<div class="panel-footer">
{{ Form::submit(__('issue.update'), ['class' => 'btn btn-success']) }}
{{ link_to_route('projects.issues.show', __('app.cancel'), [$project, $issue], ['class' => 'btn btn-default']) }}
</div>
</div>
{{ Form::close() }}
</div>
</div>
@endsection

3
resources/views/projects/issues/show.blade.php

@ -14,6 +14,9 @@
<tr><th>{{ __('issue.body') }}</th><td>{{ $issue->body }}</td></tr>
</tbody>
</table>
<div class="panel-footer">
{{ link_to_route('projects.issues.edit', __('issue.edit'), [$project, $issue], ['id' => 'edit-issue-'.$issue->id, 'class' => 'btn btn-warning']) }}
</div>
</div>
</div>
</div>

2
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

6
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', [

Loading…
Cancel
Save