# Implementing 6 Placeholder Routes

Six routes currently return plain-text placeholder strings and need real controllers + blade views.

---

## Proposed Changes

### 1. OPAC – `/opac/lists`
> **What it is**: A public reader-facing page where patrons can browse shared reading lists ("virtual shelves") and create personal ones.

#### [MODIFY] [web.php](file:///d:/MTU-ONLINE/opac_ils-lite/routes/web.php)
- Point `/opac/lists` to `OpacController@lists`

#### [MODIFY] [OpacController.php](file:///d:/MTU-ONLINE/opac_ils-lite/app/Http/Controllers/Opac/OpacController.php)
- Add `lists()` method, queries the `virtualshelves` table (or shows demo data)

#### [NEW] `resources/views/opac/lists.blade.php`
- Lists public shelves with name, owner, number of items
- "Add a list" form for logged-in users (demo)

---

### 2. Staff – `/dashboard/about`
> **What it is**: The "About Koha" system info page showing version numbers, Perl module versions, server environment details.

#### [MODIFY] [web.php](file:///d:/MTU-ONLINE/opac_ils-lite/routes/web.php)
- Point `/dashboard/about` to `StaffController@about`

#### [MODIFY] [StaffController.php](file:///d:/MTU-ONLINE/opac_ils-lite/app/Http/Controllers/Staff/StaffController.php)
- Add `about()` method, passes PHP/Laravel version info

#### [NEW] `resources/views/staff/about.blade.php`
- Koha v3.20 branding, PHP version, DB connection info, server env

---

### 3. Staff – `/dashboard/coursereserves`
> **What it is**: Course Reserves module — librarians link titles from the catalog to course reading lists for instructors.

#### [NEW] `app/Http/Controllers/Staff/CourseReservesController.php`
- `index()` — lists reserves grouped by course
- `store()` — creates a new reserve entry

#### [MODIFY] [web.php](file:///d:/MTU-ONLINE/opac_ils-lite/routes/web.php)
- Point routes to `CourseReservesController`

#### [NEW] `resources/views/staff/coursereserves/index.blade.php`
- Table: Course Name, Instructor, Title, Barcode, Status
- "Add to reserves" form with biblio title search

---

### 4. Staff – `/dashboard/authorities`
> **What it is**: Authority file browser — manages authorised headings (name, subject, geographic, etc.) used to keep catalog data clean.

#### [NEW] `app/Http/Controllers/Staff/AuthoritiesController.php`
- `index()` — search authority headings in `auth_header` table (or mock)
- `show($id)` — detail view of a heading's full record

#### [MODIFY] [web.php](file:///d:/MTU-ONLINE/opac_ils-lite/routes/web.php)
- Point routes to `AuthoritiesController`

#### [NEW] `resources/views/staff/authorities/index.blade.php`
- Search box by heading type (Personal Name, Subject, Corporate)
- Results table with Heading, Authority type, Usage count
- Link to detail view

#### [NEW] `resources/views/staff/authorities/show.blade.php`
- Shows the full authority record fields (100/110/150 MARC tags)

---

### 5. Staff – `/dashboard/circulation/renew`
> **What it is**: A dedicated Renewal tab — librarians enter an item barcode (or patron card) to extend the loan period.

#### [MODIFY] [CirculationController.php](file:///d:/MTU-ONLINE/opac_ils-lite/app/Http/Controllers/Staff/CirculationController.php)
- Add `renew(Request $request)` method
- Add `processRenew(Request $request)` method — extends `date_due` by 21 days on the `issues` table

#### [MODIFY] [web.php](file:///d:/MTU-ONLINE/opac_ils-lite/routes/web.php)
- `GET /circulation/renew` → `CirculationController@renew`
- `POST /circulation/renew` → `CirculationController@processRenew`

#### [NEW] `resources/views/staff/circulation/renew.blade.php`
- Search by barcode → shows current loan + patron info
- Renew button → updates due date + shows success flash

---

### 6. Staff – `/dashboard/administration`
> **What it is**: The Koha Administration hub — system-wide settings: preferences, libraries, item types, patron categories, circulation rules, MARC frameworks.

#### [NEW] `app/Http/Controllers/Staff/AdministrationController.php`
- `index()` — administration home with links to all sub-sections
- `preferences()`, `libraries()`, `itemTypes()`, `patronCategories()`, `circRules()`, `marcFrameworks()` — each reads from DB and renders a view

#### [MODIFY] [web.php](file:///d:/MTU-ONLINE/opac_ils-lite/routes/web.php)
- Wire all `/administration/*` sub-routes to `AdministrationController`

#### [NEW] `resources/views/staff/administration/index.blade.php`
- Categorised grid of settings links (Catalog, Patrons, Circulation, System)

#### [NEW] `resources/views/staff/administration/preferences.blade.php`
- Tabbed sections: OPAC, Circulation, Cataloging, Patrons (toggle switches)

#### [NEW] `resources/views/staff/administration/libraries.blade.php`
- Table of library branches from DB

#### [NEW] `resources/views/staff/administration/item_types.blade.php`
- Table of item types from DB

#### [NEW] `resources/views/staff/administration/patron_categories.blade.php`
- Table of patron categories from DB

---

## Verification Plan

### Automated
- `php artisan route:list` to confirm all 6 routes resolve correctly

### Manual Browser
- Verify each URL shows a real rendered page (not placeholder text)
- Test `/dashboard/circulation/renew` with a real barcode to confirm loan extension
- Test `/dashboard/administration/libraries` shows seeded branches
