ui 2
This commit is contained in:
parent
d3817ac619
commit
86a00cb09e
|
|
@ -0,0 +1,333 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Dompdf\Dompdf;
|
||||
use Dompdf\Options;
|
||||
|
||||
class DocumentDownloadController extends Controller
|
||||
{
|
||||
/**
|
||||
* Check if student is authenticated via session or auth guard
|
||||
*/
|
||||
private function isAuthenticated(Request $request)
|
||||
{
|
||||
return $request->session()->has('student_id') ||
|
||||
$request->session()->has('student_log_id') ||
|
||||
auth()->check();
|
||||
}
|
||||
|
||||
/**
|
||||
* Academic Calendar PDF Download
|
||||
*/
|
||||
public function downloadAcademicCalendar(Request $request)
|
||||
{
|
||||
if (!$this->isAuthenticated($request)) {
|
||||
return redirect()->route('students')->with('error', 'Please login first to download official academic documents!');
|
||||
}
|
||||
|
||||
$title = "Official Academic Calendar 2026";
|
||||
$subtitle = "Semester Schedules, Lecture Weeks, Holidays & Important Deadlines";
|
||||
$refNo = "REF: AC-2026-CAL";
|
||||
|
||||
$tables = [
|
||||
[
|
||||
'title' => '1. SEMESTER DATES & LECTURE WEEKS',
|
||||
'headers' => ['Academic Event / Phase', 'Start Date', 'End Date', 'Status'],
|
||||
'rows' => [
|
||||
['Semester 1 Commencement', 'January 15, 2026', 'March 20, 2026', 'Active'],
|
||||
['Mid-Semester Recess', 'March 21, 2026', 'March 29, 2026', 'Scheduled'],
|
||||
['Practical Lab Intensive Weeks', 'March 30, 2026', 'May 15, 2026', 'Scheduled'],
|
||||
['Semester 1 Final Examinations', 'June 01, 2026', 'June 20, 2026', 'Scheduled'],
|
||||
['Semester 2 Commencement', 'July 15, 2026', 'November 30, 2026', 'Upcoming']
|
||||
]
|
||||
],
|
||||
[
|
||||
'title' => '2. INSTITUTIONAL & PUBLIC HOLIDAYS',
|
||||
'headers' => ['Holiday / Event Name', 'Date(s)', 'Impact on Classes'],
|
||||
'rows' => [
|
||||
['National Independence Day', 'February 04, 2026', 'Campus Closed'],
|
||||
['Sinhala & Tamil New Year Vacation', 'April 12 - April 18, 2026', 'No Lectures / Workshops'],
|
||||
['Vesak Festival Holiday', 'May 23 - May 25, 2026', 'Campus Closed'],
|
||||
['Annual Automotive Tech Symposium', 'August 20, 2026', 'Special Event (Mandatory Attendance)']
|
||||
]
|
||||
],
|
||||
[
|
||||
'title' => '3. CRITICAL ACADEMIC DEADLINES',
|
||||
'headers' => ['Deadline Description', 'Cut-off Date', 'Action Required'],
|
||||
'rows' => [
|
||||
['Course Module Drop / Add Period', 'February 10, 2026', 'Submit online form'],
|
||||
['Mid-Term Assignment 1 Submission', 'March 18, 2026', 'Upload via Portal'],
|
||||
['Examination Fee Clearance', 'May 15, 2026', 'Settle at Finance Office']
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
return $this->renderPdf($title, $subtitle, $refNo, $tables, "Academic_Calendar_2026.pdf");
|
||||
}
|
||||
|
||||
/**
|
||||
* Student Handbook PDF Download
|
||||
*/
|
||||
public function downloadStudentHandbook(Request $request)
|
||||
{
|
||||
if (!$this->isAuthenticated($request)) {
|
||||
return redirect()->route('students')->with('error', 'Please login first to download official academic documents!');
|
||||
}
|
||||
|
||||
$title = "Student Handbook & Code of Conduct";
|
||||
$subtitle = "Academic Regulations, Workshop Safety Rules & Grading Policies";
|
||||
$refNo = "REF: HB-2026-REG";
|
||||
|
||||
$tables = [
|
||||
[
|
||||
'title' => '1. ATTENDANCE & ACADEMIC INTEGRITY POLICIES',
|
||||
'headers' => ['Regulation Category', 'Requirement / Policy Detail', 'Penalty for Violation'],
|
||||
'rows' => [
|
||||
['Class Attendance', 'Minimum 80% attendance required for practical labs and lectures.', 'Barred from Final Exams'],
|
||||
['Academic Honesty', 'Zero tolerance for plagiarism, cheating, or proxy attendance.', 'Disciplinary Hearing & Grade F'],
|
||||
['Enrollment Status', 'Students must maintain continuous registration every term.', 'De-registration after 30 days']
|
||||
]
|
||||
],
|
||||
[
|
||||
'title' => '2. WORKSHOP & HIGH-VOLTAGE LAB SAFETY RULES',
|
||||
'headers' => ['Safety Protocol', 'Required Equipment / PPE', 'Compliance Rule'],
|
||||
'rows' => [
|
||||
['General Workshop PPE', 'Safety boots (steel toe), protective eyewear, lab coats', 'Mandatory at all times'],
|
||||
['Hybrid / EV High Voltage Labs', 'Class 0 rated insulated safety gloves (1000V rated)', 'Strict supervision required'],
|
||||
['Vehicle Lift Operation', 'Hydraulic lift locks must be verified before underbody work', 'Never operate alone']
|
||||
]
|
||||
],
|
||||
[
|
||||
'title' => '3. ACADEMIC GRADING SCHEME',
|
||||
'headers' => ['Grade', 'Percentage Range', 'GPA Value', 'Classification'],
|
||||
'rows' => [
|
||||
['A+', '90% - 100%', '4.00', 'High Distinction'],
|
||||
['A', '80% - 89%', '3.70', 'Distinction'],
|
||||
['B', '70% - 79%', '3.00', 'Credit Pass'],
|
||||
['C', '55% - 69%', '2.00', 'Pass'],
|
||||
['F', 'Below 50%', '0.00', 'Fail (Re-sit Required)']
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
return $this->renderPdf($title, $subtitle, $refNo, $tables, "Student_Handbook_2026.pdf");
|
||||
}
|
||||
|
||||
/**
|
||||
* Exam Code of Conduct PDF Download
|
||||
*/
|
||||
public function downloadExamCode(Request $request)
|
||||
{
|
||||
if (!$this->isAuthenticated($request)) {
|
||||
return redirect()->route('students')->with('error', 'Please login first to download official academic documents!');
|
||||
}
|
||||
|
||||
$title = "Exam Code of Conduct & Rules";
|
||||
$subtitle = "Examination Hall Admission, Practical Station Rules & Disciplinary Code";
|
||||
$refNo = "REF: EX-2026-RULES";
|
||||
|
||||
$tables = [
|
||||
[
|
||||
'title' => '1. EXAMINATION HALL ADMISSION RULES',
|
||||
'headers' => ['Rule Item', 'Requirement Detail', 'Enforcement'],
|
||||
'rows' => [
|
||||
['Student Identification', 'Valid Student ID Card & Exam Admission Ticket required.', 'Strictly Enforced'],
|
||||
['Entry Time Limit', 'Candidates admitted up to 30 minutes after commencement.', 'No extra time given'],
|
||||
['Prohibited Items', 'Mobile phones, smartwatches, programmable notes, bags.', 'Immediate Confiscation']
|
||||
]
|
||||
],
|
||||
[
|
||||
'title' => '2. PRACTICAL DIAGNOSTIC EXAMINATIONS',
|
||||
'headers' => ['Station Requirement', 'Procedure Standard', 'Evaluator Note'],
|
||||
'rows' => [
|
||||
['Station Attire', 'Clean workshop overall and non-slip safety shoes required.', 'Visual inspection at entry'],
|
||||
['Tool Calibration', 'Verify diagnostic scan tools before beginning fault-finding.', 'Instructor verification'],
|
||||
['Safety Shutoff', 'Always disengage high-voltage battery service plug first.', 'Immediate disqualification if missed']
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
return $this->renderPdf($title, $subtitle, $refNo, $tables, "Exam_Code_of_Conduct_2026.pdf");
|
||||
}
|
||||
|
||||
/**
|
||||
* Student Helpdesk Guide PDF Download
|
||||
*/
|
||||
public function downloadHelpdeskGuide(Request $request)
|
||||
{
|
||||
if (!$this->isAuthenticated($request)) {
|
||||
return redirect()->route('students')->with('error', 'Please login first to download official academic documents!');
|
||||
}
|
||||
|
||||
$title = "Student Helpdesk & Support Directory";
|
||||
$subtitle = "Portal Assistance, Technical Enquiries & Department Contact List";
|
||||
$refNo = "REF: HD-2026-SUPP";
|
||||
|
||||
$tables = [
|
||||
[
|
||||
'title' => '1. PORTAL & IT SUPPORT CHANNELS',
|
||||
'headers' => ['Support Issue', 'Resolution Method', 'Response Time'],
|
||||
'rows' => [
|
||||
['Password & PIN Reset', 'Self-service PIN reset or visit IT Help Desk (Level 2)', 'Instant / 15 Mins'],
|
||||
['Module Material Access', 'Email portal-support@autoedu.lk with Student ID', 'Within 2 Hours'],
|
||||
['Wi-Fi & Email Setup', 'Visit Student IT Counter with Student ID Card', 'Immediate']
|
||||
]
|
||||
],
|
||||
[
|
||||
'title' => '2. DEPARTMENT CONTACT DIRECTORY',
|
||||
'headers' => ['Department Name', 'Location', 'Extension', 'Official Email'],
|
||||
'rows' => [
|
||||
['Student Affairs & Registration', 'Admin Block - Ground Floor', 'Ext. 101', 'students@autoedu.lk'],
|
||||
['Finance & Tuition Payments', 'Admin Block - Room 104', 'Ext. 104', 'finance@autoedu.lk'],
|
||||
['Examinations & Results Branch', 'Academic Wing - Room 202', 'Ext. 108', 'exams@autoedu.lk'],
|
||||
['Automotive Workshop Office', 'Lab Complex - Block B', 'Ext. 112', 'workshop@autoedu.lk']
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
return $this->renderPdf($title, $subtitle, $refNo, $tables, "Student_Helpdesk_Support_Guide.pdf");
|
||||
}
|
||||
|
||||
/**
|
||||
* Render HTML to DomPDF output
|
||||
*/
|
||||
private function renderPdf($title, $subtitle, $refNo, $tables, $filename)
|
||||
{
|
||||
$studentName = session('student_name', 'Authenticated Student');
|
||||
$studentId = session('student_id', 'STU-2026-0042');
|
||||
$dateStr = date('F d, Y');
|
||||
|
||||
$tablesHtml = '';
|
||||
foreach ($tables as $table) {
|
||||
$tablesHtml .= '<div class="section-header">' . htmlspecialchars($table['title']) . '</div>';
|
||||
$tablesHtml .= '<table class="content-table"><thead><tr>';
|
||||
foreach ($table['headers'] as $th) {
|
||||
$tablesHtml .= '<th>' . htmlspecialchars($th) . '</th>';
|
||||
}
|
||||
$tablesHtml .= '</tr></thead><tbody>';
|
||||
foreach ($table['rows'] as $row) {
|
||||
$tablesHtml .= '<tr>';
|
||||
foreach ($row as $cell) {
|
||||
$tablesHtml .= '<td>' . htmlspecialchars($cell) . '</td>';
|
||||
}
|
||||
$tablesHtml .= '</tr>';
|
||||
}
|
||||
$tablesHtml .= 'tbody></table>';
|
||||
}
|
||||
|
||||
$html = '
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>' . htmlspecialchars($title) . '</title>
|
||||
<style>
|
||||
@page { margin: 25px 35px; }
|
||||
body { font-family: "Helvetica", "Arial", sans-serif; color: #1E293B; font-size: 11px; line-height: 1.5; }
|
||||
|
||||
.header-table { width: 100%; border-collapse: collapse; margin-bottom: 15px; border-bottom: 3px solid #3E51B8; padding-bottom: 10px; }
|
||||
.logo-title { font-size: 20px; font-weight: bold; color: #0F172A; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.logo-sub { font-size: 10px; color: #64748B; margin-top: 3px; font-weight: normal; }
|
||||
.meta-badge { background: #0F172A; color: #FFE618; font-size: 9.5px; font-weight: bold; padding: 4px 10px; border-radius: 4px; display: inline-block; text-align: right; }
|
||||
|
||||
.doc-banner { background: #3E51B8; color: #ffffff; padding: 14px 18px; border-radius: 6px; margin-bottom: 18px; }
|
||||
.doc-banner h1 { margin: 0; font-size: 16px; font-weight: bold; text-transform: uppercase; }
|
||||
.doc-banner p { margin: 4px 0 0 0; font-size: 10.5px; color: #E2E8F0; }
|
||||
|
||||
.student-info-bar { background: #F8FAFC; border: 1px solid #E2E8F0; border-radius: 6px; padding: 8px 14px; margin-bottom: 18px; width: 100%; border-collapse: collapse; }
|
||||
.student-info-bar td { font-size: 10px; color: #334155; }
|
||||
.student-info-bar td strong { color: #0F172A; }
|
||||
|
||||
.section-header { background: #F1F5F9; border-left: 4px solid #BC1A1A; padding: 6px 10px; font-size: 11.5px; font-weight: bold; color: #0F172A; margin-top: 16px; margin-bottom: 8px; text-transform: uppercase; }
|
||||
|
||||
.content-table { width: 100%; border-collapse: collapse; margin-bottom: 14px; }
|
||||
.content-table th { background: #3E51B8; color: #ffffff; padding: 7px 10px; text-align: left; font-size: 10px; text-transform: uppercase; font-weight: bold; }
|
||||
.content-table td { padding: 7px 10px; border-bottom: 1px solid #E2E8F0; font-size: 10.5px; color: #334155; }
|
||||
.content-table tr:nth-child(even) td { background: #F8FAFC; }
|
||||
|
||||
.footer-box { margin-top: 25px; border-top: 1px solid #CBD5E1; padding-top: 10px; width: 100%; border-collapse: collapse; }
|
||||
.footer-box td { font-size: 9px; color: #64748B; }
|
||||
.stamp-box { border: 1.5px dashed #94A3B8; border-radius: 6px; padding: 8px; text-align: center; color: #475569; font-size: 8.5px; font-weight: bold; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- Header -->
|
||||
<table class="header-table">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="logo-title">AutoEdu Automotive Academy</div>
|
||||
<div class="logo-sub">Department of Automotive Engineering & Applied Research | ISO 9001 Certified</div>
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
<div class="meta-badge">' . htmlspecialchars($refNo) . '</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- Document Banner -->
|
||||
<div class="doc-banner">
|
||||
<h1>' . htmlspecialchars($title) . '</h1>
|
||||
<p>' . htmlspecialchars($subtitle) . '</p>
|
||||
</div>
|
||||
|
||||
<!-- Student Info Bar -->
|
||||
<table class="student-info-bar">
|
||||
<tr>
|
||||
<td>Issued To: <strong>' . htmlspecialchars($studentName) . '</strong></td>
|
||||
<td>Student ID: <strong>' . htmlspecialchars($studentId) . '</strong></td>
|
||||
<td style="text-align: right;">Issue Date: <strong>' . htmlspecialchars($dateStr) . '</strong></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- Main Content Tables -->
|
||||
' . $tablesHtml . '
|
||||
|
||||
<!-- Footer -->
|
||||
<table class="footer-box">
|
||||
<tr>
|
||||
<td style="vertical-align: top;">
|
||||
<strong>AutoEdu Automotive Engineering Institute</strong><br>
|
||||
Main Campus, Academic Complex, Colombo, Sri Lanka<br>
|
||||
Hotline: +94 11 234 5678 | Email: support@autoedu.lk | Web: www.autoedu.lk<br>
|
||||
<em>Notice: This is an official computer-generated document verified for active student session.</em>
|
||||
</td>
|
||||
<td style="text-align: right; vertical-align: top; width: 150px;">
|
||||
<div class="stamp-box">
|
||||
<span style="color: #BC1A1A; font-weight: bold;">[ OFFICIAL SEAL ]</span><br>
|
||||
AUTHENTICATED DIGITAL COPY
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
';
|
||||
|
||||
try {
|
||||
$options = new Options();
|
||||
$options->set('isHtml5ParserEnabled', true);
|
||||
$options->set('isRemoteEnabled', true);
|
||||
|
||||
$dompdf = new Dompdf($options);
|
||||
$dompdf->loadHtml($html);
|
||||
$dompdf->setPaper('A4', 'portrait');
|
||||
$dompdf->render();
|
||||
|
||||
return response($dompdf->output(), 200, [
|
||||
'Content-Type' => 'application/pdf',
|
||||
'Content-Disposition' => 'attachment; filename="' . $filename . '"',
|
||||
'Cache-Control' => 'private, max-age=0, must-revalidate',
|
||||
'Pragma' => 'public'
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
// Fallback response if rendering fails
|
||||
return response($html, 200, [
|
||||
'Content-Type' => 'text/html',
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.2",
|
||||
"barryvdh/laravel-dompdf": "^3.1",
|
||||
"laravel/framework": "^12.0",
|
||||
"laravel/tinker": "^2.10.1"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,8 +4,85 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "53b5d56b3b7e3cbac1713e68c8850f6c",
|
||||
"content-hash": "bf969a713724ba1caaf90ec885c262c2",
|
||||
"packages": [
|
||||
{
|
||||
"name": "barryvdh/laravel-dompdf",
|
||||
"version": "v3.1.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-dompdf.git",
|
||||
"reference": "ee3b72b19ccdf57d0243116ecb2b90261344dedc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/ee3b72b19ccdf57d0243116ecb2b90261344dedc",
|
||||
"reference": "ee3b72b19ccdf57d0243116ecb2b90261344dedc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"dompdf/dompdf": "^3.0",
|
||||
"illuminate/support": "^9|^10|^11|^12|^13.0",
|
||||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"larastan/larastan": "^2.7|^3.0",
|
||||
"orchestra/testbench": "^7|^8|^9.16|^10|^11.0",
|
||||
"phpro/grumphp": "^2.5",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"aliases": {
|
||||
"PDF": "Barryvdh\\DomPDF\\Facade\\Pdf",
|
||||
"Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf"
|
||||
},
|
||||
"providers": [
|
||||
"Barryvdh\\DomPDF\\ServiceProvider"
|
||||
]
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-master": "3.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Barryvdh\\DomPDF\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A DOMPDF Wrapper for Laravel",
|
||||
"keywords": [
|
||||
"dompdf",
|
||||
"laravel",
|
||||
"pdf"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/barryvdh/laravel-dompdf/issues",
|
||||
"source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://fruitcake.nl",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/barryvdh",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-02-21T08:51:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "brick/math",
|
||||
"version": "0.14.8",
|
||||
|
|
@ -377,6 +454,161 @@
|
|||
],
|
||||
"time": "2024-02-05T11:56:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dompdf/dompdf",
|
||||
"version": "v3.1.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dompdf/dompdf.git",
|
||||
"reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/6d4b4eb8500f7a786da8868ba463a71b725a4005",
|
||||
"reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"dompdf/php-font-lib": "^1.0.0",
|
||||
"dompdf/php-svg-lib": "^1.0.0",
|
||||
"ext-dom": "*",
|
||||
"ext-mbstring": "*",
|
||||
"masterminds/html5": "^2.0",
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-gd": "*",
|
||||
"ext-json": "*",
|
||||
"ext-zip": "*",
|
||||
"mockery/mockery": "^1.3",
|
||||
"phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11",
|
||||
"squizlabs/php_codesniffer": "^3.5",
|
||||
"symfony/process": "^4.4 || ^5.4 || ^6.2 || ^7.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-gd": "Needed to process images",
|
||||
"ext-gmagick": "Improves image processing performance",
|
||||
"ext-imagick": "Improves image processing performance",
|
||||
"ext-zlib": "Needed for pdf stream compression"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Dompdf\\": "src/"
|
||||
},
|
||||
"classmap": [
|
||||
"lib/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-2.1"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "The Dompdf Community",
|
||||
"homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md"
|
||||
}
|
||||
],
|
||||
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
|
||||
"homepage": "https://github.com/dompdf/dompdf",
|
||||
"support": {
|
||||
"issues": "https://github.com/dompdf/dompdf/issues",
|
||||
"source": "https://github.com/dompdf/dompdf/tree/v3.1.6"
|
||||
},
|
||||
"time": "2026-07-20T12:29:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dompdf/php-font-lib",
|
||||
"version": "1.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dompdf/php-font-lib.git",
|
||||
"reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a6e9a688a2a80016ac080b97be73d3e10c444c9a",
|
||||
"reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11 || ^12"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"FontLib\\": "src/FontLib"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-2.1-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "The FontLib Community",
|
||||
"homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md"
|
||||
}
|
||||
],
|
||||
"description": "A library to read, parse, export and make subsets of different types of font files.",
|
||||
"homepage": "https://github.com/dompdf/php-font-lib",
|
||||
"support": {
|
||||
"issues": "https://github.com/dompdf/php-font-lib/issues",
|
||||
"source": "https://github.com/dompdf/php-font-lib/tree/1.0.2"
|
||||
},
|
||||
"time": "2026-01-20T14:10:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dompdf/php-svg-lib",
|
||||
"version": "1.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dompdf/php-svg-lib.git",
|
||||
"reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8259ffb930817e72b1ff1caef5d226501f3dfeb1",
|
||||
"reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"php": "^7.1 || ^8.0",
|
||||
"sabberworm/php-css-parser": "^8.4 || ^9.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Svg\\": "src/Svg"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-3.0-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "The SvgLib Community",
|
||||
"homepage": "https://github.com/dompdf/php-svg-lib/blob/master/AUTHORS.md"
|
||||
}
|
||||
],
|
||||
"description": "A library to read, parse and export to PDF SVG files.",
|
||||
"homepage": "https://github.com/dompdf/php-svg-lib",
|
||||
"support": {
|
||||
"issues": "https://github.com/dompdf/php-svg-lib/issues",
|
||||
"source": "https://github.com/dompdf/php-svg-lib/tree/1.0.2"
|
||||
},
|
||||
"time": "2026-01-02T16:01:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dragonmantank/cron-expression",
|
||||
"version": "v3.6.0",
|
||||
|
|
@ -2025,6 +2257,73 @@
|
|||
],
|
||||
"time": "2026-03-08T20:05:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "masterminds/html5",
|
||||
"version": "2.10.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Masterminds/html5-php.git",
|
||||
"reference": "fd5018f6815fff903946d0564977b44ce8010e29"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fd5018f6815fff903946d0564977b44ce8010e29",
|
||||
"reference": "fd5018f6815fff903946d0564977b44ce8010e29",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9 || ^10"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.7-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Masterminds\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Matt Butcher",
|
||||
"email": "technosophos@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Matt Farina",
|
||||
"email": "matt@mattfarina.com"
|
||||
},
|
||||
{
|
||||
"name": "Asmir Mustafic",
|
||||
"email": "goetas@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "An HTML5 parser and serializer.",
|
||||
"homepage": "http://masterminds.github.io/html5-php",
|
||||
"keywords": [
|
||||
"HTML5",
|
||||
"dom",
|
||||
"html",
|
||||
"parser",
|
||||
"querypath",
|
||||
"serializer",
|
||||
"xml"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/Masterminds/html5-php/issues",
|
||||
"source": "https://github.com/Masterminds/html5-php/tree/2.10.1"
|
||||
},
|
||||
"time": "2026-06-23T18:43:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "3.10.0",
|
||||
|
|
@ -3299,6 +3598,86 @@
|
|||
},
|
||||
"time": "2026-06-18T03:57:49+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sabberworm/php-css-parser",
|
||||
"version": "v9.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/MyIntervals/PHP-CSS-Parser.git",
|
||||
"reference": "fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f",
|
||||
"reference": "fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-iconv": "*",
|
||||
"php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
|
||||
"thecodingmachine/safe": "^1.3 || ^2.5 || ^3.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-parallel-lint/php-parallel-lint": "1.4.0",
|
||||
"phpstan/extension-installer": "1.4.3",
|
||||
"phpstan/phpstan": "1.12.33 || 2.2.2",
|
||||
"phpstan/phpstan-phpunit": "1.4.2 || 2.0.16",
|
||||
"phpstan/phpstan-strict-rules": "1.6.2 || 2.0.11",
|
||||
"phpunit/phpunit": "8.5.52",
|
||||
"rawr/phpunit-data-provider": "3.3.1",
|
||||
"rector/rector": "1.2.10 || 2.4.6",
|
||||
"rector/type-perfect": "1.0.0 || 2.1.3",
|
||||
"squizlabs/php_codesniffer": "4.0.1",
|
||||
"thecodingmachine/phpstan-safe-rule": "1.2.0 || 1.4.3"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mbstring": "for parsing UTF-8 CSS"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "9.5.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/Rule/Rule.php",
|
||||
"src/RuleSet/RuleContainer.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Sabberworm\\CSS\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Raphael Schweikert"
|
||||
},
|
||||
{
|
||||
"name": "Oliver Klee",
|
||||
"email": "github@oliverklee.de"
|
||||
},
|
||||
{
|
||||
"name": "Jake Hotson",
|
||||
"email": "jake.github@qzdesign.co.uk"
|
||||
}
|
||||
],
|
||||
"description": "Parser for CSS Files written in PHP",
|
||||
"homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser",
|
||||
"keywords": [
|
||||
"css",
|
||||
"parser",
|
||||
"stylesheet"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues",
|
||||
"source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.4.0"
|
||||
},
|
||||
"time": "2026-06-18T15:10:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/clock",
|
||||
"version": "v7.4.8",
|
||||
|
|
@ -5808,6 +6187,149 @@
|
|||
],
|
||||
"time": "2026-06-08T20:24:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "thecodingmachine/safe",
|
||||
"version": "v3.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thecodingmachine/safe.git",
|
||||
"reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thecodingmachine/safe/zipball/705683a25bacf0d4860c7dea4d7947bfd09eea19",
|
||||
"reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-parallel-lint/php-parallel-lint": "^1.4",
|
||||
"phpstan/phpstan": "^2",
|
||||
"phpunit/phpunit": "^10",
|
||||
"squizlabs/php_codesniffer": "^3.2"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"lib/special_cases.php",
|
||||
"generated/apache.php",
|
||||
"generated/apcu.php",
|
||||
"generated/array.php",
|
||||
"generated/bzip2.php",
|
||||
"generated/calendar.php",
|
||||
"generated/classobj.php",
|
||||
"generated/com.php",
|
||||
"generated/cubrid.php",
|
||||
"generated/curl.php",
|
||||
"generated/datetime.php",
|
||||
"generated/dir.php",
|
||||
"generated/eio.php",
|
||||
"generated/errorfunc.php",
|
||||
"generated/exec.php",
|
||||
"generated/fileinfo.php",
|
||||
"generated/filesystem.php",
|
||||
"generated/filter.php",
|
||||
"generated/fpm.php",
|
||||
"generated/ftp.php",
|
||||
"generated/funchand.php",
|
||||
"generated/gettext.php",
|
||||
"generated/gmp.php",
|
||||
"generated/gnupg.php",
|
||||
"generated/hash.php",
|
||||
"generated/ibase.php",
|
||||
"generated/ibmDb2.php",
|
||||
"generated/iconv.php",
|
||||
"generated/image.php",
|
||||
"generated/imap.php",
|
||||
"generated/info.php",
|
||||
"generated/inotify.php",
|
||||
"generated/json.php",
|
||||
"generated/ldap.php",
|
||||
"generated/libxml.php",
|
||||
"generated/lzf.php",
|
||||
"generated/mailparse.php",
|
||||
"generated/mbstring.php",
|
||||
"generated/misc.php",
|
||||
"generated/mysql.php",
|
||||
"generated/mysqli.php",
|
||||
"generated/network.php",
|
||||
"generated/oci8.php",
|
||||
"generated/opcache.php",
|
||||
"generated/openssl.php",
|
||||
"generated/outcontrol.php",
|
||||
"generated/pcntl.php",
|
||||
"generated/pcre.php",
|
||||
"generated/pgsql.php",
|
||||
"generated/posix.php",
|
||||
"generated/ps.php",
|
||||
"generated/pspell.php",
|
||||
"generated/readline.php",
|
||||
"generated/rnp.php",
|
||||
"generated/rpminfo.php",
|
||||
"generated/rrd.php",
|
||||
"generated/sem.php",
|
||||
"generated/session.php",
|
||||
"generated/shmop.php",
|
||||
"generated/sockets.php",
|
||||
"generated/sodium.php",
|
||||
"generated/solr.php",
|
||||
"generated/spl.php",
|
||||
"generated/sqlsrv.php",
|
||||
"generated/ssdeep.php",
|
||||
"generated/ssh2.php",
|
||||
"generated/stream.php",
|
||||
"generated/strings.php",
|
||||
"generated/swoole.php",
|
||||
"generated/uodbc.php",
|
||||
"generated/uopz.php",
|
||||
"generated/url.php",
|
||||
"generated/var.php",
|
||||
"generated/xdiff.php",
|
||||
"generated/xml.php",
|
||||
"generated/xmlrpc.php",
|
||||
"generated/yaml.php",
|
||||
"generated/yaz.php",
|
||||
"generated/zip.php",
|
||||
"generated/zlib.php"
|
||||
],
|
||||
"classmap": [
|
||||
"lib/DateTime.php",
|
||||
"lib/DateTimeImmutable.php",
|
||||
"lib/Exceptions/",
|
||||
"generated/Exceptions/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "PHP core functions that throw exceptions instead of returning FALSE on error",
|
||||
"support": {
|
||||
"issues": "https://github.com/thecodingmachine/safe/issues",
|
||||
"source": "https://github.com/thecodingmachine/safe/tree/v3.4.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/OskarStark",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/shish",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/silasjoisten",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/staabm",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-02-04T18:08:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tijsverkoyen/css-to-inline-styles",
|
||||
"version": "v2.4.0",
|
||||
|
|
|
|||
|
|
@ -291,6 +291,57 @@ body {
|
|||
|
||||
</div>
|
||||
|
||||
<!-- Official Document Downloads (PDF) Section -->
|
||||
<div class="section-title">
|
||||
Official Document Downloads (PDF)
|
||||
</div>
|
||||
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<a href="{{ route('student.download.calendar') }}" class="text-decoration-none" target="_blank">
|
||||
<div class="service-card text-center p-4">
|
||||
<i class="fa-solid fa-file-pdf text-danger mb-3" style="font-size: 38px;"></i>
|
||||
<h6 class="fw-bold text-dark">Academic Calendar</h6>
|
||||
<small class="text-muted d-block mb-3">Semester dates & holidays</small>
|
||||
<span class="btn btn-sm btn-outline-danger rounded-pill px-3"><i class="fa-solid fa-download me-1"></i> Download PDF</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<a href="{{ route('student.download.handbook') }}" class="text-decoration-none" target="_blank">
|
||||
<div class="service-card text-center p-4">
|
||||
<i class="fa-solid fa-file-pdf text-danger mb-3" style="font-size: 38px;"></i>
|
||||
<h6 class="fw-bold text-dark">Student Handbook</h6>
|
||||
<small class="text-muted d-block mb-3">Rules & academic policies</small>
|
||||
<span class="btn btn-sm btn-outline-danger rounded-pill px-3"><i class="fa-solid fa-download me-1"></i> Download PDF</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<a href="{{ route('student.download.examcode') }}" class="text-decoration-none" target="_blank">
|
||||
<div class="service-card text-center p-4">
|
||||
<i class="fa-solid fa-file-pdf text-danger mb-3" style="font-size: 38px;"></i>
|
||||
<h6 class="fw-bold text-dark">Exam Code of Conduct</h6>
|
||||
<small class="text-muted d-block mb-3">Rules & exam guidelines</small>
|
||||
<span class="btn btn-sm btn-outline-danger rounded-pill px-3"><i class="fa-solid fa-download me-1"></i> Download PDF</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6">
|
||||
<a href="{{ route('student.download.helpdesk') }}" class="text-decoration-none" target="_blank">
|
||||
<div class="service-card text-center p-4">
|
||||
<i class="fa-solid fa-file-pdf text-danger mb-3" style="font-size: 38px;"></i>
|
||||
<h6 class="fw-bold text-dark">Helpdesk Support Guide</h6>
|
||||
<small class="text-muted d-block mb-3">Technical assistance guide</small>
|
||||
<span class="btn btn-sm btn-outline-danger rounded-pill px-3"><i class="fa-solid fa-download me-1"></i> Download PDF</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -19,6 +19,7 @@ use App\Http\Controllers\AdminProfileController;
|
|||
use App\Http\Controllers\AdminTimetableController;
|
||||
use App\Http\Controllers\AdminDashboardController;
|
||||
use App\Http\Controllers\welcomeController;
|
||||
use App\Http\Controllers\DocumentDownloadController;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
@ -125,6 +126,12 @@ Route::middleware(['web'])->group(function () {
|
|||
|
||||
Route::get('/mycourse', [CoureseAssignController::class, 'showMyCourse'])->name('mycourse');
|
||||
Route::get('/module/{id}', [CoureseAssignController::class, 'showModule'])->name('module.show');
|
||||
|
||||
/* Document Downloads */
|
||||
Route::get('/student/download/calendar', [DocumentDownloadController::class, 'downloadAcademicCalendar'])->name('student.download.calendar');
|
||||
Route::get('/student/download/handbook', [DocumentDownloadController::class, 'downloadStudentHandbook'])->name('student.download.handbook');
|
||||
Route::get('/student/download/exam-code', [DocumentDownloadController::class, 'downloadExamCode'])->name('student.download.examcode');
|
||||
Route::get('/student/download/helpdesk', [DocumentDownloadController::class, 'downloadHelpdeskGuide'])->name('student.download.helpdesk');
|
||||
});
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue