203 lines
10 KiB
Smarty
203 lines
10 KiB
Smarty
{include file="sections/header.tpl"}
|
|
|
|
<form class="form-horizontal" method="post" role="form" action="{$_url}customers/add-post">
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
|
<div class="panel-heading">{Lang::T('Add New Contact')}</div>
|
|
<div class="panel-body">
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Username')}</label>
|
|
<div class="col-md-9">
|
|
<div class="input-group">
|
|
{if $_c['country_code_phone'] != ''}
|
|
<span class="input-group-addon" id="basic-addon1"><i
|
|
class="glyphicon glyphicon-phone-alt"></i></span>
|
|
{else}
|
|
<span class="input-group-addon" id="basic-addon1"><i
|
|
class="glyphicon glyphicon-user"></i></span>
|
|
{/if}
|
|
<input type="text" class="form-control" name="username" required
|
|
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']} {Lang::T('Phone Number')}{else}{Lang::T('Username')}{/if}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Full Name')}</label>
|
|
<div class="col-md-9">
|
|
<input type="text" required class="form-control" id="fullname" name="fullname">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Email')}</label>
|
|
<div class="col-md-9">
|
|
<input type="email" class="form-control" id="email" name="email">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Phone Number')}</label>
|
|
<div class="col-md-9">
|
|
<div class="input-group">
|
|
{if $_c['country_code_phone']!= ''}
|
|
<span class="input-group-addon" id="basic-addon1">+</span>
|
|
{else}
|
|
<span class="input-group-addon" id="basic-addon1"><i
|
|
class="glyphicon glyphicon-phone-alt"></i></span>
|
|
{/if}
|
|
<input type="text" class="form-control" name="phonenumber"
|
|
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {Lang::T('Phone Number')}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Password')}</label>
|
|
<div class="col-md-9">
|
|
<input type="password" class="form-control" autocomplete="off" required id="password"
|
|
value="{rand(000000,999999)}" name="password" onmouseleave="this.type = 'password'"
|
|
onmouseenter="this.type = 'text'">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('PPPOE Password')}</label>
|
|
<div class="col-md-9">
|
|
<input type="password" class="form-control" id="pppoe_password" name="pppoe_password"
|
|
value="{$d['pppoe_password']}" onmouseleave="this.type = 'password'"
|
|
onmouseenter="this.type = 'text'">
|
|
<span class="help-block">
|
|
{Lang::T('User Cannot change this, only admin. if it Empty it will use user password')}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Address')}</label>
|
|
<div class="col-md-9">
|
|
<textarea name="address" id="address" class="form-control"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Service Type')}</label>
|
|
<div class="col-md-9">
|
|
<select class="form-control" id="service_type" name="service_type">
|
|
<option value="Hotspot">Hotspot
|
|
</option>
|
|
<option value="PPPoE">PPPoE</option>
|
|
<option value="Others">Others</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Account Type')}</label>
|
|
<div class="col-md-9">
|
|
<select class="form-control" id="account_type" name="account_type">
|
|
<option value="Personal">Personal
|
|
</option>
|
|
<option value="Business">Business</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{Lang::T('Coordinates')}</label>
|
|
<div class="col-md-9">
|
|
<input name="coordinates" id="coordinates" class="form-control" value=""
|
|
placeholder="6.465422, 3.406448">
|
|
<div id="map" style="width: '100%'; height: 200px; min-height: 150px;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
|
<div class="panel-heading">{Lang::T('Attributes')}</div>
|
|
<div class="panel-body">
|
|
<!-- Customers Attributes add start -->
|
|
<div id="custom-fields-container">
|
|
</div>
|
|
<!-- Customers Attributes add end -->
|
|
</div>
|
|
<div class="panel-footer">
|
|
<button class="btn btn-success btn-block" type="button"
|
|
id="add-custom-field">{Lang::T('Add')}</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<center>
|
|
<button class="btn btn-primary" type="submit">
|
|
{Lang::T('Save Changes')}
|
|
</button>
|
|
<br><a href="{$_url}customers/list" class="btn btn-link">{Lang::T('Cancel')}</a>
|
|
</center>
|
|
</form>
|
|
{literal}
|
|
<script type="text/javascript">
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
var customFieldsContainer = document.getElementById('custom-fields-container');
|
|
var addCustomFieldButton = document.getElementById('add-custom-field');
|
|
|
|
addCustomFieldButton.addEventListener('click', function() {
|
|
var fieldIndex = customFieldsContainer.children.length;
|
|
var newField = document.createElement('div');
|
|
newField.className = 'form-group';
|
|
newField.innerHTML = `
|
|
<div class="col-md-4">
|
|
<input type="text" class="form-control" name="custom_field_name[]" placeholder="Name">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<input type="text" class="form-control" name="custom_field_value[]" placeholder="Value">
|
|
</div>
|
|
<div class="col-md-2">
|
|
<button type="button" class="remove-custom-field btn btn-danger btn-sm">-</button>
|
|
</div>
|
|
`;
|
|
customFieldsContainer.appendChild(newField);
|
|
});
|
|
|
|
customFieldsContainer.addEventListener('click', function(event) {
|
|
if (event.target.classList.contains('remove-custom-field')) {
|
|
var fieldContainer = event.target.parentNode.parentNode;
|
|
fieldContainer.parentNode.removeChild(fieldContainer);
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
<script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js"></script>
|
|
<script>
|
|
function getLocation() {
|
|
if (window.location.protocol == "https:" && navigator.geolocation) {
|
|
navigator.geolocation.getCurrentPosition(showPosition);
|
|
} else {
|
|
setupMap(51.505, -0.09);
|
|
}
|
|
}
|
|
|
|
function showPosition(position) {
|
|
setupMap(position.coords.latitude, position.coords.longitude);
|
|
}
|
|
|
|
function setupMap(lat, lon) {
|
|
var map = L.map('map').setView([lat, lon], 13);
|
|
L.tileLayer('https://{s}.basemaps.cartocdn.com/rastertiles/light_all/{z}/{x}/{y}.png', {
|
|
attribution:
|
|
'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors © <a href="https://carto.com/attributions">CARTO</a>',
|
|
subdomains: 'abcd',
|
|
maxZoom: 20
|
|
}).addTo(map);
|
|
var marker = L.marker([lat, lon]).addTo(map);
|
|
map.on('click', function(e){
|
|
var coord = e.latlng;
|
|
var lat = coord.lat;
|
|
var lng = coord.lng;
|
|
var newLatLng = new L.LatLng(lat, lng);
|
|
marker.setLatLng(newLatLng);
|
|
$('#coordinates').val(lat + ',' + lng);
|
|
});
|
|
}
|
|
window.onload = function() {
|
|
getLocation();
|
|
}
|
|
</script>
|
|
{/literal}
|
|
|
|
|
|
{include file="sections/footer.tpl"} |