merged with origin

This commit is contained in:
donfiguerres 2022-04-22 10:15:27 +08:00
commit 9fcce788fa
137 changed files with 709 additions and 238 deletions

View file

@ -0,0 +1,49 @@
<!-- Add Analytics if enabled in configuration -->
{{ with site.Params.features.analytics }}
{{ if .enabled }}
<!-- Google Analytics -->
{{ with .google }}
{{ $privacyConfig:= dict (slice "Site" "Config" "Privacy" "GoogleAnalytics") $.Site.Config.Privacy.GoogleAnalytics }}
{{ $analyticsConfig := dict (slice "Site" "GoogleAnalytics") .id }}
{{ template "_internal/google_analytics.html" (merge $privacyConfig $analyticsConfig) }}
{{ end }}
<!-- Counter.dev -->
{{ with .counterDev }}
<script>
if (
!sessionStorage.getItem("_swa") &&
document.referrer.indexOf(location.protocol + "//" + location.host) !== 0
) {
fetch(
"https://counter.dev/track?" +
new URLSearchParams({
referrer: document.referrer,
screen: screen.width + "x" + screen.height,
user: "{{ .id }}",
utcoffset: "1",
}),
{{ with .referrerPolicy }}
{ referrerPolicy: "{{ . }}" }
{{ end }}
);
}
sessionStorage.setItem("_swa", "1");
</script>
{{ end }}
<!-- GoatCounter -->
{{ with .goatCounter }}
<script
data-goatcounter="https://{{ .code }}.goatcounter.com/count"
async
src="//gc.zgo.at/count.js"
></script>
{{ end }}
{{ end }}
{{ end }}
<!-- Keep backwards compatibility and consistency with HUGO defaults -->
{{ if site.GoogleAnalytics }}
{{ template "_internal/google_analytics.html" . }}
{{ end }}

View file

@ -4,15 +4,19 @@
<div class="card-head d-flex">
{{ if .logo }}
{{ $logoImage := resources.Get .logo }}
{{/* svg don't support "Fit" operation */}}
{{ if ne $logoImage.MediaType.SubType "svg" }}
{{ $logoImage = $logoImage.Fit "24x24" }}
{{ end }}
<img class="card-img-xs" src="{{ $logoImage.RelPermalink }}" alt="{{ .name }}" />
<h5 class="card-title">{{ .name }}</h5>
{{ else if .icon }}
{{ $iconName := .icon }}
<h5 class="card-title"><span class="{{ $iconName }}"> {{ .name }}</span></h5>
{{ else }}
<h5 class="card-title">{{ .name }}</h5>
{{ end }}
<h5 class="card-title">{{ .name }}</h5>
</div>
<div class="card-body">
<p class="card-text">{{ .summary | markdownify }}</p>

View file

@ -0,0 +1,11 @@
{{ if .disqus.shortName }}
{{ partial "comments/disqus.html" . }}
{{ else if .valine }}
{{ partial "comments/valine.html" . }}
{{ else if .utteranc }}
{{ partial "comments/utteranc.html" . }}
{{ else if .giscus }}
{{ partial "comments/giscus.html" . }}
{{ else if .commento }}
{{ partial "comments/commento.html" . }}
{{ end }}

View file

@ -0,0 +1,12 @@
{{ with .commento }}
{{ $serverURL := .serverURL }}
{{ $autoInit := .autoInit | default "true"}}
{{ $hideDeleted := .hideDeleted | default "false"}}
<script defer
src="http://{{ $serverURL }}/js/commento.js"
data-auto-init="{{ $autoInit }}"
data-hide-deleted="{{ $hideDeleted }}"
></script>
<div id="commento"></div>
{{ end }}

View file

@ -0,0 +1,29 @@
{{ with .disqus }}
<div id="disqus_thread"></div>
<script type="text/javascript">
(function () {
// Don't ever inject Disqus on localhost--it creates unwanted
// discussions from 'localhost:1313' on your Disqus account...
if (window.location.hostname == "localhost") return;
var dsq = document.createElement("script");
dsq.type = "text/javascript";
dsq.async = true;
var disqus_shortname = "{{ .shortName }}";
dsq.src = "//" + disqus_shortname + ".disqus.com/embed.js";
(
document.getElementsByTagName("head")[0] ||
document.getElementsByTagName("body")[0]
).appendChild(dsq);
})();
</script>
<noscript
>{{ i18n "comments_javascript" }}
<a href="https://disqus.com/?ref_noscript"
>{{ i18n "comments_by" }} Disqus.</a
></noscript
>
<a href="https://disqus.com/" class="dsq-brlink"
>{{ i18n "comments_by" }} <span class="logo-disqus">Disqus</span></a
>
{{ end }}

View file

@ -0,0 +1,28 @@
{{ with .giscus }}
{{ $repo := .repo }}
{{ $repoID := .repoID }}
{{ $category := .category | default "General" }}
{{ $categoryID := .categoryID }}
{{ $theme := .theme | default "light" }}
{{ $map := .map | default "url" }}
{{ $reaction := .reaction | default "1" }}
{{ $metadata := .metadata | default "0" }}
{{ $inputPosition := .inputPosition | default "bottom" }}
{{ $crossOrigin := .crossOrigin | default "anonymous" }}
<script src="https://giscus.app/client.js"
data-repo="{{ $repo }}"
data-repo-id="{{ $repoID }}"
data-category="{{ $category }}"
data-category-id="{{ $categoryID }}"
data-mapping="{{ $map }}"
data-reactions-enabled="{{ $reaction }}"
data-emit-metadata="{{ $metadata }}"
data-input-position="{{ $inputPosition }}"
data-theme="{{ $theme }}"
data-lang="{{ .Site.Language.Lang }}"
crossorigin="{{ $crossOrigin }}"
async>
</script>
{{ end }}

View file

@ -1,6 +1,7 @@
{{ $repo := site.Params.features.comment.utteranc.repo }}
{{ $issueTerm := site.Params.features.comment.utteranc.issueTerm }}
{{ $theme := site.Params.features.comment.utteranc.theme }}
{{ with .utteranc }}
{{ $repo := .repo }}
{{ $issueTerm := .issueTerm }}
{{ $theme := .theme }}
<div id="utteranc_thread"></div>
<div id="comments" class="comments">
@ -20,3 +21,4 @@
document.getElementById('comments-container').appendChild(utterances);
})();
</script>
{{ end }}

View file

@ -0,0 +1,18 @@
{{ with .valine }}
<div id="vcomments"></div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
<script type="text/javascript">
new Valine({
el: "#vcomments",
appId: "{{ .appId }}",
appKey: "{{ .appKey }}",
avatar: "{{ .avatar }}",
placeholder: "{{ .placeholder }}",
visitor: "{{ .visitor }}",
lang: "{{ .lang }}",
recordIP: "{{ .recordIP }}",
enableQQ: "{{ .enableQQ }}",
});
</script>
{{ end }}

View file

@ -1,32 +0,0 @@
{{ $disqusShortName := site.DisqusShortname }}
{{ if site.Params.features.comment.disqus.shortName }}
{{ $disqusShortName = site.Params.features.comment.disqus.shortName }}
{{ end }}
<div id="disqus_thread"></div>
<script type="text/javascript">
(function () {
// Don't ever inject Disqus on localhost--it creates unwanted
// discussions from 'localhost:1313' on your Disqus account...
if (window.location.hostname == "localhost") return;
var dsq = document.createElement("script");
dsq.type = "text/javascript";
dsq.async = true;
var disqus_shortname = "{{ $disqusShortName }}";
dsq.src = "//" + disqus_shortname + ".disqus.com/embed.js";
(
document.getElementsByTagName("head")[0] ||
document.getElementsByTagName("body")[0]
).appendChild(dsq);
})();
</script>
<noscript
>{{ i18n "comments_javascript" }}
<a href="https://disqus.com/?ref_noscript"
>{{ i18n "comments_by" }} Disqus.</a
></noscript
>
<a href="https://disqus.com/" class="dsq-brlink"
>{{ i18n "comments_by" }} <span class="logo-disqus">Disqus</span></a
>

View file

