89 lines
2.6 KiB
PHP
89 lines
2.6 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use App\Models\Directories;
|
||
|
|
use App\Models\Documents;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
|
||
|
|
class FoldersController extends Controller
|
||
|
|
{
|
||
|
|
public function __construct()
|
||
|
|
{
|
||
|
|
$this->middleware('auth');
|
||
|
|
}
|
||
|
|
|
||
|
|
public function index(Request $request) {
|
||
|
|
$folders = Directories::all();
|
||
|
|
return view('folders', ['folders' => $folders, 'static_folders' => config('app.STATIC_FOLDERS')]);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function toggleAuthorization(Request $request) {
|
||
|
|
$folderId = $request->id;
|
||
|
|
$folder = Directories::find($folderId);
|
||
|
|
if ($folder) {
|
||
|
|
if ($folder->needAuthorization === 0){
|
||
|
|
$folder->needAuthorization = 1;
|
||
|
|
}else{
|
||
|
|
$folder->needAuthorization = 0;
|
||
|
|
}
|
||
|
|
$folder->save();
|
||
|
|
}
|
||
|
|
return Directories::all();
|
||
|
|
}
|
||
|
|
|
||
|
|
public function saveOrder(Request $request) {
|
||
|
|
return $this->orderFolders($request->folders);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function saveName(Request $request) {
|
||
|
|
$folder = Directories::find($request->id);
|
||
|
|
if($folder) {
|
||
|
|
$folder->name = $request->name;
|
||
|
|
$folder->save();
|
||
|
|
}
|
||
|
|
return Directories::all();
|
||
|
|
}
|
||
|
|
|
||
|
|
public function add(Request $request) {
|
||
|
|
$folder = new Directories();
|
||
|
|
$folder->name = $request->name;
|
||
|
|
$folder->order = $request->order;
|
||
|
|
$folder->save();
|
||
|
|
return Directories::all();
|
||
|
|
}
|
||
|
|
|
||
|
|
public function delete(Request $request) {
|
||
|
|
$folder = Directories::find($request->id);
|
||
|
|
if($folder) {
|
||
|
|
$folder->delete();
|
||
|
|
}
|
||
|
|
return Directories::all();
|
||
|
|
}
|
||
|
|
|
||
|
|
private function orderFolders($folders){
|
||
|
|
foreach ($folders as $folder) {
|
||
|
|
$directory = Directories::where('id', $folder['id'])->first();
|
||
|
|
$directory->order = $folder['order'];
|
||
|
|
$directory->parent = null;
|
||
|
|
$directory->save();
|
||
|
|
if(isset($folder['children']) && count($folder['children']) > 0 ){
|
||
|
|
$this->recordOrder($folder['children'], $folder['id']);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return 'OK';
|
||
|
|
}
|
||
|
|
|
||
|
|
private function recordOrder($folders, $parentId) {
|
||
|
|
foreach ($folders as $k => $folder) {
|
||
|
|
$directory = Directories::where('id', $folder['id'])->first();
|
||
|
|
$directory->order = $folder['order'];
|
||
|
|
$directory->parent = $parentId;
|
||
|
|
$directory->save();
|
||
|
|
if(isset($folder['children']) && count($folder['children']) > 0 ){
|
||
|
|
$this->recordOrder($folder['children'], $folder['id']);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|