236 lines
9.8 KiB
Twig
236 lines
9.8 KiB
Twig
{% extends app.config.twig.template %}
|
|
|
|
{% block title %}
|
|
{{ app.config.app.title | default('Resume') }}
|
|
{% endblock %}
|
|
{% block body %}
|
|
|
|
<div class="uk-grid" data-uk-grid-margin>
|
|
<div class="uk-width-1-1">
|
|
<h1 class="uk-heading-large">
|
|
{% if basics.name is not empty %}
|
|
{{ basics.name }}
|
|
{% else %}
|
|
{{ app.config.app.title|default('Resume') }}
|
|
{% endif %}
|
|
{% if basics.label is not empty %}
|
|
<small class="uk-h2 uk-align-right uk-text-bottom">{{ basics.label }}</small>
|
|
{% endif %}
|
|
</h1>
|
|
<hr/>
|
|
{% if basics.summary is not empty %}
|
|
<p class="uk-text-lead">{{ basics.summary }}</p>
|
|
{% endif %}
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="uk-grid" data-uk-grid-margin>
|
|
<div class="uk-width-medium-3-4">
|
|
<h1>Experience</h1>
|
|
<div class="uk-panel uk-panel-header">
|
|
|
|
<div class="resume-positions">
|
|
{% for position in work %}
|
|
<h3 class="company uk-panel-title uk-animation-slide-left">
|
|
{{ position.company }}
|
|
<small class="uk-align-right">
|
|
{{ position.startDate|date('Y') }} -
|
|
{% if position.endDate is not defined %}
|
|
Current
|
|
{% else %}
|
|
{{ position.endDate|date('Y') }}
|
|
{% endif %}
|
|
|
|
(~
|
|
{% if position.endDate is not defined %}
|
|
{{ position.startDate|date_diff }}
|
|
{% else %}
|
|
{{ position.startDate|date_diff(position.endDate) }}
|
|
{% endif %}
|
|
)
|
|
</small>
|
|
</h3>
|
|
<h5>{{ position.position }}</h5>
|
|
<p class="summary uk-text-primary uk-text-large">
|
|
{{ position.summary|raw }}
|
|
</p>
|
|
|
|
|
|
{% if position.highlights is not empty and position.highlights is defined %}
|
|
<dl class="uk-description-list-horizontal uk-animation-slide-right">
|
|
<dt>Highlights</dt>
|
|
{% for highlight in position.highlights %}
|
|
<dd class="uk-margin-small-top uk-margin-small-bottom">{{ highlight|raw }} {# raw is deprecated in 2.0 #}</dd>
|
|
{% endfor %}
|
|
</dl>
|
|
{% endif %}
|
|
<hr class="uk-hr-light"/>
|
|
{% endfor %}
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="uk-width-medium-1-4">
|
|
|
|
<div class="uk-panel uk-panel-header uk-panel-box" data-uk-sticky="{top:35}">
|
|
|
|
|
|
<div class="uk-panel-image">
|
|
<img class="uk-align-right uk-thumbnail uk-border-circle uk-thumbnail-mini uk-animation-scale-up uk-img-preserve"
|
|
src="{{ basics.picture }}"/>
|
|
</div>
|
|
<h3 class="uk-panel-title">Contact</h3>
|
|
|
|
<ul class="uk-list uk-list-line">
|
|
|
|
{% if app.config.app.email is not empty %}
|
|
|
|
<li class="uk-list-space"><a href="#captcha" class="hidden-email" data-uk-modal>[Hidden information]</a></li>
|
|
{% endif %}
|
|
{% if basics.website is not empty %}
|
|
<li class="uk-list-space"><a href="{{ basics.website }}" target="_blank"
|
|
title="Home page">{{ basics.website }}</a></li>
|
|
{% endif %}
|
|
{% if basics.location|length > 0 and basics.location is not empty %}
|
|
<li class="uk-list-space">
|
|
<address>
|
|
{% set location = basics.location %}
|
|
|
|
{% if location.address is not empty %}
|
|
{{ location.address }}<br/>
|
|
{% endif %}
|
|
{% if location.city is not empty %}
|
|
{{ location.city }},
|
|
{% endif %}
|
|
{% if location.region is not empty %}
|
|
{{ location.region }},
|
|
{% endif %}
|
|
{% if location.countryCode is not empty %}
|
|
{{ location.countryCode }}
|
|
{% endif %}<br/>
|
|
|
|
</address>
|
|
</li>
|
|
{% endif %}
|
|
<li class="uk-list-space">
|
|
{% for profile in basics.profiles %}
|
|
{{ render_profile(profile)|raw }}
|
|
{% endfor %}
|
|
|
|
</li>
|
|
<li class="uk-list-divider"></li>
|
|
</ul>
|
|
{% if skills is defined and skills is not empty %}
|
|
|
|
<h3 class="uk-panel-title">Skills</h3>
|
|
|
|
<dl class="uk-description-list-line">
|
|
{% for skill in skills %}
|
|
<dt class="uk-text-bold">{{ skill.name }}</dt>
|
|
<dd>{{ skill.keywords|join(', ')|raw }}</dd>
|
|
{% endfor %}
|
|
</dl>
|
|
|
|
{% endif %}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
<div id="captcha" class="uk-modal">
|
|
<div class="uk-modal-dialog uk-modal-dialog-blank">
|
|
<button class="uk-modal-close uk-close" type="button"></button>
|
|
|
|
<div class="uk-grid uk-flex-center uk-grid-match uk-grid-divider uk-flex-middle uk-height-viewport uk-cover-background" data-uk-grid-match>
|
|
|
|
<div id="recaptcha-wrapper">
|
|
<h1>Verify</h1>
|
|
<div>
|
|
<p> Verify that you are a human please.</p>
|
|
<form class="uk-form" id="recaptcha" method="post" action="/api/v1/captcha" onsubmit="return false;">
|
|
<div class="uk-form-row">
|
|
<div class="g-recaptcha" data-sitekey="6LcvmSQTAAAAAMmf9w6mhCbpdLvknuD9SGVHT0q-"></div>
|
|
</div>
|
|
<div class="uk-form-row">
|
|
<input type="submit" class="uk-button" id="submit" name="submit" value="Verify" />
|
|
</div>
|
|
</form>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="offcanvas" class="uk-offcanvas">
|
|
<div class="uk-offcanvas-bar">
|
|
<ul class="uk-list uk-list-line">
|
|
{% if basics.email is not empty %}
|
|
<li>{{ basics.email }}</li>
|
|
{% endif %}
|
|
{% if basics.phone is not empty %}
|
|
<li>{{ basics.phone }}</li>
|
|
{% endif %}
|
|
{% if basics.location|length > 0 and basics.location is not empty %}
|
|
<li>
|
|
<address>
|
|
{% for location in basics.location %}
|
|
{% if location.address is not empty %}
|
|
{{ location.address }}<br/>
|
|
{% endif %}
|
|
{% if location.city is not empty %}
|
|
{{ location.city }}
|
|
{% if location.postalCode is not empty %}
|
|
{{ location.postalCode }}
|
|
{% endif %}
|
|
{% if location.countryCode is not empty %}
|
|
{{ location.countryCode }}
|
|
{% endif %}<br/>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</address>
|
|
</li>
|
|
{% endif %}
|
|
<li>
|
|
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %}
|
|
{% block javascripts_foot %}
|
|
<script src='https://www.google.com/recaptcha/api.js'></script>
|
|
{% endblock %}
|
|
{% block inline_js_foot %}
|
|
<script type="text/javascript">
|
|
jQuery(document).ready(function($) {
|
|
jQuery('form#recaptcha').on('submit', function(event) {
|
|
event.stopImmediatePropagation();
|
|
event.stopPropagation();
|
|
jQuery.post(jQuery(this).attr('action'), jQuery(this).serialize(), function(response) {
|
|
|
|
data = JSON.parse(response);
|
|
if(false === data.valid) {
|
|
data.message.every(function (d) {
|
|
UIkit.notify('<i class="uk-icon-medium uk-icon-frown-o uk-icon-justify"></i> ' + d, {pos:'bottom-center', status: 'danger'});
|
|
})
|
|
} else if(true === data.valid) {
|
|
var divRoot = jQuery('<div />');
|
|
var h1 = jQuery('<h1 />');
|
|
h1.append(data.message.email);
|
|
var h2 = jQuery('<h2 />');
|
|
h2.append(data.message.phone);
|
|
divRoot.append(h1).append(h2);
|
|
jQuery('#recaptcha-wrapper').replaceWith(divRoot);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
{% endblock %} |