🤩 File Manager - Mr.X
PHP:
8.3.33
Server:
Apache
OS:
Linux 5.14.0-611.49.1.el9_7.x86_64
User:
websparkit
Navigate
Upload:
Upload
New File
New Folder
Editing:dashboard.blade.php
<x-app-layout> <x-slot name="header"> <h2 class="font-semibold text-xl text-navy leading-tight"> {{ __('Client Dashboard') }} </h2> </x-slot> <div class="py-12"> <div class="max-w-7xl mx-auto sm:px-6 lg:px-8 space-y-8"> @if(session('success')) <div class="rounded-lg border border-green-200 bg-green-50 p-4"> <div class="flex items-center"> <svg class="h-5 w-5 text-green-500 mr-2" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg> <p class="text-sm font-medium text-green-800">{{ session('success') }}</p> </div> </div> @endif @if(session('error')) <div class="rounded-lg border border-red-200 bg-red-50 p-4"> <div class="flex items-center"> <svg class="h-5 w-5 text-red-500 mr-2" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z" clip-rule="evenodd"/></svg> <p class="text-sm font-medium text-red-800">{{ session('error') }}</p> </div> </div> @endif {{-- Projects --}} <div class="overflow-hidden rounded-lg bg-white shadow-sm ring-1 ring-gray-900/5"> <div class="border-b border-gray-100 bg-gradient-to-r from-navy to-navy-dark px-6 py-4"> <h3 class="text-base font-semibold text-white">My Projects</h3> </div> <div class="p-6"> @if($projects->isEmpty()) <p class="text-sm text-gray-500">You do not have any active projects yet.</p> @else <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> @foreach($projects as $project) @php $payment = $paymentSummary[$project->id] ?? []; @endphp <div class="border rounded-lg p-4 bg-gray-50 hover:bg-gray-100 transition"> <div class="flex justify-between items-start"> <h4 class="font-bold text-navy text-lg">{{ $project->name }}</h4> <span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium capitalize @if($project->status == 'completed') bg-green-100 text-green-800 @elseif($project->status == 'in_progress') bg-blue-100 text-blue-800 @else bg-yellow-100 text-yellow-800 @endif"> {{ str_replace('_', ' ', $project->status) }} </span> </div> {{-- Payment Summary --}} @if($project->budget) <div class="mt-3 p-3 bg-white rounded-md border"> <h5 class="text-xs font-semibold text-gray-500 uppercase mb-2">Payment Summary</h5> <div class="grid grid-cols-2 gap-2 text-sm"> <div> <span class="text-gray-500">Budget:</span> <span class="font-semibold text-navy">Rs{{ number_format($payment['total_budget'] ?? 0, 2) }}</span> </div> <div> <span class="text-gray-500">Paid:</span> <span class="font-semibold text-green-700">Rs{{ number_format($payment['confirmed'] ?? 0, 2) }}</span> </div> <div> <span class="text-gray-500">Pending:</span> <span class="font-semibold text-yellow-600">Rs{{ number_format($payment['pending'] ?? 0, 2) }}</span> </div> <div> <span class="text-gray-500">Balance:</span> <span class="font-semibold text-red-600">Rs{{ number_format($payment['balance'] ?? 0, 2) }}</span> </div> </div> </div> @endif {{-- Task Progress --}} @if($project->tasks->count() > 0) <div class="mt-3"> <h5 class="text-xs font-semibold text-gray-500 uppercase mb-2">Task Progress</h5> @php $totalTasks = $project->tasks->count(); $completedTasks = $project->tasks->where('status', 'done')->count(); $progress = $totalTasks > 0 ? round(($completedTasks / $totalTasks) * 100) : 0; @endphp <div class="w-full bg-gray-200 rounded-full h-2"> <div class="bg-green-500 h-2 rounded-full" style="width: {{ $progress }}%"></div> </div> <p class="text-xs text-gray-500 mt-1">{{ $completedTasks }}/{{ $totalTasks }} tasks completed</p> </div> @endif {{-- Media & Resource Links --}} <div class="mt-3 flex gap-2"> <a href="{{ route('client.media', $project) }}" class="flex-1 text-center text-xs font-semibold bg-navy hover:bg-navy-dark text-white py-2 px-3 rounded-md transition-colors"> Upload Media </a> @if($project->status == 'completed') <a href="{{ route('client.resources', $project) }}" class="flex-1 text-center text-xs font-semibold bg-green-600 hover:bg-green-700 text-white py-2 px-3 rounded-md transition-colors"> Download Resources </a> @endif </div> </div> @endforeach </div> @endif </div> </div> <div class="grid grid-cols-1 md:grid-cols-2 gap-8"> <!-- Submit Requirement Form --> <div class="overflow-hidden rounded-lg bg-white shadow-sm ring-1 ring-gray-900/5"> <div class="border-b border-gray-100 bg-gradient-to-r from-navy to-navy-dark px-6 py-4"> <h3 class="text-base font-semibold text-white">Submit New Requirement</h3> </div> <div class="p-6"> <form action="{{ route('client.requirement.store') }}" method="POST" enctype="multipart/form-data" class="space-y-4"> @csrf <div> <label class="block text-sm font-medium text-gray-700">Select Project</label> <select name="project_id" class="mt-1 block w-full border-gray-300 rounded-md shadow-sm focus:ring-orange focus:border-orange" required> @foreach($projects as $project) <option value="{{ $project->id }}">{{ $project->name }}</option> @endforeach </select> </div> <div> <label class="block text-sm font-medium text-gray-700">Title</label> <input type="text" name="title" class="mt-1 block w-full border-gray-300 rounded-md shadow-sm focus:ring-orange focus:border-orange" required> </div> <div> <label class="block text-sm font-medium text-gray-700">Description</label> <textarea name="description" rows="3" class="mt-1 block w-full border-gray-300 rounded-md shadow-sm focus:ring-orange focus:border-orange"></textarea> </div> <div> <label class="block text-sm font-medium text-gray-700">Attachment (Video, Voice, PDF, Image)</label> <input type="file" name="file" class="mt-1 block w-full text-sm text-gray-500 file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-semibold file:bg-orange file:text-white hover:file:bg-orange-dark"> </div> <button type="submit" class="w-full bg-navy hover:bg-navy-dark text-white px-4 py-2 rounded-md font-semibold transition-colors duration-200">Submit Requirement</button> </form> </div> </div> <!-- Requirement History --> <div class="overflow-hidden rounded-lg bg-white shadow-sm ring-1 ring-gray-900/5"> <div class="border-b border-gray-100 bg-gradient-to-r from-navy to-navy-dark px-6 py-4"> <h3 class="text-base font-semibold text-white">My Requirements</h3> </div> <div class="p-6"> @if($requirements->isEmpty()) <p class="text-sm text-gray-500">No requirements submitted yet.</p> @else <div class="space-y-4 max-h-96 overflow-y-auto"> @foreach($requirements as $req) <div class="border-l-4 bg-gray-50 p-4 rounded-r-md shadow-sm @if($req->status == 'approved') border-green-500 @elseif($req->status == 'done') border-purple-500 @elseif($req->status == 'rejected') border-red-500 @else border-yellow-500 @endif"> <div class="flex justify-between items-start"> <h4 class="font-bold text-sm">{{ $req->title }}</h4> <span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium capitalize @if($req->status == 'approved') bg-green-100 text-green-800 @elseif($req->status == 'done') bg-purple-100 text-purple-800 @elseif($req->status == 'rejected') bg-red-100 text-red-800 @else bg-yellow-100 text-yellow-800 @endif"> {{ $req->status }} </span> </div> <p class="text-xs text-gray-500 mt-1">Project: {{ $req->project->name ?? 'N/A' }}</p> @if($req->file_path) <a href="{{ Storage::url($req->file_path) }}" target="_blank" class="text-xs text-orange hover:text-orange-dark mt-2 inline-block">View Attachment →</a> @endif </div> @endforeach </div> @endif </div> </div> </div> </div> </div> </x-app-layout>
Save Changes
Cancel
Create New File
Create New Folder