Compare commits
134 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| 4e029b7de8 | |||
| 3cd9c910f7 | |||
| a4e30e80a3 | |||
| 5d3f195c00 | |||
| 8dbe04b95d | |||
| cac27fc8c4 | |||
| b9d6b6612c | |||
| 0d1bd1f9f4 | |||
| b28d8e93cf | |||
| 9c8b6bd59b | |||
| 0773fe303e | |||
| 32837a0938 | |||
| 8e7e195b91 | |||
| 232e5d2f3a | |||
| 2ffc0c7a9c | |||
| 098179ec1f | |||
| ff86f78b4d | |||
| b5c3713277 | |||
| ad149f4d80 | |||
| 35c6586412 | |||
| 6e41689c06 | |||
| f779ac4ebb | |||
| adf5d52ab3 | |||
| ba997ff4c5 | |||
| 7b604b30e5 | |||
| 8a8c0ec9fd | |||
| 6e849034ac | |||
| 41b1106703 | |||
| 20ff5ac182 | |||
| 0072234546 | |||
| c0480898ed | |||
| bb01f1a975 | |||
| 069b0aa328 | |||
| 15c17a471b | |||
| cf7c11421b | |||
| e8e23ed9a3 | |||
| d155f2063b | |||
| c68a0e20af | |||
| e2b666c6d1 | |||
| 02c2483c6c | |||
| b06326bbe8 | |||
| 4803151e93 | |||
| 3c62edec20 | |||
| 7b92452e2b | |||
| 6d98c15136 | |||
| fc3b483697 | |||
| 8c7ae86720 | |||
| 8f239a0ddc | |||
| 990cd7a58b | |||
| d868096c3c | |||
| d36ecdb810 | |||
| 1ed12aacdf | |||
| 03edbac376 | |||
| f56f3dd176 | |||
| ccc67a2a02 | |||
| 3b75961f58 | |||
| 6a55617adc | |||
| ffe40b1cba | |||
| 1a5bbe4eeb | |||
| 46952f6ab9 | |||
| 4099f4f1e6 | |||
| dd0c46593c | |||
| 14ee45e4a0 | |||
| 091c77360d | |||
| 884bf65e43 | |||
| ebe659b12b | |||
| efa63e7990 | |||
| de912c08c6 | |||
| 0b5bde7233 | |||
| 9004e7c423 | |||
| 61e5a34171 | |||
| 929a78837a | |||
| 65a429b664 | |||
| 08a09d5c71 | |||
| 88a0814025 | |||
| 3421c99ebf | |||
| b5fe77f876 |
@@ -17,7 +17,7 @@ categories:
|
|||||||
- 'feature'
|
- 'feature'
|
||||||
- 'enhancement'
|
- 'enhancement'
|
||||||
|
|
||||||
- title: 'New Translations'
|
- title: 'Translations'
|
||||||
label: 'translation'
|
label: 'translation'
|
||||||
|
|
||||||
- title: 'Bug Fixes'
|
- title: 'Bug Fixes'
|
||||||
|
|||||||
@@ -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.3.4
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v2.1.5
|
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.10.0
|
uses: peter-evans/create-pull-request@v3.14.0
|
||||||
with:
|
with:
|
||||||
branch: autoprefixer
|
branch: autoprefixer
|
||||||
branch-suffix: timestamp
|
branch-suffix: timestamp
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
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@v2.4.0
|
||||||
|
with:
|
||||||
|
submodules: true # Fetch Hugo themes (true OR recursive)
|
||||||
|
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
|
||||||
|
|
||||||
|
# install Hugo
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v2.5.0
|
||||||
|
with:
|
||||||
|
hugo-version: 'latest'
|
||||||
|
extended: true
|
||||||
|
|
||||||
|
# build website
|
||||||
|
- name: Create Config
|
||||||
|
run: touch config.toml
|
||||||
|
- name: Build
|
||||||
|
run: hugo --minify
|
||||||
@@ -39,7 +39,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
|
|||||||
@@ -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.19.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@master
|
- uses: actions/checkout@v3
|
||||||
# run markdown linter
|
# run markdown linter
|
||||||
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.12
|
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.14
|
||||||
|
|||||||
@@ -0,0 +1,150 @@
|
|||||||
|
name: Project Automation (Issue)
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- reopened
|
||||||
|
- closed
|
||||||
|
- labeled
|
||||||
|
- unlabeled
|
||||||
|
jobs:
|
||||||
|
issue_automation:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Get project data
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
ORGANIZATION: hugo-toha
|
||||||
|
PROJECT_NUMBER: 4
|
||||||
|
run: |
|
||||||
|
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
|
||||||
|
query($org: String!, $number: Int!) {
|
||||||
|
organization(login: $org){
|
||||||
|
projectNext(number: $number) {
|
||||||
|
id
|
||||||
|
fields(first:20) {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
settings
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f org="$ORGANIZATION" -F number=$PROJECT_NUMBER > project_data.json
|
||||||
|
|
||||||
|
echo 'PROJECT_ID='$(jq -r '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
|
||||||
|
# Read the ID of the "Type" field options
|
||||||
|
echo 'TYPE_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'PROJECT_ID='$(jq -r '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_BUG='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Bug") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_FEATURE='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Feature") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_ENHANCEMENT='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Enhancement") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_DOCUMENTATION='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Documentation") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_TRANSLATION='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Translation") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
|
||||||
|
# Read the id of the "Status" field options
|
||||||
|
echo 'STATUS_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'STATUS_TODO='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'STATUS_IN_PROGRESS='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="In Progress") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'STATUS_READY_FOR_REVIEW='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Ready for Review") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'STATUS_DONE='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Done") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Add Issue to project
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
ISSUE_ID: ${{ github.event.issue.node_id }}
|
||||||
|
run: |
|
||||||
|
item_id="$( gh api graphql -f query='
|
||||||
|
mutation($project:ID!, $issue:ID!) {
|
||||||
|
addProjectNextItem(input: {projectId: $project, contentId: $issue}) {
|
||||||
|
projectNextItem {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f project="$PROJECT_ID" -f issue="$ISSUE_ID" --jq '.data.addProjectNextItem.projectNextItem.id')"
|
||||||
|
|
||||||
|
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Export Labels
|
||||||
|
env:
|
||||||
|
ISSUE_DATA: ${{ toJson(github.event.issue) }}
|
||||||
|
run: |
|
||||||
|
echo 'LABELS='$(echo "$ISSUE_DATA" | jq -r '[.labels[].name] | join(" ")') >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Set "Type" field
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
run: |
|
||||||
|
# Only execute this step if the Issue contains at least one label
|
||||||
|
if [ "${#LABELS[@]}" -gt 0 ]; then
|
||||||
|
|
||||||
|
# Let by default the type is "Bug"
|
||||||
|
OPTION_ID=$TYPE_BUG
|
||||||
|
|
||||||
|
# If it has "feature" label then set the type to "Feature"
|
||||||
|
if [[ "${LABELS[*]}" =~ "feature" ]]; then
|
||||||
|
OPTION_ID=$TYPE_FEATURE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If it has "enhancement" label then set the type to "Enhancement"
|
||||||
|
if [[ "${LABELS[*]}" =~ "enhancement" ]]; then
|
||||||
|
OPTION_ID=$TYPE_ENHANCEMENT
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If it has "documentation" label then set the type to "Documentation"
|
||||||
|
if [[ "${LABELS[*]}" =~ "documentation" ]]; then
|
||||||
|
OPTION_ID=$TYPE_DOCUMENTATION
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If it has "translation" label then set the type to "Translation"
|
||||||
|
if [[ "${LABELS[*]}" =~ "translation" ]]; then
|
||||||
|
OPTION_ID=$TYPE_TRANSLATION
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the "Type" field to appropriate option
|
||||||
|
gh api graphql -f query='
|
||||||
|
mutation ($project: ID!, $item: ID!, $field: ID!, $opt_id: ID!) {
|
||||||
|
updateProjectNextItemField(input: {
|
||||||
|
projectId: $project
|
||||||
|
itemId: $item
|
||||||
|
fieldId: $field
|
||||||
|
value: $opt_id
|
||||||
|
}) {
|
||||||
|
projectNextItem {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f project="$PROJECT_ID" -f item="$ITEM_ID" -f field="$TYPE_ID" -f opt_id="$OPTION_ID" --silent
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Set "Status" field
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
run: |
|
||||||
|
STATE=${{github.event.issue.state}}
|
||||||
|
|
||||||
|
echo "State: $STATE"
|
||||||
|
|
||||||
|
OPTION_ID=$STATUS_TODO
|
||||||
|
|
||||||
|
if [[ "${STATE}" == "closed" ]]
|
||||||
|
then
|
||||||
|
OPTION_ID=$STATUS_DONE
|
||||||
|
fi
|
||||||
|
|
||||||
|
gh api graphql -f query='
|
||||||
|
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: ID!) {
|
||||||
|
updateProjectNextItemField(input: {
|
||||||
|
projectId: $project
|
||||||
|
itemId: $item
|
||||||
|
fieldId: $field
|
||||||
|
value: $status_id
|
||||||
|
}) {
|
||||||
|
projectNextItem {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f project="$PROJECT_ID" -f item="$ITEM_ID" -f field="$STATUS_ID" -f status_id="$OPTION_ID" --silent
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
name: Project Automation (PR)
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- ready_for_review
|
||||||
|
- reopened
|
||||||
|
- review_requested
|
||||||
|
- closed
|
||||||
|
- labeled
|
||||||
|
- unlabeled
|
||||||
|
- synchronize
|
||||||
|
jobs:
|
||||||
|
pr_automation:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Get project data
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
ORGANIZATION: hugo-toha
|
||||||
|
PROJECT_NUMBER: 4
|
||||||
|
run: |
|
||||||
|
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
|
||||||
|
query($org: String!, $number: Int!) {
|
||||||
|
organization(login: $org){
|
||||||
|
projectNext(number: $number) {
|
||||||
|
id
|
||||||
|
fields(first:20) {
|
||||||
|
nodes {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
settings
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f org="$ORGANIZATION" -F number=$PROJECT_NUMBER > project_data.json
|
||||||
|
|
||||||
|
echo 'PROJECT_ID='$(jq -r '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
|
||||||
|
# Read the ID of the "Type" field options
|
||||||
|
echo 'TYPE_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'PROJECT_ID='$(jq -r '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_BUG='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Bug") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_FEATURE='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Feature") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_ENHANCEMENT='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Enhancement") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_DOCUMENTATION='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Documentation") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'TYPE_TRANSLATION='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Type") |.settings | fromjson.options[] | select(.name=="Translation") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
|
||||||
|
# Read the id of the "Status" field options
|
||||||
|
echo 'STATUS_ID='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'STATUS_TODO='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'STATUS_IN_PROGRESS='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="In Progress") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'STATUS_READY_FOR_REVIEW='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Ready for Review") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
echo 'STATUS_DONE='$(jq -r '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Done") |.id' project_data.json) >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Add PR to project
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
PR_ID: ${{ github.event.pull_request.node_id }}
|
||||||
|
run: |
|
||||||
|
item_id="$( gh api graphql -f query='
|
||||||
|
mutation($project:ID!, $pr:ID!) {
|
||||||
|
addProjectNextItem(input: {projectId: $project, contentId: $pr}) {
|
||||||
|
projectNextItem {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f project="$PROJECT_ID" -f pr="$PR_ID" --jq '.data.addProjectNextItem.projectNextItem.id')"
|
||||||
|
|
||||||
|
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Export Labels
|
||||||
|
env:
|
||||||
|
PR_DATA: ${{ toJson(github.event.pull_request) }}
|
||||||
|
run: |
|
||||||
|
echo 'LABELS='$(echo "$PR_DATA" | jq -r '[.labels[].name] | join(" ")') >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Set "Type" field
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
run: |
|
||||||
|
# Only execute this step if the PR contains at least one label
|
||||||
|
if [ "${#LABELS[@]}" -gt 0 ]; then
|
||||||
|
|
||||||
|
# Let by default the type is "Bug"
|
||||||
|
OPTION_ID=$TYPE_BUG
|
||||||
|
|
||||||
|
# If it has "feature" label then set the type to "Feature"
|
||||||
|
if [[ "${LABELS[*]}" =~ "feature" ]]; then
|
||||||
|
OPTION_ID=$TYPE_FEATURE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If it has "enhancement" label then set the type to "Enhancement"
|
||||||
|
if [[ "${LABELS[*]}" =~ "enhancement" ]]; then
|
||||||
|
OPTION_ID=$TYPE_ENHANCEMENT
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If it has "documentation" label then set the type to "Documentation"
|
||||||
|
if [[ "${LABELS[*]}" =~ "documentation" ]]; then
|
||||||
|
OPTION_ID=$TYPE_DOCUMENTATION
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If it has "translation" label then set the type to "Translation"
|
||||||
|
if [[ "${LABELS[*]}" =~ "translation" ]]; then
|
||||||
|
OPTION_ID=$TYPE_TRANSLATION
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the "Type" field to appropriate option
|
||||||
|
gh api graphql -f query='
|
||||||
|
mutation ($project: ID!, $item: ID!, $field: ID!, $opt_id: ID!) {
|
||||||
|
updateProjectNextItemField(input: {
|
||||||
|
projectId: $project
|
||||||
|
itemId: $item
|
||||||
|
fieldId: $field
|
||||||
|
value: $opt_id
|
||||||
|
}) {
|
||||||
|
projectNextItem {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f project="$PROJECT_ID" -f item="$ITEM_ID" -f field="$TYPE_ID" -f opt_id="$OPTION_ID" --silent
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Set "Status" field
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
run: |
|
||||||
|
MERGED=${{github.event.pull_request.merged}}
|
||||||
|
STATE=${{github.event.pull_request.state}}
|
||||||
|
REVIEWERS=${{github.event.pull_request.requested_reviewers}}
|
||||||
|
DRAFT=${{github.event.pull_request.draft}}
|
||||||
|
|
||||||
|
echo "Merged: $MERGED"
|
||||||
|
echo "State: $STATE"
|
||||||
|
echo "Draft: $DRAFT"
|
||||||
|
echo "Reviewer: $REVIEWER"
|
||||||
|
|
||||||
|
OPTION_ID=$STATUS_TODO
|
||||||
|
|
||||||
|
if [[ ("${MERGED}" == "true") || ("${STATE}" == "closed") ]]
|
||||||
|
then
|
||||||
|
OPTION_ID=$STATUS_DONE
|
||||||
|
elif [[ ${#REVIEWERS[@]} -gt 0 ]]
|
||||||
|
then
|
||||||
|
OPTION_ID=$STATUS_READY_FOR_REVIEW
|
||||||
|
else
|
||||||
|
OPTION_ID=$STATUS_IN_PROGRESS
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Expose the OPTION_ID so that it can be used in later steps
|
||||||
|
echo 'PR_STATUS='$OPTION_ID >> $GITHUB_ENV
|
||||||
|
|
||||||
|
gh api graphql -f query='
|
||||||
|
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: ID!) {
|
||||||
|
updateProjectNextItemField(input: {
|
||||||
|
projectId: $project
|
||||||
|
itemId: $item
|
||||||
|
fieldId: $field
|
||||||
|
value: $status_id
|
||||||
|
}) {
|
||||||
|
projectNextItem {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f project="$PROJECT_ID" -f item="$ITEM_ID" -f field="$STATUS_ID" -f status_id="$OPTION_ID" --silent
|
||||||
|
|
||||||
|
- name: Find Linked Issues
|
||||||
|
id: linked_issues
|
||||||
|
uses: hossainemruz/linked-issues@main
|
||||||
|
with:
|
||||||
|
pr_url: ${{github.event.pull_request.html_url}}
|
||||||
|
format: IssueNumber
|
||||||
|
|
||||||
|
- name: Update Linked Issues Status
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{secrets.PROJECT_AUTOMATION}}
|
||||||
|
run: |
|
||||||
|
declare -a issues=(${{ steps.linked_issues.outputs.issues }})
|
||||||
|
|
||||||
|
# Loop through the every issues and update their Status to same as the PR Status
|
||||||
|
for i in "${issues[@]}"
|
||||||
|
do
|
||||||
|
# Find the Issue ID
|
||||||
|
ISSUE_ID="$(gh api graphql -f query='
|
||||||
|
query($owner: String!, $name: String!, $issue_number: Int!) {
|
||||||
|
repository(owner: $owner, name: $name) {
|
||||||
|
issue(number: $issue_number) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f owner="${{github.event.pull_request.head.repo.owner.login}}" -f name="${{github.event.pull_request.head.repo.name}}" -F issue_number=$i --jq='.data.repository.issue.id')"
|
||||||
|
|
||||||
|
# Find the id of the Issue at the project board
|
||||||
|
item_id="$( gh api graphql -f query='
|
||||||
|
mutation($project:ID!, $pr:ID!) {
|
||||||
|
addProjectNextItem(input: {projectId: $project, contentId: $pr}) {
|
||||||
|
projectNextItem {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f project="$PROJECT_ID" -f pr="$ISSUE_ID" --jq '.data.addProjectNextItem.projectNextItem.id')"
|
||||||
|
|
||||||
|
# Update the Issue Status
|
||||||
|
gh api graphql -f query='
|
||||||
|
mutation ($project: ID!, $item: ID!, $field: ID!, $status_id: ID!) {
|
||||||
|
updateProjectNextItemField(input: {
|
||||||
|
projectId: $project
|
||||||
|
itemId: $item
|
||||||
|
fieldId: $field
|
||||||
|
value: $status_id
|
||||||
|
}) {
|
||||||
|
projectNextItem {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' -f project="$PROJECT_ID" -f item="$item_id" -f field="$STATUS_ID" -f status_id="$PR_STATUS" --silent
|
||||||
|
done
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
[](https://app.netlify.com/sites/toha/deploys)
|
[](https://app.netlify.com/sites/toha/deploys)
|
||||||
[](https://actions-badge.atrox.dev/hugo-toha/toha/goto?ref=main)
|
[](https://actions-badge.atrox.dev/hugo-toha/toha/goto?ref=main)
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
@@ -30,8 +30,15 @@ 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
|
||||||
|
- 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/).
|
||||||
|
|
||||||
@@ -71,7 +78,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
|
||||||
|
|
||||||
@@ -165,10 +172,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
|
||||||
|
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "পোষ্ট সমূহ"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "সুচিপত্র"
|
other = "সুচিপত্র"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "ট্যাগ সমুহ"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "বিভাগ সমুহ"
|
||||||
|
|
||||||
[resume]
|
[resume]
|
||||||
other = "আমার জীবনবৃত্তান্ত"
|
other = "আমার জীবনবৃত্তান্ত"
|
||||||
|
|
||||||
@@ -30,7 +36,7 @@ other = "ইমেইল নোটিফিকেশান এর মাধ্
|
|||||||
other = "ইমেইল প্রবেশ করান"
|
other = "ইমেইল প্রবেশ করান"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "আমরা আপনার ইমেল অন্য কারও সাথে শেয়ার করব না।"
|
other = "আপনার ইমেইল ঠিকানা প্রবেশের মাধমে আপনি এই ওয়েবসাইটের নিউজ লেটার পেতে সম্মত হচ্ছেন।"
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "জমা দিন"
|
other = "জমা দিন"
|
||||||
@@ -44,6 +50,9 @@ other = "পূর্ববর্তী"
|
|||||||
[next]
|
[next]
|
||||||
other = "পরবর্তী"
|
other = "পরবর্তী"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "শেয়ার করুন"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "এই পৃষ্ঠাটি উন্নত করুন"
|
other = "এই পৃষ্ঠাটি উন্নত করুন"
|
||||||
|
|
||||||
@@ -109,3 +118,6 @@ other = "নোট সমূহ"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "দায় বিজ্ঞপ্তি"
|
other = "দায় বিজ্ঞপ্তি"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "অনুসন্ধান করুন"
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "Beiträge"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Inhaltsverzeichnis"
|
other = "Inhaltsverzeichnis"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Stichworte"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Kategorien"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "bei"
|
other = "bei"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "Mit dem Newsletter auf dem neuesten Stand bleiben"
|
|||||||
other = "E-Mail Adresse eingeben"
|
other = "E-Mail Adresse eingeben"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Wir geben deine E-Mail Adresse nicht an Dritte weiter."
|
other = "Mit der Eingabe Ihrer E-Mail-Adresse erklären Sie sich damit einverstanden, den Newsletter dieser Website zu erhalten."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Absenden"
|
other = "Absenden"
|
||||||
@@ -47,6 +53,9 @@ other = "Vorherige"
|
|||||||
[next]
|
[next]
|
||||||
other = "Nächste"
|
other = "Nächste"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Diese Seite verbessern"
|
other = "Diese Seite verbessern"
|
||||||
|
|
||||||
@@ -112,3 +121,6 @@ other = "Notizen"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Haftungshinweis"
|
other = "Haftungshinweis"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Suche"
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "Posts"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Table of Contents"
|
other = "Table of Contents"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Tags"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Categories"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "at"
|
other = "at"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "Stay up to date with email notification"
|
|||||||
other = "Enter email"
|
other = "Enter email"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "We'll never share your email with anyone else."
|
other = "By entering your email address, you agree to receive the newsletter of this website."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Submit"
|
other = "Submit"
|
||||||
@@ -47,6 +53,9 @@ other = "Prev"
|
|||||||
[next]
|
[next]
|
||||||
other = "Next"
|
other = "Next"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Improve this page"
|
other = "Improve this page"
|
||||||
|
|
||||||
@@ -112,3 +121,6 @@ other = "Notes"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Liability Notice"
|
other = "Liability Notice"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Search"
|
||||||
|
|||||||
+29
-17
@@ -8,6 +8,12 @@ other = "Posts"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Contenido"
|
other = "Contenido"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Etiquetas"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Categorías"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "en"
|
other = "en"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "Subscribirse"
|
|||||||
other = "Ingrese email"
|
other = "Ingrese email"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Jamás compartiremos tus datos con alguién mas"
|
other = "Al ingresar su dirección de correo electrónico, acepta recibir el boletín de este sitio web."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Enviar"
|
other = "Enviar"
|
||||||
@@ -47,6 +53,9 @@ other = "Anterior"
|
|||||||
[next]
|
[next]
|
||||||
other = "Siguiente"
|
other = "Siguiente"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "Compartir en"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Mejorar esta página"
|
other = "Mejorar esta página"
|
||||||
|
|
||||||
@@ -77,29 +86,29 @@ other = "Ver más"
|
|||||||
[show_less]
|
[show_less]
|
||||||
other = "Muestra menos"
|
other = "Muestra menos"
|
||||||
|
|
||||||
# [responsibilities]
|
[responsibilities]
|
||||||
# other = "Responsibilities:"
|
other = "Responsabilidades:"
|
||||||
|
|
||||||
# [present]
|
[present]
|
||||||
# other = "Present"
|
other = "Presente"
|
||||||
|
|
||||||
# [comments_javascript]
|
[comments_javascript]
|
||||||
# other = "Please enable JavaScript to view the"
|
other = "Por favor, activa JavaScript para ver el"
|
||||||
|
|
||||||
# [comments_by]
|
[comments_by]
|
||||||
# other = "comments powered by"
|
other = "comentarios cortesía de"
|
||||||
|
|
||||||
# [read]
|
[read]
|
||||||
# other = "Read"
|
other = "Leer"
|
||||||
|
|
||||||
# [project_star]
|
[project_star]
|
||||||
# other = "Star"
|
other = "Favorito"
|
||||||
|
|
||||||
# [project_details]
|
[project_details]
|
||||||
# other = "Details"
|
other = "Detalles"
|
||||||
|
|
||||||
# [err_404]
|
[err_404]
|
||||||
# other = "The page you are looking for is not there yet."
|
other = "La página que estás buscando no está aquí (todavía)"
|
||||||
|
|
||||||
[more]
|
[more]
|
||||||
other = "Más"
|
other = "Más"
|
||||||
@@ -112,3 +121,6 @@ other = "Notas"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Aviso de responsabilidad"
|
other = "Aviso de responsabilidad"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Búsqueda"
|
||||||
|
|||||||
+31
-19
@@ -3,16 +3,22 @@
|
|||||||
other = "Accueil"
|
other = "Accueil"
|
||||||
|
|
||||||
[posts]
|
[posts]
|
||||||
other = "Des postes"
|
other = "Articles"
|
||||||
|
|
||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Table des matières"
|
other = "Table des matières"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Mots clés"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Catégories"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "chez"
|
other = "chez"
|
||||||
|
|
||||||
[resume]
|
[resume]
|
||||||
other = "Mon Curriculum vitæ"
|
other = "Mon Curriculum Vitæ"
|
||||||
|
|
||||||
[navigation]
|
[navigation]
|
||||||
other = "Navigation"
|
other = "Navigation"
|
||||||
@@ -33,7 +39,7 @@ other = "Restez à jour par e-mail"
|
|||||||
other = "Entrez une adresse e-mail"
|
other = "Entrez une adresse e-mail"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Nous ne partagerons jamais votre courriel avec quelqu'un d'autre."
|
other = "En renseignant votre adresse e-mail, vous acceptez de recevoir la newsletter de ce site."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Envoyer"
|
other = "Envoyer"
|
||||||
@@ -47,6 +53,9 @@ other = "Précédent"
|
|||||||
[next]
|
[next]
|
||||||
other = "Suivant"
|
other = "Suivant"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "Partager sur"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Améliorez cette page"
|
other = "Améliorez cette page"
|
||||||
|
|
||||||
@@ -57,10 +66,10 @@ other = "sur"
|
|||||||
other = "Publications"
|
other = "Publications"
|
||||||
|
|
||||||
[taken_courses]
|
[taken_courses]
|
||||||
other = "Taken Courses"
|
other = "Cours suivis"
|
||||||
|
|
||||||
[course_name]
|
[course_name]
|
||||||
other = "Cours suivis"
|
other = "Intitulé du cours"
|
||||||
|
|
||||||
[total_credit]
|
[total_credit]
|
||||||
other = "Crédit total"
|
other = "Crédit total"
|
||||||
@@ -77,29 +86,29 @@ other = "En savoir plus"
|
|||||||
[show_less]
|
[show_less]
|
||||||
other = "Montrer moins"
|
other = "Montrer moins"
|
||||||
|
|
||||||
# [responsibilities]
|
[responsibilities]
|
||||||
# other = "Responsibilities:"
|
other = "Responsabilitiés :"
|
||||||
|
|
||||||
# [present]
|
[present]
|
||||||
# other = "Present"
|
other = "Aujourd'hui"
|
||||||
|
|
||||||
# [comments_javascript]
|
[comments_javascript]
|
||||||
# other = "Please enable JavaScript to view the"
|
other = "Merci d'activer JavaScript pour voir le"
|
||||||
|
|
||||||
# [comments_by]
|
[comments_by]
|
||||||
# other = "comments powered by"
|
other = "commentaires fournis par"
|
||||||
|
|
||||||
# [read]
|
[read]
|
||||||
# other = "Read"
|
other = "Lire"
|
||||||
|
|
||||||
# [project_star]
|
# [project_star]
|
||||||
# other = "Star"
|
# other = "Star"
|
||||||
|
|
||||||
# [project_details]
|
[project_details]
|
||||||
# other = "Details"
|
other = "Détails"
|
||||||
|
|
||||||
# [err_404]
|
[err_404]
|
||||||
# other = "The page you are looking for is not there yet."
|
other = "La page que vous recherchez n'est pas disponible."
|
||||||
|
|
||||||
[more]
|
[more]
|
||||||
other = "Suite"
|
other = "Suite"
|
||||||
@@ -112,3 +121,6 @@ other = "Remarques"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Avis de responsabilité"
|
other = "Avis de responsabilité"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Chercher"
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "पोस्ट"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "विषयसूची"
|
other = "विषयसूची"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "टैग"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "श्रेणियाँ"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "अन्य"
|
other = "अन्य"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "ईमेल अधिसूचना से अवगत रहें"
|
|||||||
other = "ईमेल दर्ज करें"
|
other = "ईमेल दर्ज करें"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "हम आपके ईमेल को कभी भी किसी और के साथ साझा नहीं करेंगे"
|
other = "अपना ईमेल पता दर्ज करके, आप इस वेबसाइट का न्यूज़लेटर प्राप्त करने के लिए सहमत होते हैं।"
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "जमा करें"
|
other = "जमा करें"
|
||||||
@@ -47,6 +53,9 @@ other = "पिछला"
|
|||||||
[next]
|
[next]
|
||||||
other = "आगे"
|
other = "आगे"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "इस पृष्ठ को सुधारें"
|
other = "इस पृष्ठ को सुधारें"
|
||||||
|
|
||||||
@@ -112,3 +121,6 @@ other = "टिप्पणियाँ"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "दायित्व सूचना"
|
other = "दायित्व सूचना"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "खोज"
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "Artikel"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Daftar Isi"
|
other = "Daftar Isi"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Tags"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Kategori"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "at"
|
other = "at"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "Ingin selalu update dengan notifikasi email"
|
|||||||
other = "Masukkan email"
|
other = "Masukkan email"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Kami tidak pernah berbagi data email dengan siapapun."
|
other = "Dengan memasukkan alamat email Anda, Anda setuju untuk menerima buletin situs web ini."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Kirim"
|
other = "Kirim"
|
||||||
@@ -47,6 +53,9 @@ other = "Sebelumnya"
|
|||||||
[next]
|
[next]
|
||||||
other = "Lanjut"
|
other = "Lanjut"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Perbaiki halaman ini"
|
other = "Perbaiki halaman ini"
|
||||||
|
|
||||||
@@ -112,3 +121,6 @@ other = "Catatan"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Pemberitahuan Kewajiban"
|
other = "Pemberitahuan Kewajiban"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Mencari"
|
||||||
|
|||||||
+14
-2
@@ -8,6 +8,12 @@ other = "Post"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Contenuti"
|
other = "Contenuti"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Tags"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Categorie"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "presso"
|
other = "presso"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "Resta aggiornato con la notifica di email"
|
|||||||
other = "Inserisci l'email"
|
other = "Inserisci l'email"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Non condivideremo l'email con altri."
|
other = "Inserendo il tuo indirizzo email, accetti di ricevere la newsletter di questo sito."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Invia"
|
other = "Invia"
|
||||||
@@ -47,6 +53,9 @@ other = "Precedente"
|
|||||||
[next]
|
[next]
|
||||||
other = "Successivo"
|
other = "Successivo"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Migliora questa pagina"
|
other = "Migliora questa pagina"
|
||||||
|
|
||||||
@@ -105,10 +114,13 @@ other = "Mostra meno"
|
|||||||
other = "Di più"
|
other = "Di più"
|
||||||
|
|
||||||
[view_certificate]
|
[view_certificate]
|
||||||
other = "Féach ar an Teastas"
|
other = "Vedi certificato"
|
||||||
|
|
||||||
[notes]
|
[notes]
|
||||||
other = "Appunti"
|
other = "Appunti"
|
||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Avviso di responsabilità"
|
other = "Avviso di responsabilità"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Ricerca"
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "記事"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "目次"
|
other = "目次"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "タグ"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "カテゴリ"
|
||||||
|
|
||||||
[resume]
|
[resume]
|
||||||
other = "職務経歴書"
|
other = "職務経歴書"
|
||||||
|
|
||||||
@@ -30,7 +36,7 @@ other = "メールで最新情報を受け取る"
|
|||||||
other = "ここにメールアドレスを入力"
|
other = "ここにメールアドレスを入力"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "ご入力いただいたメールアドレスが他人に開示されることは決してございません。"
|
other = "メールアドレスを入力すると、このウェブサイトのニュースレターを受け取ることに同意したことになります。"
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "登録"
|
other = "登録"
|
||||||
@@ -44,6 +50,9 @@ other = "前"
|
|||||||
[next]
|
[next]
|
||||||
other = "次"
|
other = "次"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "編集リクエストを送る"
|
other = "編集リクエストを送る"
|
||||||
|
|
||||||
@@ -109,3 +118,6 @@ other = "ノート"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "責任通知"
|
other = "責任通知"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "検索"
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "게시글"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "목차"
|
other = "목차"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "태그"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "카테고리"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "at"
|
other = "at"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "이메일 알림으로 최신 상태를 유지해보세요"
|
|||||||
other = "이메일을 입력하세요"
|
other = "이메일을 입력하세요"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "이메일을 다른 목적으로 사용하지 않습니다."
|
other = "이메일 주소를 입력하면이 웹 사이트의 뉴스 레터 수신에 동의하는 것입니다."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "제출"
|
other = "제출"
|
||||||
@@ -47,6 +53,9 @@ other = "이전"
|
|||||||
[next]
|
[next]
|
||||||
other = "다음"
|
other = "다음"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "이 페이지를 개선"
|
other = "이 페이지를 개선"
|
||||||
|
|
||||||
@@ -112,3 +121,6 @@ other = "메모"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "책임 고지"
|
other = "책임 고지"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "찾다"
|
||||||
|
|||||||
+13
-2
@@ -7,6 +7,12 @@ other = "Beiträge"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Inhaltsverzeichnis"
|
other = "Inhaltsverzeichnis"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Tags"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Categorieën"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "bei"
|
other = "bei"
|
||||||
|
|
||||||
@@ -32,7 +38,7 @@ other = "Mit dem Newsletter auf dem neuesten Stand bleiben"
|
|||||||
other = "E-Mail-Adresse eingeben"
|
other = "E-Mail-Adresse eingeben"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Wir werden Ihre E-Mail-Adresse nicht an Dritte weitergeben."
|
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 = "Absenden"
|
||||||
@@ -46,6 +52,9 @@ other = "Vorherige"
|
|||||||
[next]
|
[next]
|
||||||
other = "Nächste"
|
other = "Nächste"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Diese Seite verbessern"
|
other = "Diese Seite verbessern"
|
||||||
|
|
||||||
@@ -110,4 +119,6 @@ other = "Bekijk certificaat"
|
|||||||
other = "Opmerkingen"
|
other = "Opmerkingen"
|
||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Haftungshinweis"
|
other = "Haftungshinweis"
|
||||||
|
[search]
|
||||||
|
other = "Zoekopdracht"
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "Посты"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Оглавление"
|
other = "Оглавление"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Теги"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Категории"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "в"
|
other = "в"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "Подпишитесь на уведомления, чтобы не п
|
|||||||
other = "Введите email"
|
other = "Введите email"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Ваши данные в безопасности"
|
other = "Вводя свой адрес электронной почты, вы соглашаетесь получать информационный бюллетень этого веб-сайта."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Подтвердить"
|
other = "Подтвердить"
|
||||||
@@ -47,6 +53,9 @@ other = "Предыдущий"
|
|||||||
[next]
|
[next]
|
||||||
other = "Следующий"
|
other = "Следующий"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Улучшить эту страницу"
|
other = "Улучшить эту страницу"
|
||||||
|
|
||||||
@@ -112,3 +121,6 @@ other = "Ноты"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Уведомление об ответственности"
|
other = "Уведомление об ответственности"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Поиск"
|
||||||
|
|||||||
+13
-1
@@ -8,6 +8,12 @@ other = "Bài viết"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "Mục lục"
|
other = "Mục lục"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "Thẻ"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "Thể loại"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "tại"
|
other = "tại"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "Nhận email cập nhật thông tin"
|
|||||||
other = "Nhập email"
|
other = "Nhập email"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "Chúng tôi sẽ không bao giờ chia sẻ email của bạn."
|
other = "Bằng cách nhập địa chỉ email của bạn, bạn đồng ý nhận bản tin của trang web này."
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "Gửi"
|
other = "Gửi"
|
||||||
@@ -47,6 +53,9 @@ other = "Trước"
|
|||||||
[next]
|
[next]
|
||||||
other = "Tiếp theo"
|
other = "Tiếp theo"
|
||||||
|
|
||||||
|
# [share_on]
|
||||||
|
# other = "Share on"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "Cải thiện trang này"
|
other = "Cải thiện trang này"
|
||||||
|
|
||||||
@@ -112,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"
|
||||||
|
|||||||
@@ -8,6 +8,12 @@ other = "博文"
|
|||||||
[toc_heading]
|
[toc_heading]
|
||||||
other = "目录"
|
other = "目录"
|
||||||
|
|
||||||
|
[tags]
|
||||||
|
other = "标签"
|
||||||
|
|
||||||
|
[categories]
|
||||||
|
other = "类别"
|
||||||
|
|
||||||
[at]
|
[at]
|
||||||
other = "at"
|
other = "at"
|
||||||
|
|
||||||
@@ -33,7 +39,7 @@ other = "通过电子邮件接收最新信息"
|
|||||||
other = "填入 E-mail"
|
other = "填入 E-mail"
|
||||||
|
|
||||||
[newsletter_warning]
|
[newsletter_warning]
|
||||||
other = "我们绝不会与任何人共享您的电子邮件。"
|
other = "输入您的电子邮件地址,即表示您同意接收本网站的时事通讯"
|
||||||
|
|
||||||
[submit]
|
[submit]
|
||||||
other = "提交"
|
other = "提交"
|
||||||
@@ -47,6 +53,9 @@ other = "上一篇"
|
|||||||
[next]
|
[next]
|
||||||
other = "下一篇"
|
other = "下一篇"
|
||||||
|
|
||||||
|
[share_on]
|
||||||
|
other = "分享"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "改善此页面"
|
other = "改善此页面"
|
||||||
|
|
||||||
@@ -77,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 = "评论支持 by"
|
||||||
|
|
||||||
# [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 = "更多的"
|
||||||
@@ -111,4 +120,7 @@ other = "查看证书"
|
|||||||
other = "笔记"
|
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 = "首頁"
|
||||||
|
|
||||||
|
[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 = "Powered by"
|
||||||
|
|
||||||
|
[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 = "Responsibilities:"
|
||||||
|
|
||||||
|
# [present]
|
||||||
|
# other = "Present"
|
||||||
|
|
||||||
|
# [comments_javascript]
|
||||||
|
# other = "Please enable JavaScript to view the"
|
||||||
|
|
||||||
|
# [comments_by]
|
||||||
|
# other = "comments powered by"
|
||||||
|
|
||||||
|
# [read]
|
||||||
|
# other = "Read"
|
||||||
|
|
||||||
|
# [project_star]
|
||||||
|
# other = "Star"
|
||||||
|
|
||||||
|
# [project_details]
|
||||||
|
# other = "Details"
|
||||||
|
|
||||||
|
# [err_404]
|
||||||
|
# other = "The page you are looking for is not there yet."
|
||||||
|
|
||||||
|
[more]
|
||||||
|
other = "更多的"
|
||||||
|
|
||||||
|
[view_certificate]
|
||||||
|
other = "查看證書"
|
||||||
|
|
||||||
|
[notes]
|
||||||
|
other = "筆記"
|
||||||
|
|
||||||
|
[disclaimer_text]
|
||||||
|
other = "免責聲明"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "搜索"
|
||||||
@@ -9,10 +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" . -}}
|
||||||
{{ template "_internal/google_analytics_async.html" . }}
|
|
||||||
{{ end }}
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
|
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
|
||||||
@@ -39,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>
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
{{- $pctx := . -}}
|
||||||
|
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
|
||||||
|
{{- $pages := slice -}}
|
||||||
|
{{- if $.IsHome -}}
|
||||||
|
{{- $pages = $pctx.RegularPages -}}
|
||||||
|
{{- else if $.IsSection -}}
|
||||||
|
{{- $pages = $pctx.RegularPagesRecursive -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $pages = $pctx.RegularPagesRecursive -}}
|
||||||
|
{{- 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">
|
||||||
|
|||||||
@@ -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">
|
||||||
@@ -48,35 +48,137 @@
|
|||||||
<div class="author-profile ml-auto align-self-lg-center">
|
<div class="author-profile ml-auto align-self-lg-center">
|
||||||
<img class="rounded-circle" src='{{ partial "helpers/get-author-image.html" . }}' alt="Author Image">
|
<img class="rounded-circle" src='{{ partial "helpers/get-author-image.html" . }}' alt="Author Image">
|
||||||
<h5 class="author-name">{{ partial "helpers/get-author-name.html" . }}</h5>
|
<h5 class="author-name">{{ partial "helpers/get-author-name.html" . }}</h5>
|
||||||
<p>{{ .Page.Date.Format "January 2, 2006" }}</p>
|
<p>{{ .Page.Date | time.Format ":date_full" }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h1>{{ .Page.Title }}</h1>
|
<h1>{{ .Page.Title }}</h1>
|
||||||
</div>
|
</div>
|
||||||
|
{{ if site.Params.enableTags }}
|
||||||
|
<div class="taxonomy-terms">
|
||||||
|
<ul>
|
||||||
|
{{ range .Params.tags }}
|
||||||
|
{{ $url:= printf "tags/%s" . }}
|
||||||
|
<li class="rounded"><a href="{{ $url | urlize | relLangURL }}" class="btn, btn-sm">{{ . }}</a></li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
<div class="post-content" id="post-content">
|
<div class="post-content" id="post-content">
|
||||||
{{ .Page.Content }}
|
{{ .Page.Content }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Share or Contribute -->
|
||||||
|
<div class="row pl-3 pr-3">
|
||||||
|
<!--Social Media Share Buttons-->
|
||||||
|
<div class="col-md-6 share-buttons">
|
||||||
|
{{ if site.Params.features.blog.shareButtons }}
|
||||||
|
<strong>{{ i18n "share_on" }}:</strong>
|
||||||
|
{{ if site.Params.features.blog.shareButtons.facebook }}
|
||||||
|
<a class="btn btn-sm facebook-btn" href="https://www.facebook.com/sharer.php?u={{ .Permalink }}" target="_blank">
|
||||||
|
<i class="fab fa-facebook"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.twitter }}
|
||||||
|
<a class="btn btn-sm twitter-btn" href="https://twitter.com/share?url={{ .Permalink }}&text={{ .Title }}&via={{- site.Title -}}" target="_blank">
|
||||||
|
<i class="fab fa-twitter"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.reddit }}
|
||||||
|
<a class="btn btn-sm reddit-btn" href="https://reddit.com/submit?url={{ .Permalink }}&title={{ .Title }}" target="_blank">
|
||||||
|
<i class="fab fa-reddit"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.tumblr }}
|
||||||
|
<a class="btn btn-sm tumblr-btn" href="https://www.tumblr.com/share/link?url={{ .Permalink }}&name={{ .Title }}{{- with .Params.description -}}&description={{- . -}}{{- end -}}" target="_blank">
|
||||||
|
<i class="fab fa-tumblr"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.pocket }}
|
||||||
|
<a class="btn btn-sm pocket-btn" href="https://getpocket.com/save?url={{ .Permalink }}&title={{ .Title }}" target="_blank">
|
||||||
|
<i class="fab fa-get-pocket"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.linkedin }}
|
||||||
|
<a class="btn btn-sm linkedin-btn" href="https://www.linkedin.com/shareArticle?url={{ .Permalink }}&title={{ .Title }}" target="_blank">
|
||||||
|
<i class="fab fa-linkedin"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.diaspora }}
|
||||||
|
<a class="btn btn-sm diaspora-btn" href="https://share.diasporafoundation.org/?title={{ .Title }}&url={{ .Permalink }}" rel="nofollow" target="_blank">
|
||||||
|
<i class="fab fa-diaspora"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.mastodon }}
|
||||||
|
<a class="btn btn-sm mastodon-btn" href="https://mastodon.social/share?text={{ .Title }} - {{ .Permalink }}" target="_blank">
|
||||||
|
<i class="fab fa-mastodon"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.whatsapp }}
|
||||||
|
<a class="btn btn-sm whatsapp-btn" href="https://api.whatsapp.com/send?text={{ .Title }} {{ .Permalink }}" target="_blank">
|
||||||
|
<i class="fab fa-whatsapp"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ if site.Params.features.blog.shareButtons.email }}
|
||||||
|
<a class="btn btn-sm email-btn" href="mailto:?subject={{ .Title }}&body={{ .Permalink }}" target="_blank">
|
||||||
|
<i class="fas fa-envelope-open-text"></i>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--- Improve this page button --->
|
<!--- Improve this page button --->
|
||||||
{{ if site.Params.GitRepo }}
|
{{ if site.Params.GitRepo }}
|
||||||
<div class="btn-improve-page">
|
{{ if site.Params.GitBranch }}
|
||||||
<a href="{{ site.Params.GitRepo }}/edit/{{ site.Params.GitBranch }}/content/{{ .File.Path }}" title="{{ i18n "improve_this_page" }}" target="_blank" rel="noopener">
|
{{ .Scratch.Set "GitBranch" site.Params.GitBranch }}
|
||||||
|
{{ else }}
|
||||||
|
{{ .Scratch.Set "GitBranch" "main" }}
|
||||||
|
{{ end }}
|
||||||
|
<div class="col-md-6 btn-improve-page">
|
||||||
|
{{ if ( eq site.Params.GitForge "gitlab" ) }}
|
||||||
|
<a href="{{ site.Params.GitRepo }}/-/edit/{{ .Scratch.Get "GitBranch" }}/{{ .File.Path }}" title="{{ i18n "improve_this_page" }}" target="_blank" rel="noopener">
|
||||||
|
{{ else if ( eq site.Params.GitForge "gitea" ) }}
|
||||||
|
<a href="{{ site.Params.GitRepo }}/_edit/{{ .Scratch.Get "GitBranch" }}/content/{{ .File.Path }}" title="{{ i18n "improve_this_page" }}" target="_blank" rel="noopener">
|
||||||
|
{{ else }} <!--- Make Github-style the default -->
|
||||||
|
<a href="{{ site.Params.GitRepo }}/edit/{{ .Scratch.Get "GitBranch" }}/content/{{ .File.Path }}" title="{{ i18n "improve_this_page" }}" target="_blank" rel="noopener">
|
||||||
|
{{ end }}
|
||||||
<i class="fas fa-code-branch"></i>
|
<i class="fas fa-code-branch"></i>
|
||||||
{{ i18n "improve_this_page" }}
|
{{ i18n "improve_this_page" }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
<!---Next and Previous Navigator -->
|
|
||||||
|
|
||||||
|
<!---Next and Previous Navigator -->
|
||||||
<hr />
|
<hr />
|
||||||
{{ partial "navigators/next-prev-navigator.html" . }}
|
{{ partial "navigators/next-prev-navigator.html" . }}
|
||||||
<hr />
|
<hr />
|
||||||
<!-- Add Disqus forum -->
|
|
||||||
{{ if site.DisqusShortname }}
|
<!----- Add comment support ----->
|
||||||
{{ partial "disqus.html" . }}
|
{{ with site.Params.features.comment }}
|
||||||
|
{{ if .enable }}
|
||||||
|
<!-- Add Disqus forum -->
|
||||||
|
{{ if .disqus.shortName }}
|
||||||
|
{{ partial "disqus.html" . }}
|
||||||
|
<!-- Add valine -->
|
||||||
|
{{ else if .valine }}
|
||||||
|
{{ partial "valine.html" . }}
|
||||||
|
<!-- Add utteranc -->
|
||||||
|
{{ else if .utteranc }}
|
||||||
|
{{ partial "utteranc.html" . }}
|
||||||
|
<!-- Add giscus -->
|
||||||
|
{{ else if .giscus }}
|
||||||
|
{{ partial "giscus.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
<!-- Keep backward compatibility with old config.yaml -->
|
||||||
|
{{ if site.DisqusShortname }}
|
||||||
|
{{ partial "disqus.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -108,7 +210,15 @@
|
|||||||
<script>
|
<script>
|
||||||
hljs.initHighlightingOnLoad();
|
hljs.initHighlightingOnLoad();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!-------------- Enable Math support for this page ---------------->
|
||||||
{{ if .Params.math }}
|
{{ if .Params.math }}
|
||||||
{{ partial "math.html" . }}
|
{{ partial "math.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
<!-------------- Enable mermaid support for this page ---------------->
|
||||||
|
{{ if .Params.mermaid }}
|
||||||
|
{{ partial "mermaid.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{{ define "header" }}
|
||||||
|
<link rel="stylesheet" href="{{ "/css/layouts/list.css" | relURL }}">
|
||||||
|
<link rel="stylesheet" href="{{ "/css/navigators/sidebar.css" | relURL}}">
|
||||||
|
<!--================= custom style overrides =========================-->
|
||||||
|
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
|
||||||
|
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "navbar" }}
|
||||||
|
{{ partial "navigators/navbar-2.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "sidebar" }}
|
||||||
|
{{ $homePage:="#" }}
|
||||||
|
{{ if site.IsMultiLingual }}
|
||||||
|
{{ $homePage = (path.Join (cond ( eq .Language.Lang "en") "" .Language.Lang) .Type) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<section class="sidebar-section" id="sidebar-section">
|
||||||
|
<div class="sidebar-holder">
|
||||||
|
<div class="sidebar" id="sidebar">
|
||||||
|
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
|
||||||
|
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
|
||||||
|
</form>
|
||||||
|
<div class="sidebar-tree">
|
||||||
|
<ul class="tree" id="tree">
|
||||||
|
<li id="list-heading"><a href="{{ .Type | relLangURL }}" data-filter="all">{{ i18n .Type }}</a></li>
|
||||||
|
<div class="subtree taxonomy-terms">
|
||||||
|
{{ $context := . }}
|
||||||
|
{{ partial "navigators/taxonomies.html" (dict "context" $context "taxo" "categories" "title" ( humanize "categories" ) ) }}
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "content" }}
|
||||||
|
<section class="content-section" id="content-section">
|
||||||
|
<div class="content container-fluid" id="content">
|
||||||
|
<div class="container-fluid post-card-holder" id="post-card-holder">
|
||||||
|
{{ $posts := where .RegularPagesRecursive "Layout" "!=" "search" }}
|
||||||
|
{{ $paginator := .Paginate $posts 12 }}
|
||||||
|
{{ range $paginator.Pages }}
|
||||||
|
{{ if .Layout }}
|
||||||
|
{{/* ignore the search.md file*/}}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "cards/post.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="paginator">
|
||||||
|
{{ template "_internal/pagination.html" . }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "scripts" }}
|
||||||
|
<script src="{{ "/js/list.js" | relURL }}"></script>
|
||||||
|
{{ end }}
|
||||||
+6
-4
@@ -29,10 +29,8 @@
|
|||||||
<!--================= custom style overrides =========================-->
|
<!--================= custom style overrides =========================-->
|
||||||
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
|
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
|
||||||
|
|
||||||
<!-- Add Google Analytics if enabled in configuration -->
|
<!--================= add analytics if enabled =========================-->
|
||||||
{{ if site.GoogleAnalytics }}
|
{{- partial "analytics.html" . -}}
|
||||||
{{ template "_internal/google_analytics_async.html" . }}
|
|
||||||
{{ end }}
|
|
||||||
</head>
|
</head>
|
||||||
<body data-spy="scroll" data-target="#top-navbar" data-offset="100">
|
<body data-spy="scroll" data-target="#top-navbar" data-offset="100">
|
||||||
|
|
||||||
@@ -81,5 +79,9 @@
|
|||||||
<script src="{{ "/js/github-button.js" | relURL }}"></script>
|
<script src="{{ "/js/github-button.js" | relURL }}"></script>
|
||||||
<script src="{{ "/js/home.js" | relURL }}"></script>
|
<script src="{{ "/js/home.js" | relURL }}"></script>
|
||||||
<script src="{{ "/js/jquery.filterizr.min.js" | relURL }}"></script>
|
<script src="{{ "/js/jquery.filterizr.min.js" | relURL }}"></script>
|
||||||
|
|
||||||
|
<!------ ADD SUPPORT LINKS -------->
|
||||||
|
{{- partial "misc/support.html" . -}}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -21,7 +21,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">
|
||||||
|
|||||||
@@ -21,7 +21,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">
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<!-- Add Analytics if enabled in configuration -->
|
||||||
|
{{ with site.Params.features.analytics }}
|
||||||
|
{{ if .enabled }}
|
||||||
|
<!-- Google Analytics -->
|
||||||
|
{{ with .google }}
|
||||||
|
{{ $privacyConfig:= dict (slice "Site" "Config" "Privacy" "GoogleAnalytics") $.Site.Config.Privacy.GoogleAnalytics }}
|
||||||
|
{{ $analyticsConfig := dict (slice "Site" "GoogleAnalytics") .id }}
|
||||||
|
{{ template "_internal/google_analytics.html" (merge $privacyConfig $analyticsConfig) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Counter.dev -->
|
||||||
|
{{ with .counterDev }}
|
||||||
|
<script>
|
||||||
|
if (
|
||||||
|
!sessionStorage.getItem("_swa") &&
|
||||||
|
document.referrer.indexOf(location.protocol + "//" + location.host) !== 0
|
||||||
|
) {
|
||||||
|
fetch(
|
||||||
|
"https://counter.dev/track?" +
|
||||||
|
new URLSearchParams({
|
||||||
|
referrer: document.referrer,
|
||||||
|
screen: screen.width + "x" + screen.height,
|
||||||
|
user: "{{ .id }}",
|
||||||
|
utcoffset: "1",
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
sessionStorage.setItem("_swa", "1");
|
||||||
|
</script>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- GoatCounter -->
|
||||||
|
{{ with .goatCounter }}
|
||||||
|
<script
|
||||||
|
data-goatcounter="https://{{ .code }}.goatcounter.com/count"
|
||||||
|
async
|
||||||
|
src="//gc.zgo.at/count.js"
|
||||||
|
></script>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Keep backwards compatibility and consistency with HUGO defaults -->
|
||||||
|
{{ if site.GoogleAnalytics }}
|
||||||
|
{{ template "_internal/google_analytics.html" . }}
|
||||||
|
{{ end }}
|
||||||
@@ -11,7 +11,10 @@
|
|||||||
|
|
||||||
{{ $logoImage:= resources.Get .logo}}
|
{{ $logoImage:= resources.Get .logo}}
|
||||||
{{ if $logoImage }}
|
{{ if $logoImage }}
|
||||||
{{ $logoImage := $logoImage.Fit "24x24" }}
|
{{/* svg don't support "Fit" operation */}}
|
||||||
|
{{ if ne $logoImage.MediaType.SubType "svg" }}
|
||||||
|
{{ $logoImage = $logoImage.Fit "24x24" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<img class="card-img-xs" src="{{ $logoImage.RelPermalink }}" alt="{{ .name }}" />
|
<img class="card-img-xs" src="{{ $logoImage.RelPermalink }}" alt="{{ .name }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -4,15 +4,19 @@
|
|||||||
<div class="card-head d-flex">
|
<div class="card-head d-flex">
|
||||||
{{ if .logo }}
|
{{ if .logo }}
|
||||||
{{ $logoImage := resources.Get .logo }}
|
{{ $logoImage := resources.Get .logo }}
|
||||||
|
|
||||||
{{/* svg don't support "Fit" operation */}}
|
{{/* svg don't support "Fit" operation */}}
|
||||||
{{ if ne $logoImage.MediaType.SubType "svg" }}
|
{{ if ne $logoImage.MediaType.SubType "svg" }}
|
||||||
{{ $logoImage := $logoImage.Fit "24x24" }}
|
{{ $logoImage = $logoImage.Fit "24x24" }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<img class="card-img-xs" src="{{ $logoImage.RelPermalink }}" alt="{{ .name }}" />
|
<img class="card-img-xs" src="{{ $logoImage.RelPermalink }}" alt="{{ .name }}" />
|
||||||
|
<h5 class="card-title">{{ .name }}</h5>
|
||||||
|
{{ else if .icon }}
|
||||||
|
{{ $iconName := .icon }}
|
||||||
|
<h5 class="card-title"><span class="{{ $iconName }}"> {{ .name }}</span></h5>
|
||||||
|
{{ else }}
|
||||||
|
<h5 class="card-title">{{ .name }}</h5>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<h5 class="card-title">{{ .name }}</h5>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p class="card-text">{{ .summary | markdownify }}</p>
|
<p class="card-text">{{ .summary | markdownify }}</p>
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
{{ $disqusShortName := site.DisqusShortname }}
|
||||||
|
{{ if site.Params.features.comment.disqus.shortName }}
|
||||||
|
{{ $disqusShortName = site.Params.features.comment.disqus.shortName }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<div id="disqus_thread"></div>
|
<div id="disqus_thread"></div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
(function () {
|
(function () {
|
||||||
@@ -8,7 +13,7 @@
|
|||||||
var dsq = document.createElement("script");
|
var dsq = document.createElement("script");
|
||||||
dsq.type = "text/javascript";
|
dsq.type = "text/javascript";
|
||||||
dsq.async = true;
|
dsq.async = true;
|
||||||
var disqus_shortname = "{{ site.DisqusShortname }}";
|
var disqus_shortname = "{{ $disqusShortName }}";
|
||||||
dsq.src = "//" + disqus_shortname + ".disqus.com/embed.js";
|
dsq.src = "//" + disqus_shortname + ".disqus.com/embed.js";
|
||||||
(
|
(
|
||||||
document.getElementsByTagName("head")[0] ||
|
document.getElementsByTagName("head")[0] ||
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{{/* variables for enabling/disabling parts of the footer */}}
|
{{/* variables for enabling/disabling parts of the footer */}}
|
||||||
{{ $footerEnabled := site.Params.footer.enable | default true }}
|
{{ $footerEnabled := site.Params.footer.enable | default true }}
|
||||||
{{ $navigationEnabled := site.Params.footer.navigation.enable | default true }}
|
{{ $navigationEnabled := site.Params.footer.navigation.enable | default true }}
|
||||||
|
{{ $customMenusEnabled := site.Params.footer.navigation.customMenus | default true }}
|
||||||
{{ $contactMeEnabled := site.Params.footer.contactMe.enable | default true }}
|
{{ $contactMeEnabled := site.Params.footer.contactMe.enable | default true }}
|
||||||
{{ $newsletterEnabled := site.Params.footer.newsletter.enable | default true }}
|
{{ $newsletterEnabled := site.Params.footer.newsletter.enable | default true }}
|
||||||
{{ $credentialsEnabled := site.Params.footer.credentials.enable | default true }}
|
{{ $credentialsEnabled := site.Params.footer.credentials.enable | default true }}
|
||||||
@@ -26,7 +27,12 @@
|
|||||||
{{ $sections = (index site.Data site.Language.Lang).sections }}
|
{{ $sections = (index site.Data site.Language.Lang).sections }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ $copyrightNotice := "© 2021 Copyright."}}
|
{{ $customMenus := site.Params.customMenus }}
|
||||||
|
{{ if (index site.Data site.Language.Lang).site.customMenus }}
|
||||||
|
{{ $customMenus = (index site.Data site.Language.Lang).site.customMenus }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $copyrightNotice := now.Format "2006" | printf "© %s Copyright."}}
|
||||||
{{ if (index site.Data site.Language.Lang).site }}
|
{{ if (index site.Data site.Language.Lang).site }}
|
||||||
{{ $siteConfig := (index site.Data site.Language.Lang).site }}
|
{{ $siteConfig := (index site.Data site.Language.Lang).site }}
|
||||||
{{ if $siteConfig.copyright }}
|
{{ if $siteConfig.copyright }}
|
||||||
@@ -37,7 +43,7 @@
|
|||||||
|
|
||||||
{{ $disclaimer := "" }}
|
{{ $disclaimer := "" }}
|
||||||
{{ $siteConfig := (index site.Data site.Language.Lang).site }}
|
{{ $siteConfig := (index site.Data site.Language.Lang).site }}
|
||||||
{{ if $siteConfig.disclaimer }}
|
{{ if $siteConfig.disclaimer }}
|
||||||
{{ $disclaimer = $siteConfig.disclaimer }}
|
{{ $disclaimer = $siteConfig.disclaimer }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
@@ -58,7 +64,7 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $hugoLogo = $hugoLogo.RelPermalink}}
|
{{ $hugoLogo = $hugoLogo.RelPermalink}}
|
||||||
|
|
||||||
<footer class="container-fluid text-center align-content-center footer pb-2">
|
<footer id="footer" class="container-fluid text-center align-content-center footer pb-2">
|
||||||
<div class="container pt-5">
|
<div class="container pt-5">
|
||||||
<div class="row text-left">
|
<div class="row text-left">
|
||||||
{{ if $navigationEnabled }}
|
{{ if $navigationEnabled }}
|
||||||
@@ -73,10 +79,19 @@
|
|||||||
{{ $sectionID = .section.id }}
|
{{ $sectionID = .section.id }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="smooth-scroll" href="/#{{ $sectionID }}">{{ .section.name }}</a>
|
<a class="smooth-scroll" href="{{ "" | absLangURL }}#{{ $sectionID }}">{{ .section.name }}</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{ if $customMenusEnabled }}
|
||||||
|
{{ range $customMenus }}
|
||||||
|
{{ if .showOnFooter }}
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="smooth-scroll" href="{{ .url }}">{{ .name }}</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
@@ -86,7 +101,23 @@
|
|||||||
<h5>{{ i18n "contact_me" }}</h5>
|
<h5>{{ i18n "contact_me" }}</h5>
|
||||||
<ul>
|
<ul>
|
||||||
{{ range $key,$value:= $author.contactInfo }}
|
{{ range $key,$value:= $author.contactInfo }}
|
||||||
<li><span>{{ title $key }}: </span> <span>{{ $value }}</span></li>
|
{{ if (eq $key "email") }}
|
||||||
|
<li><a href={{ printf "mailto:%s" $value }} target="_blank" rel="noopener">
|
||||||
|
<span><i class="fas fa-envelope"></i></span> <span>{{ $value }}</span>
|
||||||
|
</a></li>
|
||||||
|
{{ else if (eq $key "phone") }}
|
||||||
|
<li><span><i class="fas fa-phone-alt"></i></span> <span>{{ $value }}</span></li>
|
||||||
|
{{ else if (eq $key "linkedin") }}
|
||||||
|
<li><a href={{ printf "https://www.linkedin.com/in/%s" $value }} target="_blank" rel="noopener">
|
||||||
|
<span><i class="fab fa-linkedin"></i></span> <span>{{ $author.name }}</span>
|
||||||
|
</a></li>
|
||||||
|
{{ else if (eq $key "github") }}
|
||||||
|
<li><a href={{ printf "https://github.com/%s" $value }} target="_blank" rel="noopener">
|
||||||
|
<span><i class="fab fa-github"></i></span> <span>{{ $value }}</span>
|
||||||
|
</a></li>
|
||||||
|
{{ else }}
|
||||||
|
<li><span>{{ title $key }}: </span> <span>{{ $value }}</span></li>
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -121,13 +152,14 @@
|
|||||||
<button type="submit" class="btn btn-info">{{ i18n "submit" }}</button>
|
<button type="submit" class="btn btn-info">{{ i18n "submit" }}</button>
|
||||||
</form>
|
</form>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<!-- a dummy form -->
|
<form method='post' action='https://blogtrottr.com'>
|
||||||
<form>
|
<div class="form-group">
|
||||||
<div class="form-group">
|
<input type='email' class="form-control" name='btr_email' placeholder="{{ i18n "newsletter_input_placeholder" }}"/><br />
|
||||||
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="{{ i18n "newsletter_input_placeholder" }}"/>
|
<input type='hidden' name='btr_url' value='{{ "" | absLangURL }}index.xml' />
|
||||||
<small id="emailHelp" class="form-text text-muted">{{ i18n "newsletter_warning" }}</small>
|
<input type='hidden' name='schedule_type' value='1' />
|
||||||
</div>
|
<small id="emailHelp" class="form-text text-muted">{{ i18n "newsletter_warning" }}</small>
|
||||||
<button type="submit" class="btn btn-info">{{ i18n "submit" }}</button>
|
<button type="submit" class="btn btn-info"> {{ i18n "submit" }} </button>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
@@ -137,7 +169,7 @@
|
|||||||
{{ if and $disclaimerEnabled $disclaimer}}
|
{{ if and $disclaimerEnabled $disclaimer}}
|
||||||
<hr />
|
<hr />
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p id="disclaimer"><strong>{{ i18n "disclaimer_text" }}:</strong> {{ $disclaimer }}</p>
|
<p id="disclaimer"><strong>{{ i18n "disclaimer_text" }}:</strong> {{ $disclaimer | markdownify }}</p>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $credentialsEnabled }}
|
{{ if $credentialsEnabled }}
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{{ $repo := site.Params.features.comment.giscus.repo }}
|
||||||
|
{{ $repoID := site.Params.features.comment.giscus.repoID }}
|
||||||
|
{{ $category := site.Params.features.comment.giscus.category | default "General" }}
|
||||||
|
{{ $categoryID := site.Params.features.comment.giscus.categoryID }}
|
||||||
|
{{ $theme := site.Params.features.comment.giscus.theme | default "light" }}
|
||||||
|
{{ $map := site.Params.features.comment.giscus.map | default "url" }}
|
||||||
|
{{ $reaction := site.Params.features.comment.giscus.reaction | default "1" }}
|
||||||
|
{{ $metadata := site.Params.features.comment.giscus.metadata | default "0" }}
|
||||||
|
{{ $inputPosition := site.Params.features.comment.giscus.inputPosition | default "bottom" }}
|
||||||
|
{{ $crossOrigin := site.Params.features.comment.giscus.crossOrigin | default "anonymous" }}
|
||||||
|
|
||||||
|
<script src="https://giscus.app/client.js"
|
||||||
|
data-repo="{{ $repo }}"
|
||||||
|
data-repo-id="{{ $repoID }}"
|
||||||
|
data-category="{{ $category }}"
|
||||||
|
data-category-id="{{ $categoryID }}"
|
||||||
|
data-mapping="{{ $map }}"
|
||||||
|
data-reactions-enabled="{{ $reaction }}"
|
||||||
|
data-emit-metadata="{{ $metadata }}"
|
||||||
|
data-input-position="{{ $inputPosition }}"
|
||||||
|
data-theme="{{ $theme }}"
|
||||||
|
data-lang="{{ .Site.Language.Lang }}"
|
||||||
|
crossorigin="{{ $crossOrigin }}"
|
||||||
|
async>
|
||||||
|
</script>
|
||||||
@@ -1,18 +1,3 @@
|
|||||||
{{/* default favicon */}}
|
|
||||||
{{ $favicon := "/images/favicon.png" }}
|
|
||||||
|
|
||||||
{{/* if favicon is provided in the config, then use that */}}
|
|
||||||
{{ if site.Params.logo.favicon }}
|
|
||||||
{{ $favicon = site.Params.logo.favicon }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{/* resize the favicon. don't resize svg because it is not supported */}}
|
|
||||||
{{ $favicon := resources.Get $favicon }}
|
|
||||||
{{ if and $favicon (ne $favicon.MediaType.SubType "svg") }}
|
|
||||||
{{ $favicon = $favicon.Resize "42x" }}
|
|
||||||
{{ end }}
|
|
||||||
{{ $favicon = $favicon.RelPermalink}}
|
|
||||||
|
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
@@ -24,9 +9,23 @@
|
|||||||
<link rel="stylesheet" href="{{ "/css/plyr.css" | relURL }}"/>
|
<link rel="stylesheet" href="{{ "/css/plyr.css" | relURL }}"/>
|
||||||
<link rel="stylesheet" href="{{ "/css/flag-icon.min.css" | relURL }}"/>
|
<link rel="stylesheet" href="{{ "/css/flag-icon.min.css" | relURL }}"/>
|
||||||
|
|
||||||
<!--=================== cdn ==============================-->
|
<!--=================== fonts ==============================-->
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Muli:wght@300;400;500;600" rel="stylesheet">
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Muli:wght@300;400;500;600">
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css" />
|
|
||||||
|
<!--=================== icons ==============================-->
|
||||||
|
<link rel="stylesheet" href="{{ "/fontawesome/css/all.min.css" | relURL }}"/>
|
||||||
|
|
||||||
<!--================= fab-icon =========================-->
|
<!--================= fab-icon =========================-->
|
||||||
<link rel="icon" type="image/png" href="{{ $favicon }}" />
|
{{/* add favicon only if the site author has provided the the favicon */}}
|
||||||
|
{{ if site.Params.logo.favicon }}
|
||||||
|
{{ $favicon := site.Params.logo.favicon }}
|
||||||
|
|
||||||
|
{{/* resize the favicon. don't resize svg because it is not supported */}}
|
||||||
|
{{ $favicon = resources.Get $favicon }}
|
||||||
|
{{ if and $favicon (ne $favicon.MediaType.SubType "svg") }}
|
||||||
|
{{ $favicon = $favicon.Resize "42x" }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $favicon = $favicon.RelPermalink}}
|
||||||
|
|
||||||
|
<link rel="icon" type="image/png" href="{{ $favicon }}" />
|
||||||
|
{{end}}
|
||||||
|
|||||||
@@ -18,12 +18,12 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* apply image processing. don't use "Fit" in svg because its not supported */}}
|
{{/* apply image processing. don't use "Fit" in svg or gif because its not supported */}}
|
||||||
{{ $authorImage:= resources.Get $authorImage}}
|
{{ $authorImage:= resources.Get $authorImage}}
|
||||||
{{ if and $authorImage (ne $authorImage.MediaType.SubType "svg") }}
|
|
||||||
{{ $authorImage := $authorImage.Fit "120x120" }}
|
{{ if and $authorImage (and (ne $authorImage.MediaType.SubType "svg") ( ne $authorImage.MediaType.SubType "gif")) }}
|
||||||
|
{{ $authorImage = $authorImage.Fit "120x120" }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* return the author image link */}}
|
{{/* return the author image link */}}
|
||||||
{{ return $authorImage.RelPermalink }}
|
{{ return $authorImage.RelPermalink }}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{{ $pages:= slice}}
|
||||||
|
{{ range . }}
|
||||||
|
{{ if .HasChildren }}
|
||||||
|
{{ $nestedPages:=partial "helpers/get-pages.html" .Children }}
|
||||||
|
{{ $pages = $pages | append $nestedPages }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $pages = $pages | append .Page }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ return $pages}}
|
||||||
@@ -1,5 +1,15 @@
|
|||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
|
<link rel="stylesheet" href="{{ "/katex/katex.min.css" | relURL }}">
|
||||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
|
<script type="text/javascript" defer src="{{ "/katex/katex.min.js" | relURL }}"></script>
|
||||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous"
|
<script type="text/javascript" defer src="{{ "/katex/auto-render.min.js" | relURL }}" onload="renderMathInElement(document.body);">
|
||||||
onload="renderMathInElement(document.body);">
|
renderMathInElement(
|
||||||
|
document.body,
|
||||||
|
{
|
||||||
|
delimiters: [
|
||||||
|
{left: "$$", right: "$$", display: true},
|
||||||
|
{left: "\\[", right: "\\]", display: true},
|
||||||
|
{left: "$", right: "$", display: false},
|
||||||
|
{left: "\\(", right: "\\)", display: false}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<script src="{{ "/js/mermaid-8.14.0.min.js" | relURL }}"></script>
|
||||||
|
<script>
|
||||||
|
mermaid.initialize({
|
||||||
|
startOnLoad:true
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
{{ if eq .type "certification" }}
|
{{ if eq .type "certification" }}
|
||||||
{{/* Verifiable certificate badge from https://www.credly.com */}}
|
{{/* Verifiable certificate badge from https://www.credly.com */}}
|
||||||
<div class="">
|
<div class="">
|
||||||
<a href="{{ .url }}" target="_blank" >
|
<a href="{{ .url }}" target="_blank" rel="noopener noreferrer">
|
||||||
<img src="{{ .badge }}" alt="{{ .name }}" />
|
<img src="{{ .badge }}" alt="{{ .name }}" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{{ with site.Params.features.support }}
|
||||||
|
{{ if .enabled }}
|
||||||
|
<!-- Enable Ko-Fi floating button -->
|
||||||
|
{{ with .kofi }}
|
||||||
|
<script src='https://storage.ko-fi.com/cdn/scripts/overlay-widget.js'></script>
|
||||||
|
<script>
|
||||||
|
kofiWidgetOverlay.draw('{{ .user }}', {
|
||||||
|
'type': 'floating-chat',
|
||||||
|
'floating-chat.donateButton.text': '{{ .text }}',
|
||||||
|
'floating-chat.donateButton.text-color': '{{ .textColor }}',
|
||||||
|
'floating-chat.donateButton.background-color': '{{ .backgroundColor }}',
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
@@ -6,14 +6,14 @@
|
|||||||
<div class="dropdown languageSelector">
|
<div class="dropdown languageSelector">
|
||||||
<a class="btn dropdown-toggle" href="#" id="languageSelector" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="btn dropdown-toggle" href="#" id="languageSelector" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
{{ $countryCode := partial "helpers/country-code.html" . }}
|
{{ $countryCode := partial "helpers/country-code.html" . }}
|
||||||
<img class="flag" src="https://www.countryflags.io/{{ $countryCode }}/flat/16.png" alt="{{ $countryCode }}">
|
<span class="flag-icon flag-icon-{{$countryCode}}"></span>
|
||||||
{{ site.Language.LanguageName }}
|
{{ site.Language.LanguageName }}
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu" aria-labelledby="languageSelector">
|
<div class="dropdown-menu" aria-labelledby="languageSelector">
|
||||||
{{ range .Translations }}
|
{{ range .Translations }}
|
||||||
<a class="dropdown-item nav-link languages-item" href="{{ path.Join "/" (cond (eq .Language.Lang "en") "" .Language.Lang) $pageURL }}">
|
<a class="dropdown-item nav-link languages-item" href="{{ path.Join "/" (cond (eq .Language.Lang "en") "" .Language.Lang) $pageURL }}">
|
||||||
{{ $countryCode := partial "helpers/country-code.html" . }}
|
{{ $countryCode := partial "helpers/country-code.html" . }}
|
||||||
<img class="flag" src="https://www.countryflags.io/{{ $countryCode }}/flat/24.png" alt="{{ $countryCode }}">
|
<span class="flag-icon flag-icon-{{$countryCode}}"></span>
|
||||||
{{ .Language.LanguageName }}
|
{{ .Language.LanguageName }}
|
||||||
</a>
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -1,28 +1,31 @@
|
|||||||
{{/* default logos */}}
|
{{/* by default, don't use any logo */}}
|
||||||
{{ $mainLogo := "/images/main-logo.png" }}
|
{{ $mainLogo := "" }}
|
||||||
{{ $invertedLogo := "/images/inverted-logo.png" }}
|
{{ $invertedLogo := "" }}
|
||||||
|
|
||||||
{{/* if custom logo has been provided in the config file, then use them */}}
|
{{/* if custom logo has been provided, use them */}}
|
||||||
{{ if site.Params.logo.main }}
|
{{ if site.Params.logo.main }}
|
||||||
{{ $mainLogo = site.Params.logo.main }}
|
{{ $mainLogo = site.Params.logo.main }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if site.Params.logo.inverted }}
|
{{ if site.Params.logo.inverted }}
|
||||||
{{ $invertedLogo = site.Params.logo.inverted }}
|
{{ $invertedLogo = site.Params.logo.inverted }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* resize the logos. don't resize svg because it is not supported */}}
|
{{/* resize the logos. don't resize svg because it is not supported */}}
|
||||||
{{ $mainLogo := resources.Get $mainLogo}}
|
{{ if $mainLogo }}
|
||||||
{{ if and $mainLogo (ne $mainLogo.MediaType.SubType "svg") }}
|
{{ $mainLogo = resources.Get $mainLogo}}
|
||||||
{{ $mainLogo = $mainLogo.Resize "42x" }}
|
{{ if and $mainLogo (ne $mainLogo.MediaType.SubType "svg") }}
|
||||||
|
{{ $mainLogo = $mainLogo.Resize "42x" }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $mainLogo = $mainLogo.RelPermalink}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $mainLogo = $mainLogo.RelPermalink}}
|
|
||||||
|
|
||||||
{{ $invertedLogo := resources.Get $invertedLogo}}
|
{{ if $invertedLogo }}
|
||||||
{{ if and $invertedLogo (ne $invertedLogo.MediaType.SubType "svg") }}
|
{{ $invertedLogo = resources.Get $invertedLogo}}
|
||||||
{{ $invertedLogo = $invertedLogo.Resize "42x" }}
|
{{ if and $invertedLogo (ne $invertedLogo.MediaType.SubType "svg")}}
|
||||||
|
{{ $invertedLogo = $invertedLogo.Resize "42x" }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $invertedLogo = $invertedLogo.RelPermalink}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $invertedLogo = $invertedLogo.RelPermalink}}
|
|
||||||
|
|
||||||
<nav class="navbar navbar-expand-xl top-navbar final-navbar shadow">
|
<nav class="navbar navbar-expand-xl top-navbar final-navbar shadow">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
@@ -30,7 +33,9 @@
|
|||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="{{ site.BaseURL | relLangURL }}">
|
<a class="navbar-brand" href="{{ site.BaseURL | relLangURL }}">
|
||||||
<img src="{{ $mainLogo }}" alt="Logo">
|
{{ if $mainLogo }}
|
||||||
|
<img src="{{ $mainLogo }}" alt="Logo">
|
||||||
|
{{ end }}
|
||||||
{{- site.Title -}}
|
{{- site.Title -}}
|
||||||
</a>
|
</a>
|
||||||
<button class="navbar-toggler navbar-light" id="toc-toggler" type="button" onclick="toggleTOC()">
|
<button class="navbar-toggler navbar-light" id="toc-toggler" type="button" onclick="toggleTOC()">
|
||||||
@@ -46,6 +51,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Store the logo information in a hidden img for the JS -->
|
<!-- Store the logo information in a hidden img for the JS -->
|
||||||
<img src="{{ $mainLogo }}" class="d-none" id="main-logo" alt="Logo">
|
{{ if $mainLogo }}
|
||||||
<img src="{{ $invertedLogo }}" class="d-none" id="inverted-logo" alt="Inverted Logo">
|
<img src="{{ $mainLogo }}" class="d-none" id="main-logo" alt="Logo">
|
||||||
|
{{ end }}
|
||||||
|
{{ if $invertedLogo }}
|
||||||
|
<img src="{{ $invertedLogo }}" class="d-none" id="inverted-logo" alt="Inverted Logo">
|
||||||
|
{{ end }}
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
{{/* variables for enabling/disabling various features */}}
|
{{/* variables for enabling/disabling various features */}}
|
||||||
{{ $blogEnabled := site.Params.features.blog.enable | default false }}
|
{{ $blogEnabled := site.Params.features.blog.enable | default false }}
|
||||||
{{ $notesEnabled := site.Params.features.notes.enable | default false }}
|
{{ $notesEnabled := site.Params.features.notes.enable | default false }}
|
||||||
|
{{ $maxVisibleSections := site.Params.topNavbar.maxVisibleSections | default 5 }}
|
||||||
|
|
||||||
{{/* keep backward compatibility for blog post */}}
|
{{/* keep backward compatibility for blog post */}}
|
||||||
{{ if site.Params.enableBlogPost }}
|
{{ if site.Params.enableBlogPost }}
|
||||||
{{ $blogEnabled = true }}
|
{{ $blogEnabled = true }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* default logos */}}
|
{{/* by default, don't use any logo */}}
|
||||||
{{ $mainLogo := "/images/main-logo.png" }}
|
{{ $mainLogo := "" }}
|
||||||
{{ $invertedLogo := "/images/inverted-logo.png" }}
|
{{ $invertedLogo := "" }}
|
||||||
|
|
||||||
{{/* if custom logo is used, them */}}
|
{{/* if custom logo has been provided, use them */}}
|
||||||
{{ if site.Params.logo.main }}
|
{{ if site.Params.logo.main }}
|
||||||
{{ $mainLogo = site.Params.logo.main }}
|
{{ $mainLogo = site.Params.logo.main }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -20,17 +21,21 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{/* resize the logos. don't resize svg because it is not supported */}}
|
{{/* resize the logos. don't resize svg because it is not supported */}}
|
||||||
{{ $mainLogo := resources.Get $mainLogo}}
|
{{ if $mainLogo }}
|
||||||
{{ if and $mainLogo (ne $mainLogo.MediaType.SubType "svg") }}
|
{{ $mainLogo = resources.Get $mainLogo}}
|
||||||
{{ $mainLogo = $mainLogo.Resize "42x" }}
|
{{ if and $mainLogo (ne $mainLogo.MediaType.SubType "svg") }}
|
||||||
|
{{ $mainLogo = $mainLogo.Resize "42x" }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $mainLogo = $mainLogo.RelPermalink}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $mainLogo = $mainLogo.RelPermalink}}
|
|
||||||
|
|
||||||
{{ $invertedLogo := resources.Get $invertedLogo}}
|
{{ if $invertedLogo }}
|
||||||
{{ if and $invertedLogo (ne $invertedLogo.MediaType.SubType "svg")}}
|
{{ $invertedLogo = resources.Get $invertedLogo}}
|
||||||
{{ $invertedLogo = $invertedLogo.Resize "42x" }}
|
{{ if and $invertedLogo (ne $invertedLogo.MediaType.SubType "svg")}}
|
||||||
|
{{ $invertedLogo = $invertedLogo.Resize "42x" }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $invertedLogo = $invertedLogo.RelPermalink}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $invertedLogo = $invertedLogo.RelPermalink}}
|
|
||||||
|
|
||||||
{{ $customMenus := site.Params.customMenus }}
|
{{ $customMenus := site.Params.customMenus }}
|
||||||
{{ if (index site.Data site.Language.Lang).site.customMenus }}
|
{{ if (index site.Data site.Language.Lang).site.customMenus }}
|
||||||
@@ -45,7 +50,9 @@
|
|||||||
<nav class="navbar navbar-expand-xl top-navbar initial-navbar" id="top-navbar">
|
<nav class="navbar navbar-expand-xl top-navbar initial-navbar" id="top-navbar">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="navbar-brand" href="{{ site.BaseURL | relLangURL }}">
|
<a class="navbar-brand" href="{{ site.BaseURL | relLangURL }}">
|
||||||
<img src="{{ $invertedLogo }}" id="logo" alt="Logo">
|
{{ if $invertedLogo }}
|
||||||
|
<img src="{{ $invertedLogo }}" id="logo" alt="Logo">
|
||||||
|
{{ end }}
|
||||||
{{- site.Title -}}
|
{{- site.Title -}}
|
||||||
</a>
|
</a>
|
||||||
<button
|
<button
|
||||||
@@ -65,26 +72,26 @@
|
|||||||
<a class="nav-link" href="#home">{{ i18n "home" }}</a>
|
<a class="nav-link" href="#home">{{ i18n "home" }}</a>
|
||||||
</li>
|
</li>
|
||||||
{{ if $sections }}
|
{{ if $sections }}
|
||||||
{{ $sectionCount := 0}}
|
{{ $sectionCount := 1 }}
|
||||||
{{ range sort $sections "section.weight" }}
|
{{ range sort $sections "section.weight" }}
|
||||||
{{ if and (.section.enable) (.section.showOnNavbar)}}
|
{{ if and (.section.enable) (.section.showOnNavbar)}}
|
||||||
{{ $sectionCount = add $sectionCount 1}}
|
{{ $sectionCount = add $sectionCount 1}}
|
||||||
{{ if le $sectionCount 5 }}
|
{{ if le $sectionCount $maxVisibleSections }}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="#{{ partial "helpers/get-section-id.html" . }}">{{ .section.name }}</a>
|
<a class="nav-link" href="#{{ partial "helpers/get-section-id.html" . }}">{{ .section.name }}</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{ if gt $sectionCount 5 }}
|
{{ if gt $sectionCount $maxVisibleSections }}
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{i18n "more" }}</a>
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{i18n "more" }}</a>
|
||||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
{{ $sectionCount := 0 }}
|
{{ $sectionCount := 1 }}
|
||||||
{{ range sort $sections "section.weight" }}
|
{{ range sort $sections "section.weight" }}
|
||||||
{{ if and (.section.enable) (.section.showOnNavbar) }}
|
{{ if and (.section.enable) (.section.showOnNavbar) }}
|
||||||
{{ $sectionCount = add $sectionCount 1}}
|
{{ $sectionCount = add $sectionCount 1}}
|
||||||
{{ if gt $sectionCount 5 }}
|
{{ if gt $sectionCount $maxVisibleSections }}
|
||||||
<a class="dropdown-item" href="#{{ partial "helpers/get-section-id.html" . }}">{{ .section.name }}</a>
|
<a class="dropdown-item" href="#{{ partial "helpers/get-section-id.html" . }}">{{ .section.name }}</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -108,9 +115,11 @@
|
|||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ range $customMenus }}
|
{{ range $customMenus }}
|
||||||
<li class="nav-item">
|
{{ if (not .hideFromNavbar) }}
|
||||||
<a class="nav-link" href="{{ .url }}">{{ .name }}</a>
|
<li class="nav-item">
|
||||||
</li>
|
<a class="nav-link" href="{{ .url }}">{{ .name }}</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .IsTranslated }}
|
{{ if .IsTranslated }}
|
||||||
{{ partial "navigators/lang-selector.html" . }}
|
{{ partial "navigators/lang-selector.html" . }}
|
||||||
@@ -119,6 +128,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Store the logo information in a hidden img for the JS -->
|
<!-- Store the logo information in a hidden img for the JS -->
|
||||||
<img src="{{ $mainLogo }}" class="d-none" id="main-logo" alt="Logo">
|
{{ if $mainLogo }}
|
||||||
<img src="{{ $invertedLogo }}" class="d-none" id="inverted-logo" alt="Inverted Logo">
|
<img src="{{ $mainLogo }}" class="d-none" id="main-logo" alt="Logo">
|
||||||
|
{{ end }}
|
||||||
|
{{ if $invertedLogo }}
|
||||||
|
<img src="{{ $invertedLogo }}" class="d-none" id="inverted-logo" alt="Inverted Logo">
|
||||||
|
{{ end }}
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -1,33 +1,43 @@
|
|||||||
|
{{ $curPage := . }}
|
||||||
|
{{ $prevPage := "" }}
|
||||||
|
{{ $nextPage := "" }}
|
||||||
|
|
||||||
|
<!-- List all the pages. It uses the sidebar menu to discover the page order. -->
|
||||||
|
{{ $pages := slice }}
|
||||||
|
|
||||||
|
{{ if isset site.Menus "sidebar" }}
|
||||||
|
{{ $pages = partial "helpers/get-pages.html" site.Menus.sidebar }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<!-- Now, find the current page index in the pages list. Then, find previous page and next page. -->
|
||||||
|
{{ $idx := 0 }}
|
||||||
|
{{ range $pages }}
|
||||||
|
{{ if eq .RelPermalink $curPage.RelPermalink }}
|
||||||
|
{{ $prevPage = index $pages (sub $idx 1) }}
|
||||||
|
{{ $nextPage = index $pages (add $idx 1) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $idx = add $idx 1 }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<div class="row next-prev-navigator">
|
<div class="row next-prev-navigator">
|
||||||
{{ $currentPage := . }}
|
{{ if $prevPage }}
|
||||||
{{ range (where site.RegularPages.ByDate "Type" "in" site.Params.mainSections )}}
|
<div class="col-md-6 previous-article">
|
||||||
{{ if eq .RelPermalink $currentPage.RelPermalink }}
|
<a href="{{ $prevPage.RelPermalink }}" title="{{ $prevPage.Title }}" class="btn btn-outline-info">
|
||||||
{{ if .Next }}
|
<div><i class="fas fa-chevron-circle-left"></i> {{ i18n "prev" }}</div>
|
||||||
{{ if (in site.Params.mainSections .Next.Type) }}
|
<div class="next-prev-text">{{ $prevPage.Title }}</div>
|
||||||
<div class="col-md-6 previous-article">
|
</a>
|
||||||
<a href="{{.Next.RelPermalink}}" title="{{ .Next.Title }}" class="btn btn-outline-info">
|
</div>
|
||||||
<div><i class="fas fa-chevron-circle-left"></i> {{ i18n "prev" }}</div>
|
{{ end }}
|
||||||
<div class="next-prev-text">{{ .Next.Title }}</div>
|
{{ if $nextPage }}
|
||||||
|
{{ $columnWidth:="col-md-12" }}
|
||||||
|
{{ if $prevPage }}
|
||||||
|
{{ $columnWidth = "col-md-6" }}
|
||||||
|
{{ end}}
|
||||||
|
<div class="{{ $columnWidth }} next-article">
|
||||||
|
<a href="{{ $nextPage.RelPermalink }}" title="{{ $nextPage.Title }}" class="btn btn-outline-info">
|
||||||
|
<div>{{ i18n "next" }} <i class="fas fa-chevron-circle-right"></i></div>
|
||||||
|
<div class="next-prev-text">{{ $nextPage.Title }}</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .Prev }}
|
|
||||||
{{ if (in site.Params.mainSections .Prev.Type) }}
|
|
||||||
{{ $columnWidth:="col-md-12" }}
|
|
||||||
{{ if .Next }}
|
|
||||||
{{ if (in site.Params.mainSections .Next.Type) }}
|
|
||||||
{{ $columnWidth = "col-md-6" }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end}}
|
|
||||||
<div class="{{ $columnWidth }} next-article">
|
|
||||||
<a href="{{ .Prev.RelPermalink }}" title="{{ .Prev.Title }}" class="btn btn-outline-info">
|
|
||||||
<div>{{ i18n "next" }} <i class="fas fa-chevron-circle-right"></i></div>
|
|
||||||
<div class="next-prev-text">{{ .Prev.Title }}</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{{ $context := .context }}
|
||||||
|
{{ $taxo := .taxo }}
|
||||||
|
{{ $class:= "" }}
|
||||||
|
{{ if isset $context.Site.Taxonomies ( lower $taxo ) }}
|
||||||
|
{{ $taxonomy := index $context.Site.Taxonomies ( lower $taxo ) }}
|
||||||
|
{{ if (gt (len $taxonomy) 0)}}
|
||||||
|
{{ range $taxonomy }}
|
||||||
|
{{if eq $context.Title .Page.Title}}
|
||||||
|
{{ $class = "active" }}
|
||||||
|
{{else}}
|
||||||
|
{{$class = ""}}
|
||||||
|
{{end}}
|
||||||
|
<li><a class="taxonomy-term {{ $class }}" href="{{ .Page.Permalink }}" data-taxonomy-term="{{ urlize .Page.Title }}"><span class="taxonomy-label">{{ .Page.Title }}</span></a></li>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
@@ -11,7 +11,8 @@
|
|||||||
<div class="container anchor p-lg-5 about-section" id="{{ $sectionID }}">
|
<div class="container anchor p-lg-5 about-section" id="{{ $sectionID }}">
|
||||||
<div class="row pt-sm-2 pt-md-4 align-self-center">
|
<div class="row pt-sm-2 pt-md-4 align-self-center">
|
||||||
<!-- summary -->
|
<!-- summary -->
|
||||||
<div class="col-sm-6">
|
<!-- takes up full section width if no badges/soft skills are specified -->
|
||||||
|
{{ if or (.softSkills) (.badges) }} <div class="col-sm-6"> {{ else }} <div class="col-sm-12"> {{ end }}
|
||||||
<h3 class="p-1">{{ $author.name }}</h3>
|
<h3 class="p-1">{{ $author.name }}</h3>
|
||||||
{{ if .designation }}
|
{{ if .designation }}
|
||||||
<h5 class="p-1">
|
<h5 class="p-1">
|
||||||
@@ -30,7 +31,7 @@
|
|||||||
<li>
|
<li>
|
||||||
{{ if eq .name "Email" }}
|
{{ if eq .name "Email" }}
|
||||||
<a href="mailto:{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
|
<a href="mailto:{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
|
||||||
{{ else if eq .name "Phone" }}
|
{{ else if eq .name (i18n "phone") }}
|
||||||
<a href="tel:{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
|
<a href="tel:{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<a href="{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
|
<a href="{{ .url }}" title="{{ .name }}" target="_blank" rel="noopener"><i class="{{ .icon }}"></i></a>
|
||||||
|
|||||||
@@ -3,11 +3,15 @@
|
|||||||
{{ $sectionID = .section.id }}
|
{{ $sectionID = .section.id }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container-fluid anchor pb-5 accomplishments-section" id="{{ $sectionID }}">
|
<div class="container-fluid anchor pb-5 accomplishments-section">
|
||||||
{{ if not (.section.hideTitle) }}
|
{{ if not (.section.hideTitle) }}
|
||||||
<h1 class="text-center">{{ .section.name }}</h1>
|
<h1 class="text-center">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ else }}
|
||||||
|
<h1 class="text-center" style="display: none">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row" id="acomplishment-card-holder">
|
<div class="row" id="acomplishment-card-holder">
|
||||||
{{ range .accomplishments }}
|
{{ range .accomplishments }}
|
||||||
|
|||||||
@@ -3,9 +3,13 @@
|
|||||||
{{ $sectionID = .section.id }}
|
{{ $sectionID = .section.id }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container-fluid anchor pb-5 achievements-section" id="{{ $sectionID }}">
|
<div class="container-fluid anchor pb-5 achievements-section">
|
||||||
{{ if not (.section.hideTitle) }}
|
{{ if not (.section.hideTitle) }}
|
||||||
<h1 class="text-center">{{ .section.name }}</h1>
|
<h1 class="text-center">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ else }}
|
||||||
|
<h1 class="text-center" style="display: none">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row" id="gallery">
|
<div class="row" id="gallery">
|
||||||
|
|||||||
@@ -4,9 +4,13 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container-fluid anchor pb-5 education-section education-alt" id="{{ $sectionID }}">
|
<div class="container-fluid anchor pb-5 education-section education-alt" id="{{ $sectionID }}">
|
||||||
{{ if not (.section.hideTitle) }}
|
{{ if not (.section.hideTitle) }}
|
||||||
<h1 class="text-center">{{ .section.name }}</h1>
|
<h1 class="text-center">
|
||||||
{{ end }}
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ else }}
|
||||||
|
<h1 class="text-center" style="display: none">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<table class="education-info-table">
|
<table class="education-info-table">
|
||||||
@@ -53,6 +57,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .takenCourses }}
|
{{ if .takenCourses }}
|
||||||
|
{{ $collapseAfter := .takenCourses.collapseAfter | default 2 }}
|
||||||
<div class="taken-courses">
|
<div class="taken-courses">
|
||||||
<h6 class="text-muted">{{ i18n "taken_courses" }}</h6>
|
<h6 class="text-muted">{{ i18n "taken_courses" }}</h6>
|
||||||
{{ if .takenCourses.showGrades }}
|
{{ if .takenCourses.showGrades }}
|
||||||
@@ -65,7 +70,7 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{ range $index,$course := .takenCourses.courses }}
|
{{ range $index,$course := .takenCourses.courses }}
|
||||||
<tr class="course {{ if gt $index 1 }}hidden-course{{ end}}">
|
<tr class="course {{ if ge $index $collapseAfter }}hidden-course{{ end}}">
|
||||||
<td>{{ $course.name }}</td>
|
<td>{{ $course.name }}</td>
|
||||||
{{ if not $hideScale }}<td>{{ $course.outOf }}</td>{{ end }}
|
{{ if not $hideScale }}<td>{{ $course.outOf }}</td>{{ end }}
|
||||||
<td>{{ $course.achieved }}</td>
|
<td>{{ $course.achieved }}</td>
|
||||||
@@ -76,11 +81,11 @@
|
|||||||
{{ else }}
|
{{ else }}
|
||||||
<ul>
|
<ul>
|
||||||
{{ range $index,$course := .takenCourses.courses }}
|
{{ range $index,$course := .takenCourses.courses }}
|
||||||
<li class="course {{ if gt $index 1 }}hidden-course{{ end}}">{{ $course.name }}</li>
|
<li class="course {{ if ge $index $collapseAfter }}hidden-course{{ end}}">{{ $course.name }}</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if gt (len .takenCourses.courses) 2 }}
|
{{ if gt (len .takenCourses.courses) $collapseAfter }}
|
||||||
<button type="button" class="btn btn-link show-more-btn pt-0 {{ if .takenCourses.showGrades }}ml-1{{ else }}ml-2{{ end }}"
|
<button type="button" class="btn btn-link show-more-btn pt-0 {{ if .takenCourses.showGrades }}ml-1{{ else }}ml-2{{ end }}"
|
||||||
onclick="toggleCourseVisibility(this);" id="show-more-btn" aria-label="{{ i18n "show_more"}}">{{ i18n "show_more"}}</button>
|
onclick="toggleCourseVisibility(this);" id="show-more-btn" aria-label="{{ i18n "show_more"}}">{{ i18n "show_more"}}</button>
|
||||||
<button type="button" class="btn btn-link show-more-btn hidden pt-0 {{ if .takenCourses.showGrades }}ml-1{{ else }}ml-2{{ end }}"
|
<button type="button" class="btn btn-link show-more-btn hidden pt-0 {{ if .takenCourses.showGrades }}ml-1{{ else }}ml-2{{ end }}"
|
||||||
@@ -114,4 +119,4 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,10 +3,14 @@
|
|||||||
{{ $sectionID = .section.id }}
|
{{ $sectionID = .section.id }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container-fluid anchor pb-5 education-section" id="{{ $sectionID }}">
|
<div class="container-fluid anchor pb-5 education-section">
|
||||||
{{ if not (.section.hideTitle) }}
|
{{ if not (.section.hideTitle) }}
|
||||||
<h1 class="text-center">{{ .section.name }}</h1>
|
<h1 class="text-center">
|
||||||
{{ end }}
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ else }}
|
||||||
|
<h1 class="text-center" style="display: none">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<table class="education-info-table">
|
<table class="education-info-table">
|
||||||
@@ -53,19 +57,20 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if .takenCourses }}
|
{{ if .takenCourses }}
|
||||||
|
{{ $collapseAfter := .takenCourses.collapseAfter | default 2 }}
|
||||||
<div class="taken-courses">
|
<div class="taken-courses">
|
||||||
<h6 class="text-muted">{{ i18n "taken_courses"}}</h6>
|
<h6 class="text-muted">{{ i18n "taken_courses"}}</h6>
|
||||||
{{ if .takenCourses.showGrades }}
|
{{ if .takenCourses.showGrades }}
|
||||||
{{ $hideScale := .takenCourses.hideScale }}
|
{{ $hideScale := .takenCourses.hideScale }}
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<th>{{ i18n "course_name"}}</th>
|
<th class="course-name-header">{{ i18n "course_name"}}</th>
|
||||||
{{ if not $hideScale }}<th>{{ i18n "total_credit"}}</th>{{ end }}
|
{{ if not $hideScale }}<th>{{ i18n "total_credit"}}</th>{{ end }}
|
||||||
<th>{{ i18n "obtained_credit"}}</th>
|
<th>{{ i18n "obtained_credit"}}</th>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{ range $index,$course := .takenCourses.courses }}
|
{{ range $index,$course := .takenCourses.courses }}
|
||||||
<tr class="course {{ if gt $index 1 }}hidden-course{{ end}}">
|
<tr class="course {{ if ge $index $collapseAfter }}hidden-course{{ end}}">
|
||||||
<td>{{ $course.name }}</td>
|
<td>{{ $course.name }}</td>
|
||||||
{{ if not $hideScale }}<td>{{ $course.outOf }}</td>{{ end }}
|
{{ if not $hideScale }}<td>{{ $course.outOf }}</td>{{ end }}
|
||||||
<td>{{ $course.achieved }}</td>
|
<td>{{ $course.achieved }}</td>
|
||||||
@@ -76,11 +81,11 @@
|
|||||||
{{ else }}
|
{{ else }}
|
||||||
<ul>
|
<ul>
|
||||||
{{ range $index,$course := .takenCourses.courses }}
|
{{ range $index,$course := .takenCourses.courses }}
|
||||||
<li class="course {{ if gt $index 1 }}hidden-course{{ end}}">{{ $course.name }}</li>
|
<li class="course {{ if ge $index $collapseAfter }}hidden-course{{ end}}">{{ $course.name }}</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if gt (len .takenCourses.courses ) 2 }}
|
{{ if gt (len .takenCourses.courses ) $collapseAfter }}
|
||||||
<button type="button" class="btn btn-link show-more-btn pt-0 {{ if .takenCourses.showGrades }}ml-1{{ else }}ml-2{{ end }}"
|
<button type="button" class="btn btn-link show-more-btn pt-0 {{ if .takenCourses.showGrades }}ml-1{{ else }}ml-2{{ end }}"
|
||||||
onclick="toggleCourseVisibility(this);" id="show-more-btn">{{ i18n "show_more"}}</button>
|
onclick="toggleCourseVisibility(this);" id="show-more-btn">{{ i18n "show_more"}}</button>
|
||||||
<button type="button" class="btn btn-link show-more-btn hidden pt-0 {{ if .takenCourses.showGrades }}ml-1{{ else }}ml-2{{ end }}"
|
<button type="button" class="btn btn-link show-more-btn hidden pt-0 {{ if .takenCourses.showGrades }}ml-1{{ else }}ml-2{{ end }}"
|
||||||
@@ -105,4 +110,4 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,9 +3,13 @@
|
|||||||
{{ $sectionID = .section.id }}
|
{{ $sectionID = .section.id }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container-fluid anchor pb-5 experiences-section" id="{{ $sectionID }}">
|
<div class="container-fluid anchor pb-5 experiences-section">
|
||||||
{{ if not (.section.hideTitle) }}
|
{{ if not (.section.hideTitle) }}
|
||||||
<h1 class="text-center">{{ .section.name }}</h1>
|
<h1 class="text-center">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ else }}
|
||||||
|
<h1 class="text-center" style="display: none">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container timeline text-justify">
|
<div class="container timeline text-justify">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{{ if gt (len .positions) 1 }}
|
{{ if gt (len .positions) 1 }}
|
||||||
{{ partial "sections/experiences/multiple-positions" . }}
|
{{ partial "sections/experiences/multiple-positions.html" . }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ partial "sections/experiences/single-position.html" . }}
|
{{ partial "sections/experiences/single-position.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -12,10 +12,12 @@
|
|||||||
<!-- Add company overview -->
|
<!-- Add company overview -->
|
||||||
<p>{{ .company.overview | markdownify }}</p>
|
<p>{{ .company.overview | markdownify }}</p>
|
||||||
<!-- Add the responsibilities handled at this position -->
|
<!-- Add the responsibilities handled at this position -->
|
||||||
|
{{ if $position.responsibilities }}
|
||||||
<h6 class="text-muted">{{ i18n "responsibilities" }}</h6>
|
<h6 class="text-muted">{{ i18n "responsibilities" }}</h6>
|
||||||
<ul class="justify-content-around">
|
<ul class="justify-content-around">
|
||||||
{{ range $position.responsibilities }}
|
{{ range $position.responsibilities }}
|
||||||
<li>{{ . | markdownify }}</li>
|
<li>{{ . | markdownify }}</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -26,8 +26,11 @@
|
|||||||
{{ $authorImage = $author.image }}
|
{{ $authorImage = $author.image }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $authorImage := resources.Get $authorImage }}
|
{{ $authorImage := resources.Get $authorImage }}
|
||||||
{{ $authorImage := $authorImage.Fit "148x148" }}
|
|
||||||
|
|
||||||
|
{{/* apply image processing. don't use "Fit" in svg or gif because its not supported */}}
|
||||||
|
{{ if and $authorImage (and (ne $authorImage.MediaType.SubType "svg") ( ne $authorImage.MediaType.SubType "gif")) }}
|
||||||
|
{{ $authorImage = $authorImage.Fit "148x148" }}
|
||||||
|
{{ end }}
|
||||||
{{/* get file that matches the filename as specified as src="" in shortcode */}}
|
{{/* get file that matches the filename as specified as src="" in shortcode */}}
|
||||||
{{ $src := resources.Get $backgroundImage }}
|
{{ $src := resources.Get $backgroundImage }}
|
||||||
|
|
||||||
@@ -110,6 +113,9 @@
|
|||||||
alt="Author Image"
|
alt="Author Image"
|
||||||
/>
|
/>
|
||||||
<h1 class="greeting"> {{ $author.greeting }} {{ $name }}</h1>
|
<h1 class="greeting"> {{ $author.greeting }} {{ $name }}</h1>
|
||||||
|
{{ if $author.subtitle }}
|
||||||
|
<h2 class="greeting-subtitle">{{ $author.subtitle }}</h2>
|
||||||
|
{{ end }}
|
||||||
<div class="typing-carousel">
|
<div class="typing-carousel">
|
||||||
<span id="ityped" class="ityped"></span>
|
<span id="ityped" class="ityped"></span>
|
||||||
<span class="ityped-cursor"></span>
|
<span class="ityped-cursor"></span>
|
||||||
|
|||||||
@@ -5,7 +5,11 @@
|
|||||||
|
|
||||||
<div class="container-fluid anchor pb-5 projects-section" id="{{ $sectionID }}">
|
<div class="container-fluid anchor pb-5 projects-section" id="{{ $sectionID }}">
|
||||||
{{ if not (.section.hideTitle) }}
|
{{ if not (.section.hideTitle) }}
|
||||||
<h1 class="text-center">{{ .section.name }}</h1>
|
<h1 class="text-center">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ else }}
|
||||||
|
<h1 class="text-center" style="display: none">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="container ml-auto text-center">
|
<div class="container ml-auto text-center">
|
||||||
<div class="btn-group flex-wrap" role="group" id="project-filter-buttons">
|
<div class="btn-group flex-wrap" role="group" id="project-filter-buttons">
|
||||||
|
|||||||
@@ -3,13 +3,23 @@
|
|||||||
{{ $sectionID = .section.id }}
|
{{ $sectionID = .section.id }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container-fluid anchor pb-5 recent-posts-section" id="{{ $sectionID }}">
|
{{ $numShow := 3}}
|
||||||
|
{{ if .section.numShow }}
|
||||||
|
{{ $numShow = .section.numShow }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container-fluid anchor pb-5 recent-posts-section">
|
||||||
{{ if not (.section.hideTitle) }}
|
{{ if not (.section.hideTitle) }}
|
||||||
<h1 class="text-center">{{ .section.name }}</h1>
|
<h1 class="text-center">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ else }}
|
||||||
|
<h1 class="text-center" style="display: none">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row" id="recent-post-cards">
|
<div class="row" id="recent-post-cards">
|
||||||
{{ range first 3 (where site.RegularPages.ByDate.Reverse "Type" "in" "posts" )}}
|
{{ range first $numShow (where site.RegularPages.ByDate.Reverse "Type" "in" "posts" )}}
|
||||||
{{ partial "cards/recent-post.html" . }}
|
{{ partial "cards/recent-post.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,9 +3,13 @@
|
|||||||
{{ $sectionID = .section.id }}
|
{{ $sectionID = .section.id }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="container-fluid anchor pb-5 skills-section" id="{{ $sectionID }}">
|
<div class="container-fluid anchor pb-5 skills-section">
|
||||||
{{ if not (.section.hideTitle) }}
|
{{ if not (.section.hideTitle) }}
|
||||||
<h1 class="text-center">{{ .section.name }}</h1>
|
<h1 class="text-center">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
|
{{ else }}
|
||||||
|
<h1 class="text-center" style="display: none">
|
||||||
|
<span id="{{ $sectionID }}"></span>{{ .section.name }}</h1>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="container d-flex-block">
|
<div class="container d-flex-block">
|
||||||
<div class="row" id="primary-skills">
|
<div class="row" id="primary-skills">
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{{ $repo := site.Params.features.comment.utteranc.repo }}
|
||||||
|
{{ $issueTerm := site.Params.features.comment.utteranc.issueTerm }}
|
||||||
|
{{ $theme := site.Params.features.comment.utteranc.theme }}
|
||||||
|
|
||||||
|
<div id="utteranc_thread"></div>
|
||||||
|
<div id="comments" class="comments">
|
||||||
|
<div id="comments-container"></div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
(function() {
|
||||||
|
var utterances = document.createElement('script');
|
||||||
|
utterances.type = 'text/javascript';
|
||||||
|
utterances.async = true;
|
||||||
|
utterances.setAttribute('repo','{{ $repo }}')
|
||||||
|
utterances.setAttribute('issue-term','{{ $issueTerm }}')
|
||||||
|
utterances.setAttribute('theme','{{ $theme }}')
|
||||||
|
utterances.crossorigin = 'anonymous';
|
||||||
|
utterances.src = 'https://utteranc.es/client.js';
|
||||||
|
|
||||||
|
document.getElementById('comments-container').appendChild(utterances);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<!-- valine -->
|
||||||
|
<div id="vcomments"></div>
|
||||||
|
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
|
||||||
|
<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
new Valine({
|
||||||
|
el: "#vcomments",
|
||||||
|
appId: "{{ .valine.appId }}",
|
||||||
|
appKey: "{{ .valine.appKey }}",
|
||||||
|
avatar: "{{ .valine.avatar }}",
|
||||||
|
placeholder: "{{ .valine.placeholder }}",
|
||||||
|
visitor: "{{ .valine.visitor }}",
|
||||||
|
lang: "{{ .valine.lang }}",
|
||||||
|
recordIP: "{{ .valine.recordIP }}",
|
||||||
|
enableQQ: "{{ .valine.enableQQ }}",
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{{ $alignment:= .Get "align"}}
|
||||||
|
{{ if not $alignment }}
|
||||||
|
{{ $alignment = "center"}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $background:= .Get "background" }}
|
||||||
|
{{ if not $background }}
|
||||||
|
{{ $background = "none"}}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<div class="mermaid" align="{{ $alignment }}" style="background-color: {{ $background }}; border-radius: 5px;">
|
||||||
|
{{ safeHTML .Inner }}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{{ define "header" }}
|
||||||
|
<link rel="stylesheet" href="{{ "/css/layouts/list.css" | relURL }}">
|
||||||
|
<link rel="stylesheet" href="{{ "/css/navigators/sidebar.css" | relURL}}">
|
||||||
|
<!--================= custom style overrides =========================-->
|
||||||
|
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}"/>
|
||||||
|
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "navbar" }}
|
||||||
|
{{ partial "navigators/navbar-2.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "sidebar" }}
|
||||||
|
{{ $homePage:="#" }}
|
||||||
|
{{ if site.IsMultiLingual }}
|
||||||
|
{{ $homePage = (path.Join (cond ( eq .Language.Lang "en") "" .Language.Lang) .Type) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<section class="sidebar-section" id="sidebar-section">
|
||||||
|
<div class="sidebar-holder">
|
||||||
|
<div class="sidebar" id="sidebar">
|
||||||
|
<form class="mx-auto" method="get" action="{{ "search" | relLangURL }}">
|
||||||
|
<input type="text" name="keyword" value="" placeholder="{{ i18n "search" }}" data-search="" id="search-box" />
|
||||||
|
</form>
|
||||||
|
<div class="sidebar-tree">
|
||||||
|
<ul class="tree" id="tree">
|
||||||
|
<li id="list-heading"><a href="{{ .Type | relLangURL }}" data-filter="all">{{ i18n .Type }}</a></li>
|
||||||
|
<div class="subtree taxonomy-terms">
|
||||||
|
{{ $context := . }}
|
||||||
|
{{ partial "navigators/taxonomies.html" (dict "context" $context "taxo" "tags" "title" ( humanize "tags" ) ) }}
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "content" }}
|
||||||
|
<section class="content-section" id="content-section">
|
||||||
|
<div class="content container-fluid" id="content">
|
||||||
|
<div class="container-fluid post-card-holder" id="post-card-holder">
|
||||||
|
{{ $posts := where .RegularPagesRecursive "Layout" "!=" "search" }}
|
||||||
|
{{ $paginator := .Paginate $posts 12 }}
|
||||||
|
{{ range $paginator.Pages }}
|
||||||
|
{{ if .Layout }}
|
||||||
|
{{/* ignore the search.md file*/}}
|
||||||
|
{{ else }}
|
||||||
|
{{ partial "cards/post.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="paginator">
|
||||||
|
{{ template "_internal/pagination.html" . }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "scripts" }}
|
||||||
|
<script src="{{ "/js/list.js" | relURL }}"></script>
|
||||||
|
{{ end }}
|
||||||
Generated
+322
-611
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -17,8 +17,8 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/hossainemruz/toha#readme",
|
"homepage": "https://github.com/hossainemruz/toha#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.2.6",
|
"autoprefixer": "^10.4.2",
|
||||||
"postcss": "^8.3.0",
|
"postcss": "^8.4.8",
|
||||||
"postcss-cli": "^8.3.1"
|
"postcss-cli": "^8.3.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,17 +50,17 @@ a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn-dark {
|
.btn-dark {
|
||||||
background-color: #3c4858;
|
background-color: #3c4858!important;
|
||||||
border-color: #3c4858;
|
border-color: #3c4858!important;
|
||||||
color: #e5e9f2;
|
color: #e5e9f2!important;
|
||||||
transition: all 0.3s ease-out;
|
transition: all 0.3s ease-out!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-dark:hover,
|
.btn-dark:hover,
|
||||||
.btn-dark:focus {
|
.btn-dark:focus {
|
||||||
background-color: #248aaa;
|
background-color: #248aaa!important;
|
||||||
border-color: #248aaa;
|
border-color: #248aaa!important;
|
||||||
transition: all 0.3s ease-out;
|
transition: all 0.3s ease-out!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-outline-info {
|
.btn-outline-info {
|
||||||
@@ -432,16 +432,29 @@ mark {
|
|||||||
code {
|
code {
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 2.2rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* iPhoneX, iPhone 6,7,8 */
|
/* iPhoneX, iPhone 6,7,8 */
|
||||||
@media only screen and (max-width: 375px) {
|
@media only screen and (max-width: 375px) {
|
||||||
|
h1 {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Galaxy S5, Moto G4 */
|
/* Galaxy S5, Moto G4 */
|
||||||
@media only screen and (max-width: 360px) {
|
@media only screen and (max-width: 360px) {
|
||||||
|
h1 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* iPhone 5 or before */
|
/* iPhone 5 or before */
|
||||||
@media only screen and (max-width: 320px) {
|
@media only screen and (max-width: 320px) {
|
||||||
|
h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.toc-holder {
|
.toc-holder {
|
||||||
|
position: -webkit-sticky;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 4.5rem;
|
top: 4.5rem;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
@@ -205,6 +206,69 @@ h6 {
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.share-buttons .btn {
|
||||||
|
color: #e5e9f2 !important;
|
||||||
|
transition: all 0.3s ease-out !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .btn:hover,
|
||||||
|
.share-buttons .btn:focus {
|
||||||
|
background-color: #248aaa !important;
|
||||||
|
border-color: #248aaa !important;
|
||||||
|
transition: all 0.3s ease-out !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .facebook-btn {
|
||||||
|
background-color: #4267b2 !important;
|
||||||
|
border-color: #4267b2 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .twitter-btn {
|
||||||
|
background-color: #1da1f2 !important;
|
||||||
|
border-color: #1da1f2 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .reddit-btn {
|
||||||
|
background-color: #ff4500 !important;
|
||||||
|
border-color: #ff4500 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .tumblr-btn {
|
||||||
|
background-color: #34465d !important;
|
||||||
|
border-color: #34465d !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .pocket-btn {
|
||||||
|
background-color: #ef4056 !important;
|
||||||
|
border-color: #ef4056 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .linkedin-btn {
|
||||||
|
background-color: #2867b2 !important;
|
||||||
|
border-color: #2867b2 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .diaspora-btn {
|
||||||
|
background-color: #3c4858 !important;
|
||||||
|
border-color: #3c4858 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .mastodon-btn {
|
||||||
|
background-color: #2791da !important;
|
||||||
|
border-color: #2791da !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .whatsapp-btn {
|
||||||
|
background-color: #4ac959 !important;
|
||||||
|
border-color: #4ac959 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.share-buttons .email-btn {
|
||||||
|
background-color: #3c4858 !important;
|
||||||
|
border-color: #3c4858 !important;
|
||||||
|
transition: all 0.3s ease-out !important;
|
||||||
|
}
|
||||||
|
|
||||||
.btn-improve-page {
|
.btn-improve-page {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
@@ -236,6 +300,19 @@ h6 {
|
|||||||
#scroll-to-top.show {
|
#scroll-to-top.show {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
.taxonomy-terms {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.taxonomy-terms li {
|
||||||
|
font-size: 0.8em;
|
||||||
|
list-style-type: none;
|
||||||
|
display: inline-block;
|
||||||
|
background: #248aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.taxonomy-terms a {
|
||||||
|
color: #f9fafc;
|
||||||
|
}
|
||||||
|
|
||||||
/* ============= Device specific fixes ======= */
|
/* ============= Device specific fixes ======= */
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
height: 50px;
|
height: 50px;
|
||||||
z-index: 99999;
|
z-index: 99999;
|
||||||
transition: all 0.4s ease-out;
|
transition: all 0.4s ease-out;
|
||||||
margin: 0;
|
margin: 0px;
|
||||||
padding-top: 0.1rem;
|
padding-top: 0.4rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,6 +30,7 @@
|
|||||||
.initial-navbar li a:hover {
|
.initial-navbar li a:hover {
|
||||||
color: #f9fafc;
|
color: #f9fafc;
|
||||||
transition: all 0.3s ease-out;
|
transition: all 0.3s ease-out;
|
||||||
|
transform: translateY(-2px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-collapse {
|
.navbar-collapse {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
.sidebar-holder {
|
.sidebar-holder {
|
||||||
top: 2.5rem;
|
top: 2.5rem;
|
||||||
|
position: -webkit-sticky;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
background-color: #f9fafc;
|
background-color: #f9fafc;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
@@ -191,6 +192,7 @@ a.focused {
|
|||||||
transition: all ease-out 0.3s;
|
transition: all ease-out 0.3s;
|
||||||
}
|
}
|
||||||
.sidebar-holder {
|
.sidebar-holder {
|
||||||
|
position: -webkit-sticky;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 2.5rem;
|
top: 2.5rem;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -220,6 +222,7 @@ a.focused {
|
|||||||
transition: all ease-out 0.3s;
|
transition: all ease-out 0.3s;
|
||||||
}
|
}
|
||||||
.sidebar-holder {
|
.sidebar-holder {
|
||||||
|
position: -webkit-sticky;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 2.5rem;
|
top: 2.5rem;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
@@ -87,11 +87,14 @@
|
|||||||
background: #3c4858;
|
background: #3c4858;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
color: #f9fafc;
|
color: #f9fafc;
|
||||||
line-height: 135px;
|
line-height: initial;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 5%;
|
top: 5%;
|
||||||
left: 5%;
|
left: 5%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.circular-progress.blue .circular-progress-bar {
|
.circular-progress.blue .circular-progress-bar {
|
||||||
@@ -496,11 +499,24 @@
|
|||||||
.about-section.container {
|
.about-section.container {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.circular-progress {
|
||||||
|
width: 135px;
|
||||||
|
height: 135px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Small devices (landscape phones, 576px and up) */
|
/* Small devices (landscape phones, 576px and up) */
|
||||||
|
|
||||||
@media only screen and (max-width: 576px) {
|
@media only screen and (max-width: 576px) {
|
||||||
|
.circular-progress {
|
||||||
|
width: 150px;
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.circular-progress .circular-progress-value {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* iPhoneX, iPhone 6,7,8 */
|
/* iPhoneX, iPhone 6,7,8 */
|
||||||
@@ -513,4 +529,12 @@
|
|||||||
|
|
||||||
/* iPhone 5 or before */
|
/* iPhone 5 or before */
|
||||||
@media only screen and (max-width: 320px) {
|
@media only screen and (max-width: 320px) {
|
||||||
|
.col-6 {
|
||||||
|
flex: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-link {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
.accomplishments-section h1 > span{
|
||||||
|
margin-top: -55px; /* Size of fixed header */
|
||||||
|
padding-bottom:55px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.accomplishments-section .card {
|
.accomplishments-section .card {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border-top: 2px solid #248aaa;
|
border-top: 2px solid #248aaa;
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
padding-top: 0.5rem;
|
padding-top: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.achievements-section h1 > span{
|
||||||
|
margin-top: -55px; /* Size of fixed header */
|
||||||
|
padding-bottom:55px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
#gallery .achievement-entry {
|
#gallery .achievement-entry {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
.education-section .education-info-table {
|
.education-section .education-info-table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: none;
|
border: none;
|
||||||
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.education-section .education-info-table tr:hover {
|
.education-section .education-info-table tr:hover {
|
||||||
@@ -12,6 +13,7 @@
|
|||||||
.education-section .education-info-table td {
|
.education-section .education-info-table td {
|
||||||
border: none;
|
border: none;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.education-section .timeframe {
|
.education-section .timeframe {
|
||||||
@@ -19,6 +21,12 @@
|
|||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.education-section h1 > span{
|
||||||
|
margin-top: -55px; /* Size of fixed header */
|
||||||
|
padding-bottom:55px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.education-section .icon {
|
.education-section .icon {
|
||||||
width: 2rem;
|
width: 2rem;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
@@ -36,7 +44,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.education-section .education-info-table tr:first-child .hline {
|
.education-section .education-info-table tr:first-child .hline {
|
||||||
height: 60%;
|
height: 65%;
|
||||||
top: auto;
|
top: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,7 +110,9 @@
|
|||||||
border: none;
|
border: none;
|
||||||
color: #212529;
|
color: #212529;
|
||||||
}
|
}
|
||||||
|
.education-section .taken-courses th.course-name-header{
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
.education-section .taken-courses .hidden-course {
|
.education-section .taken-courses .hidden-course {
|
||||||
display: none;
|
display: none;
|
||||||
transition: all 1s ease-out;
|
transition: all 1s ease-out;
|
||||||
|
|||||||
@@ -6,6 +6,12 @@
|
|||||||
margin-top: 1.5rem !important;
|
margin-top: 1.5rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.experiences-section h1 > span{
|
||||||
|
margin-top: -55px; /* Size of fixed header */
|
||||||
|
padding-bottom:55px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.experiences-section ul {
|
.experiences-section ul {
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.home .greeting {
|
.home .greeting, .home .greeting-subtitle {
|
||||||
color: #f9fafc;
|
color: #f9fafc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
padding-top: 1rem;
|
padding-top: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.recent-posts-section h1 > span{
|
||||||
|
margin-top: -55px; /* Size of fixed header */
|
||||||
|
padding-bottom:55px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.recent-posts-section .card .card-footer span {
|
.recent-posts-section .card .card-footer span {
|
||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
color: #6c757d !important;
|
color: #6c757d !important;
|
||||||
|
|||||||
@@ -8,6 +8,12 @@
|
|||||||
border-bottom: 0.0625rem solid rgba(0, 0, 0, 0.125);
|
border-bottom: 0.0625rem solid rgba(0, 0, 0, 0.125);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.skills-section h1 > span{
|
||||||
|
margin-top: -55px; /* Size of fixed header */
|
||||||
|
padding-bottom:55px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.skills-section .skill-card-link {
|
.skills-section .skill-card-link {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
@@ -19,6 +25,7 @@
|
|||||||
.skills-section .card {
|
.skills-section .card {
|
||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.skills-section .card .card-body {
|
.skills-section .card .card-body {
|
||||||
@@ -57,7 +64,7 @@
|
|||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
.skills-section .container {
|
.skills-section .container {
|
||||||
max-width: 100%;
|
max-width: 95%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+6
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3
-26
@@ -63,28 +63,6 @@ var projectCards;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== Adjust height of the skills card =============
|
|
||||||
function adjustSkillCardsHeight() {
|
|
||||||
if (!isMobile) { // no need to adjust height for mobile devices
|
|
||||||
// primary skills
|
|
||||||
var skillCards = document.getElementById("primary-skills");
|
|
||||||
if (skillCards != null) {
|
|
||||||
var cardElems = skillCards.getElementsByClassName("card");
|
|
||||||
var maxHeight = 0;
|
|
||||||
for (let i = 0; i < cardElems.length; i++) {
|
|
||||||
if (cardElems.item(i).clientHeight > maxHeight) {
|
|
||||||
maxHeight = cardElems.item(i).clientHeight;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (let i = 0; i < cardElems.length; i++) {
|
|
||||||
cardElems.item(i).setAttribute("style", "min-height: " + maxHeight + "px;");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$(window).on("load", function () {
|
|
||||||
adjustSkillCardsHeight();
|
|
||||||
});
|
|
||||||
|
|
||||||
// ================== Project cards =====================
|
// ================== Project cards =====================
|
||||||
// Add click action on project category selector buttons
|
// Add click action on project category selector buttons
|
||||||
@@ -331,17 +309,17 @@ var projectCards;
|
|||||||
this.parentElement.classList.toggle("col-sm-12");
|
this.parentElement.classList.toggle("col-sm-12");
|
||||||
if (this.children["SmallImage"].hasAttribute("active")) {
|
if (this.children["SmallImage"].hasAttribute("active")) {
|
||||||
let mainLogo = this.children["LargeImage"].getAttribute("Style");
|
let mainLogo = this.children["LargeImage"].getAttribute("Style");
|
||||||
this.children["LargeImage"].setAttribute("active",true);
|
this.children["LargeImage"].setAttribute("active", true);
|
||||||
this.children["SmallImage"].removeAttribute("active");
|
this.children["SmallImage"].removeAttribute("active");
|
||||||
|
|
||||||
this.setAttribute("Style", mainLogo);
|
this.setAttribute("Style", mainLogo);
|
||||||
} else {
|
} else {
|
||||||
let mainLogo = this.children["SmallImage"].getAttribute("Style");
|
let mainLogo = this.children["SmallImage"].getAttribute("Style");
|
||||||
this.children["SmallImage"].setAttribute("active",true);
|
this.children["SmallImage"].setAttribute("active", true);
|
||||||
this.children["LargeImage"].removeAttribute("active");
|
this.children["LargeImage"].removeAttribute("active");
|
||||||
this.setAttribute("Style", mainLogo);
|
this.setAttribute("Style", mainLogo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.children["caption"] != undefined) {
|
if (this.children["caption"] != undefined) {
|
||||||
this.children["caption"].classList.toggle("hidden");
|
this.children["caption"].classList.toggle("hidden");
|
||||||
}
|
}
|
||||||
@@ -360,7 +338,6 @@ var projectCards;
|
|||||||
// re-render custom functions on window resize
|
// re-render custom functions on window resize
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
detectDevice();
|
detectDevice();
|
||||||
adjustSkillCardsHeight();
|
|
||||||
adjustRecentPostsHeight();
|
adjustRecentPostsHeight();
|
||||||
showAchievements();
|
showAchievements();
|
||||||
};
|
};
|
||||||
|
|||||||
+8
-10
@@ -158,18 +158,16 @@ function toggleCourseVisibility(elem) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// toggle hidden-course class from the third elements
|
// toggle hidden-course class from the third elements
|
||||||
for (var i = 0; i < courses.length; i++) {
|
for (const course of courses) {
|
||||||
if (i > 1 && courses[i].classList !== null) {
|
if (course.classList.contains("hidden-course") || course.classList.contains("toggled-hidden-course")) {
|
||||||
courses[i].classList.toggle("hidden-course");
|
course.classList.toggle("hidden-course");
|
||||||
|
course.classList.add("toggled-hidden-course");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// toggle the current button visibility
|
// toggle the buttons visibility
|
||||||
elem.classList.toggle("hidden");
|
let buttonsToToggle = elem.parentNode.getElementsByClassName("show-more-btn");
|
||||||
// toggle the alternate button visibility
|
for (const buttonToToggle of buttonsToToggle) {
|
||||||
if (elem.id === "show-more-btn"){
|
buttonToToggle.classList.toggle("hidden");
|
||||||
document.getElementById("show-less-btn").classList.toggle("hidden");
|
|
||||||
}else{
|
|
||||||
document.getElementById("show-more-btn").classList.toggle("hidden");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+3
File diff suppressed because one or more lines are too long
+34
-21
@@ -1,5 +1,36 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
const updateNavBar = () => {
|
||||||
|
if ($(document).scrollTop() > 40) {
|
||||||
|
$('#top-navbar').removeClass('initial-navbar');
|
||||||
|
$('#top-navbar').addClass('final-navbar shadow');
|
||||||
|
|
||||||
|
$('#navbar-toggler').removeClass('navbar-dark');
|
||||||
|
$('#navbar-toggler').addClass('navbar-light');
|
||||||
|
|
||||||
|
// get the main logo from hidden img tag
|
||||||
|
let mainLogo = document.getElementById("main-logo")
|
||||||
|
if (mainLogo !== null) {
|
||||||
|
let logoURL = mainLogo.getAttribute("src");
|
||||||
|
$('#logo').attr("src", logoURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$('#top-navbar').removeClass('final-navbar shadow');
|
||||||
|
$('#top-navbar').addClass('initial-navbar');
|
||||||
|
|
||||||
|
$('#navbar-toggler').removeClass('navbar-light');
|
||||||
|
$('#navbar-toggler').addClass('navbar-dark');
|
||||||
|
|
||||||
|
// get the inverted logo from hidden img tag
|
||||||
|
let invertedLogo = document.getElementById("inverted-logo")
|
||||||
|
if (invertedLogo !== null) {
|
||||||
|
let logoURL = invertedLogo.getAttribute("src");
|
||||||
|
$('#logo').attr("src", logoURL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
(function ($) {
|
(function ($) {
|
||||||
jQuery(document).ready(function () {
|
jQuery(document).ready(function () {
|
||||||
|
|
||||||
@@ -8,27 +39,7 @@
|
|||||||
// When the user scrolls down 80px from the top of the document, resize the navbar's padding and the logo's font size
|
// When the user scrolls down 80px from the top of the document, resize the navbar's padding and the logo's font size
|
||||||
// $.onscroll = function() {scrollFunction()};
|
// $.onscroll = function() {scrollFunction()};
|
||||||
$(document).scroll(function () {
|
$(document).scroll(function () {
|
||||||
if ($(document).scrollTop() > 40) {
|
updateNavBar();
|
||||||
$('#top-navbar').removeClass('initial-navbar');
|
|
||||||
$('#top-navbar').addClass('final-navbar shadow');
|
|
||||||
|
|
||||||
$('#navbar-toggler').removeClass('navbar-dark');
|
|
||||||
$('#navbar-toggler').addClass('navbar-light');
|
|
||||||
|
|
||||||
// get the main logo from hidden img tag
|
|
||||||
let mainLogo = document.getElementById("main-logo").getAttribute("src");
|
|
||||||
$('#logo').attr("src", mainLogo);
|
|
||||||
} else {
|
|
||||||
$('#top-navbar').removeClass('final-navbar shadow');
|
|
||||||
$('#top-navbar').addClass('initial-navbar');
|
|
||||||
|
|
||||||
$('#navbar-toggler').removeClass('navbar-light');
|
|
||||||
$('#navbar-toggler').addClass('navbar-dark');
|
|
||||||
|
|
||||||
// get the inverted logo from hidden img tag
|
|
||||||
let invertedLogo = document.getElementById("inverted-logo").getAttribute("src");
|
|
||||||
$('#logo').attr("src", invertedLogo);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Creates a click handler to collapse the navigation when
|
// Creates a click handler to collapse the navigation when
|
||||||
@@ -39,6 +50,8 @@
|
|||||||
$('.navbar-collapse').collapse('hide');
|
$('.navbar-collapse').collapse('hide');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateNavBar();
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var a={};return function(){n.d(a,{default:function(){return s}});var e=n(771),t=n.n(e),r=function(e,t,r){for(var n=r,a=0,i=e.length;n<t.length;){var o=t[n];if(a<=0&&t.slice(n,n+i)===e)return n;"\\"===o?n++:"{"===o?a++:"}"===o&&a--,n++}return-1},i=/^\\begin{/,o=function(e,t){for(var n,a=[],o=new RegExp("("+t.map((function(e){return e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")})).join("|")+")");-1!==(n=e.search(o));){n>0&&(a.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));var l=t.findIndex((function(t){return e.startsWith(t.left)}));if(-1===(n=r(t[l].right,e,t[l].left.length)))break;var d=e.slice(0,n+t[l].right.length),s=i.test(d)?d:e.slice(t[l].left.length,n);a.push({type:"math",data:s,rawData:d,display:t[l].display}),e=e.slice(n+t[l].right.length)}return""!==e&&a.push({type:"text",data:e}),a},l=function(e,r){var n=o(e,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;for(var a=document.createDocumentFragment(),i=0;i<n.length;i++)if("text"===n[i].type)a.appendChild(document.createTextNode(n[i].data));else{var l=document.createElement("span"),d=n[i].data;r.displayMode=n[i].display;try{r.preProcess&&(d=r.preProcess(d)),t().render(d,l,r)}catch(e){if(!(e instanceof t().ParseError))throw e;r.errorCallback("KaTeX auto-render: Failed to parse `"+n[i].data+"` with ",e),a.appendChild(document.createTextNode(n[i].rawData));continue}a.appendChild(l)}return a},d=function e(t,r){for(var n=0;n<t.childNodes.length;n++){var a=t.childNodes[n];if(3===a.nodeType){var i=l(a.textContent,r);i&&(n+=i.childNodes.length-1,t.replaceChild(i,a))}else 1===a.nodeType&&function(){var t=" "+a.className+" ";-1===r.ignoredTags.indexOf(a.nodeName.toLowerCase())&&r.ignoredClasses.every((function(e){return-1===t.indexOf(" "+e+" ")}))&&e(a,r)}()}},s=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},d(e,r)}}(),a=a.default}()}));
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user