Ver Fonte

Merge https://github.com/gcushen/hugo-academic

Xℹ Ruoyao há 5 anos atrás
pai
commit
91374494a6
65 ficheiros alterados com 1802 adições e 178 exclusões
  1. 1 1
      .github/FUNDING.yml
  2. 26 12
      README.md
  3. 2 2
      archetypes/authors/_index.md
  4. 44 14
      assets/js/academic.js
  5. 6 0
      assets/scss/academic/_content.scss
  6. 18 0
      assets/scss/academic/_footer
  7. 13 9
      assets/scss/academic/_nav.scss
  8. 9 0
      assets/scss/academic/_rtl.scss
  9. 3 0
      assets/scss/academic/academic.scss
  10. 13 0
      assets/scss/academic/icons.scss
  11. 2 2
      data/assets.toml
  12. 14 0
      data/fonts/native.toml
  13. 4 0
      data/i18n/languages.yaml
  14. 2 0
      data/i18n/rtl.toml
  15. 1 1
      data/page_sharer.toml
  16. 0 0
      exampleSite/assets/images/icon-pack/.gitkeep
  17. 37 2
      exampleSite/config/_default/config.toml
  18. 22 1
      exampleSite/config/_default/params.toml
  19. 1 1
      exampleSite/content/authors/admin/_index.md
  20. 75 0
      exampleSite/content/authors/吳恩達/_index.md
  21. BIN
      exampleSite/content/authors/吳恩達/avatar.jpg
  22. 16 0
      exampleSite/content/home/skills.md
  23. 3 0
      exampleSite/content/post/getting-started/index.md
  24. 17 3
      exampleSite/content/post/writing-technical-content/index.md
  25. 3 0
      exampleSite/content/publication/journal-article/index.md
  26. 235 0
      exampleSite/static/admin/config.yml
  27. 14 0
      exampleSite/static/admin/index.html
  28. 237 0
      i18n/ar.yaml
  29. 5 5
      i18n/cs.yaml
  30. 15 1
      i18n/en.yaml
  31. 5 5
      i18n/eu.yaml
  32. 236 0
      i18n/fa.yaml
  33. 236 0
      i18n/lt.yaml
  34. 37 37
      i18n/nl.yaml
  35. 236 0
      i18n/so.yaml
  36. BIN
      images/tn.png
  37. 2 1
      layouts/_default/baseof.html
  38. 1 1
      layouts/authors/terms.html
  39. 2 4
      layouts/index.json
  40. 2 0
      layouts/partials/docs_layout.html
  41. 1 1
      layouts/partials/functions/get_author_name.html
  42. 1 1
      layouts/partials/li_card.html
  43. 1 1
      layouts/partials/li_compact.html
  44. 17 4
      layouts/partials/navbar.html
  45. 21 19
      layouts/partials/page_author_card.html
  46. 2 1
      layouts/partials/page_edit.html
  47. 1 13
      layouts/partials/page_footer.html
  48. 3 3
      layouts/partials/page_metadata.html
  49. 9 4
      layouts/partials/page_metadata_authors.html
  50. 16 0
      layouts/partials/page_related.html
  51. 6 1
      layouts/partials/site_footer.html
  52. 45 0
      layouts/partials/site_footer_license.html
  53. 14 7
      layouts/partials/site_head.html
  54. 17 1
      layouts/partials/site_js.html
  55. 3 3
      layouts/partials/tags.html
  56. 15 6
      layouts/partials/widget_page.html
  57. 4 4
      layouts/partials/widgets/about.html
  58. 12 1
      layouts/partials/widgets/featurette.html
  59. 1 1
      layouts/partials/widgets/people.html
  60. 1 1
      layouts/publication/single.html
  61. 1 1
      layouts/shortcodes/figure.html
  62. 1 1
      layouts/shortcodes/mention.html
  63. 13 0
      layouts/shortcodes/spoiler.html
  64. 1 1
      netlify.toml
  65. 1 1
      theme.toml

+ 1 - 1
.github/FUNDING.yml

@@ -1,6 +1,6 @@
 # These are supported funding model platforms
 
-github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+github: gcushen # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
 patreon: cushen
 open_collective: # Replace with a single Open Collective username
 ko_fi: # Replace with a single Ko-fi username

+ 26 - 12
README.md

@@ -6,7 +6,7 @@
 
 **Create a free website with Academic using Markdown, Jupyter, or RStudio. Choose a beautiful color theme and build anything with the Page Builder - over 50 _widgets_, _themes_, and _language packs_ included!**
 
