Преглед изворни кода

Rename DIR to dir and improve JavaScript for RTD

Marcel Stör пре 8 година
родитељ
комит
3e68026d7b
11 измењених фајлова са 70 додато и 16 уклоњено
  1. 0 0
      docs/de/index.md
  2. 0 0
      docs/en/build.md
  3. 0 0
      docs/en/faq.md
  4. 0 0
      docs/en/flash.md
  5. 0 0
      docs/en/index.md
  6. 0 0
      docs/en/modules/node.md
  7. 0 0
      docs/en/start.md
  8. 0 0
      docs/en/support.md
  9. 2 2
      docs/index.md
  10. 61 7
      docs/js/extra.js
  11. 7 7
      mkdocs.yml

+ 0 - 0
docs/DE/index.md → docs/de/index.md


+ 0 - 0
docs/EN/build.md → docs/en/build.md


+ 0 - 0
docs/EN/faq.md → docs/en/faq.md


+ 0 - 0
docs/EN/flash.md → docs/en/flash.md


+ 0 - 0
docs/EN/index.md → docs/en/index.md


+ 0 - 0
docs/EN/modules/node.md → docs/en/modules/node.md


+ 0 - 0
docs/EN/start.md → docs/en/start.md


+ 0 - 0
docs/EN/support.md → docs/en/support.md


+ 2 - 2
docs/index.md

@@ -4,7 +4,7 @@ NodeMCU is an [eLua](http://www.eluaproject.net/) based firmware for the [ESP826
 
 The firmware is based on the Espressif SDK v1.4 and uses a file system based on [spiffs](https://github.com/pellepl/spiffs).
 
-[English](EN/index.md)
+[English](en/index.md)
 
-[Deutsch](DE/index.md)
+[Deutsch](de/index.md)
 

+ 61 - 7
docs/js/extra.js

@@ -1,20 +1,17 @@
 var nodemcu = nodemcu || {};
 (function () {
   'use strict';
-  var languageCodeToNameMap = {EN: 'English', DE: 'Deutsch'};
+  var languageCodeToNameMap = {en: 'English', de: 'Deutsch'};
   var languageNames = values(languageCodeToNameMap);
-  var defaultLanguageCode = 'EN';
+  var defaultLanguageCode = 'en';
 
   $(document).ready(function () {
     hideNavigationForAllButSelectedLanguage();
+    addLanguageSelectorToRtdFlyOutMenu();
   });
 
   function hideNavigationForAllButSelectedLanguage() {
-    // URL is like http://host/EN/build/ -> extract 'EN'
-    var selectedLanguageCode = window.location.pathname.substr(1, 2);
-    if (!selectedLanguageCode) {
-      selectedLanguageCode = defaultLanguageCode;
-    }
+    var selectedLanguageCode = determineSelectedLanguageCode();
     var selectedLanguageName = languageCodeToNameMap[selectedLanguageCode];
     // Finds all subnav elements and hides them if they're /language/ subnavs. Hence, all 'Modules' subnav elements
     // won't be hidden.
@@ -31,6 +28,63 @@ var nodemcu = nodemcu || {};
     });
   }
 
+  /**
+   * Adds a language selector to the RTD fly out menu found bottom left. Example
+   * <dl>
+   *   <dt>Languages</dt>
+   *   <dd><a href="http://nodemcu.readthedocs.org/en/<branch>/de/">de</a></dd>
+   *   <strong>
+   *     <dd><a href="http://nodemcu.readthedocs.org/en/<branch>/en/">en</a></dd>
+   *   </strong>
+   * </dl>
+   */
+  function addLanguageSelectorToRtdFlyOutMenu() {
+    var flyOutWrapper = $('.rst-other-versions .injected');
+    // only works on RTD
+    if (flyOutWrapper.length > 0) {
+      var selectedLanguageCode = determineSelectedLanguageCode();
+      var dl = document.createElement('dl');
+      var dt = document.createElement('dt');
+      dl.appendChild(dt);
+      dt.appendChild(document.createTextNode('Languages'));
+      for (var languageCode in languageCodeToNameMap) {
+        dl.appendChild(createLanguageLinkFor(languageCode, selectedLanguageCode === languageCode));
+      }
+      flyOutWrapper.prepend(dl);
+    }
+  }
+  function createLanguageLinkFor(languageCode, isCurrentlySelected) {
+    var strong;
+    var pathSegments = window.location.pathname.split('/');
+    var dd = document.createElement("dd");
+    var href = document.createElement("href");
+    href.setAttribute('a', '/' + pathSegments[0] + '/' + pathSegments[1] + '/' + languageCode);
+    href.appendChild(document.createTextNode(languageCode));
+    dd.appendChild(href);
+    if (isCurrentlySelected) {
+      strong = document.createElement("strong");
+      strong.appendChild(dd);
+      return strong;
+    } else {
+      return dd;
+    }
+  }
+
+  function determineSelectedLanguageCode() {
+    var selectedLanguageCode, path = window.location.pathname;
+    if (window.location.origin.indexOf('readthedocs') > -1) {
+      // path is like /en/<branch>/<lang>/build/ -> extract 'lang'
+      selectedLanguageCode = path.split('/')[2];
+    } else {
+      // path is like /<lang>/build/ -> extract 'lang'
+      selectedLanguageCode = path.substr(1, 2);
+    }
+    if (!selectedLanguageCode || selectedLanguageCode.length > 2) {
+      selectedLanguageCode = defaultLanguageCode;
+    }
+    return selectedLanguageCode;
+  }
+
   function values(associativeArray) {
     var values = [];
     for (var key in associativeArray) {

+ 7 - 7
mkdocs.yml

@@ -23,12 +23,12 @@ site_favicon: img/favicon.png
 pages:
 - Overview: 'index.md'
 - English:
-    - Home: 'EN/index.md'
-    - Building the firmware: 'EN/build.md'
-    - Flashing the firmware: 'EN/flash.md'
-    - FAQ: 'EN/faq.md'
-    - Support: 'EN/support.md'
+    - Home: 'en/index.md'
+    - Building the firmware: 'en/build.md'
+    - Flashing the firmware: 'en/flash.md'
+    - FAQ: 'en/faq.md'
+    - Support: 'en/support.md'
     - Modules:
-        - 'node': 'EN/modules/node.md'
+        - 'node': 'en/modules/node.md'
 - Deutsch:
-    - Home: 'DE/index.md'
+    - Home: 'de/index.md'