Some checks failed
Create Docker Image / Test Application (x86_64) (push) Successful in 28s
Create Docker Image / Build Docker Image (x86_64) (push) Failing after 12s
Create Docker Image / Build Docker Image (arm64) (push) Failing after 36s
Create Docker Image / Final Docker Image Manifest (push) Has been skipped
163 lines
4.5 KiB
PHP
163 lines
4.5 KiB
PHP
@extends('layouts.dn')
|
|
|
|
@section('page_title')
|
|
@include('fragment.dn.header')
|
|
@endsection
|
|
|
|
@section('main-content')
|
|
<div class="row">
|
|
<p class="alert alert-danger text-center">
|
|
This is a tech preview of what is to come, and it is by no means complete.
|
|
</p>
|
|
</div>
|
|
<div class="row">
|
|
<div class="offset-1 col-10">
|
|
<div class="main-card mb-3 card">
|
|
<form id="create-form" action="{{ url('entry/add') }}" method="POST" enctype="multipart/form-data">
|
|
@csrf
|
|
<input type="hidden" name="frame" value="create">
|
|
<input type="hidden" name="dn" value="{{ Crypt::encryptString($dn) }}">
|
|
<input type="hidden" name="step" value="{{ ++$step }}">
|
|
|
|
<div class="card-header">
|
|
@lang('Create New Entry')
|
|
</div>
|
|
|
|
@switch($step)
|
|
@case(1)
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-12 col-sm-6">
|
|
<x-form.select
|
|
name="objectclass"
|
|
:label="__('Select a Structural ObjectClass...')"
|
|
:options="($oc=config('server')->schema('objectclasses'))
|
|
->filter(fn($item)=>$item->isStructural())
|
|
->sortBy(fn($item)=>$item->name_lc)
|
|
->map(fn($item,$key)=>['id'=>$key,'value'=>$item->name])"
|
|
multiple="false"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@break
|
|
|
|
@case(2)
|
|
<div class="card-body">
|
|
<x-attribute-type :edit="true" :o="$o->getObject('rdn')"/>
|
|
|
|
@foreach ($o->getVisibleAttributes() as $ao)
|
|
<x-attribute-type :edit="true" :o="$ao"/>
|
|
@endforeach
|
|
|
|
<div id="newattrs"></div>
|
|
|
|
<!-- Add new attributes -->
|
|
<div class="row">
|
|
<div class="col-12 col-sm-1 col-md-2"></div>
|
|
<div class="col-12 col-sm-10 col-md-8">
|
|
<div class="d-none" id="newattr-select">
|
|
|
|
@if($o->getMissingAttributes()->count())
|
|
<div class="row">
|
|
<div class="col-12 bg-dark text-light p-2">
|
|
<i class="fas fa-plus-circle"></i> Add New Attribute
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12 pt-2">
|
|
<x-form.select id="newattr" label="Select from..." :options="$o->getMissingAttributes()->sortBy('name')->map(fn($item)=>['id'=>$item->name,'value'=>$item->name_lc])"/>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
<div class="col-2"></div>
|
|
</div>
|
|
|
|
<div class="row pt-3">
|
|
<div class="col-12 offset-sm-2 col-sm-4 col-lg-2">
|
|
<x-form.reset form="dn-add"/>
|
|
<x-form.submit action="Create" form="dn-add"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@break;
|
|
@endswitch
|
|
|
|
<div class="card-footer">
|
|
<span class="ms-auto">
|
|
<x-form.submit action="Next" form="create-form"/>
|
|
</span>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@section('page-scripts')
|
|
<script type="text/javascript">
|
|
var dn = '{{ $o->getDNSecure() }}';
|
|
var oc = {!! $o->getObject('objectclass')->values !!};
|
|
|
|
function editmode() {
|
|
$('#dn-edit input[name="dn"]').val(dn);
|
|
|
|
$('button[id=entry-edit]').addClass('active').removeClass('btn-outline-dark').addClass('btn-outline-light');
|
|
|
|
// Find all input items and turn off readonly
|
|
$('input.form-control').each(function() {
|
|
// Except for objectClass - @todo show an "X" instead
|
|
if ($(this)[0].name.match(/^objectclass/))
|
|
return;
|
|
|
|
$(this).attr('readonly',false);
|
|
});
|
|
|
|
// Our password type
|
|
$('div#userPassword .form-select').each(function() {
|
|
$(this).prop('disabled',false);
|
|
})
|
|
|
|
$('.row.d-none').removeClass('d-none');
|
|
$('.addable.d-none').removeClass('d-none');
|
|
$('.deletable.d-none').removeClass('d-none');
|
|
|
|
@if($o->getMissingAttributes()->count())
|
|
$('#newattr-select.d-none').removeClass('d-none');
|
|
@endif
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
$('#newattr').on('change',function(item) {
|
|
$.ajax({
|
|
type: 'POST',
|
|
beforeSend: function() {},
|
|
success: function(data) {
|
|
$('#newattrs').append(data);
|
|
},
|
|
error: function(e) {
|
|
if (e.status != 412)
|
|
alert('That didnt work? Please try again....');
|
|
},
|
|
url: '{{ url('entry/attr/add') }}/'+item.target.value,
|
|
data: {
|
|
objectclasses: oc,
|
|
},
|
|
cache: false
|
|
});
|
|
|
|
// Remove the option from the list
|
|
$(this).find('[value="'+item.target.value+'"]').remove()
|
|
|
|
// If there are no more options
|
|
if ($(this).find("option").length === 1)
|
|
$('#newattr-select').remove();
|
|
});
|
|
|
|
editmode();
|
|
});
|
|
</script>
|
|
@append |