SettingsController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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 updateIcons(Request $request)
  39. {
  40. $request->validate([
  41. 'icon' => 'nullable|max:10000|mimes:jpg,png,jpeg',
  42. 'favicon' => 'nullable|max:10000|mimes:ico',
  43. ]);
  44. if ($request->hasFile('icon')) {
  45. $request->file('icon')->storeAs('public', 'icon.png');
  46. }
  47. if ($request->hasFile('favicon')) {
  48. $request->file('favicon')->storeAs('public', 'favicon.ico');
  49. }
  50. return redirect()->route('admin.settings.index')->with('success', __('Icons updated!'));
  51. }
  52. public function updatevalue(Request $request)
  53. {
  54. $setting = Settings::findOrFail($request->input('key'));
  55. $request->validate([
  56. 'key' => 'required|string|max:191',
  57. 'value' => 'required|string|max:191',
  58. ]);
  59. $setting->update($request->all());
  60. return redirect()->route('admin.settings.index')->with('success', __('configuration has been updated!'));
  61. }
  62. /**
  63. * Remove the specified resource from storage.
  64. *
  65. * @param Settings $setting
  66. * @return Response
  67. */
  68. public function destroy(Settings $setting)
  69. {
  70. //
  71. }
  72. public function datatable()
  73. {
  74. $query = Settings::
  75. where('key', 'like', '%SYSTEM%')
  76. ->orWhere('key', 'like', '%USER%')
  77. ->orWhere('key', 'like', '%SERVER%')
  78. ->orWhere('key', 'like', '%PAYMENTS%');
  79. return datatables($query)
  80. ->addColumn('actions', function (Settings $setting) {
  81. 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> ';
  82. })
  83. ->editColumn('created_at', function (Settings $setting) {
  84. return $setting->created_at ? $setting->created_at->diffForHumans() : '';
  85. })
  86. ->rawColumns(['actions'])
  87. ->make();
  88. }
  89. }