-[Check out the latest **demo**](https://academic-demo.netlify.com/) of what you'll get in less than 10 minutes, or [view the **showcase**](https://sourcethemes.com/academic/#expo) of personal, project, and business sites.
+[Check out the latest **demo**](https://academic-demo.netlify.app) of what you'll get in less than 10 minutes, or [view the **showcase**](https://sourcethemes.com/academic/#expo) of personal, project, and business sites.
 
 - 👉 [**Get Started**](https://sourcethemes.com/academic/docs/install/)
 - 📚 [View the **documentation**](https://sourcethemes.com/academic/docs/)
@@ -16,7 +16,7 @@
 - ⬆️ **Updating?** View the [Update Guide](https://sourcethemes.com/academic/docs/update/) and [Release Notes](https://sourcethemes.com/academic/updates/)
 - :heart: **Support development** of Academic:
   - ☕️ [**Donate a coffee**](https://paypal.me/cushen)
-  - 💵 [Become a backer on **Patreon**](https://www.patreon.com/cushen)
+  - 💵 [Become a backer on **Patreon** and **unlock rewards**](https://www.patreon.com/cushen)
   - 🖼️ [Decorate your laptop or journal with an Academic **sticker**](https://www.redbubble.com/people/neutreno/works/34387919-academic)
   - 👕 [Wear the **T-shirt**](https://academic.threadless.com/)
   - :woman_technologist: [**Contribute**](https://sourcethemes.com/academic/docs/contribute/)
@@ -43,7 +43,7 @@
 
 ## Themes
 
-Academic comes with **automatic day (light) and night (dark) mode** built-in. Alternatively, click the sun/moon icon in the top right of the [Demo](https://academic-demo.netlify.com/) to set your preferred mode!
+Academic comes with **automatic day (light) and night (dark) mode** built-in. Alternatively, click the sun/moon icon in the top right of the [Demo](https://academic-demo.netlify.app) to set your preferred mode!
 
 Choose a stunning theme for your site and [customize it](https://sourcethemes.com/academic/docs/customization/#custom-theme) to your liking:
 
@@ -53,7 +53,7 @@ Choose a stunning theme for your site and [customize it](https://sourcethemes.co
 
 ## The Future of Technical Content Writing
 
-[![Writing technical content](https://sourcethemes.com/academic/img/docs/writing-technical-content.gif)](https://academic-demo.netlify.com/post/writing-technical-content/)
+[![Writing technical content](https://sourcethemes.com/academic/img/docs/writing-technical-content.gif)](https://academic-demo.netlify.apppost/writing-technical-content/)
 
 ## Ecosystem
 
@@ -71,18 +71,32 @@ You can choose from one of the following four methods to install:
 
 ### Install with web browser
 
-[Install Academic with Netlify](https://app.netlify.com/start/deploy?repository=https://github.com/sourcethemes/academic-kickstart)
-  * One-click install of Academic creates an `academic-kickstart` repository in your GitHub or GitLab account
-  * Netlify will provide you with a customizable URL to access your new site, [or get your own domain](https://sourcethemes.com/academic/docs/domain/)
-  * Shortly after editing content in your repository, your site will automatically update
-  * Optionally, to edit your site in a [Markdown editor](https://www.typora.io) on your computer, perform the steps in the [*Install with Git*](#install-with-git) section below
+[**Create your site now with Netlify** :rocket:](https://app.netlify.com/start/deploy?repository=https://github.com/sourcethemes/academic-kickstart)
+
+* One-click install of Academic creates an `academic-kickstart` repository in your GitHub or GitLab account
+* Netlify will provide you with a customizable URL to access your new site, [or get your own domain](https://sourcethemes.com/academic/docs/domain/)
+* Around 1-5 minutes after editing content in your repository, your site will automatically update
+  - If your site fails to update, [login to Netlify](https://www.netlify.com/), click your site, go to **Deploys**, and review the latest deploy log for any errors
+* To **easily edit your site in a rich online editor in your browser**,
+  - [Login to Netlify](https://www.netlify.com/) and click the site you deployed with Netlify
+  - Go to **Settings > Identity**, and select **Enable Identity** service
+  - Under **Registration** preferences, select **Invite Only**
+  - Scroll down to **Services > Git Gateway**, and click **Enable Git Gateway**
+  - Head over to **`YOUR_SITE.com/admin/`** to view your content management panel and begin publishing content
+  - For support with _Netlify CMS_ admin panel, refer to the [Netlify CMS docs](https://www.netlifycms.org/docs/add-to-your-site/#authentication) and the very active [Netlify CMS community](https://www.netlifycms.org/community/)
+* To edit your site in a [Markdown editor](https://www.typora.io) on your computer,
+  - Perform the steps in the [*Install with Git*](#install-with-git) section below
+
+Once you have followed the link above to automatically install Academic, head on over to your new `academic-kickstart` repository in your GitHub (or GitLab) account and [personalize your site by editing the files in](https://sourcethemes.com/academic/docs/get-started/) `config/_default/`. Shortly after saving (i.e. *committing* a file), your site will automatically update.
+   
+View the [Homepage Builder](https://sourcethemes.com/academic/docs/page-builder/) and [Content](https://sourcethemes.com/academic/docs/managing-content/) guides to learn how to add widgets and content. For inspiration, refer to the [Markdown content](https://github.com/gcushen/hugo-academic/tree/master/exampleSite) which powers the [Demo](https://academic-demo.netlify.app).
 
 ### Install with Git
 
 Prerequisites:
 
 * [Download and install Git](https://git-scm.com/downloads)
-* [Download and install Hugo Extended v0.63.1+](https://gohugo.io/getting-started/installing/#quick-install)
+* [Download and install Hugo Extended v0.65-v0.72](https://gohugo.io/getting-started/installing/#quick-install)
 
 Install:
 
@@ -105,7 +119,7 @@ Install:
 
 Prerequisites:
 
-* [Download and install Hugo Extended v0.63.1+](https://gohugo.io/getting-started/installing/#quick-install)
+* [Download and install Hugo Extended v0.65-v0.72](https://gohugo.io/getting-started/installing/#quick-install)
 
 Install:
 
@@ -118,7 +132,7 @@ Install:
 
 ## Demo content
 
-For inspiration, refer to the [Markdown content](https://github.com/gcushen/hugo-academic/tree/master/exampleSite) which powers the [Demo](https://academic-demo.netlify.com/).
+For inspiration, refer to the [Markdown content](https://github.com/gcushen/hugo-academic/tree/master/exampleSite) which powers the [Demo](https://academic-demo.netlify.app).
 
 If you wish to initialise your site with the demo content, copy the contents of the `themes/academic/exampleSite/` folder to your website root folder, overwriting existing files if necessary. The `exampleSite` folder contains an example config file and content to help you get started. The following command can be used to accomplish this:
 

+ 2 - 2
archetypes/authors/_index.md

@@ -1,10 +1,10 @@
 ---
 # Display name
-name: "{{ replace .Name "-" " " | title }}"
+title: "{{ replace .Name "-" " " | title }}"
 
 # Username (this should match the folder name and the name on publications)
 authors:
-- Name "{{ replace .Name "-" " " | title }}"
+- "{{ urlize .Name }}"
 
 # Is this the primary user of the site?
 superuser: false

+ 44 - 14
assets/js/academic.js

@@ -338,26 +338,26 @@
 
   function canChangeTheme() {
     // If the theme changer component is present, then user is allowed to change the theme variation.
-    return $('.js-dark-toggle').length;
+    return $('.js-theme-selector').length;
   }
 
   function getThemeMode() {
     return parseInt(localStorage.getItem('dark_mode') || 2);
   }
 
-  function changeThemeModeClick() {
+  function changeThemeModeClick(newMode) {
+    console.info('Request to set theme.');
     if (!canChangeTheme()) {
+      console.info('Cannot set theme - admin disabled theme selector.');
       return;
     }
-    let $themeChanger = $('.js-dark-toggle i');
-    let currentThemeMode = getThemeMode();
     let isDarkTheme;
-    switch (currentThemeMode) {
+    switch (newMode) {
       case 0:
         localStorage.setItem('dark_mode', '1');
         isDarkTheme = 1;
         console.info('User changed theme variation to Dark.');
-        $themeChanger.removeClass('fa-moon fa-sun').addClass('fa-palette');
+        showActiveTheme(0);
         break;
       case 1:
         localStorage.setItem('dark_mode', '2');
@@ -371,18 +371,41 @@
           isDarkTheme = isSiteThemeDark;  // Use the site's default theme variation based on `light` in the theme file.
         }
         console.info('User changed theme variation to Auto.');
-        $themeChanger.removeClass('fa-moon fa-palette').addClass('fa-sun');
+        showActiveTheme(1);
         break;
       default:
         localStorage.setItem('dark_mode', '0');
         isDarkTheme = 0;
         console.info('User changed theme variation to Light.');
-        $themeChanger.removeClass('fa-sun fa-palette').addClass('fa-moon');
+        showActiveTheme(2);
         break;
     }
     renderThemeVariation(isDarkTheme);
   }
 
+  function showActiveTheme(mode){
+    switch (mode) {
+      case 0:
+        // Dark.
+        $('.js-set-theme-light').removeClass('dropdown-item-active');
+        $('.js-set-theme-dark').addClass('dropdown-item-active');
+        $('.js-set-theme-auto').removeClass('dropdown-item-active');
+        break;
+      case 1:
+        // Auto.
+        $('.js-set-theme-light').removeClass('dropdown-item-active');
+        $('.js-set-theme-dark').removeClass('dropdown-item-active');
+        $('.js-set-theme-auto').addClass('dropdown-item-active');
+        break;
+      default:
+        // Light.
+        $('.js-set-theme-light').addClass('dropdown-item-active');
+        $('.js-set-theme-dark').removeClass('dropdown-item-active');
+        $('.js-set-theme-auto').removeClass('dropdown-item-active');
+        break;
+    }
+  }
+
   function getThemeVariation() {
     if (!canChangeTheme()) {
       return isSiteThemeDark;  // Use the site's default theme variation based on `light` in the theme file.
@@ -477,18 +500,17 @@
     // If theme changer component present, set its icon according to the theme mode (day, night, or auto).
     if (canChangeTheme) {
       let themeMode = getThemeMode();
-      let $themeChanger = $('.js-dark-toggle i');
       switch (themeMode) {
         case 0:
-          $themeChanger.removeClass('fa-sun fa-palette').addClass('fa-moon');
+          showActiveTheme(2);
           console.info('Initialize theme variation to Light.');
           break;
         case 1:
-          $themeChanger.removeClass('fa-moon fa-sun').addClass('fa-palette');
+          showActiveTheme(0);
           console.info('Initialize theme variation to Dark.');
           break;
         default:
-          $themeChanger.removeClass('fa-moon fa-palette').addClass('fa-sun');
+          showActiveTheme(1);
           console.info('Initialize theme variation to Auto.');
           break;
       }
@@ -568,9 +590,17 @@
     initThemeVariation();
 
     // Change theme mode.
-    $('.js-dark-toggle').click(function (e) {
+    $('.js-set-theme-light').click(function (e) {
+      e.preventDefault();
+      changeThemeModeClick(2);
+    });
+    $('.js-set-theme-dark').click(function (e) {
+      e.preventDefault();
+      changeThemeModeClick(0);
+    });
+    $('.js-set-theme-auto').click(function (e) {
       e.preventDefault();
-      changeThemeModeClick();
+      changeThemeModeClick(1);
     });
 
     // Live update of day/night mode on system preferences update (no refresh required).

+ 6 - 0
assets/scss/academic/_content.scss

@@ -117,6 +117,12 @@ article .article-metadata {
   color: $sta-primary;
 }
 
+.article-metadata .author-notes {
+  cursor: help;
+  vertical-align: super;
+  font-size: 0.7em;
+}
+
 .article-categories {
   white-space: nowrap; /* Keep category icon on same line as category links, otherwise context lost. */
 }

+ 18 - 0
assets/scss/academic/_footer

@@ -0,0 +1,18 @@
+.footer-license-icons {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: center;
+  list-style: none;
+  height: auto;
+  width: auto;
+  font-size: 0;  // Hack to remove space characters between icons without using UL.
+  text-decoration: none;
+}
+
+.footer-license-icons img {
+ display: inline-flex;
+  margin-right: 8px;
+  height: 22px;
+  vertical-align: text-bottom;
+}

+ 13 - 9
assets/scss/academic/_nav.scss

@@ -59,9 +59,9 @@
     font-size: #{$sta-font-size-small}px;
   }
 
-  // Note: dedicated `i18n-active` class to prevent ScrollSpy removing `active` class from language chooser.
+  // Note: dedicated `dropdown-item-active` class to prevent ScrollSpy removing `active` class from language chooser.
   .dropdown-item.active,
-  .i18n-active {
+  .dropdown-item-active {
     font-weight: bold;
     color: $sta-menu-text-active !important;
   }
@@ -86,15 +86,19 @@
 
 @include media-breakpoint-down(md) {  /* Match breakpoint for i18n dropdown in navbar.html. */
   .i18n-dropdown .nav-link::after {
+    // Remove dropdown arrow on small devices (when language name isn't displayed).
     content: none;
   }
-  .i18n-dropdown .dropdown-menu {
-    /* Use style from uncollapsable dropdowns to prevent dropdown going off page. */
-    position: absolute;
-    /* Below style from .dropdown-menu-right to prevent dropdown going off page. */
-    right: 0;
-    left: auto;
-  }
+}
+
+// Prevent language and theme selectors rendering off page.
+.i18n-dropdown .dropdown-menu,
+.theme-dropdown .dropdown-menu {
+  /* Use style from uncollapsable dropdowns to prevent dropdown going off page. */
+  position: absolute;
+  /* Below style from .dropdown-menu-right to prevent dropdown going off page. */
+  right: 0;
+  left: auto;
 }
 
 // Allow user to horizontally scroll.

+ 9 - 0
assets/scss/academic/_rtl.scss

@@ -0,0 +1,9 @@
+/*************************************************
+ *  Style for right to left (RTL) languages.
+ **************************************************/
+
+html[dir="rtl"] {
+  body {
+    text-align: right;
+  }
+}

+ 3 - 0
assets/scss/academic/academic.scss

@@ -6,6 +6,8 @@
  **************************************************/
 
 @import "root";
+@import "icons";
+@import "footer";
 @import "nav";
 @import "card";
 @import "search";
@@ -15,3 +17,4 @@
 @import "docs";
 @import "dark";
 @import "integrations";
+@import "rtl";

+ 13 - 0
assets/scss/academic/icons.scss

@@ -0,0 +1,13 @@
+.svg-icon {
+  display: inline-flex;
+  align-self: center;
+}
+.svg-icon {
+  height:0.9em;
+  width:0.9em;
+}
+.svg-icon.svg-baseline {
+  bottom: 0.1em;
+  line-height: 1;
+  position: relative;
+}

+ 2 - 2
data/assets.toml

@@ -8,8 +8,8 @@
 # JavaScript
 
 [js.jQuery]
-  version = "3.4.1"
-  sri = "sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
+  version = "3.5.1"
+  sri = "sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
   url = "https://cdnjs.cloudflare.com/ajax/libs/jquery/%s/jquery.min.js"
 [js.highlight]
   version = "9.18.1"

+ 14 - 0
data/fonts/native.toml

@@ -0,0 +1,14 @@
+# The Native Font Theme provides optimum text rendering on every device and OS.
+# Note that the native font families are automatically populated by Academic.
+
+# Font style metadata
+name = "Native"
+
+# Optional Google font URL
+google_fonts = ""
+
+# Font families
+heading_font = ""
+body_font = ""
+nav_font = ""
+mono_font = ""

+ 4 - 0
data/i18n/languages.yaml

@@ -1,3 +1,4 @@
+"ar": "عربي"
 "ca": "Català"
 "cs": "Česky"
 "da": "Dansk"
@@ -7,6 +8,7 @@
 "es": "Español"
 "et": "Eesti"
 "eu": "Euskara"
+"fa": "فارسی"
 "fr": "Français"
 "hu": "Magyar"
 "id": "Bahasa Indonesia"
@@ -14,12 +16,14 @@
 "ja": "日本語"
 "km": "ភាសាខ្មែរ"
 "ko": "한국어"
+"lt": "Lietuvių"
 "lv": "Latviešu"
 "nl": "Nederlands"
 "pl": "Polski"
 "pt": "Português"
 "ro": "Română"
 "ru": "Русский"
+"so": "Soomaali"
 "sv": "Svenska"
 "tr": "Türkçe"
 "uk": "Українська"

+ 2 - 0
data/i18n/rtl.toml

@@ -0,0 +1,2 @@
+# List of ISO 639-1 language codes for which text is directed from right to left.
+rtl = ["ar", "fa", "he", "ur"]

+ 1 - 1
data/page_sharer.toml

@@ -35,7 +35,7 @@
 
 [[buttons]]
   id = "whatsapp"
-  url = "https://web.whatsapp.com/send?text={title}%20{url}"
+  url = "whatsapp://send?text={title}%20{url}"
   title = "WhatsApp"
   icon_pack = "fab"
   icon = "whatsapp"

+ 0 - 0
exampleSite/assets/images/icon-pack/.gitkeep


+ 37 - 2
exampleSite/config/_default/config.toml

@@ -1,5 +1,6 @@
-# Configuration of Academic
-# Documentation: https://sourcethemes.com/academic/
+# Configuration of Hugo
+# Guide: https://sourcethemes.com/academic/docs/get-started/
+# Hugo Documentation: https://gohugo.io/getting-started/configuration/#all-configuration-settings
 #
 # This file is formatted using TOML syntax - learn more at https://learnxinyminutes.com/docs/toml/
 # Each configuration section is defined by a name in square brackets (e.g. `[outputs]`).
@@ -37,6 +38,13 @@ enableEmoji = true
 footnotereturnlinkcontents = "<sup>^</sup>"
 ignoreFiles = ["\\.ipynb$", ".ipynb_checkpoints$", "\\.Rmd$", "\\.Rmarkdown$", "_files$", "_cache$"]
 
+# Workaround Hugo publishing taxonomy URLs as plurals - consistently use singular across Academic.
+[permalinks]
+  authors = "/author/:slug/"
+  tags = "/tag/:slug/"
+  categories = "/category/:slug/"
+  publication_types = "/publication-type/:slug/"
+
 [outputs]
   home = [ "HTML", "RSS", "JSON", "WebAppManifest" ]
   section = [ "HTML", "RSS" ]
@@ -48,6 +56,7 @@ ignoreFiles = ["\\.ipynb$", ".ipynb_checkpoints$", "\\.Rmd$", "\\.Rmarkdown$", "
   mediaType = "application/manifest+json"
   rel = "manifest"
 
+# Configure the Markdown renderer.
 [markup]
   defaultMarkdownHandler = "goldmark"
   [markup.goldmark]
@@ -70,3 +79,29 @@ ignoreFiles = ["\\.ipynb$", ".ipynb_checkpoints$", "\\.Rmd$", "\\.Rmarkdown$", "
   category = "categories"
   publication_type = "publication_types"
   author = "authors"
+
+# Related content.
+[related]
+  threshold = 80.0
+  includeNewer = true
+  toLower = true
+
+  [[related.indices]]
+    name = "title"
+    weight = 60.0
+
+  [[related.indices]]
+    name = "summary"
+    weight = 50.0
+
+  [[related.indices]]
+    name = "tags"
+    weight = 80.0
+
+  [[related.indices]]
+    name = "categories"
+    weight = 70.0
+
+  [[related.indices]]
+    name = "authors"
+    weight = 20.0

+ 22 - 1
exampleSite/config/_default/params.toml

@@ -1,5 +1,9 @@
 # SITE SETUP
-# Documentation: https://sourcethemes.com/academic/
+# Guide: https://sourcethemes.com/academic/docs/get-started/
+# Documentation: https://sourcethemes.com/academic/docs/
+#
+# This file is formatted using TOML syntax - learn more at https://learnxinyminutes.com/docs/toml/
+# Each configuration section is defined by a name in square brackets (e.g. `[search]`).
 
 ############################
 ## Theme
@@ -73,6 +77,9 @@ privacy_pack = false
 #   `repo` defines the repository URL. `editable` defines which page types can be edited.
 edit_page = {repo_url = "https://github.com/gcushen/hugo-academic", content_dir = "", repo_branch = "master", editable = {docs = true, page = false, post = false}}
 
+# Show related content at the bottom of pages?
+show_related = {docs = true, page = false, post = true, project = true, publication = true, talk = true}
+
 ############################
 ## Contact details
 ##
@@ -152,6 +159,13 @@ docs_section_pager = true  # Display pager in Docs layout (e.g. tutorials)?
 # Enable in-built social sharing buttons? (true/false)
 sharing = true
 
+# Show a copyright license from creativecommons.org in the site footer?
+# Page specific copyright licenses are also possible by adding this option to a page's front matter.
+copyright_license = {enable = false, allow_derivatives = false, share_alike = true, allow_commercial = false, notice = "This work is licensed under {license}"}
+
+# Highlight the site author (superuser) in author lists? (true/false)
+highlight_superuser = false
+
 # Link authors to their profile page? (true/false)
 link_authors = true
 
@@ -269,3 +283,10 @@ plugins_js  = []
 [marketing]
   google_analytics = ""
   google_tag_manager = ""
+
+############################
+## Content Management System
+############################
+[cms]
+  # See https://sourcethemes.com/academic/docs/install/#install-with-web-browser
+  netlify_cms = true

+ 1 - 1
exampleSite/content/authors/admin/_index.md

@@ -1,6 +1,6 @@
 ---
 # Display name
-name: Nelson Bighetti
+title: Nelson Bighetti
 
 # Username (this should match the folder name)
 authors:

+ 75 - 0
exampleSite/content/authors/吳恩達/_index.md

@@ -0,0 +1,75 @@
+---
+# Display name
+title: 吳恩達
+
+# Username (this should match the folder name)
+authors:
+- 吳恩達
+
+# Is this the primary user of the site?
+superuser: false
+
+# Role/position
+role: Professor of Artificial Intelligence
+
+# Organizations/Affiliations
+organizations:
+- name: Stanford University
+  url: ""
+
+# Short bio (displayed in user profile at end of posts)
+bio: My research interests include distributed robotics, mobile computing and programmable matter.
+
+interests:
+- Artificial Intelligence
+- Computational Linguistics
+- Information Retrieval
+
+education:
+  courses:
+  - course: PhD in Artificial Intelligence
+    institution: Stanford University
+    year: 2012
+  - course: MEng in Artificial Intelligence
+    institution: Massachusetts Institute of Technology
+    year: 2009
+  - course: BSc in Artificial Intelligence
+    institution: Massachusetts Institute of Technology
+    year: 2008
+
+# Social/Academic Networking
+# For available icons, see: https://sourcethemes.com/academic/docs/page-builder/#icons
+#   For an email link, use "fas" icon pack, "envelope" icon, and a link in the
+#   form "mailto:your-email@example.com" or "#contact" for contact widget.
+social:
+- icon: envelope
+  icon_pack: fas
+  link: '#contact'  # For a direct email link, use "mailto:test@example.org".
+- icon: twitter
+  icon_pack: fab
+  link: https://twitter.com/GeorgeCushen
+- icon: google-scholar
+  icon_pack: ai
+  link: https://scholar.google.co.uk/citations?user=sIwtMXoAAAAJ
+- icon: github
+  icon_pack: fab
+  link: https://github.com/gcushen
+# Link to a PDF of your resume/CV from the About widget.
+# To enable, copy your resume/CV to `static/files/cv.pdf` and uncomment the lines below.
+# - icon: cv
+#   icon_pack: ai
+#   link: files/cv.pdf
+
+# Enter email to display Gravatar (if Gravatar enabled in Config)
+email: ""
+
+# Organizational groups that you belong to (for People widget)
+#   Set this to `[]` or comment out if you are not using People widget.
+user_groups:
+- Researchers
+- Visitors
+---
+
+吳恩達 is a professor of artificial intelligence at the Stanford AI Lab. His research interests include distributed robotics, mobile computing and programmable matter. He leads the Robotic Neurobiology group, which develops self-reconfiguring robots, systems of self-organizing robots, and mobile sensor networks.
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed neque elit, tristique placerat feugiat ac, facilisis vitae arcu. Proin eget egestas augue. Praesent ut sem nec arcu pellentesque aliquet. Duis dapibus diam vel metus tempus vulputate.

BIN
exampleSite/content/authors/吳恩達/avatar.jpg


+ 16 - 0
exampleSite/content/home/skills.md

@@ -32,4 +32,20 @@ subtitle = ""
   name = "Photography"
   description = "10%"
 
+# Uncomment to use emoji icons.
+# [[feature]]
+#  icon = ":smile:"
+#  icon_pack = "emoji"
+#  name = "Emojiness"
+#  description = "100%"  
+
+# Uncomment to use custom SVG icons.
+# Place custom SVG icon in `assets/images/icon-pack/`, creating folders if necessary.
+# Reference the SVG icon name (without `.svg` extension) in the `icon` field.
+# [[feature]]
+#  icon = "your-custom-icon-name"
+#  icon_pack = "custom"
+#  name = "Surfing"
+#  description = "90%"
+
 +++

+ 3 - 0
exampleSite/content/post/getting-started/index.md

@@ -4,10 +4,13 @@ subtitle: 'Create a beautifully simple website in under 10 minutes :rocket:'
 summary: Create a beautifully simple website in under 10 minutes.
 authors:
 - admin
+- 吳恩達
 tags:
 - Academic
+- 开源
 categories:
 - Demo
+- 教程
 date: "2016-04-20T00:00:00Z"
 lastmod: "2019-04-17T00:00:00Z"
 featured: false

+ 17 - 3
exampleSite/content/post/writing-technical-content/index.md

@@ -55,16 +55,16 @@ $$\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T
 
 Example **inline math** `$\nabla F(\mathbf{x}_{n})$` renders as $\nabla F(\mathbf{x}_{n})$.
 
-Example **multi-line math** using the `\\` math linebreak:
+Example **multi-line math** using the `\\\\` math linebreak:
 
 ```tex
-$$f(k;p_0^*) = \begin{cases} p_0^* & \text{if }k=1, \\
+$$f(k;p_0^*) = \begin{cases} p_0^* & \text{if }k=1, \\\\
 1-p_0^* & \text {if }k=0.\end{cases}$$
 ```
 
 renders as
 
-$$f(k;p_0^*) = \begin{cases} p_0^* & \text{if }k=1, \\
+$$f(k;p_0^*) = \begin{cases} p_0^* & \text{if }k=1, \\\\
 1-p_0^* & \text {if }k=0.\end{cases}$$
 
 ### Diagrams
@@ -261,6 +261,20 @@ renders as
 A Markdown aside is useful for displaying notices, hints, or definitions to your readers.
 {{% /alert %}}
 
+### Spoilers
+
+Add a spoiler to a page to reveal text, such as an answer to a question, after a button is clicked.
+
+```markdown
+{{</* spoiler text="Click to view the spoiler" */>}}
+You found me!
+{{</* /spoiler */>}}
+```
+
+renders as
+
+{{< spoiler text="Click to view the spoiler" >}} You found me! {{< /spoiler >}}
+
 ### Icons
 
 Academic enables you to use a wide range of [icons from _Font Awesome_ and _Academicons_](https://sourcethemes.com/academic/docs/page-builder/#icons) in addition to [emojis](https://sourcethemes.com/academic/docs/writing-markdown-latex/#emojis).

+ 3 - 0
exampleSite/content/publication/journal-article/index.md

@@ -3,6 +3,9 @@ title: "An example journal article"
 authors:
 - admin
 - Robert Ford
+author_notes:
+- "Equal contribution"
+- "Equal contribution"
 date: "2015-09-01T00:00:00Z"
 doi: ""
 

+ 235 - 0
exampleSite/static/admin/config.yml

@@ -0,0 +1,235 @@
+backend:
+  name: git-gateway
+  branch: master
+media_folder: 'static/img/'
+public_folder: 'img'
+collections:
+  - name: authors
+    label: Authors
+    label_singular: Author
+    folder: 'content/authors'
+    path: '{{slug}}/_index'
+    create: true  # Allow users to create new documents in this collection
+    fields:  # The fields each document in this collection have
+      - {label: "Display name (such as your full name)", name: "title", widget: "string"}
+      - {label: "Position or tagline (such as Professor of AI)", name: "role", widget: "string", required: false}
+      - label: "Avatar (upload an image named `avatar.jpg/png`)"
+        name: "avatar_filename"
+        widget: "image"
+        default: "avatar"
+        required: false
+        media_library:
+          config:
+            multiple: false
+      - {label: "Short biography (shown in author boxes)", name: "bio", widget: "string", required: false}
+      - {label: "Full biography (shown in About widget)", name: "body", widget: "markdown", required: false}
+      - label: "Interests (shown in About widget)"
+        name: "interests"
+        required: false
+        widget: "list"
+      - label: Social links
+        name: social
+        required: false
+        widget: list
+        fields:
+          - {label: Link, name: link, widget: string}
+          - label: Icon pack
+            name: icon_pack
+            widget: select
+            multiple: false
+            options:
+              - {label: "None", value: ""}
+              - {label: "Solid", value: "fas"}
+              - {label: "Regular", value: "far"}
+              - {label: "Brand", value: "fab"}
+              - {label: "Academic", value: "ai"}
+          - {label: Icon (see https://sourcethemes.com/academic/docs/page-builder/#icons), name: icon, widget: string}
+      - label: "Organizations you belong to or are affiliated with (shown in About widget)"
+        name: "organizations"
+        required: false
+        widget: list
+        fields:
+          - {label: Organization, name: name, widget: string, required: true}
+          - {label: Link, name: url, widget: string, required: false}
+      - label: "Education"
+        name: "education"
+        required: false
+        widget: object
+        fields:
+          - label: "Courses"
+            name: "courses"
+            required: false
+            widget: list
+            fields:
+              - {label: Course, name: course, widget: string, required: true}
+              - {label: Institution, name: institution, widget: string, required: true}
+              - {label: Year, name: year, widget: number, valueType: int, required: false}
+      - {label: "Email (to use a Gravatar.com avatar)", name: "email", widget: "string", required: false}
+      - label: "Super user (is this the primary site user?)"
+        name: "superuser"
+        widget: "boolean"
+        default: false
+      - label: "User groups (only for organization websites)"
+        name: "user_groups"
+        required: false
+        widget: "list"
+  - name: posts
+    label: Posts
+    label_singular: Post
+    folder: 'content/post'
+    path: '{{slug}}/index'
+    create: true  # Allow users to create new documents in this collection
+    fields:  # The fields each document in this collection have
+      - {label: "Title", name: "title", widget: "string"}
+      - {label: "Subtitle", name: "subtitle", widget: "string"}
+      - {label: "Body", name: "body", widget: "markdown"}
+      - {label: "Publish this page on", name: "date", widget: "datetime"}
+      - {label: "Summary", name: "summary", widget: "markdown"}
+      - label: "Draft"
+        name: "draft"
+        widget: "boolean"
+        default: false
+      - label: "Featured"
+        name: "featured"
+        widget: "boolean"
+        default: false
+      - label: "Authors"
+        name: "authors"
+        required: false
+        widget: "list"
+      - label: "Tags"
+        name: "tags"
+        required: false
+        widget: "list"
+      - label: "Categories"
+        name: "categories"
+        required: false
+        widget: "list"
+      - label: "Projects"
+        name: "projects"
+        required: false
+        widget: "list"
+      - label: "Featured Image"
+        name: "image"
+        required: false
+        widget: object
+        fields:
+          - label: "Upload an image named `featured.jpg/png`"
+            name: "filename"
+            widget: "image"
+            default: "featured"
+            media_library:
+              config:
+                multiple: false
+          - {label: Caption, name: caption, widget: string, required: false}
+          - {label: Description for screen readers, name: alt_text, widget: string, required: false}
+          - {label: "Where's the focal point in the image? Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight.", name: focal_point, widget: string, required: false, default: "Smart"}
+          - {label: Thumbnail Only?, name: preview_only, widget: boolean, default: false}
+  - name: talks
+    label: Talks
+    label_singular: Talk
+    folder: 'content/talk'
+    path: '{{slug}}/index'
+    create: true  # Allow users to create new documents in this collection
+    fields:  # The fields each document in this collection have
+      - {label: "Title", name: "title", widget: "string"}
+      - {label: "Abstract", name: "abstract", widget: "text"}
+      - {label: "Where", name: "location", widget: "text"}
+      - {label: "From", name: "date", widget: "datetime"}
+      - {label: "To", name: "date_end", widget: "datetime", default: ""}
+      - {label: "All day event?", name: "all_day", widget: "boolean", default: false}
+      - label: Links/Tickets
+        name: links
+        required: false
+        widget: list
+        fields:
+          - {label: Link, name: url, widget: string}
+          - {label: Link text, name: name, widget: string, required: false}
+          - label: Icon pack
+            name: icon_pack
+            widget: select
+            multiple: false
+            required: false
+            options:
+              - {label: "None", value: ""}
+              - {label: "Solid", value: "fas"}
+              - {label: "Regular", value: "far"}
+              - {label: "Brand", value: "fab"}
+              - {label: "Academic", value: "ai"}
+          - {label: "Icon (see https://sourcethemes.com/academic/docs/page-builder/#icons)", name: icon, widget: string, required: false}
+      - {label: "Event", name: "event", widget: "string"}
+      - {label: "Event link", name: "event_url", widget: "string"}
+      - {label: "Publish this page on", name: "publishDate", widget: "datetime"}
+      - {label: "Markdown slides (reference a deck in 'content/slides/')", name: "slides", widget: "string", required: false}
+      - label: "Draft"
+        name: "draft"
+        widget: "boolean"
+        default: false
+      - label: "Featured"
+        name: "featured"
+        widget: "boolean"
+        default: false
+      - label: "Authors"
+        name: "authors"
+        required: false
+        widget: "list"
+      - label: "Tags"
+        name: "tags"
+        required: false
+        widget: "list"
+      - label: "Categories"
+        name: "categories"
+        required: false
+        widget: "list"
+      - label: "Projects (reference projects in 'content/project/')"
+        name: "projects"
+        required: false
+        widget: "list"
+      - label: "Featured Image"
+        name: "image"
+        required: false
+        widget: object
+        fields:
+          - label: "Upload an image named `featured.jpg/png`"
+            name: "filename"
+            widget: "image"
+            default: "featured"
+            media_library:
+              config:
+                multiple: false
+          - {label: Caption, name: caption, widget: string, required: false}
+          - {label: Description for screen readers, name: alt_text, widget: string, required: false}
+          - {label: "Where's the focal point in the image? Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight.", name: focal_point, widget: string, required: false, default: "Smart"}
+          - {label: Thumbnail Only?, name: preview_only, widget: boolean, default: false}
+      - {label: "Details", name: "body", widget: "markdown"}
+  - name: pages
+    label: "Pages"
+    files:
+      - file: "content/privacy.md"
+        label: "Privacy Policy"
+        name: "privacy"
+        fields:
+          - {label: "Title", name: "title", widget: "string"}
+          - {label: "Publish Date", name: "date", widget: "datetime"}
+          - {label: "Subtitle", name: "subtitle", widget: "string"}
+          - {label: "Summary", name: "summary", widget: "markdown"}
+          - label: "Draft"
+            name: "draft"
+            required: false
+            widget: "boolean"
+            default: false
+          - {label: "Body", name: "body", widget: "markdown"}
+      - file: "content/terms.md"
+        label: "Terms"
+        name: "terms"
+        fields:
+          - {label: "Title", name: "title", widget: "string"}
+          - {label: "Publish Date", name: "date", widget: "datetime"}
+          - {label: "Subtitle", name: "subtitle", widget: "string"}
+          - {label: "Summary", name: "summary", widget: "markdown"}
+          - label: "Draft"
+            name: "draft"
+            required: false
+            widget: "boolean"
+            default: false
+          - {label: "Body", name: "body", widget: "markdown"}

+ 14 - 0
exampleSite/static/admin/index.html

@@ -0,0 +1,14 @@
+<!doctype html>
+<html lang="en-us">
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Content Manager | Academic</title>
+  <!-- Include Netlify Identity for authentication. -->
+  <script src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
+</head>
+<body>
+<!-- Include the latest Netlify CMS v2.x.x script that builds the admin panel. -->
+<script src="https://cdn.jsdelivr.net/npm/netlify-cms@2/dist/netlify-cms.min.js"></script>
+</body>
+</html>

+ 237 - 0
i18n/ar.yaml

@@ -0,0 +1,237 @@
+# Navigation
+
+- id: toggle_navigation
+  translation: قائمة
+
+- id: table_of_contents
+  translation: فهرس المحتويات
+
+- id: on_this_page
+  translation: المحتويات
+
+- id: back_to_top
+  translation:  الرجوع لأعلى الصفحة
+
+# General
+
+- id: related
+  translation: ذات صلة
+
+- id: minute_read
+  translation: دقيقة قراءة
+
+- id: previous
+  translation: السابق
+
+- id: next
+  translation: التالي
+
+- id: figure
+  translation: "شكل %d:"
+
+- id: edit_page
+  translation: عدل هذه الصفحة
+
+# Themes
+
+- id: theme_light
+  translation: الوضع العادي
+
+- id: theme_dark
+  translation: الوضع الليلي
+
+- id: theme_auto
+  translation: تلقائي
+
+# Buttons
+
+- id: btn_preprint
+  translation: المسودة
+
+- id: btn_pdf
+  translation:  بي دي اف
+
+- id: btn_cite
+  translation: استشهاد
+
+- id: btn_slides
+  translation: شرائح
+
+- id: btn_video
+  translation: فيديو
+
+- id: btn_code
+  translation: تمريز
+
+- id: btn_dataset
+  translation: البيانات
+
+- id: btn_project
+  translation: مشروع
+
+- id: btn_poster
+  translation: ملصق
+
+- id: btn_source
+  translation: مستند أصلي
+
+- id: btn_copy
+  translation: نسخ
+
+- id: btn_download
+  translation: تحميل
+
+# About widget
+
+- id: interests
+  translation: الإهتمامات
+
+- id: education
+  translation: التعليم
+
+- id: user_profile_latest
+  translation: اخر
+
+# Accomplishments widget
+
+- id: see_certificate
+  translation: الشهادات
+
+# Experience widget
+
+- id: present
+  translation: حتى الأن
+
+# Pages widget
+
+- id: more_pages
+  translation: شاهد الكل
+
+- id: more_posts
+  translation: شاهد جميع التعليقات
+
+- id: more_talks
+  translation: شاهد جميع المحاضرات
+
+- id: more_publications
+  translation: شاهد جميع المنشورات
+
+# Contact widget
+
+- id: contact_name
+  translation: الأسم
+
+- id: contact_email
+  translation: البريد الإلكتروني
+
+- id: contact_message
+  translation: رسالة
+
+- id: contact_send
+  translation: إرسل الرسالة
+
+- id: book_appointment
+  translation: حجز موعد
+
+# Publication/Talk details
+
+- id: abstract
+  translation: مقدمة
+
+- id: publication
+  translation: منشور
+
+- id: publication_type
+  translation: نوع
+
+- id: date
+  translation: التاريخ
+
+- id: last_updated
+  translation: اخر تحيث في
+
+- id: event
+  translation: حدث
+
+- id: location
+  translation:  موقع
+
+- id: pub_uncat
+  translation: غير مصنف
+
+- id: pub_conf
+  translation: ورقة مؤتمر
+
+- id: pub_journal
+  translation: مجلة محكمه
+
+- id: pub_preprint
+  translation: مسودة
+
+- id: pub_report
+  translation: تقرير
+
+- id: pub_book
+  translation: كتاب
+
+- id: pub_book_section
+  translation: قسم من كتاب
+
+- id: pub_thesis
+  translation: أطروحة
+
+- id: pub_patent
+  translation: براءة الإختراع
+
+# Project details
+
+- id: open_project_site
+  translation: أذهب لموقع المشروع
+
+# Default titles for archive pages
+
+- id: posts
+  translation: التعليقات
+
+- id: publications
+  translation: المنشورات
+
+- id: talks
+  translation: المحاضرات
+
+- id: projects
+  translation: المشروعات
+
+# Search
+
+- id: search
+  translation: بحث
+
+- id: search_placeholder
+  translation: ابحث هنا‫...‬
+
+- id: search_results
+  translation:  نتائج البحث
+
+- id: search_no_results
+  translation: لم يتم العثور على نتائج
+
+# Error 404
+
+- id: page_not_found
+  translation: الصفحة غير موجودة
+
+- id: 404_recommendations
+  translation: هل تبحث عن أحد الصفحات التالية؟
+
+# Cookie consent
+
+
+- id: cookie_message
+  translation: هذا الموقع يستخدم ملفات تعريف الارتباط "الكوكيز" لنمنحك أفضل تجربة مستخدم ممكنة
+
+- id: cookie_dismiss
+  translation: أوافق‫!‬
+
+- id: cookie_learn
+  translation: تعرف على المزيد

+ 5 - 5
i18n/cs.yaml

@@ -1,7 +1,7 @@
 # Navigation
 
 - id: toggle_navigation
-  translation: Toggle navigation
+  translation: Přepnout navigaci
 
 - id: table_of_contents
   translation: Obsah
@@ -15,10 +15,10 @@
 # General
 
 - id: related
-  translation: Related
+  translation: Související
 
 - id: minute_read
-  translation: min read
+  translation: min čtení
 
 - id: previous
   translation: Předchozí
@@ -97,7 +97,7 @@
   translation: Zobrazit všechny
 
 - id: more_posts
-  translation: Zobrazit všechny aktualizy
+  translation: Zobrazit všechny aktuality
 
 - id: more_talks
   translation: Zobrazit všechny přednášky
@@ -215,7 +215,7 @@
 # Cookie consent
 
 - id: cookie_message
-  translation: Tyto stránky používá cookies k zajištění co možná nejlepší zkušenosti na našem webu.
+  translation: Tyto stránky používají cookies k zajištění co možná nejlepší zkušenosti na našem webu.
 
 - id: cookie_dismiss
   translation: Rozumím!

+ 15 - 1
i18n/en.yaml

@@ -32,6 +32,17 @@
 - id: edit_page
   translation: Edit this page
 
+# Themes
+
+- id: theme_light
+  translation: Light
+
+- id: theme_dark
+  translation: Dark
+
+- id: theme_auto
+  translation: Automatic
+
 # Buttons
 
 - id: btn_preprint
@@ -177,7 +188,7 @@
 - id: open_project_site
   translation: Go to Project Site
 
-# Default titles for archive pages
+# Content types for default archive page titles and search results
 
 - id: posts
   translation: Posts
@@ -191,6 +202,9 @@
 - id: projects
   translation: Projects
 
+- id: slides
+  translation: Slides
+
 # Search
 
 - id: search

+ 5 - 5
i18n/eu.yaml

@@ -47,11 +47,11 @@
 - id: user_profile_latest
   translation: Berriak
 - id: see_certificate
-  translation: Ikusi zertifikatua
+  translation: Ikusi ziurtagiria
 - id: present
   translation: Gaur egun
 - id: more_pages
-  translation: Dena ikusi
+  translation: Ikusi dena
 - id: more_posts
   translation: Post gehiago
 - id: more_talks
@@ -71,7 +71,7 @@
 - id: abstract
   translation: Laburpena
 - id: publication
-  translation: Publikazioa
+  translation: Argitalpena
 - id: publication_type
   translation: Mota
 - id: date
@@ -83,7 +83,7 @@
 - id: location
   translation: Kokalekua
 - id: pub_uncat
-  translation: Kategoria gabe
+  translation: Kategoriarik gabe
 - id: pub_conf
   translation: Konferentzia-artikulua
 - id: pub_journal
@@ -109,7 +109,7 @@
 - id: talks
   translation: Hitzaldiak
 - id: projects
-  translation: Projektuak
+  translation: Proiektuak
 - id: search
   translation: Bilatu
 - id: search_placeholder

+ 236 - 0
i18n/fa.yaml

@@ -0,0 +1,236 @@
+# Navigation
+
+- id: toggle_navigation
+  translation: خاموش/روشن کردن مسیر
+
+- id: table_of_contents
+  translation: فهرست مطالب
+
+- id: on_this_page
+  translation: محتوا
+
+- id: back_to_top
+  translation: بازگشت به بالا
+
+# General
+
+- id: related
+  translation: مرتبط
+
+- id: minute_read
+  translation: زمان خواندن
+
+- id: previous
+  translation: قبلی
+
+- id: next
+  translation: بعدی
+
+- id: figure
+  translation: "شکل %d:"
+
+- id: edit_page
+  translation: ویرایش صفحه
+
+# Themes
+
+- id: theme_light
+  translation: روشن
+
+- id: theme_dark
+  translation: تاریک
+
+- id: theme_auto
+  translation: روشنایی خودکار
+
+# Buttons
+
+- id: btn_preprint
+  translation: نسخه پیش از چاپ
+
+- id: btn_pdf
+  translation: فایل PDF
+
+- id: btn_cite
+  translation: رفرنس دادن
+
+- id: btn_slides
+  translation: اسلایدها
+
+- id: btn_video
+  translation: ویدئو
+
+- id: btn_code
+  translation: برنامه
+
+- id: btn_dataset
+  translation: داده‌ها
+
+- id: btn_project
+  translation: پروژه
+
+- id: btn_poster
+  translation: پوستر
+
+- id: btn_source
+  translation: متن اصلی
+
+- id: btn_copy
+  translation: کپی
+
+- id: btn_download
+  translation: دانلود
+
+# About widget
+
+- id: interests
+  translation: موضوعات پژوهشی
+
+- id: education
+  translation: تحصیلات
+
+- id: user_profile_latest
+  translation: آخرین‌ها
+
+# Accomplishments widget
+
+- id: see_certificate
+  translation: مشاهده گواهی
+
+# Experience widget
+
+- id: present
+  translation: اکنون
+
+# Pages widget
+
+- id: more_pages
+  translation: بقیه صفحات
+
+- id: more_posts
+  translation: بقیه پست‌ها
+
+- id: more_talks
+  translation: بقیه سخنرانی‌ها
+
+- id: more_publications
+  translation: بقیه آثار
+
+# Contact widget
+
+- id: contact_name
+  translation: نام
+
+- id: contact_email
+  translation: ایمیل
+
+- id: contact_message
+  translation: پیام
+
+- id: contact_send
+  translation: ارسال
+
+- id: book_appointment
+  translation: تعیین قرار ملاقات
+
+# Publication/Talk details
+
+- id: abstract
+  translation: چکیده
+
+- id: publication
+  translation: اثر
+
+- id: publication_type
+  translation: نوع اثر
+
+- id: date
+  translation: تاریخ
+
+- id: last_updated
+  translation: آخرین به روز رسانی
+
+- id: event
+  translation: رویداد
+
+- id: location
+  translation: مکان
+
+- id: pub_uncat
+  translation: بدون دسته‌بندی
+
+- id: pub_conf
+  translation: مقاله کنفرانسی
+
+- id: pub_journal
+  translation: مقاله ژورنالی
+
+- id: pub_preprint
+  translation: پیش‌نویس مقاله
+
+- id: pub_report
+  translation: گزارش
+
+- id: pub_book
+  translation: کتاب
+
+- id: pub_book_section
+  translation: فصل از کتاب
+
+- id: pub_thesis
+  translation: پایان‌نامه
+
+- id: pub_patent
+  translation: ثبت اختراع
+
+# Project details
+
+- id: open_project_site
+  translation: باز کردن وب‌سایت پروژه
+
+# Default titles for archive pages
+
+- id: posts
+  translation: پست‌ها
+
+- id: publications
+  translation: آثار
+
+- id: talks
+  translation: سخنرانی‌ها
+
+- id: projects
+  translation: پروژه‌ها
+
+# Search
+
+- id: search
+  translation: جستجو
+
+- id: search_placeholder
+  translation: جستجو...
+
+- id: search_results
+  translation: نتیجه پیدا شد.
+
+- id: search_no_results
+  translation: هیچ نتیجه‌ای پیدا نشد.
+
+# Error 404
+
+- id: page_not_found
+  translation: صفحه پیدا نشد.
+
+- id: 404_recommendations
+  translation: شاید دنبال یکی از این صفحات بودید؟
+
+# Cookie consent
+
+- id: cookie_message
+  translation: این وب‌سایت برای بهبود تجربه کاربری شما از کوکی‌ها استفاده می‌کند.
+
+- id: cookie_dismiss
+  translation: باشه!
+
+- id: cookie_learn
+  translation: اطلاعات بیشتر...

+ 236 - 0
i18n/lt.yaml

@@ -0,0 +1,236 @@
+# Navigation
+
+- id: toggle_navigation
+  translation: Perjungti navigaciją
+
+- id: table_of_contents
+  translation: Turinys
+
+- id: on_this_page
+  translation: Turinys
+
+- id: back_to_top
+  translation: Grįžti į puslapio viršų
+
+# General
+
+- id: related
+  translation: Susiję
+
+- id: minute_read
+  translation: minučių skaitymo
+
+- id: previous
+  translation: Ankstesnis
+
+- id: next
+  translation: Tolimesnis
+
+- id: figure
+  translation: "Pav. %d:"
+
+- id: edit_page
+  translation: Redaguoti šį puslapį
+
+# Themes
+
+- id: theme_light
+  translation: Šviesus
+
+- id: theme_dark
+  translation: Tamsus
+
+- id: theme_auto
+  translation: Automatinis
+
+# Buttons
+
+- id: btn_preprint
+  translation: Nerecenzuota publikacija
+
+- id: btn_pdf
+  translation: PDF
+
+- id: btn_cite
+  translation: Citata
+
+- id: btn_slides
+  translation: Prezentacija
+
+- id: btn_video
+  translation: Video
+
+- id: btn_code
+  translation: Kodas
+
+- id: btn_dataset
+  translation: Duomenų rinkinys
+
+- id: btn_project
+  translation: Projektas
+
+- id: btn_poster
+  translation: Plakatas
+
+- id: btn_source
+  translation: Šaltinis
+
+- id: btn_copy
+  translation: Kopijuoti
+
+- id: btn_download
+  translation: Parsisiųsti
+
+# About widget
+
+- id: interests
+  translation: Pomėgiai
+
+- id: education
+  translation: Išsilavinimas
+
+- id: user_profile_latest
+  translation: Naujausi
+
+# Accomplishments widget
+
+- id: see_certificate
+  translation: Peržiūrėti sertifikatą
+
+# Experience widget
+
+- id: present
+  translation: Parodyti
+
+# Pages widget
+
+- id: more_pages
+  translation: Žiūrėti visus
+
+- id: more_posts
+  translation: Žiūrėti visus straipsnius
+
+- id: more_talks
+  translation: Žiūrėti visus pranešimus
+
+- id: more_publications
+  translation: Žiūrėti visas publikacijas
+
+# Contact widget
+
+- id: contact_name
+  translation: Vardas
+
+- id: contact_email
+  translation: Elektroninis paštas
+
+- id: contact_message
+  translation: Žinutė
+
+- id: contact_send
+  translation: Siųsti
+
+- id: book_appointment
+  translation: Rezervuoti susitikimą
+
+# Publication/Talk details
+
+- id: abstract
+  translation: Santrauka
+
+- id: publication
+  translation: Publikacija
+
+- id: publication_type
+  translation: Tipas
+
+- id: date
+  translation: Data
+
+- id: last_updated
+  translation: Vėliausiai atnaujinti
+
+- id: event
+  translation: Renginys
+
+- id: location
+  translation: Lokacija
+
+- id: pub_uncat
+  translation: Nekategorizuota
+
+- id: pub_conf
+  translation: Konferencijos publikacija
+
+- id: pub_journal
+  translation: Mokslinis straipsnis
+
+- id: pub_preprint
+  translation: Nerecenzuota publikacija
+
+- id: pub_report
+  translation: Ataskaita
+
+- id: pub_book
+  translation: Knyga
+
+- id: pub_book_section
+  translation: Knygos skyrius
+
+- id: pub_thesis
+  translation: Tezė
+
+- id: pub_patent
+  translation: Patentas
+
+# Project details
+
+- id: open_project_site
+  translation: Eiti į projekto puslapį
+
+# Default titles for archive pages
+
+- id: posts
+  translation: Straipsniai
+
+- id: publications
+  translation: Publikacijos
+
+- id: talks
+  translation: Pranešimai
+
+- id: projects
+  translation: Projektai
+
+# Search
+
+- id: search
+  translation: Paieška
+
+- id: search_placeholder
+  translation: Ieškoti...
+
+- id: search_results
+  translation: rasta rezultatų
+
+- id: search_no_results
+  translation: Nieko nerasta
+
+# Error 404
+
+- id: page_not_found
+  translation: Puslapis nerastas
+
+- id: 404_recommendations
+  translation: Galbūt jūs ieškojote šių puslapių?
+
+# Cookie consent
+
+- id: cookie_message
+  translation: Šis puslapis naudoja slapukus, kad užtikrintų geriausią naršymo patirtį.
+
+- id: cookie_dismiss
+  translation: Supratau!
+
+- id: cookie_learn
+  translation: Sužinoti daugiau

+ 37 - 37
i18n/nl.yaml

@@ -1,27 +1,27 @@
 - id: toggle_navigation
   translation: Navigatiebalk
 - id: table_of_contents
-  translation: Table of Contents
+  translation: Inhoudsopgave
 - id: on_this_page
-  translation: On this page
+  translation: Op deze pagina
 - id: back_to_top
-  translation: Back to top
+  translation: Terug naar boven
 - id: related
-  translation: Related
+  translation: Gerelateerd
 - id: minute_read
-  translation: min read
+  translation: minuten lezen
 - id: previous
-  translation: Previous
+  translation: Vorige
 - id: next
-  translation: Next
+  translation: Volgende
 - id: figure
-  translation: 'Figure %d:'
+  translation: 'Figuur %d:'
 - id: btn_preprint
   translation: Preprint
 - id: btn_pdf
   translation: PDF
 - id: btn_cite
-  translation: Cite
+  translation: Citeer
 - id: btn_slides
   translation: Dia's
 - id: btn_video
@@ -35,9 +35,9 @@
 - id: btn_poster
   translation: Poster
 - id: btn_source
-  translation: Source Document
+  translation: Brondocument
 - id: btn_copy
-  translation: Copy
+  translation: Kopieer
 - id: btn_download
   translation: Download
 - id: interests
@@ -45,13 +45,13 @@
 - id: education
   translation: Educatie
 - id: user_profile_latest
-  translation: Latest
+  translation: Nieuwste
 - id: see_certificate
-  translation: See certificate
+  translation: Bekijk certificate
 - id: present
   translation: Present
 - id: more_pages
-  translation: See all
+  translation: Bekijk alles
 - id: more_posts
   translation: Meer Berichten
 - id: more_talks
@@ -59,17 +59,17 @@
 - id: more_publications
   translation: Meer Publicaties
 - id: contact_name
-  translation: Name
+  translation: Naam
 - id: contact_email
-  translation: Email
+  translation: E-mailadres
 - id: contact_message
-  translation: Message
+  translation: Bericht
 - id: contact_send
-  translation: Send
+  translation: Verzend
 - id: book_appointment
-  translation: Book an appointment
+  translation: Maak een afspraak
 - id: abstract
-  translation: Korte inhoud
+  translation: Samenvatting
 - id: publication
   translation: Publicatie
 - id: publication_type
@@ -77,31 +77,31 @@
 - id: date
   translation: Datum
 - id: last_updated
-  translation: Last updated on
+  translation: Laatst bijgewerkt op
 - id: event
   translation: Evenement
 - id: location
   translation: Locatie
 - id: pub_uncat
-  translation: Uncategorized
+  translation: Ongecategoriseerd
 - id: pub_conf
-  translation: Conference paper
+  translation: Conferentiepaper
 - id: pub_journal
-  translation: Journal article
+  translation: Journalartikel
 - id: pub_preprint
   translation: Preprint
 - id: pub_report
-  translation: Report
+  translation: Rapport
 - id: pub_book
-  translation: Book
+  translation: Boek
 - id: pub_book_section
-  translation: Book section
+  translation: Boek sectie
 - id: pub_thesis
-  translation: Thesis
+  translation: Proefschrift
 - id: pub_patent
   translation: Patent
 - id: open_project_site
-  translation: Ga naar Projecten pagina
+  translation: Ga naar Projectenpagina
 - id: posts
   translation: Berichten
 - id: publications
@@ -113,18 +113,18 @@
 - id: search
   translation: Search
 - id: search_placeholder
-  translation: Search...
+  translation: Zoeken...
 - id: search_results
-  translation: results found
+  translation: resultaten gevonden
 - id: search_no_results
-  translation: No results found
+  translation: Geen resultaten gevonden
 - id: page_not_found
-  translation: Page not found
+  translation: Pagina niet gevonden
 - id: 404_recommendations
-  translation: Perhaps you were looking for one of these?
+  translation: Misschien was je op zoek naar een van deze pagina's?
 - id: cookie_message
-  translation: This website uses cookies to ensure you get the best experience on our website.
+  translation: Deze website gebruikt cookies om je de best mogelijke ervaring te bieden.
 - id: cookie_dismiss
-  translation: Got it!
+  translation: Accepteer cookies
 - id: cookie_learn
-  translation: Learn more
+  translation: Meer informatie

+ 236 - 0
i18n/so.yaml

@@ -0,0 +1,236 @@
+# Navigation
+
+- id: toggle_navigation
+  translation: Rog socodka
+
+- id: table_of_contents
+  translation: Tusmada Guud
+
+- id: on_this_page
+  translation: Boggan ku yaal
+
+- id: back_to_top
+  translation: Kor aad
+
+# General
+
+- id: related
+  translation: La Mida
+
+- id: minute_read
+  translation: Akhrisma
+
+- id: previous
+  translation: Hore
+
+- id: next
+  translation: Xiga
+
+- id: figure
+  translation: "Sawir %d:"
+
+- id: edit_page
+  translation: Tifatir Boggan
+
+# Themes
+
+- id: theme_light
+  translation: Caddee
+
+- id: theme_dark
+  translation: Madoobee
+
+- id: theme_auto
+  translation: Automatic
+
+# Buttons
+
+- id: btn_preprint
+  translation: Daabac hore
+
+- id: btn_pdf
+  translation: PDF
+
+- id: btn_cite
+  translation: Xigso
+
+- id: btn_slides
+  translation: Slides
+
+- id: btn_video
+  translation: Video
+
+- id: btn_code
+  translation: Code
+
+- id: btn_dataset
+  translation: Xog
+
+- id: btn_project
+  translation: Mashruuc
+
+- id: btn_poster
+  translation: Poster
+
+- id: btn_source
+  translation: Source Document
+
+- id: btn_copy
+  translation: Nuqul
+
+- id: btn_download
+  translation: Dajiso
+
+# About widget
+
+- id: interests
+  translation: Hiwaayado
+
+- id: education
+  translation: Waxbarasho
+
+- id: user_profile_latest
+  translation: Ugu cusub
+
+# Accomplishments widget
+
+- id: see_certificate
+  translation: Arag Shahaadada
+
+# Experience widget
+
+- id: present
+  translation: Hadda
+
+# Pages widget
+
+- id: more_pages
+  translation: Arag dhammaan
+
+- id: more_posts
+  translation: Arag dhammaan qoraalada
+
+- id: more_talks
+  translation: Arag Qudbadaha
+
+- id: more_publications
+  translation: Arag qoraalada oo dhan
+
+# Contact widget
+
+- id: contact_name
+  translation: Magac
+
+- id: contact_email
+  translation: Email
+
+- id: contact_message
+  translation: Baaq
+
+- id: contact_send
+  translation: Dir
+
+- id: book_appointment
+  translation: Ballan qabso
+
+# Publication/Talk details
+
+- id: abstract
+  translation: Arar
+
+- id: publication
+  translation: Qormooyin
+
+- id: publication_type
+  translation: Nooc
+
+- id: date
+  translation: Goor
+
+- id: last_updated
+  translation: La tifatiray
+
+- id: event
+  translation: Dhacdo
+
+- id: location
+  translation: Meel
+
+- id: pub_uncat
+  translation: Kale
+
+- id: pub_conf
+  translation: Qoraal Shir
+
+- id: pub_journal
+  translation: Qoraal Majallad
+
+- id: pub_preprint
+  translation: Daabac Hore
+
+- id: pub_report
+  translation: Wargelin
+
+- id: pub_book
+  translation: Buug
+
+- id: pub_book_section
+  translation: Qayb Buug
+
+- id: pub_thesis
+  translation: Buug Qalinjabin
+
+- id: pub_patent
+  translation: Patent
+
+# Project details
+
+- id: open_project_site
+  translation: Tag Bogga Mashruuca
+
+# Default titles for archive pages
+
+- id: posts
+  translation: Qoraal
+
+- id: publications
+  translation: Publications
+
+- id: talks
+  translation: Qudbad
+
+- id: projects
+  translation: Mashruuc
+
+# Search
+
+- id: search
+  translation: Raadi
+
+- id: search_placeholder
+  translation: Raadi...
+
+- id: search_results
+  translation: results found
+
+- id: search_no_results
+  translation: No results found
+
+# Error 404
+
+- id: page_not_found
+  translation: Boggan lama helin
+
+- id: 404_recommendations
+  translation: Malaha waxaad raadinaysay?
+
+# Cookie consent
+
+- id: cookie_message
+  translation: Boggani wuxuu isticmaala "cookies" sii aad u hesho adeegga ugu wacan
+
+- id: cookie_dismiss
+  translation: Gartay!
+
+- id: cookie_learn
+  translation: Faahfaahin

BIN
images/tn.png


+ 2 - 1
layouts/_default/baseof.html

@@ -1,5 +1,6 @@
 <!DOCTYPE html>
-<html lang="{{ site.LanguageCode | default "en-us" }}">
+{{- $language_code := site.LanguageCode | default "en-us" -}}
+<html lang="{{$language_code}}" {{ if in site.Data.i18n.rtl.rtl $language_code }}dir="rtl"{{end}}>
 
 {{ partial "site_head" . }}
 <body id="top" data-spy="scroll" data-offset="70" data-target="{{ if or .IsHome (eq .Type "widget_page") }}#navbar-main{{else}}#TableOfContents{{end}}" {{ if not (.Scratch.Get "light") }}class="dark"{{end}}>

+ 1 - 1
layouts/authors/terms.html

@@ -12,7 +12,7 @@
   <ul>
     {{ $paginator := .Paginate .Data.Pages }}
     {{ range $k, $v := $paginator.Pages }}
-      {{ $name := $v.Params.name | default ($v.Title|plainify) }}
+      {{ $name := $v.Title }}
       <li><a href="{{$v.Permalink}}">{{$name}}</a></li>
     {{ end }}
   </ul>

+ 2 - 4
layouts/index.json

@@ -4,7 +4,7 @@
 {{- /* Add the index page of docs separately since it's not in RegularPages above. */ -}}
 {{- $pages := $pages | union (where (where site.Pages "Kind" "section") "Type" "docs") -}}
 {{- /* Add author pages to index so their bios can be searched. Hide empty `/authors/` node. */ -}}
-{{- $pages := $pages | union (where (where site.Pages "Section" "authors") "Params.name" "!=" nil) -}}
+{{- $pages := $pages | union (where (where site.Pages "Section" "authors") "Params.superuser" "!=" nil) -}}
 
 {{- range $pages -}}
   {{- /* Do not index drafts or private pages. */ -}}
@@ -27,7 +27,6 @@
 
     {{/* Correct the title and URL for author profile pages. */}}
     {{- if eq .Section "authors" -}}
-      {{- $title = .Params.name -}}
       {{- $username := path.Base (path.Split .Path).Dir -}}
       {{- with site.GetPage (printf "/authors/%s" $username) -}}
         {{- $permalink = .Permalink -}}
@@ -43,8 +42,7 @@
               {{- $person_page_path := (printf "/authors/%s" (urlize $v)) -}}
               {{- $person_page := site.GetPage $person_page_path -}}
               {{- if and $person_page $person_page.File -}}
-                {{- $person := $person_page.Params -}}
-                {{- $authors = $authors | append $person.name -}}
+                {{- $authors = $authors | append $person_page.Title -}}
               {{- else -}}
                 {{- $authors = $authors | append ($v | plainify) -}}
               {{- end -}}

+ 2 - 0
layouts/partials/docs_layout.html

@@ -44,6 +44,8 @@
           {{ partial "page_edit" . }}
 
           {{ partial "comments" . }}
+
+          {{ partial "page_related" . }}
         </div>
 
       </article>

+ 1 - 1
layouts/partials/functions/get_author_name.html

@@ -18,7 +18,7 @@
 {{ $taxonomy := "authors" }}
 {{ $profile_page := site.GetPage (printf "/%s/%s" $taxonomy $author_username) }}
 {{ with $profile_page }}
-  {{ $author = .Params.name | default .Title }}
+  {{ $author = .Title }}
 {{ else }}
   {{ $author = $author | default $publisher }}
 {{ end }}

+ 1 - 1
layouts/partials/li_card.html

@@ -45,7 +45,7 @@
   {{ with $resource }}
   {{ $image := .Fill (printf "918x517 q90 %s" $anchor) }}
   <a href="{{ $item.RelPermalink }}">
-      <img src="{{ $image.RelPermalink }}" class="article-banner" alt="">
+      <img src="{{ $image.RelPermalink }}" class="article-banner" alt="{{ $item.Title }}">
   </a>
   {{end}}
 

+ 1 - 1
layouts/partials/li_compact.html

@@ -78,7 +78,7 @@
     {{ with $resource }}
     {{ $image := .Resize "150x" }}
     <a href="{{$link}}" {{ $target | safeHTMLAttr }}>
-      <img src="{{ $image.RelPermalink }}" alt="">
+      <img src="{{ $image.RelPermalink }}" alt="{{ $item.Title }}">
     </a>
     {{end}}
   </div>

+ 17 - 4
layouts/partials/navbar.html

@@ -126,13 +126,26 @@
     <ul class="nav-icons navbar-nav flex-row ml-auto d-flex pl-md-2">
       {{ if site.Params.search.engine }}
       <li class="nav-item">
-        <a class="nav-link js-search" href="#"><i class="fas fa-search" aria-hidden="true"></i></a>
+        <a class="nav-link js-search" href="#" aria-label="{{ i18n "search" }}"><i class="fas fa-search" aria-hidden="true"></i></a>
       </li>
       {{ end }}
 
       {{ if site.Params.day_night }}
-      <li class="nav-item">
-        <a class="nav-link js-dark-toggle" href="#"><i class="fas fa-moon" aria-hidden="true"></i></a>
+      <li class="nav-item dropdown theme-dropdown">
+        <a href="#" class="nav-link js-theme-selector" data-toggle="dropdown" aria-haspopup="true">
+          <i class="fas fa-palette" aria-hidden="true"></i>
+        </a>
+        <div class="dropdown-menu">
+          <a href="#" class="dropdown-item js-set-theme-light">
+            <span>{{ i18n "theme_light" | default "Light" }}</span>
+          </a>
+          <a href="#" class="dropdown-item js-set-theme-dark">
+            <span>{{ i18n "theme_dark" | default "Dark" }}</span>
+          </a>
+          <a href="#" class="dropdown-item js-set-theme-auto">
+            <span>{{ i18n "theme_auto" | default "Automatic" }}</span>
+          </a>
+        </div>
       </li>
       {{ end }}
 
@@ -142,7 +155,7 @@
           <i class="fas fa-globe mr-1" aria-hidden="true"></i><span class="d-none d-lg-inline">{{ index site.Data.i18n.languages .Lang }}</span>
         </a>
         <div class="dropdown-menu">
-          <div class="dropdown-item i18n-active font-weight-bold">
+          <div class="dropdown-item dropdown-item-active">
             <span>{{ index site.Data.i18n.languages .Lang }}</span>
           </div>
           {{ range .Translations }}

+ 21 - 19
layouts/partials/page_author_card.html

@@ -4,26 +4,28 @@
 {{ $taxonomy := "authors" }}
 {{ $profile_page := site.GetPage (printf "/%s/%s" $taxonomy $author_urlized) }}
 {{ with $profile_page }}
-  {{/* If it's a personal site and primary page author is superuser, link to the homepage rather than their profile page. */}}
-  {{ $profile_url := .RelPermalink }}
-  {{ if and (eq $site_type "Person") (eq .Params.superuser true) }}
-    {{ $profile_url = site.BaseURL }}
-  {{ end }}
-  {{ $avatar := (.Resources.ByType "image").GetMatch "*avatar*" }}
-  {{ $avatar_shape := site.Params.avatar.shape | default "circle" }}
-  <div class="media author-card content-widget-hr">
-    {{ if and site.Params.avatar.gravatar .Params.email }}
-      <img class="avatar mr-3 {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="https://s.gravatar.com/avatar/{{ md5 .Params.email }}?s=200')" alt="{{.Params.name}}">
-    {{ else if $avatar }}
-      {{ $avatar_image := $avatar.Fill "270x270 Center" }}
-      <img class="avatar mr-3 {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="{{ $avatar_image.RelPermalink }}" alt="{{.Params.name}}">
+  {{ if isset .Params "superuser" }}{{/* Check an author profile exists. */}}
+    {{/* If it's a personal site and primary page author is superuser, link to the homepage rather than their profile page. */}}
+    {{ $profile_url := .RelPermalink }}
+    {{ if and (eq $site_type "Person") (eq .Params.superuser true) }}
+      {{ $profile_url = site.BaseURL }}
     {{ end }}
+    {{ $avatar := (.Resources.ByType "image").GetMatch "*avatar*" }}
+    {{ $avatar_shape := site.Params.avatar.shape | default "circle" }}
+    <div class="media author-card content-widget-hr">
+      {{ if and site.Params.avatar.gravatar .Params.email }}
+        <img class="avatar mr-3 {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="https://s.gravatar.com/avatar/{{ md5 .Params.email }}?s=200')" alt="{{.Title}}">
+      {{ else if $avatar }}
+        {{ $avatar_image := $avatar.Fill "270x270 Center" }}
+        <img class="avatar mr-3 {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="{{ $avatar_image.RelPermalink }}" alt="{{.Title}}">
+      {{ end }}
 
-    <div class="media-body">
-      <h5 class="card-title"><a href="{{$profile_url}}">{{.Params.name}}</a></h5>
-      {{ with .Params.role }}<h6 class="card-subtitle">{{. | markdownify | emojify}}</h6>{{end}}
-      {{ with .Params.bio }}<p class="card-text">{{. | markdownify | emojify}}</p>{{end}}
-      {{ partial "social_links" . }}
+      <div class="media-body">
+        <h5 class="card-title"><a href="{{$profile_url}}">{{.Title}}</a></h5>
+        {{ with .Params.role }}<h6 class="card-subtitle">{{. | markdownify | emojify}}</h6>{{end}}
+        {{ with .Params.bio }}<p class="card-text">{{. | markdownify | emojify}}</p>{{end}}
+        {{ partial "social_links" . }}
+      </div>
     </div>
-  </div>
+  {{end}}
 {{end}}{{/* Profile page block */}}

+ 2 - 1
layouts/partials/page_edit.html

@@ -1,4 +1,5 @@
-{{ if site.Params.edit_page }}{{/* Make `edit_page` optional in `params.toml` - prevent errors if it's removed. */}}
+{{/* This makes `edit_page` optional in `params.toml` and prevents errors if it's removed. */}}
+{{ if site.Params.edit_page }}
 {{ if site.Params.edit_page.repo_url | and (index site.Params.edit_page.editable .Type) | and (ne .Params.editable false) | or .Params.editable }}
 {{/* Get language subfolder for multilingual sites. */}}
 {{/* Limitations: the subfolder param, `<LANG>.contentDir`, is unexposed in the Hugo `site` API so we attempt to workaround this issue. */}}

+ 1 - 13
layouts/partials/page_footer.html

@@ -10,16 +10,4 @@
 </div>
 {{ end }}
 
-{{ if ne .Type "page" }}
-  {{ $related := site.RegularPages.Related . | first 5 }}
-  {{ with $related }}
-  <div class="article-widget content-widget-hr">
-    <h3>{{ i18n "related" }}</h3>
-    <ul>
-      {{ range . }}
-      <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
-      {{ end }}
-    </ul>
-  </div>
-  {{ end }}
-{{ end }}
+{{ partial "page_related" . }}

+ 3 - 3
layouts/partials/page_metadata.html

@@ -53,13 +53,13 @@
   {{ end}}
 
   {{ $taxonomy := "categories" }}
-  {{ with $page.Param $taxonomy }}
+  {{ if $page.Param $taxonomy }}
   <span class="middot-divider"></span>
   <span class="article-categories">
     <i class="fas fa-folder mr-1"></i>
-    {{- range $index, $value := . -}}
+    {{- range $index, $value := ($page.GetTerms $taxonomy) -}}
       {{- if gt $index 0 }}, {{ end -}}
-      <a href="{{ (site.GetPage (printf "/%s/%s" $taxonomy (. | urlize))).RelPermalink }}">{{ . }}</a>
+      <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
     {{- end -}}
   </span>
   {{ end }}

+ 9 - 4
layouts/partials/page_metadata_authors.html

@@ -3,16 +3,21 @@
 {{- $taxonomy := "authors" }}
 {{ with .Param $taxonomy }}
   {{ $link_authors := site.Params.link_authors | default true }}
-  {{ range $index, $value := . }}
-    {{- $profile_page := site.GetPage (printf "/%s/%s" $taxonomy (. | urlize)) -}}
-    {{- $name := $profile_page.Params.name | default ($value|markdownify) -}}
+  {{ range $index, $name_raw := . }}
+    {{- $profile_page := site.GetPage (printf "/%s/%s" $taxonomy .) -}}
+    {{- $name := $profile_page.Title | default $name_raw -}}
     {{- if gt $index 0 }}, {{ end -}}
-    <span>
+    <span {{ if site.Params.highlight_superuser | and (eq $profile_page.Params.superuser true) }}class="font-weight-bold"{{end}}>
       {{- if and $profile_page $link_authors -}}
         <a href="{{$profile_page.RelPermalink}}">{{$name}}</a>
       {{- else -}}
         {{$name}}
       {{- end -}}
     </span>
+    {{- if isset $.Params "author_notes" -}}
+      {{- with (index $.Params.author_notes $index) -}}
+        <span title="{{.}}" class="author-notes">(?)</span>
+      {{- end -}}
+    {{- end -}}
   {{- end -}}
 {{- end -}}

+ 16 - 0
layouts/partials/page_related.html

@@ -0,0 +1,16 @@
+{{/* This makes `show_related` optional in `params.toml` and prevents errors if it's removed. */}}
+{{ if site.Params.show_related }}
+{{ if (index site.Params.show_related .Type) | and (ne .Params.show_related false) | or .Params.show_related }}
+  {{ $related := site.RegularPages.Related . | first 5 }}
+  {{ with $related }}
+  <div class="article-widget content-widget-hr">
+    <h3>{{ i18n "related" }}</h3>
+    <ul>
+      {{ range . }}
+      <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
+      {{ end }}
+    </ul>
+  </div>
+  {{ end }}
+{{ end }}
+{{ end }}

+ 6 - 1
layouts/partials/site_footer.html

@@ -12,8 +12,13 @@
   {{ end }}
 
   <p class="powered-by">
-    {{ with site.Copyright }}{{ replace . "{year}" now.Year | markdownify}} &middot; {{ end }}
+    {{ with site.Copyright }}{{ replace . "{year}" now.Year | markdownify}}{{ end }}
+  </p>
+
+  {{/* Display copyright license. */}}
+  {{ partial "site_footer_license" . }}
 
+  <p class="powered-by">
     Powered by the
     <a href="https://sourcethemes.com/academic/" target="_blank" rel="noopener">Academic theme</a> for
     <a href="https://gohugo.io" target="_blank" rel="noopener">Hugo</a>.

+ 45 - 0
layouts/partials/site_footer_license.html

@@ -0,0 +1,45 @@
+{{/* Display copyright license. */}}
+
+{{ $copyright_license := .Params.copyright_license | default site.Params.copyright_license }}
+
+{{ if and $copyright_license $copyright_license.enable }}
+
+  {{ $notice := .Params.copyright_license.notice | default site.Params.copyright_license.notice }}
+  {{ $allow_commercial := .Params.copyright_license.allow_commercial | default site.Params.copyright_license.allow_commercial }}
+  {{ $allow_derivatives := .Params.copyright_license.allow_derivatives | default site.Params.copyright_license.allow_derivatives }}
+  {{ $share_alike := .Params.copyright_license.share_alike | default site.Params.copyright_license.share_alike }}
+
+  {{ $cc_code := "by" }}
+  {{ if not $allow_commercial }}
+    {{ $cc_code = printf "%s-nc" $cc_code }}
+  {{end}}
+  {{ if and $allow_derivatives $share_alike }}
+    {{ $cc_code = printf "%s-sa" $cc_code }}
+  {{ else if not $allow_derivatives }}
+    {{ $cc_code = printf "%s-nd" $cc_code }}
+  {{end}}
+
+  {{ $license_url := printf "https://creativecommons.org/licenses/%s/4.0" ($cc_code | urlize) }}
+
+  {{ with $notice }}
+  <p class="powered-by copyright-license-text">
+    {{ replace . "{license}" (printf "<a href=\"%s\" rel=\"noopener noreferrer\" target=\"_blank\">CC %s 4.0</a>" $license_url (replace $cc_code "-" " " | upper)) | markdownify }}
+  </p>
+  {{ end }}
+
+  <p class="powered-by footer-license-icons">
+    <a href="{{$license_url}}" rel="noopener noreferrer" target="_blank">
+      <img src="https://search.creativecommons.org/static/img/cc_icon.svg" alt="CC icon">
+      <img src="https://search.creativecommons.org/static/img/cc-by_icon.svg" alt="CC by icon">
+      {{ if not $allow_commercial }}
+        <img src="https://search.creativecommons.org/static/img/cc-nc_icon.svg" alt="CC NC icon">
+      {{end}}
+      {{ if and $allow_derivatives $share_alike }}
+        <img src="https://search.creativecommons.org/static/img/cc-sa_icon.svg" alt="CC SA icon">
+      {{ else if not $allow_derivatives }}
+        <img src="https://search.creativecommons.org/static/img/cc-nd_icon.svg" alt="CC ND icon">
+      {{end}}
+    </a>
+  </p>
+
+{{ end }}

+ 14 - 7
layouts/partials/site_head.html

@@ -12,7 +12,7 @@
   {{ $superuser_username := "" }}
   {{ $superuser_role := "" }}
   {{ range first 1 (where (where site.Pages "Section" "authors") "Params.superuser" true) }}
-    {{ $superuser_name = .Params.name }}
+    {{ $superuser_name = .Title }}
     {{ $superuser_username = path.Base (path.Split .Path).Dir }}
     {{ $superuser_role = .Params.role }}
   {{ end }}
@@ -137,6 +137,11 @@
   {{ partial "marketing/google_analytics" . }}
   {{ partial "marketing/google_tag_manager" . }}
 
+  {{/* Netlify Identity integration. */}}
+  {{ if .IsHome | and (site.Params.cms.netlify_cms | default true) }}
+  <script src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
+  {{ end }}
+
   {{ with .OutputFormats.Get "RSS" }}
   <link rel="alternate" href="{{.RelPermalink}}" type="application/rss+xml" title="{{site.Title}}">
   {{ end }}
@@ -147,11 +152,16 @@
 
   <link rel="canonical" href="{{ .Permalink }}">
 
+  {{/* Get page image for sharing. */}}
   {{ $featured_image := (.Resources.ByType "image").GetMatch "*featured*" }}
+  {{ $avatar_image := (.Resources.ByType "image").GetMatch "avatar*" }}
   {{ $has_logo := fileExists "assets/images/logo.png" | or (fileExists "assets/images/logo.svg") }}
   {{ $og_image := "" }}
   {{ $twitter_card := "summary_large_image" }}
-  {{ if $featured_image }}
+  {{ if (and (eq .Kind "taxonomy") $avatar_image) }}
+    {{ $og_image = ($avatar_image.Fill "270x270 Center").Permalink }}{{/* Match image proc in About widget. */}}
+    {{ $twitter_card = "summary" }}
+  {{ else if $featured_image }}
     {{ $og_image = $featured_image.Permalink }}
   {{ else if .Params.header.image }}
     {{ $og_image = printf "img/%s" .Params.header.image | absURL }}
@@ -160,9 +170,6 @@
   {{ else if $has_logo }}
     {{ $og_image = (partial "functions/get_logo" (dict "constraint" "fit" "size" 300)).Permalink }}
     {{ $twitter_card = "summary" }}
-  {{ else if site.Params.avatar }}
-    {{ $og_image = (printf "img/%s" site.Params.avatar) | absURL }}
-    {{ $twitter_card = "summary" }}
   {{ else }}
     {{ $og_image = (partial "functions/get_icon" 512).Permalink }}
     {{ $twitter_card = "summary" }}
@@ -175,7 +182,7 @@
   {{ end }}
   <meta property="og:site_name" content="{{ site.Title }}">
   <meta property="og:url" content="{{ .Permalink }}">
-  <meta property="og:title" content="{{ if not .IsHome }}{{ .Params.name | default .Title }} | {{ end }}{{ site.Title }}">
+  <meta property="og:title" content="{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ site.Title }}">
   <meta property="og:description" content="{{ $desc }}">
   {{- with $og_image -}}
   <meta property="og:image" content="{{.}}">
@@ -199,6 +206,6 @@
 
   {{ partial "custom_head" . }}
 
-  <title>{{ if not .IsHome }}{{ .Params.name | default .Title }} | {{ end }}{{ site.Title }}</title>
+  <title>{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ site.Title }}</title>
 
 </head>

+ 17 - 1
layouts/partials/site_js.html

@@ -61,7 +61,8 @@
         'post': {{ i18n "posts" }},
         'project': {{ i18n "projects" }},
         'publication' : {{ i18n "publications" }},
-        'talk' : {{ i18n "talks" }}
+        'talk' : {{ i18n "talks" }},
+        'slides' : {{ i18n "slides" | default (i18n "btn_slides") }}
         };
     </script>
     {{ end }}
@@ -123,6 +124,21 @@
     </script>
     {{ end }}
 
+    {{/* Netlify Identity integration. */}}
+    {{ if .IsHome | and (site.Params.cms.netlify_cms | default true) }}
+    <script>
+      if (window.netlifyIdentity) {
+        window.netlifyIdentity.on("init", user => {
+          if (!user) {
+            window.netlifyIdentity.on("login", () => {
+              document.location.href = "/admin/";
+            });
+          }
+        });
+      }
+    </script>
+    {{ end }}
+
     {{/* Disqus Comment Count JS. */}}
     {{ if and (eq site.Params.comments.engine 1) (site.Params.comments.disqus.show_count | default true) }}
     <script id="dsq-count-scr" src="https://{{site.Params.comments.disqus.shortname}}.disqus.com/count.js" async></script>

+ 3 - 3
layouts/partials/tags.html

@@ -1,8 +1,8 @@
 {{ $taxonomy := "tags" }}
-{{ with .Param $taxonomy }}
+{{ if .Param $taxonomy }}
 <div class="article-tags">
-  {{ range $index, $value := . }}
-  <a class="badge badge-light" href="{{ (site.GetPage (printf "/%s/%s" $taxonomy (. | urlize))).RelPermalink }}">{{ . }}</a>
+  {{ range $index, $value := (.GetTerms $taxonomy) }}
+  <a class="badge badge-light" href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
   {{ end }}
 </div>
 {{ end }}

+ 15 - 6
layouts/partials/widget_page.html

@@ -3,15 +3,24 @@
 
 {{/* Get widget page */}}
 {{ $page := "" }}
+{{ $headless_bundle := "" }}
 {{ if .IsHome }}
-  {{ $page = "/home" }}
+  {{ $page = "/home/index.md" }}
+  {{ $headless_bundle = site.GetPage $page }}
+  {{/* Check homepage exists */}}
+  {{ if not $headless_bundle }}
+    {{ errorf "Homepage not found at %s!" $page }}
+    {{ errorf "Add the `/home/index.md` homepage file to each language's content folder. For example, your site should have a `content/home/` folder containing `index.md` and your homepage sections, or for multi-language sites, `content/en/home/` and `content/zh/home/` etc. Refer to the 'Build Your Homepage' and 'Language' documentation at https://sourcethemes.com/academic/docs/ and the example homepage at https://github.com/gcushen/hugo-academic/tree/master/exampleSite/content/home/index.md ." }}
+  {{ end }}
 {{ else }}
   {{ $page = .File.Path }}
-{{ end }}
-{{ $headless_bundle := site.GetPage $page }}
-{{/* Check homepage exists */}}
-{{ if not $headless_bundle }}
-  {{ errorf "Homepage not found or duplicate homepages detected for a localization! Add the `home/` folder (especially `/home/index.md`) to each language's content folder. For example, your site should have a `content/home/` folder containing `index.md` and your homepage sections, or for multi-language sites, `content/en/home/` and `content/zh/home/` etc. Refer to the 'Build Your Homepage' and 'Language' documentation at https://sourcethemes.com/academic/docs/ and the example homepage at https://github.com/gcushen/hugo-academic/tree/master/exampleSite/content/home/index.md ." }}
+  {{ $headless_bundle = site.GetPage $page }}
+  {{/* Check widget page exists. */}}
+  {{ if not $headless_bundle }}
+    {{ errorf "Widget Page not found at %s!" $page }}
+    {{ errorf "View the Widget Page documentation at https://sourcethemes.com/academic/docs/managing-content/#create-a-widget-page ." }}
+    {{ errorf "If the Hugo version is between 0.65 and 0.68, it may be a confirmed Hugo bug that is expected to be fixed in Hugo v0.69: https://github.com/gcushen/hugo-academic/issues/1595#issuecomment-605514973 ." }}
+  {{ end }}
 {{ end }}
 
 {{/* Load page sections */}}

+ 4 - 4
layouts/partials/widgets/about.html

@@ -8,7 +8,7 @@
   {{ $author = $page.Params.author }}
 {{end}}
 
-{{ $person_page_path := (printf "/authors/%s" (urlize $author)) }}
+{{ $person_page_path := (printf "/authors/%s" $author) }}
 {{ $person_page := site.GetPage $person_page_path }}
 {{ if not $person_page }}
   {{ errorf "Could not find an author page at `%s`. Please check the value of `author` in your About widget and create an associated author page if one does not already exist. See https://sourcethemes.com/academic/docs/page-builder/#about " $person_page_path }}
@@ -23,14 +23,14 @@
     <div id="profile">
 
       {{ if site.Params.avatar.gravatar }}
-      <img class="avatar {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="https://s.gravatar.com/avatar/{{ md5 $person.email }}?s=270')" alt="{{$person.name}}">
+      <img class="avatar {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="https://s.gravatar.com/avatar/{{ md5 $person.email }}?s=270')" alt="{{$person_page.Title}}">
       {{ else if $avatar }}
       {{ $avatar_image := $avatar.Fill "270x270 Center" }}
-      <img class="avatar {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="{{ $avatar_image.RelPermalink }}" alt="{{$person.name}}">
+      <img class="avatar {{if eq $avatar_shape "square"}}avatar-square{{else}}avatar-circle{{end}}" src="{{ $avatar_image.RelPermalink }}" alt="{{$person_page.Title}}">
       {{ end }}
 
       <div class="portrait-title">
-        <h2>{{ $person.name }}</h2>
+        <h2>{{ $person_page.Title }}</h2>
         {{ with $person.role }}<h3>{{ . | markdownify | emojify }}</h3>{{ end }}
 
         {{ range $person.organizations }}

+ 12 - 1
layouts/partials/widgets/featurette.html

@@ -22,7 +22,18 @@
     {{ $pack_prefix = "fa" }}
   {{ end }}
   <div class="col-12 col-sm-4">
-    {{ with .icon }}<div class="featurette-icon"><i class="{{ $pack }} {{ $pack_prefix }}-{{ . }}"></i></div>{{ end }}
+    {{ with .icon }}
+    <div class="featurette-icon">
+      {{- if eq $pack "emoji" -}}
+        {{- . | emojify -}}
+      {{- else if eq $pack "custom" -}}
+        {{- $svg_icon := resources.Get (printf "images/icon-pack/%s.svg" .) -}}
+        {{- if $svg_icon -}}<img src="{{ $svg_icon.RelPermalink }}" alt="{{.}}" class="svg-icon svg-baseline">{{- end -}}
+      {{- else -}}
+        <i class="{{ $pack }} {{ $pack_prefix }}-{{ . }}"></i>
+      {{- end -}}
+    </div>
+    {{ end }}
     <h3>{{ .name | markdownify | emojify }}</h3>
     {{ with .description }}<p>{{ . | markdownify | emojify }}</p>{{ end }}
   </div>

+ 1 - 1
layouts/partials/widgets/people.html

@@ -50,7 +50,7 @@
     {{ end }}
 
     <div class="portrait-title">
-      <h2>{{with $link}}<a href="{{.}}">{{end}}{{ .Params.name }}{{if $link}}</a>{{end}}</h2>
+      <h2>{{with $link}}<a href="{{.}}">{{end}}{{ .Title }}{{if $link}}</a>{{end}}</h2>
       {{ with .Params.role }}<h3>{{ . | markdownify | emojify }}</h3>{{ end }}
       {{ if $show_social }}{{ partial "social_links" . }}{{ end }}
       {{ if and $show_interests .Params.interests }}<p class="people-interests">{{ delimit .Params.interests ", " | markdownify | emojify }}</p>{{ end }}

+ 1 - 1
layouts/publication/single.html

@@ -11,7 +11,7 @@
     <p class="pub-abstract">{{ .Params.abstract | markdownify }}</p>
     {{ end }}
 
-    {{ if (.Params.publication_types) and (ne (index .Params.publication_types 0) "0") }}
+    {{ if and (.Params.publication_types) (ne (index .Params.publication_types 0) "0") }}
     <div class="row">
       <div class="col-md-1"></div>
       <div class="col-md-10">

+ 1 - 1
layouts/shortcodes/figure.html

@@ -21,7 +21,7 @@
 <figure{{ with .Get "class" }} class="{{.}}"{{ end }} {{ with $caption }}id="figure-{{ anchorize . }}"{{ end }}>
 
 {{ if $lightbox }}
-  <a data-fancybox="{{$group}}" href="{{$image_src}}" {{ with $caption }}data-caption="{{ .|markdownify|emojify }}"{{ end }}>
+  <a data-fancybox="{{$group}}" href="{{$image_src}}" {{ with $caption }}data-caption="{{ .|markdownify|emojify|safeHTMLAttr }}"{{ end }}>
 {{ else if .Get "link"}}
   <a href="{{ .Get "link" }}"{{ with .Get "target" }} target="{{.}}"{{ end }}{{ with .Get "rel" }} rel="{{.}}"{{ end }}>
 {{ end -}}

+ 1 - 1
layouts/shortcodes/mention.html

@@ -2,7 +2,7 @@
 {{- $username_url := $username | urlize -}}
 {{- $taxonomy := "authors" -}}
 {{- $profile_page := site.GetPage (printf "/%s/%s" $taxonomy $username_url) -}}
-{{- $name := $profile_page.Params.name | default ($username|markdownify) -}}
+{{- $name := $profile_page.Title | default ($username|markdownify) -}}
 {{- with $profile_page -}}
   <a href="{{$profile_page.RelPermalink}}">{{$name}}</a>
 {{- else -}}

+ 13 - 0
layouts/shortcodes/spoiler.html

@@ -0,0 +1,13 @@
+{{- $id := printf "spoiler-%d" .Ordinal -}}
+<div class="spoiler {{ .Get "class" }}" {{ with .Get "style" }}style="{{ . | safeCSS }}"{{ end }}>
+  <p>
+    <a class="btn btn-primary" data-toggle="collapse" href="#{{$id}}" role="button" aria-expanded="false" aria-controls="{{$id}}">
+      {{ .Get "text" | emojify }}
+    </a>
+  </p>
+  <div class="collapse card {{ if (eq (.Get "open") "true") }}show{{ end }}" id="{{$id}}">
+    <div class="card-body">
+      {{ .Inner | markdownify | emojify }}
+    </div>
+  </div>
+</div>

+ 1 - 1
netlify.toml

@@ -5,7 +5,7 @@
 
 [build.environment]
   HUGO_THEME = "repo"
-  HUGO_VERSION = "0.66.0"
+  HUGO_VERSION = "0.72.0"
   HUGO_ENABLEGITINFO = "true"
 
 [context.production.environment]

+ 1 - 1
theme.toml

@@ -3,7 +3,7 @@ license = "MIT"
 licenselink = "https://github.com/gcushen/hugo-academic/blob/master/LICENSE.md"
 description = "The website builder for Hugo. Build *anything* with widgets and deploy with one click! Fully personalize your site with themes, plugins, and language packs."
 homepage = "https://sourcethemes.com/academic/"
-min_version = "0.62"
+min_version = "0.65"
 tags = ["widgets",
         "resume",
         "portfolio",