Compare commits
2 Commits
4bf887c46e
...
d929eaac1a
Author | SHA1 | Date |
---|---|---|
max/sooulix | d929eaac1a | |
max/sooulix | 991ec39404 |
|
@ -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
|
|
@ -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 }} • {% endif %}</span>Powered by
|
||||
<a class="underline" href="https://getpelican.com/">Pelican</a> &
|
||||
<a class="underline" href="https://github.com/aleylara/Papyrus"> 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>
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue