liuyuqi-dellpc 5 years ago
commit
abd2504cbc
100 changed files with 7160 additions and 0 deletions
  1. 13 0
      .dockerignore
  2. 10 0
      .eslintrc.yml
  3. 42 0
      .github/ISSUE_TEMPLATE.md
  4. 50 0
      .github/ISSUE_TEMPLATE/BUG_REPORT.md
  5. 29 0
      .github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
  6. 27 0
      .github/ISSUE_TEMPLATE/SUPPORT_QUESTION.md
  7. 35 0
      .github/PULL_REQUEST_TEMPLATE.md
  8. 25 0
      .gitignore
  9. 20 0
      .travis.yml
  10. 39 0
      CONTRIBUTING.md
  11. 24 0
      Dockerfile
  12. 54 0
      Dockerfile-dev
  13. 4 0
      Gemfile
  14. 202 0
      LICENSE
  15. 5 0
      NOTICE
  16. 39 0
      README.md
  17. 1 0
      VERSION
  18. 17 0
      conf/README.md
  19. 82 0
      conf/_config.yml
  20. 14 0
      conf/_dev.yml
  21. 4 0
      conf/_nodocs.yml
  22. 6 0
      conf/_prod.yml
  23. 87 0
      doc/blogpost.md
  24. 14 0
      doc/building-and-deploying-the-website.md
  25. 7 0
      doc/building-the-website.md
  26. 42 0
      doc/deploying-the-website.md
  27. 13 0
      doc/developing-the-website.md
  28. 476 0
      doc/docs-STYLEGUIDE.md
  29. 162 0
      doc/installing-a-development-environment.md
  30. 53 0
      doc/redirects.md
  31. 10 0
      doc/testing-the-website.md
  32. 45 0
      doc/tool-or-showcase-app.md
  33. 643 0
      doc/translate.md
  34. 17 0
      doc/troubleshooting.md
  35. 30 0
      doc/working-on-docs.md
  36. 10 0
      docker-compose.debug.yml
  37. 10 0
      docker-compose.yml
  38. 502 0
      gulpfile.js
  39. 68 0
      package.json
  40. 160 0
      tools/bin/augment_toc.js
  41. 24 0
      tools/bin/deploy.sh
  42. 283 0
      tools/bin/fetch_docs.js
  43. 120 0
      tools/bin/gen_defaults.js
  44. 120 0
      tools/bin/gen_pages_dict.js
  45. 76 0
      tools/bin/gen_versions.js
  46. 11 0
      tools/bin/linkify-bugs.sh
  47. 67 0
      tools/bin/nextversion.js
  48. 75 0
      tools/bin/toc.js
  49. 121 0
      tools/bin/util.js
  50. 131 0
      www/.htaccess
  51. 105 0
      www/_data/contribute-repo-links.yml
  52. 122 0
      www/_data/fetched-files.yml
  53. 84 0
      www/_data/mailing-lists.yml
  54. 533 0
      www/_data/redirects.yml
  55. 91 0
      www/_data/showcase-apps.yml
  56. 76 0
      www/_data/toc/en_6-x-src.yml
  57. 76 0
      www/_data/toc/en_7-x-src.yml
  58. 65 0
      www/_data/toc/en_8-x-src.yml
  59. 66 0
      www/_data/toc/en_9-x-src.yml
  60. 66 0
      www/_data/toc/en_dev-src.yml
  61. 18 0
      www/_data/toc/es_5-4-0-src.yml
  62. 75 0
      www/_data/toc/es_6-x-src.yml
  63. 75 0
      www/_data/toc/es_7-x-src.yml
  64. 75 0
      www/_data/toc/es_8-x-src.yml
  65. 75 0
      www/_data/toc/es_9-x-src.yml
  66. 75 0
      www/_data/toc/es_dev-src.yml
  67. 75 0
      www/_data/toc/zh-cn_6-x-src.yml
  68. 75 0
      www/_data/toc/zh-cn_7-x-src.yml
  69. 75 0
      www/_data/toc/zh-cn_8-x-src.yml
  70. 75 0
      www/_data/toc/zh-cn_9-x-src.yml
  71. 75 0
      www/_data/toc/zh-cn_dev-src.yml
  72. 75 0
      www/_data/toc/zh-tw_6-x-src.yml
  73. 75 0
      www/_data/toc/zh-tw_7-x-src.yml
  74. 75 0
      www/_data/toc/zh-tw_8-x-src.yml
  75. 75 0
      www/_data/toc/zh-tw_9-x-src.yml
  76. 75 0
      www/_data/toc/zh-tw_dev-src.yml
  77. 101 0
      www/_data/tools.yml
  78. 21 0
      www/_includes/algolia.html
  79. 8 0
      www/_includes/analytics.html
  80. 12 0
      www/_includes/comment_count.html
  81. 13 0
      www/_includes/disqus.html
  82. 67 0
      www/_includes/footer_contents.html
  83. 6 0
      www/_includes/footer_docs.html
  84. 6 0
      www/_includes/footer_site.html
  85. 39 0
      www/_includes/generated_docs_index.html
  86. 63 0
      www/_includes/head.html
  87. 50 0
      www/_includes/header.html
  88. 5 0
      www/_includes/sitemap_entry.html
  89. 12 0
      www/_includes/toc_recursive_dropdown.html
  90. 28 0
      www/_includes/toc_recursive_main.html
  91. 66 0
      www/_includes/tools_and_showcase.html
  92. 20 0
      www/_includes/twitterFeed.html
  93. 14 0
      www/_layouts/base.html
  94. 8 0
      www/_layouts/blog.html
  95. 8 0
      www/_layouts/contribute.html
  96. 7 0
      www/_layouts/cordova.html
  97. 15 0
      www/_layouts/docs-de.html
  98. 15 0
      www/_layouts/docs-en.html
  99. 15 0
      www/_layouts/docs-es.html
  100. 15 0
      www/_layouts/docs-fr.html

+ 13 - 0
.dockerignore

@@ -0,0 +1,13 @@
+node_modules
+npm-debug.log
+Dockerfile*
+docker-compose*
+.dockerignore
+.git
+.gitignore
+.env
+*/bin
+*/obj
+README.md
+LICENSE
+.vscode

+ 10 - 0
.eslintrc.yml

@@ -0,0 +1,10 @@
+root: true
+extends: semistandard
+rules:
+  indent:
+    - error
+    - 4
+  camelcase: off
+  padded-blocks: off
+  operator-linebreak: off
+  no-throw-literal: off

+ 42 - 0
.github/ISSUE_TEMPLATE.md

@@ -0,0 +1,42 @@
+<!--
+Please have a look at the issue templates you get when you click "New issue" in the GitHub UI.
+We very much prefer issues created by using one of these templates.
+-->
+
+### Issue Type
+<!-- Please check the boxes by putting an x in the [ ] like so: [x] -->
+
+- [ ] Bug Report
+- [ ] Feature Request
+- [ ] Support Question
+
+## Description
+
+## Information
+<!-- Include all relevant information that might help understand and reproduce the problem -->
+
+### Command or Code
+<!-- What command or code is needed to reproduce the problem? -->
+
+### Environment, Platform, Device
+<!-- In what environment, on what platform or on which device are you experiencing the issue? -->
+
+
+
+### Version information
+<!-- 
+What are relevant versions you are using?
+For example:
+Cordova: Cordova CLI, Cordova Platforms, Cordova Plugins 
+Other Frameworks: Ionic Framework and CLI version
+Operating System, Android Studio, Xcode etc.
+-->
+
+
+
+## Checklist
+<!-- Please check the boxes by putting an `x` in the `[ ]` like so: `[x]` -->
+
+- [ ] I searched for already existing GitHub issues about this
+- [ ] I updated all Cordova tooling to their most recent version
+- [ ] I included all the necessary information above

+ 50 - 0
.github/ISSUE_TEMPLATE/BUG_REPORT.md

@@ -0,0 +1,50 @@
+---
+name: 🐛 Bug Report
+about: If something isn't working as expected.
+
+---
+
+# Bug Report
+
+## Problem
+
+### What is expected to happen?
+
+
+
+### What does actually happen?
+
+
+
+## Information
+<!-- Include all relevant information that might help understand and reproduce the problem -->
+
+
+
+### Command or Code
+<!-- What command or code is needed to reproduce the problem? -->
+
+
+
+### Environment, Platform, Device
+<!-- In what environment, on what platform or on which device are you experiencing the issue? -->
+
+
+
+### Version information
+<!-- 
+What are relevant versions you are using?
+For example:
+Cordova: Cordova CLI, Cordova Platforms, Cordova Plugins 
+Other Frameworks: Ionic Framework and CLI version
+Operating System, Android Studio, Xcode etc.
+-->
+
+
+
+## Checklist
+<!-- Please check the boxes by putting an x in the [ ] like so: [x] -->
+
+- [ ] I searched for existing GitHub issues
+- [ ] I updated all Cordova tooling to most recent version
+- [ ] I included all the necessary information above

+ 29 - 0
.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md

@@ -0,0 +1,29 @@
+---
+name: 🚀 Feature Request
+about: A suggestion for a new functionality
+
+---
+
+# Feature Request
+
+## Motivation Behind Feature
+<!-- Why should this feature be implemented? What problem does it solve? -->
+
+
+
+## Feature Description
+<!-- 
+Describe your feature request in detail
+Please provide any code examples or screenshots of what this feature would look like
+Are there any drawbacks? Will this break anything for existing users? 
+-->
+
+
+
+## Alternatives or Workarounds
+<!-- 
+Describe alternatives or workarounds you are currently using 
+Are there ways to do this with existing functionality?
+-->
+
+

+ 27 - 0
.github/ISSUE_TEMPLATE/SUPPORT_QUESTION.md

