Added more redirects

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2024-07-26 11:27:36 +01:00
parent b6d9f736e3
commit 759ab78f80
13 changed files with 173 additions and 22 deletions

View file

@ -1484,7 +1484,7 @@ class Helper
}
static public function getRedirectOption($request, $id, $table, $asset_id = null)
static public function getRedirectOption($request, $id, $table, $item_id = null)
{
$redirect_option = Session::get('redirect_option');
@ -1495,6 +1495,16 @@ class Helper
switch ($table) {
case "Assets":
return route('hardware.index');
case "Users":
return route('users.index');
case "Licenses":
return route('licenses.index');
case "Accessories":
return route('accessories.index');
case "Components":
return route('components.index');
case "Consumables":
return route('consumables.index');
}
}
@ -1502,7 +1512,17 @@ class Helper
if ($redirect_option == 'item') {
switch ($table) {
case "Assets":
return route('hardware.show', $id ?? $asset_id);
return route('hardware.show', $id ?? $item_id);
case "Users":
return route('users.show', $id ?? $item_id);
case "Licenses":
return route('licenses.show', $id ?? $item_id);
case "Accessories":
return route('accessories.show', $id ?? $item_id);
case "Components":
return route('components.show', $id ?? $item_id);
case "Consumables":
return route('consumables.show', $id ?? $item_id);
}
}

View file

@ -79,10 +79,11 @@ class AccessoriesController extends Controller
$accessory = $request->handleImages($accessory);
session()->put(['redirect_option' => $request->get('redirect_option')]);
// Was the accessory created?
if ($accessory->save()) {
// Redirect to the new accessory page
return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.create.success'));
return redirect()->to(Helper::getRedirectOption($request, $accessory->id, 'Accessories'))->with('success', trans('admin/accessories/message.create.success'));
}
return redirect()->back()->withInput()->withErrors($accessory->getErrors());
@ -176,9 +177,10 @@ class AccessoriesController extends Controller
$accessory = $request->handleImages($accessory);
// Was the accessory updated?
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($accessory->save()) {
return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.update.success'));
return redirect()->to(Helper::getRedirectOption($request, $accessory->id, 'Accessories'))->with('success', trans('admin/accessories/message.update.success'));
}
} else {
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));

View file

@ -86,8 +86,10 @@ class ComponentsController extends Controller
$component = $request->handleImages($component);
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($component->save()) {
return redirect()->route('components.index')->with('success', trans('admin/components/message.create.success'));
return redirect()->to(Helper::getRedirectOption($request, $component->id, 'Components'))->with('success', trans('admin/components/message.create.success'));
}
return redirect()->back()->withInput()->withErrors($component->getErrors());
@ -160,8 +162,10 @@ class ComponentsController extends Controller
$component = $request->handleImages($component);
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($component->save()) {
return redirect()->route('components.index')->with('success', trans('admin/components/message.update.success'));
return redirect()->to(Helper::getRedirectOption($request, $component->id, 'Components'))->with('success', trans('admin/components/message.update.success'));
}
return redirect()->back()->withInput()->withErrors($component->getErrors());

View file

@ -87,8 +87,10 @@ class ConsumablesController extends Controller
$consumable = $request->handleImages($consumable);
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($consumable->save()) {
return redirect()->route('consumables.index')->with('success', trans('admin/consumables/message.create.success'));
return redirect()->to(Helper::getRedirectOption($request, $consumable->id, 'Consumables'))->with('success', trans('admin/consumables/message.create.success'));
}
return redirect()->back()->withInput()->withErrors($consumable->getErrors());
@ -160,8 +162,10 @@ class ConsumablesController extends Controller
$consumable = $request->handleImages($consumable);
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($consumable->save()) {
return redirect()->route('consumables.index')->with('success', trans('admin/consumables/message.update.success'));
return redirect()->to(Helper::getRedirectOption($request, $consumable->id, 'Consumables'))->with('success', trans('admin/consumables/message.update.success'));
}
return redirect()->back()->withInput()->withErrors($consumable->getErrors());

View file

