Skip to content

Commit 1aae1a7

Browse files
Update header menu, show delete button on details and edit page, redirect dependent on chosen action after creating/updating a model (#95)
* Update header menu * Add delete button on details and edit page for all models * Redirect to index/details page resp. form after a model has been created / updated
1 parent b0fc6e8 commit 1aae1a7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+321
-163
lines changed

app/Http/Controllers/BookingOptionController.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,13 @@ public function store(Event $event, BookingOptionRequest $request): RedirectResp
3838
$bookingOption->event()->associate($event);
3939
if ($bookingOption->fillAndSave($request->validated())) {
4040
Session::flash('success', __('Created successfully.'));
41-
return redirect(route('booking-options.edit', [$event, $bookingOption]));
4241
}
4342

44-
return back();
43+
return $this->actionAwareRedirect(
44+
$request,
45+
route('events.show', $event),
46+
createRoute: route('booking-options.create', $event),
47+
);
4548
}
4649

4750
public function edit(Event $event, BookingOption $bookingOption): View
@@ -63,6 +66,10 @@ public function update(Event $event, BookingOption $bookingOption, BookingOption
6366
}
6467

6568
// Slug may have changed, so we need to generate the URL here!
66-
return redirect(route('booking-options.edit', [$event, $bookingOption]));
69+
return $this->actionAwareRedirect(
70+
$request,
71+
route('events.show', $event),
72+
editRoute: route('booking-options.edit', [$event, $bookingOption]),
73+
);
6774
}
6875
}

app/Http/Controllers/Controller.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Controller extends BaseController
1717

1818
protected function actionAwareRedirect(
1919
FormRequest $request,
20-
string $indexRoute,
20+
string $defaultRoute,
2121
?string $createRoute = null,
2222
?string $editRoute = null
2323
): RedirectResponse {
@@ -29,6 +29,6 @@ protected function actionAwareRedirect(
2929
return redirect($editRoute);
3030
}
3131

32-
return redirect($indexRoute);
32+
return redirect($defaultRoute);
3333
}
3434
}

app/Http/Controllers/DocumentController.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,11 @@ public function update(DocumentRequest $request, Document $document): RedirectRe
105105
Session::flash('success', __('Saved successfully.'));
106106
}
107107

108-
return back();
108+
return $this->actionAwareRedirect(
109+
$request,
110+
route('documents.show', $document),
111+
editRoute: route('documents.edit', $document)
112+
);
109113
}
110114

111115
public function destroy(Document $document): RedirectResponse

app/Http/Controllers/EventController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,11 @@ public function store(EventRequest $request): RedirectResponse
9696
/** @phpstan-ignore argument.type */
9797
if ($event->fillAndSave($request->validated())) {
9898
Session::flash('success', __(':name created successfully.', ['name' => $event->name]));
99-
return redirect(route('events.edit', $event));
99+
return $this->actionAwareRedirect(
100+
$request,
101+
route('events.show', $event),
102+
createRoute: route('events.create')
103+
);
100104
}
101105

102106
return back();
@@ -122,7 +126,11 @@ public function update(Event $event, EventRequest $request): RedirectResponse
122126
}
123127

124128
// Slug may have changed, so we need to generate the URL here!
125-
return redirect(route('events.edit', $event));
129+
return $this->actionAwareRedirect(
130+
$request,
131+
route('events.show', $event),
132+
editRoute: route('events.edit', $event)
133+
);
126134
}
127135

128136
public function destroy(Event $event): RedirectResponse

app/Http/Controllers/EventSeriesController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@ public function store(EventSeriesRequest $request): RedirectResponse
9292
/** @phpstan-ignore argument.type */
9393
if ($eventSeries->fillAndSave($request->validated())) {
9494
Session::flash('success', __(':name created successfully.', ['name' => $eventSeries->name]));
95-
return redirect(route('event-series.edit', $eventSeries));
95+
return $this->actionAwareRedirect(
96+
$request,
97+
route('event-series.show', $eventSeries),
98+
createRoute: route('event-series.create')
99+
);
96100
}
97101

