first response initial pass

This commit is contained in:
Mark Gregory
2026-06-23 10:32:40 +01:00
parent 68e29fca3d
commit c86c804bcf
4 changed files with 81 additions and 20 deletions
@@ -469,14 +469,40 @@
@enderror
</div>
@if ($canSeeInternalNotes)
<label
class="mt-3 flex items-center gap-2 text-xs font-semibold text-zinc-700 dark:text-zinc-200">
<input type="checkbox" name="internal" value="1" @checked(old('internal'))
class="rounded border-zinc-300">
MPBA internal note only
</label>
@endif
<div class="rounded-xl border border-zinc-200 bg-white p-3 shadow-sm dark:border-zinc-700 dark:bg-zinc-950">
<div class="mb-3 flex items-start justify-between gap-3">
<div>
<p class="text-xs font-extrabold uppercase tracking-[0.16em] text-zinc-500 dark:text-zinc-400">Visibility</p>
<p class="mt-1 text-sm font-semibold text-zinc-700 dark:text-zinc-200">Choose whether this response is customer visible.</p>
</div>
</div>
@if ($canSeeInternalNotes)
<div class="grid gap-3 sm:grid-cols-2">
<label class="flex cursor-pointer items-start gap-3 rounded-xl border border-emerald-300 bg-emerald-50 p-3 text-emerald-950 shadow-sm transition hover:bg-emerald-100 dark:border-emerald-900 dark:bg-emerald-950/60 dark:text-emerald-100">
<input type="radio" name="internal" value="0" @checked(! old('internal')) class="mt-1 border-emerald-400 text-emerald-600 focus:ring-emerald-500">
<span>
<span class="block text-sm font-extrabold">Public reply</span>
<span class="mt-1 block text-xs font-semibold opacity-80">Visible to the requester and counts as the first SLA response.</span>
</span>
</label>
<label class="flex cursor-pointer items-start gap-3 rounded-xl border border-purple-300 bg-purple-50 p-3 text-purple-950 shadow-sm transition hover:bg-purple-100 dark:border-purple-900 dark:bg-purple-950/60 dark:text-purple-100">
<input type="radio" name="internal" value="1" @checked((bool) old('internal')) class="mt-1 border-purple-400 text-purple-600 focus:ring-purple-500">
<span>
<span class="block text-sm font-extrabold">Internal note</span>
<span class="mt-1 block text-xs font-semibold opacity-80">MPBA/support-only note. Does not count as a public SLA response.</span>
</span>
</label>
</div>
@else
<input type="hidden" name="internal" value="0">
<div class="rounded-xl border border-emerald-300 bg-emerald-50 p-3 text-sm font-semibold text-emerald-950 dark:border-emerald-900 dark:bg-emerald-950/60 dark:text-emerald-100">
<i class="fa-solid fa-envelope-circle-check mr-2" aria-hidden="true"></i>
This will be posted as a public reply and will count towards the first-response SLA.
</div>
@endif
</div>
@endcan
<div class="flex justify-end">
@@ -111,7 +111,10 @@
@endif
@if ($isInternal)
<span
class="rounded-full bg-red-600 px-2.5 py-1 text-[11px] font-extrabold uppercase tracking-wide text-white">Internal</span>
class="rounded-full bg-purple-600 px-2.5 py-1 text-[11px] font-extrabold uppercase tracking-wide text-white">Internal</span>
@else
<span
class="rounded-full bg-emerald-600 px-2.5 py-1 text-[11px] font-extrabold uppercase tracking-wide text-white">Public</span>
@endif
</div>
<div
@@ -216,16 +219,39 @@
class="block w-full rounded-xl border border-zinc-300 bg-white p-3 text-sm text-zinc-900 shadow-sm focus:border-blue-500 focus:ring-blue-500 dark:border-zinc-700 dark:bg-zinc-950 dark:text-zinc-100"
placeholder="Write a threaded Lotus Notes-style response..."></textarea>
@can('update', $currentTicket)
@if ($canSeeInternalNotes)
<label
class="mt-3 flex items-center gap-2 text-sm font-semibold text-zinc-700 dark:text-zinc-200">
<input type="checkbox" name="internal" value="1"
class="rounded border-zinc-300">
MPBA internal note only
</label>
@endif
@endcan
<div class="mt-4 rounded-xl border border-zinc-200 bg-white p-3 shadow-sm dark:border-zinc-700 dark:bg-zinc-950">
<p class="text-xs font-extrabold uppercase tracking-[0.16em] text-zinc-500 dark:text-zinc-400">Visibility</p>
@can('update', $currentTicket)
@if ($canSeeInternalNotes)
<div class="mt-3 grid gap-3 sm:grid-cols-2">
<label class="flex cursor-pointer items-start gap-3 rounded-xl border border-emerald-300 bg-emerald-50 p-3 text-emerald-950 shadow-sm transition hover:bg-emerald-100 dark:border-emerald-900 dark:bg-emerald-950/60 dark:text-emerald-100">
<input type="radio" name="internal" value="0" checked class="mt-1 border-emerald-400 text-emerald-600 focus:ring-emerald-500">
<span>
<span class="block text-sm font-extrabold">Public reply</span>
<span class="mt-1 block text-xs font-semibold opacity-80">Visible to the requester and counts towards SLA.</span>
</span>
</label>
<label class="flex cursor-pointer items-start gap-3 rounded-xl border border-purple-300 bg-purple-50 p-3 text-purple-950 shadow-sm transition hover:bg-purple-100 dark:border-purple-900 dark:bg-purple-950/60 dark:text-purple-100">
<input type="radio" name="internal" value="1" class="mt-1 border-purple-400 text-purple-600 focus:ring-purple-500">
<span>
<span class="block text-sm font-extrabold">Internal note</span>
<span class="mt-1 block text-xs font-semibold opacity-80">Support-only note. Does not count as public SLA response.</span>
</span>
</label>
</div>
@else
<input type="hidden" name="internal" value="0">
<div class="mt-3 rounded-xl border border-emerald-300 bg-emerald-50 p-3 text-sm font-semibold text-emerald-950 dark:border-emerald-900 dark:bg-emerald-950/60 dark:text-emerald-100">
<i class="fa-solid fa-envelope-circle-check mr-2" aria-hidden="true"></i>
This threaded response will be public.
</div>
@endif
@else
<input type="hidden" name="internal" value="0">
@endcan
</div>
<details
class="mt-4 overflow-hidden rounded-xl border border-zinc-200 bg-white/80 shadow-sm dark:border-zinc-800 dark:bg-zinc-950/50">
+9
View File
@@ -41,3 +41,12 @@
changes:
- Updated the active End timer action with the same minimum width and no-wrap text treatment as the Start timer button.
- Preserved the inline timer updater and avoided adding unused standalone JavaScript files.
- version: 1.9.34
date: 2026-06-23
type: bugfix
summary: Add explicit public/internal response controls to Helpdesk ticket conversations.
changes:
- Added a clear Public reply versus Internal note visibility selector to the main ticket response form.
- Added the same visibility selector to threaded response forms so replies can be made public deliberately.
- Added public/internal badges to conversation entries so response visibility is obvious after posting.
- Preserved append-only changelog history and avoided adding unused JavaScript or orphan files.
+1 -1
View File
@@ -22,5 +22,5 @@
"Modules\\Helpdesk\\Providers\\HelpdeskServiceProvider"
],
"files": [],
"version": "1.9.33"
"version": "1.9.34"
}