Compare commits

...

2 Commits

4 changed files with 142 additions and 157 deletions

View File

@ -0,0 +1,25 @@
function obfuscateEmail(item) {
let href = item.href;
let innerHTML = item.innerHTML;
item.onmouseover = (_this) => {
const elt = _this.target;
const b64email = elt.href.match('[^/]*$').pop();
elt.href = 'mailto:' + atob(b64email);
elt.innerHTML = 'E-mail: ' + atob(b64email);
}
item.onmouseout = (_this) => {
_this.target.href = href;
_this.target.innerHTML = innerHTML;
}
}
function init() {
const elts = []
const query = document.getElementsByClassName("obfuscated_email")
for (let i = 0; i < query.length; i++) {
obfuscateEmail(query[i]);
}
}
window.onload = init

View File

@ -2,88 +2,85 @@
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">
<head>
{% block head %}
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="generator" content="Pelican" />
<title>{% block title %} {{ SITENAME }} {% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/roboto.css" />
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/font-awesome.css" />
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/main.css" />
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/resume.css" />
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/flags.css">
{% if FEED_ALL_ATOM %}
<link
href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}"
type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link
href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}"
type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
{% endif %}
{% block extra_head %}{% endblock extra_head %}
{% endblock head %}
<script>
if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia(
'(prefers-color-scheme: dark)').matches)) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark')
}
</script>
{% block head %}
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="generator" content="Pelican" />
<title>{% block title %} {{ SITENAME }} {% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/roboto.css" />
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/font-awesome.css" />
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/main.css" />
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/resume.css" />
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/flags.css">
{% if FEED_ALL_ATOM %}
<link
href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}"
type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link
href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}"
type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
{% endif %}
{% block extra_head %}{% endblock extra_head %}
{% endblock head %}
<script>
if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia(
'(prefers-color-scheme: dark)').matches)) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark')
}
</script>
</head>
<body class="min-h-screen flex flex-col max-w-7xl lg:max-w-none text-zinc-800 bg-neutral-100
dark:bg-neutral-900 dark:text-zinc-300 container mx-auto justify-center md:px-3 ">
{% include('partials/menu.html') %}
<div class="flex-grow md:max-w-screen-md md:mx-auto md:w-3/4 px-4">
{% include('partials/breadcrumbs.html') %}
{% block content %} {% endblock %}
</div>
<footer class="flex w-full text-xs justify-center mt-10 mb-6 text-zinc-500 dark:text-zinc-400">
<div class="px-4">
<span>{% if COPYRIGHT %}{{ COPYRIGHT }}&nbsp;&#8226;&nbsp;{% endif %}</span>Powered by
<a class="underline" href="https://getpelican.com/">Pelican</a>&nbsp;&
<a class="underline" href="https://github.com/aleylara/Papyrus">&nbsp;Papyrus</a>
</div>
</footer>
dark:bg-neutral-900 dark:text-zinc-300 container mx-auto justify-center md:px-3 ">
{% include('partials/menu.html') %}
<div class="flex-grow md:max-w-screen-md md:mx-auto md:w-3/4 px-4">
{% include('partials/breadcrumbs.html') %}
{% block content %} {% endblock %}
</div>
<footer class="flex w-full text-xs justify-center mt-10 mb-6 text-zinc-500 dark:text-zinc-400">
{% include './partials/footer_links.html' %}
</footer>
{% include 'analytics.html' %}
{% include 'disqus_script.html' %}
{% include 'analytics.html' %}
{% include 'disqus_script.html' %}
<script>
let themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
let themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia(
'(prefers-color-scheme: dark)').matches)) {
themeToggleLightIcon.classList.remove('hidden');
} else {
themeToggleDarkIcon.classList.remove('hidden');
}
let themeToggleBtn = document.getElementById('theme-toggle');
themeToggleBtn.addEventListener('click', function () {
themeToggleDarkIcon.classList.toggle('hidden');
themeToggleLightIcon.classList.toggle('hidden');
if (localStorage.getItem('color-theme')) {
if (localStorage.getItem('color-theme') === 'light') {
document.documentElement.classList.add('dark');
localStorage.setItem('color-theme', 'dark');
} else {
document.documentElement.classList.remove('dark');
localStorage.setItem('color-theme', 'light');
}
} else {
if (document.documentElement.classList.contains('dark')) {
document.documentElement.classList.remove('dark');
localStorage.setItem('color-theme', 'light');
} else {
document.documentElement.classList.add('dark');
localStorage.setItem('color-theme', 'dark');
}
}
});
</script>
<script>
let themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
let themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia(
'(prefers-color-scheme: dark)').matches)) {
themeToggleLightIcon.classList.remove('hidden');
} else {
themeToggleDarkIcon.classList.remove('hidden');
}
let themeToggleBtn = document.getElementById('theme-toggle');
themeToggleBtn.addEventListener('click', function () {
themeToggleDarkIcon.classList.toggle('hidden');
themeToggleLightIcon.classList.toggle('hidden');
if (localStorage.getItem('color-theme')) {
if (localStorage.getItem('color-theme') === 'light') {
document.documentElement.classList.add('dark');
localStorage.setItem('color-theme', 'dark');
} else {
document.documentElement.classList.remove('dark');
localStorage.setItem('color-theme', 'light');
}
} else {
if (document.documentElement.classList.contains('dark')) {
document.documentElement.classList.remove('dark');
localStorage.setItem('color-theme', 'light');
} else {
document.documentElement.classList.add('dark');
localStorage.setItem('color-theme', 'dark');
}
}
});
</script>
<script type="text/javascript" src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/obfuscate_email.js"></script>
</body>
</html>