98102
return back();
@@ -123,7 +127,11 @@ public function update(EventSeries $eventSeries, EventSeriesRequest $request): R
123127
}
124128

125129
// Slug may have changed, so we need to generate the URL here!
126-
return redirect(route('event-series.edit', $eventSeries));
130+
return $this->actionAwareRedirect(
131+
$request,
132+
route('event-series.show', $eventSeries),
133+
editRoute: route('event-series.edit', $eventSeries)
134+
);
127135
}
128136

129137
public function destroy(EventSeries $eventSeries): RedirectResponse

app/Http/Controllers/LocationController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ public function store(LocationRequest $request): RedirectResponse
4545
$location = new Location();
4646
if ($location->fillAndSave($request->validated())) {
4747
Session::flash('success', __(':name created successfully.', ['name' => $location->nameOrAddress]));
48-
return redirect(route('locations.edit', $location));
48+
return $this->actionAwareRedirect(
49+
$request,
50+
route('locations.index'),
51+
createRoute: route('locations.create')
52+
);
4953
}
5054

5155
return back();
@@ -68,7 +72,11 @@ public function update(Location $location, LocationRequest $request): RedirectRe
6872
Session::flash('success', __(':name saved successfully.', ['name' => $location->nameOrAddress]));
6973
}
7074

71-
return back();
75+
return $this->actionAwareRedirect(
76+
$request,
77+
route('locations.index'),
78+
editRoute: route('locations.edit', $location)
79+
);
7280
}
7381

7482
public function destroy(Location $location): RedirectResponse

app/Http/Controllers/MaterialController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ public function store(MaterialRequest $request): RedirectResponse
4040
/** @phpstan-ignore argument.type */
4141
if ($material->fillAndSave($request->validated())) {
4242
Session::flash('success', __(':name created successfully.', ['name' => $material->name]));
43-
return redirect(route('materials.edit', $material));
43+
return $this->actionAwareRedirect(
44+
$request,
45+
route('materials.show', $material),
46+
createRoute: route('materials.create')
47+
);
4448
}
4549

4650
return back();
@@ -74,7 +78,11 @@ public function update(MaterialRequest $request, Material $material): RedirectRe
7478
Session::flash('success', __(':name saved successfully.', ['name' => $material->name]));
7579
}
7680

77-
return back();
81+
return $this->actionAwareRedirect(
82+
$request,
83+
route('materials.show', $material),
84+
editRoute: route('materials.edit', $material)
85+
);
7886
}
7987

8088
public function destroy(Material $material): RedirectResponse

app/Http/Controllers/OrganizationController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ public function store(OrganizationRequest $request): RedirectResponse
5050
/** @phpstan-ignore argument.type */
5151
if ($organization->fillAndSave($request->validated())) {
5252
Session::flash('success', __(':name created successfully.', ['name' => $organization->name]));
53-
return redirect(route('organizations.edit', $organization));
53+
return $this->actionAwareRedirect(
54+
$request,
55+
route('organizations.show', $organization),
56+
createRoute: route('organizations.create')
57+
);
5458
}
5559

5660
return back();
@@ -88,7 +92,11 @@ public function update(Organization $organization, OrganizationRequest $request)
8892
}
8993

9094
// Slug may have changed, so we need to generate the URL here!
91-
return redirect(route('organizations.edit', $organization));
95+
return $this->actionAwareRedirect(
96+
$request,
97+
route('organizations.show', $organization),
98+
editRoute: route('organizations.edit', $organization)
99+
);
92100
}
93101

94102
public function destroy(Organization $organization): RedirectResponse

app/Http/Controllers/StorageLocationController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ public function store(StorageLocationRequest $request): RedirectResponse
4242
/** @phpstan-ignore argument.type */
4343
if ($storageLocation->fillAndSave($request->validated())) {
4444
Session::flash('success', __(':name created successfully.', ['name' => $storageLocation->name]));
45-
return redirect(route('storage-locations.edit', $storageLocation));
45+
return $this->actionAwareRedirect(
46+
$request,
47+
route('storage-locations.show', $storageLocation),
48+
createRoute: route('storage-locations.create')
49+
);
4650
}
4751

