Add candidate and employer templates, application form, and new password functionality
- Created 'dla-kandydata.php' template for candidates with job offers and registration options. - Developed 'dla-pracodawcy.php' template for employers detailing how Globelus works and registration for new employers. - Implemented 'advert-apply.php' for job applications, including form validation and file upload for CVs. - Added 'new-password.php' for users to set a new password with validation for password strength and matching.
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
<? global $lang;?>
|
||||
<div class="mini-buttons" id="buttons">
|
||||
<a href="/panel-pracodawcy/profil" class="btn <?= $this -> active == 'moj-profil' ? 'active' : '';?>">
|
||||
<?= $lang['moj-profil'];?>
|
||||
profil pracodawcy
|
||||
</a>
|
||||
<a href="/panel-pracodawcy/ogloszenia" class="btn <?= $this -> active == 'ogloszenia' ? 'active' : '';?>">
|
||||
<?= $lang['ogloszenia'];?>
|
||||
Twoje oferty pracy
|
||||
</a>
|
||||
<a href="/panel-pracodawcy/odpowiedzi-na-ogloszenia" class="btn <?= $this -> active == 'cv' ? 'active' : '';?>">
|
||||
CV
|
||||
aplikacje
|
||||
</a>
|
||||
<a href="/panel-pracodawcy/proponowani-kandydaci" class="btn btn-red <?= $this -> active == 'proponowani-kandydaci' ? 'active' : '';?>">
|
||||
proponowani kandydaci
|
||||
<a href="/panel-pracodawcy/proponowani-kandydaci" class="btn <?= $this -> active == 'proponowani-kandydaci' ? 'active' : '';?>">
|
||||
potencjalni kandydaci
|
||||
</a>
|
||||
<a href="/panel-pracodawcy/obserwowani-kandydaci" class="btn <?= $this -> active == 'obserwowani-kandydaci' ? 'active' : '';?>" style="display:none;">
|
||||
<?= $lang['obserwowani-kandydaci'];?>
|
||||
|
||||
@@ -253,7 +253,9 @@
|
||||
Zdjęcie nad ogłoszeniem
|
||||
<br>
|
||||
<span>
|
||||
<small>Ważna informacja: jeśli chcesz, aby ta grafika była widoczna jednocześnie we wszystkich ogłoszeniach publikowanych z tego profilu dodaj ją w Profilu Pracodawcy.</small>
|
||||
<small>
|
||||
<strong>Uwaga! Jest to grafika dodatkowa, NIE logo, jeśli chcesz, aby ta grafika była widoczna jednocześnie we wszystkich Twoich ogłoszeniach dodaj ją w Profilu Pracodawcy. Zalecany rozmiar 730px x 200px.</strong>
|
||||
</small>
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -267,9 +269,11 @@
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<div class="advert-img-top">
|
||||
<? if (file_exists(\front\factory\GlobelusFirms::advert_add_img_top_url($this->advert['id']))) :?>
|
||||
<? if ( file_exists(\front\factory\GlobelusFirms::advert_add_img_top_url($this->advert['id']))) :?>
|
||||
<img src="/advert_add_img_top/<?= $this->advert['id']; ?>/<?= \S::get_token(); ?>" style="max-width: 200px;">
|
||||
<a class="btn btn-danger advert-img-top_delete" href="#">Usuń zdjęcie</a>
|
||||
<? elseif ( file_exists(\front\factory\GlobelusFirms::img_top_url( $this -> user['id'] ) ) ):?>
|
||||
<img src="/img_header/<?= $this-> user['id'];?>/<?= \S::get_token();?>" style="max-width: 200px;">
|
||||
<? endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -280,7 +284,9 @@
|
||||
Zdjęcie pod ogłoszeniem
|
||||
<br>
|
||||
<span>
|
||||
<small>Ważna informacja: jeśli chcesz, aby ta grafika była widoczna jednocześnie we wszystkich ogłoszeniach publikowanych z tego profilu dodaj ją w Profilu Pracodawcy.</small>
|
||||
<small>
|
||||
<strong>Uwaga! Jest to grafika dodatkowa, NIE logo, jeśli chcesz, aby ta grafika była widoczna jednocześnie we wszystkich Twoich ogłoszeniach dodaj ją w Profilu Pracodawcy. Zalecany rozmiar 730px x 200px.</strong>
|
||||
</small>
|
||||
</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -297,6 +303,8 @@
|
||||
<? if (file_exists(\front\factory\GlobelusFirms::advert_add_img_bottom_url($this->advert['id']))) :?>
|
||||
<img src="/advert_add_img_bottom/<?= $this->advert['id']; ?>/<?= \S::get_token(); ?>" style="max-width: 200px;">
|
||||
<a class="btn btn-danger advert-img-bottom_delete" href="#">Usuń zdjęcie</a>
|
||||
<? elseif (file_exists(\front\factory\GlobelusFirms::img_bottom_url($this->user['id']))) :?>
|
||||
<img src="/img_bottom/<?= $this->user['id']; ?>/<?= \S::get_token(); ?>" style="max-width: 200px;">
|
||||
<? endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -356,38 +364,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="form-group row">
|
||||
<label form="contact_person2" class="col-12 col-sm-4"><?= ucfirst($lang['osoba-do-kontaktu']); ?>:</label>
|
||||
<div class="col-12 col-sm-8">
|
||||
<input type="text" class="form-control" name="contact_person2" value="<?= $this->advert['id'] ? htmlspecialchars($this->advert['contact_person2']) : htmlspecialchars($this->user['contact_person_2']); ?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="form-group row">
|
||||
<label form="email2" class="col-12 col-sm-4"><?= ucfirst($lang['email']); ?>:</label>
|
||||
<div class="col-12 col-sm-8">
|
||||
<input type="text" class="form-control" name="email2" value="<?= $this->advert['id'] ? htmlspecialchars($this->advert['email2']) : htmlspecialchars($this->user['email_2']); ?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="form-group row">
|
||||
<label form="phone2" class="col-12 col-sm-4"><?= ucfirst($lang['telefon']); ?>:</label>
|
||||
<div class="col-12 col-sm-8">
|
||||
<input type="text" class="form-control" name="phone2" value="<?= $this->advert['id'] ? htmlspecialchars($this->advert['phone2']) : htmlspecialchars($this->user['phone_2']); ?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
@@ -453,31 +429,125 @@
|
||||
});
|
||||
|
||||
$('body').on('submit', '#advert-add', function(e) {
|
||||
var text = $("#text").summernote('code');
|
||||
e.preventDefault();
|
||||
if (document.activeElement) {
|
||||
document.activeElement.blur();
|
||||
}
|
||||
|
||||
var text = $('#text').summernote('code');
|
||||
text = text.replace(/(<([^>]+)>)/ig, '');
|
||||
text = text.replace(/ /g, '');
|
||||
|
||||
if ($.trim(text) === '') {
|
||||
$('#text').parent('.col-12').children('.note-editor').addClass('error');
|
||||
$('#text').parent('.col-12').children('.editor-error').removeClass('hidden');
|
||||
$('html, body').animate({
|
||||
scrollTop: $('#text').parent('.col-12').children('.note-editor').offset().top
|
||||
scrollTop: $('#text').parent('.col-12').children('.note-editor').offset().top - 100
|
||||
}, 100);
|
||||
e.preventDefault();
|
||||
return;
|
||||
} else {
|
||||
$('#text').parent('.col-12').children('.note-editor').removeClass('error');
|
||||
$('#text').parent('.col-12').children('.editor-error').addClass('hidden');
|
||||
}
|
||||
|
||||
var work_type = $( 'select[name="work_type"]' ).val();
|
||||
if ( work_type == 0 )
|
||||
{
|
||||
$( 'select[name="work_type"]' ).addClass( 'error' );
|
||||
$( 'select[name="work_type"]' ).focus();
|
||||
e.preventDefault();
|
||||
var work_type = $('select[name="work_type"]').val();
|
||||
if (work_type == 0) {
|
||||
$('select[name="work_type"]').addClass('error').focus();
|
||||
return;
|
||||
} else {
|
||||
$('select[name="work_type"]').removeClass('error');
|
||||
}
|
||||
else
|
||||
{
|
||||
$( 'select[name="work_type"]' ).removeClass( 'error' );
|
||||
|
||||
const headerInput = $('#advert-img-top')[0];
|
||||
const bottomInput = $('#advert-img-bottom')[0];
|
||||
const imageChecks = [];
|
||||
|
||||
if (headerInput && headerInput.files && headerInput.files.length) {
|
||||
imageChecks.push(getImageSize(headerInput.files[0]).then(size => {
|
||||
if (!isValidRatio(size)) {
|
||||
throw new Error('header');
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
if (bottomInput && bottomInput.files && bottomInput.files.length) {
|
||||
imageChecks.push(getImageSize(bottomInput.files[0]).then(size => {
|
||||
if (!isValidRatio(size)) {
|
||||
throw new Error('bottom');
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
Promise.allSettled(imageChecks).then(results => {
|
||||
const rejected = results.find(r => r.status === 'rejected');
|
||||
if (rejected) {
|
||||
let scrollTarget;
|
||||
let label;
|
||||
|
||||
if (rejected.reason.message === 'header') {
|
||||
scrollTarget = $('#advert-img-top');
|
||||
label = 'górny';
|
||||
} else if (rejected.reason.message === 'bottom') {
|
||||
scrollTarget = $('#advert-img-bottom');
|
||||
label = 'dolny';
|
||||
}
|
||||
|
||||
if (scrollTarget && scrollTarget.length) {
|
||||
$('html, body').animate({
|
||||
scrollTop: scrollTarget.offset().top - 100
|
||||
}, 200);
|
||||
}
|
||||
|
||||
showAlert(`Obrazek ${label} ma nieprawidłowe proporcje. Dozwolony zakres to 2.66:1 do 8:1.`);
|
||||
return;
|
||||
}
|
||||
|
||||
e.target.submit();
|
||||
});
|
||||
|
||||
function isValidRatio({ width, height }) {
|
||||
const ratio = width / height;
|
||||
return ratio >= 2.6667 && ratio <= 8.0;
|
||||
}
|
||||
|
||||
function getImageSize(file) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const img = new Image();
|
||||
img.onload = function () {
|
||||
resolve({ width: this.naturalWidth, height: this.naturalHeight });
|
||||
};
|
||||
img.onerror = () => reject(new Error('invalid-image'));
|
||||
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
img.src = e.target.result;
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
});
|
||||
}
|
||||
|
||||
function showAlert(message) {
|
||||
$.alert({
|
||||
title: 'Błąd',
|
||||
icon: 'fa fa-exclamation',
|
||||
content: message,
|
||||
type: 'blue',
|
||||
closeIcon: true,
|
||||
closeIconClass: 'fa fa-close',
|
||||
typeAnimated: true,
|
||||
animation: 'opacity',
|
||||
autoClose: 'confirm|10000',
|
||||
columnClass: 'large',
|
||||
theme: 'modern',
|
||||
buttons: {
|
||||
confirm: {
|
||||
text: 'Zamknij',
|
||||
btnClass: 'btn-blue',
|
||||
keys: ['enter'],
|
||||
action: function () {}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
] );?>
|
||||
<div class="mini-box fluid">
|
||||
<div class="title">
|
||||
<?= ucfirst( $lang['moje-ogloszenia'] );?>
|
||||
Twoje oferty pracy
|
||||
<span class="pull-right text-danger small">
|
||||
Posiadasz <?= (int)$this -> firm_points;?> pkt. <a href="/panel-pracodawcy/zakup-punktow">Doładuj konto.</a>
|
||||
</span>
|
||||
@@ -147,7 +147,7 @@
|
||||
'td' => [ 'class' => 'g-center' ],
|
||||
'db' => 'answers',
|
||||
'sort' => true,
|
||||
'php' => 'echo "<a href=\'/panel-pracodawcy/odpowiedzi/[id]\' class=\'btn"; if ( [answers_nondisplayed] ) echo " btn-danger "; else echo " btn-gray "; echo "pull-right\'>[answers]</a>"; '
|
||||
'php' => 'echo "<a href=\'/panel-pracodawcy/odpowiedzi/[id]\' class=\'"; if ( [answers_nondisplayed] ) echo " btn-danger "; else echo " btn-gray "; echo "\'>[answers]</a>"; '
|
||||
], [
|
||||
'name' => 'Widoczne',
|
||||
'db' => 'visible',
|
||||
@@ -256,8 +256,6 @@
|
||||
. 'echo "<span class=\'container-tooltip\' data-tippy-content=\'" . $title4 . "\'>" '
|
||||
. '. "<a href=\'#\' class=\'advert_highlight btn btn-primary btn-sm " . $class4 . "\' advert-id=\'[id]\'>dodatkowa promocja</a>" '
|
||||
. '. "</span>"; '
|
||||
. 'else '
|
||||
. 'echo "<a href=\'#\' class=\'advert-additional-promotion btn btn-primary btn-sm\' advert-id=\'[id]\'>dodatkowa promocja</a>"; '
|
||||
|
||||
//wyróżnienie - sprawdzanie czy ogłoszenie jest opublikowane
|
||||
. 'if ( [disabled_by_admin] ) { '
|
||||
@@ -324,24 +322,22 @@
|
||||
. 'echo "<a href=\'#\' class=\'advert_main_page btn btn-primary btn-sm\' advert-id=\'[id]\'>włącz polecenie</a>"; '
|
||||
|
||||
. 'if ( ![disabled_by_admin] ) { '
|
||||
. 'if ( \'[active_to]\' >= date( \'Y-m-d\' ) ) { '
|
||||
. 'if ( [visible] ) '
|
||||
. 'echo "<a href=\'#\' class=\'btn btn-sm btn-primary advert-disable\' advert-id=\'[id]\'>wyłącz ogłoszenie</a>"; '
|
||||
. 'else { '
|
||||
//sprawdzenie ile ktoś ma ogłoszeń
|
||||
. 'if ( ' . $this -> adverts_count . ' >= ' . $globelus_settings['limit-ogloszen'] . ' ) { '
|
||||
. 'if ( ' . $this -> firm_points . ' < ' . $globelus_settings['pkt-dodanie-ogloszenia-powyzej-limitu'] . ' ) { '
|
||||
. 'echo "<span class=\'container-tooltip\' data-tippy-content=\'Niestety posiadasz zbyt mało punktów aby opublikować nowe ogłoszenie.\'>" '
|
||||
. '. "<a href=\'#\' class=\'advert-public btn btn-primary btn-sm btn-disabled\' advert-id=\'[id]\'>publikuj</a>" '
|
||||
. '. "</span>"; '
|
||||
. '} else { '
|
||||
. 'echo "<a href=\'#\' class=\'btn btn-sm btn-primary advert-public\' advert-id=\'[id]\'>publikuj</a>"; '
|
||||
. '} '
|
||||
. '} '
|
||||
. 'else {'
|
||||
. 'if ( [visible] ) '
|
||||
. 'echo "<a href=\'#\' class=\'btn btn-sm btn-primary advert-disable\' advert-id=\'[id]\'>wyłącz ogłoszenie</a>"; '
|
||||
. 'else { '
|
||||
//sprawdzenie ile ktoś ma ogłoszeń
|
||||
. 'if ( ' . $this -> adverts_count . ' >= ' . $globelus_settings['limit-ogloszen'] . ' ) { '
|
||||
. 'if ( ' . $this -> firm_points . ' < ' . $globelus_settings['pkt-dodanie-ogloszenia-powyzej-limitu'] . ' ) { '
|
||||
. 'echo "<span class=\'container-tooltip\' data-tippy-content=\'Niestety posiadasz zbyt mało punktów aby opublikować nowe ogłoszenie.\'>" '
|
||||
. '. "<a href=\'#\' class=\'advert-public btn btn-primary btn-sm btn-disabled\' advert-id=\'[id]\'>publikuj</a>" '
|
||||
. '. "</span>"; '
|
||||
. '} else { '
|
||||
. 'echo "<a href=\'#\' class=\'btn btn-sm btn-primary advert-public\' advert-id=\'[id]\'>publikuj</a>"; '
|
||||
. '} '
|
||||
. '} '
|
||||
. 'else {'
|
||||
. 'echo "<a href=\'#\' class=\'btn btn-sm btn-primary advert-public\' advert-id=\'[id]\'>publikuj</a>"; '
|
||||
. '} '
|
||||
. '} '
|
||||
. 'echo \'<a href="/panel-pracodawcy/edytuj-ogloszenie/[id]" class="btn btn-sm btn-primary advert-edit" title="edytuj" style="font-size: 12px;">edytuj</a>\';'
|
||||
. '} '
|
||||
@@ -357,6 +353,10 @@
|
||||
'class' => 'btn-danger multi-delete',
|
||||
'label' => 'Usuń',
|
||||
'url' => '/globelusFirms/multi_delete/'
|
||||
], [
|
||||
'class' => 'btn-primary multi-refresh',
|
||||
'label' => 'Odśwież',
|
||||
'url' => '/globelusFirms/multi_refresh/'
|
||||
]
|
||||
];
|
||||
echo $grid -> draw();
|
||||
@@ -371,48 +371,20 @@
|
||||
<script class="footer" src="/libraries/framework/vendor/plugins/datatables/media/js/jquery.dataTables.js"></script>
|
||||
<script class="footer" src="/libraries/framework/vendor/plugins/datatables/media/js/dataTables.bootstrap.js"></script>
|
||||
<script class="footer" type="text/javascript">
|
||||
function odmiana_slowa_ogloszenie( liczba )
|
||||
{
|
||||
var slowo = 'ogłoszenie';
|
||||
if ( liczba == 1 ) return slowo;
|
||||
if ( liczba > 1 && liczba < 5 ) return 'ogłoszenia';
|
||||
if ( liczba >= 5 ) return 'ogłoszeń';
|
||||
}
|
||||
|
||||
$( function()
|
||||
{
|
||||
tippy('[data-tippy-content]', {
|
||||
theme: 'material'
|
||||
});
|
||||
|
||||
$( 'body' ).on( click_event, '.advert-additional-promotion', function(e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var advert_id = $( this ).attr( 'advert-id' );
|
||||
$.alert(
|
||||
{
|
||||
title: 'Dodatkowa promocja ogłoszenia',
|
||||
icon: 'fa fa-exclamation',
|
||||
content: 'Dodatkowa promocja ogłoszenia kosztuje <b><?= $globelus_settings['pkt-dodatkowa-promocja-ogloszenia'];?> punktów<\/b>, zostaną one pobrane z Twojego konta.',
|
||||
closeIcon: true,
|
||||
closeIconClass: 'fa fa-close',
|
||||
typeAnimated: true,
|
||||
animation: 'opacity',
|
||||
columnClass: 'large',
|
||||
theme: 'modern',
|
||||
buttons:
|
||||
{
|
||||
cancel:
|
||||
{
|
||||
text: '<?= $lang['anuluj'];?>',
|
||||
action: function() {}
|
||||
},
|
||||
confirm:
|
||||
{
|
||||
text: '<?= $lang['zatwierdz'];?>',
|
||||
btnClass: 'btn-blue',
|
||||
keys: ['enter'],
|
||||
action: function()
|
||||
{
|
||||
document.location.href='/globelusFirms/advert_additional_promotion/advert-id=' + advert_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$( 'body' ).on( click_event, '.advert_highlight', function(e)
|
||||
{
|
||||
e.preventDefault();
|
||||
@@ -485,6 +457,56 @@
|
||||
});
|
||||
});
|
||||
|
||||
$( 'body' ).on( click_event, '.multi-refresh', function(e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var ids = getCheckedIds( 'ogloszenia-<?= $this -> user['id'];?>' );
|
||||
var points = <?= $globelus_settings['pkt-odswiezenie-ogloszenia'];?> * ids.length;
|
||||
var href = $( this ).attr( 'href' );
|
||||
|
||||
$.alert(
|
||||
{
|
||||
title: 'Odświeżenie ogłoszeń',
|
||||
icon: 'fa fa-exclamation',
|
||||
content: 'Odświeżasz ' + ids.length + ' ' + odmiana_slowa_ogloszenie( ids.length ) + '. Z Twojego konta zostanie pobrane <b>' + points + ' punktów<\/b>.',
|
||||
closeIcon: true,
|
||||
closeIconClass: 'fa fa-close',
|
||||
typeAnimated: true,
|
||||
animation: 'opacity',
|
||||
columnClass: 'large',
|
||||
theme: 'modern',
|
||||
buttons:
|
||||
{
|
||||
cancel:
|
||||
{
|
||||
text: '<?= $lang['anuluj'];?>',
|
||||
action: function() {}
|
||||
},
|
||||
confirm:
|
||||
{
|
||||
text: '<?= $lang['zatwierdz'];?>',
|
||||
btnClass: 'btn-blue',
|
||||
keys: ['enter'],
|
||||
action: function()
|
||||
{
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
cache: false,
|
||||
url: href,
|
||||
data: {
|
||||
ids: ids
|
||||
},
|
||||
beforeSend: function() {},
|
||||
success: function( data ) {
|
||||
document.location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$( 'body' ).on( click_event, '.multi-delete', function(e)
|
||||
{
|
||||
var ids = getCheckedIds( 'ogloszenia-<?= $this -> user['id'];?>' );
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
] );?>
|
||||
<div class="mini-box fluid">
|
||||
<div class="title">
|
||||
Lista CV
|
||||
Aplikacje na Twoje oferty pracy
|
||||
</div>
|
||||
</div>
|
||||
<? if ( is_array( $this -> answers ) and count( $this -> answers ) ):?>
|
||||
|
||||
@@ -13,86 +13,117 @@
|
||||
<? if ( !$this -> user['profile_completed'] ):?>
|
||||
<div class="alert alert-danger">Aby doładować konto musisz uzupełnić Swój profil. <a href="/panel-pracodawcy/profil">Przejdź do profilu</a>.</div>
|
||||
<? else:?>
|
||||
<div class="subtitle">
|
||||
Wybierz jeden z dostępnych pakietów i zwiększ ilość posiadanych punktów.
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-5">
|
||||
<div class="col-12">
|
||||
<div class="subtitle" style="margin-bottom: 32px;">
|
||||
Wybierz jeden z dostępnych pakietów i zwiększ ilość posiadanych punktów.
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 points-prices">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="/panel-pracodawcy/zakup-punktow/pakiet=2"><strong><?= $this -> gsettings['pkt-pakiet-2-ilosc'];?></strong> punktów za <strong><?= number_format( $this -> gsettings['pkt-pakiet-2-cena'], 2, ',', ' ' );?></strong> zł</a>
|
||||
<div class="col-12">
|
||||
<div class="points_prices">
|
||||
<div class="_row">
|
||||
<div class="_column _header">
|
||||
Pakiet
|
||||
</div>
|
||||
<div class="_column _header _center">
|
||||
Punkty
|
||||
</div>
|
||||
<div class="_column _header _center">
|
||||
Cena (zł)
|
||||
</div>
|
||||
<div class="_column _header">
|
||||
Bonus (zysk Klienta)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 points-prices">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="/panel-pracodawcy/zakup-punktow/pakiet=3"><strong><?= $this -> gsettings['pkt-pakiet-3-ilosc'];?></strong> punktów za <strong><?= number_format( $this -> gsettings['pkt-pakiet-3-cena'], 2, ',', ' ' );?></strong> zł</a>
|
||||
<div class="_row" onclick="location.href='/panel-pracodawcy/zakup-punktow/pakiet=1'">
|
||||
<div class="_column">
|
||||
MINI
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= $this -> gsettings['pkt-pakiet-1-ilosc'];?>
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= number_format( $this -> gsettings['pkt-pakiet-1-cena'], 2, ',', ' ' );?> zł
|
||||
</div>
|
||||
<div class="_column">
|
||||
-
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 points-prices">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="/panel-pracodawcy/zakup-punktow/pakiet=4"><strong><?= $this -> gsettings['pkt-pakiet-4-ilosc'];?></strong> punktów za <strong><?= number_format( $this -> gsettings['pkt-pakiet-4-cena'], 2, ',', ' ' );?></strong> zł</a>
|
||||
<!-- pakiet basic -->
|
||||
<div class="_row" onclick="location.href='/panel-pracodawcy/zakup-punktow/pakiet=2'">
|
||||
<div class="_column">
|
||||
BASIC
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= $this -> gsettings['pkt-pakiet-2-ilosc'];?>
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= number_format( $this -> gsettings['pkt-pakiet-2-cena'], 2, ',', ' ' );?> zł
|
||||
</div>
|
||||
<div class="_column">
|
||||
+10 zł / 10 pkt gratis
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 points-prices">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="/panel-pracodawcy/zakup-punktow/pakiet=5"><strong><?= $this -> gsettings['pkt-pakiet-5-ilosc'];?></strong> punktów za <strong><?= number_format( $this -> gsettings['pkt-pakiet-5-cena'], 2, ',', ' ' );?></strong> zł</a>
|
||||
<!-- pakiet pro -->
|
||||
<div class="_row" onclick="location.href='/panel-pracodawcy/zakup-punktow/pakiet=3'">
|
||||
<div class="_column">
|
||||
PRO - <span>Najpopularniejszy!</span>
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= $this -> gsettings['pkt-pakiet-3-ilosc'];?>
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= number_format( $this -> gsettings['pkt-pakiet-3-cena'], 2, ',', ' ' );?> zł
|
||||
</div>
|
||||
<div class="_column">
|
||||
+30 zł / 30 pkt gratis
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 points-prices">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="/panel-pracodawcy/zakup-punktow/pakiet=6"><strong><?= $this -> gsettings['pkt-pakiet-6-ilosc'];?></strong> punktów za <strong><?= number_format( $this -> gsettings['pkt-pakiet-6-cena'], 2, ',', ' ' );?></strong> zł</a>
|
||||
<!-- pakiet premium -->
|
||||
<div class="_row" onclick="location.href='/panel-pracodawcy/zakup-punktow/pakiet=4'">
|
||||
<div class="_column">
|
||||
PREMIUM - <span>+70 zł gratis!</span>
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= $this -> gsettings['pkt-pakiet-4-ilosc'];?>
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= number_format( $this -> gsettings['pkt-pakiet-4-cena'], 2, ',', ' ' );?> zł
|
||||
</div>
|
||||
<div class="_column">
|
||||
+70 zł / 70 pkt gratis
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 points-prices">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="/panel-pracodawcy/zakup-punktow/pakiet=7"><strong><?= $this -> gsettings['pkt-pakiet-7-ilosc'];?></strong> punktów za <strong><?= number_format( $this -> gsettings['pkt-pakiet-7-cena'], 2, ',', ' ' );?></strong> zł</a>
|
||||
<!-- pakiet vip -->
|
||||
<div class="_row" onclick="location.href='/panel-pracodawcy/zakup-punktow/pakiet=5'">
|
||||
<div class="_column">
|
||||
VIP - <span>Najlepszy stosunek cena/jakość!</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 points-prices">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<a href="/panel-pracodawcy/zakup-punktow/pakiet=8"><strong><?= $this -> gsettings['pkt-pakiet-8-ilosc'];?></strong> punktów za <strong><?= number_format( $this -> gsettings['pkt-pakiet-8-cena'], 2, ',', ' ' );?></strong> zł</a>
|
||||
<div class="_column _center">
|
||||
<?= $this -> gsettings['pkt-pakiet-5-ilosc'];?>
|
||||
</div>
|
||||
<div class="_column _center">
|
||||
<?= number_format( $this -> gsettings['pkt-pakiet-5-cena'], 2, ',', ' ' );?> zł
|
||||
</div>
|
||||
<div class="_column">
|
||||
+180 zł / 180 pkt gratis
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-7 lg-hm">
|
||||
<?=\front\view\Scontainers::scontainer( 6 );?>
|
||||
</div>
|
||||
</div>
|
||||
<? endif;?>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<?=\front\view\Scontainers::scontainer( 5 );?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mini-box fluid mt25">
|
||||
<?=\front\view\Scontainers::scontainer( 6 );?>
|
||||
</div>
|
||||
<div class="mini-box fluid mt25">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<?=\front\view\Scontainers::scontainer( 5 );?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -11,7 +11,7 @@
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="content profil">
|
||||
<form method="POST" action="/globelusFirms/data_save/" enctype="multipart/form-data">
|
||||
<form method="POST" action="/globelusFirms/data_save/" enctype="multipart/form-data" id="profile_edit">
|
||||
<div class="step-title">
|
||||
<?= $lang['pracodawca-profil-krok-1-opis']; ?>
|
||||
</div>
|
||||
@@ -164,8 +164,8 @@
|
||||
</div>
|
||||
<hr />
|
||||
<div class="step-title">
|
||||
Zdjęcie nad ogłoszeniem<br>
|
||||
<p><span><small>Ważna informacja: ta grafika będzie widoczna jednocześnie we wszystkich ogłoszeniach publikowanych z tego profilu i zmienić ją będzie można tylko w Profilu Pracodawcy.</small></span></p>
|
||||
Zdjęcie nad ogłoszeniem
|
||||
<p><span><small><strong>Uwaga! Jest to grafika dodatkowa, NIE logo, będzie widoczna automatycznie we wszystkich ogłoszeniach publikowanych z tego profilu, ale w momencie dodawania ogłoszenia będzie można ją zmienić. Zalecany rozmiar 730px x 200px.</strong></small></span></p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
@@ -189,7 +189,13 @@
|
||||
<hr />
|
||||
<div class="step-title">
|
||||
Zdjęcie pod ogłoszeniem
|
||||
<p><span><small>Ważna informacja: ta grafika będzie widoczna jednocześnie we wszystkich ogłoszeniach publikowanych z tego profilu i zmienić ją będzie można tylko w Profilu Pracodawcy.</small></span></p>
|
||||
<p>
|
||||
<span>
|
||||
<small>
|
||||
<strong>Uwaga! Jest to grafika dodatkowa, NIE logo, będzie widoczna automatycznie we wszystkich ogłoszeniach publikowanych z tego profilu, ale w momencie dodawania ogłoszenia będzie można ją zmienić. Zalecany rozmiar 730px x 200px.</strong>
|
||||
</small>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
@@ -293,7 +299,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<!-- <hr />
|
||||
<div class="step-title">
|
||||
<?= \S::lang('klauzula'); ?>
|
||||
<p><span><small>Ważna informacja: klauzula będzie widoczna jednocześnie we wszystkich ogłoszeniach publikowanych z tego profilu i zmienić ją będzie można tylko w Profilu Pracodawcy.</small></span></p>
|
||||
@@ -303,7 +309,7 @@
|
||||
<div class="col-12">
|
||||
<textarea name="clauses" id="clauses"><?= $this->g_user['clauses']; ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
<div class="form-group row">
|
||||
@@ -330,6 +336,100 @@
|
||||
<script class="footer" type="text/javascript" src="/libraries/framework/vendor/plugins/datepicker/js/bootstrap-datetimepicker.js"></script>
|
||||
<script class="footer" type="text/javascript" src="/plugins/selectize/js/selectize.js"></script>
|
||||
<script class="footer" type="text/javascript">
|
||||
|
||||
// Sprawdzanie proporcji width / height
|
||||
function isValidRatio({ width, height }) {
|
||||
const ratio = width / height;
|
||||
return ratio >= 2.6667 && ratio <= 8.0;
|
||||
}
|
||||
|
||||
function getImageSize(file) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const img = new Image();
|
||||
img.onload = function () {
|
||||
resolve({ width: this.naturalWidth, height: this.naturalHeight });
|
||||
};
|
||||
img.onerror = reject;
|
||||
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
img.src = e.target.result;
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
});
|
||||
}
|
||||
|
||||
function showAlert(message) {
|
||||
$.alert({
|
||||
title: '<?= ucfirst($lang['blad']); ?>',
|
||||
icon: 'fa fa-exclamation',
|
||||
content: message,
|
||||
type: 'blue',
|
||||
closeIcon: true,
|
||||
closeIconClass: 'fa fa-close',
|
||||
typeAnimated: true,
|
||||
animation: 'opacity',
|
||||
autoClose: 'confirm|10000',
|
||||
columnClass: 'large',
|
||||
theme: 'modern',
|
||||
buttons: {
|
||||
confirm: {
|
||||
text: '<?= $lang['zamknij']; ?>',
|
||||
btnClass: 'btn-blue',
|
||||
keys: ['enter'],
|
||||
action: function () {}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('body').on('submit', '#profile_edit', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const logoInput = $('#logo')[0];
|
||||
const headerInput = $('#img-header')[0];
|
||||
const bottomInput = $('#img-bottom')[0];
|
||||
|
||||
if (
|
||||
logoInput &&
|
||||
logoInput.files &&
|
||||
logoInput.files.length &&
|
||||
logoInput.files[0].size >= 125000
|
||||
) {
|
||||
showAlert('<?= $lang['plik-logo-jest-zbyt-duzy']; ?>');
|
||||
return;
|
||||
}
|
||||
|
||||
const imageChecks = [];
|
||||
|
||||
if (headerInput && headerInput.files && headerInput.files.length) {
|
||||
imageChecks.push(getImageSize(headerInput.files[0]).then(size => {
|
||||
if (!isValidRatio(size)) {
|
||||
throw new Error('header');
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
if (bottomInput && bottomInput.files && bottomInput.files.length) {
|
||||
imageChecks.push(getImageSize(bottomInput.files[0]).then(size => {
|
||||
if (!isValidRatio(size)) {
|
||||
throw new Error('bottom');
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
Promise.allSettled(imageChecks).then(results => {
|
||||
const hasError = results.some(r => r.status === 'rejected');
|
||||
|
||||
if (hasError) {
|
||||
showAlert( 'Wybrany obraz jest nieprawidłowy. Propoce obrazu muszą mieścić się w przedziale 2.66:1 i 8:1.' );
|
||||
return;
|
||||
}
|
||||
|
||||
e.target.submit();
|
||||
});
|
||||
});
|
||||
|
||||
$(function() {
|
||||
$('#other_information').summernote({
|
||||
height: 200,
|
||||
@@ -341,7 +441,7 @@
|
||||
]
|
||||
});
|
||||
|
||||
$('#text, #clauses').summernote({
|
||||
$('#text').summernote({
|
||||
height: 200,
|
||||
lang: 'pl-PL',
|
||||
toolbar: [
|
||||
@@ -355,33 +455,6 @@
|
||||
]
|
||||
});
|
||||
|
||||
$('body').on('submit', '#user-panel form', function(e) {
|
||||
if ($("#user-panel form #logo")[0].files.length && !($('#user-panel form #logo')[0].files[0].size < 125000)) {
|
||||
e.preventDefault();
|
||||
$.alert({
|
||||
title: '<?= ucfirst($lang['blad']); ?>',
|
||||
icon: 'fa fa-exclamation',
|
||||
content: '<?= $lang['plik-logo-jest-zbyt-duzy']; ?>',
|
||||
type: 'blue',
|
||||
closeIcon: true,
|
||||
closeIconClass: 'fa fa-close',
|
||||
typeAnimated: true,
|
||||
animation: 'opacity',
|
||||
autoClose: 'confirm|10000',
|
||||
columnClass: 'large',
|
||||
theme: 'modern',
|
||||
buttons: {
|
||||
confirm: {
|
||||
text: '<?= $lang['zamknij']; ?>',
|
||||
btnClass: 'btn-blue',
|
||||
keys: ['enter'],
|
||||
action: function() {}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on(click_event, '.input-icon .fa', function() {
|
||||
$(this).parent().children('input').focus();
|
||||
});
|
||||
@@ -403,8 +476,8 @@
|
||||
});
|
||||
});
|
||||
|
||||
/*usuwanie loga */
|
||||
$( function()
|
||||
/*usuwanie loga */
|
||||
$( function()
|
||||
{
|
||||
$( 'body' ).on( click_event, '.img_logo_delete', function()
|
||||
{
|
||||
@@ -459,7 +532,7 @@
|
||||
});
|
||||
|
||||
/*usuwanie zdjecia header */
|
||||
$( function()
|
||||
$( function()
|
||||
{
|
||||
$( 'body' ).on( click_event, '.img_header_delete', function()
|
||||
{
|
||||
@@ -514,7 +587,7 @@ $( function()
|
||||
});
|
||||
|
||||
/*usuwanie zdjecia bottom */
|
||||
$( function()
|
||||
$( function()
|
||||
{
|
||||
$( 'body' ).on( click_event, '.img_bottom_delete', function()
|
||||
{
|
||||
@@ -567,7 +640,5 @@ $( function()
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
<?= $this -> g_user['other_information'];?>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<!--<hr/>
|
||||
<div class="step-title">
|
||||
<?= ucfirst( \S::lang( 'klauzula' ) );?>
|
||||
<p><span><small>Ważna informacja: klauzula będzie widoczna jednocześnie we wszystkich ogłoszeniach publikowanych z tego profilu i zmienić ją będzie można tylko w Profilu Pracodawcy.</small></span></p>
|
||||
@@ -186,14 +186,20 @@
|
||||
<div class="col-12">
|
||||
<?= $this -> g_user['clauses'];?>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
<?
|
||||
$img_header_url = \front\factory\GlobelusFirms::img_header_url( $this -> g_user['id'] );
|
||||
if ( file_exists( $img_header_url ) ):?>
|
||||
<hr/>
|
||||
<div class="step-title">
|
||||
Zdjęcie nad ogłoszeniem
|
||||
<p><span><small>Ważna informacja: klauzula będzie widoczna jednocześnie we wszystkich ogłoszeniach publikowanych z tego profilu i zmienić ją będzie można tylko w Profilu Pracodawcy.</small></span></p>
|
||||
<p>
|
||||
<span>
|
||||
<small>
|
||||
<strong>Uwaga! Jest to grafika dodatkowa, NIE logo, będzie widoczna automatycznie we wszystkich ogłoszeniach publikowanych z tego profilu, ale w momencie dodawania ogłoszenia będzie można ją zmienić. Zalecany rozmiar 730px x 200px.</strong>
|
||||
</small>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="image_header"><img src="/img_header/<?= $this->g_user['id'];?>/<?= \S::get_token();?>"></div>
|
||||
<?
|
||||
@@ -205,7 +211,13 @@
|
||||
<hr/>
|
||||
<div class="step-title">
|
||||
Zdjęcie pod ogłoszeniem
|
||||
<p><span><small>Ważna informacja: klauzula będzie widoczna jednocześnie we wszystkich ogłoszeniach publikowanych z tego profilu i zmienić ją będzie można tylko w Profilu Pracodawcy.</small></span></p>
|
||||
<p>
|
||||
<span>
|
||||
<small>
|
||||
<strong>Uwaga! Jest to grafika dodatkowa, NIE logo, będzie widoczna automatycznie we wszystkich ogłoszeniach publikowanych z tego profilu, ale w momencie dodawania ogłoszenia będzie można ją zmienić. Zalecany rozmiar 730px x 200px.</strong>
|
||||
</small>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="image_bottom"><img src="/img_bottom/<?= $this->g_user['id'];?>/<?= \S::get_token();?>"></div>
|
||||
<?
|
||||
|
||||
@@ -4,18 +4,10 @@
|
||||
<?= \Tpl::view( 'globelus/firms/_partials/menu', [
|
||||
'active' => 'proponowani-kandydaci'
|
||||
] );?>
|
||||
<!--<div class="form-group row">
|
||||
<label form="sex" class="col-12" style="text-align: left;">Wybierz ogłoszenie:</label>
|
||||
<div class="col-12">
|
||||
<select class="form-control" onchange="document.location.href='/panel-pracodawcy/proponowani-kandydaci?aid=' + $( this ).val();">
|
||||
<option value="0">--- wszystkie ogłoszenia ---</option>
|
||||
<? foreach ( $this -> adverts as $advert ):?>
|
||||
<option value="<?= $advert['id'];?>" <? if ( $this -> current_advert == $advert['id'] ):?>selected="selected"<? endif;?>><?= $advert['title'];?></option>
|
||||
<? endforeach;?>
|
||||
</select>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="mini-box fluid">
|
||||
<div class="mini-box fluid mb15">
|
||||
<div class="title">Potencjalni kandydaci</div>
|
||||
</div>
|
||||
<div class="mini-box fluid" style="background: none; padding: 0;">
|
||||
<?
|
||||
if ( is_array( $this -> candidates ) and count( $this -> candidates ) ):
|
||||
foreach ( $this -> candidates as $candidate_id ):
|
||||
|
||||
Reference in New Issue
Block a user