185 lines
4.6 KiB
PHP
185 lines
4.6 KiB
PHP
@extends('layouts.app')
|
|
|
|
@section('htmlheader_title')
|
|
Register System
|
|
@endsection
|
|
|
|
@section('content')
|
|
<form class="row g-0 needs-validation" method="post" autocomplete="off" novalidate>
|
|
@csrf
|
|
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="greyframe titledbox shadow0xb0">
|
|
<h2 class="cap">Register System</h2>
|
|
|
|
<div id="register">
|
|
<div class="row">
|
|
<div class="col-4">
|
|
<label for="system" 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" style="z-index: 0" class="form-control col-11 @error('zone_id') is-invalid @enderror" id="system" placeholder="BBS Name" name="system" value="{{ old('system') }}" required 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('zone_id')
|
|
{{ $message }}
|
|
@else
|
|
BBS Name is required.
|
|
@enderror
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12 pb-2">
|
|
<button type="button" name="submit" class="btn btn-success">Next</button><span id="next" class="m-2"><i class="spinner-border spinner-border-sm text-light d-none"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
@endsection
|
|
|
|
@section('page-css')
|
|
<style>
|
|
input#system + span {
|
|
left: -1.5em;
|
|
top: 0.5em;
|
|
position:relative
|
|
}
|
|
div#system_search_results ul {
|
|
color:#eeeeee;
|
|
background-color:#292929;
|
|
font-size: .85rem;
|
|
padding: 0 5px 0 5px;
|
|
z-index: 99;
|
|
top: -0.5em;
|
|
left: 31em !important;
|
|
}
|
|
div#system_search_results ul li.dropdown-header {
|
|
display: block;
|
|
color: #fff !important;
|
|
}
|
|
div#system_search_results ul li,
|
|
div#system_search_results ul li a {
|
|
display: block;
|
|
color: #aaa !important;
|
|
margin: 0 !important;
|
|
border: 0 !important;
|
|
width: inherit;
|
|
text-indent: 0 !important;
|
|
padding-left: 0 !important;
|
|
}
|
|
div#system_search_results ul li:hover {
|
|
padding-left: 0;
|
|
text-indent: 0;
|
|
}
|
|
div#system_search_results ul li:before {
|
|
content:""!important
|
|
}
|
|
</style>
|
|
@append
|
|
@section('page-scripts')
|
|
<script>
|
|
var system_id;
|
|
|
|
$(document).ready(function() {
|
|
$('input[id=system]').typeahead({
|
|
autoSelect: false,
|
|
scrollHeight: 10,
|
|
theme: 'bootstrap5',
|
|
delay: 500,
|
|
minLength: 2,
|
|
items: {{ $search_limit ?? 5 }},
|
|
fitToElement: false,
|
|
selectOnBlur: false,
|
|
appendTo: "#system_search_results",
|
|
source: function (query,process) {
|
|
systemsearch('{{ url('api/systems/orphan') }}',query,process);
|
|
},
|
|
|
|
matcher: function () { return true; },
|
|
|
|
// Disable sorting and just return the items (items should by the ajax method)
|
|
sorter: function(items) {
|
|
return items;
|
|
},
|
|
|
|
updater: function (item) {
|
|
system_id = item.id;
|
|
return item.name;
|
|
},
|
|
})
|
|
.on('keyup keypress', function(event) {
|
|
var key = event.keyCode || event.which;
|
|
if (key === 13) {
|
|
event.preventDefault();
|
|
return false;
|
|
}
|
|
});
|
|
|
|
$('button[name=submit]').on('click',function() {
|
|
icon = $(this).parent().find('i');
|
|
|
|
if (! $('#system').val())
|
|
return;
|
|
|
|
$.ajax({
|
|
url : '{{ url('user/system/register') }}',
|
|
type : 'POST',
|
|
data : { system_id: system_id,system_name: $('#system').val() },
|
|
dataType : 'html',
|
|
async : true,
|
|
cache : false,
|
|
beforeSend : function() {
|
|
icon.removeClass('d-none');
|
|
},
|
|
success : function(data) {
|
|
// if json is null, means no match, won't do again.
|
|
if(data==null || (data.length===0)) return;
|
|
|
|
$('#register').empty().append(data);
|
|
},
|
|
complete : function() {
|
|
//icon.addClass('d-none');
|
|
}
|
|
})
|
|
})
|
|
});
|
|
|
|
var c=0;
|
|
var systemsearch = _.debounce(function(url,query,process,icon){
|
|
icon = $('#search-icon').find('i');
|
|
|
|
$.ajax({
|
|
url : url,
|
|
type : 'GET',
|
|
data : 'term=' + query,
|
|
dataType : 'JSON',
|
|
async : true,
|
|
cache : false,
|
|
beforeSend : function() {
|
|
if (c++ == 0) {
|
|
icon.removeClass('d-none');
|
|
}
|
|
},
|
|
success : function(data) {
|
|
// if json is null, means no match, won't do again.
|
|
if(data==null || (data.length===0)) return;
|
|
|
|
process(data);
|
|
},
|
|
complete : function() {
|
|
if (--c == 0) {
|
|
icon.addClass('d-none');
|
|
}
|
|
}
|
|
})
|
|
}, 500);
|
|
</script>
|
|
@append |