4852
return back();
@@ -75,7 +79,11 @@ public function update(StorageLocationRequest $request, StorageLocation $storage
7579
Session::flash('success', __(':name saved successfully.', ['name' => $storageLocation->name]));
7680
}
7781

78-
return back();
82+
return $this->actionAwareRedirect(
83+
$request,
84+
route('storage-locations.show', $storageLocation),
85+
editRoute: route('storage-locations.edit', $storageLocation)
86+
);
7987
}
8088

8189
public function destroy(StorageLocation $storageLocation): RedirectResponse

app/Http/Controllers/UserController.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ public function store(UserRequest $request): RedirectResponse
5454
if ($request->validated('send_notification')) {
5555
$user->sendAccountCreatedNotification();
5656
}
57-
return $this->actionAwareRedirect($request, route('users.index'), route('users.create'));
57+
return $this->actionAwareRedirect(
58+
$request,
59+
route('users.show', $user),
60+
createRoute: route('users.create')
61+
);
5862
}
5963

6064
return back();
@@ -85,10 +89,13 @@ public function update(User $user, UserRequest $request): RedirectResponse
8589

8690
if ($user->fillAndSave($request->validated())) {
8791
Session::flash('success', __(':name saved successfully.', ['name' => $user->name]));
88-
return redirect(route('users.index'));
8992
}
9093

91-
return back();
94+
return $this->actionAwareRedirect(
95+
$request,
96+
route('users.show', $user),
97+
editRoute: route('users.edit', $user)
98+
);
9299
}
93100

94101
public function destroy(User $user): RedirectResponse

app/Http/Controllers/UserRoleController.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ public function store(UserRoleRequest $request): RedirectResponse
4040
$userRole = new UserRole();
4141
if ($userRole->fillAndSave($request->validated())) {
4242
Session::flash('success', __(':name created successfully.', ['name' => $userRole->name]));
43-
return $this->actionAwareRedirect($request, route('user-roles.index'), route('user-roles.create'));
43+
return $this->actionAwareRedirect(
44+
$request,
45+
route('user-roles.show', $userRole),
46+
createRoute: route('user-roles.create')
47+
);
4448
}
4549

4650
return back();
@@ -70,10 +74,13 @@ public function update(UserRole $userRole, UserRoleRequest $request): RedirectRe
7074

7175
if ($userRole->fillAndSave($request->validated())) {
7276
Session::flash('success', __(':name saved successfully.', ['name' => $userRole->name]));
73-
return redirect(route('user-roles.index'));
7477
}
7578

76-
return back();
79+
return $this->actionAwareRedirect(
80+
$request,
81+
route('user-roles.show', $userRole),
82+
editRoute: route('user-roles.edit', $userRole)
83+
);
7784
}
7885

7986
public function destroy(UserRole $userRole): RedirectResponse

lang/de.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"Already paid": "Bereits bezahlt",
6060
"Already registered?": "Bereits registriert?",
6161
"and back to overview": "und zurück zur Übersicht",
62+
"and continue editing": "and weiter bearbeiten",
6263
"and create more": "und weiter erstellen",
6364
"API": "API",
6465
"API documentation": "API-Dokumentation",

resources/views/booking_options/booking_option_form.blade.php

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,8 @@
9090
</div>
9191
</div>
9292

93-
<x-bs::button.group>
94-
<x-button.save>
95-
@isset($bookingOption)
96-
{{ __( 'Save' ) }}
97-
@else
98-
{{ __('Create') }}
99-
@endisset
100-
</x-button.save>
101-
<x-button.cancel href="{{ route('events.show', $event) }}"/>
102-
</x-bs::button.group>
93+
<x-button.group-save :show-create="!isset($bookingOption)"
94+
:index-route="route('events.show', $event)"/>
10395
</x-bs::form>
10496

10597
<x-text.timestamp :model="$bookingOption ?? null"/>