View File

@ -1,86 +1,43 @@
{% set basics = page.resume.basics %}
{% if basics %}
<header id="header" class="clear">
{% if basics.image_b64 %}
<img class="image" src="data:image/jpeg;base64,{{ basics.image_b64 | safe }}" alt="{{ basics.name }}" />
<div class="middle">
<h1 class="name">{{ basics.name }}</h1>
<h2 class="label">{{ basics.label }}</h2>
</div>
{% else %}
<div>
<h1 class="name">{{ basics.name }}</h1>
<h2 class="label">{{ basics.label }}</h2>
</div>
{% endif %}
<header id="header" class="clear">
{% if basics.image_b64 %}
<img class="image" src="data:image/jpeg;base64,{{ basics.image_b64 | safe }}" alt="{{ basics.name }}" />
<div class="middle">
<h1 class="name">{{ basics.name }}</h1>
<h2 class="label">{{ basics.label }}</h2>
</div>
{% else %}
<div>
<h1 class="name">{{ basics.name }}</h1>
<h2 class="label">{{ basics.label }}</h2>
</div>
{% endif %}
{% if basics.location %}
<span class="location">
{% if basics.location.city %}
<span class="city">{{ basics.location.city }},</span>
{% endif %}
{% if basics.location.region %}
<span class="region">{{ basics.location.region }}</span>
{% endif %}
{% if basics.location.countryCode %}
<span class="countryCode {{ basics.location.countryCode }}"></span>
{% endif %}
</span>
{% endif %}
{% if basics.location %}
<span class="location">
{% if basics.location.city %}
<span class="city">{{ basics.location.city }},</span>
{% endif %}
{% if basics.location.region %}
<span class="region">{{ basics.location.region }}</span>
{% endif %}
{% if basics.location.countryCode %}
<span class="countryCode {{ basics.location.countryCode }}"></span>
{% endif %}
</span>
{% endif %}
{% if basics.birth %}
{{ basics.birth }}
{% endif %}
<div id="contact">
{% if basics.url %}
<div class="website">
<span class="fas fa-external-link-alt"></span>
<a href="{{ basics.url }}">{{ basics.url }}</a>
</div>
{% endif %}
{% if basics.email %}
<div class="email">
<span class="far fa-envelope"></span>
<a href="mailto:{{ basics.email }}">{{ basics.email }}</a>
</div>
{% endif %}
{% if basics.phone %}
<div class="phone">
<span class="fas fa-mobile-alt"></span>
<a href="tel:{{ basics.phone }}">{{ basics.phone }}</a>
</div>
{% endif %}
</div>
{% if basics.profiles %}
<div id="profiles">
{% for profile in basics.profiles %}
<div class="item">
{% if profile.network %}
<div class="username">
<span class="{{ profile.icon | d('fab fa-' + profile.network | replace(' ', '-') | lower) }} {{ profile.network | replace(' ', '-') | lower }} social"></span>
{% if profile.url %}
<span class="url">
<a href="{{ profile.url }}">{{ profile.username }}</a>
</span>
{% else %}
<span>{{ profile.username }}</span>
{% endif %}
</div>
{% endif %}
</div>
{% endfor %}
</div>
{% endif %}
</header>
{% if basics.summary %}
<section class="section">
<section class="main-summary">
<div>{{ basics.summary | replace("\r\n", "<br>") | replace("\n", "<br>") | replace("\r", "<br>") }}</div>
</section>
</section>
{% endif %}
<div id="contact">
<a href="{{ basics.email }}" class="obfuscated_email">E-mail (hover me)</a>
</div>
</header>
{% if basics.summary %}
<section class="section">
<section class="main-summary">
<div>{{ basics.summary | replace("\r\n", "<br>") | replace("\n", "<br>") | replace("\r", "<br>") }}</div>
</section>
</section>
{% endif %}
{% endif %}

View File

@ -0,0 +1,6 @@
<div class="px-4">
<h5 class="text-center">Powered by</h5>
{% for link_item in LINKS %}
<a class="underline me-4" href="{{ link_item[1] }}">{{ link_item[0] }}</a>
{% endfor %}
</div>