What it shows
-
Ticket queue
-
Escalations
-
Resolution notes
-
SLA tracking
Elements
-
Dropdown: #ddTicketStatus
-
Dropdown: #ddTicketPriority
-
Repeater: #repTickets
-
Text: #tSubject
-
Text: #tStatus
-
Text: #tPriority
-
Text: #tSlaDue
-
Button: #btnOpenTicket
-
-
Box: #boxTicketDetail (collapsed)
-
Text: #ticketTitle
-
Text: #ticketMeta
-
TextBox: #txtResolutionNotes
-
Dropdown: #ddUpdateStatus
-
Button: #btnSaveTicket
-
Button: #btnEscalate
-
Backend Admin Module (single backend entrypoint)
-
Create: /backend/admin-core.jsw (keeps page code thin, safer)
-
Exports (minimum):
-
getAdminContext() → role, license, institution, seat usage, alerts
-
listCohorts() / upsertCohort() / setCohortFacilitators()
-
searchMembers() / setMemberRoleAndSeat() / listRoleAudit()
-
getCohortGddiAggregates(cohortId) → pulls from GAS (cohort-only)
-
listCompliance(cohortId) / createIncident()
-
listTickets(filters) / updateTicket()
-
If you want, I’ll generate this admin-core.jsw next with defensive guards + audit logging + idempotency + no PII leakage.
-