resources/views/components/button/group-save.blade.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,18 @@
1313
<i class="fa fa-fw fa-save"></i> {{ __('Save') }}
1414
<span class="d-block small"><i class="fa fa-fw fa-list"></i> {{ __('and back to overview') }}</span>
1515
</x-bs::button>
16-
@if($showCreate && !$disableSave)
17-
<x-bs::button name="action" value="create" variant="secondary">
18-
<i class="fa fa-fw fa-save"></i> {{ __('Save') }}
19-
<span class="d-block small"><i class="fa fa-fw fa-plus"></i> {{ __('and create more') }}</span>
20-
</x-bs::button>
16+
@if(!$disableSave)
17+
@if($showCreate)
18+
<x-bs::button name="action" value="create" variant="secondary">
19+
<i class="fa fa-fw fa-save"></i> {{ __('Save') }}
20+
<span class="d-block small"><i class="fa fa-fw fa-plus"></i> {{ __('and create more') }}</span>
21+
</x-bs::button>
22+
@else
23+
<x-bs::button name="action" value="edit" variant="secondary">
24+
<i class="fa fa-fw fa-save"></i> {{ __('Save') }}
25+
<span class="d-block small"><i class="fa fa-fw fa-plus"></i> {{ __('and continue editing') }}</span>
26+
</x-bs::button>
27+
@endif
2128
@endif
2229
@isset($indexRoute)
2330
<x-bs::button.link variant="danger" href="{{ $indexRoute }}">

resources/views/components/form/delete-modal.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
:close-button="false" :static-backdrop="true">
1212
@if(isset($hint))
1313
<x-bs::form.field id="hint-checkbox-{{ $id }}" name="checkbox[{{ $id }}]"
14-
class="button-checkbox" check-container-class="mb-3 small"
14+
class="button-checkbox" check-container-class="mb-3 small text-wrap"
1515
type="checkbox" :options="[$hint]"
1616
data-target="delete-button-{{$id}}"/>
1717
@once

resources/views/documents/document_form.blade.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,8 @@
3333
@include('documents.shared.document_form_fields', [
3434
'document' => $document,
3535
])
36-
<x-bs::button.group>
37-
<x-button.save>{{ __( 'Save' ) }}</x-button.save>
38-
<x-button.cancel href="{{ route('events.show', $document->reference->getRoute()) }}"/>
39-
</x-bs::button.group>
36+
37+
<x-button.group-save :index-route="$document->reference->getRoute()"/>
4038
</x-bs::form>
4139

4240
<div class="my-5">

resources/views/event_series/event_series_form.blade.php

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@
2525
@include('event_series.shared.event_series_breadcrumbs')
2626
@endsection
2727

28+
@section('headline-buttons')
29+
@isset($eventSeries)
30+
@can('forceDelete', $eventSeries)
31+
<x-form.delete-modal :id="$eventSeries->id"
32+
:name="$eventSeries->name"
33+
:route="route('event-series.destroy', $eventSeries)"/>
34+
@endcan
35+
@endisset
36+
@endsection
37+
2838
@section('content')
2939
<div class="row">
3040
<div class="col-12 col-md-6">
@@ -61,16 +71,8 @@
6171
])
6272
</section>
6373

64-
<x-bs::button.group>
65-
<x-button.save>
66-
@isset($eventSeries)
67-
{{ __( 'Save' ) }}
68-
@else
69-
{{ __('Create') }}
70-
@endisset
71-
</x-button.save>
72-
<x-button.cancel href="{{ route('event-series.index') }}"/>
73-
</x-bs::button.group>
74+
<x-button.group-save :show-create="!isset($eventSeries)"
75+
:index-route="route('event-series.index')"/>
7476
</x-bs::form>
7577
</div>
7678

resources/views/event_series/event_series_show.blade.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
@can('update', $eventSeries)
2525
<x-button.edit href="{{ route('event-series.edit', $eventSeries) }}"/>
2626
@endcan
27+
@can('forceDelete', $eventSeries)
28+
<x-form.delete-modal :id="$eventSeries->id"
29+
:name="$eventSeries->name"
30+
:route="route('event-series.destroy', $eventSeries)"/>
31+
@endcan
2732
@endsection
2833

2934
@section('content')

0 commit comments

Comments
 (0)