2024-04-22 04:27:48 +00:00
<!-- $o = System :: class -->
2024-04-22 05:14:45 +00:00
< div class = " row " >
< div class = " col-xl-9 col-12 " >
2024-04-26 02:23:55 +00:00
@ can ( 'admin' , $o )
< div class = " row pt-0 " >
< div class = " col-12 " >
< h4 class = " mb-0 pb-2 " > System Users </ h4 >
2024-04-22 05:14:45 +00:00
2024-04-26 02:23:55 +00:00
< div class = " row pt-0 " >
<!-- Users -->
< div class = " col-6 " >
< label for = " users " class = " form-label " > Owners </ label >
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-people-fill " ></ i ></ span >
< select style = " width: 80%; " class = " form-select @error('users') is-invalid @enderror " id = " users " name = " users[] " >
< option value = " " >& nbsp ; </ option >
@ foreach ( \App\Models\User :: orderBy ( 'name' ) -> active () -> get () as $uo )
< option value = " { { $uo->id }} " @ if ( in_array ( $uo -> id , old ( 'users' , $o -> users -> pluck ( 'id' ) -> toArray ()))) selected @ endif > {{ $uo -> name }} < small > ({{ $uo -> email }}) </ small ></ option >
@ endforeach
</ select >
2024-04-22 05:14:45 +00:00
2024-04-26 02:23:55 +00:00
< span class = " invalid-feedback " role = " alert " >
@ error ( 'users' )
{{ $message }}
@ enderror
</ span >
</ div >
2024-04-22 05:14:45 +00:00
</ div >
</ div >
</ div >
</ div >
2024-04-26 02:23:55 +00:00
@ endcan
2024-04-22 04:27:48 +00:00
2024-04-22 05:14:45 +00:00
< div class = " row pt-4 " >
< div class = " col-12 " >
< h4 class = " mb-0 pb-2 " > System Details </ h4 >
< div class = " row pt-0 " >
<!-- Name -->
< div class = " col-7 " >
< label for = " name " class = " form-label " > BBS Name </ label >
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-pc " ></ i ></ span >
< input type = " text " class = " form-control @error('name') is-invalid @enderror " id = " name " placeholder = " Name " name = " name " value = " { { old('name', $o->name ) }} " required @ cannot ( 'update' , $o ) readonly @ endcannot autofocus >
< span id = " search-icon " style = " width: 0; " >< i style = " border-radius: 50%; " class = " spinner-border spinner-border-sm text-dark d-none " ></ i ></ span >
< div id = " system_search_results " ></ div >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'name' )
{{ $message }}
@ else
A name is required .
@ enderror
</ span >
</ div >
</ div >
<!-- ZeroTier ID -->
2024-04-26 02:23:55 +00:00
@ can ( 'admin' , $o )
2024-04-22 05:14:45 +00:00
< div class = " col-5 " >
< label for = " zt_id " class = " form-label " > ZeroTier ID </ label >
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-shield-lock-fill " ></ i ></ span >
< input type = " text " class = " form-control @error('zt_id') is-invalid @enderror " id = " zt_id " placeholder = " ZeroTier " name = " zt_id " value = " { { old('zt_id', $o->zt_id ) }} " @ cannot ( $action , $o ) readonly @ endcannot >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'zt_id' )
{{ $message }}
@ enderror
</ span >
</ div >
</ div >
2024-04-26 02:23:55 +00:00
@ endcan
2024-04-22 05:14:45 +00:00
</ div >
< div class = " row " >
<!-- Sysop -->
< div class = " col-6 " >
< label for = " sysop " class = " form-label " > Sysop </ label >
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-person-fill " ></ i ></ span >
< input type = " text " class = " form-control @error('sysop') is-invalid @enderror " id = " sysop " placeholder = " Sysop " name = " sysop " value = " { { old('sysop', $o->sysop ) }} " required @ cannot ( 'admin' , $o ) readonly @ endcannot autocomplete = " name " >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'sysop' )
{{ $message }}
@ else
A Sysop ' s name is required .
@ enderror
</ span >
</ div >
</ div >
<!-- Location -->
< div class = " col-6 " >
< label for = " location " class = " form-label " > Location </ label >
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-globe " ></ i ></ span >
< input type = " text " class = " form-control @error('location') is-invalid @enderror " id = " location " placeholder = " Location " name = " location " value = " { { old('location', $o->location ) }} " required @ cannot ( $action , $o ) readonly @ endcannot >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'location' )
{{ $message }}
@ else
System location is required .
@ enderror
</ span >
</ div >
</ div >
</ div >
< div class = " row " >
<!-- Address -->
< div class = " col-6 " >
< label for = " address " class = " form-label " > BBS Internet Hostname </ label >
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-globe " ></ i ></ span >
< input type = " text " class = " w-75 form-control @error('address') is-invalid @enderror " id = " address " placeholder = " FQDN " name = " address " value = " { { old('address', $o->address ) }} " @ cannot ( $action , $o ) readonly @ endcannot >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'address' )
{{ $message }}
@ enderror
</ span >
</ div >
</ div >
<!-- Phone -->
< div class = " col-4 " >
< label for = " phone " class = " form-label " > Phone </ label >
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-telephone-fill " ></ i ></ span >
< input type = " text " class = " form-control @error('phone') is-invalid @enderror " id = " phone " placeholder = " Phone " name = " phone " value = " { { old('phone', $o->phone ) }} " @ cannot ( $action , $o ) readonly @ endcannot >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'phone' )
{{ $message }}
@ enderror
</ span >
</ div >
</ div >
2024-04-22 04:27:48 +00:00
</ div >
</ div >
</ div >
2024-04-22 05:14:45 +00:00
< div class = " row pt-4 " >
<!-- Mailer Details -->
< div class = " col-12 " >
< h4 class = " mb-0 pb-2 " > Mailer Details </ h4 >
<!-- Mailer Ports -->
< div class = " row pt-0 " >
< div class = " col-3 " >
@ foreach ( \App\Models\Mailer :: all () as $mo )
@ php ( $x = $o -> mailers -> find ( $mo ))
< div class = " row pt-0 " >
< div class = " col-12 " >
< label for = " mailer_port_ { { $mo->id }} " class = " form-label w-100 " > {{ $mo -> name }} < span class = " float-end text-warning " > {{ $x ? -> pivot -> last_poll }} </ span ></ label >
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-modem-fill " ></ i ></ span >
< input type = " text " class = " form-control text-end @error('mailer_details.'. $mo->id .'.port') is-invalid @enderror " id = " mailer_port_ { { $mo->id }} " placeholder = " Port " name = " mailer_details[ { { $mo->id }}][port] " value = " { { old('mailer_details.'. $mo->id .'.port', $x ?->pivot->port) }} " @ cannot ( $action , $o ) readonly @ endcannot >
< div class = " input-group-text " >
< input type = " checkbox " class = " form-control-input " name = " mailer_details[ { { $mo->id }}][active] " value = " 1 " title = " Active " @ if ( old ( 'mailer_details.' . $mo -> id . '.active' , $x ? -> pivot -> active )) checked @ endif >
</ div >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'mailer_details.' . $mo -> id . '.port' )
{{ $message }}
@ enderror
</ span >
</ div >
</ div >
</ div >
@ endforeach
</ div >
2024-04-22 04:27:48 +00:00
2024-04-22 05:14:45 +00:00
<!-- Mail Packet -->
< div class = " col-4 " >
< label for = " pkt_type " class = " form-label " > Mail Packet </ label >
< div class = " input-group " >
< span class = " input-group-text " >< i class = " bi bi-ui-radios " ></ i ></ span >
< select class = " form-select @error('pkt_type') is-invalid @enderror " id = " pkt_type " name = " pkt_type " @ cannot ( $action , $o ) readonly @ endcannot >
@ foreach ( \App\Classes\FTN\Packet :: PACKET_TYPES as $type => $class )
< option value = " { { $type }} " @ if ( old ( 'pkt_type' , $o -> pkt_type ? : config ( 'fido.packet_default' )) === $type ) selected @ endif > {{ $type }} </ option >
@ endforeach
</ select >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'pkt_type' )
{{ $message }}
@ enderror
</ span >
</ div >
</ div >
2024-04-22 04:27:48 +00:00
</ div >
</ div >
2024-04-22 05:14:45 +00:00
</ div >
2024-04-22 04:27:48 +00:00
2024-04-22 05:14:45 +00:00
< div class = " row pt-4 " >
<!-- BBS Details -->
< div class = " col-12 " >
< h4 class = " mb-0 pb-2 " > BBS Details </ h4 >
< div class = " row pt-0 " >
< div class = " col-4 " >
< label for = " method " class = " form-label " > Connection Method </ label >
< div class = " input-group " >
< span class = " input-group-text " >< i class = " bi bi-wifi " ></ i ></ span >
< select class = " form-select @error('method') is-invalid @enderror " id = " method " name = " method " @ cannot ( $action , $o ) readonly @ endcannot >
< option ></ option >
< option value = " 23 " @ if ( old ( 'method' , $o -> method ) == 23 ) selected @ endif > Telnet </ option >
< option value = " 22 " @ if ( old ( 'method' , $o -> method ) == 22 ) selected @ endif > SSH </ option >
< option value = " 519 " @ if ( old ( 'method' , $o -> method ) == 519 ) selected @ endif > Rlogin </ option >
</ select >
</ div >
</ div >
< div class = " col-3 " >
< label for = " method " class = " form-label " > Port </ label >
< div class = " input-group " >
< span class = " input-group-text " >< i class = " bi bi-wifi " ></ i ></ span >
< input type = " text " class = " form-control text-end @error('port') is-invalid @enderror " id = " port " placeholder = " Port " name = " port " value = " { { old('port', $o->port ) }} " @ cannot ( $action , $o ) readonly @ endcannot >
</ div >
</ div >
2024-04-22 04:27:48 +00:00
</ div >
</ div >
2024-04-22 05:14:45 +00:00
</ div >
</ div >
2024-04-22 04:27:48 +00:00
2024-04-22 05:14:45 +00:00
< div class = " col-xl-3 col-12 " >
< div class = " row " >
2024-04-22 04:27:48 +00:00
<!-- Active -->
2024-04-22 05:14:45 +00:00
< div class = " col-6 " >
2024-04-22 04:27:48 +00:00
@ can ( 'update' , $o )
< label for = " active " class = " form-label " > Active </ label >
< div class = " input-group " >
< div class = " btn-group " role = " group " >
< input type = " radio " class = " btn-check " name = " active " id = " active_yes " value = " 1 " required @ if ( old ( 'active' , $o -> active )) checked @ endif >
< label class = " btn btn-outline-success " for = " active_yes " > Yes </ label >
< input type = " radio " class = " btn-check btn-danger " name = " active " id = " active_no " value = " 0 " required @ if ( ! old ( 'active' , $o -> active )) checked @ endif >
< label class = " btn btn-outline-danger " for = " active_no " > No </ label >
</ div >
</ div >
@ endcan
</ div >
</ div >
< div class = " row " >
<!-- Hold -->
2024-04-22 05:14:45 +00:00
< div class = " col-6 " >
2024-04-22 04:27:48 +00:00
@ can ( 'update' , $o )
< label for = " hold " class = " form-label " > Hold Mail < i class = " bi bi-info-circle " title = " Dont give the node any mail regardless of poll mode " ></ i ></ label >
< div class = " input-group " >
< div class = " btn-group " role = " group " >
< input type = " radio " class = " btn-check " name = " hold " id = " hold_yes " value = " 1 " required @ if ( old ( 'hold' , $o -> hold )) checked @ endif >
< label class = " btn btn-outline-warning " for = " hold_yes " > Yes </ label >
< input type = " radio " class = " btn-check btn-danger " name = " hold " id = " hold_no " value = " 0 " required @ if ( ! old ( 'hold' , $o -> hold )) checked @ endif >
< label class = " btn btn-outline-success " for = " hold_no " > No </ label >
</ div >
</ div >
@ endcan
</ div >
</ div >
< div class = " row " >
<!-- Poll Mode -->
2024-04-22 05:14:45 +00:00
< div class = " col-12 " >
2024-04-22 04:27:48 +00:00
@ can ( 'update' , $o )
< label for = " pollmode " class = " form-label " > Poll Mode < i class = " bi bi-info-circle " title = " Poll node when mail available, poll on a schedule or hold mail for collection " ></ i ></ label >
< div class = " input-group has-validation " >
< div class = " btn-group @error('pollmode') is-invalid @enderror " role = " group " >
< input type = " radio " class = " btn-check " name = " pollmode " id = " poll_crash " value = " 2 " @ if (( int ) old ( 'pollmode' ,( $o -> pollmode === TRUE ) ? 2 : 0 ) === 2 ) checked @ endif >
< label class = " btn btn-outline-success " for = " poll_crash " > Crash </ label >
< input type = " radio " class = " btn-check btn-danger " name = " pollmode " id = " poll_normal " value = " 1 " @ if (( int ) old ( 'pollmode' ,( $o -> pollmode === FALSE ) ? 1 : 0 ) === 1 ) checked @ endif >
< label class = " btn btn-outline-secondary " for = " poll_normal " > Normal </ label >
< input type = " radio " class = " btn-check btn-danger " name = " pollmode " id = " poll_hold " value = " 0 " @ if (( int ) old ( 'pollmode' , is_null ( $o -> pollmode ) ? 0 : 1 ) === 0 ) checked @ endif >
< label class = " btn btn-outline-warning " for = " poll_hold " > Hold </ label >
</ div >
< span class = " invalid-feedback " role = " alert " >
@ error ( 'pollmode' )
{{ $message }}
@ enderror
</ span >
</ div >
@ endcan
</ div >
</ div >
2024-04-22 05:14:45 +00:00
< div class = " row " >
< div class = " col-12 @if((old('pollmode') === " 0 " ) || is_null( $o->pollmode ))d-none @endif " id = " heartbeat_option " >
2024-04-22 04:27:48 +00:00
@ can ( 'admin' , $o )
< div class = " row p-0 " >
2024-04-22 05:14:45 +00:00
< div class = " col-6 " >
< label for = " heartbeat " class = " form-label " > Heartbeat < i class = " bi bi-info-circle " title = " Attempt contact after last seen " ></ i ></ label >
2024-04-22 04:27:48 +00:00
< div class = " input-group has-validation " >
< span class = " input-group-text " >< i class = " bi bi-hourglass-bottom " ></ i ></ span >
2024-04-22 05:14:45 +00:00
< input type = " text " class = " form-control text-end @error('heartbeat') is-invalid @enderror " id = " heartbeat " placeholder = " Hrs " name = " heartbeat " value = " { { old('heartbeat', $o->heartbeat ) }} " >
2024-04-22 04:27:48 +00:00
< span class = " invalid-feedback " role = " alert " >
@ error ( 'heartbeat' )
{{ $message }}
@ enderror
</ span >
</ div >
</ div >
2024-05-04 14:10:55 +00:00
< div class = " col-6 " >
< label for = " passkey " class = " form-label " > Auto Hold </ label >
< button id = " autohold " @ class ([ 'btn' , 'btn-danger' => $o -> autohold , 'btn-success' => ( ! $o -> autohold )]) >< i @ class ([ 'bi-toggle-on' => $o -> autohold , 'bi-toggle-off' => ( ! $o -> autohold )]) ></ i ></ button >
</ div >
2024-04-22 04:27:48 +00:00
</ div >
@ endcan
@ if ( ! is_null ( $o -> pollmode ))
< div class = " row " >
2024-04-22 05:14:45 +00:00
< div class = " col-12 bg-secondary rounded p-2 small " >
2024-04-22 04:27:48 +00:00
@ if ( $job = $o -> poll ())
< div class = " row p-0 " >
< div class = " col-4 text-dark " >
@ if ( $job -> attempts ) Last : @ else Scheduled : @ endif
</ div >
< div class = " col-8 " >
< strong class = " highlight " > {{ $job -> created_at }} </ strong >
</ div >
</ div >
< div class = " row " >
< div class = " col-4 text-dark " >
Attempts :
</ div >
< div class = " col-8 " >
< strong class = " highlight " > {{ $job -> attempts ? : 0 }} </ strong >
</ div >
</ div >
@ if ( $job -> attempts )
< div class = " row " >
< div class = " col-4 text-dark " >
Next :
</ div >
< div class = " col-8 " >
< strong class = " highlight " > {{ $job -> available_at -> diffForHumans ( now (), $job -> available_at -> isFuture () ? \Carbon\CarbonInterface :: DIFF_ABSOLUTE : \Carbon\CarbonInterface :: DIFF_RELATIVE_TO_NOW ) }} </ strong >
</ div >
</ div >
@ endif
@ else
< div class = " row p-0 " >
< div class = " col-4 text-dark " >
Last Poll :
</ div >
< div class = " col-8 " >
< strong class = " highlight " > {{ ( $x = $o -> logs -> where ( 'originate' , TRUE ) -> last ()) ? -> created_at ? : 'Never' }} </ strong >
</ div >
</ div >
< div class = " row " >
< div class = " col-4 text-dark " >
Method :
</ div >
< div class = " col-8 " >
< strong class = " highlight " > {{ $x ? $x -> mailer -> name : '-' }} </ strong >
</ div >
</ div >
@ if ( $o -> heartbeat )
< div class = " row " >
< div class = " col-4 text-dark " >
Next Heartbeat :
</ div >
< div class = " col-8 " >
< strong class = " highlight " > {{ $x ? $x -> created_at -> addHours ( $o -> heartbeat ) : Carbon :: now () }} </ strong >
</ div >
</ div >
@ endif
@ endif
< div class = " row " >
< div class = " col-4 text-dark " >
Status :
</ div >
< div class = " col-8 " >
< strong class = " highlight " >
@ if ( $job ) Queued
@ elseif ( $o -> autohold ) Auto Hold
@ else
@ switch ( $o -> pollmode )
@ case ( TRUE ) Crash @ break ;
@ case ( FALSE ) Normal @ break ;
@ default Hold
@ endswitch
@ endif
</ strong >
</ div >
</ div >
</ div >
</ div >
@ endif
</ div >
</ div >
</ div >
</ div >
@ can ( 'admin' , $o )
< div class = " row " >
<!-- Notes -->
< div class = " col-12 " >
< label for = " notes " class = " form-label " > Notes </ label >
< textarea class = " form-control " rows = 3 name = " notes " placeholder = " Notes... " > {{ old ( 'notes' , $o -> notes ) }} </ textarea >
</ div >
</ div >
@ endcan
< div class = " row " >
< div class = " col-12 " >
@ if ( $o -> exists )
@ can ( $action , $o )
< a href = " { { url('system') }} " class = " btn btn-danger " > Cancel </ a >
< button type = " submit " name = " submit " class = " btn btn-success float-end " >@ if ( $o -> exists ) Save @ else Add @ endif </ button >
@ else
< input type = " hidden " name = " system_id " value = " { { $o->id }} " >
< span >< small >< strong > NOTE :</ strong > You ' ll be able to update these details after registration is completed .</ small ></ span >
< button type = " submit " class = " btn btn-success float-end " name = " submit " value = " register " > Register </ button >
@ endcan
@ else
< button type = " submit " class = " btn btn-success float-end " name = " submit " value = " create " > Register </ button >
@ endif
</ div >
</ div >
@ section ( 'page-css' )
@ css ( 'select2' )
@ append
@ section ( 'page-scripts' )
@ js ( 'select2' )
< script type = " text/javascript " >
$ ( document ) . ready ( function () {
$ ( '#users' ) . select2 ({
@ cannot ( 'admin' ) disabled : true @ endcannot
/*multiple: true*/
});
$ ( '#poll_normal' ) . on ( 'click' , function () {
$ ( '#heartbeat_option' ) . removeClass ( 'd-none' );
})
$ ( '#poll_crash' ) . on ( 'click' , function () {
$ ( '#heartbeat_option' ) . removeClass ( 'd-none' );
})
$ ( '#poll_hold' ) . on ( 'click' , function () {
$ ( '#heartbeat_option' ) . addClass ( 'd-none' );
console . log ( 'hold' );
})
2024-05-04 14:10:55 +00:00
$ ( " #autohold " ) . on ( 'click' , function ( item ) {
var that = $ ( this )
var icon = that . find ( 'i' );
if ( icon . hasClass ( 'bi-toggle-on' )) {
$ . ajax ({
url : '/system/api/autohold/off' ,
type : 'POST' ,
dataType : 'json' ,
data : { id : {{ $o -> id }}},
beforeSend : function () {
icon . addClass ( 'spinner-grow spinner-grow-sm' )
},
complete : function () {
icon . removeClass ( 'spinner-grow spinner-grow-sm' )
},
success : function ( data ) {
icon . removeClass ( 'bi-toggle-on' )
. addClass ( 'bi-toggle-off' )
that . removeClass ( 'btn-danger' )
. addClass ( 'btn-success' )
},
cache : false
});
} else {
$ . ajax ({
url : '/system/api/autohold/on' ,
type : 'POST' ,
dataType : 'json' ,
data : { id : {{ $o -> id }}},
beforeSend : function () {
icon . addClass ( 'spinner-grow spinner-grow-sm' )
},
complete : function () {
icon . removeClass ( 'spinner-grow spinner-grow-sm' )
},
success : function ( data ) {
icon . removeClass ( 'bi-toggle-off' )
. addClass ( 'bi-toggle-on' );
that . removeClass ( 'btn-success' )
. addClass ( 'btn-danger' )
},
cache : false
});
}
return false ;
})
2024-04-22 04:27:48 +00:00
})
</ script >
@ append