@ -1,6 +1,7 @@
{{/* variables for enabling/disabling parts of the footer */}}
{{ $footerEnabled := site.Params.footer.enable | default true }}
{{ $navigationEnabled := site.Params.footer.navigation.enable | default true }}
{{ $customMenusEnabled := site.Params.footer.navigation.customMenus | default true }}
{{ $contactMeEnabled := site.Params.footer.contactMe.enable | default true }}
{{ $newsletterEnabled := site.Params.footer.newsletter.enable | default true }}
{{ $credentialsEnabled := site.Params.footer.credentials.enable | default true }}
@ -26,7 +27,12 @@
{{ $sections = (index site.Data site.Language.Lang).sections }}
{{ end }}
{{ $copyrightNotice := "© 2021 Copyright."}}
{{ $customMenus := site.Params.customMenus }}
{{ if (index site.Data site.Language.Lang).site.customMenus }}
{{ $customMenus = (index site.Data site.Language.Lang).site.customMenus }}
{{ end }}
{{ $copyrightNotice := now.Format "2006" | printf "© %s Copyright."}}
{{ if (index site.Data site.Language.Lang).site }}
{{ $siteConfig := (index site.Data site.Language.Lang).site }}
{{ if $siteConfig.copyright }}
@ -58,7 +64,7 @@
{{ end }}
{{ $hugoLogo = $hugoLogo.RelPermalink}}
<footer class="container-fluid text-center align-content-center footer pb-2">
<footer id="footer" class="container-fluid text-center align-content-center footer pb-2">
<div class="container pt-5">
<div class="row text-left">
{{ if $navigationEnabled }}
@ -77,6 +83,15 @@
</li>
{{ end }}
{{- end }}
{{ if $customMenusEnabled }}
{{ range $customMenus }}
{{ if .showOnFooter }}
<li class="nav-item">
<a class="smooth-scroll" href="{{ .url }}">{{ .name }}</a>
</li>
{{ end }}
{{ end }}
{{ end }}
</ul>
{{ end }}
</div>

View file

@ -8,11 +8,12 @@
<link rel="stylesheet" href="{{ "/css/navigators/navbar.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/plyr.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/flag-icon.min.css" | relURL }}"/>
<link rel="stylesheet" href="{{ "/css/katex.min.css" | relURL }}">
<!--=================== cdn ==============================-->
<!--=================== fonts ==============================-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Muli:wght@300;400;500;600">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css" />
<!--=================== icons ==============================-->
<link rel="stylesheet" href="{{ "/fontawesome/css/all.min.css" | relURL }}"/>
<!--================= fab-icon =========================-->
{{/* add favicon only if the site author has provided the the favicon */}}

View file

@ -1,5 +1,15 @@
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous"
onload="renderMathInElement(document.body);">
<link rel="stylesheet" href="{{ "/katex/katex.min.css" | relURL }}">
<script type="text/javascript" defer src="{{ "/katex/katex.min.js" | relURL }}"></script>
<script type="text/javascript" defer src="{{ "/katex/auto-render.min.js" | relURL }}" onload="renderMathInElement(document.body);">
renderMathInElement(
document.body,
{
delimiters: [
{left: "$$", right: "$$", display: true},
{left: "\\[", right: "\\]", display: true},
{left: "$", right: "$", display: false},
{left: "\\(", right: "\\)", display: false}
]
}
);
</script>

View file

@ -0,0 +1,6 @@
<script src="{{ "/js/mermaid-8.14.0.min.js" | relURL }}"></script>
<script>
mermaid.initialize({
startOnLoad:true
});
</script>

View file

@ -0,0 +1,16 @@
{{ with site.Params.features.support }}
{{ if .enabled }}
<!-- Enable Ko-Fi floating button -->
{{ with .kofi }}
<script src='https://storage.ko-fi.com/cdn/scripts/overlay-widget.js'></script>
<script>
kofiWidgetOverlay.draw('{{ .user }}', {
'type': 'floating-chat',
'floating-chat.donateButton.text': '{{ .text }}',
'floating-chat.donateButton.text-color': '{{ .textColor }}',
'floating-chat.donateButton.background-color': '{{ .backgroundColor }}',
});
</script>
{{ end }}
{{ end }}
{{ end }}

View file

