This commit is contained in:
Oliver
2025-06-17 11:46:42 -03:00
commit 6f8f4338ea
149 changed files with 6589 additions and 0 deletions

View File

View File

@@ -0,0 +1,38 @@
{{ define "main" }}
<div class="col-lg-12 my-5">
<div class="row align-items-end mb-4 mb-lg-5">
{{ if .Params.image }}
<div class="col-xl-3 col-lg-4">
<div class="pr-3">
<img loading="lazy" class="img-fluid" style="max-width:250px" src="{{ .Params.image | absURL }}" alt="Author">
</div>
</div>
{{ else if .Params.email }}
<div class="col-xl-3 col-lg-4">
<img loading="lazy" class="img-fluid" style="max-width:250px" src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=250&pg&d=identicon">
</div>
{{ end }}
<div class="col-lg-7 mt-5 mt-lg-0">
<p class="h5 mb-3">{{ i18n `about_me` }}</p>
<h3 class="font-primary text-dark mb-0" style="line-height:1.5">{{ .Params.summary }}</h3>
</div>
</div>
<div class="content mb-5 pb-1">{{ .Content }}</div>
{{ if .Params.partners.enable }}
{{ with .Params.partners }}
<p class="h4 mb-3 text-dark">{{ .title | markdownify}}</p>
<ul class="list-inline partner-logos">
{{ range .partner_logos }}
<li class="list-inline-item"><img loading="lazy" src="{{. | absURL}}"></li>
{{ end }}
</ul>
{{ end }}
{{ end }}
</div>
{{ end }}

View File

@@ -0,0 +1,37 @@
<article class="card post-card">
{{ with .Params.images }}
<div class="post-slider slider-sm">
{{ range . }}
<div><img loading="lazy" class="w-100 post" src="{{ . | absURL }}" alt=""></div>
{{ end }}
</div>
{{ end }}
<div class="card-body mb-3">
{{ with .Params.tags }}
<ul class="card-meta-tag list-inline mb-1">
{{ range . }}
<li class="list-inline-item"><a href="{{site.BaseURL}}tags/{{.| urlize}}/">{{.}}</a></li>
{{ end }}
</ul>
{{ end }}
<h3 class="h4 mb-2">
<a class="post-title" href="{{ .Permalink }}" title="{{ .Title }}">{{ .Title }}</a>
</h3>
<p class="mb-0">{{ .Plain | truncate 70 }}</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
{{ with site.GetPage "/about" }}
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="{{ .Permalink }}" class="card-meta-author">{{ with .Params.name }}{{ index (split . " ") 0 }}{{ end }}</a>
</li>
{{ end }}
<li class="list-inline-item">
<span class="card-meta-date">{{.PublishDate.Format "Jan 02, 2006"}}</span>
</li>
</ul>
</div>
</article>

View File

@@ -0,0 +1,51 @@
<!--
PROJECT: Editor Hugo
VERSION: 1.0.0
AUTHOR: Gethugothemes
AUTHOR WEBSITE: https://gethugothemes.com
-->
<!DOCTYPE html>
<html lang="{{ site.LanguageCode | default `en-US` }}">
<head>
{{ partial "head.html" . }}
{{ partialCached "style.html" . }}
</head>
<body>
{{ partialCached "preloader.html" . }}
{{ partial "header.html" . }}
{{ if .IsHome }}
<section class="page-content">
<div class="container-fluid pl-3 pl-md-0 pr-3 pr-lg-4">
<div class="row no-gutters">
{{ block "main" . }}{{ end }}
</div>
</div>
</section>
{{ else }}
<section class="page-content section" style="border-left:1px solid #eee">
<div class="container px-3 px-lg-4">
<div class="row justify-content-center">
{{ block "main" . }}{{ end }}
</div>
</div>
<div class="container-fluid px-3 px-lg-4">
<div class="row justify-content-center">
<div class="col-12 mt-4 pt-2">
{{ partial "footer.html" . }}
</div>
</div>
</div>
</section>
{{ end }}
{{ partialCached "script.html" . }}
</body>
</html>

View File

@@ -0,0 +1,34 @@
{{ define "main" }}
{{ partial "page-header.html" . }}
<div class="col-12 mb-5">
<div class="row">
<div class="col-lg-4">
<div class="pr-0 pr-lg-4">
<div class="content mb-5">
{{.Content | markdownify}}
</div>
<h4 class="mb-3"><a class="text-underline text-primary" href="mailto:{{site.Params.email}}">{{site.Params.email}}</a></h4>
<p class="mb-2">{{site.Params.address}}</p>
<p class="mb-2"><a href="tel:{{site.Params.mobile}}">{{site.Params.mobile}}</a></p>
</div>
</div>
<div class="col-lg-6 mt-5 mt-lg-0">
<form method="POST" action="{{ site.Params.contact_form_action | safeURL}}" class="row">
<div class="col-md-12">
<iframe src="https://ai.odoo4projects.com/form/b5260d99-f566-41b0-88e9-4ace58115b3e"
width="100%"
height="600"
frameborder="0"
style="border: none;"
/>
</div>
</div>
</div>
</div>
{{ end }}

