@extends('layouts.app') @section('content') {{-- ── Page header ── --}}

Extensions

Manage SIP endpoints, device types, and call recording settings.
Extension Status Recordings Add Extension
{{-- ── Session alerts ── --}} @if(session('status')) @endif @if(session('success')) @endif {{-- ── Summary cards ── --}}
{{-- Total --}}
Total
{{ $totalExt }}
All extensions
{{-- Registered --}}
Registered
{{ $registeredExt }}
{{ $totalExt > 0 ? round($registeredExt/$totalExt*100,1) : 0 }}% of total
{{-- Unregistered --}}
Unregistered
{{ $unregisteredExt }}
{{ $totalExt > 0 ? round($unregisteredExt/$totalExt*100,1) : 0 }}% of total
{{-- Recording ON --}}
Recording On
{{ $recordingOnExt }}
Recording enabled
{{-- Web Phones --}}
Web Phones
{{ $webPhoneExt }}
WebRTC endpoints
{{-- ── Toolbar: search + filters + per-page ── --}}
{{-- Search --}}
{{-- Device type filter --}} {{-- Status filter --}} {{-- Department filter --}} @if($departments->count()) @endif {{-- Recording filter --}}
{{-- /left filter group --}} {{-- Right side actions --}}
@if($q || $filterType || $filterStatus || $filterRec !== '' || $filterDept) Clear @endif Bulk Edit Import
{{-- ── Bulk action bar ── --}}
@csrf
0 selected
{{-- ── Extensions table ── --}}
@forelse ($extensions as $ext) @if($ext->_hide ?? false) @continue @endif {{-- Extension + Name merged cell with avatar --}} {{-- Departments (multi) --}} {{-- Device type --}} @empty @endforelse
Extension Department Device Transport Status Recording Routing Actions
@php $initials = $ext->display_name ? implode('', array_map(fn($w) => strtoupper(substr($w, 0, 1)), array_slice(preg_split('/\s+/', trim($ext->display_name), -1, PREG_SPLIT_NO_EMPTY), 0, 2))) : strtoupper(substr($ext->id, -2)); $hasName = (bool)($ext->display_name); @endphp
{{ $initials }}
{{ $ext->id }}
@if($hasName)
{{ $ext->display_name }}
@endif
@if(!empty($ext->departments))
@foreach($ext->departments as $dept) @if($dept['name']) {{ $dept['name'] }} @endif @endforeach
@else — @endif
@php $typeClass = match($ext->description ?? '') { 'web_phone' => 'ext-type-web', 'mobile_app' => 'ext-type-mobile', 'teams' => 'ext-type-teams', default => 'ext-type-sip', }; @endphp {{ $ext->device_type }} {{ $ext->transport_label }} @if($ext->pjsip_status === 'Registered') Registered @else Unregistered @endif @if($ext->record_calls) ON @else OFF @endif @if($ext->routing_mode === 'dedicated') {{ $ext->routing_label }} @else {{ $ext->routing_label }} @endif
No extensions found
@if($q || $filterType)
Try adjusting your search or filters.
Clear filters @else
Get started by creating your first extension.
Add Extension @endif
{{-- ── Bulk delete form ── --}} {{-- ── Device Information modal ── --}} {{-- ── Action output modal (ping / reboot / sync results) ── --}} @push('plugin-scripts') @endpush @endsection