@ -87,7 +87,7 @@
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{i18n "more" }}</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
{{ $sectionCount := 0 }}
{{ $sectionCount := 1 }}
{{ range sort $sections "section.weight" }}
{{ if and (.section.enable) (.section.showOnNavbar) }}
{{ $sectionCount = add $sectionCount 1}}
@ -115,9 +115,11 @@
</li>
{{ end }}
{{ range $customMenus }}
<li class="nav-item">
<a class="nav-link" href="{{ .url }}">{{ .name }}</a>
</li>
{{ if (not .hideFromNavbar) }}
<li class="nav-item">
<a class="nav-link" href="{{ .url }}">{{ .name }}</a>
</li>
{{ end }}
{{ end }}
{{ if .IsTranslated }}
{{ partial "navigators/lang-selector.html" . }}

View file

@ -31,7 +31,7 @@
<li>
{{ if eq .name "Email" }}
<a href="mailto:{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
{{ else if eq .name "Phone" }}
{{ else if eq .name (i18n "phone") }}
<a href="tel:{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
{{ else }}
<a href="{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>

View file

@ -6,9 +6,12 @@
<div class="container-fluid anchor pb-5 accomplishments-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<div class="row" id="acomplishment-card-holder">
{{ range .accomplishments }}

View file

@ -6,7 +6,10 @@
<div class="container-fluid anchor pb-5 achievements-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<div class="row" id="gallery">

View file

@ -4,9 +4,13 @@
{{ end }}
<div class="container-fluid anchor pb-5 education-section education-alt" id="{{ $sectionID }}">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">{{ .section.name }}</h1>
{{ end }}
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<table class="education-info-table">
@ -115,4 +119,4 @@
</tbody>
</table>
</div>
</div>
</div>

View file

@ -4,10 +4,13 @@
{{ end }}
<div class="container-fluid anchor pb-5 education-section">
{{ if not (.section.hideTitle) }}
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<table class="education-info-table">
@ -107,4 +110,4 @@
</tbody>
</table>
</div>
</div>
</div>

View file

@ -6,8 +6,10 @@
<div class="container-fluid anchor pb-5 experiences-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}
</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container timeline text-justify">
@ -29,4 +31,4 @@
{{ end }}
{{ end }}
</div>
</div>
</div>

View file

@ -1,5 +1,5 @@
{{ if gt (len .positions) 1 }}
{{ partial "sections/experiences/multiple-positions" . }}
{{ partial "sections/experiences/multiple-positions.html" . }}
{{ else }}
{{ partial "sections/experiences/single-position.html" . }}
{{ end }}

View file

@ -12,10 +12,12 @@
<!-- Add company overview -->
<p>{{ .company.overview | markdownify }}</p>
<!-- Add the responsibilities handled at this position -->
{{ if $position.responsibilities }}
<h6 class="text-muted">{{ i18n "responsibilities" }}</h6>
<ul class="justify-content-around">
{{ range $position.responsibilities }}
<li>{{ . | markdownify }}</li>
{{ end }}
</ul>
{{ end }}
</div>

View file

@ -5,7 +5,11 @@
<div class="container-fluid anchor pb-5 projects-section" id="{{ $sectionID }}">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">{{ .section.name }}</h1>
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container ml-auto text-center">
<div class="btn-group flex-wrap" role="group" id="project-filter-buttons">

View file

@ -12,7 +12,10 @@
<div class="container-fluid anchor pb-5 recent-posts-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container">
<div class="row" id="recent-post-cards">

View file

@ -6,7 +6,10 @@
<div class="container-fluid anchor pb-5 skills-section">
{{ if not (.section.hideTitle) }}
<h1 class="text-center">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ else }}
<h1 class="text-center" style="display: none">
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
{{ end }}
<div class="container d-flex-block">
<div class="row" id="primary-skills">

View file

@ -1,17 +0,0 @@
<!-- valine -->
<div id="vcomments"></div>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
<script type="text/javascript">
new Valine({
el: "#vcomments",
appId: "{{ .valine.appId }}",
appKey: "{{ .valine.appKey }}",
avatar: "{{ .valine.avatar }}",
placeholder: "{{ .valine.placeholder }}",
visitor: "{{ .valine.visitor }}",
lang: "{{ .valine.lang }}",
recordIP: "{{ .valine.recordIP }}",
enableQQ: "{{ .valine.enableQQ }}",
});
</script>