View File

@@ -0,0 +1,14 @@
{{- $.Scratch.Add "index" slice -}}
{{- range where site.RegularPages "Type" "in" site.Params.mainSections -}}
{{ with .Params.images }}
{{ range first 1 . }}
{{ $.Scratch.Set "image" (. | absURL) }}
{{ end }}
{{ end }}
{{ $image:= $.Scratch.Get "image" }}
{{- $.Scratch.Add "index" (dict "title" .Title "tags" .Params.tags "image" $image "categories" .Params.categories "contents" .Plain "permalink" .Permalink) -}}
{{- end -}}
{{- $.Scratch.Get "index" | jsonify -}}

View File

@@ -0,0 +1,123 @@
{{ define "main" }}
<!-- checking blog -->
{{ if or (eq .Section "post") (eq .Section "posts") (eq .Section "blog") (eq .Section "blogs") (eq .Section "news") }}
{{ partial "page-header.html" . }}
<div class="col-12">
<div class="row">
{{ $paginator := .Paginate (where site.RegularPages "Type" "in" site.Params.mainSections) }}
{{ range $paginator.Pages }}
<div class="col-lg-4 col-md-4 col-sm-6">
{{ .Render "article" }}
</div>
{{ end }}
</div>
<div class="row mb-4">
<div class="col-12">
{{"<!-- pagination -->" | safeHTML }}
{{ $paginator := .Paginator }}
<!-- Number of links either side of the current page. -->
{{ $adjacent_links := 2 }}
<!-- $max_links = ($adjacent_links * 2) + 1 -->
{{ $max_links := (add (mul $adjacent_links 2) 1) }}
<!-- $lower_limit = $adjacent_links + 1 -->
{{ $lower_limit := (add $adjacent_links 1) }}
<!-- $upper_limit = $paginator.TotalPages - $adjacent_links -->
{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}
<!-- If there's more than one page. -->
{{ if gt $paginator.TotalPages 1 }}
<nav class="mb-3">
<ul class="pagination justify-content-center">
<!-- Previous page. -->
{{ if $paginator.HasPrev }}
<li class="page-item"><a class="page-link arrow" href="{{ $paginator.Prev.URL }}" aria-label="Pagination Arrow">
<i class="fas fa-angle-left"></i>
</a></li>
{{ end }}
<!-- Page numbers. -->
{{ range $paginator.Pagers }}
{{ $.Scratch.Set "page_number_flag" false }}
<!-- Advanced page numbers. -->
{{ if gt $paginator.TotalPages $max_links }}
<!-- Lower limit pages. -->
<!-- If the user is on a page which is in the lower limit. -->
{{ if le $paginator.PageNumber $lower_limit }}
<!-- If the current loop page is less than max_links. -->
{{ if le .PageNumber $max_links }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
<!-- Upper limit pages. -->
<!-- If the user is on a page which is in the upper limit. -->
{{ else if ge $paginator.PageNumber $upper_limit }}
<!-- If the current loop page is greater than total pages minus $max_links -->
{{ if gt .PageNumber (sub $paginator.TotalPages $max_links) }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
<!-- Middle pages. -->
{{ else }}
{{ if and ( ge .PageNumber (sub $paginator.PageNumber $adjacent_links) ) ( le .PageNumber (add $paginator.PageNumber $adjacent_links) ) }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
{{ end }}
<!-- Simple page numbers. -->
{{ else }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
<!-- Output page numbers. -->
{{ if eq ($.Scratch.Get "page_number_flag") true }}
<li class="page-item">
<a href="{{ .URL }}" class="page-link{{ if eq . $paginator }} active {{ end }}">
{{ .PageNumber }}
</a>
</li>
{{ end }}
{{ end }}
<!-- Next page. -->
{{ if $paginator.HasNext }}
<li class="page-item"><a class="page-link arrow" href="{{ $paginator.Next.URL }}" aria-label="Pagination Arrow">
<i class="fas fa-angle-right"></i>
</a></li>
{{ end }}
</ul>
</nav>
{{ end }}
</div>
</div>
</div>
<!-- taxonomie page -->
{{ else if or (eq .Section "categories") (eq .Section "tags")}}
{{ partial "page-header.html" . }}
<div class="col-12">
<div class="row">
{{ range .Data.Pages }}
<div class="col-lg-4 col-md-4 col-sm-6">
{{ .Render "article" }}
</div>
{{ end }}
</div>
</div>
<!-- regular page -->
{{ else }}
{{ partial "page-header.html" . }}
<section class="section">
<div class="container">
<div class="row">
<div class="col-lg-10 mx-auto">
<div class="content">
{{.Content}}
</div>
</div>
</div>
</div>
</section>
{{ end }}
<!-- /regular page -->
{{ end }}

View File

@@ -0,0 +1,51 @@
{{ define "main" }}
<div class="col-lg-12">
<section class="page-header">
<div class="my-4 py-5">
<h4 class="title">{{ i18n "search_result_for" }}
<span class="mark">
<script>
var keyword = (window.location.search).substr(3);
var result = keyword.replace("+", " ");
document.write(result);
</script>
</span>
</h4>
</div>
</section>
<div class="row" id="search-results"></div>
<script id="search-result-template" type="text/x-js-template">
<div class="col-lg-4 col-md-4 col-sm-6">
<article class="card post-card" id="summary-${key}">
<a href="${link}">
${ isset image }<img loading="lazy" class="w-100" src="${image}" alt="${title}">${end}
</a>
<div class="card-body mb-3">
<h3 class="h4 mb-2">
<a class="post-title" href="${link}" title="${title}">${title}</a>
</h3>
<p class="mb-0">${snippet}</p>
</div>
<div class="card-footer">
<ul class="card-meta list-inline mb-0">
<li class="list-inline-item">
<span class="card-meta-date">{{ i18n "category" }}: ${categories}</span>
</li>
<li class="list-inline-item">
<span class="card-meta-date">{{ i18n "tag" }}: ${tags}</span>
</li>
</ul>
</div>
</article>
</div>
</script>
</div>
{{ "<!-- Search index -->" | safeHTML }}
<script>
var indexURL = {{"index.json" | absLangURL}}
</script>
{{ end }}

View File

@@ -0,0 +1,78 @@
{{ define "main" }}
<!-- checking blog -->
{{ if or (eq .Section "post") (eq .Section "posts") (eq .Section "blog") (eq .Section "blogs") (eq .Section "news") (eq .Section "categories") (eq .Section "tags") }}
<div class="col-lg-8">
<div class="mb-4 mt-4 mt-md-0">
{{ with .Params.images }}
<div class="post-slider">
{{ range . }}
<div><img loading="lazy" class="w-100" src="{{ . | absURL }}" alt=""></div>
{{ end }}
</div>
{{ end }}
{{ with .Params.tags }}
<ul class="card-meta-tag list-inline mt-3">
{{ range . }}
<li class="list-inline-item"><a href="{{site.BaseURL}}tags/{{.| urlize}}/">{{.}}</a></li>
{{ end }}
</ul>
{{ end }}
<h2 class="h3 mt-2 mb-3 post-title">{{ .Title }}</h2>
<ul class="card-meta list-inline mb-0">
{{ with site.GetPage "/about" }}
<li class="list-inline-item">
<span class="text-light">by:</span>
<a href="{{ .Permalink }}" class="card-meta-author">{{ .Params.name }}</a>
</li>
{{ end }}
<li class="list-inline-item">
<span class="card-meta-date">{{.PublishDate.Format "Jan 02, 2006"}}</span>
</li>
</ul>
</div>
<div class="content">
{{ .Content }}
</div>
</div>
<div class="col-lg-4 mt-5 mt-lg-0">
<div class="pl-0 pl-lg-3">
{{ $widget:= site.Params.widgets.sidebar }}
{{- partial "widgets/widget-wrapper" ( dict "Widgets" $widget "Scope" . ) -}}
</div>
</div>
<div class="col-lg-12">
<div class="single-post-similer">
<div class="row">
<div class="col-12">
<h3 class="text-dark font-weight-bold mb-4 pb-2">{{i18n "you_may_also_like"}}</h3>
</div>
{{ $related := ( where site.RegularPages "Type" "in" site.Params.mainSections ) | intersect (where site.Pages ".Title" "!=" .Title) | union (site.RegularPages.RelatedIndices . "tags" ) }}
{{ range first 3 $related }}
<div class="col-lg-4 col-md-4 col-sm-6">
{{ .Render "article" }}
</div>
{{ end }}
</div>
</div>
</div>
<!-- regular page -->
{{ else }}
<div class="col-lg-12">
<div class="row">{{ partial "page-header.html" . }}</div>
<div class="content">
{{.Content}}
</div>
</div>
{{ end }}
<!-- /regular page -->
{{ end }}

View File

@@ -0,0 +1,2 @@
<!-- Redirect to homepage -->
<script>window.location.replace("{{ site.BaseURL | relLangURL }}");</script>

View File

@@ -0,0 +1,149 @@
{{ define "main" }}
<div class="col-lg-4 col-xl-3">
<div class="author-banner bg-primary-light text-center d-flex flex-column align-items-center justify-content-center">
<h1 class="h5">Odoo Community Hosting Tips, Tutorials & Best Practices </h1>
{{ with site.GetPage "/about" }}
{{ if .Params.image }}
<img class="mb-4 rounded-circle w-100" style="max-width:280px" src="{{ .Params.image | absURL }}" alt="Author">
{{ else if .Params.email }}
<img class="mb-4 rounded-circle w-100" style="max-width:280px" src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=220&pg&d=identicon">
{{ end }}
<p class="text-uppercase small mb-2">{{ i18n `my_name_is` }}</p>
<h2 class="h3 text-primary font-primary mb-3">{{ .Params.name }}</h2>
<div class="mb-0 mx-auto" style="max-width:460px">{{ .Params.summary }} <a href="{{ .Permalink }}" aria-label="About me" class="text-underline d-inline-block">{{ i18n `read_more` }}</a></div>
{{ end }}
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
{{ range .Site.Params.social }}
<li class="list-inline-item"><a href="{{.link}}" title="{{.title}}">
<i class="icon {{.icon}}"></i> {{.title}}
</a></li>
{{ end }}
</ul>
</div>
</div>
<div class="col-lg-8 col-xl-9">
<div class="section">
<div class="row">
{{ $paginator := .Paginate (where site.RegularPages "Type" "in" site.Params.mainSections) }}
{{ range $paginator.Pages }}
<div class="col-xl-4 col-sm-6">
{{ .Render "article" }}
</div>
{{ end }}
</div>
<div class="row">
<div class="col-12">
{{"<!-- pagination -->" | safeHTML }}
{{ $paginator := .Paginator }}
<!-- Number of links either side of the current page. -->
{{ $adjacent_links := 2 }}
<!-- $max_links = ($adjacent_links * 2) + 1 -->
{{ $max_links := (add (mul $adjacent_links 2) 1) }}
<!-- $lower_limit = $adjacent_links + 1 -->
{{ $lower_limit := (add $adjacent_links 1) }}
<!-- $upper_limit = $paginator.TotalPages - $adjacent_links -->
{{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}
<!-- If there's more than one page. -->
{{ if gt $paginator.TotalPages 1 }}
<nav class="mb-3">
<ul class="pagination justify-content-center">
<!-- Previous page. -->
{{ if $paginator.HasPrev }}
<li class="page-item"><a class="page-link arrow" href="{{ $paginator.Prev.URL }}" aria-label="Pagination Arrow">
<i class="fas fa-angle-left"></i>
</a></li>
{{ end }}
<!-- Page numbers. -->
{{ range $paginator.Pagers }}
{{ $.Scratch.Set "page_number_flag" false }}
<!-- Advanced page numbers. -->
{{ if gt $paginator.TotalPages $max_links }}
<!-- Lower limit pages. -->
<!-- If the user is on a page which is in the lower limit. -->
{{ if le $paginator.PageNumber $lower_limit }}
<!-- If the current loop page is less than max_links. -->
{{ if le .PageNumber $max_links }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
<!-- Upper limit pages. -->
<!-- If the user is on a page which is in the upper limit. -->
{{ else if ge $paginator.PageNumber $upper_limit }}
<!-- If the current loop page is greater than total pages minus $max_links -->
{{ if gt .PageNumber (sub $paginator.TotalPages $max_links) }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
<!-- Middle pages. -->
{{ else }}
{{ if and ( ge .PageNumber (sub $paginator.PageNumber $adjacent_links) ) ( le .PageNumber (add $paginator.PageNumber $adjacent_links) ) }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
{{ end }}
<!-- Simple page numbers. -->
{{ else }}
{{ $.Scratch.Set "page_number_flag" true }}
{{ end }}
<!-- Output page numbers. -->
{{ if eq ($.Scratch.Get "page_number_flag") true }}
<li class="page-item">
<a href="{{ .URL }}" class="page-link{{ if eq . $paginator }} active {{ end }}">
{{ .PageNumber }}
</a>
</li>
{{ end }}
{{ end }}
<!-- Next page. -->
{{ if $paginator.HasNext }}
<li class="page-item"><a class="page-link arrow" href="{{ $paginator.Next.URL }}" aria-label="Pagination Arrow">
<i class="fas fa-angle-right"></i>
</a></li>
{{ end }}
</ul>
</nav>
{{ end }}
</div>
</div>
{{ if site.Params.subscription.enable }}
{{ with site.Params.subscription }}
<div class="section pb-0">
<div class="row">
<div class="col-12">
<div class="newsletter-block bg-primary-light font-primary">
<div class="row align-items-center">
<div class="col-12">
<h3 class="mb-0">{{ i18n `subscribe_title` }}</h3>
</div>
<div class="col-12 mt-4">
<form action="{{ .mailchimp_form_action }}" name="{{ .mailchimp_form_name }}" method="post">
<div class="input-group">
<input type="text" class="form-control pl-3" placeholder="{{ i18n `enter_your_email`}}" aria-label="{{ i18n `enter_your_email`}}" required>
<div class="input-group-append">
<button type="submit" class="input-group-text pr-3" aria-label="News-letter"><i class="far fa-paper-plane"></i>
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
{{ end }}
{{ end }}
<div class="mt-4 pt-1">
{{ partial "footer.html" . }}
</div>
</div>
</div>
{{ end }}

View File

@@ -0,0 +1,55 @@
<footer class="bg-primary-light py-5">
<div class="container">
<div class="row">
{{ with site.Params.social }}
<div class="col-12 text-center mb-5">
<ul class="social-links is-circled list-unstyled list-inline font-weight-500">
{{ range . }}
<li class="list-inline-item"><a href="{{.link}}" title="{{.title}}">
<i class="icon {{.icon}}"></i> {{.title}}
</a></li>
{{ end }}
</ul>
<p>Discover the best Odoo Community Hosting Tips, Tutorials & Best Practices to optimize your Odoo experience. Whether you're a beginner or an advanced user, our blog provides expert guidance on setting up and managing your Odoo instance. Learn essential tips for choosing the right hosting environment, improving system performance, and ensuring seamless updates.</p>
<p>Our tutorials cover everything from basic configurations to advanced customization, helping you make the most of Odoos powerful features. Stay up-to-date with the latest Odoo Community trends and implement best practices for security, scalability, and data integrity.</p>
<p>With our practical insights, you can enhance your Odoo hosting setup, troubleshoot common issues, and take your business to the next level. Whether you're hosting Odoo on-premise or in the cloud, our resources will guide you every step of the way. Dive into the world of Odoo and unlock its full potential today!</p>
</div>
{{ end }}
{{ if not .IsHome }}
{{ if site.Params.subscription.enable }}
{{ with site.Params.subscription }}
<!-- subscription form -->
<form class="newsletter-block mx-auto mb-5" action="{{ .mailchimp_form_action }}" method="post" name="mc-embedded-subscribe-form" target="_blank">
<h5 class="h4 mb-3 text-center font-primary">{{ i18n `subscribe_title` }}</h5>
<div class="input-group">
<input type="text" class="form-control bg-transparent pl-3" placeholder="{{ i18n `enter_your_email`}}" aria-label="{{ i18n `enter_your_email`}}" required>
<div class="input-group-append">
<button type="submit" class="input-group-text pr-3" aria-label="News-letter"><i class="far fa-paper-plane"></i>
</button>
</div>
</div>
<div style="position: absolute; left: -5000px;" aria-hidden="true">
<input type="text" name="{{ .mailchimp_form_name }}" tabindex="-1">
</div>
</form>
{{ end }}
{{ end }}
{{ end }}
<div class="col-12 text-center">
<p class="mb-0 font-weight-500">{{site.Params.copyright | markdownify}}</p>
</div>
</div>
</div>
</footer>

View File

@@ -0,0 +1,31 @@
<meta charset="utf-8">
<title>{{ .Title }}</title>
<!-- mobile responsive meta -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
<meta name="description" content="{{ with .Params.Description }}{{ . }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}">
{{ with site.Params.author }}
<meta name="author" content="{{ . }}">{{ end }}
<meta name="theme-name" content="editor-hugo" />
<!--Favicon-->
<link rel="shortcut icon" href="{{ site.Params.favicon | absURL }}" type="image/x-icon">
<link rel="icon" href="{{ site.Params.favicon | absURL }}" type="image/x-icon">
<!-- multilingual SEO optimizations -->
{{ if .IsTranslated }}
{{ range .Page.AllTranslations }}
<link rel="alternate" title="{{.Title}}" hreflang="{{.Lang}}" href="{{.RelPermalink}}">
{{ end }}
{{ end }}
{{ with .Params.image }}
<meta property="og:image" content="{{ . | absURL }}" />
{{ end }}
{{ template "_internal/opengraph.html" . }}
{{ template "_internal/google_analytics.html" . }}
{{ site.Params.custom_script | safeHTML }}
<script defer data-domain="blog.odoo4projects.com" src="https://plausible.odoo4projects.com/js/script.js"></script>

View File

@@ -0,0 +1,137 @@
<header class="sidenav">
<div class="is-top">
<div>
<!-- Language List -->
{{ if .IsTranslated }}
<span class="d-inline-block d-md-none mr-1"><select style="cursor:pointer;background:transparent" class="m-2 border-0 text-uppercase" id="select-language" onchange="location = this.value;">
{{ $siteLanguages := site.Languages}}
{{ $pageLang := .Page.Lang}}
{{ range .Page.AllTranslations }}
{{ $translation := .}}
{{ range $siteLanguages }}
{{ if eq $translation.Lang .Lang }}
{{ $selected := false }}
{{ if eq $pageLang .Lang}}
<option id="{{ $translation.Language }}" value="{{ $translation.Permalink }}" selected>{{ .LanguageName }}
</option>
{{ else }}
<option id="{{ $translation.Language }}" value="{{ $translation.Permalink }}">{{ .LanguageName }}</option>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
</select></span>
{{ end }}
{{ if site.Params.search }}
<button class="search-toggle d-inline-block d-md-none" data-toggle="search">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
</button>
{{ end }}
<button class="sidenav-toggler d-inline-block {{if eq site.Params.logo_rotate false}}logo-plain{{end}}" data-toggle="sidenav-menu">
<svg id="toggler-icon" class="toggler-icon" viewBox="0 0 100 100" width="60" onclick="this.classList.toggle('active')"><path class="line top" d="m 30,33 h 40 c 0,0 9.044436,-0.654587 9.044436,-8.508902 0,-7.854315 -8.024349,-11.958003 -14.89975,-10.85914 -6.875401,1.098863 -13.637059,4.171617 -13.637059,16.368042 v 40" /><path class="line middle" d="m 30,50 h 40" /><path class="line bottom" d="m 30,67 h 40 c 12.796276,0 15.357889,-11.717785 15.357889,-26.851538 0,-15.133752 -4.786586,-27.274118 -16.667516,-27.274118 -11.88093,0 -18.499247,6.994427 -18.435284,17.125656 l 0.252538,40" /></svg>
</button>
</div>
{{ if site.Params.logo_rotate }}
<a class="navbar-brand mr-0" href="https://ODOO4projects.com">
{{ if site.Params.logo }}
<img height="{{site.Params.logo_height}}" src="{{ site.Params.logo | absURL}}"
alt="{{site.Params.logo_text}}">
{{ else }}
<span class="h3">{{site.Params.logo_text | markdownify}} <span class="text-primary">.</span></span>
{{ end }}
</a>
{{ else }}
<a class="navbar-brand plain mr-0" href="{{ site.BaseURL | relLangURL }}">
{{ if site.Params.logo }}
<img height="{{site.Params.logo_height}}" src="{{ site.Params.logo | absURL}}"
alt="{{site.Params.logo_text}}">
{{ else }}
<span class="h3">{{site.Params.logo_text | markdownify}} <span class="text-primary">.</span></span>
{{ end }}
</a>
{{ end }}
</div>
<div class="d-none d-md-block">
<ul class="social-links list-unstyled">
{{ if site.Params.search }}
<li class="mb-3">
<button class="search-toggle" data-toggle="search">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/></svg>
</button>
</li>
{{ end }}
<li>
<a href="mailto:{{ site.Params.email }}">
<svg width="1.15em" height="1.15em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383l-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z"/></svg>
</a>
</li>
<!-- Language List -->
{{ if .IsTranslated }}
<li class="mt-3 pt-2"><select style="cursor:pointer" class="m-2 border-0 text-uppercase" id="select-language" onchange="location = this.value;">
{{ $siteLanguages := site.Languages}}
{{ $pageLang := .Page.Lang}}
{{ range .Page.AllTranslations }}
{{ $translation := .}}
{{ range $siteLanguages }}
{{ if eq $translation.Lang .Lang }}
{{ $selected := false }}
{{ if eq $pageLang .Lang}}
<option id="{{ $translation.Language }}" value="{{ $translation.Permalink }}" selected>{{ .LanguageName }}
</option>
{{ else }}
<option id="{{ $translation.Language }}" value="{{ $translation.Permalink }}">{{ .LanguageName }}</option>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
</select></li>
{{ end }}
</ul>
</div>
</header>
<div class="sidenav-overlay" data-toggle="sidenav-menu" onclick="document.getElementById('toggler-icon').classList.remove('active')"></div>
<nav class="sidenav-menu flex-column justify-content-between">
<ul class="w-100 accordion" id="accordionMenu">
{{ range site.Menus.main }}
{{ if .HasChildren }}
<li class="nav-item">
<a class="nav-link" href="#" type="button" data-toggle="collapse" data-target="#dropdown-menu-02">{{ .Name }}</a>
<ul id="dropdown-menu-02" class="collapse list-unstyled" data-parent="#accordionMenu">
{{ range .Children }}
<li><a href="{{if .Pre}}{{if not $.IsHome}}{{site.BaseURL | relLangURL}}{{end}}{{.Pre}}{{ .URL }}{{else}}{{.URL | relLangURL}}{{end}}">{{ .Name }}</a></li>
{{ end }}
</ul>
</li>
{{ else }}
<li class="nav-item">
<a class="nav-link" href="{{if .Pre}}{{if not $.IsHome}}{{site.BaseURL | relLangURL}}{{end}}{{.Pre}}{{ .URL }}{{else}}{{.URL | relLangURL}}{{end}}">{{ .Name }}</a>
</li>
{{ end }}
{{ end }}
</ul>
{{ with site.Params.social }}
<ul class="social-links list-unstyled list-inline mt-5">
{{ range . }}
<li class="list-inline-item"><a href="{{.link}}" title="{{.title}}">
<i class="{{.icon}}"></i>
</a></li>
{{ end }}
</ul>
{{ end }}
</nav>
{{ if site.Params.search }}
<div class="search-block">
<div data-toggle="search-close">
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="currentColor" class="text-primary" viewBox="0 0 16 16"><path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/></svg>
</div>
<form action="{{ `search`| relLangURL }}" method="GET">
<input id="search-field" name="s" type="search" placeholder="{{ i18n `search_placeholder`}}" class="text-center" aria-label="search-query">
</form>
</div>
{{ end }}

View File

@@ -0,0 +1,19 @@
<section class="col-12 page-header">
<div class="section my-4 py-5">
{{ if or (eq .Section "tags") (eq .Section "categories") }}
{{ if eq .Section "tags" }}
<h2 class="h4 title">{{ i18n "showing_posts_from" }} <mark>{{.Title | markdownify}}</mark> {{ i18n "tag" }}</h2>
{{ else if eq .Section "categories" }}
<h2 class="h4 title">{{ i18n "showing_posts_from" }} <mark>{{.Title | markdownify}}</mark> {{ i18n "category" }}</h2>
{{ end }}
{{ else }}
<h2 class="h4 title">{{.Title | markdownify}}</h2>
{{ end }}
</div>
</section>

View File

@@ -0,0 +1,7 @@
{{ if site.Params.preloader.enable }}
<div class="preloader">
{{ with site.Params.preloader.preloader }}
<img src="{{ . | absURL }}" alt="preloader">
{{ end }}
</div>
{{ end }}

View File

@@ -0,0 +1,72 @@
<!-- font family -->
<script src="https://cdn.jsdelivr.net/gh/theprojectsomething/webfontloader@feature/google-fonts-v2/webfontloader.js"></script>
{{$pf:= site.Params.variables.primary_font}}
{{$sf:= site.Params.variables.secondary_font}}
<script>
WebFont.load({
google: {
families: [
'Fira Sans:ital,wght@0,400;0,500;0,600;1,500;1,600'
]
}
});
</script>
<!-- JS Plugins + Main script -->
{{ $scripts := slice }}
{{ range site.Params.plugins.js}}
{{ if findRE "^http" .link }}
<script src="{{ .link | absURL }}" type="application/javascript" {{.attributes | safeHTMLAttr}}></script>
{{ else }}
{{ $scripts = $scripts | append (resources.Get .link) }}
{{ end }}
{{ end }}
{{ $scripts := $scripts | append (resources.Get "js/script.js" | minify) }}
{{ $scripts := $scripts | resources.Concat "/js/script.js" | minify | fingerprint "sha512" }}
<script crossorigin="anonymous" defer="defer" data-turbolinks-suppress-warning integrity="{{ $scripts.Data.Integrity }}" type="application/javascript">{{$scripts.Content | safeJS}}</script>
<!-- cookie -->
{{ if site.Params.cookies.enable }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.2.1/js.cookie.min.js"></script>
<div id="js-cookie-box" class="cookie-box cookie-box-hide">
This site uses cookies. By continuing to use this website, you agree to their use. <span id="js-cookie-button" class="btn btn-sm btn-outline-primary ml-2">I Accept</span>
</div>
<script>
(function ($) {
const cookieBox = document.getElementById('js-cookie-box');
const cookieButton = document.getElementById('js-cookie-button');
if (!Cookies.get('cookie-box')) {
cookieBox.classList.remove('cookie-box-hide');
cookieButton.onclick = function () {
Cookies.set('cookie-box', true, {
expires: {{ site.Params.cookies.expire_days }}
});
cookieBox.classList.add('cookie-box-hide');
};
}
})(jQuery);
</script>
<!-- cookie style -->
<style>
.cookie-box {
position: fixed;
left: 0;
right: 0;
bottom: 0;
text-align: center;
z-index: 9999;
padding: 1rem 2rem;
background: rgb(71, 71, 71);
transition: all .75s cubic-bezier(.19, 1, .22, 1);
color: #fdfdfd;
}
.cookie-box-hide {
display: none;
}
</style>
{{ end }}

View File

@@ -0,0 +1,53 @@
<!-- plugins + stylesheet -->
<link rel="preconnect" href="https://fonts.gstatic.com">
{{ $styles := slice }}
{{ range site.Params.plugins.css }}
{{ if findRE "^http" .link }}
<link crossorigin="anonymous" media="all" rel="stylesheet" href="{{ .link | absURL }}" {{.attributes | safeHTMLAttr}} >
{{ else }}
{{ $styles = $styles | append (resources.Get .link) }}
{{ end }}
{{ end }}
{{ $styles := $styles | append (resources.Get "scss/style.scss" | resources.ExecuteAsTemplate "style.scss" . | toCSS) }}
{{ $styles := $styles | resources.Concat "/css/style.css" | minify | fingerprint "sha512"}}
<style crossorigin="anonymous" media="all" type="text/css" integrity="{{ $styles.Data.Integrity }}">{{$styles.Content | safeCSS}}</style>
<style>
blockquote::before {
display: none;
font-family: "{{ with site.Params.variables }} {{.icon_font}} {{ end }}";
}
.content ul li:not(.nav-item) {
position: relative;
margin-bottom: 5px;
list-style-type: none;
}
.content ul li:not(.nav-item) svg {
margin-right: 6px;
transform: scale(0.8);
color: {{ with site.Params.variables }} {{.primary_color}} {{ end }};
}
.content ul li:not(.nav-item)::before {
font-size: 14px;
font-family: "{{ with site.Params.variables }} {{.icon_font}} {{ end }}";
font-weight: 900;
content: "\f069";
display: none;
}
.notices p::before {
position: absolute;
top: 2px;
font-family: "{{ with site.Params.variables }} {{.icon_font}} {{ end }}";
font-weight: 900;
content: "\f05a";
left: 10px;
display: none;
}
.notices p svg {
position: absolute;
top: 7px;
left: 10px;
color: {{ with site.Params.variables }} {{.white}} {{ end }};
}
</style>

View File

@@ -0,0 +1,17 @@
{{ "<!-- about me -->" | safeHTML }}
<div class="widget text-center">
{{ with site.GetPage "/about" }}
<span class="widget-title">{{ i18n `about_me` }}</span>
{{ if .Params.image }}
<img loading="lazy" class="mb-4 rounded-circle w-100" style="max-width:150px" src="{{ .Params.image | absURL }}" alt="Author">
{{ else if .Params.email }}
<img loading="lazy" class="mb-4 rounded-circle w-100" style="max-width:150px" src="https://www.gravatar.com/avatar/{{ md5 .Params.email }}?s=150&pg&d=identicon">
{{ end }}
<p class="text-uppercase small mb-2">{{ i18n `my_name_is` }}</p>
<h1 class="h4 text-primary font-primary mb-3">{{ .Params.name }}</h1>
<div class="mb-0 mx-auto" style="max-width:460px">{{ .Summary }} <a href="{{ .Permalink }}" aria-label="About me" class="text-underline d-inline-block">{{ i18n `read_more` }}</a></div>
{{ end }}
</div>

View File

@@ -0,0 +1,14 @@
{{ "<!-- categories -->" | safeHTML }}
<div class="widget">
<span class="widget-title">{{ i18n "categories" }}</span>
{{ if isset site.Taxonomies "categories" }}
{{ if not (eq (len site.Taxonomies.categories) 0) }}
<ul class="sidebar-post-categories list-unstyled">
{{ range $name, $items := site.Taxonomies.categories }}
<li><a href="{{ `categories/` | absLangURL }}{{ $name | urlize | lower }}/">{{ $name | humanize }} <span>{{ len $items }}</span></a></li>
{{ end }}
</ul>
{{ end }}
{{ end }}
</div>

View File

@@ -0,0 +1,25 @@
{{ "<!-- latest post -->" | safeHTML }}
<div class="widget">
<span class="widget-title">{{ i18n `recent_post` }}</span>
<ul class="sidebar-recent-post list-unstyled">
{{ $related := ( where site.RegularPages "Type" "in" site.Params.mainSections ) | intersect (where site.Pages ".Title" "!=" .Title) | union (site.RegularPages.Related . ) }}
{{ range first 3 $related }}
<li class="recent-post-item">
<div class="media">
<div class="media-body mr-2">
<h5><a href="{{ .Permalink }}">{{ .Title }}</a></h5>
<span class="card-meta">
<span class="card-meta-date">{{.PublishDate.Format "Jan 02, 2006"}}</span>
</span>
</div>
<a href="{{ .Permalink }}" class="recent-post-image">
{{ range first 1 .Params.Images }}
<img loading="lazy" class="img-fluid rounded-circle" src="{{ . | absURL }}">
{{ end }}
</a>
</div>
</li>
{{ end }}
</ul>
</div>

View File

@@ -0,0 +1,10 @@
{{ "<!-- Search -->" | safeHTML }}
{{ if site.Params.search }}
<div class="widget">
<h5 class="widget-title"><span>{{ i18n "search" }}</span></h5>
<form action="{{ `search`| relLangURL }}" class="widget-search">
<input id="search-query" name="s" type="search" placeholder="{{ i18n `search_placeholder`}}">
<button type="submit"><i class="ti-search"></i></button>
</form>
</div>
{{ end }}

View File

@@ -0,0 +1,13 @@
{{ "<!-- tags -->" | safeHTML }}
<div class="widget">
<span class="widget-title">{{ i18n "tags" }}</span>
{{ if isset site.Taxonomies "tags" }}
{{ if not (eq (len site.Taxonomies.tags) 0) }}
<ul class="sidebar-post-tags list-unstyled list-inline">
{{ range $name, $items := site.Taxonomies.tags }}
<li class="list-inline-item"><a href="{{ `tags/` | absLangURL }}{{ $name | urlize | lower }}/">{{ $name | humanize }}</a></li>
{{ end }}
</ul>
{{ end }}
{{ end }}
</div>

View File

@@ -0,0 +1,3 @@
{{- range .Widgets -}}
{{- partial ( print "widgets/" . ) $.Scope -}}
{{- end -}}

View File

@@ -0,0 +1,8 @@
{{ $_hugo_config := `{ "version": 1 }` }}
<div class="border border-default collapse-wrapper">
<a class="d-flex p-2 collapse-head" data-toggle="collapse" href="#{{ .Get 0 | urlize }}" role="button">
{{ .Get 0 | markdownify }} <i class="fas fa-plus ml-auto pt-1 mt-1"></i>
</a>
<div class="collapse" id="{{ .Get 0 | urlize }}"><div class="p-2">{{ .Inner | markdownify }}</div></div>
</div>

View File

@@ -0,0 +1,3 @@
{{ $_hugo_config := `{ "version": 1 }` }}
<div class="notices {{ .Get 0 }}" {{ if len .Params | eq 2 }} id="{{ .Get 1 }}" {{ end }}><p>{{ .Inner | markdownify }}</p></div>

View File

@@ -0,0 +1,11 @@
{{ $_hugo_config := `{ "version": 1 }` }}
<div class="quote">
<i class="ti-quote-left"></i>
<div>
<p>{{ .Inner | markdownify }}</p>
{{ with .Get "by"}}
<span class="quote-by"> -{{ . }}</span>
{{ end }}
</div>
</div>

View File

@@ -0,0 +1,5 @@
{{ $_hugo_config := `{ "version": 1 }` }}
<div class="tab-pane" title="{{ .Get 0 }}">
{{ .Inner }}
</div>

View File

@@ -0,0 +1,6 @@
{{ $_hugo_config := `{ "version": 1 }` }}
<div class="code-tabs">
<ul class="nav nav-tabs"></ul>
<div class="tab-content">{{ .Inner }}</div>
</div>