Rev 6547 | Rev 7774 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
use LeadersLinked\Model\UserExperience;
$acl = $this->viewModel()
->getRoot()
->getVariable('acl');
$currentUserHelper = $this->currentUserHelper();
$currentUser = $currentUserHelper->getUser();
$currentCompany = $currentUserHelper->getCompany();
$companyId = $currentCompany->uuid;
$roleName = $currentUserHelper->getUserTypeId();
$routeWebsite = $this->url('profile/website', ['id' => $currentCompany->uuid]);
$routeCompanySize = $this->url('profile/company-size', ['id' => $currentCompany->uuid]);
$routeIndustry = $this->url('profile/industry', ['id' => $currentCompany->uuid]);
$routeExtended = $this->url('profile/extended', ['id' => $currentCompany->uuid]);
$routeSocialNetworks = $this->url('profile/social-network', ['id' => $currentCompany->uuid]);
$routeLocationAdd = $this->url('profile/location', ['id' => $currentCompany->uuid, 'operation' => 'add']);
$routeFoundationYear = $this->url('profile/foundation_year', ['id' => $currentCompany->uuid, 'operation' => 'add']);
$routeImageUpload = $this->url('profile/image', ['id' => $currentCompany->uuid, 'operation' => 'upload']);
$routeCoverUpload = $this->url('profile/cover', ['id' => $currentCompany->uuid, 'operation' => 'upload']);
$routeFooterUpload = $this->url('profile/footer', ['id' => $currentCompany->uuid, 'operation' => 'upload']);
$routeHeaderUpload = $this->url('profile/header', ['id' => $currentCompany->uuid, 'operation' => 'upload']);
$this->inlineScript()->appendFile('https://maps.googleapis.com/maps/api/js?key=' . $google_map_key . '&libraries=places');
$this->headLink()->appendStylesheet($this->basePath('plugins/nprogress/nprogress.css'));
$this->inlineScript()->appendFile($this->basePath('plugins/nprogress/nprogress.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/ckeditor/ckeditor.js'));
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/css/fileinput.min.css'));
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.css'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/piexif.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/plugins/sortable.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/fileinput.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/js/locales/es.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/fas/theme.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-fileinput/themes/explorer-fas/theme.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/jquery.validate.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/additional-methods.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-validation/localization/messages_es.js'));
$this->headLink()->appendStylesheet($this->basePath('plugins/select2/css/select2.min.css'));
$this->headLink()->appendStylesheet($this->basePath('plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css'));
$this->inlineScript()->appendFile($this->basePath('plugins/select2/js/select2.min.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/jquery-input-number/input-number-format.jquery.min.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-confirmation/dist/bootstrap-confirmation.js'));
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
$this->inlineScript()->appendFile($this->basePath('plugins/moment/moment-with-locales.min.js'));
$this->headLink()->appendStylesheet($this->basePath('plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css'));
$this->inlineScript()->appendFile($this->basePath('plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js'));
$this->inlineScript()->captureStart();
echo <<<JS
jQuery( document ).ready(function( $ ) {
$.validator.addMethod('greaterThan', function (value, element, param) {
var otherElement = $(param);
return parseInt(value, 10) > parseInt(otherElement.val(), 10);
}, 'ERROR_INVALID_MINIMUM');
$.validator.addMethod('checkLocation', function (value, element, param) {
var otherElement = $(param);
return $.trim(otherElement.val()).length > 0;
}, 'ERROR_PLACED_AUTOCOMPLETE_DOES_NOT_CONTAIN_GEOMETRY');
var autocompleteLocation = new google.maps.places.Autocomplete(
(document.getElementById('location_search')),
{types: ['(cities)']}
);
$.fn.fillInAddressLocation = function() {
console.log('fillInAddressLocation');
var place = autocompleteLocation.getPlace();
if (!place.geometry) {
$.fn.showError('ERROR_PLACED_AUTOCOMPLETE_DOES_NOT_CONTAIN_GEOMETRY')
return;
} else {
address1 = '';
address2 = '';
city1 = '';
city2 = '';
state = '';
country = '';
postal_code = '';
formatted_address = place.formatted_address;
latitude = place.geometry.location.lat();
longitude = place.geometry.location.lng();
var arrAddress = place.address_components;
$.each(arrAddress, function(i, address_component) {
if (address_component.types[0] == "route") {
address1 = address_component.long_name;
}
if (address_component.types[0] == "sublocality") {
address2 = address_component.long_name;
}
if (address_component.types[0] == "locality") {
city1 = address_component.long_name;
}
if (address_component.types[0] == "administrative_area_level_2") {
city2 = address_component.long_name;
}
if (address_component.types[0] == "administrative_area_level_1") {
state = address_component.long_name;
}
if (address_component.types[0] == "country") {
country = address_component.long_name;
}
if (address_component.types[0] == "postal_code") {
postal_code = address_component.long_name;
}
});
$('#form-location #formatted_address').val(formatted_address);
$('#form-location #address1').val(address1);
$('#form-location #address2').val(address2);
$('#form-location #city1').val(city1);
$('#form-location #city2').val(city2);
$('#form-location #state').val(state);
$('#form-location #country').val(country);
$('#form-location #postal_code').val(postal_code);
$('#form-location #latitude').val(latitude);
$('#form-location #longitude').val(longitude);
}
}
$.fn.renderLocation = function(data) {
$('#locations-records').empty();
if(Array.isArray(data)) {
max = data.length;
for(i = 0; i < max; i++)
{
var location = data[i];
s = '<p>' + location['formatted_address'];
if(location['is_main'] == 'y') {
s = s + ' (LABEL_MAIN_LOCATION) ';
}
s = s + ' <a href="#" title="" data-link="' + location['link_edit'] + '" class="btn-location-edit"><i class="fa fa-pencil"></i></a> ';
s = s + ' <a href="#" title="" data-link="' + location['link_delete'] + '" class="btn-location-delete"><i class="fa fa-trash"></i></a>';
s = s + ' </p>';
if(i < (max - 1)) {
s = s + '<hr/>';
}
$('#locations-records').append(s);
}
}
}
$.validator.setDefaults({
debug: true,
highlight: function(element) {
$(element).addClass('is-invalid');
},
unhighlight: function(element) {
$(element).removeClass('is-invalid');
},
errorElement: 'span',
errorClass: 'error invalid-feedback',
errorPlacement: function(error, element) {
if(element.parent('.form-group').length) {
error.insertAfter(element);
} else if(element.parent('.toggle').length) {
error.insertAfter(element.parent().parent());
} else {
error.insertAfter(element.parent());
}
}
});
$.fn.showFormErrorValidator = function(fieldname, errors) {
var field = $(fieldname);
if(field) {
$(field).addClass('is-invalid');
var error = $('<span id="' + fieldname +'-error" class="error invalid-feedback">' + errors + '</div>');
if(field.parent('.form-group').length) {
error.insertAfter(field);
} else if(field.parent('.toggle').length) {
error.insertAfter(field.parent().parent());
} else {
error.insertAfter(field.parent());
}
}
};
var validatorLocation = $('#form-location').validate({
debug: true,
onclick: false,
onkeyup: false,
onfocusout: false,
ignore: [],
rules: {
'location_search': {
required: true,
checkLocation: '#form-location #latitude'
}
},
submitHandler: function(form)
{
NProgress.start();
$.ajax({
'dataType' : 'json',
'accept' : 'application/json',
'method' : 'post',
'url' : $('#form-location').attr('action'),
'data' : $('#form-location').serialize(),
}).done(function(response) {
if(response['success']) {
$.fn.renderLocation(response['data']);
$("#location-box").modal('hide');
} else {
validatorLocation.resetForm();
$.fn.showError(response['data']);
}
}).fail(function( jqXHR, textStatus, errorThrown) {
$.fn.showError(textStatus);
}).always(function() {
NProgress.done();
});
return false;
},
invalidHandler: function(form, validator) {
}
});
$('.btn-location-add').on("click", function(e){
e.preventDefault();
$('#form-location').attr('action', '$routeLocationAdd');
$('#form-location #location_search').val('');
$('#form-location #formatted_address').val('');
$('#form-location #address1').val('');
$('#form-location #address2').val('');
$('#form-location #country').val('');
$('#form-location #state').val('');
$('#form-location #city1').val('');
$('#form-location #city2').val('');
$('#form-location #postal_code').val('');
$('#form-location #latitude').val('');
$('#form-location #longitude').val('');
validatorLocation.resetForm();
$("#location-box").modal('show');
});
$('body').on('click', 'a.btn-location-edit', function(e) {
e.preventDefault();
var url = $(this).data('link');
NProgress.start();
$.ajax({
'dataType' : 'json',
'accept' : 'application/json',
'method' : 'get',
'url' : url,
}).done(function(response) {
if(response['success']) {
$('#form-location').attr('action', url);
$('#form-location #location_search').val(response['data']['formatted_address']);
$('#form-location #formatted_address').val(response['data']['formatted_address']);
$('#form-location #address1').val(response['data']['address1']);
$('#form-location #address2').val(response['data']['address2']);
$('#form-location #country').val(response['data']['country']);
$('#form-location #state').val(response['data']['state']);
$('#form-location #city1').val(response['data']['city1']);
$('#form-location #city2').val(response['data']['city2']);
$('#form-location #postal_code').val(response['data']['postal_code']);
$('#form-location #latitude').val(response['data']['latitude']);
$('#form-location #longitude').val(response['data']['longitude']);
if(response['data']['is_main'] == 'y') {
$('#form-location #is_main').bootstrapToggle('on')
} else {
$('#form-location #is_main').bootstrapToggle('off')
}
validatorLocation.resetForm();
$("#location-box").modal('show');
} else {
$.fn.showError(response['data']);
}
}).fail(function( jqXHR, textStatus, errorThrown) {
$.fn.showError(textStatus);
}).always(function() {
NProgress.done();
});
return false;
});
$('body').on('click', 'a.btn-location-delete', function(e) {
e.preventDefault();
var url = $(this).data('link');
NProgress.start();
$.ajax({
'dataType' : 'json',
'accept' : 'application/json',
'method' : 'post',
'url' : url,
}).done(function(response) {
if(response['success']) {
$.fn.renderLocation(response['data']);
} else {
$.fn.showError(response['data']);
}
}).fail(function( jqXHR, textStatus, errorThrown) {
$.fn.showError(textStatus);
}).always(function() {
NProgress.done();
});
return false;
});
$('.btn-location-close').on("click", function(e){
e.preventDefault();
$("#location-box").modal('hide');
return false;
});
var validatorCompanySize = $('#form-company-size').validate({
debug: true,
onclick: false,
onkeyup: false,
onfocusout: false,
ignore: [],
rules: {
'company_size_id': {
required: true,
},
},
submitHandler: function(form)
{
NProgress.start();
$.ajax({
'dataType' : 'json',
'accept' : 'application/json',
'method' : 'post',
'url' : $('#form-company-size').attr('action'),
'data' : $('#form-company-size').serialize()
}).done(function(response) {
if(response['success']) {
$('#overview-company-size').html(response['data']);
$("#company-size-box").modal('hide');
} else {
validatorCompanySize.resetForm();
if(jQuery.type(response['data']) == 'string') {
$.fn.showError(response['data']);
} else {
$.each(response['data'], function( fieldname, errors ) {
$.fn.showFormErrorValidator('#form-company-size #' + fieldname, errors);
});
}
}
}).fail(function( jqXHR, textStatus, errorThrown) {
$.fn.showError(textStatus);
}).always(function() {
NProgress.done();
});
return false;
},
invalidHandler: function(form, validator) {
}
});
$('.btn-company-size-edit').on("click", function(e){
e.preventDefault();
NProgress.start();
$.ajax({
'dataType' : 'json',
'accept' : 'application/json',
'method' : 'get',
'url' : '$routeCompanySize',
}).done(function(response) {
if(response['success']) {
$('#form-company-size #company_size_id').val(response['data']['company_size_id']).trigger('change');
validatorCompanySize.resetForm();
$("#company-size-box").modal('show');
} else {
$.fn.showError(response['data']);
}
}).fail(function( jqXHR, textStatus, errorThrown) {
$.fn.showError(textStatus);
}).always(function() {
NProgress.done();
});
return false;
});
$('.btn-company-size-close').on("click", function(e){
e.preventDefault();
$("#company-size-box").modal('hide');
return false;
});
var validatorIndustry = $('#form-industry').validate({
debug: true,
onclick: false,
onkeyup: false,
onfocusout: false,
ignore: [],
rules: {
'industry_id': {
required: true,
},
},
submitHandler: function(form)
{
NProgress.start();
$.ajax({
'dataType' : 'json',
'accept' : 'application/json',
'method' : 'post',
'url' : $('#form-industry').attr('action'),
'data' : $('#form-industry').serialize()
}).done(function(response) {
if(response['success']) {
$('#overview-industry').html(response['data']);
$("#industry-box").modal('hide');
} else {
validatorIndustry.resetForm();
if(jQuery.type(response['data']) == 'string') {
$.fn.showError(response['data']);
} else {
$.each(response['data'], function( fieldname, errors ) {
$.fn.showFormErrorValidator('#form-industry #' + fieldname, errors);
});
}
}
}).fail(function( jqXHR, textStatus, errorThrown) {
$.fn.showError(textStatus);
}).always(function() {
NProgress.done();
});
return false;
},
invalidHandler: function(form, validator) {
}
});
$('.btn-industry-edit').on("click", function(e){
e.preventDefault();
NProgress.start();
$.ajax({
'dataType' : 'json',
'accept' : 'application/json',
'method' : 'get',
'url' : '$routeIndustry',
}).done(function(response) {
if(response['success']) {
$('#form-industry #industry_id').val(response['data']['industry_id']).trigger('change');
validatorIndustry.resetForm();
$("#industry-box").modal('show');
} else {
$.fn.showError(response['data']);
}
}).fail(function( jqXHR, textStatus, errorThrown) {
$.fn.showError(textStatus);
}).always(function() {
NProgress.done();
});
return false;
});
$('.btn-industry-close').on("click", function(e){
e.preventDefault();
$("#industry-box").modal('hide');
return false;
});
$("#form-cover #cover").fileinput({
theme: 'fas',
language: 'es',
showUpload: false,
dropZoneEnabled: false,
maxFileCount: 1,
allowedFileExtensions: ['jpg', 'jpeg', 'png', 'gif'],
mainClass: "input-group",
msgPlaceholder: 'LABEL_RECOMMENDED_SIZE $image_size_cover',
});
CKEDITOR.replace('description');
autocompleteLocation.addListener('place_changed', $.fn.fillInAddressLocation);
$('#form-location #is_main').bootstrapToggle({'on' : 'LABEL_MAIN_LOCATION', 'off' : 'LABEL_SECONDARY_LOCATION', 'width' : '160px', 'height' : '40px'});
});
JS;
$this->inlineScript()->captureEnd();
$jsonLocations = json_encode($locations);
$js = <<<JS
const urlVars = {
routeWebsite: "$routeWebsite",
routeCompanySize: "$routeCompanySize",
routeIndustry: "$routeIndustry",
routeExtended: "$routeExtended",
routeSocialNetworks: "$routeSocialNetworks",
routeLocationAdd: "$routeLocationAdd",
routeFoundationYear: "$routeFoundationYear",
routeImageUpload: "$routeImageUpload",
routeCoverUpload: "$routeCoverUpload",
routeFooterUpload: "$routeFooterUpload",
routeHeaderUpload: "$routeHeaderUpload",
cover: "$cover",
companyId: "$companyId",
followers: "$follower",
image: "$image",
overview: "$overview",
locations: JSON.parse('$jsonLocations'),
industry: "$industry",
companySize: "$company_size",
companyName: "$company_name",
foundationYear: "$foundation_year",
website: "$website",
header: "$header",
footer: "$footer"
}
JS;
$this->inlineScript()->appendScript($js);
$this->headLink()->appendStylesheet('/react-bundles/profile/main.css');
$this->inlineScript()->appendFile('/react-bundles/profile/profileBundle.js');
?>
<style>
.user-profile-ov {
position: relative;
}
.user-profile-ov .add-dp {
position: absolute;
top: 30%;
right: 10%;
}
.user-profile-ov .add-dp i {
font-size: 14px;
border: 2px solid #fff;
background: #e44d3a;
padding: 11px;
color: #ffff
}
</style>
<!-- Content Header (Page header) -->
<div id="profile">
</div>
<div class="modal" tabindex="-1" role="dialog" id="industry-box">
<div class="modal-dialog" role="document">
<?php
$form = $this->formIndustry;
$form->setAttributes([
'method' => 'post',
'action' => $routeIndustry,
'name' => 'form-industry',
'id' => 'form-industry'
]);
$form->prepare();
echo $this->form()->openTag($form);
?>
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">LABEL_CHANGE</h3>
</div>
<div class="modal-body">
<div class="form-group">
<?php
$element = $form->get('industry_id');
$element->setAttributes(['class' => 'form-control']);
$element->setOptions(['label' => 'LABEL_INDUSTRY']);
echo $this->formLabel($element);
echo $this->formSelect($element);
?>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">LABEL_SAVE</button>
<button type="button" class="btn btn-default btn-industry-close">LABEL_CANCEL</button>
</div>
<?php echo $this->form()->closeTag($form); ?>
</div>
</div>
</div>
<div class="modal" tabindex="-1" role="dialog" id="company-size-box">
<div class="modal-dialog" role="document">
<?php
$form = $this->formCompanySize;
$form->setAttributes([
'method' => 'post',
'action' => $routeCompanySize,
'name' => 'form-company-size',
'id' => 'form-company-size'
]);
$form->prepare();
echo $this->form()->openTag($form);
?>
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">LABEL_CHANGE</h3>
</div>
<div class="modal-body">
<div class="form-group">
<?php
$element = $form->get('company_size_id');
$element->setAttributes(['class' => 'form-control']);
$element->setOptions(['label' => 'LABEL_COMPANY_SIZE']);
echo $this->formLabel($element);
echo $this->formSelect($element);
?>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">LABEL_SAVE</button>
<button type="button" class="btn btn-default btn-company-size-close">LABEL_CANCEL</button>
</div>
<?php echo $this->form()->closeTag($form); ?>
</div>
</div>
</div>
<div class="modal" tabindex="-1" role="dialog" id="location-box">
<div class="modal-dialog" role="document">
<?php
$form = $this->formLocation;
$form->setAttributes([
'method' => 'post',
'action' => '',
'name' => 'form-location',
'id' => 'form-location'
]);
$form->prepare();
echo $this->form()->openTag($form);
$fieldnames = [
'formatted_address',
'address1',
'address2',
'country',
'state',
'city1',
'city2',
'postal_code',
'latitude',
'longitude',
];
foreach ($fieldnames as $fieldname) {
$element = $form->get($fieldname);
echo $this->formHidden($element);
}
?>
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">LABEL_CHANGE</h3>
</div>
<div class="modal-body">
<div class="form-group datefm">
<?php
$element = $form->get('location_search');
$element->setAttributes(['class' => 'form-control']);
$element->setOptions(['label' => 'LABEL_LOCATION']);
echo $this->formLabel($element);
echo $this->formText($element);
?>
<i class="fa fa-map-marker"></i>
</div>
<div class="form-group">
<?php
$element = $form->get('is_main');
echo $this->formCheckbox($element);
?>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary ">LABEL_SAVE</button>
<button type="button" class="btn btn-default btn-location-close">LABEL_CANCEL</button>
</div>
<?php echo $this->form()->closeTag($form); ?>
</div>
</div>
</div>