Academic semesters

{!! \App\Support\Ui::post_form('semester_create',0,\App\Support\Ui::input('name','New semester name'),'Create semester') !!}{!! \App\Support\Ui::table(['Semester','Status'],array_map(fn($r)=>[e($r['name']),\App\Support\Ui::badge($r['status'])],$semesters)) !!}@if($semester&&$semester['status']==='closed'): echo \App\Support\Ui::post_form('semester_reopen',$sid,'','Reopen selected semester');endif;if($semester&&$semester['status']==='open')
Close {!! e($semester['name']) !!}

Closing prevents imports, allocations and case changes. History remains readable. Dispatch existing messages before closing.

{!! \App\Support\Ui::post_form('semester_close',$sid,'','Close semester') !!}
@endif

Email delivery

Current mode: {!! \App\Support\Ui::badge($cfg['mail']['mode']??'preview') !!}

The hosting administrator configures SMTP credentials in the private configuration file. The application requires encrypted SMTP and verifies certificates.

Queued notifications are processed after imports and allocations when SMTP is enabled. Configure the scheduled worker for remaining messages.

No mailbox ingestion. Registrar and publisher requests are sent manually by staff.

Create staff account

{!! \App\Support\Ui::post_form('account_save',0,'
'.\App\Support\Ui::input('username','Username').\App\Support\Ui::input('password','Password (at least 12 characters)','password').'
','Create account') !!}

Staff access

@foreach($records->staffAccounts() as $u)
{!! e($u['username']) !!} · {!! e($u['role']) !!} · {!! $u['active']?'active':'disabled' !!}{!! \App\Support\Ui::post_form('account_update',0,''.\App\Support\Ui::input('password','New password (leave blank to keep existing)','password','',false),'Update account') !!}
@endforeach