@@ -0,0 +1,27 @@
+---
+name: 💬 Support Question
+about: If you have a question, please check out our Slack or StackOverflow!
+
+---
+
+<!------------^ Click "Preview" for a nicer view! -->
+
+Apache Cordova uses GitHub Issues as a feature request and bug tracker _only_.
+For usage and support questions, please check out the resources below. Thanks!
+
+---
+
+You can get answers to your usage and support questions about **Apache Cordova** on:
+
+* Slack Community Chat: https://cordova.slack.com (you can sign-up at http://slack.cordova.io/)
+* StackOverflow: https://stackoverflow.com/questions/tagged/cordova using the tag `cordova`
+
+---
+
+If you are using a tool that uses Cordova internally, like e.g. Ionic, check their support channels:
+
+* **Ionic Framework**
+  * [Ionic Community Forum](https://forum.ionicframework.com/)
+  * [Ionic Worldwide Slack](https://ionicworldwide.herokuapp.com/)
+* **PhoneGap**
+  * [PhoneGap Developer Community](https://forums.adobe.com/community/phonegap)

+ 35 - 0
.github/PULL_REQUEST_TEMPLATE.md

@@ -0,0 +1,35 @@
+<!--
+Please make sure the checklist boxes are all checked before submitting the PR. The checklist is intended as a quick reference, for complete details please see our Contributor Guidelines:
+
+http://cordova.apache.org/contribute/contribute_guidelines.html
+
+Thanks!
+-->
+
+### Platforms affected
+
+
+
+### Motivation and Context
+<!-- Why is this change required? What problem does it solve? -->
+<!-- If it fixes an open issue, please link to the issue here. -->
+
+
+
+### Description
+<!-- Describe your changes in detail -->
+
+
+
+### Testing
+<!-- Please describe in detail how you tested your changes. -->
+
+
+
+### Checklist
+
+- [ ] I've run the tests to see all new and existing tests pass
+- [ ] I added automated test coverage as appropriate for this change
+- [ ] Commit is prefixed with `(platform)` if this change only applies to one platform (e.g. `(android)`)
+- [ ] If this Pull Request resolves an issue, I linked to the issue in the text above (and used the correct [keyword to close issues using keywords](https://help.github.com/articles/closing-issues-using-keywords/))
+- [ ] I've updated the documentation if necessary

+ 25 - 0
.gitignore

@@ -0,0 +1,25 @@
+build-*
+*.pyc
+
+conf/_defaults.yml
+conf/_version.yml
+
+www/_data/docs-versions.yml
+www/_data/all-pages.yml
+www/_data/toc/*-gen.yml
+www/static/css
+www/static/js/plugins.js
+
+# Note if you need to make changes to the following folder, it should be
+# done else where as these files are pulled from other sources
+# see fetch_docs.js for more details.
+# www/_data/fetched-files.yml contains an informative list of src/dest pairs
+www/docs/*/dev/reference
+
+node_modules
+ruby_modules
+.bundle
+.DS_Store
+Gemfile.lock
+
+.*.swp

+ 20 - 0
.travis.yml

@@ -0,0 +1,20 @@
+language: node_js
+node_js: 8
+sudo: false
+
+install:
+  - npm install
+  - bundle install
+
+script:
+  - npm test
+
+before_deploy:
+  - travis_wait 30 npm run build
+
+deploy:
+  skip_cleanup: true
+  provider: script
+  script: bash tools/bin/deploy.sh
+  on:
+    branch: master

+ 39 - 0
CONTRIBUTING.md

@@ -0,0 +1,39 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Contributing to Apache Cordova
+
+Anyone can contribute to Cordova. And we need your contributions.
+
+There are multiple ways to contribute: report bugs, improve the docs, and
+contribute code.
+
+For instructions on this, start with the
+[contribution overview](http://cordova.apache.org/contribute/).
+
+The details are explained there, but the important items are:
+ - Sign and submit an Apache ICLA (Contributor License Agreement).
+ - Have a Jira issue open that corresponds to your contribution.
+ - Run the tests so your patch doesn't break existing functionality.
+
+We look forward to your contributions!
+
+## Translating Documentation
+
+You can also help by [translating the documentation](doc/translate.md) into your native language.

+ 24 - 0
Dockerfile

@@ -0,0 +1,24 @@
+FROM daocloud.io/library/ubuntu:18.10
+LABEL Name=cordova-docs Version=1.0.1
+
+WORKDIR /root/app
+ADD . /root/app
+
+RUN sed -i "s|http://archive.ubuntu.com|http://mirrors.aliyun.com|g" /etc/apt/sources.list && rm -Rf /var/lib/apt/lists/* && apt-get -y update
+
+RUN apt-get install -y ruby-full
+
+RUN apt-get install -y nodejs
+RUN apt-get install -y npm
+RUN npm config set registry http://registry.npm.taobao.org
+
+RUN apt-get install -y python2.7
+
+RUN gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
+RUN gem install bundler
+
+RUN bundle install --path ./ruby_modules
+
+RUN npm install
+
+CMD ["/bin/bash"]

+ 54 - 0
Dockerfile-dev

@@ -0,0 +1,54 @@
+FROM daocloud.io/library/ubuntu:18.10
+LABEL Name=google/cordova-docs Version=1.0.1
+
+WORKDIR /root/app
+
+RUN sed -i "s|http://archive.ubuntu.com|http://mirrors.aliyun.com|g" /etc/apt/sources.list && rm -Rf /var/lib/apt/lists/* && apt-get -y update
+
+RUN apt-get install -y ruby-full
+
+RUN apt-get install -y nodejs
+RUN apt-get install -y npm
+RUN npm config set registry http://registry.npm.taobao.org
+
+RUN apt-get install -y python2.7
+
+RUN gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
+RUN gem install bundler
+
+CMD ["/bin/bash" ,"-c" ,"while true;do echo hello docker;sleep 1;done"]
+
+
+
+
+docker run -d --privileged -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock  --restart=always  portainer/portainer:1.20.1
+
+## docker build --rm -f "Dockerfile-dev" -t cordova-docs:latest2 . 
+## docker-compose up -d
+
+####docker run -it cordova-docs:latest2 -v /home/ubuntu/cordova-docs/:/root/app/ /bin/bash
+
+## docker ps
+
+## docker exec -it b232abe3c967 /bin/bash
+
+bundle config mirror.https://rubygems.org https://gems.ruby-china.com
+bundle install --path ./ruby_modules
+
+部署:
+node_modules/.bin/gulp serve
+
+构建静态html文件
+node_modules/.bin/gulp build --prod
+
+## 构建镜像
+docker build -t hub.tencentyun.com/google/cordava-docs:v1.0.0 .
+
+1、登录 hub 
+docker login --username=google hub.tencentyun.com
+
+2、pull/push
+docker tag [ImageId] hub.tencentyun.com/google/cordava-docs:v1.0.0
+docker push hub.tencentyun.com/google/cordava-docs:v1.0.1
+
+

+ 4 - 0
Gemfile

@@ -0,0 +1,4 @@
+source 'https://rubygems.org'
+gem 'jekyll', '= 2.5.3'
+gem 'redcarpet', '= 3.3.2'
+gem 'rouge', '= 2.1.0'

+ 202 - 0
LICENSE

@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In  
+ legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 5 - 0
NOTICE

@@ -0,0 +1,5 @@
+Apache Cordova
+Copyright 2012 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).

+ 39 - 0
README.md

@@ -0,0 +1,39 @@
+[![Build Status](https://travis-ci.org/apache/cordova-docs.svg?branch=master)](https://travis-ci.org/apache/cordova-docs)
+
+# Cordova Docs / Website
+
+This repository contains the source code for the Cordova website at [cordova.apache.org](https://cordova.apache.org).
+
+The site is also reachable with the short domain [cordova.io](http://cordova.io), the important subareas as [docs.cordova.io](http://docs.cordova.io), [blog.cordova.io](http://blog.cordova.io) and [plugins.cordova.io](http://plugins.cordova.io).
+
+## Technical Overview
+
+The main parts are built as a static site with [Jekyll](http://jekyllrb.com/), containing the homepage and subpages, the [blog](https://cordova.apache.org/blog) and the [docs](https://cordova.apache.org/docs).  
+The [plugin search](https://cordova.apache.org/plugins) is an embedded PreactJS application.
+
+Here in the repository the code of the actual site is located in [`/www`](www) with its subfolder [`/docs`](www/docs), [`/blog`](www/blog) and [`/plugins`](www/plugins).  
+Some additional content is [pulled in during the build process](TODO).
+
+The site is built using a [gulp script](gulpfile.js) that is run by Node.JS (`npm run-script build`). (Alternatively you can build the site using Make.) Deployments usually happen on commits to `master` via Travis, which runs [`buildAndDeploy.sh`](buildAndDeploy.sh) and commits the built site to a SVN repository.
+
+## Instructions
+
+- [Installing](doc/installing-a-development-environment.md)
+- [Developing](doc/developing-the-website.md)
+  * [Docs Redirects](doc/redirects.md)
+- [Testing](doc/testing-the-website.md)
+- Manual [Build](doc/building-the-website.md) and [Deployment](doc/deploying-the-website.md)
+- [Automated Build and Deployment](doc/building-and-deploying-the-website.md) on commits/merges to `master` via Travis
+- [Troubleshooting](doc/troubleshooting.md)
+
+### Common Tasks
+
+- [Working on `www/docs`](doc/working-on-docs.md) (updating drom `dev`, creating new version, pulling in external docs)
+- [Writing a Blog Post](doc/blogpost.md)
+- [Adding a Tool or a Showcase App](doc/tool-or-showcase-app.md)
+- [Translating](doc/translate.md)
+
+
+## Attributions
+
+For attributions for used open-source work, please see the attributions page: `www/attributions.html`.

+ 1 - 0
VERSION

@@ -0,0 +1 @@
+9.x

+ 17 - 0
conf/README.md

@@ -0,0 +1,17 @@
+# Jekyll Configuration
+
+This folder contains different configuration files for the Jekyll build, which is triggered via `gulp build` and similar commands (`gulp serve` etc.).
+
+Files present after checkout:
+
+- `_config.yml` is the main Jekyll config file
+- `_version.yml` defines the latest version of the docs
+- `_dev.yml` is used for default builds
+- `_prod.yml` is used when the `--prod` option is used for the build
+- `_nodocs.yml` is used when the `--nodocs` option is used for the build
+
+Some files are generated by the build process itself:
+
+- `_defaults.yml` defines different config values for different parts of the docs
+
+To learn more about how to control the build with these files, have a look at: https://jekyllrb.com/docs/configuration/

+ 82 - 0
conf/_config.yml

@@ -0,0 +1,82 @@
+# NOTE:
+#      some of the settings in this file get overwritten in later config
+#      files like _prod.yml, _dev.yml, and _defaults.yml
+
+# =======
+# Site settings
+# =======
+title:          Apache Cordova
+title_suffix:   "Apache Cordova"
+url:            "https://cordova.apache.org" # the base hostname & protocol
+baseurl:        "" # the subpath of the site, e.g. /blog; NOTE: no trailing slash
+rss_path:       /feed.xml
+description: >
+    Apache Cordova is a set of device APIs that allow a web mobile app
+    developer to access native device function from JavaScript.
+
+excerpt_separator: <!--more-->
+
+# the version to which /latest/ points
+# NOTE:
+#      this value gets overwritten in _version.yml, which is a generated file
+latest_docs_version: dev
+
+# the docs version that is shown by default when clicking on docs links on the site
+default_linked_docs_version: latest
+
+# the language that serves as the source for the translations
+src_language: en
+
+# NOTE:
+#      this value _might_ get overwritten on some pages;
+#      see _defaults.yml, which is a generated file
+language: en
+
+# NOTE:
+#      this value gets overwritten in _defaults.yml, which is a generated file
+defaults:
+
+# =======
+# Build settings
+# =======
+source:      www
+destination: build-dev
+
+# don't erase these files in the output directory
+keep_files: [".git", ".svn", "wiki-images", "images", "downloads"]
+
+lsi:  false # don't produce an index for related posts
+safe: false # disables plugins
+
+markdown: redcarpet
+
+redcarpet:
+    extensions:
+        # this enables code blocks denoted by backticks, like in GFM
+        # NOTE:
+        #      this is turned on by default by Jekyll, but is still
+        #      specified explicitly here in case the defaults change
+        - fenced_code_blocks
+
+        # this allows code blocks and HTML blocks to
+        # not have a leading or trailing newline
+        - lax_spacing
+
+        # allows tables
+        - tables
+
+        # surrounds highlighted text with <mark>s
+        - highlight
+
+highlighter: rouge
+
+kramdown:
+    input: GFM
+    hard_wrap: false
+    syntax_highlighter: rouge
+
+# exclude these directories from the build
+exclude:
+    - static/css-src
+
+algolia_api_key: "0a916ab198bd93d031aa70611271e42e"

+ 14 - 0
conf/_dev.yml

@@ -0,0 +1,14 @@
+baseurl: ""
+default_linked_docs_version: dev
+destination: build-dev
+
+exclude:
+    - static/css-src
+    - static/plugins
+    - docs/
+
+include:
+    - docs/en/dev
+    - docs/ru/dev
+    - docs/fr/dev
+    

+ 4 - 0
conf/_nodocs.yml

@@ -0,0 +1,4 @@
+exclude:
+    - static/css-src
+    - static/plugins
+    - docs

+ 6 - 0
conf/_prod.yml

@@ -0,0 +1,6 @@
+baseurl: ""
+default_linked_docs_version: latest
+destination: build-prod
+exclude:
+    - static/css-src
+    - static/plugins

+ 87 - 0
doc/blogpost.md

@@ -0,0 +1,87 @@
+# Writing a Blog Post
+
+1. Pull down the latest website codebase for the current posts
+
+        git pull
+
+1. Create a new entry in the www/_posts directory.
+
+1. Use an earlier post an a template. Edit your md file to remove undesired markdown links. If there is a phrase in square brackets that isn't a CB-xxxx reference, escape it with backslashes. Otherwise, heruko might error out and fail to build all the html.
+
+        [CB-1234] \[iOS\] \[Camera\] add a whizzbang to the snarfblat
+
+1. Set a marker where the summary on the home page should stop displaying. Add the following html comment line to your md file at the desired cutoff point:
+
+        <!--more-->
+
+1. In the front matter of your blog entry, set the `date:` field to the desired date that you want to appear near the title. Be aware that the date (explicit here or implied via the filename) will be used to generate the relative path to this html file (e.g. "/announcements/2014/09/22/cordova-361.html"), as will the `categories:` front matter value.
+
+        date: 2014-09-22
+        categories: announcements
+
+1. Run gulp link-bugs to linkify
+
+        gulp link-bugs
+
+1. Preview it locally by running the site using gulp
+
+1. Raise a Pull Request with the changes
+
+## Types of Posts
+
+_Announcements_ - releases, call for translators, etc
+
+_Core Content_ - If the content has to do with cordova-core, or publishing guides, etc., we should publish the full text directly on the cordova Blog (by whichever author), as-if written by the organization.
+
+_Linked Posts_ - If the content was written by a contributor and is worth curating for the whole community, but is not really core ie. non-core plugins, dev tips, research, opinion-pieces, statistics, etc., post a short description, perhaps adding a document-snippet, but then link to the externally hosted content, making it clearly not written by the organization.
+
+## Post guidelines
+
+* Use the post title as the first header.
+* Including a header as well makes the snippet on the front page look bad.
+* Use an appropriate category:
+* One of: 
+    * `howto`
+    * `news`
+    * `releases`
+    * `announcements`
+    * `blog` (the catch-all category)
+* Use appropriate tags:
+    * `tools`
+    * `plugins`
+    * `android`
+    * `ios`
+    * `windowsphone`
+    * `blackberry`
+    * `plugin-$FOO`
+    * `cli`
+    * `performance`
+    * `last-week`
+    * `security`
+    * (add to this list as necessary)
+* Use gulp to preview your posts locally.
+* Jekyll does a poor job telling you where markdown errors exist.
+* Use the `<!--more-->` tag to specify the cutoff point for displaying your post on the main page.
+* Review your post yourself before asking for a review. This includes spell-check :).
+* Ask for a review by raising a pull request
+
+## Creating "last week" Posts
+
+To get a summary of changes (and count the changes):
+
+    for l in cordova-*; do ( cd $l ; git log --format="$(printf %30s $l) %s" --no-merges --since='1 week ago' ) ; done | grep -iv version | grep -v CHANGELOG > all_logs.txt
+
+To get the number of authors:
+
+    for l in cordova-*; do ( cd $l ; git log --format="%an" --no-merges --since='1 week ago' ) ; done | sort | uniq | wc -l
+
+## Creating Release Announcement Posts
+
+Create a copy of a previous post and update it.
+
+### To print the list of plugin versions tested:
+
+1. Make sure all plugin repos are cloned, updated, and on master branch
+2. Run:
+
+        for d in *-plugin-*; do ( cd $d && echo "* $(basename $PWD): $(grep version plugin.xml|grep -v encoding|cut -d'"' -f2)" ) ; done | grep '^\*'

+ 14 - 0
doc/building-and-deploying-the-website.md

@@ -0,0 +1,14 @@
+## Building and Deploying (Automated)
+
+[Travis] automatically builds and publishes commits to `master` of this repository, so either merged Pull Requests or direct commits. 
+
+In [`.travis.yml`](../.travis.yml), Travis installs the required dependencies and then runs `buildAndDeploy.sh`. This script runs the build script (`npm run-script build`, which runs `gulp build --prod`) and then then uses [SVN] to update, copy, add, and commit the new changes over to the website SVN repository. 
+
+You can read more about the individual steps [here](deploying-the-website.md).
+
+Travis also runs `npm test` and will notify you if any of your `eslint` or `mocha` tests are failing.
+
+**NOTE**: Committing to Travis might take a while (up to 1 hour), depending on the number of files changed.
+
+[Travis]: https://travis-ci.org/
+[SVN]: http://svnbook.red-bean.com/en/1.7/svn.intro.quickstart.html

+ 7 - 0
doc/building-the-website.md

@@ -0,0 +1,7 @@
+## Building
+
+To build the whole website, run:
+
+    node_modules/.bin/gulp build --prod
+
+The built website will be in a folder called `build-prod`.

+ 42 - 0
doc/deploying-the-website.md

@@ -0,0 +1,42 @@
+## Deploying
+
+### Automatic Deployment
+
+See [building-and-deploying-the-website.md](building-and-deploying-the-website.md) for a description of the automated build and deploy process via Travis.
+
+### Manual Deployment
+
+> This section requires basic knowledge of SVN. If you do not know how to use SVN, refer to [this tutorial][svn].
+
+To build the full website, run:
+
+    node_modules/.bin/gulp build --prod
+
+A folder called `build-prod` will be created, and will contain the built website. Then, in a directory *one level above* the `cordova-docs` repository, check out the SVN repository that contains the currently deployed website by running the following command (committer access required):
+
+    cd ..
+    svn checkout https://svn.apache.org/repos/asf/cordova/site cordova-website
+
+Then, move into the `cordova-website` repository and synchronise it with the SVN server:
+
+    cd cordova-website
+    svn update
+
+Copy the `cordova-docs/build-prod/` directory to the `public` directory in SVN like so:
+
+    cd ..
+    cp -R cordova-docs/build-prod/. cordova-website/public/
+
+Some files will be new (`?` in SVN, and need to be `svn add`ed) and some files will be changed (`M` in SVN; no action required). To see just the `?` changes, run:
+
+    cd cordova-website
+    svn status | grep "?"
+
+Once you are satisfied that you have added the required changes, commit with a message:
+
+    svn commit -m "Updated docs"
+
+**NOTE**: The commit might take a while (up to 1 hour), depending on the number of files changed.
+
+
+[svn]: http://svnbook.red-bean.com/en/1.7/svn.intro.quickstart.html

+ 13 - 0
doc/developing-the-website.md

@@ -0,0 +1,13 @@
+## Developing
+
+To work on the website and see changes live as you save, run:
+
+    node_modules/.bin/gulp serve
+
+That command will build the site and start a local server. To work on only the website without the docs, add the `--nodocs` flag, as follows:
+
+    node_modules/.bin/gulp serve --nodocs
+
+Alternatively, to dynamically rebuild the site and refresh the browser _when changes happen_ (again, optionally with the `--nodocs` flag), run:
+
+    node_modules/.bin/gulp watch

+ 476 - 0
doc/docs-STYLEGUIDE.md

@@ -0,0 +1,476 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you under the Apache License, Version 2.0 (the
+         "License"); you may not use this file except in compliance
+         with the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing,
+         software distributed under the License is distributed on an
+         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+         KIND, either express or implied.  See the License for the
+         specific language governing permissions and limitations
+         under the License.
+---
+
+# Editorial Style Sheet
+
+Developers contributing to Cordova are already familiar with coding
+best practices.  What you'll find here are best practices when writing
+tech doc addressed to Cordova developers. A consistent set of
+standards helps tie together doc, and makes it seem like it's written
+with one voice.
+
+There are two basic kinds of tech doc: reference content and
+expository "guide" content. Reference doc tends to be self-contained,
+descriptive, and scoped without context: e.g., detailing an API
+interface and its members.  Guide content is prescriptive, linear, and
+part of a larger story. How do you typically use the API (or
+whatever), what do you need to know first, what are the limits to what
+you can use it for, etc. Guide content is oriented more around tasks,
+common use cases, or especially now in Cordova's case, alternative
+workflows.  It may not be obvious, but if you first ask yourself what
+purpose the doc you're editing serves, it improves its quality
+immensely.
+
+These guidelines are not necessarily set in stone. If you think of
+alternatives or exceptions, please note them here.  Some of the issues
+identified below are listed along with recursive `grep` commands to
+help identify them in Markdown.
+
+## Structure and Flow
+
+* __Provide Context__: Each page of expository doc should start with a
+  short paragraph summarizing the subject matter, and serving as
+  necessary connective tissue to other doc.  Link to other related &
+  prerequisite topics, especially for likely workflow scenarios.
+  E.g., Plugman doc is most appropriate for platform-specific
+  shell-tool workflow, not for the CLI even though it underlies it
+  invisibly.
+
+* __Valid Heading Structure__: One title only (an A-head) at the top
+  of the page.  No jumps to C-heads. Do not follow a heading with a
+  subheading with no intervening introductory text.
+
+        grep -hr '^#' *        # Lists all headings; use '#' prefixes rather than underlines
+
+* __Flatten Content__: Use B-heads to divide each page's content. Please
+  avoid C-heads. Readers tend to lose context once content gets that
+  nested. Think: "blog post."
+
+        grep -hr '^###' *      # Identifies C-heads
+
+* __Consistent Headings__: Try to match verb tense in headings. That
+  is, if one is task-based and reads "Adding a Platform," the other
+  should be "Developing for Android" rather than "Android Development"
+
+* __Heading Content__: In reference doc, preserve case in titles and
+  headings.  In guide doc: Initial Cap Words in Headings, Except for
+  Short Prepositions or Conjunctions. Also Init-Cap Around Hyphens. No
+  punctuation at the end of a heading, and avoid punctuation within
+  headings.  Do not prefix headings with numbers.
+
+        grep -hr '^#' * | sed 's/^#*//g' | grep '[^A-Za-z0-9 ]'
+
+* __Heading Fonts__: In reference doc, do not apply font formatting to
+  standalone member names such as compass.getCurrentHeading. Minimize
+  font changes within headings. If necessary, only apply italic.
+
+* __Listings__: Use numbered lists for sequential procedures or ranked
+  content only, otherwise use bullet lists.  Precede lists with text
+  that introduces them, preferably ending with a colon (:).  Do not
+  allow single-item lists.  Use bullet lists only to indicate a clear
+  set of choices that you first introduce, not as a substitute for a
+  series of regular paragraphs.  Avoid nested lists, for the same
+  reason you avoid C-heads. Do not indent top-level lists.
+
+* __Punctuating and Formatting Lists__: Append periods to bullet and
+  number list items that consist of full sentences. No periods when
+  bullet items are sentence fragments, except in bullet lists that
+  need internal consistency. To improve readability, add vertical
+  space around top-level bullet/numbered list items that consist of
+  full sentences. OK to vertically collapse lists of short, easily
+  scannable items.
+
+* __Procedure Lists__: Don't break out separate procedure items for
+  (1) do this, followed by (2) this describes what just happened, then
+  (3) do that.  Prefer (1) Do this. It does so-and-so, which you might
+  see in some result. (2) Do that...
+
+* __Topic/Comment Lists__: For bullet lists that provide short topics
+  followed by comments, bold the topic, then merge the comment on the
+  same line, separated with a colon unless the topic features trailing
+  punctuation. This list item provides an example. Bolded Topic Text
+  Follows Same Init-Cap Rule as Headings.
+
+* __Notes__: Bold and all-cap __NOTE__:, with colon outside, always at
+  the start of a paragraph, never mid-paragraph. Do not incorporate
+  this font change into a sentence as in "__Note__ that..." but OK to
+  start a sentence: "Note that..." when the information is less
+  consequential. Do not apply bullet/number list formatting.
+
+        grep -hr ':__' *
+        grep -hr ' __NOTE' *
+        grep -hr 'Note:' *
+* __Warnings/Tips__: As an alternative to __NOTE__:, use __WARNING__:
+  for serious matters, or __TIP__: to pass along useful tricks or
+  context.
+
+        grep -hri 'Tip:' *
+        grep -hri 'Warning:' *
+
+* __Minimize Notes__: Avoid too many notes and warnings, as it implies
+  a haphazard development environment with too many variable factors
+  that divert the reader's attention. Try to clarify variations on a
+  procedure within the text. Try to focus attention on information
+  specific to Cordova, not on background knowledge.
+
+## Language and Tone
+
+* __Not So Imperative__: As a rule of thumb, avoid the word "must" and
+  unnecessarily imperative statements in general.  E.g., instead of
+  "Commands must be run from a cmd or powershell prompt," try "You can
+  run commands either from a cmd or powershell prompt."
+
+        grep -hri '\<must\>' *
+        grep -r '\<requires*\>' *
+
+* __Avoid the Willies__: Use present tense. "This happens," not "this
+  will happen." Future tense comes off as a tenuous prediction. Rule
+  of thumb: avoid the word "will."
+
+        grep -hri '\<will\>' *
+
+* __Avoid Passive Voice__: Past-tense passive voice is to be avoided.
+  E.g., "the pause event fires when..."  rather than "the pause event
+  is fired when..." Rule of thumb: banish verbs ending in "ed".
+  Passive voice is more appropriate for reference doc, you should
+  still avoid it when there's a better active-voice alternative.
+
+        grep -hr '\<is [a-z]*ed\>' *
+        grep -hr '\<be [a-z]*ed\>' *
+        grep -hr '\<was [a-z]*ed\>' *
+
+* __Not Kidding, Use Present Tense__: Minimize verbs ending with
+  "ing": "This is necessary to provide...", not "This is necessary for
+  providing..." <!-- are\s-+[a-z]+ing\b -->
+
+        grep -hr '\<for [a-z]*ing\>' *
+        grep -hr '\<by [a-z]*ing\>' *
+
+* __Use Action Verbs__: Avoid weak verbs like "is" or "has." The
+  sentence in the item above could stand improvement.
+
+* __Noun Phrase Jargon__: Avoid noun modification concatenation
+  somnambulation obfuscation.  Use your judgement and ask yourself if
+  readers might not actually know what some noun phrase means. If so,
+  explain the actual concept it represents, in this case: "Avoid
+  stringing nouns together into long phrases that come off as
+  impenetrable shop talk that puts everybody to sleep."
+
+* __Use Possessives__: Possessives sound more familiar and colloquial:
+  "the device's home screen" rather than clumsier: "the home screen of
+  the device"
+
+        grep -hr '\<of the\>' *
+
+* __The Brothers Karmazov__: 'The FOO file', not 'the file FOO', no
+  matter how long FOO's path is. Rule of thumb: would you say it when
+  speaking out loud?
+
+* __Serial comma__: This, that, and the other.
+
+* Do not drop articles: "In the Bada IDE", not "In Bada IDE"
+
+* Do not start a sentence with a lowercase member name. E.g., "Does
+  not support `filter`" rather than "`filter` is not supported"
+
+        grep -hr '\. `' *
+
+* Do not refer to "I," the author of the documentation, as in "What I
+  am going to show you now." Likewise avoid "we" and "let's," so
+  instead of "We see that..." try "You see that" or "Note that..."
+  Readers want to focus on whatever they're working on, not on you.
+
+        grep -hr '\<I\>' *
+
+* OK to refer to "you," the developer, but only sparingly, e.g., to
+  avoid the passive voice. Also do not use "your" as a routine
+  substitute for "the" or "a" when referring to a noun.
+
+        grep -hri '\<your*\>' *
+
+* Avoid em dash clauses--they unnecessarily break up the text--and
+  parenthical statements (which can also be distracting). If you do
+  include either, remove spaces around the dashes (punctuate fragments
+  outside of paren's). (Punctuate full sentences inside of parens.)
+
+* Refer to this Guide or section, not this document, page, or anything
+  else.
+
+## In-line Font Formatting
+
+* Use `monospace` for all-purpose nouns used in programming, e.g.: API
+  interfaces, methods, properties, literal values, Unix commands,
+  pathnames, filenames, etc.
+
+* Use __bold__ for on-screen items, such as the names of menu items,
+  buttons, and check boxes.
+
+* Use _italics_ for emphasis, simple mathematical expressions, and
+  variable items (e.g., _x_/_y_ coordinates).
+
+* Do _not_ use ALL CAPS for emphasis. (Exception: in code comments)
+
+* Do _not_ use "quote characters" to deliniate in-line text unless
+  required as part of a value. E.g., not OK to refer to the
+  "text-align" property. OK to set the CSS `text-align` property to
+  `left`, and the `content` property to `"This is some quoted text."`
+  (Exception: within code comments)
+
+* Do not combine in-line formatting such as _`monospace italic`_.
+
+* Use the markup system's shorthand characters rather than embedded
+  HTML `<em>...</em>` or `<code>...</code>`.
+
+## Usage
+
+* "User" may refer to the end user, not to an application's
+  "developer" who is presumably reading the doc. Refer to plural
+  "users" as "they" to avoid singular he/she pronoun problems. Also
+  avoid "his" and "her".  <!--RE\bs?he\b--> <!--RE\b(his|her)\b-->
+
+        grep -hri '\<s*he\>' *
+        grep -hri '\<his\>' *
+        grep -hri '\<her\>' *
+
+* WebView, not Webview. (OK to use lowercase webview in code)
+
+* "In-line" rather than "inline" in ordinary text, e.g., outside of
+  technical terms.
+
+* "Plugman" in generic references, `plugman` when referring to the
+  actual utility as invoked on the command line.
+
+* metadata.
+
+* Xcode.
+
+* "splash screen" unless specifically referring to the name of the API.
+
+* 'Directory', not 'folder'; may be exceptions in some GUI contexts.
+
+* Prefer "can't" over "cannot"; sounds more relaxed.
+
+* Subdirectory, not sub-directory
+
+* 'Press' a button on the screen; 'type' a key; do not 'hit' either.
+
+* 'Set up' as verb, 'setup' as noun.
+
+* 'handheld' not 'hand held' or 'hand-held'
+
+* Filename, not file name
+
+* 'JavaScript' (but lowercase when MIME type)
+
+* Unix, not unix
+
+* Mac "OS X", not "OSX"
+
+* BlackBerry, not Blackberry
+
+* "BlackBerry 10," not "BlackBerry10"
+
+* Prefer "emulator" over "simulator"; clarify when interfaces refer to
+  them differently.
+
+* Use "app" for mobile apps, and "application" for presumably more
+  complex desktop affairs. E.g., you may use the Xcode application to
+  help you write an iOS Cordova app.  Consider "app" a valid word
+  rather than a contraction, so use "apps" rather than "app's" as
+  plural.
+
+* Likewise, "repo" is OK to substitute for "repository"
+
+* Prefer generic "SDK" over "IDE", or "SDK tools" when referring to
+  dedicated GUI coding environments such as Eclipse. (OK to refer to
+  specific tools as IDEs if that's how they self-identify.)
+
+* Remove superfluous "navigate to" wherever possible, unless you need
+  to `cd` to a particular directory to launch a command. Instead of
+  "Navigate to the `D` directory and edit the `F` file," prefer: "Edit
+  the `D/F` file." And don't tell people which text editor to use.
+  That's fascist.
+
+* An XML/HTML 'element' rather than 'tag'
+
+* Without getting into any pointless arguments about object-oriented
+  programming, it's a "method" when called on an object. Refer to
+  "function" only when unspecified, e.g. you can implement a "callback
+  function" as an object method, but not necessarily.
+
+* Use parentheses when referring to `method()` and `function()` names.
+  (Exception: when assigning a reference to the object rather than
+  calling it as a method.)
+
+* Spell out "and" and "or"; do not substitute with "&" or "/" within
+  text.
+
+* "and/or" is unnecessary; "or" usually makes that implicit.
+
+* Avoid unnecessary/gratuitous slash-delimited alternators in text, as
+  in this example (but OK to refer to try/catch blocks).
+
+* Avoid trailing (s) to denote optional plural. It's usually implicit.
+  E.g., "return information about any captured image files", not
+  "file(s)"
+
+* Avoid the word "multiple" wherever possible.  It's one of those
+  unnecessary words up there with "myriad" or "plethora." What ever
+  happened to "several"?
+
+## Punctuation
+
+* Append colon to text that introduces a code snippet or image.
+
+* Use `&amp;rarr;` arrow entities (&rarr;) for hierarchical menus or
+  sequences of nested dialog boxes.
+
+## Common Grammatical Errors
+
+* __Hyphenate Adjective Phrases__: E.g., "command-line tools", but not
+  when it's a noun, as in "the command line."
+
+* __It's a Crazy Language, but its Rules Eventually Make Sense__:
+  Hyphenate "it's" only for "it is," not for possessive.
+
+* __Plural Possessives__: E.g., Obtain a user's permission, but
+  collectively, get users' permission.
+
+* Do not use apostrophes for plural, so "...manages core APIs,"
+  not api's or API's. Only use apostrophes for possessives, e.g. "the
+  API's members"
+
+* "applications" not "app's" for plural
+
+* Do not hyphenate adverbs, as it's implict they modify verbs.  So,
+  "commonly seen problems," not "commonly-seen problems"
+
+* Use semicolons to separate short, closely related clauses that can
+  stand alone grammatically as full sentences. Use commas to separate
+  clauses where one is a sentence fragment. E.g., "This is a clause,
+  along with this." vs.  "This can serve as a sentence; this can too."
+
+* If a sentence with semicolons runs on too long, it's time to break
+  it out into separate sentences. Rewrite this...  "This can serve as
+  a sentence; this can too, along with related information."  ...as...
+  "This can serve as a sentence. This can too, along with related
+  information."
+
+* This can serve as a sentence and this can also serve as a sentence
+  but you need to use commas to separate this big mess.
+
+## Content-specific
+
+* Refer to the default app as "Hello World", regardless of what it
+  actually displays.
+
+* Refer to the default plugin demo as "Echo"
+
+* Keep the term "hybrid" app confined to two scenarios: (1) an app
+  whose developer has to supply components that bridge native &
+  webview, e.g., custom plugins, or an embedded webview component. (2)
+  An app with an InAppBrowser, that is a web-based app that itself
+  opens a web page. Don't apply to a garden-variety "cross-platform"
+  app that is Cordova's bread and butter.
+
+## Links
+
+* Use titles in link text, never 'click here'. Consider using the
+  link's domain name as a substitute.
+
+* Domain names are OK as a link's display text, but not full
+  scheme-qualified URLs. No bare URLs in text outside of code.
+
+        grep -hr '\[http' *
+
+## XML References
+
+* Each element has it's own section with the following structure:
+
+  * Element Name
+  * General Description
+  * Attributes Table
+  * Examples
+
+* If an element has a sub-element, follow a nested structure. The parent element becomes a H1 heading, child becomes H2 and so on.
+
+* If an attribute is specific to a set of platforms:
+
+  * Supported platforms should be listed below the attribute name in the same table column
+  * Only list platforms if the attribute is platform-specific. Do not list any if it is supported by all platforms.
+  * Use the syntax `==platform-name==` when giving a platform. This will be converted on the website into a logo for that platform. Valid `platform-name` values are:
+    * android
+    * browser
+    * firefoxos
+    * fireos
+    * ios
+    * osx
+    * ubuntu
+    * webos
+    * windows
+
+* Attribute description should include the following in order:
+
+  * Default: Use *italics* formatting to provide default value of the attribute
+  * Required: Use *italics* formatting to provide if the attribute value is required
+  * Textual Description.
+
+* Below is an example documentation for 'platform' element for plugin.xml. 'source-file' is a sub-element of the 'platform' element.
+
+  ### platform
+    Identifies platforms that have associated native code or require modifications to their configuration files. Tools using this specification can identify supported platforms and install the code into Cordova projects. Plugins without <platform> tags are assumed to be JavaScript-only, and therefore installable on any and all platforms.
+
+    Attributes(type) <br/> <span class="sub-header">Only for platform:</span> | Description
+    ---------------- | ------------
+    name(string) | *Required* <br/> Allowed values: ios, android, blackberry10, amazon-fireos, wp8, windows <br/> Identifies a platform as supported, associating the element's children with that platform.
+
+    Example:
+    ```
+    <platform name="android">
+      <!-- android-specific elements -->
+    </platform>
+    ```
+
+  #### source-file
+    Identifies executable source code that should be installed into a project.
+
+    Attributes (type) <br/> <span class="sub-header">Only for platform:</span> | Description
+    ----------------- | ------------
+    src(string) | *Required* <br/> Location of the file relative to plugin.xml. If the src file can't be found, plugman stops and reverses the installation, issues a notification about the problem, and exits with a non-zero code.
+    target-dir(string) | A directory into which the files should be copied, relative to the root of the Cordova project. In practice, this is most important for Java-based platforms, where a file in the com.alunny.foo package must be located within the com/alunny/foo directory. For platforms where the source directory is not important, this attribute should be omitted.
+    framework(boolean) <br/> ==ios== | *Default: false* <br/> If set to true, also adds the specified file as a framework to the project.
+    compiler-flags(string) <br/> ==ios== | If set, assigns the specified compiler flags for the particular source file.
+
+    Examples:
+    ```
+    <!-- android -->
+    <source-file src="src/android/Foo.java" target-dir="src/com/alunny/foo" />
+    <!-- ios -->
+    <source-file src="src/ios/CDVFoo.m" />
+    <source-file src="src/ios/someLib.a" framework="true" />
+    <source-file src="src/ios/someLib.a" compiler-flags="-fno-objc-arc" />
+    ```
+
+## Miscellaneous
+
+* OK to use shorthand notation for version ranges, e.g. "5.0+" rather
+  than "(OS 5.0 and higher)"
+
+* Use space characters rather than tabs in code blocks.
+

+ 162 - 0
doc/installing-a-development-environment.md

@@ -0,0 +1,162 @@
+## Installing
+
+The development environment setup requires installation of the following software:
+
+1. Ruby - Needed by Jekyll. Jekyll is the static site generator that generates the website and docs.
+1. Node.js - Needs to be installed in order to install all the required development and JavaScript dependencies.
+1. Python - Neeeded by Jekyll dependencies like Pygments.
+
+### Mac OS X
+
+#### Ruby
+
+Install Homebrew from [this site][homebrew], and then run:
+
+    brew install ruby@2.0
+
+#### Node.js
+
+Go to [this site][nodejs], and click the "Install" button. Then run the downloaded file and follow the on-screen instructions. Make sure that the option to **install NPM** is enabled, if you see one.
+
+#### Python
+
+Mac OS X comes with Python 2.7 pre-installed. Else, follow these steps:
+
+1. Download [this installer][python_installer_mac] from [this page][python_downloads].
+2. Run the downloaded file.
+
+### Windows
+
+#### Ruby
+
+Follow these steps:
+
+1. Download [this installer][ruby_installer] from [this page][ruby_downloads].
+2. Run the downloaded file.
+    1. Use the default installation path (usually `C:\Ruby22`).
+    1. Make sure the **'add executable to path'** option is checked.
+3. Download [this Ruby DevKit self-extracting archive][ruby_devkit] from the [same website][ruby_downloads].
+4. Run the downloaded file.
+    1. Use the following extraction path: `C:\Ruby22DevKit`.
+5. Open `cmd.exe`.
+    1. Go to the extraction path:
+
+            cd C:\Ruby22DevKit
+    1. Run these commands (following any instructions they give):
+
+            ruby dk.rb init
+            ruby dk.rb install
+    1. Close `cmd.exe`.
+
+#### Node.js
+
+Go to [this site][nodejs], and click the "Install" button. Then run the downloaded file and follow the on-screen instructions. Make sure that the option to **install NPM** is enabled, if you see one.
+
+#### Python
+
+Follow these steps:
+
+1. Download [this installer][python_installer_windows] from [this page][python_downloads].
+2. Run the downloaded file.
+   1. Use the default installation path
+   1. Make sure the **'add executable to path'** option is checked.
+
+### Linux
+
+#### Ruby
+
+Run the commands from [this site][ruby_linux] that apply to your Linux distribution.
+
+#### Node.js
+
+Follow the instructions on [this site][linux_node].
+
+#### Python
+
+The latest version of CentOS, Fedora, Redhat Enterprise (RHEL) and Ubuntu come with Python 2.7 pre-installed. Else, follow the steps from [this site][python_linux].
+
+### Check Installations
+
+#### Verify Ruby
+
+Ruby 2.0 is required to build the docs. NOTE: *The docs will not build with Ruby 1.8, 1.9 or 2.4.* 
+
+Verify your Ruby installation by running:
+
+    ruby --version
+
+#### Verify Node.js
+
+Verify your Node.js installation by running:
+
+    node --version
+    npm --version
+
+#### Verify Python
+
+Python 2.7 is also required to build the docs. NOTE: *The docs will not build with Python 3.0 or greater.*
+
+Verify your Python installation by running:
+
+    python --version
+
+The version must be 2.7.x.
+
+### Local repo setup
+
+Clone the [cordova-docs] GitHub repo to a local folder.
+
+### Dependencies
+
+#### Ruby
+
+Once Ruby and Node.js are installed, navigate to local repo folder and install Ruby dependencies by running:
+
+    gem install bundler
+    bundle install --path ./ruby_modules
+
+This will install the required Ruby Gems locally into a subfolder called `ruby_modules` in your repo folder. On some systems, the above commands need to be prefixed with `sudo`. Similarly on Windows, the `cmd` window in which those commands are to be run might need to have been "Run as Administrator."
+
+#### JavaScript
+
+Finally, install Node.js and JavaScript dependencies by running:
+
+    npm install
+
+### Troubleshooting
+
+#### SSL certificate issue while executing `gem install bundler` on Windows
+
+Try copying the certificate from [GlobalSignRootCerficateAuthority] into `C:\Ruby22\lib\ruby\2.2.0\rubygems\ssl_certs` folder
+
+#### Permission issues during Ruby install
+
+You could try a different method to install Ruby. Checkout [rbenv](https://github.com/sstephenson/rbenv). Instructions:
+
+1. Install rbenv
+
+        brew install rbenv ruby-build
+
+2. Add `eval "$(rbenv init -)"` to the end of your `.bash_profile`:
+
+        echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
+
+3. Install a version of `ruby` and set it to your local version:
+
+        rbenv install 2.0.0-p647
+        rbenv local 2.0.0-p647
+
+
+[ruby_linux]: https://www.ruby-lang.org/en/documentation/installation/#package-management-systems
+[homebrew]: http://brew.sh/
+[linux_node]: https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories#installing-node-js-v0-12
+[ruby_downloads]: http://rubyinstaller.org/downloads/
+[ruby_installer]: http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.3.exe
+[ruby_devkit]: http://dl.bintray.com/oneclick/rubyinstaller/DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe
+[nodejs]: https://nodejs.org/
+[python_downloads]: https://www.python.org/downloads/release/python-2711/
+[python_installer_mac]: https://www.python.org/ftp/python/2.7.11/python-2.7.11-macosx10.6.pkg
+[python_installer_windows]: https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi
+[python_linux]: http://docs.python-guide.org/en/latest/starting/install/linux/
+[cordova-docs]: https://github.com/apache/cordova-docs
+[GlobalSignRootCerficateAuthority]: https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem

+ 53 - 0
doc/redirects.md

@@ -0,0 +1,53 @@
+# Redirects
+
+Sometimes (docs) pages get removed, renamed, and added. There is [a redirects file](../www/_data/redirects.yml) that contains redirects for such occasions. It has three sections:
+
+- `general`: single-page redirects,
+- `docs-global`: redirects across all docs versions and languages, and
+- `docs`: version-specific docs redirects.
+
+For non-docs URIs, there are no versioning considerations. Make redirects like so:
+
+    general:
+        - "old/uri/for/page.html": "its/new/uri.html"
+
+**NOTE**: Review (and test, if possible) these redirects before making them live, since they're permanent (HTTP 301) redirects. Incorrect permanent redirects will make a URI almost impossible to bring back into browsers and search indices.
+
+## Changing Docs URIs
+
+There are five cases of changing URIs:
+
+1. Adding a brand new (no past equivalent) URI starting at a version,
+2. Removing an old URI (with no replacement) starting at a version,
+3. Renaming (removing and adding) an existing URI starting at a version,
+4. Renaming an existing URI across all versions,
+5. Removing an existing URI across all versions.
+
+### Case 1: Adding a URI starting at a version
+
+Do nothing. Going back in time for new docs is unsupported.
+
+### Cases 2 &amp; 3: Removing or renaming a URI starting at a version
+
+If the URI is removed, mark it as deprecated in `latest/` like so:
+
+    docs:
+        - "latest/old/uri/for/page.html": "deprecated.html"
+
+If the URI is moved, point it to its new location in `latest/` like so:
+
+    docs:
+        - "latest/old/uri/for/page.html": "latest/its/new/uri.html"
+
+These will handle the case where the "this content is outdated" link is clicked. The case where a user jumps to a specific version is not yet supported.
+
+### Case 4: Renaming a URI across all versions
+
+Add the redirect (in the `docs-global` section this time) like so:
+
+    docs-global:
+        - "old/uri/for/page.html": "its/new/uri.html"
+
+### Case 5: Removing a URI across all versions
+
+Do nothing. It is now an un-URI. It never existed.

+ 10 - 0
doc/testing-the-website.md

@@ -0,0 +1,10 @@
+# Testing
+
+After you are finished developing and making your changes, make sure to test them. Run:
+
+	npm test
+
+`npm test` runs both [eslint] and [mocha] tests. If your tests pass, commit and push your work to Github.
+
+[eslint]: https://eslint.org/
+[mocha]: https://mochajs.org/

+ 45 - 0
doc/tool-or-showcase-app.md

@@ -0,0 +1,45 @@
+# Adding a Tool or a Showcase App
+
+Items on the **Cordova Tools** or the **Cordova App Showcase** sections on the main page are modifiable by the public. Below are the guidelines and process to do so.
+
+## Guidelines
+
+The display _image_ shall:
+
+1. be __less than 128KiB__ in size (NOTE: those are kibibytes, not kilobytes),
+2. contain the __logo__ of the tool/app,
+3. use __colors that don't compete__ with other elements on the page, and
+4. have acceptable measurements, as follows:
+    - __298px by 100px__ or smaller with a roughly rectangular aspect ratio for tools, and
+    - __100px by 100px__ or smaller with a square aspect ratio for apps.
+
+The _description_ shall:
+
+1. contain __neutral__ and non-advertising language.
+
+The _name_ shall:
+
+1. be __at most 40__ characters long.
+
+Showcase _apps_ shall:
+
+1. be available for download on a __public app store__ or website.
+
+Furthermore, descriptions are stripped of HTML and are truncated to fit as follows:
+
+- down to 255 characters for tools and,
+- down to 200 characters for showcase apps.
+
+## Process
+
+1. Change the section's YAML file:
+    - [www/_data/tools.yml](../www/_data/tools.yml) for Cordova Tools, or
+    - [www/_data/showcase-apps.yml](../www/_data/showcase-apps.yml) for Cordova App Showcase.
+1. Optionally add an image:
+    1. Place the image in the section's `img` directory:
+        - [www/static/img/tools](../www/static/img/tools) for Cordova Tools, or
+        - [www/static/img/showcase-apps](../www/static/img/showcase-apps) for Cordova App Showcase.
+    1. In the YAML file, set the `image` field to the file's *name*.
+1. Submit a [GitHub pull request][pr] with the changes.
+
+[pr]: https://help.github.com/articles/using-pull-requests/

+ 643 - 0
doc/translate.md

@@ -0,0 +1,643 @@
+# Translate
+
+Apache Cordova's documentation is written in English but translations are available in a number of different languages. These languages are chosen based on volunteers who are willing to help translate from English to their native tongue. We use Crowdin, a translation and localization management platform to collaborate amongst translators and our core team.
+
+## The Process of Translating
+
+
+(migrated from [../CONTRIBUTING.md](../CONTRIBUTING.md))
+
+If you know another language and are willing to help translate Apache Cordova, here are the steps to get started:
+
+1. Create a free account with Crowdin.net [http://crowdin.net](http://crowdin.net)
+2. Search for and find the Cordova project [http://crowdin.net/project/cordova/](http://crowdin.net/project/cordova/)
+3. Scroll down to find the languages that are currently being translated.
+4. Choose a language and click on the language to start contributing. e.g. [Spanish](http://crowdin.net/project/cordova/es-ES)
+5. Next to each of the markdown files you will see a button labelled "Translate". Clicking that button will open a translate page where the English version of the file is on the left.
+6. Click on a phrase in the left-hand panel. Then type a translation in the textarea to the right. Click the "Commit Translation" button.
+7. If a translation is already provided for a phrase you can vote it **up** or **down**. If you vote it **down** be sure to also include what you believe to be the correct translation.
+
+### Tips
+
+The headers are used to provide links between pages.  It is therefore critical that these headers have the exact same translation character for character.  Otherwise, the links will appear broken.  If, when building a language, a link is problem, check that the translations match.
+
+## Adding a Language
+
+(migrated from [README/en/README.md](README/en/README.md))
+
+Do you want the Apache Cordova documentation in another language? We do too! With the support of [Crowdin](http://crowdin.net/project/cordova), a translation and localization management platform, translators can login to the easy-to-use tooling and provide as much or as little translation assistance as they would like. If you know another language please support Cordova and contribute. http://crowdin.net/project/cordova. For some best practices for using the Crowdin tool please see our wiki http://wiki.apache.org/cordova/CordovaTranslations.
+
+Cordova language administrators, don't forget these steps:
+
+__1. config.json__
+
+For each language and version, there is a `config.json` that defines the name of the language and how to merge the files.
+
+__2. Customizing HTML template__
+
+Each language can override the default template in `template/docs/LANGUAGE`.
+
+## QA for translation
+
+(migrated from [README/en/README.md](README/en/README.md))
+
+In order to maintain quality of documentation and translation, following tools could be used.
+
+1. `fixyaml` tool.
+2. `translationreport` tool.
+
+### FixYaml tool.
+
+The tool `fixyaml` created to automatically fix YAML headers in the translation files after exporting translated content from CrowdIn. Sometimes Crowdin messup with Apache license headers and this tool created to fix that.
+
+Usage:
+
+    bin\fixyaml             # Runs fixyaml across all docs.
+    bin\fixyaml ru          # Runs fixyaml across all Russian docs.
+    bin\fixyaml ru dev      # Runs fixyaml on the latest Russian docs.
+    bin\fixyaml ru 5.0.0    # Runs fixyaml on the version 5.0.0 of Russian docs.
+
+### Translation Report tool.
+
+The tool `translationreport` currently provide two QA checks for translation.
+
+1. It verifies that autolinking works after translation, and that translated text point to the same pages as
+in the original documentation.
+2. It verifies that translated and original files create same DOM structure, since after exporting from
+Crowdin, the markdown files could contain unnescessary lines, which lead to broken HTML, and could create
+not needed code sections for example.
+
+## Recommendations for the translators
+
+(migrated from [README/en/README.md](README/en/README.md))
+
+If you intend to create quality translation of the Cordova docs, please not only work in Crowdin and translate documentation, but also please go extra mile and verify that generated documentation for your language is also produce quality results.
+
+For that you should have Crowdin CLI tool. You could
+
+1. take it from [here](https://crowdin.com/page/cli-tool)
+2. or install alternate NodeJS client
+
+    `npm -g install crowdin-cli`
+
+You will use that tool for the downloading translation from Crowdin. To be able to download translated content from the Crowdin you should have API key for the project. Please ask for it on the mailing list.
+
+After you receive access to API key, create `crowdin.yaml` coniguration file, as described in the [CrowdIn cli tool page](https://crowdin.com/page/cli-tool).
+
+Now you ready to download content from CrowdIn. Run following commands (All commands here would be for NodeJS version of Crowdin CLI)
+
+1. Prepare translated content for downloading.
+
+        crowdin-cli export
+
+    This command collect latest translations and made them available for downloading. Without that command, the translation which you would download would be stalled.
+
+    Be careful with this command, since Crowdin implement throttling and allow you export content not faster then 1 time in 30 minutes, or so.
+
+2. Download content for you language. I will use Russian as example.
+
+        crowdin-cli download -l ru -o ru.zip
+
+    This command download all translations for Russian language to the `ru.zip` file.
+
+3. Now unpack the download content to the temporary directory.
+
+        unzip -x ru.zip -d tmp/ru
+
+4. Copy the unpacked content to the `docs` folder.
+    * on Linux:
+
+            cp tmp/ru/cordova-docs/docs/ru/dev/* docs/ru/dev/
+
+    * on Windows:
+
+            xcopy tmp/ru/cordova-docs/docs/ru/dev/* docs/ru/dev/
+
+5. Remove temporary directory. In my case `tmp/ru`. Now you have fresh translation and could generate content.
+
+6. Fix Yaml headers by running.
+
+        bin/fixyaml ru dev
+
+7. Run generator. You should generate both English version and language which you tranlate.
+
+        bin/genjs en dev
+        bin/genjs ru dev
+
+    The generated documentation contains in the `public/en/dev` and `public/ru/dev`
+
+    You need both versions, to validate that translated docs would have same structure as original documentation.
+
+8. Validate you translation.
+
+        bin/translationreport ru dev
+
+    This will give you list of files which has structural differences from the original docs.
+    Below the example output:
+
+        => Validating translation for version dev on language ru...
+        Comparing C:\Users\kant\Documents\GitHub\cordova-docs\public\en\dev
+        with C:\Users\kant\Documents\GitHub\cordova-docs\public\ru\dev
+        Path guide_platforms_blackberry10_upgrade.md.html is different.
+        Path guide_platforms_blackberry_upgrade.md.html is different.
+        Path guide_platforms_ios_tools.md.html is different.
+        Path guide_support_index.md.html is different.
+
+9. Now you could open pregenerated files and compare the English version with your translated versions.
+    Open both versions and find out what's wrong.
+
+    If on the first sight you could not find the differences, you could add switch `-v` which will increase verbosity of the tool.
+    For example:
+
+    `bin/translationreport ru dev -v`
+
+10. Currently there two type of errors reported:
+
+    a. Missing or additional links.
+
+    b. The broken HTML structure.
+
+11. Let's fix first type of errors - Missing/Additional links.
+
+    To fix these type of errors you have to make sure that text in your translation where you want to have link,
+    match exactly the header in the translated document, otherwise auto-linking would not work.
+    You have to rephrase the sentences to fix that.
+
+12. Broken HTML DOM structure.
+
+    Most likely this type of errors caused by the additional lines created by Crowdin during export.
+    You have to manually spot these places and remove additional lines when needed and then commit your changes to Git.
+    Most likely these erorrs reappear after next exprot from CrowdIn, so don't hunt for these errors until release, or create
+    tool which will fix these error after each export and use it.
+
+13. Now you ready to create pull request with documentation to the main `cordova-docs` repository.
+
+Enjoy translation!!!
+
+## Translation Administration
+
+(migrated from [https://github.com/apache/cordova-coho/blob/master/docs/doc-translation-process.md](https://github.com/apache/cordova-coho/blob/master/docs/doc-translation-process.md))
+
+with **Crowdin Administrative Scripts**
+
+There are two scripts and one jar file that need to be in place in your environment in order to automate the crowdin translation process.
+
+- `crowdin-cli.jar`
+- `crowdin.yaml`
+- `github-crowdin.sh`
+
+Information on the crowdin command line interface and tooling can be found here: [Crowdin cli].
+ It includes a link to download the jar file for **Windows**, **Mac OS X**, and **Linux**.
+
+### Demo video
+
+**Lisa DeLuca** has created a demo video showing the process of translating as an adminstrator that can be viewed on youtube here: [Crowdin YouTube demo]
+
+### crowdin.yaml
+
+By default, the `crowdin-cli` will look for a configuration file called `crowdin.yaml`.
+For **Cordova**, our `crowdin.yaml` file looks like this:
+
+
+    project_identifier: cordova
+    api_key: ____ourAPIkey________
+    base_path: /Users/pathTO/git/cordova     #working copy path
+
+    files:
+      -
+        source: "/cordova-docs/docs/en/edge/**/*.md"
+        translation: "/cordova-docs/docs/%two_letters_code%/edge/**/%original_file_name%"
+        ignore:
+          - /.git
+      -
+        source: "/**/doc/*.md"
+        translation: "/**/doc/%two_letters_code%/%original_file_name%"
+        ignore:
+          - /.git
+
+It is recommended that **Crowdin** be pulled from a *fork* of the `cordova-docs` github project rather than directly from the main project.
+
+This script grabs the **markdown** `.md` files from the `docs/en/edge` directory and pushes them into the Crowdin service for each of the lanuages that are available within crowdin.
+
+For information on the `api_key` value,
+please email the [crowdin project administrator].
+
+## github-crowdin.sh
+
+The `github-crowdin.sh` script is the script that is run to initiate the translation flow.
+It is a custom script that first pushes any of the changed **markdown** files into crowdin.
+It then searches through all of the languages from crowdin and downloads only those languages that are 100% translated.
+Finally, it pushes the translated language files back into github.
+
+    #!/bin/bash
+    DOMAIN_NAME='http://api.crowdin.net'
+    
+    #---CHANGE THE VARIABLES BELOW---
+    BASE_GIT_REPO_PATH=/Users/pathTo/git/cordova
+    GIT_REPO_PATH=/Users/pathTo/git/cordova/cordova-docs
+    CROWDIN_CLI_PATH=/Users/pathTo/crowdin
+    PROJECT_IDENTIFIER='cordova'
+    PROJECT_KEY='----insertkeyhere------'
+    
+    #--- git repos
+    ## declare an array variable
+    declare -a gitrepos=("cordova-docs" "cordova-cli" "cordova-plugin-battery-status" "cordova-plugin-camera" "cordova-plugin-console" "cordova-plugin-contacts" "cordova-plugin-device" "cordova-plugin-device-motion" "cordova-plugin-device-orientation" "cordova-plugin-dialogs" "cordova-plugin-file" "cordova-plugin-file-transfer" "cordova-plugin-geolocation" "cordova-plugin-globalization" "cordova-plugin-inappbrowser" "cordova-plugin-media" "cordova-plugin-media-capture" "cordova-plugin-network-information" "cordova-plugin-splashscreen" "cordova-plugin-statusbar" "cordova-plugin-vibration")
+    
+    
+    read -p "What is the name of the JIRA issue?" jira
+    
+    #---
+    ## now loop through the gitrepos array
+    for i in "${gitrepos[@]}"
+    do
+       echo "**************** $i *************************"
+       cd $BASE_GIT_REPO_PATH/$i
+       
+       # make sure the fork has the latest from apache master
+       git checkout master
+       git pull apache master
+       git push origin master
+    
+       #create topic branch and checkout (USE -b flag for new branch)
+       git checkout -b $jira$i
+    
+       # below pushes changes from local to fork
+       git push origin $jira$i
+    done
+    
+    rm
+    cd $CROWDIN_CLI_PATH
+    
+    java -jar crowdin-cli.jar upload sources
+    
+    curl $DOMAIN_NAME/api/project/$PROJECT_IDENTIFIER/status?key=$PROJECT_KEY > result.xml
+    
+    read_dom () {
+        local IFS=\>
+        read -d \< ENTITY CONTENT
+    }
+    
+    while read_dom; do
+          if [[ $ENTITY = "code" ]] ; then
+    	code=( "${code[@]}" "$CONTENT" )
+          fi
+          if [[ $ENTITY = "translated_progress" ]] ; then
+    	progress=( "${progress[@]}" "$CONTENT" )
+          fi
+    done < result.xml
+    
+    for (( i = 0; i < ${#progress[@]}; i++ )); do
+       if [ "${progress[$i]}" = "100" ]; then
+          index=( "${index[@]}" "$i" )
+       else 
+          echo "------- language not at 100 percent ${code[$i]} ------"
+       fi
+    done
+    
+    for element in "${index[@]}"; do
+        java -jar crowdin-cli.jar download -l ${code[$element]}
+    done
+    
+    # fix crowdin issues:
+    echo "About to fix crowdin errors with resulting files"cd
+    #find /Users/ldeluca/git/cordova/ -name \*.md -exec sed -i "s/\* \* \*/---/1" {} \;
+    #find /Users/ldeluca/git/cordova/ -name \*.md -exec sed -i "s/## under the License./   under the License.\n---/g" {} \;
+    echo "Done with crowdin fix"
+    
+    ## now loop through the gitrepos array
+    
+        
+    
+    for i in "${gitrepos[@]}"
+    do
+       echo "**************** $i *************************"
+       cd $BASE_GIT_REPO_PATH/$i
+       git add .
+       git commit -am "$jira $i documentation translation: $i"
+    
+    
+        #update the new branch
+        #notneeded git pull --rebase apache master
+        git push origin $jira$i
+    
+        #merge topic branch into apache/master
+        git checkout master
+        git pull --rebase apache master
+        git merge $jira$i
+        git rebase apache/master -i
+    
+        #push changes of master
+        git push apache master
+    
+        #all done, delete the branch
+        git push origin $jira$i
+        git branch -D $jira$i
+    done
+  
+
+
+## Script output
+
+The script will print out the name of each file being downloaded
+
+    Download: `/docs/zh/edge/cordova/accelerometer/accelerometer.clearWatch.md'
+    Download: `/docs/zh/edge/cordova/accelerometer/accelerometer.getCurrentAcceleration.md'
+    Download: `/docs/zh/edge/cordova/accelerometer/accelerometer.md'
+    Download: `/docs/zh/edge/cordova/accelerometer/accelerometer.watchAcceleration.md'
+    Download: `/docs/zh/edge/cordova/accelerometer/acceleration/acceleration.md'
+    Download: `/docs/zh/edge/cordova/accelerometer/parameters/accelerometerSuccess.md'
+    Download: `/docs/zh/edge/cordova/accelerometer/parameters/accelerometerOptions.md'
+    Download: `/docs/zh/edge/cordova/accelerometer/parameters/accelerometerError.md'
+    Download: `/docs/zh/edge/cordova/camera/camera.cleanup.md'
+    Download: `/docs/zh/edge/cordova/camera/camera.getPicture.md'
+    Download: `/docs/zh/edge/cordova/camera/camera.md'
+    Download: `/docs/zh/edge/cordova/camera/parameter/CameraPopoverHandle.md'
+    Download: `/docs/zh/edge/cordova/camera/parameter/cameraSuccess.md'
+    Download: `/docs/zh/edge/cordova/camera/parameter/cameraOptions.md'
+    Download: `/docs/zh/edge/cordova/camera/parameter/cameraError.md'
+    Download: `/docs/zh/edge/cordova/camera/parameter/CameraPopoverOptions.md'
+    Download: `/docs/zh/edge/cordova/compass/compass.getCurrentHeading.md'
+    Download: `/docs/zh/edge/cordova/compass/compass.md'
+    Download: `/docs/zh/edge/cordova/compass/compass.watchHeading.md'
+    Download: `/docs/zh/edge/cordova/compass/compass.watchHeadingFilter.md'
+    Download: `/docs/zh/edge/cordova/compass/compass.clearWatch.md'
+    Download: `/docs/zh/edge/cordova/compass/compass.clearWatchFilter.md'
+    Download: `/docs/zh/edge/cordova/compass/compassError/compassError.md'
+    Download: `/docs/zh/edge/cordova/compass/parameters/compassSuccess.md'
+    Download: `/docs/zh/edge/cordova/compass/parameters/compassOptions.md'
+    Download: `/docs/zh/edge/cordova/compass/parameters/compassHeading.md'
+    Download: `/docs/zh/edge/cordova/compass/parameters/compassError.md'
+    Download: `/docs/zh/edge/cordova/connection/connection.md'
+    Download: `/docs/zh/edge/cordova/connection/connection.type.md'
+    Download: `/docs/zh/edge/cordova/contacts/contacts.find.md'
+    Download: `/docs/zh/edge/cordova/contacts/contacts.md'
+    Download: `/docs/zh/edge/cordova/contacts/contacts.create.md'
+    Download: `/docs/zh/edge/cordova/contacts/Contact/contact.md'
+    Download: `/docs/zh/edge/cordova/contacts/ContactAddress/contactaddress.md'
+    Download: `/docs/zh/edge/cordova/contacts/ContactError/contactError.md'
+    Download: `/docs/zh/edge/cordova/contacts/ContactField/contactfield.md'
+    Download: `/docs/zh/edge/cordova/contacts/ContactFindOptions/contactfindoptions.md'
+    Download: `/docs/zh/edge/cordova/contacts/ContactName/contactname.md'
+    Download: `/docs/zh/edge/cordova/contacts/ContactOrganization/contactorganization.md'
+    Download: `/docs/zh/edge/cordova/contacts/parameters/contactSuccess.md'
+    Download: `/docs/zh/edge/cordova/contacts/parameters/contactFindOptions.md'
+    Download: `/docs/zh/edge/cordova/contacts/parameters/contactFields.md'
+    Download: `/docs/zh/edge/cordova/contacts/parameters/contactError.md'
+    Download: `/docs/zh/edge/cordova/device/device.model.md'
+    Download: `/docs/zh/edge/cordova/device/device.name.md'
+    Download: `/docs/zh/edge/cordova/device/device.platform.md'
+    Download: `/docs/zh/edge/cordova/device/device.uuid.md'
+    Download: `/docs/zh/edge/cordova/device/device.version.md'
+    Download: `/docs/zh/edge/cordova/device/device.cordova.md'
+    Download: `/docs/zh/edge/cordova/device/device.md'
+    Download: `/docs/zh/edge/cordova/events/events.md'
+    Download: `/docs/zh/edge/cordova/events/events.menubutton.md'
+    Download: `/docs/zh/edge/cordova/events/events.offline.md'
+    Download: `/docs/zh/edge/cordova/events/events.online.md'
+    Download: `/docs/zh/edge/cordova/events/events.pause.md'
+    Download: `/docs/zh/edge/cordova/events/events.resume.md'
+    Download: `/docs/zh/edge/cordova/events/events.searchbutton.md'
+    Download: `/docs/zh/edge/cordova/events/events.startcallbutton.md'
+    Download: `/docs/zh/edge/cordova/events/events.volumedownbutton.md'
+    Download: `/docs/zh/edge/cordova/events/events.volumeupbutton.md'
+    Download: `/docs/zh/edge/cordova/events/events.backbutton.md'
+    Download: `/docs/zh/edge/cordova/events/events.batterycritical.md'
+    Download: `/docs/zh/edge/cordova/events/events.batterylow.md'
+    Download: `/docs/zh/edge/cordova/events/events.batterystatus.md'
+    Download: `/docs/zh/edge/cordova/events/events.deviceready.md'
+    Download: `/docs/zh/edge/cordova/events/events.endcallbutton.md'
+    Download: `/docs/zh/edge/cordova/file/file.md'
+    Download: `/docs/zh/edge/cordova/file/directoryentry/directoryentry.md'
+    Download: `/docs/zh/edge/cordova/file/directoryreader/directoryreader.md'
+    Download: `/docs/zh/edge/cordova/file/fileentry/fileentry.md'
+    Download: `/docs/zh/edge/cordova/file/fileerror/fileerror.md'
+    Download: `/docs/zh/edge/cordova/file/fileobj/fileobj.md'
+    Download: `/docs/zh/edge/cordova/file/filereader/filereader.md'
+    Download: `/docs/zh/edge/cordova/file/filesystem/filesystem.md'
+    Download: `/docs/zh/edge/cordova/file/filetransfer/filetransfer.md'
+    Download: `/docs/zh/edge/cordova/file/filetransfererror/filetransfererror.md'
+    Download: `/docs/zh/edge/cordova/file/fileuploadoptions/fileuploadoptions.md'
+    Download: `/docs/zh/edge/cordova/file/fileuploadresult/fileuploadresult.md'
+    Download: `/docs/zh/edge/cordova/file/filewriter/filewriter.md'
+    Download: `/docs/zh/edge/cordova/file/flags/flags.md'
+    Download: `/docs/zh/edge/cordova/file/localfilesystem/localfilesystem.md'
+    Download: `/docs/zh/edge/cordova/file/metadata/metadata.md'
+    Download: `/docs/zh/edge/cordova/geolocation/geolocation.getCurrentPosition.md'
+    Download: `/docs/zh/edge/cordova/geolocation/geolocation.md'
+    Download: `/docs/zh/edge/cordova/geolocation/geolocation.watchPosition.md'
+    Download: `/docs/zh/edge/cordova/geolocation/geolocation.clearWatch.md'
+    Download: `/docs/zh/edge/cordova/geolocation/Coordinates/coordinates.md'
+    Download: `/docs/zh/edge/cordova/geolocation/Position/position.md'
+    Download: `/docs/zh/edge/cordova/geolocation/PositionError/positionError.md'
+    Download: `/docs/zh/edge/cordova/geolocation/parameters/geolocationSuccess.md'
+    Download: `/docs/zh/edge/cordova/geolocation/parameters/geolocationError.md'
+    Download: `/docs/zh/edge/cordova/geolocation/parameters/geolocation.options.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.getNumberPattern.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.getPreferredLanguage.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.isDayLightSavingsTime.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.numberToString.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.stringToDate.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.stringToNumber.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.dateToString.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.getCurrencyPattern.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.getDateNames.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.getDatePattern.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.getFirstDayOfWeek.md'
+    Download: `/docs/zh/edge/cordova/globalization/globalization.getLocaleName.md'
+    Download: `/docs/zh/edge/cordova/globalization/GlobalizationError/globalizationerror.md'
+    Download: `/docs/zh/edge/cordova/inappbrowser/inappbrowser.md'
+    Download: `/docs/zh/edge/cordova/inappbrowser/window.open.md'
+    Download: `/docs/zh/edge/cordova/media/media.getCurrentPosition.md'
+    Download: `/docs/zh/edge/cordova/media/media.getDuration.md'
+    Download: `/docs/zh/edge/cordova/media/media.md'
+    Download: `/docs/zh/edge/cordova/media/media.pause.md'
+    Download: `/docs/zh/edge/cordova/media/media.play.md'
+    Download: `/docs/zh/edge/cordova/media/media.release.md'
+    Download: `/docs/zh/edge/cordova/media/media.seekTo.md'
+    Download: `/docs/zh/edge/cordova/media/media.setVolume.md'
+    Download: `/docs/zh/edge/cordova/media/media.startRecord.md'
+    Download: `/docs/zh/edge/cordova/media/media.stop.md'
+    Download: `/docs/zh/edge/cordova/media/media.stopRecord.md'
+    Download: `/docs/zh/edge/cordova/media/MediaError/mediaError.md'
+    Download: `/docs/zh/edge/cordova/media/Parameters/mediaError.md'
+    Download: `/docs/zh/edge/cordova/media/capture/captureAudio.md'
+    Download: `/docs/zh/edge/cordova/media/capture/captureAudioOptions.md'
+    Download: `/docs/zh/edge/cordova/media/capture/captureImageOptions.md'
+    Download: `/docs/zh/edge/cordova/media/capture/captureVideo.md'
+    Download: `/docs/zh/edge/cordova/media/capture/captureImage.md'
+    Download: `/docs/zh/edge/cordova/media/capture/captureVideoOptions.md'
+    Download: `/docs/zh/edge/cordova/media/capture/capture.md'
+    Download: `/docs/zh/edge/cordova/media/capture/MediaFile.getFormatData.md'
+    Download: `/docs/zh/edge/cordova/media/capture/MediaFileData.md'
+    Download: `/docs/zh/edge/cordova/media/capture/MediaFile.md'
+    Download: `/docs/zh/edge/cordova/media/capture/ConfigurationData.md'
+    Download: `/docs/zh/edge/cordova/media/capture/CaptureErrorCB.md'
+    Download: `/docs/zh/edge/cordova/media/capture/CaptureError.md'
+    Download: `/docs/zh/edge/cordova/media/capture/CaptureCB.md'
+    Download: `/docs/zh/edge/cordova/notification/notification.confirm.md'
+    Download: `/docs/zh/edge/cordova/notification/notification.md'
+    Download: `/docs/zh/edge/cordova/notification/notification.prompt.md'
+    Download: `/docs/zh/edge/cordova/notification/notification.vibrate.md'
+    Download: `/docs/zh/edge/cordova/notification/notification.alert.md'
+    Download: `/docs/zh/edge/cordova/notification/notification.beep.md'
+    Download: `/docs/zh/edge/cordova/splashscreen/splashscreen.md'
+    Download: `/docs/zh/edge/cordova/splashscreen/splashscreen.show.md'
+    Download: `/docs/zh/edge/cordova/splashscreen/splashscreen.hide.md'
+    Download: `/docs/zh/edge/cordova/storage/storage.md'
+    Download: `/docs/zh/edge/cordova/storage/storage.opendatabase.md'
+    Download: `/docs/zh/edge/cordova/storage/database/database.md'
+    Download: `/docs/zh/edge/cordova/storage/localstorage/localstorage.md'
+    Download: `/docs/zh/edge/cordova/storage/parameters/version.md'
+    Download: `/docs/zh/edge/cordova/storage/parameters/display_name.md'
+    Download: `/docs/zh/edge/cordova/storage/parameters/size.md'
+    Download: `/docs/zh/edge/cordova/storage/parameters/name.md'
+    Download: `/docs/zh/edge/cordova/storage/sqlerror/sqlerror.md'
+    Download: `/docs/zh/edge/cordova/storage/sqlresultset/sqlresultset.md'
+    Download: `/docs/zh/edge/cordova/storage/sqlresultsetrowlist/sqlresultsetrowlist.md'
+    Download: `/docs/zh/edge/cordova/storage/sqltransaction/sqltransaction.md'
+    Download: `/docs/zh/edge/guide/cli/index.md'
+    Download: `/docs/zh/edge/guide/overview/index.md'
+    Download: `/docs/zh/edge/guide/platforms/index.md'
+    Download: `/docs/zh/edge/guide/platforms/android/plugin.md'
+    Download: `/docs/zh/edge/guide/platforms/android/tools.md'
+    Download: `/docs/zh/edge/guide/platforms/android/upgrading.md'
+    Download: `/docs/zh/edge/guide/platforms/android/webview.md'
+    Download: `/docs/zh/edge/guide/platforms/android/config.md'
+    Download: `/docs/zh/edge/guide/platforms/android/index.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry/plugin.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry/tools.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry/upgrading.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry/config.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry/index.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry10/plugin.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry10/tools.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry10/index.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry10/upgrading.md'
+    Download: `/docs/zh/edge/guide/platforms/blackberry10/config.md'
+    Download: `/docs/zh/edge/guide/platforms/firefoxos/config.md'
+    Download: `/docs/zh/edge/guide/platforms/ios/tools.md'
+    Download: `/docs/zh/edge/guide/platforms/ios/upgrading.md'
+    Download: `/docs/zh/edge/guide/platforms/ios/webview.md'
+    Download: `/docs/zh/edge/guide/platforms/ios/config.md'
+    Download: `/docs/zh/edge/guide/platforms/ios/index.md'
+    Download: `/docs/zh/edge/guide/platforms/ios/plugin.md'
+    Download: `/docs/zh/edge/guide/platforms/tizen/index.md'
+    Download: `/docs/zh/edge/guide/platforms/win8/tools.md'
+    Download: `/docs/zh/edge/guide/platforms/win8/upgrading.md'
+    Download: `/docs/zh/edge/guide/platforms/win8/index.md'
+    Download: `/docs/zh/edge/guide/platforms/wp7/index.md'
+    Download: `/docs/zh/edge/guide/platforms/wp8/tools.md'
+    Download: `/docs/zh/edge/guide/platforms/wp8/upgrading.md'
+    Download: `/docs/zh/edge/guide/platforms/wp8/index.md'
+    Download: `/docs/zh/edge/guide/platforms/wp8/plugin.md'
+    Download: `/docs/zh/edge/guide/appdev/privacy/index.md'
+    Download: `/docs/zh/edge/guide/appdev/whitelist/index.md'
+    Download: `/docs/zh/edge/guide/hybrid/plugins/index.md'
+    Download: `/docs/zh/edge/guide/hybrid/webviews/index.md'
+    Download: `/docs/zh/edge/index.md'
+    Download: `/docs/zh/edge/config_ref/index.md'
+    Download: `/docs/zh/edge/plugin_ref/spec.md'
+    Download: `/docs/zh/edge/plugin_ref/plugman.md'
+    About to fix crowdin errors with resulting files
+    Done with crowdin fix
+    # On branch master
+    nothing to commit (working directory clean)
+    Everything up-to-date
+
+
+### Crowdin Error Debugging
+
+After running the `github-crowdin.sh` script, some common messages might include:
+
+```
+ Warning: Downloaded translations does not match current project configuration.
+ Some of the resulted files will be omitted.
+
+   - docs/zh/README.md
+```
+
+```
+Crowdin has internal caching mechanisms that prevents us from overload.
+Please try to download translations later.
+```
+
+This message can be ignored.
+It does not affect the downloaded files.
+It simply means that that **markdown** file no longer exists.
+Please [open a JIRA] issue and assign to `Lisa DeLuca` to let her know if you see this error.
+Then the file can be removed from the crowdin file manager.
+
+```
+A communication error occured: ""
+</FONT>
+</TD></TR>
+<TR><TD>
+<FONT face="Helvetica">
+The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests.  You may wish to try again at a later time.
+```
+
+It is often the case where you will see a message that crowdin is down, like the one shown above.
+In which case you'll need to wait until Crowdin is back up or email the [crowdin support team].
+Alternatively, it could just mean that a manual build needs to be kicked off within the Crowdin tool.
+Under `Settings > Translation >` click the button to `build a fresh package`.
+
+### Testing Translations
+
+Before performing a pull request it is recommended that each language be built locally and tested for accuracy.
+To do this, run the following script:
+
+    ~/git/cordova-docs$ bin/generate ru edge
+
+`ru` in this case would run the Russian language.
+See the `cordova-docs` documentation for more information on building the documentation.
+
+### Viewing Translations
+
+After the translations have been pulled into the main Apache Cordova branch they can be viewed here: [Cordova docs edge].
+
+* Go to the upper-right-hand corner and select the drop down.
+* Scrolling to the bottom you will see the new languages that have been translated.
+
+The translations for the individual plugins
+are only viewable from GitHub under the docs directory for each plugin.
+
+## Manual Steps
+
+Even though the majority of the Crowdin Apache Cordova translations are automated there are still a few things that need to be manually monitored by our administrators.
+
+- Headers - Consistency in translation between headers and other linked content
+- Code snippets - Marking code snippets as `Do not translate`
+
+### Headers
+
+When a header is not consistently translated between pages then a link will appear broken and it will be impossible for users to view the content.
+
+If, when verifying translated documentation,
+a link doesn't appear highlighted and clickable,
+go through the **markdown** files and make sure the translations are consistent for the headers.
+
+It is recommended that the documentation is built and verified after each crowdin script is run before contributing the content back into the main stream.
+
+### Code Snippets
+
+Code snippets should be marked as `Do not translate` which will not allow individual translators to come in and translate the code snippets.
+
+However, when *new code snippets* or *commands* are entered in the code, the administrator will need to come in and *mark that new section* which could lead to it going *unmarked* and *manual* or *automated translations* of the code might occur.
+
+To remedy this, an administrator can go into the code snippet and *delete the suggested translation* and *mark the phrase* as `Do not translate`.
+
+Another example is the use of *method names*, *constants*, etc., scattered throughout the documentation.
+It is not currently possible for an administrator to mark each of these elements as `Do not translate`,
+so our proofreaders will need to go through and verify they are not translated by translators or by the automated translation services.
+
+[Crowdin.net]: http://crowdin.net "Crowdin.net"
+[Crowdin Cordova project]: http://crowdin.net/project/cordova/
+[Spanish Cordova project]: http://crowdin.net/project/cordova/es-ES
+[Crowdin cli]: http://crowdin.net/page/cli-tool
+[Crowdin YouTube demo]: http://www.youtube.com/watch?v=LSnk3lAd7bo
+[Cordova docs edge]: http://cordova.apache.org/docs/en/edge/index.html
+[JIRA]: https://issues.apache.org/jira/browse/CB
+[open a JIRA]: https://issues.apache.org/jira/secure/CreateIssue.jspa
+[crowdin support team]: mailto:support@crowdin.net
+[crowdin project administrator]: mailto:ldeluca@apache.org

+ 17 - 0
doc/troubleshooting.md

@@ -0,0 +1,17 @@
+## Troubleshooting
+
+### Error: EMF, too many open files
+
+Increase the maximum number of open files on the system:
+
+    ulimit -n 10480
+
+### Error: spawn ENOENT
+
+Run:
+
+    gulp clean
+
+### Other Problems
+
+Please ask for help on the Slack channel. Join at [slack.cordova.io](http://slack.cordova.io)

+ 30 - 0
doc/working-on-docs.md

@@ -0,0 +1,30 @@
+# Working on `www/docs`
+
+## Pull in documentation from other repos
+
+* Many files of the documentation come from other repos (mainly plugin READMEs) and are simply pulled together by a build script.
+* `tools/bin/fetch_docs.js` (execute via `node ./tools/bin/fetch_docs.js`) has more details and `www/_data/fetched-files.yml` contains an informative list of src/dest pairs.
+* This can also be executed via `gulpfile.js` task `fetch`, by running `gulp fetch` which pulls in the files to `dev/en/{file dest}`.
+* Most auto-generated files have a comment tag at the top of the file to indicate that they come from elsewhere.
+
+## Update latest (x.y) from `dev`
+
+Normal build doesn't update latest (7.x) from dev version of docs. You will need to do this manually using `gulp snapshot`. Read more [here](https://github.com/apache/cordova-docs/blob/master/gulpfile.js#L212).
+
+## Create new version of the docs
+
+To increment the documentation version (e.g. `X.X.X`, either use the gulp task:
+
+    gulp newversion --version X.X.X
+
+or manually run the `incrementversion.js` script:
+
+    node ./tools/bin/incrementversion.js www/docs X.X.X
+
+To only run for a specific language (__this should only happen when translation is intentionally left out for a given version__), specify the language to the Gulp task as follows:
+
+    gulp newversion --version X.X.X --language YY
+
+or manually, to the script, as follows:
+
+    node ./tools/bin/incrementversion.js www/docs X.X.X YY

+ 10 - 0
docker-compose.debug.yml

@@ -0,0 +1,10 @@
+version: '2.1'
+
+services:
+  cordova-docs:
+    image: cordova-docs
+    build:
+      context: .
+      dockerfile: Dockerfile
+    ports:
+      - 3000:3000

+ 10 - 0
docker-compose.yml

@@ -0,0 +1,10 @@
+version: '2.1'
+
+services:
+  cordova-docs:
+    image: cordova-docs:latest2
+    build: .
+    ports:
+      - 3000:3000
+    volumes:
+      - "./:/root/app"

+ 502 - 0
gulpfile.js

@@ -0,0 +1,502 @@
+'use strict';
+
+// dependencies
+var path = require('path');
+var fs = require('fs');
+var fse = require('fs-extra');
+var child_process = require('child_process');
+
+var gulp = require('gulp');
+var gutil = require('gulp-util');
+var less = require('gulp-less');
+var sass = require('gulp-sass');
+var replace = require('gulp-replace');
+var header = require('gulp-header');
+var footer = require('gulp-footer');
+var rename = require('gulp-rename');
+var browsersync = require('browser-sync');
+var vstream = require('vinyl-source-stream');
+var buffer = require('vinyl-buffer');
+
+var browserify = require('browserify');
+var babelify = require('babelify');
+var uglify = require('gulp-uglify');
+var envify = require('envify');
+var htmllint = require('gulp-htmllint');
+var crawler = require('simplecrawler');
+var ncp = require('ncp');
+
+var nextversion = require('./tools/bin/nextversion');
+var util = require('./tools/bin/util');
+
+// constants
+var ROOT_DIR = '.';
+var CONFIG_DIR = 'conf';
+var SOURCE_DIR = path.join(ROOT_DIR, 'www');
+var DEV_DIR = path.join(ROOT_DIR, 'build-dev');
+var PROD_DIR = path.join(ROOT_DIR, 'build-prod');
+
+var DATA_DIR = path.join(SOURCE_DIR, '_data');
+var TOC_DIR = path.join(DATA_DIR, 'toc');
+var DOCS_DIR = path.join(SOURCE_DIR, 'docs');
+var FETCH_DIR = path.join(DOCS_DIR, 'en', 'dev', 'reference');
+var CSS_SRC_DIR = path.join(SOURCE_DIR, 'static', 'css-src');
+var CSS_OUT_DIR = path.join(SOURCE_DIR, 'static', 'css');
+var PLUGINS_SRC_DIR = path.join(SOURCE_DIR, 'static', 'plugins');
+var JS_DIR = path.join(SOURCE_DIR, 'static', 'js');
+var BIN_DIR = path.join(ROOT_DIR, 'tools', 'bin');
+
+var CONFIG_FILE = path.join(CONFIG_DIR, '_config.yml');
+var DEFAULTS_CONFIG_FILE = path.join(CONFIG_DIR, '_defaults.yml');
+var VERSION_CONFIG_FILE = path.join(CONFIG_DIR, '_version.yml');
+var PROD_CONFIG_FILE = path.join(CONFIG_DIR, '_prod.yml');
+var DEV_CONFIG_FILE = path.join(CONFIG_DIR, '_dev.yml');
+var NODOCS_CONFIG_FILE = path.join(CONFIG_DIR, '_nodocs.yml');
+
+var VERSION_FILE = 'VERSION';
+var DOCS_VERSION_FILE = path.join(DATA_DIR, 'docs-versions.yml');
+var ALL_PAGES_FILE = path.join(DATA_DIR, 'all-pages.yml');
+var FETCH_CONFIG = path.join(DATA_DIR, 'fetched-files.yml');
+var REDIRECTS_FILE = path.join(DATA_DIR, 'redirects.yml');
+var PLUGINS_FILE_NAME = 'plugins.js';
+var PLUGINS_FILE = path.join(JS_DIR, PLUGINS_FILE_NAME);
+var PLUGINS_SRC_FILE = path.join(PLUGINS_SRC_DIR, 'app.js');
+
+var BASE_CONFIGS = [CONFIG_FILE, DEFAULTS_CONFIG_FILE, VERSION_CONFIG_FILE];
+var DEV_CONFIGS = [DEV_CONFIG_FILE];
+var PROD_CONFIGS = [PROD_CONFIG_FILE];
+var DEV_FLAGS = ['--trace'];
+var PROD_FLAGS = [];
+
+var BASE_URL = '';
+var YAML_FRONT_MATTER = '---\n---\n';
+var WATCH_INTERVAL = 1000; // in milliseconds
+var VERSION_VAR_NAME = 'latest_docs_version';
+var LATEST_DOCS_VERSION = fs.readFileSync(VERSION_FILE, 'utf-8').trim();
+var NEXT_DOCS_VERSION = nextversion.getNextVersion(LATEST_DOCS_VERSION);
+var LANGUAGES = util.listdirsSync(DOCS_DIR);
+
+var PROD_BY_DEFAULT = false;
+
+// compute/get/set/adjust passed options
+gutil.env.prod = gutil.env.prod || PROD_BY_DEFAULT;
+gutil.env.dev = !gutil.env.prod;
+gutil.env.outDir = gutil.env.prod ? PROD_DIR : DEV_DIR;
+
+// check for errors
+if (gutil.env.prod && gutil.env.nodocs) {
+    fatal("can't ignore docs when doing a production build");
+}
+
+// helpers
+function fatal (message) {
+    gutil.log(gutil.colors.red('ERROR') + ': ' + message);
+    process.exit(1);
+}
+
+function execPiped (command, args, fileName) {
+    console.log(command + ' ' + args.join(' '));
+    var task = child_process.spawn(command, args);
+    return task.stdout.pipe(vstream(fileName)).pipe(buffer());
+}
+
+function exec (command, args, cb) {
+    console.log(command + ' ' + args.join(' '));
+    var task = child_process.spawn(command, args, { stdio: 'inherit' });
+    task.on('exit', cb);
+}
+
+function bin (name) {
+    return path.join(BIN_DIR, name);
+}
+
+function remove (path) {
+    console.log('removing ' + path);
+    fse.removeSync(path);
+}
+
+function getBundleExecutable () {
+    if (process.platform === 'win32') {
+        return 'bundle.bat';
+    } else {
+        return 'bundle';
+    }
+}
+
+function getJekyllConfigs () {
+    var configs = BASE_CONFIGS;
+
+    // add build-specific config files
+    if (gutil.env.prod) {
+        configs = configs.concat(PROD_CONFIGS);
+    } else {
+        configs = configs.concat(DEV_CONFIGS);
+    }
+
+    // add a special exclude file if "nodocs" was specified
+    if (gutil.env.nodocs) {
+        configs = configs.concat(NODOCS_CONFIG_FILE);
+    }
+
+    return configs;
+}
+
+function jekyllBuild (done) {
+    var bundle = getBundleExecutable();
+    var configs = getJekyllConfigs();
+    var flags = gutil.env.prod ? PROD_FLAGS : DEV_FLAGS;
+
+    flags = flags.concat(['--config', configs.join(',')]);
+
+    exec(bundle, ['exec', 'jekyll', 'build'].concat(flags), done);
+}
+
+function copyDocsVersion (oldVersion, newVersion, cb) {
+
+    // copying a folder and a ToC file for each language
+    var numCopyOperations = LANGUAGES.length * 2;
+
+    // pseudo-CV (condition variable)
+    var numCopied = 0;
+    function doneCopying (error) {
+
+        if (error) {
+            cb(error);
+            return;
+        }
+
+        // call callback if all folders have finished copying
+        numCopied += 1;
+        if (numCopied === numCopyOperations) {
+            cb();
+        }
+    }
+
+    // create a new version for each language
+    LANGUAGES.forEach(function (languageName) {
+
+        // get files to copy
+        var oldVersionDocs = path.join(DOCS_DIR, languageName, oldVersion);
+        var oldVersionToc = path.join(TOC_DIR, util.srcTocfileName(languageName, oldVersion));
+        var newVersionDocs = path.join(DOCS_DIR, languageName, newVersion);
+        var newVersionToc = path.join(TOC_DIR, util.srcTocfileName(languageName, newVersion));
+
+        var copyOptions = {
+            stopOnErr: true
+        };
+
+        // copy docs
+        console.log(oldVersionDocs + ' -> ' + newVersionDocs);
+        ncp.ncp(oldVersionDocs, newVersionDocs, copyOptions, doneCopying);
+
+        // copy ToC
+        console.log(oldVersionToc + ' -> ' + newVersionToc);
+        ncp.ncp(oldVersionToc, newVersionToc, copyOptions, doneCopying);
+    });
+}
+
+// tasks
+gulp.task('default', ['help']);
+
+gulp.task('help', function () {
+    gutil.log('');
+    gutil.log('Tasks:');
+    gutil.log('');
+    gutil.log('    build         same as configs + data + styles + plugins + jekyll');
+    gutil.log('    jekyll        build with jekyll');
+    gutil.log('    regen         same as jekyll + reload');
+    gutil.log('    serve         build the site and open it in a browser');
+    gutil.log('    reload        refresh the browser');
+    gutil.log('');
+    gutil.log('    newversion    create ' + NEXT_DOCS_VERSION + ' docs from dev docs');
+    gutil.log('    snapshot      copy dev docs to ' + LATEST_DOCS_VERSION + ' docs');
+    gutil.log('');
+    gutil.log('    plugins       build ' + PLUGINS_FILE);
+    gutil.log('');
+    gutil.log('    configs       run all the below tasks');
+    gutil.log('    defaults      create ' + DEFAULTS_CONFIG_FILE);
+    gutil.log('    version       create ' + VERSION_CONFIG_FILE);
+    gutil.log('');
+    gutil.log('    data          run all the below tasks');
+    gutil.log('    docs-versions create ' + DOCS_VERSION_FILE);
+    gutil.log('    pages-dict    create ' + ALL_PAGES_FILE);
+    gutil.log('    toc           create all generated ToC files in ' + TOC_DIR);
+    gutil.log('    fetch         download docs specified in ' + FETCH_CONFIG);
+    gutil.log('');
+    gutil.log('    styles        run all the below tasks');
+    gutil.log('    less          compile all .less files');
+    gutil.log('    sass          compile all .scss files');
+    gutil.log('    css           copy over all .css files');
+    gutil.log('');
+    gutil.log('    watch         serve + then watch all source files and regenerate as necessary');
+    gutil.log('    link-bugs     replace CB-XXXX references with nice links');
+    gutil.log('');
+    gutil.log('    help          show this text');
+    gutil.log('    clean         remove all generated files and folders');
+    gutil.log('');
+    gutil.log('Arguments:');
+    gutil.log("    --nodocs      don't generate docs");
+    gutil.log('    --prod        build for production; without it, will build dev instead');
+    gutil.log('');
+});
+
+gulp.task('data', ['toc', 'docs-versions', 'pages-dict']);
+gulp.task('configs', ['defaults', 'version']);
+gulp.task('styles', ['less', 'css', 'sass']);
+
+gulp.task('watch', ['serve'], function () {
+    gulp.watch(
+        [
+            path.join(CSS_SRC_DIR, '**', '*')
+        ],
+        { interval: WATCH_INTERVAL },
+        ['styles']
+    );
+    gulp.watch(
+        [
+            path.join(PLUGINS_SRC_DIR, '**', '*.js'),
+            path.join(PLUGINS_SRC_DIR, '**', '*.jsx'),
+            path.join(PLUGINS_SRC_DIR, '**', '*.json')
+        ],
+        { interval: WATCH_INTERVAL },
+        ['plugins']
+    );
+    gulp.watch(
+        [
+            path.join(ROOT_DIR, '**', '*.yml'),
+            path.join(JS_DIR, '**', '*.js'),
+            path.join(CSS_OUT_DIR, '**', '*.css'),
+
+            // NOTE:
+            //      watch all non-docs HTML, and only docs/en/dev HTML because
+            //      versions other than dev usually don't change much; this is
+            //      an optimization
+            path.join(SOURCE_DIR, '_layouts', '*.html'),
+            path.join(SOURCE_DIR, '_includes', '*.html'),
+            path.join(SOURCE_DIR, '**', '*.html') + '!' + path.join(DOCS_DIR, '**'),
+            path.join(SOURCE_DIR, '**', '*.md') + '!' + path.join(DOCS_DIR, '**'),
+            path.join(DOCS_DIR, 'en', 'dev', '**', '*.md'),
+            path.join(DOCS_DIR, 'en', 'dev', '**', '*.html')
+        ],
+        { interval: WATCH_INTERVAL },
+        ['regen']
+    );
+});
+
+gulp.task('serve', ['build'], function () {
+    var route = {};
+
+    // set site root for browsersync
+    if (gutil.env.prod) {
+        route[BASE_URL] = gutil.env.outDir;
+    }
+
+    browsersync({
+        notify: true,
+        server: {
+            baseDir: gutil.env.outDir,
+            routes: route
+        }
+    });
+});
+
+gulp.task('build', ['configs', 'data', 'styles', 'plugins'], function (done) {
+    jekyllBuild(done);
+});
+
+gulp.task('jekyll', function (done) {
+    jekyllBuild(done);
+});
+
+gulp.task('regen', ['jekyll'], function () {
+    browsersync.reload();
+});
+
+gulp.task('fetch', function (done) {
+
+    // skip fetching if --nofetch was passed
+    if (gutil.env.nofetch) {
+        gutil.log(gutil.colors.yellow(
+            'Skipping fetching external docs.'));
+        done();
+        return;
+    }
+
+    exec('node', [bin('fetch_docs.js'), '--config', FETCH_CONFIG, '--docsRoot', DOCS_DIR], done);
+});
+
+gulp.task('reload', function () {
+    browsersync.reload();
+});
+
+gulp.task('docs-versions', function () {
+    return execPiped('node', [bin('gen_versions.js'), DOCS_DIR], DOCS_VERSION_FILE)
+        .pipe(gulp.dest(ROOT_DIR));
+});
+
+gulp.task('pages-dict', function () {
+    var args = [
+        bin('gen_pages_dict.js'),
+        '--siteRoot', SOURCE_DIR,
+        '--redirectsFile', REDIRECTS_FILE,
+        '--latestVersion', LATEST_DOCS_VERSION,
+        '--languages', LANGUAGES.join(',')
+    ];
+
+    return execPiped('node', args, ALL_PAGES_FILE).pipe(gulp.dest(ROOT_DIR));
+});
+
+gulp.task('version', function () {
+    // this code is stupid; it's basically the line:
+    //      cat VERSION | sed -e 's/^/VERSION_VAR_NAME: /' > _version.yml
+    // however we're in Gulp, and we need to support Windows...
+    // so we contort it into a monster
+    return gulp
+        .src(VERSION_FILE)
+        .pipe(header(VERSION_VAR_NAME + ': '))
+        .pipe(footer('\n'))
+        .pipe(rename(VERSION_CONFIG_FILE))
+        .pipe(gulp.dest('.'));
+});
+
+gulp.task('defaults', function () {
+    return execPiped('node', [bin('gen_defaults.js'), DOCS_DIR, LATEST_DOCS_VERSION], DEFAULTS_CONFIG_FILE)
+        .pipe(gulp.dest(ROOT_DIR));
+});
+
+gulp.task('toc', ['fetch'], function (done) {
+    exec('node', [bin('toc.js'), DOCS_DIR, TOC_DIR], done);
+});
+
+gulp.task('less', function () {
+    return gulp
+        .src(path.join(CSS_SRC_DIR, '**', '*.less'))
+        .pipe(less())
+        .pipe(header(YAML_FRONT_MATTER))
+        .pipe(gulp.dest(CSS_OUT_DIR))
+        .pipe(gulp.dest(CSS_OUT_DIR.replace(SOURCE_DIR, gutil.env.outDir)))
+        .pipe(browsersync.reload({ stream: true }));
+});
+
+gulp.task('css', function () {
+    return gulp
+        .src(path.join(CSS_SRC_DIR, '**', '*.css'))
+        .pipe(header(YAML_FRONT_MATTER))
+        .pipe(gulp.dest(CSS_OUT_DIR))
+        .pipe(gulp.dest(CSS_OUT_DIR.replace(SOURCE_DIR, gutil.env.outDir)))
+        .pipe(browsersync.reload({ stream: true }));
+});
+
+gulp.task('sass', function () {
+    return gulp
+        .src(path.join(CSS_SRC_DIR, '**', '*.scss'))
+        .pipe(sass().on('error', sass.logError))
+        .pipe(header(YAML_FRONT_MATTER))
+        .pipe(gulp.dest(CSS_OUT_DIR))
+        .pipe(gulp.dest(CSS_OUT_DIR.replace(SOURCE_DIR, gutil.env.outDir)))
+        .pipe(browsersync.reload({ stream: true }));
+});
+
+gulp.task('plugins', function () {
+    if (gutil.env.prod) {
+        process.env.NODE_ENV = 'production';
+    }
+
+    var stream = browserify(PLUGINS_SRC_FILE, { debug: !gutil.env.prod })
+        .transform(babelify, {
+            presets: ['react'],
+            plugins: [
+                ['transform-react-jsx', { 'pragma': 'h' }]
+            ]
+        })
+        .transform(envify)
+        .bundle()
+        .on('error', gutil.log)
+        .pipe(vstream(PLUGINS_FILE_NAME))
+        .pipe(buffer());
+
+    if (gutil.env.prod) {
+        stream = stream
+            .pipe(uglify())
+            .on('error', gutil.log);
+    }
+
+    return stream
+        .pipe(gulp.dest(JS_DIR.replace(SOURCE_DIR, gutil.env.outDir)))
+        .pipe(browsersync.reload({ stream: true }))
+
+        // NOTE:
+        //      adding YAML front matter after doing everything
+        //      else so that uglify doesn't screw it up
+        .pipe(header(YAML_FRONT_MATTER))
+
+        // WORKAROUND:
+        //           minified JS has some things that look like
+        //           Liquid tags, so we replace them manually
+        .pipe(replace('){{', '){ {'))
+        .pipe(gulp.dest(JS_DIR));
+});
+
+// convenience tasks
+gulp.task('link-bugs', function (done) {
+    exec(bin('linkify-bugs.sh'), [path.join(SOURCE_DIR, '_posts')], done);
+});
+
+gulp.task('lint', function () {
+    return gulp.src(path.join('./', '**', '*.html'))
+        .pipe(htmllint());
+});
+
+gulp.task('newversion', ['fetch'], function (done) {
+
+    copyDocsVersion('dev', NEXT_DOCS_VERSION, function (error) {
+
+        if (error) {
+            console.error(error);
+            done();
+            return;
+        }
+
+        // finally update the version file with the new version
+        fs.writeFile(VERSION_FILE, NEXT_DOCS_VERSION + '\n', done);
+    });
+});
+
+gulp.task('snapshot', ['fetch'], function (done) {
+
+    // remove current version first
+    LANGUAGES.forEach(function (languageName) {
+        var languageLatestDocs = path.join(DOCS_DIR, languageName, LATEST_DOCS_VERSION);
+        remove(languageLatestDocs);
+    });
+
+    copyDocsVersion('dev', LATEST_DOCS_VERSION, done);
+});
+
+gulp.task('checklinks', function (done) {
+    crawler
+        .crawl('http://localhost:3000/')
+        .on('fetch404', function (queueItem, response) {
+            gutil.log(
+                'Resource not found linked from ' +
+                queueItem.referrer + ' to', queueItem.url
+            );
+            gutil.log('Status code: ' + response.statusCode);
+        })
+        .on('complete', function (queueItem) {
+            done();
+        });
+});
+
+gulp.task('clean', function () {
+    remove(DEV_DIR);
+    remove(PROD_DIR);
+    remove(FETCH_DIR);
+    remove(path.join(DATA_DIR, 'toc', '*-gen.yml'));
+    remove(CSS_OUT_DIR);
+    remove(PLUGINS_FILE);
+    remove(DOCS_VERSION_FILE);
+    remove(ALL_PAGES_FILE);
+    remove(DEFAULTS_CONFIG_FILE);
+    remove(VERSION_CONFIG_FILE);
+});

+ 68 - 0
package.json

@@ -0,0 +1,68 @@
+{
+  "name": "cordova-website",
+  "version": "0.0.1",
+  "description": "website for cordova.apache.org",
+  "main": "echo \"not specified\" && exit 1",
+  "directories": {
+    "doc": "doc"
+  },
+  "scripts": {
+    "test": "npm run eslint && gulp build",
+    "serve": "gulp serve --prod",
+    "clean": "gulp clean",
+    "update-docs": "gulp snapshot",
+    "build": "gulp build --prod",
+    "eslint": "eslint tools *.js"
+  },
+  "author": "Apache Software Foundation",
+  "license": "Apache-2.0",
+  "dependencies": {
+    "baconjs": "^0.7.70",
+    "browser-sync": "^2.8.0",
+    "browserify": "^10.2.4",
+    "chalk": "^2.3.1",
+    "classnames": "^2.1.2",
+    "envify": "^3.4.0",
+    "fs-extra": "^0.11.1",
+    "gulp": "^3.9.0",
+    "gulp-footer": "^1.0.5",
+    "gulp-header": "1.2.2",
+    "gulp-less": "^3.0.3",
+    "gulp-rename": "^1.2.2",
+    "gulp-replace": "^0.5.4",
+    "gulp-sass": "^4.0.2",
+    "gulp-uglify": "^1.2.0",
+    "gulp-util": "^3.0.5",
+    "js-yaml": "^3.2.2",
+    "ncp": "^2.0.0",
+    "optimist": "^0.6.1",
+    "preact": "^8.2.5",
+    "preact-compat": "^3.17.0",
+    "vinyl-buffer": "^1.0.0",
+    "vinyl-source-stream": "^1.1.0"
+  },
+  "devDependencies": {
+    "babel-plugin-transform-react-jsx": "^6.24.1",
+    "babel-plugin-transform-h-jsx": "^1.0.0",
+    "babel-preset-react": "^6.24.1",
+    "babelify": "^7.3.0",
+    "eslint": "^5.16.0",
+    "eslint-config-semistandard": "^13.0.0",
+    "eslint-config-standard": "^12.0.0",
+    "eslint-plugin-import": "^2.8.0",
+    "eslint-plugin-node": "^9.0.1",
+    "eslint-plugin-promise": "^4.1.1",
+    "eslint-plugin-standard": "^4.0.0",
+    "glob": "^7.0.3",
+    "gulp-htmllint": "^0.0.5",
+    "simplecrawler": "^0.5.2"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/apache/cordova-docs"
+  },
+  "bugs": {
+    "url": "https://github.com/apache/cordova-website/issues"
+  },
+  "homepage": "https://cordova.apache.org"
+}

+ 160 - 0
tools/bin/augment_toc.js

@@ -0,0 +1,160 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+var fs = require('fs');
+var path = require('path');
+
+var yaml = require('js-yaml');
+var optimist = require('optimist');
+var chalk = require('chalk');
+
+var util = require('./util');
+
+// constants
+var VERBOSE_BY_DEFAULT = false;
+
+// globals
+var verbose = VERBOSE_BY_DEFAULT;
+
+// helpers
+function augmentEntry (originalEntry, prefix) {
+    var augmentedEntry = {};
+
+    // skip entries that have no URI
+    if (!originalEntry.url) {
+        return originalEntry;
+    }
+
+    // get the path to the file to which this entry points
+    var filePath = path.join(prefix, originalEntry.url).replace('.html', '.md');
+
+    // skip entries that don't point to a valid file
+    if (!fs.existsSync(filePath)) {
+        console.warn(chalk.red('WARNING! Possible 404 in ToC: "' + filePath + '"; create the file to fix'));
+        return originalEntry;
+    }
+
+    // read in the referenced file and get its front matter
+    var fileContents = fs.readFileSync(filePath).toString();
+    var frontMatterString = util.getFrontMatterString(fileContents);
+    var frontMatter = yaml.load(frontMatterString);
+
+    augmentedEntry.name = decideOnName(originalEntry, frontMatter);
+    augmentedEntry.url = originalEntry.url;
+
+    if (frontMatter.description) {
+        augmentedEntry.description = frontMatter.description;
+    }
+
+    return augmentedEntry;
+}
+
+function decideOnName (originalEntry, frontMatter) {
+
+    // raise a warning for old-style ToC entry names
+    if (originalEntry.name && verbose === true) {
+        console.warn("'name' property will be ignored");
+    }
+
+    // error out if there is no name
+    if (!frontMatter.toc_title && !frontMatter.title) {
+        throw Error("can't find out name for ToC entry");
+    }
+
+    // use entry's name, and if it's not defined use the front matter name
+    return frontMatter.toc_title || frontMatter.title;
+}
+
+// public API
+function augmentToc (originalToc, prefix) {
+
+    var augmentedToc = [];
+
+    if (typeof prefix === 'undefined') {
+        throw new Error('missing prefix for ToC');
+    }
+
+    // go through all original entries
+    for (var i = 0; i < originalToc.length; i++) {
+        var originalEntry = originalToc[i];
+        var augmentedEntry = {};
+
+        // recurse for entries with children, replacing their children with
+        // their augmented equivalents
+        if (originalEntry.children) {
+
+            if (typeof originalEntry.name === 'undefined') {
+                throw new Error('entries with children must have a name');
+            }
+
+            augmentedEntry.name = originalEntry.name;
+            augmentedEntry.children = augmentToc(originalEntry.children, prefix);
+
+        // replace regular entries with their augmented equivalents
+        } else {
+            augmentedEntry = augmentEntry(originalEntry, prefix);
+        }
+
+        augmentedToc.push(augmentedEntry);
+    }
+
+    return augmentedToc;
+}
+
+function augmentString (srcTocString, prefix) {
+    var srcToc = yaml.load(srcTocString);
+    var augmentedToc = augmentToc(srcToc, prefix);
+    var augmentedTocString = yaml.dump(augmentedToc, { indent: 4 });
+
+    return augmentedTocString;
+}
+
+function main () {
+
+    // get args
+    var argv = optimist
+        .usage('Usage: $0 [options]')
+        .demand('srcToc').describe('srcToc', 'the source ToC for the given directory')
+        .demand('srcRoot').describe('srcRoot', 'the directory containing files described by the ToC')
+        .boolean('verbose').describe('verbose', 'if true, print more helpful information').default('verbose', VERBOSE_BY_DEFAULT)
+        .alias('v', 'verbose')
+        .argv;
+
+    var srcTocPath = argv.srcToc;
+    var srcRootPath = argv.srcRoot;
+
+    // set globals
+    verbose = argv.verbose;
+
+    // get augmented ToC
+    var srcTocString = fs.readFileSync(srcTocPath);
+    var augmentedTocString = augmentString(srcTocString, srcRootPath);
+
+    console.log(util.generatedBy(__filename));
+    console.log(augmentedTocString);
+}
+
+if (require.main === module) {
+    main();
+}
+
+module.exports = {
+    augmentToc: augmentToc,
+    augmentString: augmentString
+};

+ 24 - 0
tools/bin/deploy.sh

@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+set -e
+
+svn_url=https://svn.apache.org/repos/asf/cordova/site
+
+svn_q() { svn --quiet "$@"; }
+
+svn_with_auth() {
+    [ $svn_username ] && [ $svn_pass ] || {
+        echo 'ERROR: No SVN credentials given in $svn_username and $svn_pass'
+        exit 1
+    }
+    svn_q --non-interactive --no-auth-cache \
+          --username="$svn_username" --password="$svn_pass" "$@"
+}
+
+echo "Deploying website and docs to $svn_url"
+cd ..
+svn_q checkout "$svn_url" cordova-website
+cp -R cordova-docs/build-prod/. cordova-website/public/
+cd cordova-website
+svn_q add --force .
+svn_with_auth commit -m "Updated docs"

+ 283 - 0
tools/bin/fetch_docs.js

@@ -0,0 +1,283 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+var fs = require('fs');
+var fse = require('fs-extra');
+var https = require('https');
+var path = require('path');
+var child_process = require('child_process');
+var yaml = require('js-yaml');
+var optimist = require('optimist');
+
+var util = require('./util');
+
+// constants
+var DEFAULT_REPO_PATH = 'README.md';
+var DEFAULT_VERSION_NAME = 'dev';
+var DEFAULT_LANGUAGE_NAME = 'en';
+
+var THIS_FILE = path.basename(__filename);
+var WARNING_COMMENT = '<!-- WARNING: This file is generated. See ' + THIS_FILE + '. -->\n\n';
+
+// helpers
+function isPluginName (packageName) {
+    return packageName.match(/cordova-plugin-.*/);
+}
+
+function getRepoFileURI (repoName, commit, filePath) {
+    return 'https://raw.githubusercontent.com/' + repoName + '/' + commit + '/' + filePath;
+}
+
+function getRepoEditURI (repoName, commit, filePath) {
+    return 'https://github.com/' + repoName + '/blob/' + commit + '/' + filePath;
+}
+
+function getLatestRelease (packageName) {
+    var latestRelease = child_process.execSync('npm info ' + packageName + ' dist-tags.latest');
+    return latestRelease.toString().trim();
+}
+
+function packageNameFromRepoName (repoName) {
+    return repoName.split('/')[1];
+}
+
+function getFetchedFileConfig (entry) {
+
+    // get entry components
+    var srcConfig = entry.src;
+    var destConfig = entry.dest;
+
+    // validate entry
+    if (!srcConfig) {
+        console.error("entry '" + entry.toString() + "' missing 'src'");
+        return;
+    }
+
+    if (!srcConfig.repoName) {
+        console.error("entry '" + entry.toString() + "' missing 'repoName' in 'src'");
+        return;
+    }
+
+    if (!srcConfig.repoName) {
+        console.error("entry '" + entry.toString() + "' missing 'repoName' in 'src'");
+        return;
+    }
+
+    if (!destConfig) {
+        console.error("entry '" + entry.toString() + "' missing 'dest'");
+        return;
+    }
+
+    if (!destConfig.path) {
+        console.error("entry '" + entry.toString() + "' missing 'path' in 'dest'");
+        return;
+    }
+
+    // complete src config
+    if (!srcConfig.packageName) {
+        srcConfig.packageName = packageNameFromRepoName(srcConfig.repoName);
+    }
+
+    if (!srcConfig.path) {
+        srcConfig.path = DEFAULT_REPO_PATH;
+    }
+
+    if (!srcConfig.commit) {
+        srcConfig.commit = getLatestRelease(srcConfig.packageName);
+    }
+
+    // make front matter
+    var frontMatter = {
+        edit_link: getRepoEditURI(srcConfig.repoName, srcConfig.commit, srcConfig.path),
+        title: srcConfig.packageName
+    };
+
+    // set special front matter values for plugins
+    if (isPluginName(srcConfig.packageName)) {
+        frontMatter.plugin_name = srcConfig.packageName;
+        frontMatter.plugin_version = srcConfig.commit;
+    }
+
+    // set returned values
+    var fetchedFileConfig = {
+        frontMatter: frontMatter,
+        downloadURI: getRepoFileURI(srcConfig.repoName, srcConfig.commit, srcConfig.path),
+        savePath: destConfig.path
+    };
+
+    return fetchedFileConfig;
+}
+
+function getFrontMatter (text) {
+    var frontMatterString = util.getFrontMatterString(text);
+    if (frontMatterString !== null) {
+        return yaml.load(frontMatterString);
+    }
+    return {};
+}
+
+function setFrontMatter (text, frontMatter, options) {
+    var frontMatterString = yaml.dump(frontMatter, options);
+    return util.setFrontMatterString(text, frontMatterString);
+}
+
+function dumpEntries (downloadPrefix, entries) {
+    entries.forEach(function (entry) {
+
+        // validate entry's dest config
+        if (!entry.dest) {
+            console.error("entry '" + entry.toString() + "' missing 'dest'");
+            return;
+        }
+
+        if (!entry.dest.path) {
+            console.error("entry '" + entry.toString() + "' missing 'path' in 'dest'");
+            return;
+        }
+
+        // print the save path for the entry
+        if (entry.dest && entry.dest.path) {
+            var filePath = path.join(downloadPrefix, entry.dest.path);
+            console.log(filePath);
+
+        // error out on invalid entries
+        } else {
+            console.error('Invalid dest: ' + entry);
+            process.exit(1);
+        }
+    });
+}
+
+function downloadEntries (downloadPrefix, entries) {
+    entries.forEach(function (entry) {
+
+        // verify and process entry
+        var fetchedFileConfig = getFetchedFileConfig(entry);
+        if (!fetchedFileConfig) {
+            process.exit(1);
+        }
+
+        // get info for fetching
+        var fetchURI = fetchedFileConfig.downloadURI;
+        var outFilePath = path.join(downloadPrefix, fetchedFileConfig.savePath);
+        var outFileDir = path.dirname(outFilePath);
+
+        // create directory for the file if it doesn't exist
+        if (!fs.existsSync(outFileDir)) {
+            fse.mkdirsSync(outFileDir);
+        }
+
+        console.log(fetchURI + ' -> ' + outFilePath);
+
+        // open the file for writing
+        var outFile = fs.createWriteStream(outFilePath);
+
+        // open an HTTP request for the file
+        https.get(fetchURI, function (response) {
+
+            if (response.statusCode !== 200) {
+                console.error('Failed to download ' + fetchURI + ': got ' + response.statusCode);
+                process.exit(1);
+            }
+
+            // read in the response
+            var fileContents = '';
+            response.setEncoding('utf8');
+            response.on('data', function (data) {
+                fileContents += data;
+            });
+
+            // process the response when it finishes
+            response.on('end', function () {
+
+                // merge new front matter and file's own front matter (if it had any)
+                //
+                // NOTE:
+                //      fileFrontMatter's properties should override those of newFrontMatter
+                var newFrontMatter = fetchedFileConfig.frontMatter;
+                var fileFrontMatter = getFrontMatter(fileContents);
+                var mergedFrontMatter = util.mergeObjects(newFrontMatter, fileFrontMatter);
+
+                // add a warning and set the merged file matter in the file
+                var contentsOnly = util.stripFrontMatter(fileContents);
+                contentsOnly = WARNING_COMMENT + contentsOnly;
+
+                var augmentedContents = setFrontMatter(contentsOnly, mergedFrontMatter);
+
+                // write out the file
+                outFile.end(augmentedContents);
+
+            }).on('error', function (e) {
+                console.error(e);
+            });
+        }); // http request
+    }); // entries
+}
+
+// main
+function main () {
+
+    // get args
+    var argv = optimist
+        .usage('Usage: $0 [options]')
+        .demand('config')
+        .demand('docsRoot')
+        .string('version')
+        .string('language')
+        .boolean('dump')
+        .describe('config', '.yml file listing fetched files')
+        .describe('docsRoot', 'docs root directory')
+        .describe('version', 'version in which to save the downloaded files').default('version', DEFAULT_VERSION_NAME)
+        .describe('language', 'language in which to save the downloaded files').default('language', DEFAULT_LANGUAGE_NAME)
+        .describe('dump', 'only print the downloaded files')
+        .argv;
+
+    var configFile = argv.config;
+    var docsRoot = argv.docsRoot;
+    var targetVersion = argv.version;
+    var targetLanguage = argv.language;
+    var printOnly = argv.dump;
+    var downloadPrefix = path.join(docsRoot, targetLanguage, targetVersion);
+
+    // validate args
+    if (!fs.existsSync(configFile)) {
+        console.error("Config file doesn't exist.");
+        process.exit();
+    }
+
+    if (!fs.existsSync(docsRoot)) {
+        console.error("Docs root doesn't exist.");
+        process.exit();
+    }
+
+    // get config
+    var fetchConfig = fs.readFileSync(configFile);
+    var configEntries = yaml.load(fetchConfig);
+
+    // just dump entries if --dump was passed
+    if (printOnly === true) {
+        dumpEntries(downloadPrefix, configEntries);
+
+    // otherwise, fetch them
+    } else {
+        downloadEntries(downloadPrefix, configEntries);
+    }
+}
+
+main();

+ 120 - 0
tools/bin/gen_defaults.js

@@ -0,0 +1,120 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+var path = require('path');
+var yaml = require('js-yaml');
+
+var util = require('./util');
+
+// constants
+var USAGE = 'Usage: gen_defaults.js [docsRoot] [latestVersion]';
+var DEV_VERSION_NAME = 'dev';
+
+// constants for sitemap.xml
+// reference:
+//      http://www.sitemaps.org/protocol.html#xmlTagDefinitions
+var LATEST_CHANGE_FREQUENCY = 'monthly';
+var LATEST_PAGE_PRIORITY = 0.8;
+
+var DEFAULT_CHANGE_FREQUENCY = 'monthly';
+var DEFAULT_PAGE_PRIORITY = LATEST_PAGE_PRIORITY / 2;
+
+var DEV_CHANGE_FREQUENCY = 'daily';
+var DEV_PAGE_PRIORITY = LATEST_PAGE_PRIORITY / 4;
+
+function main () {
+
+    var rootDir = process.argv[2];
+    var latestVersionName = process.argv[3];
+
+    if (!rootDir) {
+        console.error(USAGE);
+        console.error('Please specify the docs root directory from which to generate defaults.');
+        process.exit(1);
+    }
+
+    if (!latestVersionName) {
+        console.error(USAGE);
+        console.error('Please specify the latest version of the docs.');
+        process.exit(1);
+    }
+
+    // create defaults config
+    var config = { 'defaults': [] };
+
+    // set defaults for each language
+    util.listdirsSync(rootDir).forEach(function (langName) {
+
+        var langPath = path.join(rootDir, langName);
+        var languageDefaults = {
+            scope: {
+                path: 'docs/' + langName
+            },
+            values: {
+                language: langName,
+                layout: 'docs-' + langName
+            }
+        };
+
+        config.defaults.push(languageDefaults);
+
+        // set defaults for each version
+        util.listdirsSync(langPath).forEach(function (versionName) {
+
+            var tocfile = util.genTocfileName(langName, versionName);
+
+            var changeFrequency = DEFAULT_CHANGE_FREQUENCY;
+            var pagePriority = DEFAULT_PAGE_PRIORITY;
+
+            // adjust priority and frequency based on version
+            if (versionName === latestVersionName) {
+                changeFrequency = LATEST_CHANGE_FREQUENCY;
+                pagePriority = LATEST_PAGE_PRIORITY;
+            } else if (versionName === DEV_VERSION_NAME) {
+                changeFrequency = DEV_CHANGE_FREQUENCY;
+                pagePriority = DEV_PAGE_PRIORITY;
+            }
+
+            var current = false;
+            if (versionName === latestVersionName || versionName === DEV_VERSION_NAME) {
+                current = true;
+            }
+
+            var versionDefaults = {
+                scope: {
+                    path: 'docs/' + langName + '/' + versionName
+                },
+                values: {
+                    version: versionName,
+                    tocfile: tocfile.replace('.yml', ''),
+                    change_frequency: changeFrequency,
+                    priority: pagePriority,
+                    current: current
+                }
+            };
+
+            config.defaults.push(versionDefaults);
+        });
+    });
+
+    console.log(util.generatedBy(__filename));
+    console.log(yaml.dump(config, { indent: 4 }));
+}
+
+main();

+ 120 - 0
tools/bin/gen_pages_dict.js

@@ -0,0 +1,120 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+var fs = require('fs');
+var path = require('path');
+var yaml = require('js-yaml');
+var glob = require('glob');
+var optimist = require('optimist');
+
+var util = require('./util');
+
+// constants
+var LATEST_ALIAS_URI = '/latest/';
+
+// helpers
+function pathToURI (filePath, rootPath) {
+    return filePath
+        .replace(new RegExp('^' + rootPath), '')
+        .replace(new RegExp('\\.md$'), '.html');
+}
+
+function pagesFromRedirects (redirects, languages) {
+    var pages = {};
+
+    // add docs redirects
+    if (typeof redirects.docs !== 'undefined') {
+        for (var redirectSource in redirects.docs) {
+
+            // add an entry for the redirect's source, once for each language
+            for (var i = 0; i < languages.length; i++) {
+                var language = languages[i];
+                var pagePath = '/docs/' + language + '/' + redirectSource;
+
+                pages[pagePath] = true;
+            }
+        }
+    }
+
+    return pages;
+}
+
+function isInLatestDocs (uri, latestVersion) {
+    return uri.indexOf('/' + latestVersion + '/') !== (-1);
+}
+
+// main
+function main () {
+
+    // get args
+    var argv = optimist
+        .usage('Usage: $0 [options]')
+        .demand('languages').describe('languages', 'comma-separated list of docs languages')
+        .demand('latestVersion').describe('latestVersion', 'the current latest docs version')
+        .demand('siteRoot').describe('siteRoot', 'the source ToC for the given directory')
+        .string('redirectsFile').describe('redirectsFile', 'file containing redirects for the website').default('redirectsFile', null)
+        .argv;
+
+    var siteRootPath = argv.siteRoot;
+    var redirectsFilePath = argv.redirectsFile;
+    var latestVersion = argv.latestVersion;
+    var languages = argv.languages.split(',');
+
+    // pages to return
+    var pages = {};
+
+    // add pages for redirects if a redirects file was passed
+    if (redirectsFilePath !== null) {
+
+        var redirectsString = fs.readFileSync(redirectsFilePath);
+        var redirects = yaml.load(redirectsString);
+        var redirectsPages = pagesFromRedirects(redirects, languages);
+
+        pages = redirectsPages;
+    }
+
+    // add entries for all Markdown files in the site root
+    var allMarkdownFiles = path.join(siteRootPath, '**/*.md');
+    glob(allMarkdownFiles, function (error, filePaths) {
+        if (error) throw error;
+
+        for (var i = 0; i < filePaths.length; i++) {
+            var filePath = filePaths[i];
+            var fileURI = pathToURI(filePath, siteRootPath);
+
+            // add the page
+            pages[fileURI] = true;
+
+            // also add /latest/ version for pages in latest docs
+            if (isInLatestDocs(fileURI, latestVersion)) {
+                var latestURI = fileURI.replace('/' + latestVersion + '/', LATEST_ALIAS_URI);
+
+                pages[latestURI] = true;
+            }
+        }
+
+        // print output
+        console.log(util.generatedBy(__filename));
+        console.log(yaml.dump(pages));
+    });
+}
+
+if (require.main === module) {
+    main();
+}

+ 76 - 0
tools/bin/gen_versions.js

@@ -0,0 +1,76 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+var path = require('path');
+var yaml = require('js-yaml');
+
+var util = require('./util');
+
+// constants
+var LANGUAGE_MAP = {
+    'de': 'Deutsch',
+    'en': 'English',
+    'es': 'Español',
+    'fr': 'Français',
+    'it': 'Italiano',
+    'ja': '日本語',
+    'ko': '한국어',
+    'pl': 'Polski',
+    'ru': 'Русский',
+    'sl': 'Slovene',
+    'zh-cn': '简体中文',
+    'zh-tw': '繁體中文'
+};
+
+function main () {
+
+    var scriptName = process.argv[1];
+    var rootDir = process.argv[2];
+    var config = {};
+
+    if (!rootDir) {
+        console.error('Please specify a directory from which to generate.');
+        process.exit(1);
+    }
+
+    // go through directory that contains all languages
+    util.listdirsSync(rootDir).forEach(function (langId) {
+
+        var langPath = path.join(rootDir, langId);
+        var versionNames = util.listdirsSync(langPath);
+
+        // get language ID
+        var langName = LANGUAGE_MAP[langId];
+        if (!langName) {
+            console.error("Language identifier '" + langId + "' doesn't have an associated name. Please fix that by changing " + scriptName + '.');
+            process.exit(1);
+        }
+
+        // set the language name and the versions it has
+        config[langId] = {
+            'name': langName,
+            'versions': versionNames
+        };
+    });
+
+    console.log(util.generatedBy(__filename));
+    console.log(yaml.dump(config, { indent: 4 }));
+}
+
+main();

+ 11 - 0
tools/bin/linkify-bugs.sh

@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+if [[ ! -z "$1" ]]; then
+    cd $1
+fi
+
+for f in *.md; do
+  echo Processing: $f
+  perl -pi -e 's/ (CB-[0-9]+)/ [$1](https:\/\/issues.apache.org\/jira\/browse\/$1)/g' "$f"
+  perl -pi -e 's/ \[(CB-[0-9]+)\] / [$1](https:\/\/issues.apache.org\/jira\/browse\/$1) /g' "$f"
+done

+ 67 - 0
tools/bin/nextversion.js

@@ -0,0 +1,67 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+function getNextVersion (previousVersion) {
+
+    // get previous version number
+    // NOTE:
+    //      only versions of the form N.x are accepted
+    var previousVersionMatch = previousVersion.match(/^(\d+)\.x$/);
+    if (!previousVersionMatch) {
+        throw 'invalid version';
+    }
+
+    // get next major version
+    var previousMajor = previousVersionMatch[1];
+    var nextMajor = parseInt(previousMajor) + 1;
+
+    // create next version
+    var nextVersion = nextMajor + '.x';
+
+    return nextVersion;
+}
+
+function main () {
+
+    // get arg
+    var previousVersion = process.argv[2];
+    if (!previousVersion) {
+        console.error('no version specified');
+        process.exit(1);
+    }
+
+    // try to get the next version
+    var nextVersion = null;
+    try {
+        nextVersion = getNextVersion(previousVersion);
+    } catch (e) {
+        console.error(e);
+        process.exit(1);
+    }
+
+    console.log(nextVersion);
+}
+
+module.exports = {
+    getNextVersion: getNextVersion
+};
+
+if (require.main === module) {
+    main();
+}

+ 75 - 0
tools/bin/toc.js

@@ -0,0 +1,75 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+var fs = require('fs');
+var path = require('path');
+
+var argv = require('optimist').argv;
+
+var augment = require('./augment_toc');
+var util = require('./util');
+
+function main () {
+
+    var docsRoot = argv._[0];
+    var tocRoot = argv._[1];
+
+    // validate args
+    if ((!docsRoot) || (!tocRoot)) {
+        var scriptName = path.basename(process.argv[1]);
+        console.log('usage: ' + scriptName + ' docsRoot tocRoot');
+        console.log(scriptName + ': error: too few arguments');
+        return 1;
+    }
+
+    // go through all the languages
+    util.listdirsSync(docsRoot).forEach(function (languageName) {
+        var languagePath = path.join(docsRoot, languageName);
+
+        // go through all the versions
+        util.listdirsSync(languagePath).forEach(function (versionName) {
+            var versionPath = path.join(languagePath, versionName);
+
+            var srcTocName = util.srcTocfileName(languageName, versionName);
+            var destTocName = util.genTocfileName(languageName, versionName);
+
+            var srcTocPath = path.join(tocRoot, srcTocName);
+            var destTocPath = path.join(tocRoot, destTocName);
+
+            // read the input
+            fs.readFile(srcTocPath, function (error, data) {
+                if (error) throw error;
+
+                // augment the ToC
+                var originalTocString = data.toString();
+                var augmentedTocString = augment.augmentString(originalTocString, versionPath);
+                var warningComment = util.generatedBy(__filename);
+                var output = warningComment + '\n' + augmentedTocString;
+
+                // write the output
+                fs.writeFile(destTocPath, output, function (error, data) {
+                    if (error) throw error;
+                    console.log(srcTocPath + ' -> ' + destTocPath);
+                });
+            });
+        });
+    });
+}
+
+main();

+ 121 - 0
tools/bin/util.js

@@ -0,0 +1,121 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+module.exports = (function () {
+
+    var fs = require('fs');
+    var path = require('path');
+
+    function stripFrontMatter (text) {
+
+        // get and replace front matter if it's there
+        // NOTE:
+        //      String.replace() replaces only the first occurrence
+        //      of a string, which is what we want
+        var rawFrontMatterString = getRawFrontMatterString(text);
+        if (rawFrontMatterString !== null) {
+            return text.replace(rawFrontMatterString, '');
+        }
+
+        return text;
+    }
+
+    function getFrontMatterString (text) {
+        var rawFrontMatterString = getRawFrontMatterString(text);
+        if (rawFrontMatterString !== null) {
+
+            // strip out front matter markers
+            var frontMatterString = rawFrontMatterString.replace(/^---\s*$/gm, '');
+            return frontMatterString;
+        }
+
+        return null;
+    }
+
+    function setFrontMatterString (text, frontMatterString) {
+        var textOnly = stripFrontMatter(text);
+        var newText = '---\n' + frontMatterString + '---\n\n' + textOnly;
+        return newText;
+    }
+
+    function getRawFrontMatterString (text) {
+        // NOTE:
+        //      [\s\S]  matches all characters
+        //      *?      non-greedy *-match
+        var match = text.match(/^(---\s*\r?\n[\s\S]*?\r?\n---\s*\r?\n)[\s\S]*$/);
+        if (match === null) {
+            return null;
+        }
+        return match[1];
+    }
+
+    function listdirsSync (root) {
+        return fs.readdirSync(root).filter(function (fileName) {
+            return fs.statSync(path.join(root, fileName)).isDirectory();
+        });
+    }
+
+    function tocfileName (language, version, suffix) {
+        var versionSlug = version.replace(/\./g, '-');
+        if (suffix) {
+            suffix = '-' + suffix;
+        } else {
+            suffix = '';
+        }
+        return language + '_' + versionSlug + suffix + '.yml';
+    }
+
+    function srcTocfileName (language, version) {
+        return tocfileName(language, version, 'src');
+    }
+
+    function genTocfileName (language, version) {
+        return tocfileName(language, version, 'gen');
+    }
+
+    function mergeObjects (a, b) {
+        var c = {};
+
+        // NOTE: b's properties override a's properties
+        Object.keys(a).forEach(function (key) {
+            c[key] = a[key];
+        });
+        Object.keys(b).forEach(function (key) {
+            c[key] = b[key];
+        });
+        return c;
+    }
+
+    function generatedBy (scriptName) {
+        return '# WARNING: This file is generated by ' + path.basename(scriptName);
+    }
+
+    return {
+        stripFrontMatter: stripFrontMatter,
+        getFrontMatterString: getFrontMatterString,
+        setFrontMatterString: setFrontMatterString,
+        getRawFrontMatterString: getRawFrontMatterString,
+        listdirsSync: listdirsSync,
+        tocfileName: tocfileName,
+        srcTocfileName: srcTocfileName,
+        genTocfileName: genTocfileName,
+        mergeObjects: mergeObjects,
+        generatedBy: generatedBy
+    };
+})();

+ 131 - 0
www/.htaccess

@@ -0,0 +1,131 @@
+---
+---
+
+###############################################################################
+# WARNING
+###############################################################################
+# Only modify this file if you know what you're doing. This file has
+# the potential to make pages become PERMANENTLY UNREACHABLE. If in
+# doubt, refer to these links:
+#
+# RewriteRule       - http://httpd.apache.org/docs/current/mod/mod_rewrite.html
+# RewriteRule flags - http://httpd.apache.org/docs/current/rewrite/flags.html
+# .htaccess tester  - http://htaccess.madewithlove.be/
+#
+# And remember: three-oh-ONE (301) menas you get ONE chance to get it right;
+#               three-oh-TWO (302) means you get TWO chances.
+###############################################################################
+
+# set error pages
+ErrorDocument 404 {{site.baseurl}}/404.html
+
+# turn off automatic directory indices
+Options -Indexes
+
+# turn on redirection
+Options +FollowSymLinks
+RewriteEngine on
+
+# NOTE:
+#      Some of the below redirects are 302s, and some are 301s. 302s are used
+#      for redirects whose targets change sometimes. For example:
+#          - /docs/          -> /docs/fr/, /docs/en/, etc.
+#          - /docs/en/       -> /docs/en/dev/, /docs/en/latest/, etc.
+#          - /docs/en/latest -> /docs/en/4.0.0/, /docs/en/5.0.0/, etc.
+#
+#      301s are for PERMANENT redirects. These are used only for mapping old
+#      pages to new pages.
+#
+# NOTE:
+#      (\w\w(?:-\w\w)?)                   - regex for languages
+#      (?:\d+\.(?:\d+\.\d+|x))|dev|latest - regex for versions
+#
+# NOTE:
+#      Meanings of some of the flags at the ends of rules:
+#
+#      L  - terminal rule; if it applies, no more rules are checked
+#      R  - redirect (followed by code)
+#      NE - no escaping special characters
+
+# 302 (temporary):
+#
+#     docs/         -> docs/[default language]/latest/
+#     docs/*        -> docs/*/latest/
+#     docs/*/       -> docs/*/latest/
+#     docs/*/latest -> docs/*/latest/
+#
+RewriteRule ^.*docs/$ {{site.baseurl}}/docs/{{site.language}}/latest/ [R=302,L]
+RewriteRule ^.*docs/(\w\w(?:-\w\w)?)$ {{site.baseurl}}/docs/$1/latest/ [R=302,L]
+RewriteRule ^.*docs/(\w\w(?:-\w\w)?)/$ {{site.baseurl}}/docs/$1/latest/ [R=302,L]
+RewriteRule ^.*docs/(\w\w(?:-\w\w)?)/latest$ {{site.baseurl}}/docs/$1/latest/ [R=302,L]
+
+# 302 (temporary):
+#
+#     docs/*/XX/* -> docs/*/YY/*
+#
+{% for redirect in site.data.redirects.version-renames %}RewriteRule ^.*docs/(\w\w(?:-\w\w)?)/{{redirect[0]}}/(.*)$ {{site.baseurl}}/docs/$1/{{redirect[1]}}/$2 [R=302,L]
+{% endfor %}
+
+# 302 (temporary):
+#
+#     docs/XX/* -> docs/YY/*
+#
+{% for redirect in site.data.redirects.language-renames %}RewriteRule ^.*docs/{{redirect[0]}}/((?:\d+\.(?:\d+\.\d+|x))|dev|latest)/(.*)$ {{site.baseurl}}/docs/{{redirect[1]}}/$1/$2 [R=302,L]
+{% endfor %}
+
+# 301 (PERMANENT):
+#
+#     old docs pages -> new docs pages (global)
+#
+# NOTE:
+#       The first part of the path (i.e. the ".*") is thrown away and replaced
+#       by site.baseurl. It is thrown away because there is no RewriteCond to
+#       control whether the rewrite happens to a URI or a local file path
+#       (when Apache is locating the local file to serve).
+{% for redirect in site.data.redirects.docs-global %}RewriteRule ^.*docs/(\w\w(?:-\w\w)?)/((?:\d+\.(?:\d+\.\d+|x))|dev|latest)/{{redirect[0]}}$ {{site.baseurl}}/docs/$1/$2/{{redirect[1]}} [NE,R=301,L]
+{% endfor %}
+
+# 301 (PERMANENT):
+#
+#     old docs pages -> new docs pages (version-specific)
+#
+{% for redirect in site.data.redirects.docs %}RewriteRule ^.*docs/(\w\w(?:-\w\w)?)/{{redirect[0]}}$ {{site.baseurl}}/docs/$1/{{redirect[1]}} [NE,R=301,L]
+{% endfor %}
+
+# 301 (PERMANENT):
+#
+#     old pages -> new pages
+#
+{% for redirect in site.data.redirects.general %}RewriteRule ^.*/{{redirect[0]}}$ {{site.baseurl}}/{{redirect[1]}} [NE,R=301,L]
+{% endfor %}
+
+# rewrite only:
+#
+#     /docs/XX/latest/* -> /docs/XX/Y.Y.Y/*
+#
+# NOTE:
+#       This does NOT return a redirect. It returns the resource *as if* the
+#       redirected URI was requested. That is, both URIs return the same
+#       resource, but the browser won't change the URI (no redirects followed).
+#
+# NOTE:
+#       This needs to be *after* the docs redirects because they might need the
+#       "/latest/" to be in the URI in order to activate. Placing this rule
+#       before them will rewrite "/latest/" to the latest version and redirects
+#       for "/latest/some/path.html" will never activate.
+RewriteRule ^.*docs/(\w\w(?:-\w\w)?)/latest/(.*)$ {{site.baseurl}}/docs/$1/{{site.latest_docs_version}}/$2 [L]
+
+# Redirect http to https
+# From Cordova PMC Member raphinesse 
+# https://s.apache.org/An8s
+
+# If we receive a forwarded http request from a proxy...
+RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
+
+# ...or just a plain old http request directly from the client
+RewriteCond %{HTTP:X-Forwarded-Proto} =""
+RewriteCond %{HTTPS} !=on
+
+# Redirect to https version
+RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
+

+ 105 - 0
www/_data/contribute-repo-links.yml

@@ -0,0 +1,105 @@
+-   title: Platforms
+    projects:
+
+    -   project: Android
+        mirror: https://github.com/apache/cordova-android
+
+    -   project: iOS
+        mirror: https://github.com/apache/cordova-ios
+
+    -   project: Mac OS X
+        mirror: https://github.com/apache/cordova-osx
+
+    -   project: Windows (desktop)
+        mirror: https://github.com/apache/cordova-windows
+
+    -   project: Browser
+        mirror: https://github.com/apache/cordova-browser
+
+    -   project: Electron
+        mirror: https://github.com/apache/cordova-electron
+
+-   title: Plugins
+    projects:
+    -   project: Battery Status
+        mirror: https://github.com/apache/cordova-plugin-battery-status
+
+    -   project: Camera
+        mirror: https://github.com/apache/cordova-plugin-camera
+
+    -   project: Device
+        mirror: https://github.com/apache/cordova-plugin-device
+
+    -   project: Dialogs
+        mirror: https://github.com/apache/cordova-plugin-dialogs
+
+    -   project: File
+        mirror: https://github.com/apache/cordova-plugin-file
+
+    -   project: Geolocation
+        mirror: https://github.com/apache/cordova-plugin-geolocation
+
+    -   project: In-App Browser
+        mirror: https://github.com/apache/cordova-plugin-inappbrowser
+
+    -   project: Media
+        mirror: https://github.com/apache/cordova-plugin-media
+
+    -   project: Media Capture
+        mirror: https://github.com/apache/cordova-plugin-media-capture
+
+    -   project: Network Information
+        mirror: https://github.com/apache/cordova-plugin-network-information
+
+    -   project: Screen Orientation
+        mirror: https://github.com/apache/cordova-plugin-screen-orientation
+
+    -   project: Splashscreen
+        mirror: https://github.com/apache/cordova-plugin-splashscreen
+
+    -   project: Statusbar
+        mirror: https://github.com/apache/cordova-plugin-statusbar
+
+    -   project: Vibration
+        mirror: https://github.com/apache/cordova-plugin-vibration
+
+-   title: Other
+    projects:
+    -   project: Cordova Docs
+        mirror: https://github.com/apache/cordova-docs
+
+    -   project: Cordova JS (JavaScript API)
+        mirror: https://github.com/apache/cordova-js
+
+    -   project: Cordova CLI
+        mirror: https://github.com/apache/cordova-cli
+
+    -   project: Cordova Plugman (Plugin Manager)
+        mirror: https://github.com/apache/cordova-plugman
+
+    -   project: Cordova Lib (Common Code)
+        mirror: https://github.com/apache/cordova-lib
+
+    -   project: Cordova Common
+        mirror: https://github.com/apache/cordova-common
+
+    -   project: Cordova Serve
+        mirror: https://github.com/apache/cordova-serve
+
+    -   project: Cordova Create
+        mirror: https://github.com/apache/cordova-create
+
+    -   project: Cordova Fetch
+        mirror: https://github.com/apache/cordova-fetch
+
+    -   project: Cordova Mobile Spec (Test Suite)
+        mirror: https://github.com/apache/cordova-mobile-spec
+
+    -   project: Cordova Paramedic (Test Automation)
+        mirror: https://github.com/apache/cordova-paramedic
+
+    -   project: Cordova Hello World (Sample App)
+        mirror: https://github.com/apache/cordova-app-hello-world
+
+    -   project: Cordova Coho (Release Tool)
+        mirror: https://github.com/apache/cordova-coho

+ 122 - 0
www/_data/fetched-files.yml

@@ -0,0 +1,122 @@
+# REFERENCE ENTRY:
+# -
+#     src:                                                  # required
+#         repoName:    "apache/cordova-cli"                 # required
+#         packageName: "cordova"                            # if empty: second part of repoName
+#         commit:      "master"                             # if empty: latest in NPM
+#         path:        "relative/path/to/file/in/repo.md"   # if empty: "README.md"
+#     dest:                                                 # required
+#         path:  "relative/path/in/docs/version.md"         # required
+-
+    src:
+        repoName: "apache/cordova-cli"
+        packageName: "cordova"
+        commit: "master"
+        path: "doc/readme.md"
+    dest:
+        path: "reference/cordova-cli/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-battery-status"
+        packageName: "cordova-plugin-battery-status"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-battery-status/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-camera"
+        packageName: "cordova-plugin-camera"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-camera/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-device"
+        packageName: "cordova-plugin-device"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-device/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-dialogs"
+        packageName: "cordova-plugin-dialogs"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-dialogs/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-file"
+        packageName: "cordova-plugin-file"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-file/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-geolocation"
+        packageName: "cordova-plugin-geolocation"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-geolocation/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-inappbrowser"
+        packageName: "cordova-plugin-inappbrowser"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-inappbrowser/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-media"
+        packageName: "cordova-plugin-media"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-media/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-media-capture"
+        packageName: "cordova-plugin-media-capture"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-media-capture/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-network-information"
+        packageName: "cordova-plugin-network-information"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-network-information/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-splashscreen"
+        packageName: "cordova-plugin-splashscreen"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-splashscreen/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-vibration"
+        packageName: "cordova-plugin-vibration"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-vibration/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-statusbar"
+        packageName: "cordova-plugin-statusbar"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-statusbar/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-whitelist"
+        packageName: "cordova-plugin-whitelist"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-whitelist/index.md"
+-
+    src:
+        repoName: "apache/cordova-plugin-screen-orientation"
+        packageName: "cordova-plugin-screen-orientation"
+        commit: "master"
+    dest:
+        path: "reference/cordova-plugin-screen-orientation/index.md"

+ 84 - 0
www/_data/mailing-lists.yml

@@ -0,0 +1,84 @@
+-   title: Dev Mailing List
+    links:
+        -   label: Writing to the list
+            text: dev@cordova.apache.org
+            href: mailto:dev@cordova.apache.org
+
+        -   label: Subscription address
+            text: dev-subscribe@cordova.apache.org
+            href: mailto:dev-subscribe@cordova.apache.org
+
+        -   label: Digest subscription address
+            text: dev-digest-subscribe@cordova.apache.org
+            href: mailto:dev-digest-subscribe@cordova.apache.org
+
+        -   label: Unsubscription addresses
+            text: dev-unsubscribe@cordova.apache.org
+            href: mailto:dev-unsubscribe@cordova.apache.org
+
+        -   label: Getting help with the list
+            text: dev-help@cordova.apache.org
+            href: mailto:dev-help@cordova.apache.org
+
+        -   label: Browse online
+            text: Dev Mailing List Archive
+            href: https://lists.apache.org/list.html?dev@cordova.apache.org
+    description: >
+        The Dev mailing list is a place for discussion about developing Apache Cordova.
+        <br/>If you are a Cordova user looking for help, use the <a href="http://stackoverflow.com/questions/tagged/cordova">cordova tag on Stack Overflow</a>.
+
+-   title: Commits Mailing List
+    links:
+        -   label: Writing to the list
+            text: commits@cordova.apache.org
+            href: mailto:commits@cordova.apache.org
+
+        -   label: Subscription address
+            text: commits-subscribe@cordova.apache.org
+            href: mailto:commits-subscribe@cordova.apache.org
+
+        -   label: Digest subscription address
+            text: commits-digest-subscribe@cordova.apache.org
+            href: mailto:commits-digest-subscribe@cordova.apache.org
+
+        -   label: Unsubscription addresses
+            text: commits-unsubscribe@cordova.apache.org
+            href: mailto:commits-unsubscribe@cordova.apache.org
+
+        -   label: Getting help with the list
+            text: commits-help@cordova.apache.org
+            href: mailto:commits-help@cordova.apache.org
+
+        -   label: Browse online
+            text: Commits Mailing List Archive
+            href: https://lists.apache.org/list.html?commits@cordova.apache.org
+    description: >
+        The Commits mailing list tracks commit logs for Apache Cordova repos.
+
+-   title: Issues Mailing List
+    links:
+        -   label: Writing to the list
+            text: issues@cordova.apache.org
+            href: mailto:issues@cordova.apache.org
+
+        -   label: Subscription address
+            text: issues-subscribe@cordova.apache.org
+            href: mailto:issues-subscribe@cordova.apache.org
+
+        -   label: Digest subscription address
+            text: issues-digest-subscribe@cordova.apache.org
+            href: mailto:issues-digest-subscribe@cordova.apache.org
+
+        -   label: Unsubscription addresses
+            text: issues-unsubscribe@cordova.apache.org
+            href: mailto:issues-unsubscribe@cordova.apache.org
+
+        -   label: Getting help with the list
+            text: issues-help@cordova.apache.org
+            href: mailto:issues-help@cordova.apache.org
+
+        -   label: Browse online
+            text: Issues Mailing List Archive
+            href: https://lists.apache.org/list.html?issues@cordova.apache.org
+    description: >
+        The Issues mailing list tracks comments and updates to <a href="http://issues.apache.org/jira/browse/CB">Jira items</a> regarding Apache Cordova.

+ 533 - 0
www/_data/redirects.yml

@@ -0,0 +1,533 @@
+# WARNING:
+#         these are *string-only* redirects; do NOT use regexes
+
+# 302 (temporary) renames of versions
+version-renames:
+    "edge": "dev"
+    "6.0.0": "6.x"
+
+# 302 (temporary) renames of languages
+language-renames:
+    "zh": "zh-tw"
+
+# 301 (PERMANENT) redirect paths relative to /
+general:
+    "plugins/authors.html": "docs/en/latest/guide/hybrid/plugins/index.html#publishing-plugins"
+
+# 301 (PERMANENT) redirect paths relative to /docs/XX/
+docs:
+    "dev/guide/platforms/android/tools.html": "dev/guide/platforms/android/index.html"
+    "latest/guide/platforms/android/tools.html": "latest/guide/platforms/android/index.html"
+
+    "dev/guide/platforms/android/lifecycle.html": "dev/guide/platforms/android/index.html#lifecycle-guide"
+    "latest/guide/platforms/android/lifecycle.html": "latest/guide/platforms/android/index.html#lifecycle-guide"
+
+    "dev/guide/platforms/android/config.html": "dev/config_ref/index.html"
+    "latest/guide/platforms/android/config.html": "latest/config_ref/index.html"
+
+    "dev/guide/platforms/ios/tools.html": "dev/guide/platforms/ios/index.html"
+    "latest/guide/platforms/ios/tools.html": "latest/guide/platforms/ios/index.html"
+
+    "dev/guide/platforms/ios/config.html": "dev/config_ref/index.html"
+    "latest/guide/platforms/ios/config.html": "latest/config_ref/index.html"
+
+    "dev/guide/platforms/win8/packaging.html": "dev/guide/platforms/win8/index.html#signing-an-app"
+    "latest/guide/platforms/win8/packaging.html": "latest/guide/platforms/win8/index.html#signing-an-app"
+
+    "dev/guide/platforms/win8/win10-support.html": "dev/guide/platforms/win8/index.html"
+    "latest/guide/platforms/win8/win10-support.html": "latest/guide/platforms/win8/index.html"
+
+    "dev/cordova/plugins/pluginapis.html": "deprecated.html"
+    "latest/cordova/plugins/pluginapis.html": "deprecated.html"
+
+    # Rename `cordova-windows` URLs from `win8` to `windows`
+    "dev/guide/platforms/win8/index.html": "dev/guide/platforms/windows/index.html"
+    "latest/guide/platforms/win8/index.html": "latest/guide/platforms/windows/index.html"
+    "dev/guide/platforms/win8/plugin.html": "dev/guide/platforms/windows/index.html"
+    "latest/guide/platforms/win8/plugin.html": "latest/guide/platforms/windows/index.html"
+    "dev/guide/platforms/win8/upgrade.html": "dev/guide/platforms/windows/index.html"
+    "latest/guide/platforms/win8/upgrade.html": "latest/guide/platforms/windows/index.html"
+
+    # Removing deprecated platforms and plugins
+    "dev/guide/platforms/blackberry10/home.html": "deprecated.html"
+    "latest/guide/platforms/blackberry10/home.html": "deprecated.html"
+    "dev/guide/platforms/blackberry10/index.html": "deprecated.html"
+    "latest/guide/platforms/blackberry10/index.html": "deprecated.html"
+    "dev/guide/platforms/blackberry10/tools.html": "deprecated.html"
+    "latest/guide/platforms/blackberry10/tools.html": "deprecated.html"
+    "dev/guide/platforms/blackberry10/config.html": "deprecated.html"
+    "latest/guide/platforms/blackberry10/config.html": "deprecated.html"
+    "dev/guide/platforms/blackberry10/plugin.html": "deprecated.html"
+    "latest/guide/platforms/blackberry10/plugin.html": "deprecated.html"
+    "dev/guide/platforms/blackberry10/upgrade.html": "deprecated.html"
+    "latest/guide/platforms/blackberry10/upgrade.html": "deprecated.html"
+    "dev/guide/platforms/blackberry/upgrade.html": "deprecated.html"
+    "latest/guide/platforms/blackberry/upgrade.html": "deprecated.html"
+    "dev/guide/platforms/ubuntu/index.html": "deprecated.html"
+    "latest/guide/platforms/ubuntu/index.html": "deprecated.html"
+    "dev/guide/platforms/wp8/home.html": "deprecated.html"
+    "latest/guide/platforms/wp8/home.html": "deprecated.html"
+    "dev/guide/platforms/wp8/index.html": "deprecated.html"
+    "latest/guide/platforms/wp8/index.html": "deprecated.html"
+    "dev/guide/platforms/wp8/plugin.html": "deprecated.html"
+    "latest/guide/platforms/wp8/plugin.html": "deprecated.html"
+    "dev/guide/platforms/wp8/upgrade.html": "deprecated.html"
+    "latest/guide/platforms/wp8/upgrade.html": "deprecated.html"
+    "dev/guide/platforms/wp8/parallels.html": "deprecated.html"
+    "latest/guide/platforms/wp8/parallels.html": "deprecated.html"
+    "dev/guide/platforms/wp8/vmware.html": "deprecated.html"
+    "latest/guide/platforms/wp8/vmware.html": "deprecated.html"
+    "dev/guide/platforms/wp8/webview.html": "deprecated.html"
+    "latest/guide/platforms/wp8/webview.html": "deprecated.html"
+
+    "latest/reference/cordova-plugin-contacts/index.html": "deprecated.html"
+    "latest/reference/cordova-plugin-console/index.html": "deprecated.html"
+    "latest/reference/cordova-plugin-device-motion/index.html": "deprecated.html"
+    "latest/reference/cordova-plugin-device-orientation/index.html": "deprecated.html"
+    "latest/reference/cordova-plugin-file-transfer/index.html": "deprecated.html"
+    "latest/reference/cordova-plugin-globalization/index.html": "deprecated.html"
+    "latest/reference/cordova-plugin-legacy-whitelist/index.html": "deprecated.html"
+
+    # Old plugin API docs need to be redirected to latest where we pull in the READMEs
+    "latest/cordova/accelerometer/acceleration/acceleration.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/cordova/accelerometer/accelerometer.clearWatch.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/cordova/accelerometer/accelerometer.getCurrentAcceleration.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/cordova/accelerometer/accelerometer.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/cordova/accelerometer/accelerometer.watchAcceleration.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/cordova/accelerometer/parameters/accelerometerError.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/cordova/accelerometer/parameters/accelerometerOptions.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/cordova/accelerometer/parameters/accelerometerSuccess.html": "latest/reference/cordova-plugin-device-motion/index.html"
+
+    "latest/cordova/camera/camera.cleanup.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/cordova/camera/camera.getPicture.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/cordova/camera/camera.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/cordova/camera/parameter/cameraError.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/cordova/camera/parameter/cameraOptions.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/cordova/camera/parameter/CameraPopoverHandle.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/cordova/camera/parameter/CameraPopoverOptions.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/cordova/camera/parameter/cameraSuccess.html": "latest/reference/cordova-plugin-camera/index.html"
+
+    "latest/cordova/compass/compass.clearWatch.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/compass.clearWatchFilter.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/compass.getCurrentHeading.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/compass.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/compass.watchHeading.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/compass.watchHeadingFilter.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/compassError/compassError.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/parameters/compassError.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/parameters/compassHeading.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/parameters/compassOptions.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova/compass/parameters/compassSuccess.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+
+    "latest/cordova/connection/connection.html": "latest/reference/cordova-plugin-network-information/index.html"
+    "latest/cordova/connection/connection.type.html": "latest/reference/cordova-plugin-network-information/index.html"
+    "latest/cordova/contacts/Contact/contact.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/ContactAddress/contactaddress.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/ContactError/contactError.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/ContactField/contactfield.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/ContactFindOptions/contactfindoptions.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/ContactName/contactname.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/ContactOrganization/contactorganization.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/contacts.create.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/contacts.find.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/contacts.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/parameters/contactError.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/parameters/contactFields.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/parameters/contactFindOptions.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova/contacts/parameters/contactSuccess.html": "latest/reference/cordova-plugin-contacts/index.html"
+
+    "latest/cordova/device/device.cordova.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/cordova/device/device.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/cordova/device/device.model.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/cordova/device/device.name.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/cordova/device/device.platform.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/cordova/device/device.uuid.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/cordova/device/device.version.html": "latest/reference/cordova-plugin-device/index.html"
+
+    "latest/cordova/file/directoryentry/directoryentry.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/directoryreader/directoryreader.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/file.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/fileentry/fileentry.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/fileerror/fileerror.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/fileobj/fileobj.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/filereader/filereader.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/filesystem/filesystem.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/filewriter/filewriter.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/flags/flags.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/localfilesystem/localfilesystem.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova/file/metadata/metadata.html": "latest/reference/cordova-plugin-file/index.html"
+
+    "latest/cordova/file/filetransfer/filetransfer.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+    "latest/cordova/file/filetransfererror/filetransfererror.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+    "latest/cordova/file/fileuploadoptions/fileuploadoptions.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+    "latest/cordova/file/fileuploadresult/fileuploadresult.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+
+    "latest/cordova/geolocation/Coordinates/coordinates.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/geolocation.clearWatch.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/geolocation.getCurrentPosition.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/geolocation.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/geolocation.watchPosition.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/parameters/geolocation.options.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/parameters/geolocationError.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/parameters/geolocationSuccess.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/Position/position.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova/geolocation/PositionError/positionError.html": "latest/reference/cordova-plugin-geolocation/index.html"
+
+    "latest/cordova/globalization/globalization.dateToString.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.getCurrencyPattern.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.getDateNames.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.getDatePattern.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.getFirstDayOfWeek.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.getLocaleName.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.getNumberPattern.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.getPreferredLanguage.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.isDayLightSavingsTime.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.numberToString.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.stringToDate.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/globalization.stringToNumber.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova/globalization/GlobalizationError/globalizationerror.html": "latest/reference/cordova-plugin-globalization/index.html"
+
+    "latest/cordova/inappbrowser/inappbrowser.html": "latest/reference/cordova-plugin-inappbrowser/index.html"
+    "latest/cordova/inappbrowser/window.open.html": "latest/reference/cordova-plugin-inappbrowser/index.html"
+
+    "latest/cordova/media/capture/capture.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/captureAudio.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/captureAudioOptions.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/CaptureCB.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/CaptureError.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/CaptureErrorCB.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/captureImage.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/captureImageOptions.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/captureVideo.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/captureVideoOptions.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/ConfigurationData.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/MediaFile.getFormatData.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/MediaFile.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova/media/capture/MediaFileData.html": "latest/reference/cordova-plugin-media-capture/index.html"
+
+    "latest/cordova/media/media.getCurrentPosition.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.getDuration.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.pause.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.play.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.release.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.seekTo.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.setVolume.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.startRecord.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.stop.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/media.stopRecord.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/MediaError/mediaError.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova/media/Parameters/mediaError.html": "latest/reference/cordova-plugin-media/index.html"
+
+    "latest/cordova/notification/notification.alert.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/cordova/notification/notification.beep.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/cordova/notification/notification.confirm.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/cordova/notification/notification.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/cordova/notification/notification.prompt.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/cordova/notification/notification.vibrate.html": "latest/reference/cordova-plugin-dialogs/index.html"
+
+    "latest/cordova/splashscreen/splashscreen.hide.html": "latest/reference/cordova-plugin-splashscreen/index.html"
+    "latest/cordova/splashscreen/splashscreen.html": "latest/reference/cordova-plugin-splashscreen/index.html"
+    "latest/cordova/splashscreen/splashscreen.show.html": "latest/reference/cordova-plugin-splashscreen/index.html"
+
+    "latest/phonegap/accelerometer/acceleration/acceleration.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/phonegap/accelerometer/accelerometer.clearWatch.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/phonegap/accelerometer/accelerometer.getCurrentAcceleration.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/phonegap/accelerometer/accelerometer.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/phonegap/accelerometer/accelerometer.watchAcceleration.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/phonegap/accelerometer/parameters/accelerometerError.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/phonegap/accelerometer/parameters/accelerometerOptions.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/phonegap/accelerometer/parameters/accelerometerSuccess.html": "latest/reference/cordova-plugin-device-motion/index.html"
+
+    "latest/phonegap/camera/camera.getPicture.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/phonegap/camera/camera.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/phonegap/camera/parameter/cameraError.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/phonegap/camera/parameter/cameraOptions.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/phonegap/camera/parameter/cameraSuccess.html": "latest/reference/cordova-plugin-camera/index.html"
+
+    "latest/phonegap/compass/compass.clearWatch.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/compass.clearWatchFilter.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/compass.getCurrentHeading.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/compass.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/compass.watchHeading.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/compass.watchHeadingFilter.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/compassError/compassError.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/parameters/compassError.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/parameters/compassHeading.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/parameters/compassOptions.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/phonegap/compass/parameters/compassSuccess.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+
+    "latest/phonegap/connection/connection.html": "latest/reference/cordova-plugin-network-information/index.html"
+    "latest/phonegap/connection/connection.type.html": "latest/reference/cordova-plugin-network-information/index.html"
+
+    "latest/phonegap/contacts/Contact/contact.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/ContactAddress/contactaddress.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/ContactError/contactError.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/ContactField/contactfield.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/ContactFindOptions/contactfindoptions.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/ContactName/contactname.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/ContactOrganization/contactorganization.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/contacts.create.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/contacts.find.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/contacts.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/parameters/contactError.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/parameters/contactFields.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/parameters/contactFindOptions.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/phonegap/contacts/parameters/contactSuccess.html": "latest/reference/cordova-plugin-contacts/index.html"
+
+    "latest/phonegap/device/device.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/phonegap/device/device.name.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/phonegap/device/device.phonegap.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/phonegap/device/device.platform.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/phonegap/device/device.uuid.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/phonegap/device/device.version.html": "latest/reference/cordova-plugin-device/index.html"
+
+    "latest/phonegap/file/directoryentry/directoryentry.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/directoryreader/directoryreader.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/file.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/fileentry/fileentry.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/fileerror/fileerror.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/fileobj/fileobj.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/filereader/filereader.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/filesystem/filesystem.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/filewriter/filewriter.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/flags/flags.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/localfilesystem/localfilesystem.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/phonegap/file/metadata/metadata.html": "latest/reference/cordova-plugin-file/index.html"
+
+    "latest/phonegap/file/filetransfer/filetransfer.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+    "latest/phonegap/file/filetransfererror/filetransfererror.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+    "latest/phonegap/file/fileuploadoptions/fileuploadoptions.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+    "latest/phonegap/file/fileuploadresult/fileuploadresult.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+
+    "latest/phonegap/geolocation/Coordinates/coordinates.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/geolocation.clearWatch.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/geolocation.getCurrentPosition.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/geolocation.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/geolocation.watchPosition.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/parameters/geolocation.options.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/parameters/geolocationError.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/parameters/geolocationSuccess.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/Position/position.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/phonegap/geolocation/PositionError/positionError.html": "latest/reference/cordova-plugin-geolocation/index.html"
+
+    "latest/phonegap/media/capture/capture.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/captureAudio.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/captureAudioOptions.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/CaptureCB.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/CaptureError.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/CaptureErrorCB.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/captureImage.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/captureImageOptions.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/captureVideo.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/captureVideoOptions.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/ConfigurationData.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/MediaFile.getFormatData.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/MediaFile.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/phonegap/media/capture/MediaFileData.html": "latest/reference/cordova-plugin-media-capture/index.html"
+
+    "latest/phonegap/media/media.getCurrentPosition.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.getDuration.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.pause.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.play.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.release.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.seekTo.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.startRecord.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.stop.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/media.stopRecord.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/MediaError/mediaError.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/phonegap/media/Parameters/mediaError.html": "latest/reference/cordova-plugin-media/index.html"
+
+    "latest/phonegap/notification/notification.alert.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/phonegap/notification/notification.beep.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/phonegap/notification/notification.confirm.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/phonegap/notification/notification.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/phonegap/notification/notification.vibrate.html": "latest/reference/cordova-plugin-dialogs/index.html"
+
+    # NOTE:
+    #      these only need to be done for /latest, since they only existed in /latest and they don't exist anywhere anymore
+    "latest/cordova-cli/index.html": "latest/reference/cordova-cli/index.html"
+    "latest/cordova-plugin-battery-status/index.html": "latest/reference/cordova-plugin-battery-status/index.html"
+    "latest/cordova-plugin-camera/index.html": "latest/reference/cordova-plugin-camera/index.html"
+    "latest/cordova-plugin-console/index.html": "latest/reference/cordova-plugin-console/index.html"
+    "latest/cordova-plugin-contacts/index.html": "latest/reference/cordova-plugin-contacts/index.html"
+    "latest/cordova-plugin-device/index.html": "latest/reference/cordova-plugin-device/index.html"
+    "latest/cordova-plugin-device-motion/index.html": "latest/reference/cordova-plugin-device-motion/index.html"
+    "latest/cordova-plugin-device-orientation/index.html": "latest/reference/cordova-plugin-device-orientation/index.html"
+    "latest/cordova-plugin-dialogs/index.html": "latest/reference/cordova-plugin-dialogs/index.html"
+    "latest/cordova-plugin-file/index.html": "latest/reference/cordova-plugin-file/index.html"
+    "latest/cordova-plugin-file-transfer/index.html": "latest/reference/cordova-plugin-file-transfer/index.html"
+    "latest/cordova-plugin-geolocation/index.html": "latest/reference/cordova-plugin-geolocation/index.html"
+    "latest/cordova-plugin-globalization/index.html": "latest/reference/cordova-plugin-globalization/index.html"
+    "latest/cordova-plugin-inappbrowser/index.html": "latest/reference/cordova-plugin-inappbrowser/index.html"
+    "latest/cordova-plugin-media/index.html": "latest/reference/cordova-plugin-media/index.html"
+    "latest/cordova-plugin-media-capture/index.html": "latest/reference/cordova-plugin-media-capture/index.html"
+    "latest/cordova-plugin-network-information/index.html": "latest/reference/cordova-plugin-network-information/index.html"
+    "latest/cordova-plugin-splashscreen/index.html": "latest/reference/cordova-plugin-splashscreen/index.html"
+    "latest/cordova-plugin-vibration/index.html": "latest/reference/cordova-plugin-vibration/index.html"
+    "latest/cordova-plugin-statusbar/index.html": "latest/reference/cordova-plugin-statusbar/index.html"
+    "latest/cordova-plugin-whitelist/index.html": "latest/reference/cordova-plugin-whitelist/index.html"
+    "latest/cordova-plugin-legacy-whitelist/index.html": "latest/reference/cordova-plugin-legacy-whitelist/index.html"
+
+# 301 (PERMANENT) redirect paths relative to /docs/XX/YYY/
+docs-global:
+    "config_ref_images.md.html": "config_ref/images.html"
+    "config_ref_index.md.html": "config_ref/index.html"
+    "cordova_accelerometer_accelerometer.md.html": "cordova/accelerometer/accelerometer.html"
+    "cordova_camera_camera.cleanup.md.html": "cordova/camera/camera.cleanup.html"
+    "cordova_camera_camera.md.html": "cordova/camera/camera.html"
+    "cordova_compass_compass.md.html": "cordova/compass/compass.html"
+    "cordova_connection_connection.md.html": "cordova/connection/connection.html"
+    "cordova_contacts_contacts.md.html": "cordova/contacts/contacts.html"
+    "cordova_device_device.md.html": "cordova/device/device.html"
+    "cordova_device_device.model.md.html": "cordova/device/device.model.html"
+    "cordova_events_events.md.html": "cordova/events/events.html"
+    "cordova_file_file.md.html": "cordova/file/file.html"
+    "cordova_geolocation_geolocation.md.html": "cordova/geolocation/geolocation.html"
+    "cordova_globalization_globalization.md.html": "cordova/globalization/globalization.html"
+    "cordova_inappbrowser_inappbrowser.md.html": "cordova/inappbrowser/inappbrowser.html"
+    "cordova_media_capture_capture.md.html": "cordova/media/capture/capture.html"
+    "cordova_media_media.md.html": "cordova/media/media.html"
+    "cordova_notification_notification.md.html": "cordova/notification/notification.html"
+    "cordova_splashscreen_splashscreen.md.html": "cordova/splashscreen/splashscreen.html"
+    "cordova_storage_storage.md.html": "cordova/storage/storage.html"
+    "guide_appdev_privacy_index.md.html": "guide/appdev/privacy/index.html"
+    "guide_appdev_whitelist_index.md.html": "guide/appdev/whitelist/index.html"
+    "guide_cli_index.md.html": "guide/cli/index.html"
+    "guide_cli_template.md.html": "guide/cli/template.html"
+    "guide_hybrid_plugins_index.md.html": "guide/hybrid/plugins/index.html"
+    "guide_hybrid_webviews_index.md.html": "guide/hybrid/webviews/index.html"
+    "guide_overview_index.md.html": "guide/overview/index.html"
+    "guide_platforms_android_config.md.html": "guide/platforms/android/config.html"
+    "guide_platforms_android_index.md.html": "guide/platforms/android/index.html"
+    "guide_platforms_android_plugin.md.html": "guide/platforms/android/plugin.html"
+    "guide_platforms_android_tools.md.html": "guide/platforms/android/tools.html"
+    "guide_platforms_android_upgrading.md.html": "guide/platforms/android/upgrading.html"
+    "guide_platforms_android_webview.md.html": "guide/platforms/android/webview.html"
+    "guide_platforms_blackberry10_config.md.html": "guide/platforms/blackberry10/config.html"
+    "guide_platforms_blackberry10_index.md.html": "guide/platforms/blackberry10/index.html"
+    "guide_platforms_blackberry10_plugin.md.html": "guide/platforms/blackberry10/plugin.html"
+    "guide_platforms_blackberry10_tools.md.html": "guide/platforms/blackberry10/tools.html"
+    "guide_platforms_blackberry10_upgrading.md.html": "guide/platforms/blackberry10/upgrading.html"
+    "guide_platforms_blackberry_config.md.html": "guide/platforms/blackberry/config.html"
+    "guide_platforms_blackberry_index.md.html": "guide/platforms/blackberry/index.html"
+    "guide_platforms_blackberry_plugin.md.html": "guide/platforms/blackberry/plugin.html"
+    "guide_platforms_blackberry_tools.md.html": "guide/platforms/blackberry/tools.html"
+    "guide_platforms_blackberry_upgrading.md.html": "guide/platforms/blackberry/upgrading.html"
+    "guide_platforms_firefoxos_config.md.html": "guide/platforms/firefoxos/config.html"
+    "guide_platforms_index.md.html": "guide/platforms/index.html"
+    "guide_platforms_ios_config.md.html": "guide/platforms/ios/config.html"
+    "guide_platforms_ios_index.md.html": "guide/platforms/ios/index.html"
+    "guide_platforms_ios_plugin.md.html": "guide/platforms/ios/plugin.html"
+    "guide_platforms_ios_tools.md.html": "guide/platforms/ios/tools.html"
+    "guide_platforms_ios_upgrading.md.html": "guide/platforms/ios/upgrading.html"
+    "guide_platforms_ios_webview.md.html": "guide/platforms/ios/webview.html"
+    "guide_platforms_tizen_index.md.html": "guide/platforms/tizen/index.html"
+    "guide_platforms_win8_index.md.html": "guide/platforms/win8/index.html"
+    "guide_platforms_win8_tools.md.html": "guide/platforms/win8/tools.html"
+    "guide_platforms_win8_upgrading.md.html": "guide/platforms/win8/upgrading.html"
+    "guide_platforms_wp7_index.md.html": "guide/platforms/wp7/index.html"
+    "guide_platforms_wp8_index.md.html": "guide/platforms/wp8/index.html"
+    "guide_platforms_wp8_plugin.md.html": "guide/platforms/wp8/plugin.html"
+    "guide_platforms_wp8_tools.md.html": "guide/platforms/wp8/tools.html"
+    "guide_platforms_wp8_upgrading.md.html": "guide/platforms/wp8/upgrading.html"
+    "plugin_ref_plugman.md.html": "plugin_ref/plugman.html"
+    "plugin_ref_spec.md.html": "plugin_ref/spec.html"
+    "cordova_plugins_pluginapis.md.html": "cordova/plugins/pluginapis.html"
+    "cordova_storage_database_database.md.html": "cordova/storage/database/database.html"
+    "cordova_storage_localstorage_localstorage.md.html": "cordova/storage/localstorage/localstorage.html"
+    "cordova_storage_parameters_display_name.md.html": "cordova/storage/parameters/display_name.html"
+    "cordova_storage_parameters_name.md.html": "cordova/storage/parameters/name.html"
+    "cordova_storage_parameters_size.md.html": "cordova/storage/parameters/size.html"
+    "cordova_storage_parameters_version.md.html": "cordova/storage/parameters/version.html"
+    "cordova_storage_sqlerror_sqlerror.md.html": "cordova/storage/sqlerror/sqlerror.html"
+    "cordova_storage_sqlresultset_sqlresultset.md.html": "cordova/storage/sqlresultset/sqlresultset.html"
+    "cordova_storage_sqlresultsetrowlist_sqlresultsetrowlist.md.html": "cordova/storage/sqlresultsetrowlist/sqlresultsetrowlist.html"
+    "cordova_storage_sqltransaction_sqltransaction.md.html": "cordova/storage/sqltransaction/sqltransaction.html"
+    "cordova_storage_storage.opendatabase.md.html": "cordova/storage/storage.opendatabase.html"
+    "guide_platforms_amazonfireos_config.md.html": "guide/platforms/amazonfireos/config.html"
+    "guide_platforms_amazonfireos_index.md.html": "guide/platforms/amazonfireos/index.html"
+    "guide_platforms_amazonfireos_plugin.md.html": "guide/platforms/amazonfireos/plugin.html"
+    "guide_platforms_amazonfireos_webview.md.html": "guide/platforms/amazonfireos/webview.html"
+    "guide_platforms_ubuntu_index.md.html": "guide/platforms/ubuntu/index.html"
+    "guide_support_index.md.html": "guide/support/index.html"
+    "guide_appdev_hooks_index.md.html": "guide/appdev/hooks/index.html"
+    "guide_appdev_security_index.md.html": "guide/appdev/security/index.html"
+    "guide_next_index.md.html": "guide/next/index.html"
+    "guide_platforms_android_upgrade.md.html": "guide/platforms/android/upgrade.html"
+    "guide_platforms_blackberry10_upgrade.md.html": "guide/platforms/blackberry10/upgrade.html"
+    "guide_platforms_blackberry_upgrade.md.html": "guide/platforms/blackberry/upgrade.html"
+    "guide_platforms_firefoxos_index.md.html": "guide/platforms/firefoxos/index.html"
+    "guide_platforms_ios_upgrade.md.html": "guide/platforms/ios/upgrade.html"
+    "guide_platforms_win8_packaging.md.html": "guide/platforms/win8/packaging.html"
+    "guide_platforms_win8_plugin.md.html": "guide/platforms/win8/plugin.html"
+    "guide_platforms_win8_upgrade.md.html": "guide/platforms/win8/upgrade.html"
+    "guide_platforms_win8_win10-support.md.html": "guide/platforms/win8/win10-support.html"
+    "guide_platforms_wp8_parallels.md.html": "guide/platforms/wp8/parallels.html"
+    "guide_platforms_wp8_upgrade.md.html": "guide/platforms/wp8/upgrade.html"
+    "guide_platforms_wp8_vmware.md.html": "guide/platforms/wp8/vmware.html"
+    "guide_platforms_wp8_webview.md.html": "guide/platforms/wp8/webview.html"
+    "platform_plugin_versioning_ref_index.md.html": "platform_plugin_versioning_ref/index.html"
+    "guide_getting-started_android_index.md.html": "guide/getting-started/android/index.html"
+    "guide_getting-started_blackberry_index.md.html": "guide/getting-started/blackberry/index.html"
+    "guide_getting-started_index.md.html": "guide/getting-started/index.html"
+    "guide_getting-started_ios_index.md.html": "guide/getting-started/ios/index.html"
+    "guide_getting-started_symbian_index.md.html": "guide/getting-started/symbian/index.html"
+    "guide_getting-started_webos_index.md.html": "guide/getting-started/webos/index.html"
+    "guide_getting-started_windows-phone_index.md.html": "guide/getting-started/windows-phone/index.html"
+    "guide_upgrading_blackberry_index.md.html": "guide/upgrading/blackberry/index.html"
+    "guide_upgrading_webos_index.md.html": "guide/upgrading/webos/index.html"
+    "phonegap_accelerometer_accelerometer.md.html": "phonegap/accelerometer/accelerometer.html"
+    "phonegap_camera_camera.md.html": "phonegap/camera/camera.html"
+    "phonegap_compass_compass.md.html": "phonegap/compass/compass.html"
+    "phonegap_connection_connection.md.html": "phonegap/connection/connection.html"
+    "phonegap_contacts_contacts.md.html": "phonegap/contacts/contacts.html"
+    "phonegap_device_device.md.html": "phonegap/device/device.html"
+    "phonegap_events_events.md.html": "phonegap/events/events.html"
+    "phonegap_file_file.md.html": "phonegap/file/file.html"
+    "phonegap_geolocation_geolocation.md.html": "phonegap/geolocation/geolocation.html"
+    "phonegap_media_capture_capture.md.html": "phonegap/media/capture/capture.html"
+    "phonegap_media_media.md.html": "phonegap/media/media.html"
+    "phonegap_notification_notification.md.html": "phonegap/notification/notification.html"
+    "phonegap_storage_storage.md.html": "phonegap/storage/storage.html"
+    "guide_getting-started_bada_index.md.html": "guide/getting-started/bada/index.html"
+    "guide_upgrading_android_index.md.html": "guide/upgrading/android/index.html"
+    "guide_upgrading_bada_index.md.html": "guide/upgrading/bada/index.html"
+    "guide_upgrading_index.md.html": "guide/upgrading/index.html"
+    "guide_upgrading_ios_index.md.html": "guide/upgrading/ios/index.html"
+    "guide_upgrading_symbian_index.md.html": "guide/upgrading/symbian/index.html"
+    "guide_upgrading_windows-phone_index.md.html": "guide/upgrading/windows-phone/index.html"
+    "guide_whitelist_index.md.html": "guide/whitelist/index.html"
+    "guide_command-line_index.md.html": "guide/command-line/index.html"
+    "guide_cordova-webview_android.md.html": "guide/cordova-webview/android.html"
+    "guide_cordova-webview_index.md.html": "guide/cordova-webview/index.html"
+    "guide_cordova-webview_ios.md.html": "guide/cordova-webview/ios.html"
+    "guide_plugin-development_android_index.md.html": "guide/plugin-development/android/index.html"
+    "guide_plugin-development_bada_index.md.html": "guide/plugin-development/bada/index.html"
+    "guide_plugin-development_blackberry_index.md.html": "guide/plugin-development/blackberry/index.html"
+    "guide_plugin-development_index.md.html": "guide/plugin-development/index.html"
+    "guide_plugin-development_ios_index.md.html": "guide/plugin-development/ios/index.html"
+    "guide_plugin-development_webos_index.md.html": "guide/plugin-development/webos/index.html"
+    "guide_plugin-development_windows-phone_index.md.html": "guide/plugin-development/windows-phone/index.html"
+    "guide_getting-started_tizen_index.md.html": "guide/getting-started/tizen/index.html"
+    "guide_plugin-development_tizen_index.md.html": "guide/plugin-development/tizen/index.html"
+    "guide_upgrading_tizen_index.md.html": "guide/upgrading/tizen/index.html"
+    "guide_getting-started_windows-8_index.md.html": "guide/getting-started/windows-8/index.html"
+    "guide_project-settings_index.md.html": "guide/project-settings/index.html"
+    "guide_project-settings_ios_index.md.html": "guide/project-settings/ios/index.html"
+    "guide_getting-started_windows-phone-7_index.md.html": "guide/getting-started/windows-phone-7/index.html"
+    "guide_getting-started_windows-phone-8_index.md.html": "guide/getting-started/windows-phone-8/index.html"
+    "guide_project-settings_android_index.md.html": "guide/project-settings/android/index.html"
+    "guide_project-settings_bada_index.md.html": "guide/project-settings/bada/index.html"
+    "guide_project-settings_blackberry_index.md.html": "guide/project-settings/blackberry/index.html"
+    "guide_project-settings_firefoxos_index.md.html": "guide/project-settings/firefoxos/index.html"
+    "guide_project-settings_webos_index.md.html": "guide/project-settings/webos/index.html"
+    "guide_project-settings_windows8_index.md.html": "guide/project-settings/windows8/index.html"
+    "guide_project-settings_wp7_index.md.html": "guide/project-settings/wp7/index.html"
+    "guide_project-settings_wp8_index.md.html": "guide/project-settings/wp8/index.html"
+    "guide_getting-started_blackberry10_index.md.html": "guide/getting-started/blackberry10/index.html"
+    "guide_plugin-development_blackberry10_index.md.html": "guide/plugin-development/blackberry10/index.html"
+    "guide_privacy_index.md.html": "guide/privacy/index.html"
+    "guide_upgrading_windows-8_index.md.html": "guide/upgrading/windows-8/index.html"

+ 91 - 0
www/_data/showcase-apps.yml

@@ -0,0 +1,91 @@
+# -   name: Example Showcase App
+#     image: cordova.png
+#     url: http://example.com
+#     description: >
+#         A description that can
+#         span multiple lines.
+
+-   name: Pacifica - Stress and Anxiety Relief
+    image: Pacifica.png
+    url: https://thinkpacifica.com
+    description: >
+        Daily tools for stress, anxiety and depression based on Cognitive
+        Behavioral Therapy and Mindfulness.
+
+-   name: Sworkit - Personal Workout Trainer
+    image: Sworkit.png
+    url: http://sworkit.com
+    description: >
+        Sworkit delivers on-demand, personalized video exercises to millions
+        of users to help them stay fit.
+
+-   name: FanReact - Sports Fans Social App
+    image: FanReact.png
+    url: http://fanreact.com/
+    description: >
+        Sports only social app for fans to share their experiences.
+
+-   name: JustWatch - Streaming Search Engine
+    image: JustWatch.png
+    url: https://www.justwatch.com/
+    description: >
+        JustWatch is the easiest way to see if your favorite movies or TV
+        shows are available on any streaming provider.
+
+-   name: Gudog - Dog Boarding
+    image: Gudog.png
+    url: https://gudog.co.uk/mobile
+    description: >
+        Gudog brings together dog owners and trustworthy dog sitters who
+        offer Home Dog Boarding, Dog Walking and Doggy Daycare.
+
+-   name: Series Seven
+    image: SeriesSeven.png
+    url: http://www.idangero.us/series7/
+    description: >
+        Series Seven allows you to track your favorite TV shows and easily
+        get all information about TV show. You'll never miss new episode of
+        your favorite show with Series Seven.
+
+-   name: Keepe - Handyman on Demand
+    image: Keepe.png
+    url: http://www.keepe.com/?utm_source=cordova
+    description: >
+        Get a Handyman or Plumber to your House in 1 Hour. Keepe delivers the
+        right contractor at your doorstep.
+
+-   name: Clever Baby - Baby Log & Tracker
+    image: CleverBaby.png
+    url: http://www.mycleverbaby.com/
+    description: >
+        Clever Baby is the easiest way to track your baby's well-being, growth
+        and development.
+
+-   name: Buildr
+    image: Buildr.png
+    url: https://itunes.apple.com/us/app/buildr./id987621361?mt=8
+    description: >
+        You are using PhoneGap Build to develop your Apps? Then Buildr will
+        be your new best friend. Rebuild, pull and monitor your apps, unlock
+        and change signing keys.
+
+-   name: Graded
+    image: Graded.png
+    url: http://www.graded.us
+    description: >
+        The easiest and prettiest way to check your grades from Home Access Center (HAC)
+
+-   name: One Verse BIBLE
+    image: OneVerse.png
+    url: http://www.onever.se
+    description: >
+        One Verse BIBLE is a beautifully crafted Bible app to focus more on
+        each Bible Verse and to compare easily with various Bible Versions
+
+-   name: SparkChess
+    image: SparkChess.png
+    url: https://www.sparkchess.com
+    description: > 
+        Finally, a game of chess everyone can enjoy. Play chess against the computer or 
+        challenge your friends in online multiplayer. SparkChess is available on the 
+        App Store, on Google Play and online. 

+ 76 - 0
www/_data/toc/en_6-x-src.yml

@@ -0,0 +1,76 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/cli/template.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 76 - 0
www/_data/toc/en_7-x-src.yml

@@ -0,0 +1,76 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/cli/template.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 65 - 0
www/_data/toc/en_8-x-src.yml

@@ -0,0 +1,65 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/cli/template.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/windows/index.html
+                - url: guide/platforms/osx/index.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/windows/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-screen-orientation/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-whitelist/index.html

+ 66 - 0
www/_data/toc/en_9-x-src.yml

@@ -0,0 +1,66 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/cli/template.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/windows/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/electron/index.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/windows/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-screen-orientation/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-whitelist/index.html

+ 66 - 0
www/_data/toc/en_dev-src.yml

@@ -0,0 +1,66 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/cli/template.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/windows/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/electron/index.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/windows/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-screen-orientation/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-whitelist/index.html

+ 18 - 0
www/_data/toc/es_5-4-0-src.yml

@@ -0,0 +1,18 @@
+- url: ''
+- url: guide/overview/index.html
+- url: guide/support/index.html
+- url: guide/cli/index.html
+- url: guide/platforms/index.html
+- url: plugin_ref/plugman.html
+- url: config_ref/index.html
+- url: guide/hybrid/webviews/index.html
+- url: guide/hybrid/plugins/index.html
+- url: plugin_ref/spec.html
+- url: guide/appdev/privacy/index.html
+- url: guide/appdev/security/index.html
+- url: platform_plugin_versioning_ref/index.html
+- url: guide/appdev/whitelist/index.html
+- url: cordova/storage/storage.html
+- url: guide/appdev/hooks/index.html
+- url: cordova/events/events.html
+- url: cordova/plugins/pluginapis.html

+ 75 - 0
www/_data/toc/es_6-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/es_7-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/es_8-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/es_9-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/es_dev-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-cn_6-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-cn_7-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-cn_8-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-cn_9-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-cn_dev-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-tw_6-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-tw_7-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-tw_8-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-tw_9-x-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 75 - 0
www/_data/toc/zh-tw_dev-src.yml

@@ -0,0 +1,75 @@
+-
+    name: Introduction
+    children:
+        - url: guide/overview/index.html
+-
+    name: Create apps
+    children:
+        - url: guide/cli/index.html
+        - url: guide/support/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/index.html
+                - url: guide/platforms/blackberry10/home.html
+                - url: guide/platforms/ios/index.html
+                - url: guide/platforms/osx/index.html
+                - url: guide/platforms/ubuntu/index.html
+                - url: guide/platforms/win8/index.html
+                - url: guide/platforms/wp8/home.html
+        - url: platform_plugin_versioning_ref/index.html
+        - url: config_ref/images.html
+        - url: cordova/storage/storage.html
+        - url: guide/appdev/privacy/index.html
+        - url: guide/appdev/security/index.html
+        - url: guide/appdev/whitelist/index.html
+-
+    name: Create plugins
+    children:
+        - url: guide/hybrid/plugins/index.html
+        -
+            name: Develop for platforms
+            children:
+                - url: guide/platforms/android/plugin.html
+                - url: guide/platforms/blackberry10/plugin.html
+                - url: guide/platforms/ios/plugin.html
+                - url: guide/platforms/win8/plugin.html
+                - url: guide/platforms/wp8/plugin.html
+        - url: plugin_ref/plugman.html
+-
+    name: Advanced Topics
+    children:
+        - url: guide/hybrid/webviews/index.html
+        - url: guide/next/index.html
+-
+    name: Reference
+    children:
+        - url: config_ref/index.html
+        - url: cordova/events/events.html
+        - url: reference/cordova-cli/index.html
+        - url: guide/appdev/hooks/index.html
+        - url: plugin_ref/spec.html
+        -
+            name: Plugin APIs
+            children:
+                - url: reference/cordova-plugin-battery-status/index.html
+                - url: reference/cordova-plugin-camera/index.html
+                - url: reference/cordova-plugin-console/index.html
+                - url: reference/cordova-plugin-contacts/index.html
+                - url: reference/cordova-plugin-device/index.html
+                - url: reference/cordova-plugin-device-motion/index.html
+                - url: reference/cordova-plugin-device-orientation/index.html
+                - url: reference/cordova-plugin-dialogs/index.html
+                - url: reference/cordova-plugin-file/index.html
+                - url: reference/cordova-plugin-file-transfer/index.html
+                - url: reference/cordova-plugin-geolocation/index.html
+                - url: reference/cordova-plugin-globalization/index.html
+                - url: reference/cordova-plugin-inappbrowser/index.html
+                - url: reference/cordova-plugin-media/index.html
+                - url: reference/cordova-plugin-media-capture/index.html
+                - url: reference/cordova-plugin-network-information/index.html
+                - url: reference/cordova-plugin-splashscreen/index.html
+                - url: reference/cordova-plugin-vibration/index.html
+                - url: reference/cordova-plugin-statusbar/index.html
+                - url: reference/cordova-plugin-whitelist/index.html
+                - url: reference/cordova-plugin-legacy-whitelist/index.html

+ 101 - 0
www/_data/tools.yml

@@ -0,0 +1,101 @@
+# -   name: Example Tool
+#     image: cordova.png
+#     url: http://example.com
+#     description: >
+#         A description that can
+#         span multiple lines.
+
+-   name: Adobe PhoneGap
+    image: phonegap.svg
+    url: http://phonegap.com/
+    description: >
+        PhoneGap is the original and most popular distribution of Apache
+        Cordova. Turn your HTML, CSS and JavaScript into an app on your
+        device in minutes using our simple <a href="http://docs.phonegap.com/getting-started/1-install-phonegap/desktop/">
+        desktop</a> and <a href="http://docs.phonegap.com/references/developer-app/">
+        developer</a> apps.
+
+-   name: Ionic Framework
+    image: ionic.png
+    url: http://ionicframework.com/
+    description: >
+        Ionic is a front-end SDK for building cross-platform mobile apps.
+        Built on top of Angular, Ionic also provides a platform for
+        integrating services like push notifications and analytics.
+
+-   name: Monaca
+    image: monaca.png
+    url: https://monaca.io/
+    description: >
+        Comprehensive cloud-powered and framework-agnostic set of tools
+        Monaca supports both online and offline development, debugging with
+        live-reload feature and cloud build experience.
+
+-   name: Onsen UI
+    image: onsen.png
+    url: http://onsen.io/
+    description: >
+        Custom Elements-based HTML5 framework offers a large selection of
+        components and responsive layout support. Onsen UI lets you create
+        professionally designed multiplatform apps without acquiring additional
+        skillset.
+
+-   name: Visual Studio
+    image: visual_studio_white.png
+    url: https://www.visualstudio.com/vs/features/cordova/
+    description: >
+        Popular IDE for building cross-platform apps for Android, iOS, and
+        Windows. Complete with advanced build and debugging support.
+
+-   name: App Builder
+    image: appbuilder.png
+    url: http://www.getappbuilder.com/
+    description: >
+        App Builder is a complete IDE for Microsoft Windows which allows to
+        create HTML5 and native apps without programming knowledge. Offers
+        dozens of controls and actions ready to be used in your apps and
+        lot of app samples to learn it.
+
+-   name: Framework7
+    image: framework7.png
+    url: http://www.idangero.us/framework7/
+    description: >
+        Framework7 is a free and open source mobile HTML framework for
+        developing hybrid mobile apps or web apps with iOS & Android
+        native look and feel.
+
+-   name: Evothings Studio
+    image: evothings.png
+    url: https://evothings.com/
+    description: >
+        Evothings Studio provides Cordova developers with a rapid development
+        workflow, tutorials and example apps for the Internet of Things.
+        Support for Bluetooth Low Energy (BLE) and other IoT related
+        technologies.
+
+-   name: NSB/AppStudio
+    image: appstudio.png
+    url: https://www.nsbasic.com/
+    description: >
+        NSB/AppStudio is an IDE for webapps/native apps. One step install
+        includes complete PhoneGap integration, plus Bootstrap, jQuery Mobile
+        and jqWidgets. Drag and Drop Designer. Easy programming in JavaScript
+        or BASIC. Windows and MacOS.
+
+-   name: Mobiscroll
+    image: mobiscroll.png
+    url: https://mobiscroll.com
+    description: >
+        Mobiscroll is a collection of cross platform UI
+        controls for delivering polished iOS, Android & Windows Phone apps.
+        Framework agnostic, use it with plain Javascript,
+        jQuery, Angular, React or Knockout.
+
+-   name: Instabug
+    image: instabug.png
+    url: https://instabug.com/platforms/cordova
+    description: >
+        Instabug provides Cordova developers with a bug reporting and in-app
+        feedback solution. With a one minute install guide,
+         it enables users to seamlessly report bugs while automatically attaching
+        details such as network logs, repro-steps, etc.

+ 21 - 0
www/_includes/algolia.html

@@ -0,0 +1,21 @@
+{% if page.version %}
+    {% assign version = page.version %}
+{% else %}
+    {% assign version = site.latest_docs_version %}
+{% endif %}
+
+{% if page.language %}
+    {% assign language = page.language %}
+{% else %}
+    {% assign language = site.language %}
+{% endif %}
+
+<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script>
+<script type="text/javascript">
+    docsearch({
+        apiKey: '{{ site.algolia_api_key }}',
+        indexName: 'cordova',
+        inputSelector: '#header-search-field',
+        algoliaOptions: { 'facetFilters': ["version:  {{ version }}", "language: {{ language }}"] }
+    });
+</script>

+ 8 - 0
www/_includes/analytics.html

@@ -0,0 +1,8 @@
+<script>
+    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+    ga('create', '{{ page.analytics_id }}', 'auto');
+    ga('send', 'pageview');
+</script>

+ 12 - 0
www/_includes/comment_count.html

@@ -0,0 +1,12 @@
+<script type="text/javascript">
+    /* * * CONFIGURATION VARIABLES * * */
+    var disqus_shortname = 'cordovablogs';
+
+    /* * * DON'T EDIT BELOW THIS LINE * * */
+    (function () {
+        var s = document.createElement('script'); s.async = true;
+        s.type = 'text/javascript';
+        s.src = '//' + disqus_shortname + '.disqus.com/count.js';
+        (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+    }());
+</script>

+ 13 - 0
www/_includes/disqus.html

@@ -0,0 +1,13 @@
+<div id="disqus_thread"></div>
+<script type="text/javascript">
+    /* * * CONFIGURATION VARIABLES * * */
+    var disqus_shortname = 'cordovablogs';
+
+    /* * * DON'T EDIT BELOW THIS LINE * * */
+    (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+</script>
+<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>

+ 67 - 0
www/_includes/footer_contents.html

@@ -0,0 +1,67 @@
+<div class="row">
+    <div class="col-sm-9">
+        <h1>More Resources</h1>
+        <div class="row">
+            <div class="col-sm-4">
+                <h2>General</h2>
+                <ul class="nav">
+                    <li>
+                        <a target="_blank" href="https://projects.apache.org/project.html?cordova">Apache Project Page</a>
+                    </li>
+                    <li>
+                        <a href="http://www.apache.org/dyn/closer.cgi/cordova">Source Distribution</a>
+                    </li>
+                    <li>
+                        <a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0">License</a>
+                    </li>
+                    <li>
+                        <a href="{{ site.baseurl }}/artwork">Artwork</a>
+                    </li>
+                </ul>
+            </div>
+            <div class="col-sm-4">
+                <h2>Development</h2>
+                <ul class="nav">
+                    <li><a target="_blank" href="https://github.com/apache?utf8=%E2%9C%93&amp;q=cordova-">Source Code</a></li>
+                    <li><a target="_blank" href="https://issues.apache.org/jira/browse/CB/">Issue Tracker</a></li>
+                    <li><a target="_blank" href="http://stackoverflow.com/questions/tagged/cordova">Stack Overflow</a></li>
+                    <li><a href="{{ site.baseurl }}/contact">Mailing List</a></li>
+                    <li><a href="{{ site.baseurl }}/contribute/nightly_builds.html">Nightly builds</a></li>
+                </ul>
+            </div>
+            <div class="col-sm-4">
+                <h2>Apache Software Foundation</h2>
+                <ul class="nav">
+                    <li>
+                        <a target="_blank" href="http://www.apache.org/">About ASF</a>
+                    </li>
+                    <li>
+                        <a target="_blank" href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a>
+                    </li>
+                    <li>
+                        <a target="_blank" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
+                    </li>
+                    <li>
+                        <a target="_blank" href="http://www.apache.org/security/">Security</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </div>
+    <div class="col-sm-3">
+        <h1>Contribute</h1>
+        <p style="padding-top:20px"><strong>Help Cordova move forward!</strong></p>
+        <p>Report bugs, improve the docs, or contribute to the code.</p>
+        <a href="{{ site.baseurl }}/contribute" class="btn btn-lg btn-primary">
+            Learn More
+        </a>
+        <p style="padding-top:20px"> <a href="https://twitter.com/apachecordova" class="twitter-follow-button" data-show-count="false">Follow @apachecordova</a></p>
+        <script async defer src="https://slack-cordova-io.herokuapp.com/slackin.js"></script>
+    </div>
+</div>
+<p class="copyright_text">
+    Copyright &copy; 2012, 2013, 2015 The Apache Software Foundation, Licensed under the <a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
+    Apache and the Apache feather logos are <a target="_blank" href="http://www.apache.org/foundation/marks/list/">trademarks</a> of The Apache Software Foundation.
+    <br/>
+    "Raleway" font used under license. For details see the <a href="{{ site.baseurl }}/attributions/">attributions page</a>.
+</p>

+ 6 - 0
www/_includes/footer_docs.html

@@ -0,0 +1,6 @@
+<div class="blue-divider"></div>
+<footer>
+    <div class="container-fluid">
+        {% include footer_contents.html %}
+    </div>
+</footer>

+ 6 - 0
www/_includes/footer_site.html

@@ -0,0 +1,6 @@
+<div class="blue-divider"></div>
+<footer>
+    <div class="container">
+        {% include footer_contents.html %}
+    </div>
+</footer>

+ 39 - 0
www/_includes/generated_docs_index.html

@@ -0,0 +1,39 @@
+{% assign toc_dir = site.data.toc %}
+{% assign tocfile = toc_dir.[page.tocfile] %}
+
+<div class="home">
+    {% for entry in tocfile %}
+        <h1>{{ entry.name }}</h1>
+        <ul>
+            {% for child in entry.children %}
+
+            {% comment %}
+            skip sub-sections; they'll get their own sections below
+            {% endcomment %}
+            {% if child.children %}{% continue %}{% endif %}
+
+            <li>
+                <h2><a href="{{ child.url }}">{{ child.name }}</a></h2>
+                {% if child.description %}<span class="summary">{{ child.description }}</span>{% endif %}
+            </li>
+            {% endfor %}
+        </ul>
+
+        {% comment %}
+        add sections for sub-sections
+        {% endcomment %}
+        {% for child in entry.children %}
+            {% if child.children %}
+                <h2>{{ child.name }}</h2>
+                <ul>
+                {% for grandchild in child.children %}
+                <li>
+                    <h2><a href="{{ grandchild.url }}">{{ grandchild.name }}</a></h2>
+                    {% if grandchild.description %}<span class="summary">{{ grandchild.description }}</span>{% endif %}
+                </li>
+                {% endfor %}
+                </ul>
+            {% endif %}
+        {% endfor %}
+    {% endfor %}
+</div>

+ 63 - 0
www/_includes/head.html

@@ -0,0 +1,63 @@
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <meta name="format-detection" content="telephone=no">
+    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
+    <meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else if page.description %}{{ page.description }} {% else %}{{ site.description }}{% endif %}">
+
+    <title>
+        {% if page.title %}
+            {% if page.title_suffix %}
+                {{ page.title }} - {{ page.title_suffix }}
+            {% else %}
+                {{ page.title }} - {{ site.title_suffix }}
+            {% endif %}
+        {% else %}
+            {{ site.title }}
+        {% endif %}
+    </title>
+
+    <link rel="SHORTCUT ICON" href="{{ site.baseurl }}/favicon.ico"/>
+
+    {% capture canonical_link %}{{ site.url }}{{ site.baseurl }}{{ page.url | replace:'index.html','' }}{% endcapture %}
+
+    {% comment %}
+    Canonical link for docs pages should point to the latest version of the page
+    {% endcomment %}
+    {% if page.version %}
+        {% capture latest_url %}{{ page.url | replace_first: page.version, 'latest' }}{% endcapture %}
+
+        {% if site.data.all-pages contains latest_url %}
+            {% capture canonical_link %}{{ canonical_link | replace_first: page.version, 'latest' }}{% endcapture %}
+        {% endif %}
+    {% endif %}
+
+    <link rel="canonical" href="{{ canonical_link }}">
+
+    <!-- CSS -->
+    <link rel="stylesheet" type="text/css" href="{{ site.baseurl }}/static/css/main.css">
+    <link rel="stylesheet" type="text/css" href="{{ site.baseurl }}/static/css/lib/syntax.css">
+    <!-- Algolia Search CSS -->
+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css" />
+
+    <!-- Fonts -->
+    <!-- For attribution information, see www/attributions.html -->
+    <link href='https://fonts.googleapis.com/css?family=Raleway:700,400,300,700italic,400italic,300italic' rel='stylesheet' type='text/css'>
+
+    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
+    <!--[if lt IE 9]>
+        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+    <![endif]-->
+    <script type="text/javascript">
+        var disqus_developer = 1; // this would set it to developer mode
+    </script>
+
+    <!-- JS -->
+    <script defer type="text/javascript" src="{{ site.baseurl }}/static/js/lib/jquery-2.1.1.min.js"></script>
+    <script defer type="text/javascript" src="{{ site.baseurl }}/static/js/lib/bootstrap.min.js"></script>
+    <script defer type="text/javascript" src="{{ site.baseurl }}/static/js/lib/ZeroClipboard.js"></script>
+
+    {% include analytics.html %}
+</head>

+ 50 - 0
www/_includes/header.html

@@ -0,0 +1,50 @@
+<header>
+    <a class="scroll-point pt-top" name="top"></a>
+    <nav class="navbar navbar-inverse navbar-fixed-top">
+        <div class="container-fluid">
+            <div class="navbar-header">
+                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
+                    <span class="sr-only">Toggle navigation</span>
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                    <span class="icon-bar"></span>
+                </button>
+                <a class="navbar-brand" href="{{ site.baseurl }}/"><img id="logo_top" src="{{ site.baseurl }}/static/img/cordova-logo-newbrand.svg"/></a>
+            </div>
+            <div id="navbar" class="navbar-collapse collapse">
+                <div class="nav_bar_center">
+                    <ul class="nav navbar-nav">
+                        <li {% if page.docs_tab %}class="active"{% endif %}>
+                            <a href="{{ site.baseurl }}/docs/en/{{ site.default_linked_docs_version }}/">Documentation</a>
+                        </li>
+                        <li {% if page.plugins_tab %}class="active"{% endif %}>
+                            <a href="{{ site.baseurl }}/plugins">Plugins</a>
+                        </li>
+                        <li {% if page.blog_tab %}class="active"{% endif %}>
+                            <a href="{{ site.baseurl }}/blog" id="blog_button">Blog<span class="badge" id="new_blog_count"></span></a>
+                        </li>
+                        <li {% if page.contribute_tab %}class="active"{% endif %}>
+                            <a href="{{ site.baseurl }}/contribute">Contribute</a>
+                        </li>
+                        <li>
+                            <a href="{{ site.baseurl }}/#getstarted">Get Started</a>
+                        </li>
+                        <li>
+                            <form class="navbar-form navbar-right" id="header-search-form" role="search">
+                                <div class="input-group">
+                                    {% if page.version %}
+                                        {% assign version = page.version %}
+                                    {% else %}
+                                        {% assign version = site.latest_docs_version %}
+                                    {% endif %}
+                                    <input id="header-search-field" type="text" placeholder="Search '{{ version }}' docs..." class="form-control hidden-xs" autocomplete="off">
+                                </div>
+                            </form>
+                        </li>
+                    </ul>
+                </div>
+            </div><!--/.navbar-collapse -->
+        </div>
+    </nav>
+    <div id="_fixed_navbar_spacer" style="padding-top:50px"></div>
+</header>

+ 5 - 0
www/_includes/sitemap_entry.html

@@ -0,0 +1,5 @@
+<url>
+    <loc>{{ site.url }}{{ include.url }}</loc>{% if include.change_frequency %}
+    <changefreq>{{ include.change_frequency }}</changefreq>{% endif %}{% if include.priority %}
+    <priority>{{ include.priority }}</priority>{% endif %}
+</url>

+ 12 - 0
www/_includes/toc_recursive_dropdown.html

@@ -0,0 +1,12 @@
+{% for entry in include.entries %}
+{% if entry.url != null %}
+<li>
+    <a class="{% if include.my_entry == entry.url %}this-page{% endif %}" href="{{ include.path_to_root }}{{ entry.url }}">
+        {{ entry.name }}
+    </a>
+</li>
+{% endif %}
+{% if entry.children %}
+{% include toc_recursive_dropdown.html entries=entry.children my_entry=include.my_entry path_to_root=include.path_to_root %}
+{% endif %}
+{% endfor %}

+ 28 - 0
www/_includes/toc_recursive_main.html

@@ -0,0 +1,28 @@
+<ul class="site-toc">
+    {% for entry in include.entries %}
+
+    <li>
+        {% if entry.children %}
+            <span class="toc-section-heading">
+                {{ entry.name }}
+            </span>
+        {% else %}
+            <a class="{% if include.my_entry == entry.url %}this-page{% endif %}" href="{{ include.path_to_root }}{{ entry.url }}">
+                {{ entry.name }}
+            </a>
+            {% if include.my_entry == entry.url %}
+                <span class="entry-highlight"></span>
+            {% endif %}
+        {% endif %}
+
+        {% comment %}
+        Insert page-specific ToC here if this is the entry for this page
+        {% endcomment %}
+        {% if include.my_entry == entry.url %}<div id="page-toc" class="page-toc"></div>{% endif %}
+
+        {% if entry.children %}
+        {% include toc_recursive_main.html entries=entry.children my_entry=include.my_entry path_to_root=include.path_to_root %}
+        {% endif %}
+    </li>
+    {% endfor %}
+</ul>

+ 66 - 0
www/_includes/tools_and_showcase.html

@@ -0,0 +1,66 @@
+<div class="container">
+    <div class="row showcase_section_intro">
+        <div class="col-md-12 text-center">
+            <h1>Cordova Tools</h1>
+            <h2>A diverse ecosystem of command line tools, JavaScript frameworks, and cloud services exist that augment Cordova</h2>
+        </div>
+    </div>
+    <div class="row card_gallery">
+        {% for tool in site.data.tools %}
+        <div class="col-lg-2 col-md-4 col-sm-6 col-xs-12 card">
+            <div class="tool card_inner">
+                <div class="img_container">
+                    <img src="{{ site.baseurl }}/static/img/tools/{{ tool.image }}" class="center-block"/>
+                </div>
+                <p class="card_title">
+                    {% if tool.url %}
+                        <a href="{{ tool.url }}">
+                            {{ tool.name }}
+                        </a>
+                    {% else %}
+                        {{ tool.name }}
+                    {% endif %}
+                </p>
+                <p class="text">
+                    {{ tool.description | strip_html | truncate:255 }}
+                </p>
+            </div>
+        </div>
+        {% endfor %}
+    </div>
+</div>
+
+<div class="container">
+    <div class="row showcase_section_intro">
+        <div class="col-md-12 text-center">
+            <h1>Cordova App Showcase</h1>
+            <h2>See other apps that use Cordova</h2>
+        </div>
+    </div>
+    <div class="row card_gallery">
+        {% for app in site.data.showcase-apps %}
+        <div class="col-lg-2 col-md-4 col-sm-6 col-xs-12 card">
+            <div class="app card_inner">
+                <div class="showcase_app_thumb">
+                    <img src="{{ site.baseurl }}/static/img/showcase-apps/{{ app.image }}" class="center-block"/>
+                </div>
+                <p class="card_title">
+                    {% if app.url %}
+                        <a href="{{ app.url }}">
+                            {{ app.name }}
+                        </a>
+                    {% else %}
+                        {{ app.name }}
+                    {% endif %}
+                </p>
+                <p class="text">{{ app.description | strip_html | truncate:128 }}</p>
+            </div>
+        </div>
+        {% endfor %}
+    </div>
+    <div class="row">
+        <p>
+            &nbsp;
+        </p>
+    </div>
+</div>

+ 20 - 0
www/_includes/twitterFeed.html

@@ -0,0 +1,20 @@
+<a class="twitter-timeline" data-dnt="true" href="https://twitter.com/apachecordova" data-widget-id="629424968011386884">Tweets by @apachecordova</a>
+
+<script>
+window.twttr = (function(d, s, id) {
+    var js, fjs = d.getElementsByTagName(s)[0],
+        t = window.twttr || {};
+    if (d.getElementById(id)) return t;
+    js = d.createElement(s);
+    js.id = id;
+    js.src = "https://platform.twitter.com/widgets.js";
+    fjs.parentNode.insertBefore(js, fjs);
+
+    t._e = [];
+    t.ready = function(f) {
+        t._e.push(f);
+    };
+
+    return t;
+}(document, "script", "twitter-wjs"));
+</script>

+ 14 - 0
www/_layouts/base.html

@@ -0,0 +1,14 @@
+---
+analytics_id: UA-64283057-3
+---
+
+<!DOCTYPE html>
+<html lang="{% if page.language %}{{ page.language }}{% else %}{{ site.language }}{% endif %}">
+{% include head.html %}
+<body>
+    {{ content }}
+    <script defer type="text/javascript" src="{{ site.baseurl }}/static/js/index.js"></script>
+    <script defer type="text/javascript" src="{{ site.baseurl }}/static/js/twitter.js"></script>
+    {% include algolia.html %}
+</body>
+</html>

+ 8 - 0
www/_layouts/blog.html

@@ -0,0 +1,8 @@
+---
+layout: page
+blog_tab: true
+---
+
+<div class="blog">
+    {{ content }}
+</div>

+ 8 - 0
www/_layouts/contribute.html

@@ -0,0 +1,8 @@
+---
+layout: page
+contribute_tab: true
+---
+
+<div class="contribute-help">
+    {{ content }}
+</div>

+ 7 - 0
www/_layouts/cordova.html

@@ -0,0 +1,7 @@
+---
+layout: base
+---
+
+{% include header.html %}
+{{ content }}
+{% include footer_site.html %}

+ 15 - 0
www/_layouts/docs-de.html

@@ -0,0 +1,15 @@
+---
+layout: docs
+outdated_text: "Dies ist nicht die neueste Version der Dokumentation!"
+in_development_text: "This version of the documentation is under development!"
+click_here_text: "Click here for the latest released version."
+toc_text: "Inhaltsverzeichnis"
+latest_text: "Letzte"
+visit_github_text: "Other versions are on GitHub."
+plugin_version_text: "This documentation describes this plugin at version"
+edit_text: "Edit"
+edit_source_text: "Edit Source on GitHub"
+edit_translation_text: "Edit Translation on Crowdin"
+---
+
+{{ content }}

+ 15 - 0
www/_layouts/docs-en.html

@@ -0,0 +1,15 @@
+---
+layout: docs
+outdated_text: "This version of the documentation is outdated!"
+in_development_text: "This version of the documentation is under development!"
+click_here_text: "Click here for the latest released version."
+toc_text: "Table of Contents"
+latest_text: "Latest"
+visit_github_text: "Other versions are on GitHub."
+plugin_version_text: "This documentation describes this plugin at version"
+edit_text: "Edit"
+edit_source_text: "Edit Source on GitHub"
+edit_translation_text: "Edit Translation on Crowdin"
+---
+
+{{ content }}

+ 15 - 0
www/_layouts/docs-es.html

@@ -0,0 +1,15 @@
+---
+layout: docs
+outdated_text: "Esta no es la versión más reciente de la documentación!"
+in_development_text: "This version of the documentation is under development!"
+click_here_text: "Click here for the latest released version."
+toc_text: "Tabla de Contenidos"
+latest_text: "Ultima"
+visit_github_text: "Other versions are on GitHub."
+plugin_version_text: "This documentation describes this plugin at version"
+edit_text: "Edit"
+edit_source_text: "Edit Source on GitHub"
+edit_translation_text: "Edit Translation on Crowdin"
+---
+
+{{ content }}

+ 15 - 0
www/_layouts/docs-fr.html

@@ -0,0 +1,15 @@
+---
+layout: docs
+outdated_text: "Ca n'est past la dernière version de la documentation."
+in_development_text: "Cette version de la documentation est en cours de développement!"
+click_here_text: "Cliquez ici pour voire la dernière version de la documentation."
+toc_text: "Table des Matières"
+latest_text: "Dernière"
+visit_github_text: "L'autres versions sont sur Github."
+plugin_version_text: "Ce document décrit ce plugin à la version"
+edit_text: "Modifier"
+edit_source_text: "Modifier la Source sur GitHub"
+edit_translation_text: "Modifier la Traduction sur Crowdin"
+---
+
+{{ content }}

Some files were not shown because too many files changed in this diff