Skip to content

Commit 51123b4

Browse files
committed
Return to last tab after a setting update or delete
1 parent f7f52da commit 51123b4

2 files changed

Lines changed: 44 additions & 19 deletions

File tree

src/Controllers/ConfigurationsController.php

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,39 +37,58 @@ public function index()
3737
$editor_section = ['editor_enabled', 'editor_html_highlighter', 'codemirror_theme',
3838
'summernote_locale', 'summernote_options_json_file', 'summernote_options_user', 'purifier_config', ];
3939

40+
$last_configuration = session()->has('last_configuration') ? session('last_configuration') : '';
41+
4042
// Split them into configurations sections for tabs
4143
foreach ($configurations as $config_item) {
4244
//trim long values (ex serialised arrays)
4345
$config_item->value = $config_item->getShortContent(25, 'value');
4446
$config_item->default = $config_item->getShortContent(25, 'default');
4547

4648
if (in_array($config_item->slug, $init_section)) {
47-
$configurations_by_sections['init'][] = $config_item;
49+
$section = 'init';
4850

4951
} elseif (in_array($config_item->slug, $table_section)) {
50-
$configurations_by_sections['table'][] = $config_item;
52+
$section = 'table';
5153

5254
} elseif (in_array($config_item->slug, $features_section)) {
53-
$configurations_by_sections['features'][] = $config_item;
55+
$section = 'features';
5456

5557
} elseif (in_array($config_item->slug, $email_section)) {
56-
$configurations_by_sections['email'][] = $config_item;
58+
$section = 'email';
5759

5860
} elseif (in_array($config_item->slug, $tickets_section)) {
59-
$configurations_by_sections['tickets'][] = $config_item;
61+
$section = 'tickets';
6062

6163
} elseif (in_array($config_item->slug, $perms_section)) {
62-
$configurations_by_sections['perms'][] = $config_item;
64+
$section = 'perms';
6365

6466
} elseif (in_array($config_item->slug, $editor_section)) {
65-
$configurations_by_sections['editor'][] = $config_item;
67+
$section = 'editor';
6668

6769
} else {
68-
$configurations_by_sections['other'][] = $config_item;
70+
$section = 'other';
71+
}
72+
73+
// Add item to its section array
74+
$configurations_by_sections[$section][] = $config_item;
75+
76+
// If list is loaded after configuration update or delete, open it's related tab
77+
if ($config_item->slug == $last_configuration){
78+
$last_tab = $section;
6979
}
7080
}
7181

72-
return view('panichd::admin.configuration.index', compact('configurations', 'configurations_by_sections'));
82+
83+
if (session()->has('last_configuration') and !isset($last_tab)){
84+
// If last configuration is not listed, has to belong to tab "other"
85+
$last_tab = "other";
86+
}
87+
88+
// Default tab
89+
if (!isset($last_tab)) $last_tab = "init";
90+
91+
return view('panichd::admin.configuration.index', compact('configurations', 'configurations_by_sections', 'last_tab'));
7392
}
7493