@ -102,8 +102,10 @@ class LicensesController extends Controller
$license->user_id = Auth::id();
$license->min_amt = $request->input('min_amt');
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($license->save()) {
return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.create.success'));
return redirect()->to(Helper::getRedirectOption($request, $license->id, 'Licenses'))->with('success', trans('admin/licenses/message.create.success'));
}
return redirect()->back()->withInput()->withErrors($license->getErrors());
@ -180,8 +182,10 @@ class LicensesController extends Controller
$license->category_id = $request->input('category_id');
$license->min_amt = $request->input('min_amt');
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($license->save()) {
return redirect()->route('licenses.show', ['license' => $licenseId])->with('success', trans('admin/licenses/message.update.success'));
return redirect()->to(Helper::getRedirectOption($request, $license->id, 'Licenses'))->with('success', trans('admin/licenses/message.update.success'));
}
// If we can't adjust the number of seats, the error is flashed to the session by the event handler in License.php
return redirect()->back()->withInput()->withErrors($license->getErrors());

View file

@ -133,6 +133,8 @@ class UsersController extends Controller
// we have to invoke the
app(ImageUploadRequest::class)->handleImages($user, 600, 'avatar', 'avatars', 'avatar');
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($user->save()) {
if ($request->filled('groups')) {
$user->groups()->sync($request->input('groups'));
@ -152,7 +154,7 @@ class UsersController extends Controller
$user->notify(new WelcomeNotification($data));
}
return redirect()->route('users.index')->with('success', trans('admin/users/message.success.create'));
return redirect()->to(Helper::getRedirectOption($request, $user->id, 'Users'))->with('success', trans('admin/users/message.success.create'));
}
return redirect()->back()->withInput()->withErrors($user->getErrors());
@ -309,10 +311,11 @@ class UsersController extends Controller
// Handle uploaded avatar
app(ImageUploadRequest::class)->handleImages($user, 600, 'avatar', 'avatars', 'avatar');
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($user->save()) {
// Redirect to the user page
return redirect()->route('users.index')
return redirect()->to(Helper::getRedirectOption($request, $user->id, 'Users'))
->with('success', trans('admin/users/message.success.update'));
}

View file

@ -4,6 +4,11 @@
'helpPosition' => 'right',
'helpText' => trans('help.accessories'),
'formAction' => (isset($item->id)) ? route('accessories.update', ['accessory' => $item->id]) : route('accessories.store'),
'index_route' => 'accessories.index',
'options' => [
'index' => trans('admin/hardware/form.redirect_to_all', ['type' => 'accessories']),
'item' => trans('admin/hardware/form.redirect_to_type', ['type' => trans('general.accessory')]),
]
])
{{-- Page content --}}

View file

@ -4,6 +4,11 @@
'helpPosition' => 'right',
'helpText' => trans('help.components'),
'formAction' => (isset($item->id)) ? route('components.update', ['component' => $item->id]) : route('components.store'),
'index_route' => 'components.index',
'options' => [
'index' => trans('admin/hardware/form.redirect_to_all', ['type' => 'components']),
'item' => trans('admin/hardware/form.redirect_to_type', ['type' => trans('general.component')]),
]
])

View file

@ -4,6 +4,11 @@
'helpPosition' => 'right',
'helpText' => trans('help.consumables'),
'formAction' => (isset($item->id)) ? route('consumables.update', ['consumable' => $item->id]) : route('consumables.store'),
'index_route' => 'consumables.index',
'options' => [
'index' => trans('admin/hardware/form.redirect_to_all', ['type' => 'consumables']),
'item' => trans('admin/hardware/form.redirect_to_type', ['type' => trans('general.consumable')]),
]
])
{{-- Page content --}}
@section('inputFields')

View file

@ -3,10 +3,10 @@
'createText' => trans('admin/hardware/form.create'),
'updateText' => trans('admin/hardware/form.update'),
'topSubmit' => true,
'index_route' => 'hardware.index',
'helpText' => trans('help.assets'),
'helpPosition' => 'right',
'formAction' => ($item->id) ? route('hardware.update', ['hardware' => $item->id]) : route('hardware.store'),
'index_route' => 'hardware.index',
'options' => [
'index' => trans('admin/hardware/form.redirect_to_all', ['type' => 'assets']),
'item' => trans('admin/hardware/form.redirect_to_type', ['type' => trans('general.asset')]),

View file

@ -3,6 +3,11 @@
'updateText' => trans('admin/licenses/form.update'),
'topSubmit' => true,
'formAction' => ($item->id) ? route('licenses.update', ['license' => $item->id]) : route('licenses.store'),
'index_route' => 'licenses.index',
'options' => [
'index' => trans('admin/hardware/form.redirect_to_all', ['type' => 'licenses']),
'item' => trans('admin/hardware/form.redirect_to_type', ['type' => trans('general.license')]),
]
])
{{-- Page content --}}

