<x-app-layout>
<div class="p-6 max-w-4xl mx-auto">
{{-- Breadcrumb --}}
<div class="mb-4 text-sm text-gray-500">
我的雲端硬碟
</div>
<h1 class="text-xl font-bold mb-4">我的資料夾</h1>
{{-- 成功訊息 --}}
@if(session('success'))
<div class="mb-4 text-green-600">
{{ session('success') }}
</div>
@endif
{{-- 新增根資料夾 --}}
<form method="POST" action="{{ route('folders.store') }}" class="mb-4 flex gap-2">
@csrf
<input type="text" name="name" placeholder="新資料夾名稱" class="border rounded p-2 flex-1" required>
<button class="bg-blue-500 text-white px-4 py-2 rounded">新增</button>
</form>
{{-- 根目錄資料夾列表 --}}
<ul class="space-y-2 mb-6">
@forelse($folders as $folder)
<li class="border p-3 rounded hover:bg-gray-100 flex justify-between items-center"
x-data="{ editing: false, name: '{{ e($folder->name) }}' }">
{{-- 資料夾名稱 --}}
<div class="flex items-center gap-2">
📁
<template x-if="!editing">
<span @dblclick="editing = true" class="font-semibold text-blue-600 cursor-pointer">
{{ $folder->name }}
</span>
</template>
<template x-if="editing">
<form method="POST" action="{{ route('folders.update', $folder) }}" class="flex items-center gap-1">
@csrf
@method('PATCH')
<input type="text" name="name" x-model="name"
@keydown.enter.prevent="$el.form.submit()"
@keydown.escape="editing = false"
class="border rounded p-1 text-sm w-32" autofocus required>
<button class="text-green-600 text-sm">儲存</button>
<button type="button" @click="editing = false" class="text-gray-500 text-sm">取消</button>
</form>
</template>
</div>
{{-- 操作按鈕 --}}
<div class="flex gap-2 items-center">
<a href="{{ route('folders.show', $folder) }}" class="text-sm text-blue-500">開啟</a>
<button type="button" @click="editing = true" class="text-sm text-gray-600">重新命名</button>
<form method="POST" action="{{ route('folders.destroy', $folder) }}"
onsubmit="return confirm('確定要刪除這個資料夾及其所有子資料夾嗎?')">
@csrf
@method('DELETE')
<button class="text-sm text-red-600">刪除</button>
</form>
</div>
</li>
@empty
<li class="text-gray-400">尚無資料夾</li>
@endforelse
</ul>
{{-- 多檔案上傳 --}}
<form method="POST" action="{{ route('files.store') }}" enctype="multipart/form-data" class="mb-4 flex gap-2">
@csrf
<input type="hidden" name="folder_id" value="">
<input type="file" name="files[]" multiple required>
<button class="bg-green-600 text-white px-4 py-2 rounded">上傳檔案</button>
</form>
{{-- 檔案排序 --}}
<div class="mb-2 flex items-center gap-2 text-sm text-gray-500">
排序:
@php
$options = ['name' => '名稱', 'size' => '大小', 'created_at' => '上傳日期'];
@endphp
@foreach($options as $key => $label)
<a href="{{ route('folders.index') }}?sort={{ $key }}&direction={{ $sort === $key && $direction === 'asc' ? 'desc' : 'asc' }}"
class="hover:underline {{ $sort === $key ? 'font-semibold' : '' }}">
{{ $label }}
@if($sort === $key)
{{ $direction === 'asc' ? '↑' : '↓' }}
@endif
</a>
@if(!$loop->last) | @endif
@endforeach
</div>
{{-- 根目錄檔案列表 --}}
<h2 class="font-semibold mb-2">檔案</h2>
<ul class="space-y-2">
@forelse($files as $file)
<li class="border p-3 rounded flex justify-between items-center"
x-data="{ editing: false, name: '{{ e($file->name) }}' }">
{{-- 檔案名稱 + 大小 + 上傳日期 --}}
<div class="flex items-center gap-4">
📄
<template x-if="!editing">
<span @dblclick="editing = true" class="cursor-pointer text-blue-600">
{{ $file->name }}
</span>
</template>
<template x-if="editing">
<form method="POST" action="{{ route('files.update', $file) }}" class="flex items-center gap-1">
@csrf
@method('PATCH')
<input type="text" name="name" x-model="name"
@keydown.enter.prevent="$el.form.submit()"
@keydown.escape="editing = false"
class="border rounded p-1 text-sm w-32" autofocus required>
<button class="text-green-600 text-sm">儲存</button>
<button type="button" @click="editing = false" class="text-gray-500 text-sm">取消</button>
</form>
</template>
{{-- 檔案大小 --}}
<span class="text-gray-500 text-sm">
@php
if($file->size >= 1048576){
$size = number_format($file->size / 1048576, 2) . ' MB';
} elseif($file->size >= 1024){
$size = number_format($file->size / 1024, 2) . ' KB';
} else {
$size = $file->size . ' B';
}
@endphp
{{ $size }}
</span>
{{-- 上傳日期 --}}
<span class="text-gray-400 text-sm">{{ $file->created_at->format('Y-m-d H:i') }}</span>
</div>
{{-- 操作按鈕 --}}
<div class="flex justify-center gap-2 items-center">
<a href="{{ route('files.download', $file) }}" class="text-blue-600 hover:underline">下載</a>
<button type="button" @click="editing = true" class="text-sm text-gray-600">重新命名</button>
<form method="POST" action="{{ route('files.destroy', $file) }}" onsubmit="return confirm('確定要刪除這個檔案嗎?')">
@csrf
@method('DELETE')
<button class="text-red-600 text-sm">刪除</button>
</form>
</div>
{{-- 分享按鈕靠右 --}}
<div class="flex justify-end gap-2 items-center mt-2">
<form method="POST" action="{{ route('files.share', $file) }}" class="inline">
@csrf
<button type="submit" class="text-blue-600 text-sm">分享</button>
</form>
{{-- 顯示分享連結 --}}
@if(session('share_link_' . $file->id))
<span class="text-gray-500 text-sm ml-2">分享連結:
<a href="{{ session('share_link_' . $file->id) }}" target="_blank" class="text-blue-600">{{ session('share_link_' . $file->id) }}</a>
</span>
@endif
</div>
</li>
@empty
<li class="text-gray-400">尚無檔案</li>
@endforelse
</ul>
</div>
</x-app-layout>