7594
/**
@@ -148,6 +167,9 @@ public function update(Request $request, $id)
148167
\Cache::forget('panichd::settings');
149168
\Cache::forget('panichd::settings.'.$configuration->slug);
150169

170+
// Pass configuration slug to open it's tab
171+
Session::flash('last_configuration', $configuration->slug);
172+
151173
return redirect()->action('\PanicHD\PanicHD\Controllers\ConfigurationsController@index');
152174
}
153175

@@ -173,6 +195,9 @@ public function destroy(Request $request, $id)
173195
\Cache::forget('panichd::settings');
174196
\Cache::forget('panichd::settings.'.$clone->slug);
175197

198+
// Pass configuration slug to open it's tab
199+
Session::flash('last_configuration', $clone->slug);
200+
176201
return redirect()->action('\PanicHD\PanicHD\Controllers\ConfigurationsController@index');
177202
}
178203
}

src/Views/admin/configuration/index.blade.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@
3232
</div>
3333
@else
3434
<ul class="nav nav-tabs nav-justified" role="tablist">
35-
<li class="nav-item"><a class="nav-link active" data-toggle="tab" role="tab" href="#init-configs">{{ trans('panichd::admin.config-index-initial') }}</a></li>
36-
<li class="nav-item"><a class="nav-link" data-toggle="tab" role="tab" href="#features-configs">{{ trans('panichd::admin.config-index-features') }}</a></li>
37-
<li class="nav-item"><a class="nav-link" data-toggle="tab" role="tab" href="#table-configs">{{ trans('panichd::admin.config-index-table') }}</a></li>
38-
<li class="nav-item"><a class="nav-link" data-toggle="tab" role="tab" href="#tickets-configs">{{ trans('panichd::admin.config-index-tickets') }}</a></li>
39-
<li class="nav-item"><a class="nav-link" data-toggle="tab" role="tab" href="#email-configs">{{ trans('panichd::admin.config-index-notifications') }}</a></li>
40-
<li class="nav-item"><a class="nav-link" data-toggle="tab" role="tab" href="#perms-configs">{{ trans('panichd::admin.config-index-permissions') }}</a></li>
41-
<li class="nav-item"><a class="nav-link" data-toggle="tab" role="tab" href="#editor-configs">{{ trans('panichd::admin.config-index-editor') }}</a></li>
42-
<li class="nav-item"><a class="nav-link" data-toggle="tab" role="tab" href="#other-configs">{{ trans('panichd::admin.config-index-other') }}</a></li>
35+
<li class="nav-item"><a class="nav-link @if($last_tab == 'init') active @endif" data-toggle="tab" role="tab" href="#init-configs">{{ trans('panichd::admin.config-index-initial') }}</a></li>
36+
<li class="nav-item"><a class="nav-link @if($last_tab == 'features') active @endif" data-toggle="tab" role="tab" href="#features-configs">{{ trans('panichd::admin.config-index-features') }}</a></li>
37+
<li class="nav-item"><a class="nav-link @if($last_tab == 'table') active @endif" data-toggle="tab" role="tab" href="#table-configs">{{ trans('panichd::admin.config-index-table') }}</a></li>
38+
<li class="nav-item"><a class="nav-link @if($last_tab == 'tickets') active @endif" data-toggle="tab" role="tab" href="#tickets-configs">{{ trans('panichd::admin.config-index-tickets') }}</a></li>
39+
<li class="nav-item"><a class="nav-link @if($last_tab == 'email') active @endif" data-toggle="tab" role="tab" href="#email-configs">{{ trans('panichd::admin.config-index-notifications') }}</a></li>
40+
<li class="nav-item"><a class="nav-link @if($last_tab == 'perms') active @endif" data-toggle="tab" role="tab" href="#perms-configs">{{ trans('panichd::admin.config-index-permissions') }}</a></li>
41+
<li class="nav-item"><a class="nav-link @if($last_tab == 'editor') active @endif" data-toggle="tab" role="tab" href="#editor-configs">{{ trans('panichd::admin.config-index-editor') }}</a></li>
42+
<li class="nav-item"><a class="nav-link @if($last_tab == 'other') active @endif" data-toggle="tab" role="tab" href="#other-configs">{{ trans('panichd::admin.config-index-other') }}</a></li>
4343
</ul>
44-
<br />
44+
<br />
4545
<div class="tab-content">
4646
@foreach($configurations_by_sections as $section => $a_configurations)
47-
<div id="{{ $section }}-configs" class="tab-pane fade @if($section == "init") show active @endif">
47+
<div id="{{ $section }}-configs" class="tab-pane fade @if($section == $last_tab) show active @endif">
4848
@include('panichd::admin.configuration.partials.tab_table', ['section_name' => $section, 'section_configurations' => $a_configurations])
4949
</div>
5050
@endforeach

0 commit comments

Comments
 (0)