Compare commits
144 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b0f9ca0ae | |||
| 06fd8e8919 | |||
| 02db3d3044 | |||
| fe14b0fbf5 | |||
| d3c2c6d1fc | |||
| 65c71f88ea | |||
| 58ef60dc65 | |||
| 2d43234614 | |||
| dedd6ca0b7 | |||
| 65de557d60 | |||
| 75845423c9 | |||
| bafd3034ae | |||
| 71d2db71d9 | |||
| 657c50d941 | |||
| 1f22a677ca | |||
| 6704952afa | |||
| 108bd93598 | |||
| 996346b249 | |||
| 2cfe671487 | |||
| 7c849ccf21 | |||
| f475ddcef8 | |||
| c3dc76652e | |||
| a78b031ca9 | |||
| 76ff0e4e40 | |||
| c3f0bd449e | |||
| a16652581b | |||
| 7175b0d21f | |||
| 33d91af120 | |||
| 1dc00ccb1e | |||
| 36f42bde9d | |||
| 33c10915a8 | |||
| 0e8e182e33 | |||
| 211a0785fa | |||
| 32c5c04632 | |||
| c52b1f8dcc | |||
| 1685b0a3c4 | |||
| bd10f18553 | |||
| 1ca18416d1 | |||
| 3ef375f488 | |||
| 747106edcc | |||
| 1f17e61ad6 | |||
| 799572c792 | |||
| ca85a71230 | |||
| ea9812ec7c | |||
| d61d39b9fb | |||
| 56615bfa43 | |||
| 35ccacacd2 | |||
| 237a79332a | |||
| 872e2119c2 | |||
| 2500174f94 | |||
| e2463abc4e | |||
| 79282571eb | |||
| 6585f002a9 | |||
| d32ac9a43e | |||
| 412376fdc1 | |||
| 63931ee8f6 | |||
| bb87ee29ac | |||
| eefb6166eb | |||
| 55dd90a0dd | |||
| fe5d8af56d | |||
| b81fd5078b | |||
| eb167e0155 | |||
| 8cb07ffeb4 | |||
| 27c3d0f4cc | |||
| ad3dee71c2 | |||
| bf6f63976b | |||
| 6c8ab46a73 | |||
| 3d6246f3c9 | |||
| 4a5f6ce426 | |||
| 20bc7dd71f | |||
| 65049cfbb7 | |||
| 869eba97a2 | |||
| ddbb4bf7ce | |||
| 2ae15e5235 | |||
| eacae1be3e | |||
| 43fe14bfa1 | |||
| 06ee3c1e1f | |||
| baa4774862 | |||
| a22474538d | |||
| 827a940995 | |||
| f6440e69d5 | |||
| a50f947384 | |||
| a1bff16050 | |||
| e8615c64e2 | |||
| c43da0089d | |||
| c9cebe5fe8 | |||
| 4025a6e321 | |||
| 3809d298ca | |||
| 974d4485ba | |||
| 91b18c0f04 | |||
| c89fe66332 | |||
| 8caa12724e | |||
| 309118c068 | |||
| be903cfd69 | |||
| fe647ce34f | |||
| 17128e9388 | |||
| de221c342d | |||
| 6f5e748b5b | |||
| e151dad461 | |||
| 711d4c7749 | |||
| 56e1bc5a69 | |||
| d3b20dc424 | |||
| 8ac46052e4 | |||
| 6b4b367c13 | |||
| abca4629bc | |||
| 4c6e7d404d | |||
| 2c5f991275 | |||
| 1e951589ef | |||
| 896db21fa5 | |||
| 9e8d0c401d | |||
| 5772734a34 | |||
| 69132a1dae | |||
| 46769a2b6d | |||
| d74549f870 | |||
| 42a0e5100a | |||
| bfa1e4c2b3 | |||
| a159ff65b1 | |||
| e4cda24f7f | |||
| 585c1ef847 | |||
| 2b9ce8fb29 | |||
| d93c49d82a | |||
| 91f6b69fa7 | |||
| 99a131fe43 | |||
| 4ebbb523a5 | |||
| d0a6eb4b28 | |||
| 5e172bca28 | |||
| 93f422675f | |||
| 2e8bf65885 | |||
| 801208c664 | |||
| f69ec4fca3 | |||
| 063c65716b | |||
| 11ca8ef8b3 | |||
| ec80b7f22d | |||
| 2134464267 | |||
| f29aa9b4fa | |||
| d1bc8e2f4c | |||
| bc0b69d726 | |||
| cab383aa12 | |||
| 0b27282e6a | |||
| b5c841295c | |||
| 39e1433fca | |||
| 0c408aa7ce | |||
| e3c84e0ba1 | |||
| fea093c187 |
@@ -0,0 +1 @@
|
|||||||
|
node_modules
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
env:
|
||||||
|
browser: true
|
||||||
|
es2021: true
|
||||||
|
extends:
|
||||||
|
- standard
|
||||||
|
- plugin:no-jquery/all
|
||||||
|
- prettier
|
||||||
|
plugins:
|
||||||
|
- no-jquery
|
||||||
|
parserOptions:
|
||||||
|
ecmaVersion: latest
|
||||||
|
sourceType: module
|
||||||
@@ -6,8 +6,8 @@ title: 'Feature Request'
|
|||||||
|
|
||||||
<!---
|
<!---
|
||||||
Before filing an issue, please review the following:
|
Before filing an issue, please review the following:
|
||||||
Existing Features: https://github.com/hossainemruz/toha#features
|
Existing Features: https://github.com/hugo-toha/toha#features
|
||||||
Project Roadmap: https://github.com/hossainemruz/toha#project-roadmap
|
Project Roadmap: https://github.com/hugo-toha/toha#project-roadmap
|
||||||
-->
|
-->
|
||||||
|
|
||||||
### Describe the solution you'd like
|
### Describe the solution you'd like
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout to latest commit
|
- name: Checkout to latest commit
|
||||||
uses: actions/checkout@v2.4.0
|
uses: actions/checkout@v3.2.0
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v2.4.1
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: "15.x"
|
node-version: "15.x"
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
npm run autoprefixer
|
npm run autoprefixer
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@v3.11.0
|
uses: peter-evans/create-pull-request@v4
|
||||||
with:
|
with:
|
||||||
branch: autoprefixer
|
branch: autoprefixer
|
||||||
branch-suffix: timestamp
|
branch-suffix: timestamp
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
name: Run Build
|
||||||
|
|
||||||
|
# Run action on pull request event
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
steps:
|
||||||
|
# checkout to the commit that has been pushed
|
||||||
|
- uses: actions/checkout@v3.2.0
|
||||||
|
with:
|
||||||
|
submodules: true # Fetch Hugo themes (true OR recursive)
|
||||||
|
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
|
||||||
|
- name: Install node modules
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v2.6.0
|
||||||
|
with:
|
||||||
|
hugo-version: 'latest'
|
||||||
|
extended: true
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
cd exampleSite
|
||||||
|
hugo --minify
|
||||||
@@ -39,11 +39,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2.4.0
|
uses: actions/checkout@v3.2.0
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v1
|
uses: github/codeql-action/init@v2
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@@ -54,7 +54,7 @@ jobs:
|
|||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v1
|
uses: github/codeql-action/autobuild@v2
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 https://git.io/JvXDl
|
# 📚 https://git.io/JvXDl
|
||||||
@@ -68,4 +68,4 @@ jobs:
|
|||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v1
|
uses: github/codeql-action/analyze@v2
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
# Create/Update release draft
|
# Create/Update release draft
|
||||||
- uses: release-drafter/release-drafter@v5.15.0
|
- uses: release-drafter/release-drafter@v5.22.0
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
# checkout to latest commit
|
# checkout to latest commit
|
||||||
- uses: actions/checkout@v2.4.0
|
- uses: actions/checkout@v3.2.0
|
||||||
# run markdown linter
|
# run markdown linter
|
||||||
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.13
|
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.14
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ jobs:
|
|||||||
|
|
||||||
# Set the "Type" field to appropriate option
|
# Set the "Type" field to appropriate option
|
||||||
gh api graphql -f query='
|
gh api graphql -f query='
|
||||||
mutation ($project: ID!, $item: ID!, $field: ID!, $opt_id: ID!) {
|
mutation ($project: ID!, $item: ID!, $field: ID!, $opt_id: String!) {
|
||||||
updateProjectNextItemField(input: {
|
updateProjectNextItemField(input: {
|
||||||
projectId: $project
|
projectId: $project
|
||||||
itemId: $item
|
itemId: $item
|
||||||
@@ -136,7 +136,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
gh api graphql -f query='
|
gh api graphql -f query='
|
||||||
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: ID!) {
|
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: String!) {
|
||||||
updateProjectNextItemField(input: {
|
updateProjectNextItemField(input: {
|
||||||
projectId: $project
|
projectId: $project
|
||||||
itemId: $item
|
itemId: $item
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ jobs:
|
|||||||
|
|
||||||
# Set the "Type" field to appropriate option
|
# Set the "Type" field to appropriate option
|
||||||
gh api graphql -f query='
|
gh api graphql -f query='
|
||||||
mutation ($project: ID!, $item: ID!, $field: ID!, $opt_id: ID!) {
|
mutation ($project: ID!, $item: ID!, $field: ID!, $opt_id: String!) {
|
||||||
updateProjectNextItemField(input: {
|
updateProjectNextItemField(input: {
|
||||||
projectId: $project
|
projectId: $project
|
||||||
itemId: $item
|
itemId: $item
|
||||||
@@ -153,7 +153,7 @@ jobs:
|
|||||||
echo 'PR_STATUS='$OPTION_ID >> $GITHUB_ENV
|
echo 'PR_STATUS='$OPTION_ID >> $GITHUB_ENV
|
||||||
|
|
||||||
gh api graphql -f query='
|
gh api graphql -f query='
|
||||||
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: ID!) {
|
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: String!) {
|
||||||
updateProjectNextItemField(input: {
|
updateProjectNextItemField(input: {
|
||||||
projectId: $project
|
projectId: $project
|
||||||
itemId: $item
|
itemId: $item
|
||||||
@@ -204,7 +204,7 @@ jobs:
|
|||||||
|
|
||||||
# Update the Issue Status
|
# Update the Issue Status
|
||||||
gh api graphql -f query='
|
gh api graphql -f query='
|
||||||
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: ID!) {
|
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: String!) {
|
||||||
updateProjectNextItemField(input: {
|
updateProjectNextItemField(input: {
|
||||||
projectId: $project
|
projectId: $project
|
||||||
itemId: $item
|
itemId: $item
|
||||||
|
|||||||
@@ -3,3 +3,5 @@ node_modules/
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
.history/
|
.history/
|
||||||
resources/
|
resources/
|
||||||
|
public/
|
||||||
|
.hugo_build.lock
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
printWidth: 100
|
||||||
|
tabWidth: 2
|
||||||
|
semi: false
|
||||||
|
singleQuote: true
|
||||||
|
trailingComma: "all"
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
nodejs 18.12.1
|
||||||
@@ -30,8 +30,16 @@ A [Hugo](https://gohugo.io/) theme for a personal portfolio with minimalist desi
|
|||||||
- Achievement Gallery
|
- Achievement Gallery
|
||||||
- Sidebar to Categorize the Posts
|
- Sidebar to Categorize the Posts
|
||||||
- Short Codes
|
- Short Codes
|
||||||
- Google Analytics Support
|
- Analytics Support
|
||||||
- Disqus Comment Support
|
- GoatCounter
|
||||||
|
- counter.dev
|
||||||
|
- Google Analytics
|
||||||
|
- Matomo/Piwik
|
||||||
|
- Comment Support
|
||||||
|
- [Disqus](https://disqus.com/)
|
||||||
|
- [Valine](https://valine.js.org/)
|
||||||
|
- [Uttarances](https://utteranc.es/)
|
||||||
|
- [Giscus](https://giscus.app/)
|
||||||
|
|
||||||
For more details about the features please visit [here](https://toha-guides.netlify.app/posts/features/).
|
For more details about the features please visit [here](https://toha-guides.netlify.app/posts/features/).
|
||||||
|
|
||||||
@@ -49,7 +57,12 @@ For more details about the features please visit [here](https://toha-guides.netl
|
|||||||
- 日本語
|
- 日本語
|
||||||
- 한국어
|
- 한국어
|
||||||
- русский
|
- русский
|
||||||
|
- suomi
|
||||||
- Tiếng Việt
|
- Tiếng Việt
|
||||||
|
- Turkish
|
||||||
|
- Arabic (العربية)
|
||||||
|
- Português
|
||||||
|
- Català
|
||||||
|
|
||||||
To know more about how to translate your site, please visit [here](https://toha-guides.netlify.app/posts/translation/). Follow, the data and post format from this [example site](https://hugo-toha.github.io).
|
To know more about how to translate your site, please visit [here](https://toha-guides.netlify.app/posts/translation/). Follow, the data and post format from this [example site](https://hugo-toha.github.io).
|
||||||
|
|
||||||
@@ -71,7 +84,7 @@ Here are few screenshots from the [example site](https://hugo-toha.github.io).
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Hugo Version 0.68.0 or higher
|
- Hugo Version 0.87.0 or higher
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -137,6 +150,9 @@ params:
|
|||||||
# specify whether you want to show Table of Contents in reading page
|
# specify whether you want to show Table of Contents in reading page
|
||||||
enableTOC: true
|
enableTOC: true
|
||||||
|
|
||||||
|
# specify whether you want the language flags to be displayed.
|
||||||
|
showFlags: true
|
||||||
|
|
||||||
# Provide newsletter configuration.
|
# Provide newsletter configuration.
|
||||||
# This feature has been implemented for Mailchimp only for now.
|
# This feature has been implemented for Mailchimp only for now.
|
||||||
# You can also hide it from the footer.
|
# You can also hide it from the footer.
|
||||||
@@ -165,10 +181,12 @@ When you run your site for first time, it will start with the default parameters
|
|||||||
|
|
||||||
Here, are some handy shortcodes you can use with this theme.
|
Here, are some handy shortcodes you can use with this theme.
|
||||||
|
|
||||||
- [Alert](https://toha-guides.netlify.app/posts/short-codes/alert/)
|
- [Alert](https://toha-guides.netlify.app/posts/shortcodes/#alert)
|
||||||
- [Image](https://toha-guides.netlify.app/posts/short-codes/img/)
|
- [Image](https://toha-guides.netlify.app/posts/shortcodes/#image)
|
||||||
- [Split](https://toha-guides.netlify.app/posts/short-codes/split/)
|
- [Split](https://toha-guides.netlify.app/posts/shortcodes/#split)
|
||||||
- [Vertical Space](https://toha-guides.netlify.app/posts/short-codes/vs/)
|
- [Vertical Space](https://toha-guides.netlify.app/posts/shortcodes/#vertical-space)
|
||||||
|
- [Video](https://toha-guides.netlify.app/posts/shortcodes/#video)
|
||||||
|
- [Mermaid](https://hugo-toha.github.io/posts/shortcodes/#mermaid)
|
||||||
|
|
||||||
## Project Roadmap
|
## Project Roadmap
|
||||||
|
|
||||||
@@ -230,13 +248,14 @@ Here is the check list for portfolio mode,
|
|||||||
|
|
||||||
- [ ] **Publications**
|
- [ ] **Publications**
|
||||||
|
|
||||||
- [ ] Category Filter
|
- [x] Category Filter
|
||||||
- [ ] Card
|
- [x] Card
|
||||||
- [ ] Abstract
|
- [x] Tags
|
||||||
- [ ] Authors
|
- [x] Links
|
||||||
- [ ] Tags
|
- [ ] Dedicated Page
|
||||||
- [ ] Links
|
- [ ] Abstract
|
||||||
- [ ] Gallery
|
- [ ] Authors
|
||||||
|
- [ ] Gallery
|
||||||
|
|
||||||
- [x] **Accomplishment / Courses**
|
- [x] **Accomplishment / Courses**
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
import 'popper.js'
|
||||||
|
import 'bootstrap'
|
||||||
|
import '@fortawesome/fontawesome-free/js/all'
|
||||||
|
|
||||||
|
import './core'
|
||||||
|
import './features'
|
||||||
|
import './sections'
|
||||||
|
import './pages'
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
let deviceState = {
|
||||||
|
isMobile: false,
|
||||||
|
isTablet: false,
|
||||||
|
isLaptop: false
|
||||||
|
}
|
||||||
|
|
||||||
|
function detectDeviceState () {
|
||||||
|
if (window.innerWidth <= 425) {
|
||||||
|
deviceState = {
|
||||||
|
isMobile: true,
|
||||||
|
isTablet: false,
|
||||||
|
isLaptop: false
|
||||||
|
}
|
||||||
|
} else if (window.innerWidth <= 768) {
|
||||||
|
deviceState = {
|
||||||
|
isMobile: false,
|
||||||
|
isTablet: true,
|
||||||
|
isLaptop: false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
deviceState = {
|
||||||
|
isMobile: false,
|
||||||
|
isTablet: false,
|
||||||
|
isLaptop: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
detectDeviceState()
|
||||||
|
window.addEventListener('resize', detectDeviceState)
|
||||||
|
|
||||||
|
// returns a copy of the device state
|
||||||
|
// so other parts of code can't override this.
|
||||||
|
export function getDeviceState () {
|
||||||
|
return { ...deviceState }
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
export * from './device'
|
||||||
|
export * from './insertScript'
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
export const insertScript = (id, src, onload) => {
|
||||||
|
// script is already inserted, do nothing
|
||||||
|
if (document.getElementById(id)) return
|
||||||
|
|
||||||
|
// insert script
|
||||||
|
const firstScriptTag = document.getElementsByTagName('script')[0]
|
||||||
|
const scriptTag = document.createElement('script')
|
||||||
|
scriptTag.id = id
|
||||||
|
scriptTag.onload = onload
|
||||||
|
scriptTag.src = src
|
||||||
|
scriptTag.defer = true
|
||||||
|
scriptTag.async = true
|
||||||
|
firstScriptTag.parentNode.insertBefore(scriptTag, firstScriptTag)
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
import { enable, disable, auto, setFetchMethod } from 'darkreader'
|
||||||
|
import * as params from '@params'
|
||||||
|
|
||||||
|
const darkreader = params?.darkmode?.darkreader || {}
|
||||||
|
const defaultColorScheme = darkreader.defaultColorScheme || 'system'
|
||||||
|
const theme = {
|
||||||
|
brightness: 100,
|
||||||
|
contrast: 100,
|
||||||
|
sepia: 0,
|
||||||
|
...(darkreader.theme || {})
|
||||||
|
}
|
||||||
|
const fixes = {
|
||||||
|
invert: ['img[src$=".svg"]'],
|
||||||
|
...(darkreader.fixes || {})
|
||||||
|
}
|
||||||
|
setFetchMethod(window.fetch)
|
||||||
|
|
||||||
|
export function setSchemeDark () {
|
||||||
|
enable(theme, fixes)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setSchemeLight () {
|
||||||
|
disable()
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setSchemeSystem () {
|
||||||
|
auto(theme, fixes)
|
||||||
|
}
|
||||||
|
|
||||||
|
export { defaultColorScheme }
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
const PERSISTENCE_KEY = 'darkmode:color-scheme'
|
||||||
|
|
||||||
|
async function getService () {
|
||||||
|
if (process.env.FEATURE_DARKMODE_DARKREADER === '1') {
|
||||||
|
return await import('./darkreader')
|
||||||
|
}
|
||||||
|
|
||||||
|
throw Error(' No service defined for feature darkMode.')
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', async () => {
|
||||||
|
const menu = document.getElementById('themeMenu')
|
||||||
|
const $icon = document.getElementById('navbar-theme-icon-svg')
|
||||||
|
if (menu == null || $icon == null) return
|
||||||
|
|
||||||
|
const btns = menu.getElementsByTagName('a')
|
||||||
|
const iconMap = Array.from(btns).reduce((map, btn) => {
|
||||||
|
const $img = btn.getElementsByTagName('img')[0]
|
||||||
|
map[btn.dataset.scheme] = $img.src
|
||||||
|
return map
|
||||||
|
}, {})
|
||||||
|
|
||||||
|
const {
|
||||||
|
setSchemeDark,
|
||||||
|
setSchemeLight,
|
||||||
|
setSchemeSystem,
|
||||||
|
defaultColorScheme
|
||||||
|
} = await getService()
|
||||||
|
|
||||||
|
function loadScheme () {
|
||||||
|
return localStorage.getItem(PERSISTENCE_KEY) || defaultColorScheme
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveScheme (scheme) {
|
||||||
|
localStorage.setItem(PERSISTENCE_KEY, scheme)
|
||||||
|
}
|
||||||
|
|
||||||
|
function setScheme (newScheme) {
|
||||||
|
$icon.src = iconMap[newScheme]
|
||||||
|
|
||||||
|
if (newScheme === 'dark') {
|
||||||
|
setSchemeDark()
|
||||||
|
} else if (newScheme === 'system') {
|
||||||
|
setSchemeSystem()
|
||||||
|
} else {
|
||||||
|
setSchemeLight()
|
||||||
|
}
|
||||||
|
|
||||||
|
saveScheme(newScheme)
|
||||||
|
}
|
||||||
|
|
||||||
|
setScheme(loadScheme())
|
||||||
|
|
||||||
|
Array.from(menu.getElementsByTagName('a')).forEach((btn) => {
|
||||||
|
btn.addEventListener('click', () => {
|
||||||
|
const { scheme } = btn.dataset
|
||||||
|
setScheme(scheme)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
import { insertScript } from '../../core'
|
||||||
|
|
||||||
|
const PDFJS_BUNDLE = 'https://cdn.jsdelivr.net/npm/pdfjs-dist@3.0.279/build/pdf.min.js'
|
||||||
|
const WORKER_BUNDLE = 'https://cdn.jsdelivr.net/npm/pdfjs-dist@3.0.279/build/pdf.worker.min.js'
|
||||||
|
|
||||||
|
class PDFViewer {
|
||||||
|
constructor (el) {
|
||||||
|
const {
|
||||||
|
url,
|
||||||
|
hidePaginator,
|
||||||
|
hideLoader,
|
||||||
|
scale,
|
||||||
|
pageNum
|
||||||
|
} = el.dataset
|
||||||
|
|
||||||
|
if (url == null) {
|
||||||
|
throw new Error('Cannot load PDF! Attribute `data-url` is not set.')
|
||||||
|
}
|
||||||
|
|
||||||
|
// props
|
||||||
|
this.url = url
|
||||||
|
this.hidePaginator = hidePaginator !== 'false'
|
||||||
|
this.hideLoader = hideLoader !== 'false'
|
||||||
|
this.scale = scale || 3
|
||||||
|
|
||||||
|
// initial state
|
||||||
|
this.pageNum = parseInt(pageNum, 10) || 1
|
||||||
|
this.loaded = false
|
||||||
|
this.pageRendering = false
|
||||||
|
this.pageNumPending = null
|
||||||
|
|
||||||
|
// DOM elements
|
||||||
|
this.canvas = el.getElementsByClassName('pdf-canvas')[0]
|
||||||
|
if (this.canvas == null) {
|
||||||
|
throw new Error('canvas element not found!')
|
||||||
|
};
|
||||||
|
this.paginator = el.getElementsByClassName('paginator')[0]
|
||||||
|
this.loadingWrapper = el.getElementsByClassName('loading-wrapper')[0]
|
||||||
|
this.next = el.getElementsByClassName('next')[0]
|
||||||
|
this.prev = el.getElementsByClassName('prev')[0]
|
||||||
|
this.pageNum = el.getElementsByClassName('page-num')[0]
|
||||||
|
this.pageCount = el.getElementsByClassName('page-count')[0]
|
||||||
|
|
||||||
|
// context
|
||||||
|
this.ctx = this.canvas.getContext('2d')
|
||||||
|
|
||||||
|
// events
|
||||||
|
this.next.addEventListener('click', this.handleNextPage.bind(this))
|
||||||
|
this.prev.addEventListener('click', this.handlePrevPage.bind(this))
|
||||||
|
|
||||||
|
this.showPaginator()
|
||||||
|
this.showLoader()
|
||||||
|
this.loadPDF()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If we haven't disabled the loader, show loader and hide canvas
|
||||||
|
*/
|
||||||
|
showLoader () {
|
||||||
|
if (this.hideLoader) return
|
||||||
|
this.loadingWrapper.style.display = 'flex'
|
||||||
|
this.canvas.style.display = 'none'
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If we haven't disabled the paginator, show paginator
|
||||||
|
*/
|
||||||
|
showPaginator () {
|
||||||
|
if (this.hidePaginator) return
|
||||||
|
this.paginator.style.display = 'block'
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hides loader and shows canvas
|
||||||
|
*/
|
||||||
|
showContent () {
|
||||||
|
this.loadingWrapper.style.display = 'none'
|
||||||
|
this.canvas.style.display = 'block'
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asynchronously downloads PDF.
|
||||||
|
*/
|
||||||
|
async loadPDF () {
|
||||||
|
this.pdfDoc = await window.pdfjsLib.getDocument(this.url).promise
|
||||||
|
|
||||||
|
this.pageCount.textContent = this.pdfDoc.numPages
|
||||||
|
|
||||||
|
// If the user passed in a number that is out of range, render the last page.
|
||||||
|
if (this.pageNum > this.pdfDoc.numPages) {
|
||||||
|
this.pageNum = this.pdfDoc.numPages
|
||||||
|
}
|
||||||
|
|
||||||
|
this.renderPage(this.pageNum)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get page info from document, resize canvas accordingly, and render page.
|
||||||
|
* @param num Page number.
|
||||||
|
*/
|
||||||
|
async renderPage (num) {
|
||||||
|
this.pageRendering = true
|
||||||
|
|
||||||
|
const page = await this.pdfDoc.getPage(num)
|
||||||
|
const viewport = page.getViewport({ scale: this.scale })
|
||||||
|
this.canvas.height = viewport.height
|
||||||
|
this.canvas.width = viewport.width
|
||||||
|
|
||||||
|
// Wait for rendering to finish
|
||||||
|
await page.render({
|
||||||
|
canvasContext: this.ctx,
|
||||||
|
viewport
|
||||||
|
}).promise
|
||||||
|
|
||||||
|
this.pageRendering = false
|
||||||
|
this.showContent()
|
||||||
|
|
||||||
|
if (this.pageNumPending !== null) {
|
||||||
|
// New page rendering is pending
|
||||||
|
this.renderPage(this.pageNumPending)
|
||||||
|
this.pageNumPending = null
|
||||||
|
}
|
||||||
|
// Update page counters
|
||||||
|
this.pageNum.textContent = num
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If another page rendering in progress, waits until the rendering is
|
||||||
|
* finished. Otherwise, executes rendering immediately.
|
||||||
|
*/
|
||||||
|
queueRenderPage (num) {
|
||||||
|
if (this.pageRendering) {
|
||||||
|
this.pageNumPending = num
|
||||||
|
} else {
|
||||||
|
this.renderPage(num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays previous page.
|
||||||
|
*/
|
||||||
|
handlePrevPage () {
|
||||||
|
if (this.pageNum <= 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.pageNum--
|
||||||
|
this.queueRenderPage(this.pageNum)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays next page.
|
||||||
|
*/
|
||||||
|
handleNextPage () {
|
||||||
|
if (this.pageNum >= this.pdfDoc.numPages) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.pageNum++
|
||||||
|
this.queueRenderPage(this.pageNum)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
insertScript('pdfjs', PDFJS_BUNDLE, () => {
|
||||||
|
window.pdfjsLib.GlobalWorkerOptions.workerSrc = WORKER_BUNDLE
|
||||||
|
Array.from(document.getElementsByClassName('pdf-viewer')).forEach(el => new PDFViewer(el))
|
||||||
|
})
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
if (process.env.FEATURE_FLOWCHART_MERMAID === '1') {
|
||||||
|
import('./mermaid')
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import mermaid from 'mermaid'
|
||||||
|
import * as params from '@params'
|
||||||
|
|
||||||
|
const mermaidOptions = params.flowchart?.mermaid || {}
|
||||||
|
const options = Object.assign({}, mermaidOptions, { startOnLoad: true })
|
||||||
|
|
||||||
|
mermaid.initialize(options)
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
if (process.env.FEATURE_VIDEOPLAYER === '1') {
|
||||||
|
import('./videoplayer')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.FEATURE_TOC === '1') {
|
||||||
|
import('./toc')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.FEATURE_DARKMODE === '1') {
|
||||||
|
import('./darkmode')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.FEATURE_FLOWCHART === '1') {
|
||||||
|
import('./flowchart')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.FEATURE_SYNTAXHIGHLIGHT === '1') {
|
||||||
|
import('./syntaxhighlight')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.FEATURE_MATH === '1') {
|
||||||
|
import('./math')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.FEATURE_EMBEDPDF === '1') {
|
||||||
|
import('./embedpdf')
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
if (process.env.FEATURE_MATH_KATEX === '1') {
|
||||||
|
import('./katex')
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import renderMathInElement from 'katex/contrib/auto-render'
|
||||||
|
import * as params from '@params'
|
||||||
|
|
||||||
|
const defaultOptions = {
|
||||||
|
delimiters: [
|
||||||
|
{ left: '$$', right: '$$', display: true },
|
||||||
|
{ left: '\\[', right: '\\]', display: true },
|
||||||
|
{ left: '$', right: '$', display: false },
|
||||||
|
{ left: '\\(', right: '\\)', display: false }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
renderMathInElement(
|
||||||
|
document.body,
|
||||||
|
{
|
||||||
|
...defaultOptions,
|
||||||
|
...(params.math?.katex || {})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
import hljs from 'highlight.js'
|
||||||
|
import * as params from '@params'
|
||||||
|
|
||||||
|
hljs.highlightAll(params.syntaxhighlight?.hljs)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
if (process.env.FEATURE_SYNTAXHIGHLIGHT_HLJS === '1') {
|
||||||
|
import('./hljs')
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
import { getDeviceState } from '../../core'
|
||||||
|
|
||||||
|
// Toggle Table of Contents on click. Here, class "hide" open the toc
|
||||||
|
function toggleTOC () {
|
||||||
|
const toc = document.getElementById('toc-section')
|
||||||
|
if (toc == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toc.classList.contains('hide')) {
|
||||||
|
toc.classList.remove('hide')
|
||||||
|
} else {
|
||||||
|
// if sidebar-section is open, then close it first
|
||||||
|
const sidebar = document.getElementById('sidebar-section')
|
||||||
|
if (sidebar != null && sidebar.classList.contains('hide')) {
|
||||||
|
sidebar.classList.remove('hide')
|
||||||
|
}
|
||||||
|
// add "hide" class
|
||||||
|
toc.classList.add('hide')
|
||||||
|
// if it is mobile device. then scroll to top.
|
||||||
|
const { isMobile } = getDeviceState()
|
||||||
|
if (isMobile && toc.classList.contains('hide')) {
|
||||||
|
document.body.scrollTop = 0
|
||||||
|
document.documentElement.scrollTop = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (document.getElementById('hero-area') != null) {
|
||||||
|
document.getElementById('hero-area').classList.toggle('hide')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
// bind click event to #toc-toggle in navbar-2.html
|
||||||
|
const toggle = document.getElementById('toc-toggler')
|
||||||
|
if (toggle) toggle.addEventListener('click', toggleTOC)
|
||||||
|
|
||||||
|
// hide TOC when user clicks on a TOC link.
|
||||||
|
// Only applies if it's mobile.
|
||||||
|
const toc = document.getElementById('TableOfContents')
|
||||||
|
if (toc) {
|
||||||
|
toc.addEventListener('click', (event) => {
|
||||||
|
const { isMobile } = getDeviceState()
|
||||||
|
if (isMobile && event.target.nodeName === 'A') {
|
||||||
|
toggleTOC()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
if (process.env.FEATURE_VIDEOPLAYER_PLYR === '1') {
|
||||||
|
import('./plyr')
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import Plyr from 'plyr'
|
||||||
|
import * as params from '@params'
|
||||||
|
|
||||||
|
const options = params.videoplayer?.plyr
|
||||||
|
window.addEventListener('DOMContentLoaded', () => Plyr.setup('.video-player', options))
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import { init } from 'ityped'
|
||||||
|
|
||||||
|
// =========== Typing Carousel ================
|
||||||
|
// get data from hidden ul and set as typing data
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const $ul = document.getElementById('typing-carousel-data')?.children
|
||||||
|
if ($ul == null || $ul.length === 0) return
|
||||||
|
|
||||||
|
const strings = Array.from($ul).map($el => $el.textContent)
|
||||||
|
|
||||||
|
init('#ityped', {
|
||||||
|
strings,
|
||||||
|
startDelay: 200,
|
||||||
|
loop: true
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
import './note'
|
||||||
|
import './search'
|
||||||
|
import './single'
|
||||||
|
import './home'
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
import imagesLoaded from 'imagesloaded'
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
function resizeGridItem (item) {
|
||||||
|
const grid = document.getElementsByClassName('note-card-holder')[0]
|
||||||
|
const rowHeight = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-auto-rows'))
|
||||||
|
const rowGap = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-row-gap'))
|
||||||
|
const rowSpan = Math.ceil((item.querySelector('.item').getBoundingClientRect().height + rowGap) / (rowHeight + rowGap))
|
||||||
|
item.style.gridRowEnd = 'span ' + rowSpan
|
||||||
|
}
|
||||||
|
|
||||||
|
function resizeAllGridItems () {
|
||||||
|
const allItems = document.getElementsByClassName('note-card')
|
||||||
|
for (let x = 0; x < allItems.length; x++) {
|
||||||
|
resizeGridItem(allItems[x])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resizeInstance (instance) {
|
||||||
|
const item = instance.elements[0]
|
||||||
|
resizeGridItem(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('resize', resizeAllGridItems)
|
||||||
|
|
||||||
|
const allItems = document.getElementsByClassName('note-card')
|
||||||
|
for (let x = 0; x < allItems.length; x++) {
|
||||||
|
imagesLoaded(allItems[x], resizeInstance)
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
import Fuse from 'fuse.js'
|
||||||
|
import Mark from 'mark.js'
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const summaryInclude = 60
|
||||||
|
|
||||||
|
const fuseOptions = {
|
||||||
|
shouldSort: true,
|
||||||
|
includeMatches: true,
|
||||||
|
threshold: 0.0,
|
||||||
|
tokenize: true,
|
||||||
|
location: 0,
|
||||||
|
distance: 100,
|
||||||
|
maxPatternLength: 32,
|
||||||
|
minMatchCharLength: 1,
|
||||||
|
keys: [
|
||||||
|
{ name: 'title', weight: 0.8 },
|
||||||
|
{ name: 'hero', weight: 0.7 },
|
||||||
|
{ name: 'summary', weight: 0.6 },
|
||||||
|
{ name: 'date', weight: 0.5 },
|
||||||
|
{ name: 'contents', weight: 0.5 },
|
||||||
|
{ name: 'tags', weight: 0.3 },
|
||||||
|
{ name: 'categories', weight: 0.3 }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
const searchQuery = param('keyword')
|
||||||
|
if (searchQuery) {
|
||||||
|
document.getElementById('search-query').value = searchQuery
|
||||||
|
executeSearch(searchQuery)
|
||||||
|
} else {
|
||||||
|
const node = document.createElement('p')
|
||||||
|
node.textContent = 'Please enter a word or phrase above'
|
||||||
|
document.getElementById('search-results')?.append(node)
|
||||||
|
}
|
||||||
|
|
||||||
|
function executeSearch (searchQuery) {
|
||||||
|
const url = window.location.href.split('/search/')[0] + '/index.json'
|
||||||
|
|
||||||
|
fetch(url).then(function (data) {
|
||||||
|
const pages = data
|
||||||
|
const fuse = new Fuse(pages, fuseOptions)
|
||||||
|
const results = fuse.search(searchQuery)
|
||||||
|
|
||||||
|
document.getElementById('search-box').value = searchQuery
|
||||||
|
if (results.length > 0) {
|
||||||
|
populateResults(results)
|
||||||
|
} else {
|
||||||
|
const node = document.createElement('p')
|
||||||
|
node.textContent = 'No matches found'
|
||||||
|
document.getElementById('search-results')?.append(node)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function populateResults (results) {
|
||||||
|
results.forEach(function (value, key) {
|
||||||
|
const contents = value.item.contents
|
||||||
|
let snippet = ''
|
||||||
|
const snippetHighlights = []
|
||||||
|
if (fuseOptions.tokenize) {
|
||||||
|
snippetHighlights.push(searchQuery)
|
||||||
|
} else {
|
||||||
|
value.matches.forEach(function (mvalue) {
|
||||||
|
if (mvalue.key === 'tags' || mvalue.key === 'categories') {
|
||||||
|
snippetHighlights.push(mvalue.value)
|
||||||
|
} else if (mvalue.key === 'contents') {
|
||||||
|
const start = mvalue.indices[0][0] - summaryInclude > 0 ? mvalue.indices[0][0] - summaryInclude : 0
|
||||||
|
const end = mvalue.indices[0][1] + summaryInclude < contents.length ? mvalue.indices[0][1] + summaryInclude : contents.length
|
||||||
|
snippet += contents.substring(start, end)
|
||||||
|
snippetHighlights.push(mvalue.value.substring(mvalue.indices[0][0], mvalue.indices[0][1] - mvalue.indices[0][0] + 1))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (snippet.length < 1) {
|
||||||
|
snippet += contents.substring(0, summaryInclude * 2)
|
||||||
|
}
|
||||||
|
// pull template from hugo template definition
|
||||||
|
const templateDefinition = document.getElementById('search-result-template').innerHTML
|
||||||
|
// replace values
|
||||||
|
const output = render(templateDefinition, {
|
||||||
|
key,
|
||||||
|
title: value.item.title,
|
||||||
|
hero: value.item.hero,
|
||||||
|
date: value.item.date,
|
||||||
|
summary: value.item.summary,
|
||||||
|
link: value.item.permalink,
|
||||||
|
tags: value.item.tags,
|
||||||
|
categories: value.item.categories,
|
||||||
|
snippet
|
||||||
|
})
|
||||||
|
|
||||||
|
const doc = new DOMParser().parseFromString(output, 'text/html')
|
||||||
|
document.getElementById('search-results').append(doc)
|
||||||
|
|
||||||
|
snippetHighlights.forEach(function (snipvalue) {
|
||||||
|
const context = document.getElementById('#summary-' + key)
|
||||||
|
const instance = new Mark(context)
|
||||||
|
instance.mark(snipvalue)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function param (name) {
|
||||||
|
return decodeURIComponent((location.search.split(name + '=')[1] || '').split('&')[0]).replace(/\+/g, ' ')
|
||||||
|
}
|
||||||
|
|
||||||
|
function render (templateString, data) {
|
||||||
|
let conditionalMatches, copy
|
||||||
|
const conditionalPattern = /\$\{\s*isset ([a-zA-Z]*) \s*\}(.*)\$\{\s*end\s*}/g
|
||||||
|
// since loop below depends on re.lastInxdex, we use a copy to capture any manipulations whilst inside the loop
|
||||||
|
copy = templateString
|
||||||
|
while ((conditionalMatches = conditionalPattern.exec(templateString)) !== null) {
|
||||||
|
if (data[conditionalMatches[1]]) {
|
||||||
|
// valid key, remove conditionals, leave contents.
|
||||||
|
copy = copy.replace(conditionalMatches[0], conditionalMatches[2])
|
||||||
|
} else {
|
||||||
|
// not valid, remove entire section
|
||||||
|
copy = copy.replace(conditionalMatches[0], '')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
templateString = copy
|
||||||
|
// now any conditionals removed we can do simple substitution
|
||||||
|
let key, find, re
|
||||||
|
for (key in data) {
|
||||||
|
find = '\\$\\{\\s*' + key + '\\s*\\}'
|
||||||
|
re = new RegExp(find, 'g')
|
||||||
|
templateString = templateString.replace(re, data[key])
|
||||||
|
}
|
||||||
|
return templateString
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
// =========== Add anchor to the headers ================
|
||||||
|
function addAnchor (element) {
|
||||||
|
element.innerHTML = `<a href="#${element.id}" class="header-anchor">${element.innerHTML}<sup><i class="fas fa-link fa-sm"></i></sup></a>`
|
||||||
|
}
|
||||||
|
|
||||||
|
const postContent = document.getElementById('post-content')
|
||||||
|
if (postContent != null) {
|
||||||
|
const headerTypes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']
|
||||||
|
for (let i = 0; i < headerTypes.length; i++) {
|
||||||
|
const headers = postContent.querySelectorAll(headerTypes[i])
|
||||||
|
if (headers) {
|
||||||
|
headers.forEach(addAnchor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =============== Make TOC Compatible wit Bootstrap Scroll Spy ========
|
||||||
|
// add "navbar" class to the "nav" element
|
||||||
|
const toc = document.getElementById('TableOfContents')
|
||||||
|
if (toc) {
|
||||||
|
toc.classList.add('navbar')
|
||||||
|
// add "nav-pills" class to the "ul" elements
|
||||||
|
let elems = toc.getElementsByTagName('ul')
|
||||||
|
for (let i = 0; i < elems.length; i++) {
|
||||||
|
elems[i].classList.add('nav-pills')
|
||||||
|
}
|
||||||
|
// add "nav-item" class to the "li" elements
|
||||||
|
elems = toc.getElementsByTagName('li')
|
||||||
|
for (let i = 0; i < elems.length; i++) {
|
||||||
|
elems[i].classList.add('nav-item')
|
||||||
|
}
|
||||||
|
// add "nav-link" class to the "a" elements
|
||||||
|
elems = toc.getElementsByTagName('a')
|
||||||
|
for (let i = 0; i < elems.length; i++) {
|
||||||
|
elems[i].classList.add('nav-link')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// add scroll to top button
|
||||||
|
const btn = document.getElementById('scroll-to-top')
|
||||||
|
|
||||||
|
if(btn) {
|
||||||
|
window.addEventListener('scroll', function () {
|
||||||
|
if (window.scrollY > 300) {
|
||||||
|
btn.classList.add('show')
|
||||||
|
} else {
|
||||||
|
btn.classList.remove('show')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
btn.addEventListener('click', function (e) {
|
||||||
|
e.preventDefault()
|
||||||
|
window.scrollTo({
|
||||||
|
top: 0,
|
||||||
|
behavior: 'smooth'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export const process = {
|
||||||
|
env: {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,220 @@
|
|||||||
|
import { getDeviceState } from '../core'
|
||||||
|
|
||||||
|
function fourColumRow (gallery, entries, i) {
|
||||||
|
const entry1 = document.createElement('div')
|
||||||
|
entry1.classList.add('col-lg-6', 'm-0', 'p-0')
|
||||||
|
entry1.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry1.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry1)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry2 = document.createElement('div')
|
||||||
|
entry2.classList.add('col-lg-3', 'm-0', 'p-0')
|
||||||
|
entry2.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry2.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry2)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry3 = document.createElement('div')
|
||||||
|
entry3.classList.add('col-lg-3', 'm-0', 'p-0')
|
||||||
|
entry3.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry3.children[0].classList.add('img-type-2')
|
||||||
|
i++
|
||||||
|
entry3.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry3.children[1].classList.add('img-type-2')
|
||||||
|
gallery.appendChild(entry3)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
function fourColumnReversedRow (gallery, entries, i) {
|
||||||
|
const entry1 = document.createElement('div')
|
||||||
|
entry1.classList.add('col-lg-3', 'm-0', 'p-0')
|
||||||
|
entry1.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry1.children[0].classList.add('img-type-2')
|
||||||
|
i++
|
||||||
|
entry1.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry1.children[1].classList.add('img-type-2')
|
||||||
|
gallery.appendChild(entry1)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry2 = document.createElement('div')
|
||||||
|
entry2.classList.add('col-lg-3', 'm-0', 'p-0')
|
||||||
|
entry2.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry2.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry2)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry3 = document.createElement('div')
|
||||||
|
entry3.classList.add('col-lg-6', 'm-0', 'p-0')
|
||||||
|
entry3.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry3.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry3)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
function threeColumnRow (gallery, entries, i) {
|
||||||
|
console.log(i)
|
||||||
|
const entry1 = document.createElement('div')
|
||||||
|
entry1.classList.add('col-lg-6', 'col-md-6', 'm-0', 'p-0')
|
||||||
|
entry1.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry1.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry1)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry2 = document.createElement('div')
|
||||||
|
entry2.classList.add('col-lg-3', 'col-md-3', 'm-0', 'p-0')
|
||||||
|
entry2.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry2.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry2)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry3 = document.createElement('div')
|
||||||
|
entry3.classList.add('col-lg-3', 'col-md-3', 'm-0', 'p-0')
|
||||||
|
entry3.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry3.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry3)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
function threeColumnReversedRow (gallery, entries, i) {
|
||||||
|
const entry1 = document.createElement('div')
|
||||||
|
entry1.classList.add('col-lg-3', 'col-md-3', 'm-0', 'p-0')
|
||||||
|
entry1.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry1.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry1)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry2 = document.createElement('div')
|
||||||
|
entry2.classList.add('col-lg-3', 'col-md-3', 'm-0', 'p-0')
|
||||||
|
entry2.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry2.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry2)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry3 = document.createElement('div')
|
||||||
|
entry3.classList.add('col-lg-6', 'col-md-3', 'm-0', 'p-0')
|
||||||
|
entry3.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry3.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry3)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
function twoColumnRow (gallery, entries, i) {
|
||||||
|
const entry1 = document.createElement('div')
|
||||||
|
entry1.classList.add('col-6', 'm-0', 'p-0')
|
||||||
|
entry1.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry1.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry1)
|
||||||
|
i++
|
||||||
|
|
||||||
|
const entry2 = document.createElement('div')
|
||||||
|
entry2.classList.add('col-6', 'm-0', 'p-0')
|
||||||
|
entry2.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry2.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry2)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
function singleColumnRow (gallery, entries, i) {
|
||||||
|
const entry1 = document.createElement('div')
|
||||||
|
entry1.classList.add('col-12', 'm-0', 'p-0')
|
||||||
|
entry1.appendChild(entries[i].cloneNode(true))
|
||||||
|
entry1.children[0].classList.add('img-type-1')
|
||||||
|
gallery.appendChild(entry1)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
function showAchievements () {
|
||||||
|
const { isLaptop, isTablet } = getDeviceState()
|
||||||
|
// show achievements from achievements-holder div
|
||||||
|
const gallery = document.getElementById('gallery')
|
||||||
|
if (gallery == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
gallery.innerHTML = ''
|
||||||
|
const entries = document.getElementById('achievements-holder').children
|
||||||
|
let len = entries.length
|
||||||
|
let i = 0
|
||||||
|
let rowNumber = 1
|
||||||
|
while (i < len) {
|
||||||
|
if (isLaptop) {
|
||||||
|
if (i + 4 <= len) {
|
||||||
|
if (rowNumber % 2) {
|
||||||
|
fourColumRow(gallery, entries, i)
|
||||||
|
} else {
|
||||||
|
fourColumnReversedRow(gallery, entries, i)
|
||||||
|
}
|
||||||
|
i += 4
|
||||||
|
} else if (i + 3 <= len) {
|
||||||
|
if (rowNumber % 2) {
|
||||||
|
threeColumnRow(gallery, entries, i)
|
||||||
|
} else {
|
||||||
|
threeColumnReversedRow(gallery, entries, i)
|
||||||
|
}
|
||||||
|
i += 3
|
||||||
|
} else if (i + 2 <= len) {
|
||||||
|
twoColumnRow(gallery, entries, i)
|
||||||
|
i += 2
|
||||||
|
} else {
|
||||||
|
singleColumnRow(gallery, entries, i)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
} else if (isTablet) {
|
||||||
|
if (i + 2 <= len) {
|
||||||
|
twoColumnRow(gallery, entries, i)
|
||||||
|
i += 2
|
||||||
|
} else {
|
||||||
|
singleColumnRow(gallery, entries, i)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
singleColumnRow(gallery, entries, i)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
rowNumber++
|
||||||
|
}
|
||||||
|
|
||||||
|
// show full image on click
|
||||||
|
const elements = document.getElementsByClassName('achievement-entry')
|
||||||
|
len = elements.length
|
||||||
|
for (let i = 0; i < len; i++) {
|
||||||
|
elements[i].onclick = function () {
|
||||||
|
const achievements = document.getElementsByClassName('achievement-entry')
|
||||||
|
const len2 = achievements.length
|
||||||
|
for (let j = 0; j < len2; j++) {
|
||||||
|
achievements[j].classList.toggle('hidden')
|
||||||
|
}
|
||||||
|
this.classList.toggle('achievement-details')
|
||||||
|
this.classList.toggle('hidden')
|
||||||
|
this.parentElement.classList.toggle('col-lg-12')
|
||||||
|
this.parentElement.classList.toggle('col-md-12')
|
||||||
|
this.parentElement.classList.toggle('col-sm-12')
|
||||||
|
if (this.children.SmallImage.hasAttribute('active')) {
|
||||||
|
const mainLogo = this.children.LargeImage.getAttribute('Style')
|
||||||
|
this.children.LargeImage.setAttribute('active', true)
|
||||||
|
this.children.SmallImage.removeAttribute('active')
|
||||||
|
|
||||||
|
this.setAttribute('Style', mainLogo)
|
||||||
|
} else {
|
||||||
|
const mainLogo = this.children.SmallImage.getAttribute('Style')
|
||||||
|
this.children.SmallImage.setAttribute('active', true)
|
||||||
|
this.children.LargeImage.removeAttribute('active')
|
||||||
|
this.setAttribute('Style', mainLogo)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.children.caption !== undefined) {
|
||||||
|
this.children.caption.classList.toggle('hidden')
|
||||||
|
}
|
||||||
|
if (this.children['enlarge-icon'] !== undefined) {
|
||||||
|
this.getElementsByClassName('fa-xmark')[0].classList.toggle('hidden')
|
||||||
|
this.getElementsByClassName('fa-magnifying-glass-plus')[0].classList.toggle('hidden')
|
||||||
|
}
|
||||||
|
if (this.children['achievement-title'] !== undefined) {
|
||||||
|
this.children['achievement-title'].classList.toggle('hidden')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
['DOMContentLoaded', 'resize'].forEach((event) =>
|
||||||
|
document.addEventListener(event, showAchievements))
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
// Show more rows in the taken courses table
|
||||||
|
function toggleCourseVisibility (elem) {
|
||||||
|
// find the courses
|
||||||
|
const courses = elem.parentNode.getElementsByClassName('course')
|
||||||
|
if (courses == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// toggle hidden-course class from the third elements
|
||||||
|
for (const course of courses) {
|
||||||
|
if (course.classList.contains('hidden-course') || course.classList.contains('toggled-hidden-course')) {
|
||||||
|
course.classList.toggle('hidden-course')
|
||||||
|
course.classList.add('toggled-hidden-course')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// toggle the buttons visibility
|
||||||
|
const buttonsToToggle = elem.parentNode.getElementsByClassName('show-more-btn')
|
||||||
|
for (const buttonToToggle of buttonsToToggle) {
|
||||||
|
buttonToToggle.classList.toggle('hidden')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const els = [
|
||||||
|
document.getElementById('show-more-btn'),
|
||||||
|
document.getElementById('show-less-btn')
|
||||||
|
]
|
||||||
|
|
||||||
|
els.filter((el) => el != null).forEach((el) =>
|
||||||
|
el.addEventListener('click', ({ target }) =>
|
||||||
|
toggleCourseVisibility(target)))
|
||||||
|
})
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import './navbar'
|
||||||
|
import './sidebar'
|
||||||
|
|
||||||
|
import './education'
|
||||||
|
import './achievements'
|
||||||
|
import './projects'
|
||||||
|
import './publications'
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
const updateNavBar = () => {
|
||||||
|
const topNavbar = document.getElementById('top-navbar')
|
||||||
|
const navbarToggler = document.getElementById('navbar-toggler')
|
||||||
|
const themeIcon = document.getElementById('navbar-theme-icon-svg')
|
||||||
|
|
||||||
|
if (window.scrollY > 40) {
|
||||||
|
topNavbar?.classList.remove('initial-navbar')
|
||||||
|
topNavbar?.classList.add('final-navbar', 'shadow')
|
||||||
|
|
||||||
|
navbarToggler?.classList.remove('navbar-dark')
|
||||||
|
navbarToggler?.classList.add('navbar-light')
|
||||||
|
|
||||||
|
// color theme selector a.k.a. dark mode
|
||||||
|
themeIcon?.classList.remove('navbar-icon-svg-dark')
|
||||||
|
|
||||||
|
// get the main logo from hidden img tag
|
||||||
|
const mainLogo = document.getElementById('main-logo')
|
||||||
|
if (mainLogo) {
|
||||||
|
const logoURL = mainLogo.getAttribute('src')
|
||||||
|
document.getElementById('logo')?.setAttribute('src', logoURL)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
topNavbar?.classList.remove('final-navbar', 'shadow')
|
||||||
|
topNavbar?.classList.add('initial-navbar')
|
||||||
|
|
||||||
|
navbarToggler?.classList.remove('navbar-light')
|
||||||
|
navbarToggler?.classList.add('navbar-dark')
|
||||||
|
|
||||||
|
// color theme selector a.k.a. dark mode
|
||||||
|
themeIcon?.classList.add('navbar-icon-svg-dark')
|
||||||
|
|
||||||
|
// get the inverted logo from hidden img tag
|
||||||
|
const invertedLogo = document.getElementById('inverted-logo')
|
||||||
|
if (invertedLogo) {
|
||||||
|
const logoURL = invertedLogo.getAttribute('src')
|
||||||
|
document.getElementById('logo')?.setAttribute('src', logoURL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
// change navbar style on scroll
|
||||||
|
// ==================================================
|
||||||
|
// When the user scrolls down 80px from the top of the document,
|
||||||
|
// resize the navbar's padding and the logo's font size
|
||||||
|
document.addEventListener('scroll', updateNavBar)
|
||||||
|
|
||||||
|
// Creates a click handler to collapse the navigation when
|
||||||
|
// anchors in the mobile nav pop up are clicked
|
||||||
|
const navMain =document.getElementsByClassName('navbar-collapse')
|
||||||
|
Array.from(navMain).forEach(function(el) {
|
||||||
|
el.addEventListener('click', function (e) {
|
||||||
|
if (e.target.tagName === 'A') {
|
||||||
|
el.classList.add('collapse')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
updateNavBar()
|
||||||
|
})
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import Filterizr from 'filterizr'
|
||||||
|
import { insertScript } from '../core'
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
// ================== Project cards =====================
|
||||||
|
|
||||||
|
// setup project filter buttons
|
||||||
|
const projectCardHolder = document.getElementById('project-card-holder')
|
||||||
|
if (projectCardHolder != null && projectCardHolder.children.length !== 0) {
|
||||||
|
// eslint-disable-next-line no-new
|
||||||
|
new Filterizr('.filtr-projects', {
|
||||||
|
layout: 'sameWidth',
|
||||||
|
controlsSelector: '.project-filtr-control'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// dynamically insert github buttons script.
|
||||||
|
insertScript('github-buttons', 'https://buttons.github.io/buttons.js')
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import Filterizr from 'filterizr'
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const publicationCardHolder = document.getElementById('publication-card-holder')
|
||||||
|
if (publicationCardHolder != null && publicationCardHolder.children.length !== 0) {
|
||||||
|
// eslint-disable-next-line no-new
|
||||||
|
new Filterizr('.filtr-publications', {
|
||||||
|
layout: 'sameWidth',
|
||||||
|
gridItemsSelector: '.pub-filtr-item',
|
||||||
|
controlsSelector: '.pub-filtr-control'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
import { getDeviceState } from '../core/device'
|
||||||
|
|
||||||
|
// Toggle sidebar on click. Here, class "hide" open the sidebar
|
||||||
|
function toggleSidebar () {
|
||||||
|
const sidebar = document.getElementById('sidebar-section')
|
||||||
|
if (sidebar == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (sidebar.classList.contains('hide')) {
|
||||||
|
sidebar.classList.remove('hide')
|
||||||
|
} else {
|
||||||
|
// if toc-section is open, then close it first
|
||||||
|
const toc = document.getElementById('toc-section')
|
||||||
|
if (toc != null && toc.classList.contains('hide')) {
|
||||||
|
toc.classList.remove('hide')
|
||||||
|
}
|
||||||
|
// add "hide" class
|
||||||
|
sidebar.classList.add('hide')
|
||||||
|
// if it is mobile device. then scroll to top.
|
||||||
|
const { isMobile } = getDeviceState()
|
||||||
|
if (isMobile && sidebar.classList.contains('hide')) {
|
||||||
|
document.body.scrollTop = 0
|
||||||
|
document.documentElement.scrollTop = 0
|
||||||
|
if (document.getElementById('hero-area') != null) {
|
||||||
|
document.getElementById('hero-area').classList.toggle('hide')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (document.getElementById('content-section') != null) {
|
||||||
|
document.getElementById('content-section').classList.toggle('hide')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
// bind click event to #sidebar-toggler in navbar-2.html
|
||||||
|
const toggle = document.getElementById('sidebar-toggler')
|
||||||
|
if (toggle) toggle.addEventListener('click', toggleSidebar)
|
||||||
|
})
|
||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ Esto expone los valores en /index.json: por ejemplo, para agregar `categories`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Editar las opciones de fuse.js para buscar
|
### Editar las opciones de fuse.js para buscar
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -41,7 +41,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ Esto expone los valores en /index.json: por ejemplo, para agregar `categories`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Editar las opciones de fuse.js para buscar
|
### Editar las opciones de fuse.js para buscar
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ No content shown here is rendered, all content is based in the template layouts/
|
|||||||
|
|
||||||
Setting a very low sitemap priority will tell search engines this is not important content.
|
Setting a very low sitemap priority will tell search engines this is not important content.
|
||||||
|
|
||||||
This implementation uses Fusejs, jquery and mark.js
|
This implementation uses Fusejs and mark.js
|
||||||
|
|
||||||
|
|
||||||
## Initial setup
|
## Initial setup
|
||||||
@@ -43,7 +43,7 @@ i.e. add `category`
|
|||||||
\```
|
\```
|
||||||
|
|
||||||
### Edit fuse.js options to Search
|
### Edit fuse.js options to Search
|
||||||
`static/js/search.js`
|
`assets/scripts/pages/search.js`
|
||||||
\```
|
\```
|
||||||
keys: [
|
keys: [
|
||||||
"title",
|
"title",
|
||||||
|
|||||||
@@ -0,0 +1,292 @@
|
|||||||
|
|
||||||
|
baseURL: http://example.org/
|
||||||
|
languageCode: en-us
|
||||||
|
title: Example Site
|
||||||
|
|
||||||
|
module:
|
||||||
|
imports:
|
||||||
|
- path: github.com/hugo-toha/hugo-toha.github.io
|
||||||
|
disable: false
|
||||||
|
mounts:
|
||||||
|
- source: content
|
||||||
|
target: content
|
||||||
|
- source: layouts
|
||||||
|
target: layouts
|
||||||
|
- source: data
|
||||||
|
target: data
|
||||||
|
- source: assets
|
||||||
|
target: assets
|
||||||
|
- source: static
|
||||||
|
target: static
|
||||||
|
- path: github.com/hugo-toha/toha/v4
|
||||||
|
|
||||||
|
# Manage languages
|
||||||
|
# For any more details, you can check the official documentation: https://gohugo.io/content-management/multilingual/
|
||||||
|
languages:
|
||||||
|
en:
|
||||||
|
languageName: English
|
||||||
|
weight: 1
|
||||||
|
bn:
|
||||||
|
languageName: বাংলা
|
||||||
|
weight: 3
|
||||||
|
|
||||||
|
# Force a locale to be use, really useful to develop the application ! Should be commented in production, the "weight" should rocks.
|
||||||
|
# DefaultContentLanguage: bn
|
||||||
|
|
||||||
|
# Allow raw html in markdown file
|
||||||
|
markup:
|
||||||
|
goldmark:
|
||||||
|
renderer:
|
||||||
|
unsafe: true
|
||||||
|
tableOfContents:
|
||||||
|
startLevel: 2
|
||||||
|
endLevel: 6
|
||||||
|
ordered: false
|
||||||
|
|
||||||
|
# At least HTML and JSON are required for the main HTML content and
|
||||||
|
# client-side JavaScript search
|
||||||
|
outputs:
|
||||||
|
home:
|
||||||
|
- HTML
|
||||||
|
- RSS
|
||||||
|
- JSON
|
||||||
|
|
||||||
|
# Enable global emoji support
|
||||||
|
enableEmoji: true
|
||||||
|
|
||||||
|
# Site parameters
|
||||||
|
params:
|
||||||
|
# Background image of the landing page
|
||||||
|
background: /images/site/background.jpg
|
||||||
|
|
||||||
|
# Provide logos for your site. The inverted logo will be used in the initial
|
||||||
|
# transparent navbar and the main logo will be used in the non-transparent navbar.
|
||||||
|
logo:
|
||||||
|
main: /images/site/main-logo.png
|
||||||
|
inverted: /images/site/inverted-logo.png
|
||||||
|
favicon: /images/site/favicon.png
|
||||||
|
|
||||||
|
# GitHub repo of your site
|
||||||
|
gitRepo: https://github.com/hugo-toha/hugo-toha.github.io
|
||||||
|
# Default branch of your Git repo
|
||||||
|
gitBranch: main
|
||||||
|
|
||||||
|
# Configure the number of section title visible in the top navbar
|
||||||
|
topNavbar:
|
||||||
|
maxVisibleSections: 5
|
||||||
|
|
||||||
|
# Configure various features of this theme
|
||||||
|
features:
|
||||||
|
|
||||||
|
# Enable dark theme
|
||||||
|
darkMode:
|
||||||
|
enable: false
|
||||||
|
services:
|
||||||
|
darkreader:
|
||||||
|
defaultColorScheme: system # options are 'system', 'dark', 'light'
|
||||||
|
fixes:
|
||||||
|
invert: ['img[src$=".svg"]'] # inverts svg colors.
|
||||||
|
theme:
|
||||||
|
brightness: 100
|
||||||
|
contrast: 100
|
||||||
|
sepia: 0
|
||||||
|
|
||||||
|
# Enable and configure portfolio
|
||||||
|
portfolio:
|
||||||
|
enable: true
|
||||||
|
|
||||||
|
# Enable and configure blog posts
|
||||||
|
blog:
|
||||||
|
enable: true
|
||||||
|
# Share post on different social media
|
||||||
|
shareButtons:
|
||||||
|
facebook: true
|
||||||
|
twitter: true
|
||||||
|
linkedin: true
|
||||||
|
reddit: true
|
||||||
|
whatsapp: true
|
||||||
|
email: true
|
||||||
|
# tumblr: true
|
||||||
|
# pocket: true
|
||||||
|
# diaspora: true
|
||||||
|
# mastodon: true
|
||||||
|
|
||||||
|
# Enable & configure "Notes" features
|
||||||
|
notes:
|
||||||
|
enable: true
|
||||||
|
|
||||||
|
# Enable comment feature. There, should be only one of them.
|
||||||
|
comment:
|
||||||
|
enable: false
|
||||||
|
services:
|
||||||
|
disqus:
|
||||||
|
shortName: toha-example-site
|
||||||
|
# valine:
|
||||||
|
# appId: HTV6askWxVo3vOxlqjjaq2hd-MsYXbMMI
|
||||||
|
# appKey: pVrT3C85KGIuk27t07eh6bUC
|
||||||
|
# avatar: retro
|
||||||
|
# placeholder: Share your thought.
|
||||||
|
# lang: en
|
||||||
|
# recordIP: true
|
||||||
|
# enableQQ: true
|
||||||
|
# utteranc:
|
||||||
|
# repo: github.com/hugo-toha/hugo-toha.github.io
|
||||||
|
# issueTerm: title
|
||||||
|
# theme: github-light
|
||||||
|
# giscus:
|
||||||
|
# repo: your-repo/name
|
||||||
|
# repoID: your-repo-id
|
||||||
|
# category: your-category
|
||||||
|
# categoryID: your-category-id
|
||||||
|
# theme: light
|
||||||
|
# map: url
|
||||||
|
# reaction: 1
|
||||||
|
# metadata: 0
|
||||||
|
# inputPosition: bottom
|
||||||
|
# crossOrigin: anonymous
|
||||||
|
# commento:
|
||||||
|
# serverURL: cdn.commento.io
|
||||||
|
# autoInit: true
|
||||||
|
# hideDeleted: false
|
||||||
|
|
||||||
|
# Enable Analytics
|
||||||
|
analytics:
|
||||||
|
enabled: false
|
||||||
|
services:
|
||||||
|
# Google Analytics
|
||||||
|
google:
|
||||||
|
id: G-H4LBG7NDFZ
|
||||||
|
# # CounterDev
|
||||||
|
# counterDev:
|
||||||
|
# id: <your counterdev id>
|
||||||
|
# # GoatCounter
|
||||||
|
# goatCounter:
|
||||||
|
# code: <your goat counter code>
|
||||||
|
# # Matomo / Piwik
|
||||||
|
# matomo:
|
||||||
|
# instance: matomo.example.com
|
||||||
|
# siteId: 1 # Or any other number
|
||||||
|
|
||||||
|
# Enable Support
|
||||||
|
support:
|
||||||
|
enable: false
|
||||||
|
services:
|
||||||
|
kofi:
|
||||||
|
user: hossainemruz
|
||||||
|
text: Tip Me
|
||||||
|
textColor: '#f9fafc'
|
||||||
|
backgroundColor: '#248aaa'
|
||||||
|
# buymeacoffee:
|
||||||
|
# user: <your buymeacoffee.com user>
|
||||||
|
# text: Support me on Buy me a coffee!
|
||||||
|
# info: Buy me a coffee!
|
||||||
|
# color: '#FFDD00'
|
||||||
|
|
||||||
|
# specify whether you want to show Table of Contents in reading page
|
||||||
|
toc:
|
||||||
|
enable: true
|
||||||
|
|
||||||
|
# Show tags under the post title
|
||||||
|
tags:
|
||||||
|
enable: true
|
||||||
|
|
||||||
|
# Specify whether to show flag in the language selector. Default is true.
|
||||||
|
flags:
|
||||||
|
enable: true
|
||||||
|
# # If you want to use different country flag for a language, specify them here.
|
||||||
|
# flagOverwrites:
|
||||||
|
# - languageCode: en
|
||||||
|
# countryCode: us
|
||||||
|
|
||||||
|
# Enable this to use `embed-pdf` shortcode.
|
||||||
|
embedpdf:
|
||||||
|
enable: false
|
||||||
|
|
||||||
|
# Enable this to create flowcharts using shortcodes.
|
||||||
|
flowchart:
|
||||||
|
enable: false
|
||||||
|
services:
|
||||||
|
# Uncomment for `mermaid` shortcode.
|
||||||
|
mermaid:
|
||||||
|
# For config options, see: https://mermaid-js.github.io/mermaid/#/Setup?id=configuration
|
||||||
|
# theme: dark
|
||||||
|
|
||||||
|
# Enable this to create mathematic expressions using `$$` blocks
|
||||||
|
math:
|
||||||
|
enable: false
|
||||||
|
services:
|
||||||
|
# https://katex.org/docs/autorender.html#api for more configurations
|
||||||
|
katex:
|
||||||
|
delimiters:
|
||||||
|
- left: $$
|
||||||
|
right: $$
|
||||||
|
display: true
|
||||||
|
- left: \\[
|
||||||
|
right: \\]
|
||||||
|
display: true
|
||||||
|
- left: $
|
||||||
|
right: $
|
||||||
|
display: false
|
||||||
|
- left: \\(
|
||||||
|
right: \\)
|
||||||
|
display: false
|
||||||
|
|
||||||
|
# Enable to use custom syntax highlight
|
||||||
|
# Please note, Hugo comes with it's own html based syntax highlighter.
|
||||||
|
# Your code block will still be syntax highlighted by hugo.
|
||||||
|
# For more details: https://gohugo.io/content-management/syntax-highlighting/
|
||||||
|
# To disable Hugo's builtin syntax highlight,
|
||||||
|
# see: https://gohugo.io/getting-started/configuration-markup#highlight
|
||||||
|
# ```
|
||||||
|
# # config.yaml
|
||||||
|
# markup:
|
||||||
|
# # this disables hugo's syntax highlighting.
|
||||||
|
# codeFences: false
|
||||||
|
# ```
|
||||||
|
syntaxHighlight:
|
||||||
|
enable: true
|
||||||
|
services:
|
||||||
|
hljs:
|
||||||
|
# see: https://highlightjs.readthedocs.io/en/latest/api.html#configure
|
||||||
|
noHighlightRe: /^no-highlight$/i
|
||||||
|
|
||||||
|
# Enable to use `video-player` shortcode
|
||||||
|
videoPlayer:
|
||||||
|
enable: false
|
||||||
|
services:
|
||||||
|
# convert .js-player class into video player via https://plyr.io/
|
||||||
|
# Can play HTML5 Video, Audio, Youtube, Vimeo.
|
||||||
|
# For more info on setup: https://github.com/sampotts/plyr#quick-setup
|
||||||
|
plyr:
|
||||||
|
# options doc: https://github.com/sampotts/plyr#options
|
||||||
|
# fullscreen: true
|
||||||
|
|
||||||
|
|
||||||
|
# Provide footer configuration.
|
||||||
|
footer:
|
||||||
|
enable: true
|
||||||
|
# You can provide your custom footer template using this option.
|
||||||
|
# Put your template in "layouts/partials" folder of your repo.
|
||||||
|
template: footer.html
|
||||||
|
# Show/hide navigation in the footer. Default is "true".
|
||||||
|
navigation:
|
||||||
|
enable: true
|
||||||
|
# show custom menus in the footer
|
||||||
|
customMenus: true
|
||||||
|
# Show/hide "Contact Me" section in the footer. Default is "true".
|
||||||
|
contactMe:
|
||||||
|
enable: true
|
||||||
|
# Show/hide credentials section in the footer. Default is "true".
|
||||||
|
credentials:
|
||||||
|
enable: true
|
||||||
|
|
||||||
|
# Show/hide newsletter section in the footer. Default is "true".
|
||||||
|
# Currently, it supports "mailchimp".
|
||||||
|
newsletter:
|
||||||
|
enable: true
|
||||||
|
provider: mailchimp
|
||||||
|
mailchimpURL: https://github.us1.list-manage.com/subscribe/post?u=19de52a4603135aae97163fd8&id=094a24c76e
|
||||||
|
|
||||||
|
# Show/hide disclaimer notice in the footer. Default is "false".
|
||||||
|
disclaimer:
|
||||||
|
enable: true
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
module github.com/hugo-toha/toha/exampleSite
|
||||||
|
|
||||||
|
go 1.19
|
||||||
|
|
||||||
|
require github.com/hugo-toha/hugo-toha.github.io v0.0.0-20221228191121-007f31838bd6 // indirect
|
||||||
|
|
||||||
|
replace github.com/hugo-toha/toha/v4 => ../../toha
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20221228191121-007f31838bd6 h1:TPFhOZAnuH4wjLIdzimswCRa2qCcc1teKVTatADJU2g=
|
||||||
|
github.com/hugo-toha/hugo-toha.github.io v0.0.0-20221228191121-007f31838bd6/go.mod h1:OMMaP9Hh9NsKd41lVIazBQRPa0s6Z57AfJoY3DcCNNY=
|
||||||
+126
@@ -0,0 +1,126 @@
|
|||||||
|
# More documentation here: https://github.com/nicksnyder/go-i18n
|
||||||
|
[home]
|
||||||
|
other = "Inici"
|
||||||
|
|
||||||
|
[posts]
|
||||||
|
other = "Publicacions"
|
||||||
|
|
||||||
|
[toc_heading]
|
||||||
|
other = "Taula de Continguts"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Etiquetes"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Categories"
|
||||||
|
|
||||||
|
[at]
|
||||||
|
other = "a"
|
||||||
|
|
||||||
|
[resume]
|
||||||
|
other = "El meu currículum"
|
||||||
|
|
||||||
|
[navigation]
|
||||||
|
other = "Navegació"
|
||||||
|
|
||||||
|
[contact_me]
|
||||||
|
other = "Contacta'm:"
|
||||||
|
|
||||||
|
[email]
|
||||||
|
other = "Correu electrònic"
|
||||||
|
|
||||||
|
[phone]
|
||||||
|
other = "Telèfon"
|
||||||
|
|
||||||
|
[newsletter_text]
|
||||||
|
other = "Subscriure's"
|
||||||
|
|
||||||
|
[newsletter_input_placeholder]
|
||||||
|
other = "Entra l'email"
|
||||||
|
|
||||||
|
[newsletter_warning]
|
||||||
|
other = "Al entrar la vostra direcció de correu electrònic, esteu acceptant rebre el butlletí d'aquest lloc web."
|
||||||
|
|
||||||
|
[submit]
|
||||||
|
other = "Enviar"
|
||||||
|
|
||||||
|
[hugoAttributionText]
|
||||||
|
other = "Impulsat per"
|
||||||
|
|
||||||
|
[prev]
|
||||||
|
other = "Anterior"
|
||||||
|
|
||||||
|
[next]
|
||||||
|
other = "Següent"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "Compartir a"
|
||||||
|
|
||||||
|
[improve_this_page]
|
||||||
|
other = "Millorar aquesta pàgina"
|
||||||
|
|
||||||
|
[out_of]
|
||||||
|
other = "de"
|
||||||
|
|
||||||
|
[publications]
|
||||||
|
other = "Publicacions"
|
||||||
|
|
||||||
|
[taken_courses]
|
||||||
|
other = "Cursos realitzats"
|
||||||
|
|
||||||
|
[course_name]
|
||||||
|
other = "Nom del curs"
|
||||||
|
|
||||||
|
[total_credit]
|
||||||
|
other = "Crèdits Totals"
|
||||||
|
|
||||||
|
[obtained_credit]
|
||||||
|
other = "Crèdits Obtinguts"
|
||||||
|
|
||||||
|
[extracurricular_activities]
|
||||||
|
other = "Activitats Extracurriculars"
|
||||||
|
|
||||||
|
[show_more]
|
||||||
|
other = "Mostra'n més"
|
||||||
|
|
||||||
|
[show_less]
|
||||||
|
other = "Mostra'n menys"
|
||||||
|
|
||||||
|
[responsibilities]
|
||||||
|
other = "Responsabilitats:"
|
||||||
|
|
||||||
|
[present]
|
||||||
|
other = "Actualitat"
|
||||||
|
|
||||||
|
[comments_javascript]
|
||||||
|
other = "Si us plau, activa Javascript per mostrar"
|
||||||
|
|
||||||
|
[comments_by]
|
||||||
|
other = "Comentaris per"
|
||||||
|
|
||||||
|
[read]
|
||||||
|
other = "Llegir"
|
||||||
|
|
||||||
|
[project_star]
|
||||||
|
other = "Preferit"
|
||||||
|
|
||||||
|
[project_details]
|
||||||
|
other = "Detalls"
|
||||||
|
|
||||||
|
[err_404]
|
||||||
|
other = "La pàgina que està cercant encara no existeix."
|
||||||
|
|
||||||
|
[more]
|
||||||
|
other = "Més"
|
||||||
|
|
||||||
|
[view_certificate]
|
||||||
|
other = "Mostrar Certificat"
|
||||||
|
|
||||||
|
[notes]
|
||||||
|
other = "Notes"
|
||||||
|
|
||||||
|
[disclaimer_text]
|
||||||
|
other = "Avís de Responsabilitat"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Cerca"
|
||||||
+126
@@ -0,0 +1,126 @@
|
|||||||
|
# More documentation here: https://github.com/nicksnyder/go-i18n
|
||||||
|
[home]
|
||||||
|
other = "الصفحة الرئيسية"
|
||||||
|
|
||||||
|
[posts]
|
||||||
|
other = "المنشورات"
|
||||||
|
|
||||||
|
[toc_heading]
|
||||||
|
other = "قائمة المحتويات"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "الوسوم"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "الأقسام"
|
||||||
|
|
||||||
|
[at]
|
||||||
|
other = "at"
|
||||||
|
|
||||||
|
[resume]
|
||||||
|
other = "سيرتي الذاتية"
|
||||||
|
|
||||||
|
[navigation]
|
||||||
|
other = "التصفح"
|
||||||
|
|
||||||
|
[contact_me]
|
||||||
|
other = "اتصل بي:"
|
||||||
|
|
||||||
|
[email]
|
||||||
|
other = "البريد الإلكتروني"
|
||||||
|
|
||||||
|
[phone]
|
||||||
|
other = "الهاتف"
|
||||||
|
|
||||||
|
[newsletter_text]
|
||||||
|
other = "ابق على اتصال من خلال القائمة البريدية"
|
||||||
|
|
||||||
|
[newsletter_input_placeholder]
|
||||||
|
other = "ادخل بريدك الالكتروني"
|
||||||
|
|
||||||
|
[newsletter_warning]
|
||||||
|
other = "بإدخال بريدك الإلكتروني، أنت توافق على تلقي رسائل إلكترونية دورية من هذا الموقع."
|
||||||
|
|
||||||
|
[submit]
|
||||||
|
other = "إرسال"
|
||||||
|
|
||||||
|
[hugoAttributionText]
|
||||||
|
other = "صنع باستخدام"
|
||||||
|
|
||||||
|
[prev]
|
||||||
|
other = "السابق"
|
||||||
|
|
||||||
|
[next]
|
||||||
|
other = "التالي"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "المشاركة على"
|
||||||
|
|
||||||
|
[improve_this_page]
|
||||||
|
other = "ساعد في تحسين هذه الصفحة"
|
||||||
|
|
||||||
|
[out_of]
|
||||||
|
other = "من"
|
||||||
|
|
||||||
|
[publications]
|
||||||
|
other = "المنشورات"
|
||||||
|
|
||||||
|
[taken_courses]
|
||||||
|
other = "الدروس"
|
||||||
|
|
||||||
|
[course_name]
|
||||||
|
other = "اسم المادة"
|
||||||
|
|
||||||
|
[total_credit]
|
||||||
|
other = "العلامة العامة"
|
||||||
|
|
||||||
|
[obtained_credit]
|
||||||
|
other = "العلامة"
|
||||||
|
|
||||||
|
[extracurricular_activities]
|
||||||
|
other = "نشاطات خارجية"
|
||||||
|
|
||||||
|
[show_more]
|
||||||
|
other = "إظهار المزيد"
|
||||||
|
|
||||||
|
[show_less]
|
||||||
|
other = "إخفاء"
|
||||||
|
|
||||||
|
[responsibilities]
|
||||||
|
other = "المسؤوليات:"
|
||||||
|
|
||||||
|
[present]
|
||||||
|
other = "حاليا"
|
||||||
|
|
||||||
|
[comments_javascript]
|
||||||
|
other = "من فضلك قم بتفعيل جافاسكريب لإظهار"
|
||||||
|
|
||||||
|
[comments_by]
|
||||||
|
other = "التعليقات موفرة بواسطة"
|
||||||
|
|
||||||
|
[read]
|
||||||
|
other = "قراءة"
|
||||||
|
|
||||||
|
[project_star]
|
||||||
|
other = "نجمة"
|
||||||
|
|
||||||
|
[project_details]
|
||||||
|
other = "التفاصيل"
|
||||||
|
|
||||||
|
[err_404]
|
||||||
|
other = "الصفحة التي تبحث عنها ليست بعد هناك."
|
||||||
|
|
||||||
|
[more]
|
||||||
|
other = "المزيد"
|
||||||
|
|
||||||
|
[view_certificate]
|
||||||
|
other = "إظهار الشهادة"
|
||||||
|
|
||||||
|
[notes]
|
||||||
|
other = "ملاحظات"
|
||||||
|
|
||||||
|
[disclaimer_text]
|
||||||
|
other = "إشعار بالمسؤولية"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "بحث"
|
||||||
@@ -118,3 +118,6 @@ other = "নোট সমূহ"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "দায় বিজ্ঞপ্তি"
|
other = "দায় বিজ্ঞপ্তি"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "অনুসন্ধান করুন"
|
||||||
|
|||||||
+6
-3
@@ -72,10 +72,10 @@ other = "Belegte Kurse"
|
|||||||
other = "Kursname"
|
other = "Kursname"
|
||||||
|
|
||||||
[total_credit]
|
[total_credit]
|
||||||
other = "Gesamtguthaben"
|
other = "Mögliche Punktzahl"
|
||||||
|
|
||||||
[obtained_credit]
|
[obtained_credit]
|
||||||
other = "Erhaltenes Guthaben"
|
other = "Note"
|
||||||
|
|
||||||
[extracurricular_activities]
|
[extracurricular_activities]
|
||||||
other = "Außerschulische Aktivitäten"
|
other = "Außerschulische Aktivitäten"
|
||||||
@@ -108,7 +108,7 @@ other = "Star"
|
|||||||
other = "Details"
|
other = "Details"
|
||||||
|
|
||||||
[err_404]
|
[err_404]
|
||||||
other = "Die Seite nach der Seite ist noch nicht vorhanden."
|
other = "Die von Ihnen gesuchte Seite ist noch nicht vorhanden."
|
||||||
|
|
||||||
[more]
|
[more]
|
||||||
other = "Mehr"
|
other = "Mehr"
|
||||||
@@ -121,3 +121,6 @@ other = "Notizen"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Haftungshinweis"
|
other = "Haftungshinweis"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Suche"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Notes"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Liability Notice"
|
other = "Liability Notice"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Search"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Notas"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Aviso de responsabilidad"
|
other = "Aviso de responsabilidad"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Búsqueda"
|
||||||
|
|||||||
+126
@@ -0,0 +1,126 @@
|
|||||||
|
# More documentation here: https://github.com/nicksnyder/go-i18n
|
||||||
|
[home]
|
||||||
|
other = "Koti"
|
||||||
|
|
||||||
|
[posts]
|
||||||
|
other = "Artikkelit"
|
||||||
|
|
||||||
|
[toc_heading]
|
||||||
|
other = "Sisällysluettelo"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Tagit"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Kategoriat"
|
||||||
|
|
||||||
|
[at]
|
||||||
|
other = "at"
|
||||||
|
|
||||||
|
[resume]
|
||||||
|
other = "Ansioluetteloni"
|
||||||
|
|
||||||
|
[navigation]
|
||||||
|
other = "Navigointi"
|
||||||
|
|
||||||
|
[contact_me]
|
||||||
|
other = "Ota yhteyttä minuun:"
|
||||||
|
|
||||||
|
[email]
|
||||||
|
other = "Sähköposti"
|
||||||
|
|
||||||
|
[phone]
|
||||||
|
other = "Puhelin"
|
||||||
|
|
||||||
|
[newsletter_text]
|
||||||
|
other = "Pysy ajan tasalla tilaamalla sähköposti-ilmoitukset"
|
||||||
|
|
||||||
|
[newsletter_input_placeholder]
|
||||||
|
other = "Syötä sähköpostiosoite"
|
||||||
|
|
||||||
|
[newsletter_warning]
|
||||||
|
other = "Syöttämällä sähköpostin, hyväksyt että haluat vastaanottaa uutiskirjeen tältä sivustolta."
|
||||||
|
|
||||||
|
[submit]
|
||||||
|
other = "Lähetä"
|
||||||
|
|
||||||
|
[hugoAttributionText]
|
||||||
|
other = "Voimanlähteenä"
|
||||||
|
|
||||||
|
[prev]
|
||||||
|
other = "Edellinen"
|
||||||
|
|
||||||
|
[next]
|
||||||
|
other = "Seuraava"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "Jaa"
|
||||||
|
|
||||||
|
[improve_this_page]
|
||||||
|
other = "Paranna tätä sivua"
|
||||||
|
|
||||||
|
[out_of]
|
||||||
|
other = "out of"
|
||||||
|
|
||||||
|
[publications]
|
||||||
|
other = "Julkaisut"
|
||||||
|
|
||||||
|
[taken_courses]
|
||||||
|
other = "Käydyt kurssit"
|
||||||
|
|
||||||
|
[course_name]
|
||||||
|
other = "Kurssin nimi"
|
||||||
|
|
||||||
|
[total_credit]
|
||||||
|
other = "Opintopisteet yhteensä"
|
||||||
|
|
||||||
|
[obtained_credit]
|
||||||
|
other = "Saadut opintopisteet"
|
||||||
|
|
||||||
|
[extracurricular_activities]
|
||||||
|
other = "Opetusohjelman ulkopuolinen toiminta"
|
||||||
|
|
||||||
|
[show_more]
|
||||||
|
other = "Näytä lisää"
|
||||||
|
|
||||||
|
[show_less]
|
||||||
|
other = "Näytä vähemmän"
|
||||||
|
|
||||||
|
[responsibilities]
|
||||||
|
other = "Työtehtävät:"
|
||||||
|
|
||||||
|
[present]
|
||||||
|
other = "Tämä päivä"
|
||||||
|
|
||||||
|
[comments_javascript]
|
||||||
|
other = "Ole hyvä ja enabloi JavaScript katsoaksesi"
|
||||||
|
|
||||||
|
[comments_by]
|
||||||
|
other = "kommentit mahdollistavat"
|
||||||
|
|
||||||
|
[read]
|
||||||
|
other = "Lue"
|
||||||
|
|
||||||
|
[project_star]
|
||||||
|
other = "Tähti"
|
||||||
|
|
||||||
|
[project_details]
|
||||||
|
other = "Yksityiskohdat"
|
||||||
|
|
||||||
|
[err_404]
|
||||||
|
other = "Sivua jota etsit ei löydy."
|
||||||
|
|
||||||
|
[more]
|
||||||
|
other = "Lisää"
|
||||||
|
|
||||||
|
[view_certificate]
|
||||||
|
other = "Katso todistus"
|
||||||
|
|
||||||
|
[notes]
|
||||||
|
other = "Muistiinpanot"
|
||||||
|
|
||||||
|
[disclaimer_text]
|
||||||
|
other = "Vastuuilmoitus"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Haku"
|
||||||
+4
-1
@@ -87,7 +87,7 @@ other = "En savoir plus"
|
|||||||
other = "Montrer moins"
|
other = "Montrer moins"
|
||||||
|
|
||||||
[responsibilities]
|
[responsibilities]
|
||||||
other = "Responsabilitiés :"
|
other = "Responsabilités :"
|
||||||
|
|
||||||
[present]
|
[present]
|
||||||
other = "Aujourd'hui"
|
other = "Aujourd'hui"
|
||||||
@@ -121,3 +121,6 @@ other = "Remarques"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Avis de responsabilité"
|
other = "Avis de responsabilité"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Chercher"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "टिप्पणियाँ"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "दायित्व सूचना"
|
other = "दायित्व सूचना"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "खोज"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Catatan"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Pemberitahuan Kewajiban"
|
other = "Pemberitahuan Kewajiban"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Mencari"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Appunti"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Avviso di responsabilità"
|
other = "Avviso di responsabilità"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Ricerca"
|
||||||
|
|||||||
@@ -118,3 +118,6 @@ other = "ノート"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "責任通知"
|
other = "責任通知"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "検索"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "메모"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "책임 고지"
|
other = "책임 고지"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "찾다"
|
||||||
|
|||||||
+30
-27
@@ -1,11 +1,11 @@
|
|||||||
[home]
|
[home]
|
||||||
other = "Startseite"
|
other = "Hoofdpagina"
|
||||||
|
|
||||||
[posts]
|
[posts]
|
||||||
other = "Beiträge"
|
other = "Posts"
|
||||||
|
|
||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Inhaltsverzeichnis"
|
other = "Inhoudsopgave"
|
||||||
|
|
||||||
[tags]
|
[tags]
|
||||||
other = "Tags"
|
other = "Tags"
|
||||||
@@ -14,49 +14,49 @@ other = "Tags"
|
|||||||
other = "Categorieën"
|
other = "Categorieën"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "bei"
|
other = "bij"
|
||||||
|
|
||||||
[resume]
|
[resume]
|
||||||
other = "Mein Lebenslauf"
|
other = "Curriculum Vitae"
|
||||||
|
|
||||||
[navigation]
|
[navigation]
|
||||||
other = "Navigation"
|
other = "Navigatie"
|
||||||
|
|
||||||
[contact_me]
|
[contact_me]
|
||||||
other = "Kontakt aufnehmen"
|
other = "Contactgegevens"
|
||||||
|
|
||||||
[email]
|
[email]
|
||||||
other = "E-Mail"
|
other = "E-Mail"
|
||||||
|
|
||||||
[phone]
|
[phone]
|
||||||
other = "Telefon"
|
other = "Telefoon"
|
||||||
|
|
||||||
[newsletter_text]
|
[newsletter_text]
|
||||||
other = "Mit dem Newsletter auf dem neuesten Stand bleiben"
|
other = "Ontvang updates via email"
|
||||||
|
|
||||||
[newsletter_input_placeholder]
|
[newsletter_input_placeholder]
|
||||||
other = "E-Mail-Adresse eingeben"
|
other = "Email ingeven"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Door uw e-mailadres in te voeren, gaat u akkoord met het ontvangen van de nieuwsbrief van deze website."
|
other = "Door uw e-mailadres in te voeren, gaat u akkoord met het ontvangen van de nieuwsbrief van deze website."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Absenden"
|
other = "Opslaan"
|
||||||
|
|
||||||
[hugoAttributionText]
|
[hugoAttributionText]
|
||||||
other = "Unterstützt von"
|
other = "Mogelijk gemaakt met"
|
||||||
|
|
||||||
[prev]
|
[prev]
|
||||||
other = "Vorherige"
|
other = "Vorige"
|
||||||
|
|
||||||
[next]
|
[next]
|
||||||
other = "Nächste"
|
other = "Volgende"
|
||||||
|
|
||||||
# [share_on]
|
[share_on]
|
||||||
# other = "Share on"
|
other = "Delen op"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Diese Seite verbessern"
|
other = "Deze pagina verbeteren"
|
||||||
|
|
||||||
[out_of]
|
[out_of]
|
||||||
other = "van de"
|
other = "van de"
|
||||||
@@ -65,7 +65,7 @@ other = "van de"
|
|||||||
other = "Publicaties"
|
other = "Publicaties"
|
||||||
|
|
||||||
[taken_courses]
|
[taken_courses]
|
||||||
other = "Cursussen gevolgd"
|
other = "Gevolgde cursussen"
|
||||||
|
|
||||||
[course_name]
|
[course_name]
|
||||||
other = "Cursus naam"
|
other = "Cursus naam"
|
||||||
@@ -85,11 +85,11 @@ other = "Bekijk meer"
|
|||||||
[show_less]
|
[show_less]
|
||||||
other = "Laat minder zien"
|
other = "Laat minder zien"
|
||||||
|
|
||||||
# [responsibilities]
|
[responsibilities]
|
||||||
# other = "Responsibilities:"
|
other = "Verantwoordelijkheden:"
|
||||||
|
|
||||||
# [present]
|
[present]
|
||||||
# other = "Present"
|
other = "Heden"
|
||||||
|
|
||||||
# [comments_javascript]
|
# [comments_javascript]
|
||||||
# other = "Please enable JavaScript to view the"
|
# other = "Please enable JavaScript to view the"
|
||||||
@@ -103,11 +103,11 @@ other = "Laat minder zien"
|
|||||||
# [project_star]
|
# [project_star]
|
||||||
# other = "Star"
|
# other = "Star"
|
||||||
|
|
||||||
# [project_details]
|
[project_details]
|
||||||
# other = "Details"
|
other = "Details"
|
||||||
|
|
||||||
# [err_404]
|
[err_404]
|
||||||
# other = "The page you are looking for is not there yet."
|
other = "De pagina waar je voor zoekt bestaat nog niet."
|
||||||
|
|
||||||
[more]
|
[more]
|
||||||
other = "Meer"
|
other = "Meer"
|
||||||
@@ -119,4 +119,7 @@ other = "Bekijk certificaat"
|
|||||||
other = "Opmerkingen"
|
other = "Opmerkingen"
|
||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Haftungshinweis"
|
other = "Aansprakelijkheidsverklaring"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Zoek"
|
||||||
|
|||||||
+126
@@ -0,0 +1,126 @@
|
|||||||
|
# More documentation here: https://github.com/nicksnyder/go-i18n
|
||||||
|
[home]
|
||||||
|
other = "Início"
|
||||||
|
|
||||||
|
[posts]
|
||||||
|
other = "Artigos"
|
||||||
|
|
||||||
|
[toc_heading]
|
||||||
|
other = "Tabela de conteúdos"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Etiquetas"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Categorias"
|
||||||
|
|
||||||
|
[at]
|
||||||
|
other = "em"
|
||||||
|
|
||||||
|
[resume]
|
||||||
|
other = "O meu Currículo"
|
||||||
|
|
||||||
|
[navigation]
|
||||||
|
other = "Navegação"
|
||||||
|
|
||||||
|
[contact_me]
|
||||||
|
other = "Contacte-me:"
|
||||||
|
|
||||||
|
[email]
|
||||||
|
other = "Email"
|
||||||
|
|
||||||
|
[phone]
|
||||||
|
other = "Telefone"
|
||||||
|
|
||||||
|
[newsletter_text]
|
||||||
|
other = "Mantenha-se actualizado com notificações por email"
|
||||||
|
|
||||||
|
[newsletter_input_placeholder]
|
||||||
|
other = "Inserir email"
|
||||||
|
|
||||||
|
[newsletter_warning]
|
||||||
|
other = "Ao submeter o seu endereço de email, concorda em receber a newsletter deste website."
|
||||||
|
|
||||||
|
[submit]
|
||||||
|
other = "Enviar"
|
||||||
|
|
||||||
|
[hugoAttributionText]
|
||||||
|
other = "Desenvolvido por"
|
||||||
|
|
||||||
|
[prev]
|
||||||
|
other = "Anterior"
|
||||||
|
|
||||||
|
[next]
|
||||||
|
other = "Próximo"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "Partilha"
|
||||||
|
|
||||||
|
[improve_this_page]
|
||||||
|
other = "Melhore esta página"
|
||||||
|
|
||||||
|
[out_of]
|
||||||
|
other = "de"
|
||||||
|
|
||||||
|
[publications]
|
||||||
|
other = "Publicações"
|
||||||
|
|
||||||
|
[taken_courses]
|
||||||
|
other = "Cursos frequentados"
|
||||||
|
|
||||||
|
[course_name]
|
||||||
|
other = "Nome do Curso"
|
||||||
|
|
||||||
|
[total_credit]
|
||||||
|
other = "Créditos Totais"
|
||||||
|
|
||||||
|
[obtained_credit]
|
||||||
|
other = "Créditos Obtidos"
|
||||||
|
|
||||||
|
[extracurricular_activities]
|
||||||
|
other = "Actividades Extracurriculares"
|
||||||
|
|
||||||
|
[show_more]
|
||||||
|
other = "Ver Mais"
|
||||||
|
|
||||||
|
[show_less]
|
||||||
|
other = "Ver Menos"
|
||||||
|
|
||||||
|
[responsibilities]
|
||||||
|
other = "Responsabilidades:"
|
||||||
|
|
||||||
|
[present]
|
||||||
|
other = "Presente"
|
||||||
|
|
||||||
|
[comments_javascript]
|
||||||
|
other = "Por favor active JavaScript para ver o"
|
||||||
|
|
||||||
|
[comments_by]
|
||||||
|
other = "comentários por"
|
||||||
|
|
||||||
|
[read]
|
||||||
|
other = "Ler"
|
||||||
|
|
||||||
|
[project_star]
|
||||||
|
other = "Star"
|
||||||
|
|
||||||
|
[project_details]
|
||||||
|
other = "Detalhes"
|
||||||
|
|
||||||
|
[err_404]
|
||||||
|
other = "A página que procura ainda não está aqui."
|
||||||
|
|
||||||
|
[more]
|
||||||
|
other = "Mais"
|
||||||
|
|
||||||
|
[view_certificate]
|
||||||
|
other = "Ver Certificado"
|
||||||
|
|
||||||
|
[notes]
|
||||||
|
other = "Notas"
|
||||||
|
|
||||||
|
[disclaimer_text]
|
||||||
|
other = "Nota legal"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Pesquisar"
|
||||||
@@ -121,3 +121,6 @@ other = "Ноты"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Уведомление об ответственности"
|
other = "Уведомление об ответственности"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Поиск"
|
||||||
|
|||||||
+126
@@ -0,0 +1,126 @@
|
|||||||
|
# More documentation here: https://github.com/nicksnyder/go-i18n
|
||||||
|
[home]
|
||||||
|
other = "Anasayfa"
|
||||||
|
|
||||||
|
[posts]
|
||||||
|
other = "Gönderiler"
|
||||||
|
|
||||||
|
[toc_heading]
|
||||||
|
other = "İçerik Tablosu"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Etiketler"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Kategoriler"
|
||||||
|
|
||||||
|
[at]
|
||||||
|
other = ","
|
||||||
|
|
||||||
|
[resume]
|
||||||
|
other = "Özgeçmişim"
|
||||||
|
|
||||||
|
[navigation]
|
||||||
|
other = "Menü"
|
||||||
|
|
||||||
|
[contact_me]
|
||||||
|
other = "İletişime geç:"
|
||||||
|
|
||||||
|
[email]
|
||||||
|
other = "E-Posta"
|
||||||
|
|
||||||
|
[phone]
|
||||||
|
other = "Telefon"
|
||||||
|
|
||||||
|
[newsletter_text]
|
||||||
|
other = "Yeni içeriklerden haberdar olmak için E-Posta adresinizi giriniz."
|
||||||
|
|
||||||
|
[newsletter_input_placeholder]
|
||||||
|
other = "E-Posta adresi giriniz."
|
||||||
|
|
||||||
|
[newsletter_warning]
|
||||||
|
other = "E-Posta adresini girerseniz, bu web sitesinin haber bültenini almayı kabul ediyorsunuz."
|
||||||
|
|
||||||
|
[submit]
|
||||||
|
other = "Onayla"
|
||||||
|
|
||||||
|
[hugoAttributionText]
|
||||||
|
other = ""
|
||||||
|
|
||||||
|
[prev]
|
||||||
|
other = "Önceki"
|
||||||
|
|
||||||
|
[next]
|
||||||
|
other = "Sonraki"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "Paylaş"
|
||||||
|
|
||||||
|
[improve_this_page]
|
||||||
|
other = "Bu sayfaya katkıda bulunun"
|
||||||
|
|
||||||
|
[out_of]
|
||||||
|
other = "/"
|
||||||
|
|
||||||
|
[publications]
|
||||||
|
other = "Akademik Yayınlar"
|
||||||
|
|
||||||
|
[taken_courses]
|
||||||
|
other = "Alınan Dersler"
|
||||||
|
|
||||||
|
[course_name]
|
||||||
|
other = "Ders Adı"
|
||||||
|
|
||||||
|
[total_credit]
|
||||||
|
other = "Üzerinden"
|
||||||
|
|
||||||
|
[obtained_credit]
|
||||||
|
other = "Alınan Not"
|
||||||
|
|
||||||
|
[extracurricular_activities]
|
||||||
|
other = "Ders Dışı Aktiviteler"
|
||||||
|
|
||||||
|
[show_more]
|
||||||
|
other = "Devamını Göster"
|
||||||
|
|
||||||
|
[show_less]
|
||||||
|
other = "Gizle"
|
||||||
|
|
||||||
|
[responsibilities]
|
||||||
|
other = "Sorumluluklar:"
|
||||||
|
|
||||||
|
[present]
|
||||||
|
other = "Halen"
|
||||||
|
|
||||||
|
[comments_javascript]
|
||||||
|
other = "Görüntüleyebilmek için lüften Javascript etkinleştirin"
|
||||||
|
|
||||||
|
[comments_by]
|
||||||
|
other = "comments powered by"
|
||||||
|
|
||||||
|
[read]
|
||||||
|
other = "Oku"
|
||||||
|
|
||||||
|
[project_star]
|
||||||
|
other = "Star"
|
||||||
|
|
||||||
|
[project_details]
|
||||||
|
other = "Detaylar"
|
||||||
|
|
||||||
|
[err_404]
|
||||||
|
other = "Aradığınız sayfa bulunamadı."
|
||||||
|
|
||||||
|
[more]
|
||||||
|
other = "Devamını Göster"
|
||||||
|
|
||||||
|
[view_certificate]
|
||||||
|
other = "Sertifikayı Görüntüle"
|
||||||
|
|
||||||
|
[notes]
|
||||||
|
other = "Notlar"
|
||||||
|
|
||||||
|
[disclaimer_text]
|
||||||
|
other = "Yükümlülük Bildirisi"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Ara"
|
||||||
@@ -121,3 +121,6 @@ other = "Ghi chú"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Thông báo trách nhiệm"
|
other = "Thông báo trách nhiệm"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Tìm kiếm"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "笔记"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "免责声明"
|
other = "免责声明"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "搜索"
|
||||||
|
|||||||
+19
-16
@@ -86,29 +86,29 @@ other = "查看更多"
|
|||||||
[show_less]
|
[show_less]
|
||||||
other = "顯示較少"
|
other = "顯示較少"
|
||||||
|
|
||||||
# [responsibilities]
|
[responsibilities]
|
||||||
# other = "Responsibilities:"
|
other = "職責:"
|
||||||
|
|
||||||
# [present]
|
[present]
|
||||||
# other = "Present"
|
other = "現在"
|
||||||
|
|
||||||
# [comments_javascript]
|
[comments_javascript]
|
||||||
# other = "Please enable JavaScript to view the"
|
other = "請開啟 JavaScript 查看"
|
||||||
|
|
||||||
# [comments_by]
|
[comments_by]
|
||||||
# other = "comments powered by"
|
other = "評論由"
|
||||||
|
|
||||||
# [read]
|
[read]
|
||||||
# other = "Read"
|
other = "閱讀"
|
||||||
|
|
||||||
# [project_star]
|
[project_star]
|
||||||
# other = "Star"
|
other = "Star"
|
||||||
|
|
||||||
# [project_details]
|
[project_details]
|
||||||
# other = "Details"
|
other = "詳情"
|
||||||
|
|
||||||
# [err_404]
|
[err_404]
|
||||||
# other = "The page you are looking for is not there yet."
|
other = "您訪問的頁面不存在"
|
||||||
|
|
||||||
[more]
|
[more]
|
||||||
other = "更多的"
|
other = "更多的"
|
||||||
@@ -121,3 +121,6 @@ other = "筆記"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "免責聲明"
|
other = "免責聲明"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "搜索"
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>
|
||||||
@@ -9,16 +9,9 @@
|
|||||||
<!------ ADD PAGE SPECIFIC HEADERS ------->
|
<!------ ADD PAGE SPECIFIC HEADERS ------->
|
||||||
{{ block "header" . }} {{ end }}
|
{{ block "header" . }} {{ end }}
|
||||||
|
|
||||||
<!-- ADD GOOGLE ANALYTICS IF ENABLED -->
|
<!--================= add analytics if enabled =========================-->
|
||||||
{{ if site.GoogleAnalytics }}
|
{{- partial "analytics.html" . -}}
|
||||||
<!-- Google Analytics v3 ID -->
|
|
||||||
{{ if hasPrefix site.GoogleAnalytics "UA-"}}
|
|
||||||
{{ template "_internal/google_analytics_async.html" . }}
|
|
||||||
{{ else }}
|
|
||||||
<!-- Google Analytics v4 ID -->
|
|
||||||
{{ template "_internal/google_analytics.html" . }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
|
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
|
||||||
@@ -45,5 +38,9 @@
|
|||||||
|
|
||||||
<!------- ADD PAGE SPECIFIC SCRIPTS ------>
|
<!------- ADD PAGE SPECIFIC SCRIPTS ------>
|
||||||
{{ block "scripts" . }} {{ end }}
|
{{ block "scripts" . }} {{ end }}
|
||||||
|
|
||||||
|
<!------ IF WANTED, ADD SUPPORT LINKS -------->
|
||||||
|
{{- partial "misc/support.html" . -}}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{{- $.Scratch.Add "index" slice -}}
|
{{- $.Scratch.Add "index" slice -}}
|
||||||
{{- range .Site.RegularPages -}}
|
{{- range (where .Site.RegularPages "Layout" "!=" "search") -}}
|
||||||
{{- $.Scratch.Add "index" (dict "title" .Title "hero" (partial "helpers/get-hero.html" .) "date" (.Date.Format "January 2, 2006") "summary" .Summary "tags" .Params.tags "categories" .Params.categories "contents" .Plain "permalink" .Permalink) -}}
|
{{- $.Scratch.Add "index" (dict "title" .Title "hero" (partial "helpers/get-hero.html" .) "date" (.Date.Format "January 2, 2006") "summary" .Summary "tags" .Params.tags "categories" .Params.categories "contents" .Plain "permalink" .Permalink) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- $.Scratch.Get "index" | jsonify -}}
|
{{- $.Scratch.Get "index" | jsonify -}}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<div class="sidebar-holder">
|
<div class="sidebar-holder">
|
||||||
<div class="sidebar" id="sidebar">
|
<div class="sidebar" id="sidebar">
|
||||||
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
|
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
|
||||||
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
|
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
|
||||||
</form>
|
</form>
|
||||||
<div class="sidebar-tree">
|
<div class="sidebar-tree">
|
||||||
<ul class="tree" id="tree">
|
<ul class="tree" id="tree">
|
||||||
@@ -55,7 +55,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ define "scripts" }}
|
|
||||||
<script src="{{ "/js/list.js" | relURL }}"></script>
|
|
||||||
{{ end }}
|
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
{{- $pctx := . -}}
|
||||||
|
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
|
||||||
|
{{- $pages := slice -}}
|
||||||
|
{{- if $.IsHome -}}
|
||||||
|
{{- $pages = sort $pctx.RegularPages "Date" "desc" -}}
|
||||||
|
{{- else if $.IsSection -}}
|
||||||
|
{{- $pages = sort $pctx.RegularPagesRecursive "Date" "desc" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $pages = sort $pctx.RegularPagesRecursive "Date" "desc" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $limit := .Site.Config.Services.RSS.Limit -}}
|
||||||
|
{{- if ge $limit 1 -}}
|
||||||
|
{{- $pages = $pages | first $limit -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||||
|
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||||
|
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||||
|
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||||
|
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||||
|
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||||
|
{{- with .OutputFormats.Get "RSS" -}}
|
||||||
|
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ range $pages }}
|
||||||
|
{{- if ne .RelPermalink "/search/" -}}
|
||||||
|
<item>
|
||||||
|
<title>{{ .Title }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||||
|
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||||
|
<guid>{{ .Permalink }}</guid>
|
||||||
|
<description>{{ .Summary | html }}</description>
|
||||||
|
</item>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</channel>
|
||||||
|
</rss>
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<div class="sidebar-holder">
|
<div class="sidebar-holder">
|
||||||
<div class="sidebar" id="sidebar">
|
<div class="sidebar" id="sidebar">
|
||||||
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
|
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
|
||||||
<input type="text" name="keyword" value="" placeholder="Search" data-search="" id="search-box" />
|
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
|
||||||
</form>
|
</form>
|
||||||
<div class="sidebar-tree">
|
<div class="sidebar-tree">
|
||||||
<ul class="tree" id="tree">
|
<ul class="tree" id="tree">
|
||||||
@@ -66,9 +66,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ define "scripts" }}
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.0/fuse.min.js"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.min.js"></script>
|
|
||||||
<script src="{{ "/js/search.js" | absURL }}"></script>
|
|
||||||
{{ end }}
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user