View file

@ -596,9 +596,14 @@
</table>
</div><!-- /.tab-pane -->
</div><!-- /.tab-content -->
<div class="box-footer text-right">
<button type="submit" accesskey="s" class="btn btn-primary"><i class="fas fa-check icon-white" aria-hidden="true"></i> {{ trans('general.save') }}</button>
</div>
<x-redirect_submit_options
index_route="users.index"
:button_label="trans('general.save')"
:options="[
'index' => trans('admin/hardware/form.redirect_to_all', ['type' => 'users']),
'item' => trans('admin/hardware/form.redirect_to_type', ['type' => trans('general.user')]),
]"
/>
</div><!-- nav-tabs-custom -->
</form>
</div> <!--/col-md-8-->

View file

@ -31,7 +31,7 @@ class HelperTest extends TestCase
public function testGetRedirectOptionMethod()
{
$test_data = [
'Option 2: redirect for user assigned to ' => [
'Option target: redirect for user assigned to ' => [
'request' =>(object) ['assigned_user' => 22],
'id' => 1,
'checkout_to_type' => 'user',
@ -39,7 +39,7 @@ class HelperTest extends TestCase
'table' => 'Assets',
'route' => route('users.show', 22),
],
'Option 2: redirect location assigned to ' => [
'Option target: redirect location assigned to ' => [
'request' =>(object) ['assigned_location' => 10],
'id' => 2,
'checkout_to_type' => 'location',
@ -47,7 +47,7 @@ class HelperTest extends TestCase
'table' => 'Locations',
'route' => route('locations.show', 10),
],
'Option 2: redirect back to asset assigned to ' => [
'Option target: redirect back to asset assigned to ' => [
'request' =>(object) ['assigned_asset' => 101],
'id' => 3,
'checkout_to_type' => 'asset',
@ -55,7 +55,7 @@ class HelperTest extends TestCase
'table' => 'Assets',
'route' => route('hardware.show', 101),
],
'Option 1: redirect back to asset ' => [
'Option item: redirect back to asset ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => 999,
'checkout_to_type' => null,
@ -63,7 +63,7 @@ class HelperTest extends TestCase
'table' => 'Assets',
'route' => route('hardware.show', 999),
],
'Option 0: redirect back to index ' => [
'Option index: redirect back to asset index ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => null,
'checkout_to_type' => null,
@ -71,6 +71,95 @@ class HelperTest extends TestCase
'table' => 'Assets',
'route' => route('hardware.index'),
],
'Option item: redirect back to user ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => 999,
'checkout_to_type' => null,
'redirect_option' => 'item',
'table' => 'Users',
'route' => route('users.show', 999),
],
'Option index: redirect back to user index ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => null,
'checkout_to_type' => null,
'redirect_option' => 'index',
'table' => 'Users',
'route' => route('users.index'),
],
'Option item: redirect back to license ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => 999,
'checkout_to_type' => null,
'redirect_option' => 'item',
'table' => 'Licenses',
'route' => route('licenses.show', 999),
],
'Option index: redirect back to license index ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => null,
'checkout_to_type' => null,
'redirect_option' => 'index',
'table' => 'Licenses',
'route' => route('licenses.index'),
],
'Option item: redirect back to accessory list ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => 999,
'checkout_to_type' => null,
'redirect_option' => 'item',
'table' => 'Accessories',
'route' => route('accessories.show', 999),
],
'Option index: redirect back to accessory index ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => null,
'checkout_to_type' => null,
'redirect_option' => 'index',
'table' => 'Accessories',
'route' => route('accessories.index'),
],
'Option item: redirect back to consumable ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => 999,
'checkout_to_type' => null,
'redirect_option' => 'item',
'table' => 'Consumables',
'route' => route('consumables.show', 999),
],
'Option index: redirect back to consumables index ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => null,
'checkout_to_type' => null,
'redirect_option' => 'index',
'table' => 'Consumables',
'route' => route('consumables.index'),
],
'Option item: redirect back to component ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => 999,
'checkout_to_type' => null,
'redirect_option' => 'item',
'table' => 'Components',
'route' => route('components.show', 999),
],
'Option index: redirect back to component index ' => [
'request' =>(object) ['assigned_asset' => null],
'id' => null,
'checkout_to_type' => null,
'redirect_option' => 'index',
'table' => 'Components',
'route' => route('components.index'),
],
];
foreach ($test_data as $scenario => $data ) {