new chages add
This commit is contained in:
parent
897cd82bc6
commit
705917497d
|
|
@ -34,22 +34,28 @@ public function studentlogin(Request $request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function showProfile(Request $request)
|
public function showProfile(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$log_id = $request->session()->get('student_log_id');
|
$log_id = $request->session()->get('student_log_id');
|
||||||
$student_code = $request->session()->get('student_id');
|
$student_code = $request->session()->get('student_id');
|
||||||
|
|
||||||
|
|
||||||
if (!$log_id && !$student_code) {
|
if (!$log_id && !$student_code) {
|
||||||
return redirect('/')->with('error', 'Please login first!');
|
return redirect('/')->with('error', 'Please login first!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$student = DB::table('student_details')
|
$student = DB::table('student_details')
|
||||||
->where('student_portal_log_id', $log_id)
|
->where(function ($query) use ($log_id, $student_code) {
|
||||||
->orWhere('student_id', $student_code)
|
if ($log_id) {
|
||||||
->first();
|
$query->where('student_portal_log_id', $log_id);
|
||||||
|
}
|
||||||
|
if ($student_code) {
|
||||||
|
$query->orWhere('student_id', $student_code);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
->first();
|
||||||
|
|
||||||
|
|
||||||
if (!$student) {
|
if (!$student) {
|
||||||
|
|
@ -60,6 +66,32 @@ public function showProfile(Request $request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// public function showProfile(Request $request)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// $log_id = $request->session()->get('student_log_id');
|
||||||
|
// $student_code = $request->session()->get('student_id');
|
||||||
|
|
||||||
|
// if (!$log_id && !$student_code) {
|
||||||
|
// return redirect('/')->with('error', 'Please login first!');
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// $student = DB::table('student_details')
|
||||||
|
// ->where('student_portal_log_id', $log_id)
|
||||||
|
// ->orWhere('student_id', $student_code)
|
||||||
|
// ->first();
|
||||||
|
|
||||||
|
|
||||||
|
// if (!$student) {
|
||||||
|
// return redirect()->back()->with('error', 'Student details not found in database!');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return view('StudentProfile', compact('student'));
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
// public function showProfile(Request $request)
|
// public function showProfile(Request $request)
|
||||||
// {
|
// {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Observers;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Models\StudentPortalLog;
|
||||||
|
|
||||||
|
class UserObserver
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle the User "created" event.
|
||||||
|
*/
|
||||||
|
public function created(User $user): void
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the User "updated" event.
|
||||||
|
*/
|
||||||
|
public function updated(User $user): void
|
||||||
|
{
|
||||||
|
|
||||||
|
if ($user->isDirty('password')) {
|
||||||
|
|
||||||
|
StudentPortalLog::where('user_id', $user->id)
|
||||||
|
->update([
|
||||||
|
'password' => $user->password,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the User "deleted" event.
|
||||||
|
*/
|
||||||
|
public function deleted(User $user): void
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the User "restored" event.
|
||||||
|
*/
|
||||||
|
public function restored(User $user): void
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the User "force deleted" event.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function forceDeleted(User $user): void
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Observers\UserObserver;
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
|
|
@ -19,6 +21,6 @@ class AppServiceProvider extends ServiceProvider
|
||||||
*/
|
*/
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
//
|
User::observe(UserObserver::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,89 +2,144 @@
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<style>
|
<style>
|
||||||
.profile-card {
|
|
||||||
border: none;
|
|
||||||
border-radius: 12px;
|
|
||||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08) !important;
|
|
||||||
background: #ffffff;
|
|
||||||
}
|
|
||||||
.profile-header {
|
|
||||||
|
|
||||||
background: linear-gradient(135deg, #3d0c3d 0%, #5c1d5c 100%);
|
:root {
|
||||||
padding: 1.25rem 1.5rem;
|
--primary-navy: #0F2C59;
|
||||||
border-top-left-radius: 12px !important;
|
--accent-red: #822424;
|
||||||
border-top-right-radius: 12px !important;
|
--accent-red-hover: #6a2525;
|
||||||
|
--bg-light: #F4F6F9;
|
||||||
|
--text-main: #1E293B;
|
||||||
|
--text-muted: #64748B;
|
||||||
|
--border-color: rgba(15, 44, 89, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.profile-card {
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
border-radius: 16px;
|
||||||
|
box-shadow: 0 10px 30px rgba(15, 44, 89, 0.08) !important;
|
||||||
|
background: #ffffff;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-header {
|
||||||
|
background: linear-gradient(135deg, var(--primary-navy) 0%, #1a3d73 100%);
|
||||||
|
padding: 1.5rem 1.75rem;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
.profile-info-row {
|
.profile-info-row {
|
||||||
padding: 0.9rem 0;
|
padding: 1.1rem 0;
|
||||||
border-bottom: 1px solid #f1f1f4;
|
border-bottom: 1px solid #f1f5f9;
|
||||||
|
transition: background 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.profile-info-row:hover {
|
||||||
|
background-color: #f8fafc;
|
||||||
|
}
|
||||||
|
|
||||||
.profile-info-row:last-of-type {
|
.profile-info-row:last-of-type {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-label {
|
.profile-label {
|
||||||
color: #6c757d;
|
color: var(--text-muted);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 0.95rem;
|
font-size: 0.95rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-value {
|
.profile-value {
|
||||||
color: #212529;
|
color: var(--text-main);
|
||||||
font-weight: 500;
|
font-weight: 600;
|
||||||
font-size: 0.95rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ===== Theme Buttons ===== */
|
||||||
.btn-edit {
|
.btn-edit {
|
||||||
background-color: #5c1d5c;
|
background-color: var(--accent-red);
|
||||||
color: white;
|
color: #ffffff;
|
||||||
border-radius: 6px;
|
border-radius: 30px;
|
||||||
padding: 0.5rem 1.5rem;
|
padding: 0.6rem 2rem;
|
||||||
font-weight: 500;
|
font-weight: 600;
|
||||||
transition: all 0.2s ease;
|
transition: all 0.3s ease;
|
||||||
border: none;
|
border: none;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-edit:hover {
|
.btn-edit:hover {
|
||||||
background-color: #3d0c3d;
|
background-color: var(--accent-red-hover);
|
||||||
color: white;
|
color: #ffffff;
|
||||||
box-shadow: 0 4px 10px rgba(92, 29, 92, 0.3);
|
box-shadow: 0 6px 15px rgba(130, 36, 36, 0.3);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-save {
|
||||||
|
background-color: var(--accent-red);
|
||||||
|
color: #ffffff;
|
||||||
|
border-radius: 6px;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 0.5rem 1.5rem;
|
||||||
|
border: none;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-save:hover {
|
||||||
|
background-color: var(--accent-red-hover);
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Form & Input Enhancements */
|
||||||
|
.form-control:focus {
|
||||||
|
border-color: var(--primary-navy);
|
||||||
|
box-shadow: 0 0 0 0.25rem rgba(15, 44, 89, 0.15);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="container mt-5 mb-5">
|
<div class="container py-5">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
|
|
||||||
|
{{-- Alert Success Message --}}
|
||||||
@if(session('success'))
|
@if(session('success'))
|
||||||
<div class="alert alert-success alert-dismissible fade show mb-4" role="alert" style="border-radius: 8px;">
|
<div class="alert alert-success alert-dismissible fade show mb-4 border-0 shadow-sm" role="alert" style="border-radius: 10px; background-color: #d1e7dd; color: #0f5132;">
|
||||||
<i class="bi bi-check-circle-fill me-2"></i> {{ session('success') }}
|
<i class="fa-solid fa-circle-check me-2"></i> {{ session('success') }}
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
{{-- Main Profile Card --}}
|
||||||
<div class="card profile-card">
|
<div class="card profile-card">
|
||||||
|
|
||||||
<!-- Purple Header -->
|
<!-- Navy Header -->
|
||||||
<div class="card-header profile-header text-white">
|
<div class="card-header profile-header text-white d-flex align-items-center justify-content-between">
|
||||||
<h4 class="mb-0 fw-bold" style="font-size: 1.25rem;">User Profile Dashboard</h4>
|
<h4 class="mb-0 fw-bold" style="font-size: 1.25rem; letter-spacing: 0.02em;">
|
||||||
|
<i class="fa-solid fa-user-gear me-2"></i>User Profile Dashboard
|
||||||
|
</h4>
|
||||||
|
<span class="badge bg-light text-dark fw-semibold px-3 py-2 rounded-pill small">Active Student</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-body p-4">
|
<div class="card-body p-4 p-md-5">
|
||||||
<!-- Name -->
|
|
||||||
<div class="row profile-info-row align-items-center">
|
|
||||||
<div class="col-md-4 profile-label">Full Name:</div>
|
|
||||||
<div class="col-md-8 profile-value">{{ $user->first_name . ' ' . $user->last_name }}</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Email -->
|
<!-- Full Name -->
|
||||||
<div class="row profile-info-row align-items-center">
|
<div class="row profile-info-row align-items-center">
|
||||||
<div class="col-md-4 profile-label">Email Address:</div>
|
<div class="col-md-4 profile-label">
|
||||||
|
<i class="fa-solid fa-id-card me-2 " style="color: #822424;"></i>Full Name:
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8 profile-value">{{ $user->first_name . ' ' . $user->last_name }}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Email Address -->
|
||||||
|
<div class="row profile-info-row align-items-center">
|
||||||
|
<div class="col-md-4 profile-label">
|
||||||
|
<i class="fa-solid fa-envelope me-2 " style="color: #822424;"></i>Email Address:
|
||||||
|
</div>
|
||||||
<div class="col-md-8 profile-value">{{ $user->email }}</div>
|
<div class="col-md-8 profile-value">{{ $user->email }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Phone -->
|
<!-- Phone Number -->
|
||||||
<div class="row profile-info-row align-items-center">
|
<div class="row profile-info-row align-items-center">
|
||||||
<div class="col-md-4 profile-label">Phone Number:</div>
|
<div class="col-md-4 profile-label">
|
||||||
|
<i class="fa-solid fa-phone me-2 " style="color: #822424;"></i>Phone Number:
|
||||||
|
</div>
|
||||||
<div class="col-md-8 profile-value">
|
<div class="col-md-8 profile-value">
|
||||||
{{ $user->phone ?? 'Not Provided' }}
|
{{ $user->phone ?? 'Not Provided' }}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -92,7 +147,9 @@
|
||||||
|
|
||||||
<!-- Created At -->
|
<!-- Created At -->
|
||||||
<div class="row profile-info-row align-items-center">
|
<div class="row profile-info-row align-items-center">
|
||||||
<div class="col-md-4 profile-label">Account Created:</div>
|
<div class="col-md-4 profile-label">
|
||||||
|
<i class="fa-solid fa-calendar-plus me-2 t " style="color: #822424;"></i>Account Created:
|
||||||
|
</div>
|
||||||
<div class="col-md-8 profile-value text-muted">
|
<div class="col-md-8 profile-value text-muted">
|
||||||
{{ $user->created_at ? $user->created_at->format('Y-m-d H:i') : 'N/A' }}
|
{{ $user->created_at ? $user->created_at->format('Y-m-d H:i') : 'N/A' }}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -100,44 +157,42 @@
|
||||||
|
|
||||||
<!-- Updated At -->
|
<!-- Updated At -->
|
||||||
<div class="row profile-info-row align-items-center">
|
<div class="row profile-info-row align-items-center">
|
||||||
<div class="col-md-4 profile-label">Last Updated:</div>
|
<div class="col-md-4 profile-label">
|
||||||
|
<i class="fa-solid fa-clock-rotate-left me-2 " style="color: #822424;"></i>Last Updated:
|
||||||
|
</div>
|
||||||
<div class="col-md-8 profile-value text-muted">
|
<div class="col-md-8 profile-value text-muted">
|
||||||
{{ $user->updated_at ? $user->updated_at->format('Y-m-d H:i') : 'N/A' }}
|
{{ $user->updated_at ? $user->updated_at->format('Y-m-d H:i') : 'N/A' }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Edit Button -->
|
<!-- Edit Profile Trigger Button -->
|
||||||
<div class="mt-4 text-end">
|
<div class="mt-4 pt-2 text-end">
|
||||||
<!-- <a href="#" class="btn btn-edit">Edit Profile</a> -->
|
<button type="button" class="btn btn-edit shadow-sm" data-bs-toggle="modal" data-bs-target="#editProfileModal">
|
||||||
<div class="mt-4 text-end">
|
<i class="fa-solid fa-pen-to-square me-2"></i>Edit Profile
|
||||||
<button type="button" class="btn btn-edit" data-bs-toggle="modal" data-bs-target="#editProfileModal">
|
</button>
|
||||||
Edit Profile
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{{-- ===================== EDIT PROFILE MODAL ===================== --}}
|
||||||
<div class="modal fade" id="editProfileModal" tabindex="-1" aria-labelledby="editProfileModalLabel" aria-hidden="true">
|
<div class="modal fade" id="editProfileModal" tabindex="-1" aria-labelledby="editProfileModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-dialog-centered">
|
<div class="modal-dialog modal-dialog-centered">
|
||||||
<div class="modal-content" style="border-radius: 12px; overflow: hidden;">
|
<div class="modal-content border-0 shadow-lg" style="border-radius: 16px; overflow: hidden;">
|
||||||
|
|
||||||
<!-- Modal Header (Oyage purple theme ekata match kala) -->
|
<!-- Modal Header (Navy Theme) -->
|
||||||
<div class="modal-header text-white" style="background: linear-gradient(135deg, #3d0c3d 0%, #5c1d5c 100%);">
|
<div class="modal-header text-white" style="background: linear-gradient(135deg, #0F2C59 0%, #1a3d73 100%);">
|
||||||
<h5 class="modal-title fw-bold" id="editProfileModalLabel">Update Profile Details</h5>
|
<h5 class="modal-title fw-bold fs-6" id="editProfileModalLabel">
|
||||||
|
<i class="fa-solid fa-user-pen me-2"></i>Update Profile Details
|
||||||
|
</h5>
|
||||||
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Update Form -->
|
||||||
<form action="{{ route('profile.update') }}" method="POST">
|
<form action="{{ route('profile.update') }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
|
|
@ -146,31 +201,32 @@
|
||||||
|
|
||||||
<!-- First Name Input -->
|
<!-- First Name Input -->
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="first_name" class="form-label fw-bold" style="color: #6c757d;">First Name</label>
|
<label for="first_name" class="form-label fw-semibold small" style="color: var(--text-muted);">First Name</label>
|
||||||
<input type="text" class="form-control" id="first_name" name="first_name" value="{{ $user->first_name }}" required>
|
<input type="text" class="form-control form-control-lg fs-6" id="first_name" name="first_name" value="{{ $user->first_name }}" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Last Name Input -->
|
<!-- Last Name Input -->
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="last_name" class="form-label fw-bold" style="color: #6c757d;">Last Name</label>
|
<label for="last_name" class="form-label fw-semibold small" style="color: var(--text-muted);">Last Name</label>
|
||||||
<input type="text" class="form-control" id="last_name" name="last_name" value="{{ $user->last_name }}" required>
|
<input type="text" class="form-control form-control-lg fs-6" id="last_name" name="last_name" value="{{ $user->last_name }}" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Phone Input -->
|
<!-- Phone Input -->
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="phone" class="form-label fw-bold" style="color: #6c757d;">Phone Number</label>
|
<label for="phone" class="form-label fw-semibold small" style="color: var(--text-muted);">Phone Number</label>
|
||||||
<input type="text" class="form-control" id="phone" name="phone" value="{{ $user->phone }}">
|
<input type="text" class="form-control form-control-lg fs-6" id="phone" name="phone" value="{{ $user->phone }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Modal Footer Buttons -->
|
<!-- Modal Footer -->
|
||||||
<div class="modal-footer bg-light">
|
<div class="modal-footer bg-light px-4">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-secondary border-0 rounded-3" data-bs-dismiss="modal">Cancel</button>
|
||||||
<button type="submit" class="btn text-white" style="background-color: #5c1d5c;">Save Changes</button>
|
<button type="submit" class="btn btn-save rounded-3">Save Changes</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
@ -57,7 +57,7 @@ body {
|
||||||
width: 70px;
|
width: 70px;
|
||||||
height: 70px;
|
height: 70px;
|
||||||
background: #822a32;
|
background: #822a32;
|
||||||
color: #ffed8b;
|
color: #fcfcfc;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
@ -71,6 +71,7 @@ body {
|
||||||
background: linear-gradient(135deg, var(--secondary) 0%, var(--secondary-hover) 100%);
|
background: linear-gradient(135deg, var(--secondary) 0%, var(--secondary-hover) 100%);
|
||||||
transform: scale(1.1);
|
transform: scale(1.1);
|
||||||
box-shadow: 0 5px 15px rgba(188, 26, 26, 0.3);
|
box-shadow: 0 5px 15px rgba(188, 26, 26, 0.3);
|
||||||
|
color: #ffed8b;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-portal {
|
.btn-portal {
|
||||||
|
|
@ -326,80 +327,111 @@ body {
|
||||||
|
|
||||||
<!-- QUICK LINKS (FIXED WITH FONTAWESOME ICONS & RESPONSIVE LAYOUT) -->
|
<!-- QUICK LINKS (FIXED WITH FONTAWESOME ICONS & RESPONSIVE LAYOUT) -->
|
||||||
<section class="py-5 position-relative overflow-hidden"
|
<section class="py-5 position-relative overflow-hidden"
|
||||||
style="background: linear-gradient(rgba(86, 94, 110, 0.57), rgba(10, 9, 17, 0.92)), url('https://images.pexels.com/photos/3807277/pexels-photo-3807277.jpeg?auto=compress&cs=tinysrgb&w=1600'); background-size: cover; background-position: center; background-repeat: no-repeat; background-attachment: fixed; min-height: 380px; display: flex; align-items: center;">
|
style=" background-size: cover; background-position: center; background-repeat: no-repeat; background-attachment: fixed; min-height: 25vh; display: flex; align-items: center;">
|
||||||
<div class="container py-2">
|
|
||||||
|
|
||||||
<!-- Section Title -->
|
<div class="container py-4">
|
||||||
<div class="text-center mb-5 animate-item fade-up-init">
|
<div class="row justify-content-center">
|
||||||
<h2 class="fw-bold mb-2 text-white display-6">Quick Links</h2>
|
<div class="col-12 col-md-8 col-lg-6" style="width:100%">
|
||||||
<p class="text-white-50 fs-6 mx-auto" style="max-width: 500px;">
|
|
||||||
Access important student portals and official resources instantly
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Quick Links Grid -->
|
<!-- Main Container Card (White Box with Blur) -->
|
||||||
<div class="row g-4 justify-content-center animate-item slide-right-init">
|
<div class="p-4 p-md-5 rounded-4 shadow-lg text-dark"
|
||||||
|
style="background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(15px); border: 1px solid rgba(255, 255, 255, 0.5);">
|
||||||
|
|
||||||
<!-- Link 1 -->
|
<!-- Header Area -->
|
||||||
<div class="col-12 col-sm-6 col-lg-3">
|
<div class="d-flex justify-content-between align-items-center mb-4 pb-2 border-bottom">
|
||||||
<a href="#" class="text-decoration-none p-4 rounded-4 text-center d-flex flex-column align-items-center h-100 shadow-sm"
|
<div>
|
||||||
style="background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.4); transition: all 0.3s ease;"
|
<h3 class="fw-bold m-0 text-dark">Quick Links</h3>
|
||||||
onmouseover="this.style.transform='translateY(-8px)'; this.style.background='#ffffff'; this.style.boxShadow='0 15px 30px rgba(0,0,0,0.25)';"
|
<p class="text-muted small m-0">Access important student portals and resources</p>
|
||||||
onmouseout="this.style.transform='translateY(0)'; this.style.background='rgba(255, 255, 255, 0.85)'; this.style.boxShadow='none';">
|
</div>
|
||||||
|
|
||||||
<div class="mb-3" style="width: 60px; height: 60px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background-color: rgb(108, 55, 55);
|
|
||||||
color: #fff; transition: all 0.3s ease;">
|
|
||||||
<i class="fa-solid fa-calendar-days fs-3"></i>
|
|
||||||
</div>
|
</div>
|
||||||
<span class="fw-bold text-dark fs-6 mt-auto">Academic Calendar</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Link 2 -->
|
<!-- Links List Container -->
|
||||||
<div class="col-12 col-sm-6 col-lg-3">
|
<div class="d-flex flex-column gap-3">
|
||||||
<a href="#" class="text-decoration-none p-4 rounded-4 text-center d-flex flex-column align-items-center h-100 shadow-sm"
|
|
||||||
style="background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.4); transition: all 0.3s ease;"
|
<!-- Item 1 -->
|
||||||
onmouseover="this.style.transform='translateY(-8px)'; this.style.background='#ffffff'; this.style.boxShadow='0 15px 30px rgba(0,0,0,0.25)';"
|
<a href="#" class="text-decoration-none text-dark p-3 rounded-3 d-flex align-items-center justify-content-between transition-all custom-list-item"
|
||||||
onmouseout="this.style.transform='translateY(0)'; this.style.background='rgba(255, 255, 255, 0.85)'; this.style.boxShadow='none';">
|
style="background: rgba(255, 255, 255, 0.7); border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;"
|
||||||
|
onmouseover="this.style.background='#ffffff'; this.style.transform='translateX(5px)'; this.style.boxShadow='0 5px 15px rgba(0,0,0,0.08)';"
|
||||||
|
onmouseout="this.style.background='rgba(255, 255, 255, 0.7)'; this.style.transform='translateX(0)'; this.style.boxShadow='none';" onclick="studentlogin()">
|
||||||
|
|
||||||
|
<div class="d-flex align-items-center gap-3">
|
||||||
|
<div class="rounded-circle d-flex align-items-center justify-content-center flex-shrink-0"
|
||||||
|
style="width: 48px; height: 48px; background-color: rgb(108, 55, 55); color: #fff;">
|
||||||
|
<i class="fa-solid fa-calendar-days fs-5"></i>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h6 class="fw-bold mb-0 text-dark">Academic Calendar</h6>
|
||||||
|
<small class="text-muted">Schedules & important dates</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span class="btn btn-sm btn-outline-dark rounded-pill px-3 ms-2">Open</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- Item 2 -->
|
||||||
|
<a href="#" class="text-decoration-none text-dark p-3 rounded-3 d-flex align-items-center justify-content-between transition-all custom-list-item"
|
||||||
|
style="background: rgba(255, 255, 255, 0.7); border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;"
|
||||||
|
onmouseover="this.style.background='#ffffff'; this.style.transform='translateX(5px)'; this.style.boxShadow='0 5px 15px rgba(0,0,0,0.08)';"
|
||||||
|
onmouseout="this.style.background='rgba(255, 255, 255, 0.7)'; this.style.transform='translateX(0)'; this.style.boxShadow='none';" onclick="studentlogin()">
|
||||||
|
|
||||||
|
<div class="d-flex align-items-center gap-3">
|
||||||
|
<div class="rounded-circle d-flex align-items-center justify-content-center flex-shrink-0"
|
||||||
|
style="width: 48px; height: 48px; background-color: rgb(108, 55, 55); color: #fff;">
|
||||||
|
<i class="fa-solid fa-book-bookmark fs-5"></i>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h6 class="fw-bold mb-0 text-dark">Student Handbook</h6>
|
||||||
|
<small class="text-muted">Rules, guidelines & policies</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span class="btn btn-sm btn-outline-dark rounded-pill px-3 ms-2">View</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- Item 3 -->
|
||||||
|
<a href="#" class="text-decoration-none text-dark p-3 rounded-3 d-flex align-items-center justify-content-between transition-all custom-list-item"
|
||||||
|
style="background: rgba(255, 255, 255, 0.7); border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;"
|
||||||
|
onmouseover="this.style.background='#ffffff'; this.style.transform='translateX(5px)'; this.style.boxShadow='0 5px 15px rgba(0,0,0,0.08)';"
|
||||||
|
onmouseout="this.style.background='rgba(255, 255, 255, 0.7)'; this.style.transform='translateX(0)'; this.style.boxShadow='none';" onclick="studentlogin()">
|
||||||
|
|
||||||
|
<div class="d-flex align-items-center gap-3">
|
||||||
|
<div class="rounded-circle d-flex align-items-center justify-content-center flex-shrink-0"
|
||||||
|
style="width: 48px; height: 48px; background-color: rgb(108, 55, 55); color: #fff;">
|
||||||
|
<i class="fa-solid fa-file-lines fs-5"></i>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h6 class="fw-bold mb-0 text-dark">Examination Notices</h6>
|
||||||
|
<small class="text-muted">Timetables & results</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span class="btn btn-sm btn-outline-dark rounded-pill px-3 ms-2">Check</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- Item 4 -->
|
||||||
|
<a href="#" class="text-decoration-none text-dark p-3 rounded-3 d-flex align-items-center justify-content-between transition-all custom-list-item"
|
||||||
|
style="background: rgba(255, 255, 255, 0.7); border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;"
|
||||||
|
onmouseover="this.style.background='#ffffff'; this.style.transform='translateX(5px)'; this.style.boxShadow='0 5px 15px rgba(0,0,0,0.08)';"
|
||||||
|
onmouseout="this.style.background='rgba(255, 255, 255, 0.7)'; this.style.transform='translateX(0)'; this.style.boxShadow='none';" onclick="studentlogin()">
|
||||||
|
|
||||||
|
<div class="d-flex align-items-center gap-3">
|
||||||
|
<div class="rounded-circle d-flex align-items-center justify-content-center flex-shrink-0"
|
||||||
|
style="width: 48px; height: 48px; background-color: rgb(108, 55, 55); color: #fff;">
|
||||||
|
<i class="fa-solid fa-headset fs-5"></i>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h6 class="fw-bold mb-0 text-dark">Contact Support</h6>
|
||||||
|
<small class="text-muted">Get help & support</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span class="btn btn-sm btn-outline-dark rounded-pill px-3 ms-2">Help</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
<div class="mb-3" style="width: 60px; height: 60px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background-color: rgb(108, 55, 55);
|
|
||||||
color: #fff; transition: all 0.3s ease;">
|
|
||||||
<i class="fa-solid fa-book-bookmark fs-3"></i>
|
|
||||||
</div>
|
</div>
|
||||||
<span class="fw-bold text-dark fs-6 mt-auto">Student Handbook</span>
|
|
||||||
</a>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Link 3 -->
|
|
||||||
<div class="col-12 col-sm-6 col-lg-3">
|
|
||||||
<a href="#" class="text-decoration-none p-4 rounded-4 text-center d-flex flex-column align-items-center h-100 shadow-sm"
|
|
||||||
style="background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.4); transition: all 0.3s ease;"
|
|
||||||
onmouseover="this.style.transform='translateY(-8px)'; this.style.background='#ffffff'; this.style.boxShadow='0 15px 30px rgba(0,0,0,0.25)';"
|
|
||||||
onmouseout="this.style.transform='translateY(0)'; this.style.background='rgba(255, 255, 255, 0.85)'; this.style.boxShadow='none';">
|
|
||||||
|
|
||||||
<div class="mb-3" style="width: 60px; height: 60px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background-color: rgb(108, 55, 55);
|
|
||||||
color: #fff; transition: all 0.3s ease;">
|
|
||||||
<i class="fa-solid fa-file-lines fs-3"></i>
|
|
||||||
</div>
|
|
||||||
<span class="fw-bold text-dark fs-6 mt-auto">Examination Notices</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Link 4 -->
|
|
||||||
<div class="col-12 col-sm-6 col-lg-3">
|
|
||||||
<a href="#" class="text-decoration-none p-4 rounded-4 text-center d-flex flex-column align-items-center h-100 shadow-sm"
|
|
||||||
style="background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.4); transition: all 0.3s ease;"
|
|
||||||
onmouseover="this.style.transform='translateY(-8px)'; this.style.background='#ffffff'; this.style.boxShadow='0 15px 30px rgba(0,0,0,0.25)';"
|
|
||||||
onmouseout="this.style.transform='translateY(0)'; this.style.background='rgba(255, 254, 254, 0.85)'; this.style.boxShadow='none';">
|
|
||||||
|
|
||||||
<div class="mb-3" style="width: 60px; height: 60px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background-color: rgb(108, 55, 55);
|
|
||||||
color: #fff;; transition: all 0.3s ease;">
|
|
||||||
<i class="fa-solid fa-headset fs-3" ></i>
|
|
||||||
</div>
|
|
||||||
<span class="fw-bold text-dark fs-6 mt-auto">Contact Support</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -457,7 +489,7 @@ body {
|
||||||
|
|
||||||
<div class="modal-footer d-flex gap-2 justify-content-center">
|
<div class="modal-footer d-flex gap-2 justify-content-center">
|
||||||
<button type="button" class="btn btn-modal-cancel" data-bs-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-modal-cancel" data-bs-dismiss="modal">Cancel</button>
|
||||||
<button type="submit" class="btn btn-modal-login"> Login </button>
|
<button type="submit" class="btn btn-modal-login" style="color: #fff; background-color: #5a212af5; border-color: #007bff;"> Login </button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -543,7 +543,6 @@ body {
|
||||||
|
|
||||||
<div class="modal-body p-3 p-md-4">
|
<div class="modal-body p-3 p-md-4">
|
||||||
<form id="courseFinderForm">
|
<form id="courseFinderForm">
|
||||||
|
|
||||||
{{-- Qualification Field --}}
|
{{-- Qualification Field --}}
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="educationLevel" class="form-label fw-semibold text-dark small fs-6">
|
<label for="educationLevel" class="form-label fw-semibold text-dark small fs-6">
|
||||||
|
|
@ -567,6 +566,7 @@ body {
|
||||||
<option value="mechanical">Automotive Mechanical & Diagnostics</option>
|
<option value="mechanical">Automotive Mechanical & Diagnostics</option>
|
||||||
<option value="ev">Electric Vehicles (EV) & Battery Technology</option>
|
<option value="ev">Electric Vehicles (EV) & Battery Technology</option>
|
||||||
<option value="all">General Automotive Engineering (All Areas)</option>
|
<option value="all">General Automotive Engineering (All Areas)</option>
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -704,7 +704,7 @@ body {
|
||||||
<p class="small text-muted mb-2">${course.desc.substring(0, 60)}...</p>
|
<p class="small text-muted mb-2">${course.desc.substring(0, 60)}...</p>
|
||||||
</div>
|
</div>
|
||||||
<a href="/courses" class="btn btn-sm btn-outline-primary mt-2" style="color: #fff;
|
<a href="/courses" class="btn btn-sm btn-outline-primary mt-2" style="color: #fff;
|
||||||
background: #953f3f;border-color:white;">View Details</a>
|
background: #953f3f;border-color:white;">View Details</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,8 @@ Route::middleware(['auth'])->group(function () {
|
||||||
Route::middleware('guest')->group(function () {
|
Route::middleware('guest')->group(function () {
|
||||||
|
|
||||||
Route::get('/password/reset', [ForgotPasswordController::class, 'index'])->name('password.request');
|
Route::get('/password/reset', [ForgotPasswordController::class, 'index'])->name('password.request');
|
||||||
Route::post('/resetEmail', [ForgotPasswordController::class, 'resetEmail'])->name('password.email');
|
Route::post('/resetEmail', [ForgotPasswordController::class, 'resetEmail'])->name('password.email');
|
||||||
|
|
||||||
Route::post('/verify-otp', [ForgotPasswordController::class, 'verifyOtpEmail'])->name('password.verify.otp');
|
Route::post('/verify-otp', [ForgotPasswordController::class, 'verifyOtpEmail'])->name('password.verify.otp');
|
||||||
|
|
||||||
|
|
||||||
Route::post('/update-password', [ForgotPasswordController::class, 'updatePassword'])->name('password.update');
|
Route::post('/update-password', [ForgotPasswordController::class, 'updatePassword'])->name('password.update');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue