Compare commits
85 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 |
@@ -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.4.0
|
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.1
|
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.13
|
- 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
|
||||||
|
|
||||||
|
|||||||
@@ -118,3 +118,6 @@ other = "নোট সমূহ"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "দায় বিজ্ঞপ্তি"
|
other = "দায় বিজ্ঞপ্তি"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "অনুসন্ধান করুন"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Notizen"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Haftungshinweis"
|
other = "Haftungshinweis"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Suche"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Notes"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Liability Notice"
|
other = "Liability Notice"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Search"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Notas"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Aviso de responsabilidad"
|
other = "Aviso de responsabilidad"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Búsqueda"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Remarques"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Avis de responsabilité"
|
other = "Avis de responsabilité"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Chercher"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "टिप्पणियाँ"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "दायित्व सूचना"
|
other = "दायित्व सूचना"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "खोज"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Catatan"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Pemberitahuan Kewajiban"
|
other = "Pemberitahuan Kewajiban"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Mencari"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Appunti"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Avviso di responsabilità"
|
other = "Avviso di responsabilità"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Ricerca"
|
||||||
|
|||||||
@@ -118,3 +118,6 @@ other = "ノート"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "責任通知"
|
other = "責任通知"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "検索"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "메모"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "책임 고지"
|
other = "책임 고지"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "찾다"
|
||||||
|
|||||||
@@ -120,3 +120,5 @@ other = "Opmerkingen"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Haftungshinweis"
|
other = "Haftungshinweis"
|
||||||
|
[search]
|
||||||
|
other = "Zoekopdracht"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Ноты"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Уведомление об ответственности"
|
other = "Уведомление об ответственности"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Поиск"
|
||||||
|
|||||||
@@ -121,3 +121,6 @@ other = "Ghi chú"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "Thông báo trách nhiệm"
|
other = "Thông báo trách nhiệm"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "Tìm kiếm"
|
||||||
|
|||||||
+5
-2
@@ -53,8 +53,8 @@ other = "上一篇"
|
|||||||
[next]
|
[next]
|
||||||
other = "下一篇"
|
other = "下一篇"
|
||||||
|
|
||||||
# [share_on]
|
[share_on]
|
||||||
# other = "Share on"
|
other = "分享"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "改善此页面"
|
other = "改善此页面"
|
||||||
@@ -121,3 +121,6 @@ other = "笔记"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "免责声明"
|
other = "免责声明"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "搜索"
|
||||||
|
|||||||
+5
-2
@@ -53,8 +53,8 @@ other = "上一篇"
|
|||||||
[next]
|
[next]
|
||||||
other = "下一篇"
|
other = "下一篇"
|
||||||
|
|
||||||
# [share_on]
|
[share_on]
|
||||||
# other = "Share on"
|
other = "分享"
|
||||||
|
|
||||||
[improve_this_page]
|
[improve_this_page]
|
||||||
other = "改善此頁面"
|
other = "改善此頁面"
|
||||||
@@ -121,3 +121,6 @@ other = "筆記"
|
|||||||
|
|
||||||
[disclaimer_text]
|
[disclaimer_text]
|
||||||
other = "免責聲明"
|
other = "免責聲明"
|
||||||
|
|
||||||
|
[search]
|
||||||
|
other = "搜索"
|
||||||
|
|||||||
@@ -9,16 +9,9 @@
|
|||||||
<!------ ADD PAGE SPECIFIC HEADERS ------->
|
<!------ ADD PAGE SPECIFIC HEADERS ------->
|
||||||
{{ block "header" . }} {{ end }}
|
{{ block "header" . }} {{ end }}
|
||||||
|
|
||||||
<!-- ADD GOOGLE ANALYTICS IF ENABLED -->
|
<!--================= add analytics if enabled =========================-->
|
||||||
{{ if site.GoogleAnalytics }}
|
{{- partial "analytics.html" . -}}
|
||||||
<!-- Google Analytics v3 ID -->
|
|
||||||
{{ if hasPrefix site.GoogleAnalytics "UA-"}}
|
|
||||||
{{ template "_internal/google_analytics_async.html" . }}
|
|
||||||
{{ else }}
|
|
||||||
<!-- Google Analytics v4 ID -->
|
|
||||||
{{ template "_internal/google_analytics.html" . }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
|
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
|
||||||
@@ -45,5 +38,9 @@
|
|||||||
|
|
||||||
<!------- ADD PAGE SPECIFIC SCRIPTS ------>
|
<!------- ADD PAGE SPECIFIC SCRIPTS ------>
|
||||||
{{ block "scripts" . }} {{ end }}
|
{{ block "scripts" . }} {{ end }}
|
||||||
|
|
||||||
|
<!------ IF WANTED, ADD SUPPORT LINKS -------->
|
||||||
|
{{- partial "misc/support.html" . -}}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -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,7 +48,7 @@
|
|||||||
<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">
|
||||||
@@ -155,10 +155,30 @@
|
|||||||
<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>
|
||||||
@@ -190,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 }}
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
+6
-10
@@ -29,16 +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" . -}}
|
||||||
<!-- Google Analytics v3 ID -->
|
|
||||||
{{ if hasPrefix site.GoogleAnalytics "UA-"}}
|
|
||||||
{{ template "_internal/google_analytics_async.html" . }}
|
|
||||||
{{ else }}
|
|
||||||
<!-- Google Analytics v4 ID -->
|
|
||||||
{{ template "_internal/google_analytics.html" . }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</head>
|
</head>
|
||||||
<body data-spy="scroll" data-target="#top-navbar" data-offset="100">
|
<body data-spy="scroll" data-target="#top-navbar" data-offset="100">
|
||||||
|
|
||||||
@@ -87,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 }}
|
||||||
@@ -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 }}
|
||||||
@@ -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>
|
||||||
@@ -128,6 +159,7 @@
|
|||||||
<input type='hidden' name='schedule_type' value='1' />
|
<input type='hidden' name='schedule_type' value='1' />
|
||||||
<small id="emailHelp" class="form-text text-muted">{{ i18n "newsletter_warning" }}</small>
|
<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>
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -9,9 +9,11 @@
|
|||||||
<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 =========================-->
|
||||||
{{/* add favicon only if the site author has provided the the favicon */}}
|
{{/* add favicon only if the site author has provided the the favicon */}}
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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,6 +1,7 @@
|
|||||||
{{/* 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 }}
|
||||||
@@ -71,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 }}
|
||||||
@@ -114,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" . }}
|
||||||
|
|||||||
@@ -31,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,9 +3,13 @@
|
|||||||
{{ $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">
|
||||||
|
|||||||
@@ -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 }}"
|
||||||
|
|||||||
@@ -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 }}"
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -9,9 +9,13 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
<div class="container-fluid anchor pb-5 recent-posts-section" id="{{ $sectionID }}">
|
<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">
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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">
|
||||||
|
|||||||
Generated
+99
-105
@@ -8,8 +8,8 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.3.5",
|
"autoprefixer": "^10.4.2",
|
||||||
"postcss": "^8.3.7",
|
"postcss": "^8.4.8",
|
||||||
"postcss-cli": "^8.3.1"
|
"postcss-cli": "^8.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -104,17 +104,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/autoprefixer": {
|
"node_modules/autoprefixer": {
|
||||||
"version": "10.3.5",
|
"version": "10.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz",
|
||||||
"integrity": "sha512-2H5kQSsyoOMdIehTzIt/sC9ZDIgWqlkG/dbevm9B9xQZ1TDPBHpNUDW5ENqqQQzuaBWEo75JkV0LJe+o5Lnr5g==",
|
"integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browserslist": "^4.17.1",
|
"browserslist": "^4.19.1",
|
||||||
"caniuse-lite": "^1.0.30001259",
|
"caniuse-lite": "^1.0.30001297",
|
||||||
"fraction.js": "^4.1.1",
|
"fraction.js": "^4.1.2",
|
||||||
"nanocolors": "^0.1.5",
|
|
||||||
"normalize-range": "^0.1.2",
|
"normalize-range": "^0.1.2",
|
||||||
"postcss-value-parser": "^4.1.0"
|
"picocolors": "^1.0.0",
|
||||||
|
"postcss-value-parser": "^4.2.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"autoprefixer": "bin/autoprefixer"
|
"autoprefixer": "bin/autoprefixer"
|
||||||
@@ -152,16 +152,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.17.1",
|
"version": "4.19.1",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
|
||||||
"integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==",
|
"integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"caniuse-lite": "^1.0.30001259",
|
"caniuse-lite": "^1.0.30001286",
|
||||||
"electron-to-chromium": "^1.3.846",
|
"electron-to-chromium": "^1.4.17",
|
||||||
"escalade": "^3.1.1",
|
"escalade": "^3.1.1",
|
||||||
"nanocolors": "^0.1.5",
|
"node-releases": "^2.0.1",
|
||||||
"node-releases": "^1.1.76"
|
"picocolors": "^1.0.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"browserslist": "cli.js"
|
"browserslist": "cli.js"
|
||||||
@@ -175,13 +175,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001260",
|
"version": "1.0.30001299",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001260.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz",
|
||||||
"integrity": "sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg==",
|
"integrity": "sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
|
||||||
"nanocolors": "^0.1.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
"url": "https://opencollective.com/browserslist"
|
"url": "https://opencollective.com/browserslist"
|
||||||
@@ -281,9 +278,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.3.849",
|
"version": "1.4.33",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.849.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.33.tgz",
|
||||||
"integrity": "sha512-RweyW60HPOqIcxoKTGr38Yvtf2aliSUqX8dB3e9geJ0Bno0YLjcOX5F7/DPVloBkJWaPZ7xOM1A0Yme2T1A34w==",
|
"integrity": "sha512-OVK1Ad3pHnmuXPhEfq85X8vUKr1UPNHryBnbKnyLcAfh8dPwoFjoDhDlP5KpPJIiymvSucZs48UBrE1250IxOw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
@@ -339,9 +336,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fraction.js": {
|
"node_modules/fraction.js": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz",
|
||||||
"integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==",
|
"integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "*"
|
"node": "*"
|
||||||
@@ -605,16 +602,10 @@
|
|||||||
"node": ">=8.6"
|
"node": ">=8.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/nanocolors": {
|
|
||||||
"version": "0.1.12",
|
|
||||||
"resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz",
|
|
||||||
"integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.1.25",
|
"version": "3.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
|
||||||
"integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
|
"integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"nanoid": "bin/nanoid.cjs"
|
"nanoid": "bin/nanoid.cjs"
|
||||||
@@ -624,9 +615,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
"version": "1.1.76",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
|
||||||
"integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==",
|
"integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/normalize-path": {
|
"node_modules/normalize-path": {
|
||||||
@@ -656,6 +647,12 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/picomatch": {
|
"node_modules/picomatch": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
||||||
@@ -678,14 +675,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.3.7",
|
"version": "8.4.8",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.8.tgz",
|
||||||
"integrity": "sha512-9SaY7nnyQ63/WittqZYAvkkYPyKxchMKH71UDzeTmWuLSvxTRpeEeABZAzlCi55cuGcoFyoV/amX2BdsafQidQ==",
|
"integrity": "sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanocolors": "^0.1.5",
|
"nanoid": "^3.3.1",
|
||||||
"nanoid": "^3.1.25",
|
"picocolors": "^1.0.0",
|
||||||
"source-map-js": "^0.6.2"
|
"source-map-js": "^1.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
@@ -775,9 +772,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-value-parser": {
|
"node_modules/postcss-value-parser": {
|
||||||
"version": "4.1.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||||
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
|
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/pretty-hrtime": {
|
"node_modules/pretty-hrtime": {
|
||||||
@@ -891,9 +888,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/source-map-js": {
|
"node_modules/source-map-js": {
|
||||||
"version": "0.6.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||||
"integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
|
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -1086,17 +1083,17 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"autoprefixer": {
|
"autoprefixer": {
|
||||||
"version": "10.3.5",
|
"version": "10.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz",
|
||||||
"integrity": "sha512-2H5kQSsyoOMdIehTzIt/sC9ZDIgWqlkG/dbevm9B9xQZ1TDPBHpNUDW5ENqqQQzuaBWEo75JkV0LJe+o5Lnr5g==",
|
"integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"browserslist": "^4.17.1",
|
"browserslist": "^4.19.1",
|
||||||
"caniuse-lite": "^1.0.30001259",
|
"caniuse-lite": "^1.0.30001297",
|
||||||
"fraction.js": "^4.1.1",
|
"fraction.js": "^4.1.2",
|
||||||
"nanocolors": "^0.1.5",
|
|
||||||
"normalize-range": "^0.1.2",
|
"normalize-range": "^0.1.2",
|
||||||
"postcss-value-parser": "^4.1.0"
|
"picocolors": "^1.0.0",
|
||||||
|
"postcss-value-parser": "^4.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"binary-extensions": {
|
"binary-extensions": {
|
||||||
@@ -1115,26 +1112,23 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"browserslist": {
|
"browserslist": {
|
||||||
"version": "4.17.1",
|
"version": "4.19.1",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
|
||||||
"integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==",
|
"integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"caniuse-lite": "^1.0.30001259",
|
"caniuse-lite": "^1.0.30001286",
|
||||||
"electron-to-chromium": "^1.3.846",
|
"electron-to-chromium": "^1.4.17",
|
||||||
"escalade": "^3.1.1",
|
"escalade": "^3.1.1",
|
||||||
"nanocolors": "^0.1.5",
|
"node-releases": "^2.0.1",
|
||||||
"node-releases": "^1.1.76"
|
"picocolors": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001260",
|
"version": "1.0.30001299",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001260.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz",
|
||||||
"integrity": "sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg==",
|
"integrity": "sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"requires": {
|
|
||||||
"nanocolors": "^0.1.0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
@@ -1210,9 +1204,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-to-chromium": {
|
"electron-to-chromium": {
|
||||||
"version": "1.3.849",
|
"version": "1.4.33",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.849.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.33.tgz",
|
||||||
"integrity": "sha512-RweyW60HPOqIcxoKTGr38Yvtf2aliSUqX8dB3e9geJ0Bno0YLjcOX5F7/DPVloBkJWaPZ7xOM1A0Yme2T1A34w==",
|
"integrity": "sha512-OVK1Ad3pHnmuXPhEfq85X8vUKr1UPNHryBnbKnyLcAfh8dPwoFjoDhDlP5KpPJIiymvSucZs48UBrE1250IxOw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"emoji-regex": {
|
"emoji-regex": {
|
||||||
@@ -1259,9 +1253,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fraction.js": {
|
"fraction.js": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz",
|
||||||
"integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==",
|
"integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"fs-extra": {
|
"fs-extra": {
|
||||||
@@ -1452,22 +1446,16 @@
|
|||||||
"picomatch": "^2.2.3"
|
"picomatch": "^2.2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nanocolors": {
|
|
||||||
"version": "0.1.12",
|
|
||||||
"resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz",
|
|
||||||
"integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"nanoid": {
|
"nanoid": {
|
||||||
"version": "3.1.25",
|
"version": "3.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
|
||||||
"integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
|
"integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node-releases": {
|
"node-releases": {
|
||||||
"version": "1.1.76",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
|
||||||
"integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==",
|
"integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"normalize-path": {
|
"normalize-path": {
|
||||||
@@ -1488,6 +1476,12 @@
|
|||||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"picocolors": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"picomatch": {
|
"picomatch": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
||||||
@@ -1501,14 +1495,14 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"postcss": {
|
"postcss": {
|
||||||
"version": "8.3.7",
|
"version": "8.4.8",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.8.tgz",
|
||||||
"integrity": "sha512-9SaY7nnyQ63/WittqZYAvkkYPyKxchMKH71UDzeTmWuLSvxTRpeEeABZAzlCi55cuGcoFyoV/amX2BdsafQidQ==",
|
"integrity": "sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"nanocolors": "^0.1.5",
|
"nanoid": "^3.3.1",
|
||||||
"nanoid": "^3.1.25",
|
"picocolors": "^1.0.0",
|
||||||
"source-map-js": "^0.6.2"
|
"source-map-js": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postcss-cli": {
|
"postcss-cli": {
|
||||||
@@ -1557,9 +1551,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postcss-value-parser": {
|
"postcss-value-parser": {
|
||||||
"version": "4.1.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||||
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
|
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"pretty-hrtime": {
|
"pretty-hrtime": {
|
||||||
@@ -1626,9 +1620,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"source-map-js": {
|
"source-map-js": {
|
||||||
"version": "0.6.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||||
"integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
|
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"string-width": {
|
"string-width": {
|
||||||
|
|||||||
+2
-2
@@ -17,8 +17,8 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/hossainemruz/toha#readme",
|
"homepage": "https://github.com/hossainemruz/toha#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.3.5",
|
"autoprefixer": "^10.4.2",
|
||||||
"postcss": "^8.3.7",
|
"postcss": "^8.4.8",
|
||||||
"postcss-cli": "^8.3.1"
|
"postcss-cli": "^8.3.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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%;
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
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.
@@ -338,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
-28
@@ -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,34 +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")
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Creates a click handler to collapse the navigation when
|
// Creates a click handler to collapse the navigation when
|
||||||
@@ -46,6 +50,8 @@
|
|||||||
$('.navbar-collapse').collapse('hide');
|
$('.navbar-collapse').collapse('hide');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateNavBar();
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
|||||||
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.
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.
Binary file not shown.
Binary file not shown.
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