SettingsController.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Http\Controllers\Admin\SettingsControllers;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Settings;
  5. use Illuminate\Contracts\Foundation\Application;
  6. use Illuminate\Contracts\View\Factory;
  7. use Illuminate\Contracts\View\View;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Http\Response;
  10. class SettingsController extends Controller
  11. {
  12. /**
  13. * Display a listing of the resource.
  14. *
  15. * @return Application|Factory|View|Response
  16. */
  17. public function index()
  18. {
  19. //Get all tabs as laravel view paths
  20. $tabs = [];
  21. foreach (glob(resource_path('views/admin/settings/tabs/*.blade.php')) as $filename) {
  22. $tabs[] = 'admin.settings.tabs.' . basename($filename, '.blade.php');
  23. }
  24. //Generate a html list item for each tab based on tabs file basename, set first tab as active
  25. $tabListItems = [];
  26. foreach ($tabs as $tab) {
  27. $tabName = str_replace('admin.settings.tabs.', '', $tab);
  28. $tabListItems[] = '<li class="nav-item">
  29. <a class="nav-link ' . (empty($tabListItems) ? 'active' : '') . '" data-toggle="pill" href="#' . $tabName . '">
  30. ' . __(ucfirst($tabName)) . '
  31. </a></li>';
  32. }
  33. return view('admin.settings.index', [
  34. 'tabs' => $tabs,
  35. 'tabListItems' => $tabListItems,
  36. ]);
  37. }
  38. public function updatevalue(Request $request)
  39. {
  40. $setting = Settings::findOrFail($request->input('key'));
  41. $request->validate([
  42. 'key' => 'required|string|max:191',
  43. 'value' => 'required|string|max:191',
  44. ]);
  45. $setting->update($request->all());
  46. return redirect()->route('admin.settings.index')->with('success', __('configuration has been updated!'));
  47. }
  48. /**
  49. * Remove the specified resource from storage.
  50. *
  51. * @param Settings $setting
  52. * @return Response
  53. */
  54. public function destroy(Settings $setting)
  55. {
  56. //
  57. }
  58. public function datatable()
  59. {
  60. $query = Settings::
  61. where('key', 'like', '%SYSTEM%')
  62. ->orWhere('key', 'like', '%USER%')
  63. ->orWhere('key', 'like', '%SERVER%');
  64. return datatables($query)
  65. ->addColumn('actions', function (Settings $setting) {
  66. return '<button data-content="' . __("Edit") . '" data-toggle="popover" data-trigger="hover" data-placement="top" onclick="configuration.parse(\'' . $setting->key . '\',\'' . $setting->value . '\',\'' . $setting->type . '\')" data-content="Edit" data-trigger="hover" data-toggle="tooltip" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></button> ';
  67. })
  68. ->editColumn('created_at', function (Settings $setting) {
  69. return $setting->created_at ? $setting->created_at->diffForHumans() : '';
  70. })
  71. ->rawColumns(['actions'])
  72. ->make();
  73. }
  74. }