middleware('auth'); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $this->authorize('admin-access'); $storageLocations = Storage::orderBy('name') ->paginate(UserConfig::get('items_per_page')); return Theme::render('admin.list_storage', [ 'storageLocations' => $storageLocations ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $this->authorize('admin-access'); $filesystemDefaultLocation = sprintf('%s/storage/app/albums', dirname(dirname(dirname(dirname(__DIR__))))); return Theme::render('admin.create_storage', [ 'album_sources' => UserConfig::albumSources(), 'filesystem_default_location' => $filesystemDefaultLocation ]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Requests\StoreStorageRequest $request) { $this->authorize('admin-access'); $storage = new Storage(); $storage->fill($request->only(['name', 'source', 'location'])); $storage->is_default = (strtolower($request->get('is_default')) == 'on'); $storage->save(); if ($storage->is_default) { $this->unsetIsDefaultFromOthers($storage); } return redirect(route('storage.index')); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ //public function show($id) //{ // //} /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $this->authorize('admin-access'); $storage = Storage::where('id', intval($id))->first(); if (is_null($storage)) { App::abort(404); } return Theme::render('admin.edit_storage', ['storage' => $storage]); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Requests\StoreStorageRequest $request, $id) { $this->authorize('admin-access'); $storage = Storage::where('id', intval($id))->first(); if (is_null($storage)) { App::abort(404); } $storage->fill($request->only(['name'])); $storage->is_default = (strtolower($request->get('is_default')) == 'on'); $storage->save(); if ($storage->is_default) { $this->unsetIsDefaultFromOthers($storage); } return redirect(route('storage.index')); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } private function unsetIsDefaultFromOthers(Storage $storage) { // If this storage is flagged as default, remove all others foreach (Storage::all() as $otherStorage) { if ($otherStorage->id == $storage->id) { // Ignore the one just created continue; } $otherStorage->is_default = false; $otherStorage->save(); } } }