浏览代码

added initial port of cryogen blog

Harlan Iverson 7 年之前
父节点
当前提交
9d6006b0e5
共有 100 个文件被更改,包括 4155 次插入0 次删除
  1. 1 0
      tinydatacenter.com-v2/.gitignore
  2. 8 0
      tinydatacenter.com-v2/Dockerfile
  3. 8 0
      tinydatacenter.com-v2/Dockerfile.static
  4. 9 0
      tinydatacenter.com-v2/README.md
  5. 12 0
      tinydatacenter.com-v2/app/.gitignore
  6. 16 0
      tinydatacenter.com-v2/app/project.clj
  7. 8 0
      tinydatacenter.com-v2/app/resources/templates/asc/pages/adoc-page.asc
  8. 44 0
      tinydatacenter.com-v2/app/resources/templates/asc/posts/2014-10-10-adoc-post.asc
  9. 32 0
      tinydatacenter.com-v2/app/resources/templates/config.edn
  10. 3 0
      tinydatacenter.com-v2/app/resources/templates/css/example.css
  11. 5 0
      tinydatacenter.com-v2/app/resources/templates/css/sassexample.scss
  12. 二进制
      tinydatacenter.com-v2/app/resources/templates/img/cryogen.png
  13. 8 0
      tinydatacenter.com-v2/app/resources/templates/md/pages/about.md
  14. 38 0
      tinydatacenter.com-v2/app/resources/templates/md/pages/index.md
  15. 12 0
      tinydatacenter.com-v2/app/resources/templates/md/pages/livestream.md
  16. 12 0
      tinydatacenter.com-v2/app/resources/templates/md/pages/maintainable-website.md
  17. 12 0
      tinydatacenter.com-v2/app/resources/templates/md/pages/webserver-net.md
  18. 12 0
      tinydatacenter.com-v2/app/resources/templates/md/pages/webserver.md
  19. 176 0
      tinydatacenter.com-v2/app/resources/templates/md/posts/2016-01-07-docs.md
  20. 162 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/css/screen.css
  21. 40 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/404.html
  22. 20 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/archives.html
  23. 19 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/author.html
  24. 99 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/base.html
  25. 26 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/episode.html
  26. 20 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/home.html
  27. 23 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/page.html
  28. 21 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/post-content.html
  29. 32 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/post.html
  30. 28 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/previews.html
  31. 16 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/tag.html
  32. 15 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/html/tags.html
  33. 1 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue/js/highlight.pack.js
  34. 182 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/css/screen.css
  35. 40 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/404.html
  36. 20 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/archives.html
  37. 19 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/author.html
  38. 96 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/base.html
  39. 20 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/home.html
  40. 23 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/page.html
  41. 21 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/post-content.html
  42. 32 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/post.html
  43. 28 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/previews.html
  44. 16 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/tag.html
  45. 15 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/tags.html
  46. 1 0
      tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/js/highlight.pack.js
  47. 8 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/README.md
  48. 2 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/config.edn
  49. 28 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_buttons.scss
  50. 93 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_layout.scss
  51. 134 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_menu.scss
  52. 209 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_typography.scss
  53. 53 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_variables.scss
  54. 213 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/blog.scss
  55. 1 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/lotus-highlightjs.min.css
  56. 461 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/normalize.css
  57. 56 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/404.html
  58. 20 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/archives.html
  59. 19 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/author.html
  60. 77 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/base.html
  61. 16 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/home.html
  62. 16 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/page.html
  63. 25 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/post-content.html
  64. 28 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/post.html
  65. 12 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/prev-next.html
  66. 29 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/previews.html
  67. 16 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/tag.html
  68. 15 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/tags.html
  69. 0 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/img/black-lotus.svg
  70. 96 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/img/icons.svg
  71. 0 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/img/white-lotus.svg
  72. 1 0
      tinydatacenter.com-v2/app/resources/templates/themes/lotus/js/highlight.pack.js
  73. 50 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/buttons.css
  74. 119 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/menu.css
  75. 77 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/reset.css
  76. 287 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/style.css
  77. 135 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/typography.css
  78. 40 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/404.html
  79. 20 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/archives.html
  80. 19 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/author.html
  81. 87 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/base.html
  82. 20 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/home.html
  83. 20 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/page.html
  84. 23 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/post-content.html
  85. 32 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/post.html
  86. 29 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/previews.html
  87. 16 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/tag.html
  88. 15 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/tags.html
  89. 1 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/js/highlight.pack.js
  90. 26 0
      tinydatacenter.com-v2/app/resources/templates/themes/nucleus/js/scripts.js
  91. 8 0
      tinydatacenter.com-v2/app/src/cryogen/core.clj
  92. 32 0
      tinydatacenter.com-v2/app/src/cryogen/server.clj
  93. 3 0
      tinydatacenter.com-v2/build-static.sh
  94. 3 0
      tinydatacenter.com-v2/build.sh
  95. 1 0
      tinydatacenter.com-v2/md-pages
  96. 1 0
      tinydatacenter.com-v2/md-posts
  97. 3 0
      tinydatacenter.com-v2/start-static.sh
  98. 3 0
      tinydatacenter.com-v2/start.sh
  99. 3 0
      tinydatacenter.com-v2/stop-static.sh
  100. 3 0
      tinydatacenter.com-v2/stop.sh

+ 1 - 0
tinydatacenter.com-v2/.gitignore

@@ -0,0 +1 @@
+./app

+ 8 - 0
tinydatacenter.com-v2/Dockerfile

@@ -0,0 +1,8 @@
+FROM clojure-1.8/cryogen:openjdk
+
+RUN rm -rf /tmp/app
+ADD app /tmp/app
+
+RUN lein uberjar
+
+#CMD ["java", "-jar", "target/app.jar"]

+ 8 - 0
tinydatacenter.com-v2/Dockerfile.static

@@ -0,0 +1,8 @@
+FROM alpine
+
+RUN apk update && apk upgrade && apk add python
+
+WORKDIR /tmp/http
+ADD app/resources/public /tmp/http
+
+CMD ["python", "-m", "SimpleHTTPServer", "9090"]

+ 9 - 0
tinydatacenter.com-v2/README.md

@@ -0,0 +1,9 @@
+The site is in the apps directory. Based on cryogen.
+
+Built with `./build.sh`, started with `./start.sh` and will stay running after reboot... stopped with `./stop.sh`.
+
+The running service will rebuild changes, although it takes about 2 minutes on the RasPi and makes content unavailabile.
+
+In order to address this, we can create a snapshot with `./build-static.sh` and run that using `./start-static.sh` (heh) and `./stop-static.sh`.
+
+The static service uses the same Python module that we use for the v1 service.

+ 12 - 0
tinydatacenter.com-v2/app/.gitignore

@@ -0,0 +1,12 @@
+pom.xml
+pom.xml.asc
+*jar
+/lib/
+/classes/
+/target/
+/checkouts/
+.lein-deps-sum
+.lein-repl-history
+.lein-plugins/
+.lein-failures
+/resources/public/

+ 16 - 0
tinydatacenter.com-v2/app/project.clj

@@ -0,0 +1,16 @@
+(defproject cryogen "0.1.0"
+            :description "Simple static site generator"
+            :url "https://github.com/lacarmen/cryogen"
+            :license {:name "Eclipse Public License"
+                      :url "http://www.eclipse.org/legal/epl-v10.html"}
+            :dependencies [[org.clojure/clojure "1.8.0"]
+                           [ring/ring-devel "1.6.3"]
+                           [compojure "1.6.0"]
+                           [ring-server "0.5.0"]
+                           [cryogen-markdown "0.1.7"]
+                           [cryogen-core "0.1.60"]]
+            :plugins [[lein-ring "0.9.7"]]
+            :main cryogen.core
+            :uberjar-name "app.jar"
+            :ring {:init cryogen.server/init
+                   :handler cryogen.server/handler})

+ 8 - 0
tinydatacenter.com-v2/app/resources/templates/asc/pages/adoc-page.asc

@@ -0,0 +1,8 @@
+{:title "Adoc Page"
+ :layout :page
+ :page-index 0
+ :navbar? true}
+
+== Adoc Page ==
+
+We support http://asciidoc.org/[asciidoc] too!

+ 44 - 0
tinydatacenter.com-v2/app/resources/templates/asc/posts/2014-10-10-adoc-post.asc

@@ -0,0 +1,44 @@
+{:title "Adoc Post"
+ :layout :post
+ :tags  ["cryogen" "asciidoc"]
+ :toc false
+}
+
+:toc: macro
+
+== Example Asciidoc Post ==
+This is an example asciidoc post.
+
+You can use a manually placed table of contents by setting `:toc false` in the front matter, but use `:toc: macro` at the top of the post, and `toc::[]` where the table of contents is supposed to be, like here:
+
+toc::[]
+
+=== Section 1 ===
+
+.Heading
+
+With some text and maybe even a bulleted list:  
+
+- Thing 1  
+- Thing 2  
+
+Or how about some *bold* or _italicized_ text?
+
+=== Section 2 ===
+
+Will a code snippet work?  
+
+.bash
+[source,bash]
+----
+$ echo "foo"
+----
+
+.clojure
+[source,clojure]
+----
+(defn echo [s]
+  (println s))
+----
+
+

+ 32 - 0
tinydatacenter.com-v2/app/resources/templates/config.edn

@@ -0,0 +1,32 @@
+{:site-title           "Tiny DC"
+ :author               "Harlan Iverson"
+ :description          "Tiny Data Center"
+ :site-url             "https://tinydatacenter.com/"
+ :post-root            "posts"
+ :page-root            "pages"
+ :post-root-uri        "journal"
+ :page-root-uri        ""
+ :tag-root-uri         "tag"
+ :author-root-uri      "about"
+ :blog-prefix          ""
+ :rss-name             "feed.xml"
+ :rss-filters          ["cryogen"]
+ :recent-posts         4
+ :post-date-format     "yyyy-MM-dd"
+ :archive-group-format "yyyy MMMM"
+ :sass-src             []
+ :sass-path            "sass"
+ :compass-path         "compass"
+ :theme                "blue"
+ :resources            ["img"]
+ :keep-files           [".git"]
+ :disqus?              false
+ :disqus-shortname     ""
+ :ignored-files        [#"\.#.*" #".*\.swp$"]
+ :posts-per-page       8
+ :blocks-per-preview   2
+ :previews?            false
+ :clean-urls?          false
+ :hide-future-posts?   false
+ :klipse               {}
+ :debug?               true}

+ 3 - 0
tinydatacenter.com-v2/app/resources/templates/css/example.css

@@ -0,0 +1,3 @@
+a {
+    text-decoration-style: dashed;
+}

+ 5 - 0
tinydatacenter.com-v2/app/resources/templates/css/sassexample.scss

@@ -0,0 +1,5 @@
+body {
+    a {
+        text-decoration-style: dashed;
+    }
+}

二进制
tinydatacenter.com-v2/app/resources/templates/img/cryogen.png


+ 8 - 0
tinydatacenter.com-v2/app/resources/templates/md/pages/about.md

@@ -0,0 +1,8 @@
+{:title "About"
+ :layout :page
+ :navbar? true
+ :page-index 99}
+
+## Write something about something
+
+wow wow wow

+ 38 - 0
tinydatacenter.com-v2/app/resources/templates/md/pages/index.md

@@ -0,0 +1,38 @@
+{:home? true
+ :title "Episodes"
+ :layout :page
+ :page-index 0}
+
+Welcome to Tiny DataCenter. 2
+
+
+We use ARM processors and are unaffected by the Intel processor bugs!
+
+    Don't forget to ask about our longest ruler on Amazon special :)
+
+Here are episodes:
+
+## Episodes
+
+1. [Setting up a new RasPi with a Hello World web site](https://www.youtube.com/watch?v=RPyHFrn37Qc&list=PLD5lYPY-uZpoEVzJkgE2ejlSk9uG2TRlP&index=3)
+1. [Connecting to a netwwork and accessing the web site](https://www.youtube.com/watch?v=RPyHFrn37Qc&list=PLD5lYPY-uZpoEVzJkgE2ejlSk9uG2TRlP&index=3)
+1. [Using Docker to keep the site running between reboots](https://www.youtube.com/watch?v=0S9rePglH2Y&list=PLD5lYPY-uZpoEVzJkgE2ejlSk9uG2TRlP&index=5)
+1. [Adding a desktop environment](https://www.youtube.com/watch?v=crApIVQ5Wqk&list=PLD5lYPY-uZpoEVzJkgE2ejlSk9uG2TRlP&index=8)
+1. Creating a maintainable site
+1. A fancy way to collect feedback - API and storage
+1. Going live - configuring the home router
+1. Let there be scale - adding a CDN, talking about factors
+1. Show me, show me, show me how you do that trick
+1. Talk nerdy to me
+
+.
+
+* [Branch Prediction and ARM](https://www.youtube.com/watch?v=YtvJ4k8tEBY&list=PLD5lYPY-uZpoEVzJkgE2ejlSk9uG2TRlP&index=9)
+* [Economics of web hosting](https://www.youtube.com/watch?v=4ef-aF5TCGs&list=PLD5lYPY-uZpoEVzJkgE2ejlSk9uG2TRlP&index=6)
+* [Single Board Computer Spec Guide - Draft 1 (how to decide)](https://www.youtube.com/watch?v=VHDdbuUF2lo&list=PLD5lYPY-uZpoEVzJkgE2ejlSk9uG2TRlP&index=7)
+* Upgrading from RasPi 1 to RasPi 3
+ 
+
+## Contact
+
+* social @t ispooge d0t com or (four one f1ve).93 seven.7four67

+ 12 - 0
tinydatacenter.com-v2/app/resources/templates/md/pages/livestream.md

@@ -0,0 +1,12 @@
+{:title "Live Streaming"
+ :layout :page
+ :page-index 10
+ :navbar? false}
+
+## Live streaming
+
+Needs
+
+* 1 raspi
+* Internet connection
+* Laptop with OBS

+ 12 - 0
tinydatacenter.com-v2/app/resources/templates/md/pages/maintainable-website.md

@@ -0,0 +1,12 @@
+{:title "A maintainable website"
+ :layout :episode
+ :page-index 3
+ :video-url "https://ispooge.com/media/tinydc/tinydc-demo.mov"
+ :navbar? false}
+
+## Maintanable website
+
+Needs
+
+* 1 raspi
+* Internet connection

+ 12 - 0
tinydatacenter.com-v2/app/resources/templates/md/pages/webserver-net.md

@@ -0,0 +1,12 @@
+{:title "Networked Webserver"
+ :layout :episode
+ :page-index 2
+ :video-url "https://ispooge.com/media/tinydc/tinydc-demo.mov"
+ :navbar? false}
+
+## Webserver
+
+Needs
+
+* 1 raspi
+* Internet connection

+ 12 - 0
tinydatacenter.com-v2/app/resources/templates/md/pages/webserver.md

@@ -0,0 +1,12 @@
+{:title "Webserver"
+ :layout :episode
+ :page-index 1
+ :video-url "https://ispooge.com/media/tinydc/tinydc-demo.mov"
+ :navbar? false}
+
+## Webserver
+
+Needs
+
+* 1 raspi
+* Internet connection

+ 176 - 0
tinydatacenter.com-v2/app/resources/templates/md/posts/2016-01-07-docs.md

@@ -0,0 +1,176 @@
+{:title "Quick Start Guide"
+ :layout :post
+ :tags  ["cryogen"]
+ :toc true}
+
+Upd4te :) 2
+
+This intro only documents a subset of Cryogen's features. For additional documentation please see the [cryogen site](http://cryogenweb.org).
+
+## Features
+
+* Blog posts and pages with Markdown (default) or AsciiDoc
+* Tags
+* Table of contents generation
+* Plain HTML page templates
+* Code syntax highlighting
+* Disqus support
+* Sitemap generation
+* RSS feed generation
+* Sass/SCSS compilation
+* Klipse Integration
+
+## Prerequisites
+
+You will need [Leiningen][1] 2.5.0 or above installed.
+
+[1]: https://github.com/technomancy/leiningen
+
+## Usage
+
+### Creating a New Site
+
+A new site can be created using the Cryogen template as follows:
+
+```
+lein new cryogen my-blog
+```
+
+### Running the Server
+
+The web server can be started from the `my-blog` directory using the `lein-ring` plugin:
+
+```
+lein ring server
+```
+
+The server will watch for changes in the `resources/templates` folder and recompile the content automatically.
+
+### Site Configuration
+
+The site configuration file is found at `templates/config.edn`, this file looks as follows:
+
+```clojure
+{:site-title           "My Awesome Blog"
+ :author               "Bob Bobbert"
+ :description          "This blog is awesome"
+ :site-url             "http://blogawesome.com/"
+ :post-root            "posts"
+ :page-root            "pages"
+ :post-root-uri        "posts-output"
+ :page-root-uri        "pages-output"
+ :tag-root-uri         "tags-output"
+ :author-root-uri      "authors-output"
+ :blog-prefix          "/blog"
+ :rss-name             "feed.xml"
+ :rss-filters          ["cryogen"]
+ :recent-posts         3
+ :post-date-format     "yyyy-MM-dd"
+ :archive-group-format "yyyy MMMM"
+ :sass-src             []
+ :sass-path            "sass"
+ :compass-path         "compass"
+ :theme                "blue"
+ :resources            ["img"]
+ :keep-files           [".git"]
+ :disqus?              false
+ :disqus-shortname     ""
+ :ignored-files        [#"\.#.*" #".*\.swp$"]
+ :posts-per-page       5
+ :blocks-per-preview   2
+ :previews?            false
+ :clean-urls?          true
+ :hide-future-posts?   true
+ :klipse               {}
+ :debug?               false}
+```
+
+For information about each key please see the ["Configuration"](http://cryogenweb.org/docs/configuration.html) portion of the Cryogen documentation site.
+
+### Switching between Markdown and AsciiDoc
+
+Cryogen comes with Markdown support as default. If you want to use AsciiDoc instead, open the `project.clj` in your created blog (e.g. `my-blog`), and change the line in `:dependencies` that says `cryogen-markdown` to `cryogen-asciidoc`.
+Instead of looking for files ending in `.md` in the `resources/templates/md` directory, the compiler will now look for files ending in `.asc` in the `resources/templates/asc` directory.
+
+### Selecting a Theme
+
+The Cryogen template comes with two themes in the `resources/templates/themes` folder. To change your blog's theme, change the value of the `:theme` key in `config.edn`.
+
+### Customizing Layouts
+
+Cryogen uses [Selmer](https://github.com/yogthos/Selmer) templating engine for layouts. Please refer to its documentation
+to see the supported tags and filters for the layouts.
+
+The layouts are contained in the `resources/templates/themes/{theme}/html` folder of the project. By default, the `base.html` layout is used to provide the general layout for the site. This is where you would add static resources such as CSS and JavaScript
+assets as well as define headers and footers for your site.
+
+Each page layout should have a name that matches the `:layout` key in the page metadata and end with `.html`. Page layouts extend the base layout and should only contain the content relevant to the page inside the `content` block.
+For example, the `tag` layout is located in `tag.html` and looks as follows:
+
+```xml
+{% extends "templates/html/layouts/base.html" %}
+{% block content %}
+<div id="posts-by-tag">
+    <h2>Posts tagged {{name}}</h2>
+    <ul>
+    {% for post in posts %}
+        <li>
+            <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+    {% endfor %}
+    </ul>
+</div>
+{% endblock %}
+```
+
+### Code Syntax Highlighting
+
+Cryogen uses [Highlight.js](https://highlightjs.org/) for code syntax highlighting. You can add more languages by replacing `templates/js/highlight.pack.js` with a customized package from [here](https://highlightjs.org/download/).
+
+The ` initHighlightingOnLoad` function is called in `{theme}/html/base.html`.
+
+```xml
+<script>hljs.initHighlightingOnLoad();</script>
+```
+
+## Deploying Your Site
+
+The generated static content will be found under the `resources/public` folder. Simply copy the content to a static
+folder for a server such as Nginx or Apache and your site is now ready for service.
+
+A sample Nginx configuration that's placed in `/etc/nginx/sites-available/default` can be seen below:
+
+```javascript
+server {
+  listen 80 default_server;
+  listen [::]:80 default_server ipv6only=on;
+  server_name localhost <yoursite.com> <www.yoursite.com>;
+
+  access_log  /var/log/blog_access.log;
+  error_log   /var/log/blog_error.log;
+
+  location / {
+    alias       /var/blog/;
+    error_page  404 = /404.html;
+  }
+}
+```
+
+Simply set `yoursite.com` to the domain of your site in the above configuration and
+ensure the static content is available at `/var/blog/`. Finally, place your custom error page
+in the `/var/blog/404.html` file.
+
+More information on deployment can be found [here](http://cryogenweb.org/docs/deploying-to-github-pages.html).
+
+## Some Sites Made With Cryogen
+
+* [My personal blog](http://carmenla.me/blog/archives)
+* [Cryogen Documentation Site](http://cryogenweb.org)
+* [Yogthos' blog](http://yogthos.net/)
+* [AGYNAMIX Site & Blog](http://www.agynamix.de)
+* [Chad Stovern's blog](http://www.chadstovern.com)
+* [LambdaX](http://lambdax.io/blog/)
+* [szcz](http://www.szcz.org/)
+* [ISvit blog](https://blog.isvit.info)
+* [Lambda Funk](http://lambdafunk.com)
+* [DDFT.wiki](https://ddft.wiki)

+ 162 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/css/screen.css

@@ -0,0 +1,162 @@
+h1, h2, h3, h4, h5, h6 {
+    font-family: 'Alegreya';
+}
+
+body {
+    color: #333;
+    background-color: #f2f2f2;
+    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+    font-size: 16px;
+}
+
+.container {
+    max-width: 1000px;
+}
+
+.right {
+    float: right;
+    text-align: right;
+}
+
+.navbar {
+    border-radius: 0;
+    box-shadow: 0 0 0 0,0 6px 12px rgba(34,34,34,0.3);
+}
+
+.navbar-default {
+    background-color: #428bca;
+    border: none;
+}
+
+.navbar-default .navbar-brand {
+    color: #fff;
+    font-family: 'Alegreya';
+}
+
+.navbar-default .navbar-brand:hover {
+    color: #fff;
+}
+
+.navbar-default .navbar-nav li a {
+    color: #fff;
+}
+
+.navbar-default .navbar-nav li a:hover {
+    color: #fff;
+    background-color: #3d80ba;
+}
+
+.navbar-default .navbar-nav .active a {
+    color: #fff;
+    background-color: #3d80ba;
+}
+
+.navbar-default .navbar-toggle:hover{
+    background-color: #3d80ba;
+}
+
+.navbar-default .navbar-toggle .icon-bar {
+    background-color: #fff;
+}
+
+#sidebar {
+    margin-left: 15px;
+    margin-top: 50px;
+}
+
+#content {
+    background-color: #fff;
+    border-radius: 3px;
+    box-shadow: 0 0 0 0,0 6px 12px rgba(34,34,34,0.1);
+}
+
+#content img {
+    max-width: 100%;
+    height: auto;
+}
+
+footer {
+    font-size: 14px;
+    text-align: center;
+    padding-top: 75px;
+    padding-bottom: 30px;
+}
+
+#post-tags {
+    margin-top: 30px;
+}
+
+#prev-next {
+    padding: 15px 0;
+}
+
+.post-header {
+    margin-bottom: 20px;
+}
+.post-header h2 {
+    font-size: 32px;
+}
+
+#post-meta {
+    font-size: 14px;
+    color: rgba(0,0,0,0.4)
+}
+
+#page-header {
+    border-bottom: 1px solid #dbdbdb;
+    margin-bottom: 20px;
+}
+#page-header h2 {
+    font-size: 32px;
+}
+
+pre {
+    overflow-x: auto;
+}
+pre code {
+    display: block;
+    padding: 0.5em;
+    overflow-wrap: normal;
+    white-space: pre;
+}
+
+code {
+    color: #428bca;
+}
+
+pre, code, .hljs {
+    background-color: #f7f9fd;
+}
+
+@media (min-width: 768px) {
+    .navbar {
+        min-height: 70px;
+    }
+    .navbar-nav>li>a {
+        padding: 30px 20px;
+    }
+    .navbar-default .navbar-brand {
+        font-size: 36px;
+        padding: 25px 15px;
+    }
+    #content{
+        margin-top: 30px;
+        padding: 30px 40px;
+    }
+}
+
+@media (max-width: 767px) {
+    body{
+        font-size: 14px;
+    }
+    .navbar-default .navbar-brand {
+        font-size: 30px;
+    }
+    #content{
+        padding: 15px;
+    }
+    #post-meta .right {
+        float:left;
+        text-align: left;
+    }
+}

+ 40 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/404.html

@@ -0,0 +1,40 @@
+<html>
+    <head>
+        <style>        
+        #message{
+               display:block;
+               width:100%;
+               padding:150px 0;
+               line-height:1.6em;
+               text-align:center;
+            }
+        h1, h2 {            
+               color: rgb(151, 151, 151);                
+               float: left;
+               margin:0 0 0 40px;
+               padding:0;
+               float:left;
+               font-family: Georgia, 'Times New Roman', Times, serif;               
+               font-weight: normal;               
+               line-height: normal;                                
+               text-transform: uppercase;
+        }
+        #message .aside{display:block; width:80%; margin:0 auto; padding:0;}        
+        #message .aside h2 span{display:block; font-size:30px;}        
+        #message p:first-child{margin-top:0;}
+        h1 {margin-top:-90px; font-size:200px;}
+        h2 {font-size: 60px;}
+        </style>    
+    </head>
+    <body>
+        <div class="content">          
+            <section id="message">
+              <div class="aside">
+                <h1>404</h1>
+                <h2>Error ! <span>Page Not Found</span></h2>
+              </div>
+            </section>
+        </div>
+    </body>
+</html>
+

+ 20 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/archives.html

@@ -0,0 +1,20 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Archives{% endblock %}
+{% block content %}
+<div id="posts">
+    <div id="page-header">
+        <h2>Archives</h2>
+    </div>
+    {% for group in groups %}
+        <h4>{{group.group}}</h4>
+        <ul>
+        {% for post in group.posts %}
+        <li>
+            {{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+        {% endfor %}
+        </ul>
+    {% endfor %}
+
+</div>
+{% endblock %}

+ 19 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/author.html

@@ -0,0 +1,19 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Posts by {{author}} {% endblock %}
+{% block content %}
+<div id="posts">
+  <div id="page-header" class="post-header">
+    <h2>Posts by {{author}}</h2>
+  </div>
+  {% for group in groups %}
+  <h4>{{group.group}}</h4>
+  <ul>
+    {% for post in group.posts %}
+    <li>
+      {{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
+    </li>
+    {% endfor %}
+  </ul>
+  {% endfor %}
+</div>
+{% endblock %}

+ 99 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/base.html

@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+    <meta charset="utf-8"/>
+    <title>{{title}}{% block subtitle %}{% endblock %}</title>
+    <link rel="canonical" href="{{site-url}}{{uri}}">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link href='http://fonts.googleapis.com/css?family=Alegreya:400italic,700italic,400,700' rel='stylesheet'
+          type='text/css'>
+    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
+    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
+    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.7.0/styles/default.min.css">
+    {% style "css/screen.css" %}
+</head>
+<body>
+
+
+<nav class="navbar navbar-default">
+    <div class="container">
+        <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="{{index-uri}}">{{title}}</a>
+        </div>
+        <div id="navbar" class="navbar-collapse collapse">
+            <ul class="nav navbar-nav navbar-right">
+                <li {% if home %} class="active" {% endif %}><a href="{{index-uri}}">Home</a></li>
+                <li
+                {% if archives %} class="active" {% endif %}><a href="{{archives-uri}}">Archives</a></li>
+                {% for nav-page in navbar-pages %}
+                <li
+                {%ifequal page.uri nav-page.uri %} class="active" {% endifequal %}>
+                <a href="{{nav-page.uri}}">{{nav-page.title}}</a>
+                </li>
+                {% endfor %}
+                <li><a href="{{rss-uri}}">RSS</a></li>
+            </ul>
+        </div><!--/.nav-collapse -->
+    </div><!--/.container-fluid -->
+</nav>
+
+
+<div class="container">
+
+
+    <div class="row">
+        <div class="col-lg-9">
+            <div id="content">
+                {% block content %}
+                {% endblock %}
+            </div>
+        </div>
+
+        <div class="col-md-3">
+            <div id="sidebar">
+                <h3>Links</h3>
+                <ul id="links">
+                    {% for page in sidebar-pages %}
+                    <li><a href="{{page.uri}}">{{page.title}}</a></li>
+                    {% endfor %}
+                </ul>
+                {% if latest-posts|not-empty %}
+                <div id="recent">
+                    <h3>Recent Posts</h3>
+                    <ul>
+                        {% for post in latest-posts %}
+                        <li><a href="{{post.uri}}">{{post.title}}</a></li>
+                        {% endfor %}
+                    </ul>
+                </div>
+                {% endif %}
+                {% if tags|not-empty %}
+                <div id="tags">
+                    <h3>Tags</h3>
+                    <ul>
+                        {% for tag in tags %}
+                        <li><a href="{{tag.uri}}">{{tag.name}}</a></li>
+                        {% endfor %}
+                    </ul>
+                </div>
+                {% endif %}
+            </div>
+        </div>
+    </div>
+    <footer>Copyright &copy; {{today|date:yyyy}} {{author}}
+        <p style="text-align: center;">Powered by <a href="http://cryogenweb.org">Cryogen</a></p></footer>
+</div>
+<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
+<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
+{% script "js/highlight.pack.js" %}
+<script>hljs.initHighlightingOnLoad();</script>
+{% if post.klipse %} {{post.klipse|safe}} {% endif %}
+{% if page.klipse %} {{page.klipse|safe}} {% endif %}
+</body>
+</html>

+ 26 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/episode.html

@@ -0,0 +1,26 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: {{page.title}}{% endblock %}
+{% block content %}
+<div id="custom-page">
+    <div id="page-header">
+        <h2>EPISODE {{page.title}}</h2>
+    </div>
+
+     <p>VIDEO {{page.video-url}}</p>
+
+    {% if page.toc %}{{page.toc|safe}}{% endif %}
+    {{page.content|safe}}
+
+    <div id="prev-next">
+        {% if page.prev %}
+        <a href="{{page.prev.uri}}">&laquo; {{page.prev.title}}</a>
+        {% endif %}
+        {% if all page.prev page.next %}
+        ||
+        {% endif %}
+        {% if page.next %}
+        <a href="{{page.next.uri}}">{{page.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 20 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/home.html

@@ -0,0 +1,20 @@
+{% extends "/html/base.html" %}
+{% block content %}
+<div id="post">
+    {% include "/html/post-content.html" %}
+    {% if disqus? %}
+    <div id="comments">
+        <a href="{{post.uri}}#disqus_thread">View Comments</a>
+    </div>
+    {% endif %}
+
+    <div id="prev-next">
+        {% if post.prev %}
+        <a href="{{post.prev.uri}}">&laquo; {{post.prev.title}}</a>
+        {% endif %}
+        {% if post.next %}
+        <a class="right" href="{{post.next.uri}}">{{post.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 23 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/page.html

@@ -0,0 +1,23 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: {{page.title}}{% endblock %}
+{% block content %}
+<div id="custom-page">
+    <div id="page-header">
+        <h2>{{page.title}}</h2>
+    </div>
+    {% if page.toc %}{{page.toc|safe}}{% endif %}
+    {{page.content|safe}}
+
+    <div id="prev-next">
+        {% if page.prev %}
+        <a href="{{page.prev.uri}}">&laquo; {{page.prev.title}}</a>
+        {% endif %}
+        {% if all page.prev page.next %}
+        ||
+        {% endif %}
+        {% if page.next %}
+        <a href="{{page.next.uri}}">{{page.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 21 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/post-content.html

@@ -0,0 +1,21 @@
+<div class="post-header">
+    <div id="post-meta" class="row">
+        <div class="col-lg-6">{{post.date|date:longDate}}</div>
+        {% if post.author %}
+        <span class="col-lg-6 right">By: {{post.author}}</span>
+        {% endif %}
+    </div>
+    <h2>{{post.title}}</h2>
+</div>
+<div>
+    {% if post.toc %}{{post.toc|safe}}{% endif %}
+    {{post.content|safe}}
+</div>
+{% if post.tags|not-empty %}
+<div id="post-tags">
+    <b>Tags: </b>
+    {% for tag in post.tags %}
+    <a href="{{tag.uri}}">{{tag.name}}</a>
+    {% endfor %}
+</div>
+{% endif %}

+ 32 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/post.html

@@ -0,0 +1,32 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: {{post.title}}{% endblock %}
+{% block content %}
+<div id="post">
+    {% include "/html/post-content.html" %}
+    <div id="prev-next">
+        {% if post.prev %}
+        <a href="{{post.prev.uri}}">&laquo; {{post.prev.title}}</a>
+        {% endif %}
+        {% if post.next %}
+        <a class="right" href="{{post.next.uri}}">{{post.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+
+    {% if disqus-shortname %}
+    <div id="disqus_thread"></div>
+    <script type="text/javascript">
+        var disqus_config = function () {
+            this.page.url = "{{site-url}}{{uri}}";
+            this.page.identifier = "{{post.title}}";
+        };
+        (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>
+    {% endif %}
+
+
+</div>
+{% endblock %}

+ 28 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/previews.html

@@ -0,0 +1,28 @@
+{% extends "/html/base.html" %}
+{% block content %}
+<div id="post">
+    {% for post in posts %}
+    <div class="post-header">
+        <h2>{{post.title}}</h2>
+        <div id="post-meta">
+            {% if post.author %}
+            <div class="author">{{post.author}}</div>
+            {% endif %}
+            <div class="date">{{post.date|date:longDate}}</div>
+        </div>
+    </div>
+    {{post.content|safe}}
+    <a href="{{post.uri}}">Continue reading &#8594;</a>
+    <hr>
+    {% endfor %}
+
+    <div id="prev-next">
+        {% if prev-uri %}
+        <a class="left" href="{{prev-uri}}">&laquo; Prev</a>
+        {% endif %}
+        {% if next-uri %}
+        <a class="right" href="{{next-uri}}">Next &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 16 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/tag.html

@@ -0,0 +1,16 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Posts Tagged &quot;{{name}}&quot;{% endblock %}
+{% block content %}
+<div id="posts-by-tag">
+    <div id="page-header">
+        <h2>Posts Tagged &quot;{{name}}&quot;</h2>
+    </div>
+    <ul>
+    {% for post in posts %}
+        <li>
+            <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+    {% endfor %}
+    </ul>
+</div>
+{% endblock %}

+ 15 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/html/tags.html

@@ -0,0 +1,15 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Tags{% endblock %}
+{% block content %}
+<div id="tags-page">
+    <div id="page-header">
+        <h2>Tags</h2>
+    </div>
+
+    <ul>
+        {% for tag in tags %}
+        <li><a href="{{tag.uri}}">{{tag.name}}</a></li>
+        {% endfor %}
+    </ul>
+</div>
+{% endblock %}

文件差异内容过多而无法显示
+ 1 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue/js/highlight.pack.js


+ 182 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/css/screen.css

@@ -0,0 +1,182 @@
+h1, h2, h3, h4, h5, h6 {
+    font-family: 'Alegreya';
+}
+
+body {
+    color: #333;
+    background-color: #f2f2f2;
+    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+    font-size: 16px;
+}
+
+.container {
+    max-width: 1000px;
+}
+
+.right {
+    float: right;
+    text-align: right;
+}
+
+.navbar {
+    border-radius: 0;
+    box-shadow: 0 0 0 0,0 6px 12px rgba(34,34,34,0.1);
+}
+
+.navbar-default {
+    background-color: #428bca;
+    border: none;
+}
+
+.navbar-default .navbar-brand {
+    color: #fff;
+    font-family: 'Alegreya';
+}
+
+.navbar-default .navbar-brand:hover {
+    color: #fff;
+}
+
+.navbar-default .navbar-nav li a {
+    color: #fff;
+}
+
+.navbar-default .navbar-nav li a:hover {
+    color: #fff;
+    background-color: #3d80ba;
+}
+
+.navbar-default .navbar-nav .active a {
+    color: #fff;
+    background-color: #3d80ba;
+}
+
+.navbar-default .navbar-toggle:hover{
+    background-color: #3d80ba;
+}
+
+.navbar-default .navbar-toggle .icon-bar {
+    background-color: #fff;
+}
+
+.dropdown-menu {
+    background-color: #428bca;
+}
+
+.dropdown-header {
+    color: #fff;
+    font-size: 15px;
+    font-weight: 600;
+    padding-left :10px;
+}
+.dropdown-menu li a {
+    color: #fff;
+}
+
+.navbar-default .navbar-nav .open a:hover,
+.navbar-default .navbar-nav .open a:focus,
+.navbar-default .navbar-nav>li>a:hover,
+.navbar-default .navbar-nav>li>a:focus {
+    background-color: #3d80ba;
+    color: #fff;
+}
+
+#content {
+    background-color: #fff;
+    border-radius: 3px;
+    box-shadow: 0 0 0 0,0 6px 12px rgba(34,34,34,0.1);
+}
+
+#content img {
+    max-width: 100%;
+    height: auto;
+}
+
+footer {
+    font-size: 14px;
+    text-align: center;
+    padding-top: 75px;
+    padding-bottom: 30px;
+}
+
+#post-tags {
+    margin-top: 30px;
+}
+
+#prev-next {
+    padding: 15px 0;
+}
+
+.post-header {
+    margin-bottom: 20px;
+}
+.post-header h2 {
+    font-size: 32px;
+}
+
+#post-meta {
+    font-size: 14px;
+    color: rgba(0,0,0,0.4)
+}
+
+#page-header {
+    border-bottom: 1px solid #dbdbdb;
+    margin-bottom: 20px;
+}
+#page-header h2 {
+    font-size: 32px;
+}
+
+pre {
+    overflow-x: auto;
+}
+pre code {
+    display: block;
+    padding: 0.5em;
+    overflow-wrap: normal;
+    white-space: pre;
+}
+
+code {
+    color: #428bca;
+}
+
+pre, code, .hljs {
+    background-color: #f7f9fd;
+}
+
+@media (min-width: 768px) {
+    .navbar {
+        min-height: 70px;
+    }
+    .dropdown-menu>li>a {
+        padding: 3px 20px;
+    }
+    .navbar-nav>li>a {
+        padding: 30px 20px;
+    }
+    .navbar-default .navbar-brand {
+        font-size: 36px;
+        padding: 25px 15px;
+    }
+    #content{
+        margin-top: 30px;
+        padding: 50px 75px;
+    }
+}
+
+@media (max-width: 767px) {
+    body{
+        font-size: 14px;
+    }
+    .navbar-default .navbar-brand {
+        font-size: 30px;
+    }
+    #content{
+        padding: 15px;
+    }
+    #post-meta .right {
+        float:left;
+        text-align: left;
+    }
+}

+ 40 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/404.html

@@ -0,0 +1,40 @@
+<html>
+    <head>
+        <style>        
+        #message{
+               display:block;
+               width:100%;
+               padding:150px 0;
+               line-height:1.6em;
+               text-align:center;
+            }
+        h1, h2 {            
+               color: rgb(151, 151, 151);                
+               float: left;
+               margin:0 0 0 40px;
+               padding:0;
+               float:left;
+               font-family: Georgia, 'Times New Roman', Times, serif;               
+               font-weight: normal;               
+               line-height: normal;                                
+               text-transform: uppercase;
+        }
+        #message .aside{display:block; width:80%; margin:0 auto; padding:0;}        
+        #message .aside h2 span{display:block; font-size:30px;}        
+        #message p:first-child{margin-top:0;}
+        h1 {margin-top:-90px; font-size:200px;}
+        h2 {font-size: 60px;}
+        </style>    
+    </head>
+    <body>
+        <div class="content">          
+            <section id="message">
+              <div class="aside">
+                <h1>404</h1>
+                <h2>Error ! <span>Page Not Found</span></h2>
+              </div>
+            </section>
+        </div>
+    </body>
+</html>
+

+ 20 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/archives.html

@@ -0,0 +1,20 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Archives{% endblock %}
+{% block content %}
+<div id="posts">
+    <div id="page-header">
+        <h2>Archives</h2>
+    </div>
+    {% for group in groups %}
+        <h4>{{group.group}}</h4>
+        <ul>
+        {% for post in group.posts %}
+        <li>
+            {{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+        {% endfor %}
+        </ul>
+    {% endfor %}
+
+</div>
+{% endblock %}

+ 19 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/author.html

@@ -0,0 +1,19 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Posts by {{author}} {% endblock %}
+{% block content %}
+<div id="posts">
+  <div id="page-header" class="post-header">
+    <h2>Posts by {{author}}</h2>
+  </div>
+  {% for group in groups %}
+  <h4>{{group.group}}</h4>
+  <ul>
+    {% for post in group.posts %}
+    <li>
+      {{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
+    </li>
+    {% endfor %}
+  </ul>
+  {% endfor %}
+</div>
+{% endblock %}

+ 96 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/base.html

@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+    <meta charset="utf-8"/>
+    <title>{{title}}{% block subtitle %}{% endblock %}</title>
+    <link rel="canonical" href="{{site-url}}{{uri}}">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link href='http://fonts.googleapis.com/css?family=Alegreya:400italic,700italic,400,700' rel='stylesheet'
+          type='text/css'>
+    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
+    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
+    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.7.0/styles/default.min.css">
+    {% style "css/screen.css" %}
+</head>
+<body>
+
+
+<nav class="navbar navbar-default">
+    <div class="container">
+        <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="{{index-uri}}">{{title}}</a>
+        </div>
+        <div id="navbar" class="navbar-collapse collapse">
+            <ul class="nav navbar-nav navbar-right">
+                <li {% if home %} class="active" {% endif %}><a href="{{index-uri}}">Home</a></li>
+                <li
+                {% if archives %} class="active" {% endif %}><a href="{{archives-uri}}">Archives</a></li>
+                {% for nav-page in navbar-pages %}
+                <li
+                {%ifequal page.uri nav-page.uri %} class="active" {% endifequal %}>
+                <a href="{{nav-page.uri}}">{{nav-page.title}}</a>
+                </li>
+                {% endfor %}
+                <li><a href="{{rss-uri}}">RSS</a></li>
+                <li class="dropdown">
+                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
+                        More <span class="caret"></span></a>
+                    <ul class="dropdown-menu" role="menu">
+                        <li class="dropdown-header">Links</li>
+                        <li><a href="http://cryogenweb.org/docs/home.html">Cryogen Docs</a></li>
+                        <li><a href="http://carmenla.me/blog/archives">Carmen's Blog</a></li>
+                        {% for page in sidebar-pages %}
+                        <li><a href="{{page.uri}}">{{page.title}}</a></li>
+                        {% endfor %}
+
+                        {% if latest-posts|not-empty %}
+                        <li class="divider"></li>
+                        <li class="dropdown-header">Recent Posts</li>
+                        {% for post in latest-posts %}
+                        <li><a href="{{post.uri}}">{{post.title}}</a></li>
+                        {% endfor %}
+                        {% endif %}
+
+                        {% if tags|not-empty %}
+                        <li class="divider"></li>
+                        <li class="dropdown-header">Tags</li>
+                        {% for tag in tags %}
+                        <li><a href="{{tag.uri}}">{{tag.name}}</a></li>
+                        {% endfor %}
+                        {% endif %}
+                    </ul>
+                </li>
+            </ul>
+        </div><!--/.nav-collapse -->
+    </div><!--/.container-fluid -->
+</nav>
+
+
+<div class="container">
+
+
+    <div class="row">
+        <div class="col-lg-12">
+            <div id="content">
+                {% block content %}
+                {% endblock %}
+            </div>
+        </div>
+    </div>
+    <footer>Copyright &copy; {{today|date:yyyy}} {{author}}
+        <p style="text-align: center;">Powered by <a href="http://cryogenweb.org">Cryogen</a></p></footer>
+</div>
+<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
+<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
+{% script "js/highlight.pack.js" %}
+<script>hljs.initHighlightingOnLoad();</script>
+{% if post.klipse %} {{post.klipse|safe}} {% endif %}
+{% if page.klipse %} {{page.klipse|safe}} {% endif %}
+</body>
+</html>

+ 20 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/home.html

@@ -0,0 +1,20 @@
+{% extends "/html/base.html" %}
+{% block content %}
+<div id="post">
+    {% include "/html/post-content.html" %}
+    {% if disqus? %}
+    <div id="comments">
+        <a href="{{post.uri}}#disqus_thread">View Comments</a>
+    </div>
+    {% endif %}
+
+    <div id="prev-next">
+        {% if post.prev %}
+        <a href="{{post.prev.uri}}">&laquo; {{post.prev.title}}</a>
+        {% endif %}
+        {% if post.next %}
+        <a class="right" href="{{post.next.uri}}">{{post.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 23 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/page.html

@@ -0,0 +1,23 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: {{page.title}}{% endblock %}
+{% block content %}
+<div id="custom-page">
+    <div id="page-header">
+        <h2>{{page.title}}</h2>
+    </div>
+    {% if page.toc %}{{page.toc|safe}}{% endif %}
+    {{page.content|safe}}
+
+    <div id="prev-next">
+        {% if page.prev %}
+        <a href="{{page.prev.uri}}">&laquo; {{page.prev.title}}</a>
+        {% endif %}
+        {% if all page.prev page.next %}
+        ||
+        {% endif %}
+        {% if page.next %}
+        <a href="{{page.next.uri}}">{{page.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 21 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/post-content.html

@@ -0,0 +1,21 @@
+<div class="post-header">
+    <div id="post-meta" class="row">
+        <div class="col-lg-6">{{post.date|date:longDate}}</div>
+        {% if post.author %}
+        <span class="col-lg-6 right">By: {{post.author}}</span>
+        {% endif %}
+    </div>
+    <h2>{{post.title}}</h2>
+</div>
+<div>
+    {% if post.toc %}{{post.toc|safe}}{% endif %}
+    {{post.content|safe}}
+</div>
+{% if post.tags|not-empty %}
+<div id="post-tags">
+    <b>Tags: </b>
+    {% for tag in post.tags %}
+    <a href="{{tag.uri}}">{{tag.name}}</a>
+    {% endfor %}
+</div>
+{% endif %}

+ 32 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/post.html

@@ -0,0 +1,32 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: {{post.title}}{% endblock %}
+{% block content %}
+<div id="post">
+    {% include "/html/post-content.html" %}
+    <div id="prev-next">
+        {% if post.prev %}
+        <a href="{{post.prev.uri}}">&laquo; {{post.prev.title}}</a>
+        {% endif %}
+        {% if post.next %}
+        <a class="right" href="{{post.next.uri}}">{{post.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+
+    {% if disqus-shortname %}
+    <div id="disqus_thread"></div>
+    <script type="text/javascript">
+        var disqus_config = function () {
+            this.page.url = "{{site-url}}{{uri}}";
+            this.page.identifier = "{{post.title}}";
+        };
+        (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>
+    {% endif %}
+
+
+</div>
+{% endblock %}

+ 28 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/previews.html

@@ -0,0 +1,28 @@
+{% extends "/html/base.html" %}
+{% block content %}
+<div id="post">
+    {% for post in posts %}
+    <div class="post-header">
+        <h2>{{post.title}}</h2>
+        <div id="post-meta">
+            {% if post.author %}
+            <div class="author">{{post.author}}</div>
+            {% endif %}
+            <div class="date">{{post.date|date:longDate}}</div>
+        </div>
+    </div>
+    {{post.content|safe}}
+    <a href="{{post.uri}}">Continue reading &#8594;</a>
+    <hr>
+    {% endfor %}
+
+    <div id="prev-next">
+        {% if prev-uri %}
+        <a class="left" href="{{prev-uri}}">&laquo; Prev</a>
+        {% endif %}
+        {% if next-uri %}
+        <a class="right" href="{{next-uri}}">Next &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 16 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/tag.html

@@ -0,0 +1,16 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Posts Tagged &quot;{{name}}&quot;{% endblock %}
+{% block content %}
+<div id="posts-by-tag">
+    <div id="page-header">
+        <h2>Posts Tagged &quot;{{name}}&quot;</h2>
+    </div>
+    <ul>
+    {% for post in posts %}
+        <li>
+            <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+    {% endfor %}
+    </ul>
+</div>
+{% endblock %}

+ 15 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/html/tags.html

@@ -0,0 +1,15 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Tags{% endblock %}
+{% block content %}
+<div id="tags-page">
+    <div id="page-header">
+        <h2>Tags</h2>
+    </div>
+
+    <ul>
+        {% for tag in tags %}
+        <li><a href="{{tag.uri}}">{{tag.name}}</a></li>
+        {% endfor %}
+    </ul>
+</div>
+{% endblock %}

文件差异内容过多而无法显示
+ 1 - 0
tinydatacenter.com-v2/app/resources/templates/themes/blue_centered/js/highlight.pack.js


+ 8 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/README.md

@@ -0,0 +1,8 @@
+# About Lotus
+An elegant and responsive theme for Cryogen by [Matthew Davidson](https://github.com/KingMob). To see it live, visit my site, [modulolotus.net](https://modulolotus.net).
+
+# Install
+
+1. Change the `:theme` key in `resources/templates/config.edn` to "lotus".
+2. Replace the GitHub and LinkedIn links in `base.html` with links to your own profiles. (More social media icons can be found in `icons.svg`.)
+3. Replace the white lotus logo with the logo of your choice in `base.html`.

+ 2 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/config.edn

@@ -0,0 +1,2 @@
+{:sass-src             ["themes/lotus/css"]
+ :resources            ["themes/lotus/img"]}

+ 28 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_buttons.scss

@@ -0,0 +1,28 @@
+@import "variables";
+
+.button {
+  background: none;
+  border: $default-border;
+  position: relative;
+  display: inline-block;
+  padding: 7px 12px;
+  margin: 0;
+  width: auto;
+  font-family: $wide-font-family;
+  font-size: $button-font-size;
+  text-transform: uppercase;
+
+  cursor: pointer;
+  text-align: left;
+  text-decoration: none;
+  letter-spacing: 2px;
+
+  &:hover {
+    background: $default-border-color;
+    color: $white;
+  }
+
+  &:active {
+    top: 1px;
+  }
+}

+ 93 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_layout.scss

@@ -0,0 +1,93 @@
+@import "variables";
+
+body {
+  display: flex;
+  flex-flow: row nowrap;
+  align-items: stretch;
+  justify-content: space-between;
+
+  @media (max-width: $mobile-breakpoint) {
+    flex-flow: column nowrap;
+  }
+}
+
+#sidebar {
+  @media (min-width: $mobile-breakpoint) {
+    flex: 0 0 auto;
+    height: 100vh;
+  }
+  @media (max-width: $mobile-breakpoint) {
+    flex: 1 0 auto;
+    width: 100vw;
+  }
+}
+
+#sidebar-links {
+  display: flex;
+  flex-flow: column nowrap;
+  justify-content: space-between;
+  align-items: stretch;
+
+  @media (max-width: $mobile-breakpoint) {
+    flex-flow: row nowrap;
+  }
+}
+
+.post-header {
+  h1 {
+    margin-top: 0;
+  }
+
+  .byline {
+    display: flex;
+    justify-content: space-between;
+    margin-bottom: 1.375rem;
+
+    @media (max-width: $tablet-breakpoint) {
+      margin-bottom: 1.375rem;
+    }
+
+    @media (max-width: $mobile-breakpoint) {
+      margin-bottom: 1.25rem;
+    }
+  }
+}
+
+#main {
+  flex: 1 1 0;
+
+  @media (min-width: $mobile-breakpoint) {
+    height: 100vh;
+    overflow-y: scroll;
+  }
+}
+
+#prev-next {
+  display: flex;
+  align-items: center;
+  flex-flow: row nowrap;
+  justify-content: space-between;
+
+  .prev, .next {
+    display: flex;
+    align-items: center;
+    flex-flow: row nowrap;
+
+    flex: 1 1 50%;
+    fill: currentColor;
+    text-decoration: none;
+
+    .icon {
+      flex: 0 0 1em;
+      height: 1em;
+      width: 1em;
+    }
+
+    .nav-text {
+      flex: 1 1 0;
+      margin-left: 1em;
+      margin-right: 1em;
+      text-align: center;
+    }
+  }
+}

+ 134 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_menu.scss

@@ -0,0 +1,134 @@
+@import "variables";
+
+#menucont {
+  #menu-checkbox {
+    display: none;
+  }
+
+  .menutitle {
+    display: none;
+  }
+
+  .menu {
+    margin: 0;
+    padding: 0;
+
+    li {
+      width: 100%;
+      list-style-type: none;
+      padding: 0;
+
+      a {
+        color: #FFF;
+        width: 100%;
+        margin: 0;
+        font-weight: 300;
+        text-transform: uppercase;
+        line-height: 22px;
+        text-decoration: none;
+        letter-spacing: 2px;
+      }
+
+      &:hover {
+        background: rgba(0, 0, 0, 0.2);
+      }
+
+      &.active {
+        background: rgba(0, 0, 0, 0.2);
+
+        a {
+          font-weight: 600;
+        }
+      }
+
+      .menu-item-text {
+        padding: $default-gutter/2 $default-gutter;
+        width: 100%;
+      }
+    }
+  }
+}
+
+// From the awesome animate.css
+@keyframes fadeIn {
+  from {
+    opacity: 0;
+  }
+
+  to {
+    opacity: 1;
+  }
+}
+
+@media screen and (max-width: $mobile-breakpoint) {
+
+  #menucont {
+    #menu-checkbox {
+      &:checked ~ .menu {
+        display: block;
+        margin-bottom: .5em;
+      }
+    }
+
+    .menutitle {
+      display: flex;
+      align-items: center;
+
+      padding: $default-gutter/2 $default-gutter;
+      cursor: pointer;
+      text-transform: uppercase;
+      opacity: $default-opacity;
+
+      .icon-menu {
+        // color: currentColor;
+        fill: currentColor;
+
+        // margin: 0 0 0 2px;
+        // font-size: $default-font-size * 1.2;
+        height: $default-font-size;
+        width: $default-font-size;
+      }
+
+      .menu-text {
+        margin: 0 0 0 .8em;
+        font-size: $default-font-size;
+        font-weight: $font-weight-heavy;
+        letter-spacing: 2px;
+        line-height: 1;
+      }
+    }
+
+    .menu {
+      animation-name: fadeIn;
+      animation-duration: 1s;
+      animation-fill-mode: both;
+
+      display: none;
+
+      li {
+        &.active {
+          background: transparent;
+
+          a, a:hover {
+            font-weight: 600;
+            color: #FFF;
+          }
+        }
+
+        a {
+          width: 100%;
+          display: inline-block;
+          margin: 0;
+          line-height: 23px;
+          color: rgba(255, 255, 255, 0.6);
+          font-weight: 300;
+          text-transform: uppercase;
+        }
+
+        .menu-item-text {
+          padding: $default-gutter/4 $default-gutter;
+        }
+      }
+    }
+  }
+}

+ 209 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_typography.scss

@@ -0,0 +1,209 @@
+@import "variables";
+
+body {
+  font-family: $default-font-family;
+  font-size: $default-font-size;
+  font-weight: $default-font-weight;
+  line-height: $default-line-height;
+
+  text-rendering: optimizeLegibility;
+  vertical-align: baseline;
+}
+
+body, caption, th, td, input, textarea, select, option, legend, fieldset, h1, h2, h3, h4, h5, h6 {
+  font-size-adjust: 0.5;
+}
+
+#main {
+  font-size: $default-font-size;
+  /* equivalent to 16px */
+  line-height: 1.25;
+  /* equivalent to 20px */
+
+  @media (min-width: $tablet-breakpoint) {
+    font-size: 1em;
+    line-height: 1.375;
+  }
+}
+
+
+
+p {
+  padding-top: 0;
+  margin: 0 auto 1em auto;
+}
+
+strong, b {
+  font-weight: 600;
+}
+
+em, i {
+  font-style: italic;
+}
+
+h1 {
+  margin-top: 0.6875em;  /* (22px / 48px) * 1.5 */
+  margin-bottom: 0.22916667em; /* (22px / 48px) * .5 */
+  font-weight: $font-weight-header;
+  font-family: $wide-font-family;
+  font-size: 3em;
+  line-height: 1.05;
+  letter-spacing: -.01em;
+
+  @media (max-width: $tablet-breakpoint) {
+    font-size: 2.5em;
+    line-height: 1.05;
+    margin-top: 0.73333334em;  /* (22px / 45px) * 1.5 */
+    margin-bottom: 0.24444445em; /* (22px / 45px) * .5 */
+  }
+
+  @media (max-width: $mobile-breakpoint) {
+    font-size: 2em;
+    line-height: 1.125;
+    margin-top: 0.9375em; /* (20px / 32px) * 1.5 */
+    margin-bottom: 0.3125em; /* (20px / 32px) * .5 */
+  }
+}
+
+h1 + h2 {
+  margin-top: 0;
+}
+
+h2 {
+  margin-top: 1.03125em; /* (22px / 32px) * 1.5 */
+  margin-bottom: 0.34375em; /* (22px / 32px) * .5 */
+  font-weight: $font-weight-header;
+  font-family: $wide-font-family;
+
+  letter-spacing: -0.01em;
+
+  font-size: 2.25em;
+  line-height: 1.25;
+
+  @media (max-width: $tablet-breakpoint) {
+    font-size: 2em;
+    line-height: 1.25;
+    margin-top: 1.03125em; /* (22px / 32px) * 1.5 */
+    margin-bottom: 0.34375em; /* (22px / 32px) * .5 */
+  }
+
+  @media (max-width: $mobile-breakpoint) {
+    font-size: 1.625em;
+    line-height: 1.15384615;
+    margin-top: 1.15384616em; /* (20px / 26px) * 1.5 */
+    margin-bottom: 0.38461539em; /* (20px / 26px) * .5 */
+  }
+}
+
+h2 + h3 {
+  margin-top: 0;
+}
+
+h3 {
+  margin-top: 1.37500001em; /* (22px / 24px) * 1.5 */
+  margin-bottom: 0.45833334em; /* (22px / 24px) * .5 */
+  font-weight: $font-weight-header;
+  font-family: $wide-font-family;
+
+  font-size: 1.75em;
+  line-height: 1.25;
+
+  @media (max-width: $tablet-breakpoint) {
+    font-size: 1.5em;
+    line-height: 1.25;
+    margin-top: 1.37500001em; /* (22px / 24px) * 1.5 */
+    margin-bottom: 0.45833334em; /* (22px / 24px) * .5 */
+  }
+
+  @media (max-width: $mobile-breakpoint) {
+    font-size: 1.375em;
+    line-height: 1.13636364;
+    margin-top: 1.36363637em; /* (20px / 22px) * 1.5 */
+    margin-bottom: 0.45454546em; /* (20px / 22px) * .5 */
+  }
+}
+
+h4, h5, h6 {
+  font-size: 1.125em;
+  line-height: 1.11111111;
+  margin-top: 1.83333333em; /* (22px / 18px) * 1.5 */
+  margin-bottom: 0.61111111em; /* (22px / 18px) * .5 */
+
+
+  @media (max-width: $mobile-breakpoint) {
+    line-height: 1.22222222;
+    margin-top: 1.66666667em; /* (20px / 18px) * 1.5 */
+    margin-bottom: 0.55555556em; /* (20px / 18px) * .5 */
+  }
+}
+
+
+ul {
+  list-style-type: disc;
+}
+
+ul ul {
+  margin: 0 0 0 25px;
+}
+
+ol {
+  list-style-type: decimal;
+}
+
+ol ol {
+  margin: 0 0 0 25px;
+}
+
+hr {
+  clear: both;
+  width: 100%;
+  padding: 0;
+  margin: (2 * $default-line-height * $default-font-size) 0;
+  border: none;
+  border-top: 2px solid $base-color;
+  border-bottom: 2px solid $base-color;
+  border-radius: 2px;
+  text-align: center;
+}
+
+blockquote {
+  background: darken($body-bgcolor, 5%);
+  margin: 1em 0; /* (20px / 20px) */
+  color: #555;
+  border-left: 5px solid $base-color;
+  padding: .5em;
+  font-style: italic;
+
+  font-size: 1.25em;
+  line-height: 1.45833333;
+
+  @media (max-width: $tablet-breakpoint) {
+    line-height: 1.25;
+  }
+}
+
+blockquote p {
+  margin: 0;
+}
+
+blockquote .author {
+  text-align: right;
+  font-size: .875em;
+  letter-spacing: .125em;
+  color: $grey;
+}
+
+code {
+  @if(lightness($body-bgcolor) > 50) {
+    background-color: darken($body-bgcolor, 5%);
+  } @else {
+    background-color: lighten($body-bgcolor, 5%);
+  }
+
+  border-radius: $default-border-radius;
+  padding: 1px 3px;
+}
+
+code, kbd, samp {
+  font-family: $mono-font-family;
+}

+ 53 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/_variables.scss

@@ -0,0 +1,53 @@
+// Colors
+
+$black: #000;
+$red: #A71E2E;
+$green: #00D400;
+$purple: #522158;
+$very-dark-grey: #111;
+$dark-grey: #444;
+$grey: #808080;
+$light-grey: #ccc;
+$very-light-grey: #fbfbfb;
+$white: #fff;
+
+$base-color: $purple;
+$base-font-color: $very-dark-grey;
+$body-bgcolor: $very-light-grey;
+
+// Fonts
+$font-weight-light: 300;
+$font-weight-normal: 400;
+$font-weight-heavy: 600;
+$font-weight-header: 700;
+$default-font-weight: $font-weight-normal;
+
+$default-font-size: 16px;
+$default-line-height: 1.25;
+$button-font-size: 14px;
+
+
+
+$default-font-family: Oxygen, Tahoma, Verdana, Helvetica, Arial, sans-serif;
+$wide-font-family: Montserrat, sans-serif;
+$mono-font-family: Inconsolata, Consolas, "Deja Vu Sans Mono", "Bitstream Vera Sans Mono", "Droid Sans Mono", "Andale Mono", Anonymous, "Monaco", monospaced;
+
+// Borders
+$default-border-color: $base-color;
+$default-border-width: 2px;
+$default-border-style: solid;
+$default-border: $default-border-width $default-border-style $default-border-color;
+$default-border-radius: 2px;
+
+// Spacing
+$default-gutter: 20px;
+$sidebar-width: 220px;
+
+// Media
+// $tablet-breakpoint: 768px;
+// $mobile-breakpoint: 480px;
+$tablet-breakpoint: 900px;
+$mobile-breakpoint: 700px;
+
+// Effects
+$default-opacity: 0.85;

+ 213 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/blog.scss

@@ -0,0 +1,213 @@
+@import "variables";
+@import "typography";
+@import "buttons";
+@import "menu";
+@import "layout";
+
+/* ==================================================
+   Global Styles
+================================================== */
+
+*, *:before, *:after {
+  box-sizing: inherit;
+}
+
+:root {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+
+  -webkit-font-smoothing: antialiased;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+
+body {
+  background: $body-bgcolor;
+  color: $base-font-color;
+}
+
+::selection, ::-moz-selection {
+    background: $base-color;
+    color: $body-bgcolor;
+}
+
+a {
+  $anchor-color: lighten(scale_color($base-color, $saturation: 20%), 20%);
+
+  color: $anchor-color;
+  text-decoration: none; //fallback
+  text-decoration: underline solid currentColor;
+
+  &:hover {
+    color: lighten($anchor-color, 20%);
+  }
+}
+
+.mobile-only {
+  @media screen and (min-width: $mobile-breakpoint) {
+    display: none;
+  }
+}
+
+.desktop-and-tablet-only {
+  @media screen and (max-width: $mobile-breakpoint) {
+    display: none;
+  }
+}
+
+/* ==================================================
+   Images
+================================================== */
+
+img {
+    -webkit-backface-visibility: hidden;
+    -moz-backface-visibility: hidden;
+    -ms-backface-visibility: hidden;
+}
+
+/* ==================================================
+   Sections
+================================================== */
+
+#sidebar {
+  background: $base-color;
+  color: $white;
+
+  -webkit-overflow-scrolling: touch;
+
+  display: flex;
+  flex-flow: column nowrap;
+  justify-content: space-between;
+  align-items: stretch;
+
+  @media (max-width: $mobile-breakpoint) {
+    padding-bottom: $default-gutter / 2;
+  }
+
+  #logo {
+    padding: $default-gutter;
+    width: 100%;
+    color: $white;
+
+    .icon {
+      box-shadow: 0px 0px 14px 2px rgba(255, 255, 255, 0.05);
+      display: block;
+      padding: 15px;
+      background: rgba(0, 0, 0, 0.2);
+      height: 100px;
+      width: 100px;
+      margin: 0 auto 10px;
+
+      border-radius: 80px;
+    }
+
+    .text {
+      color: $white;
+      width: 100%;
+      font-size: 30px;
+      line-height: .8;
+      font-weight: 600;
+      font-family: $wide-font-family;
+      text-align: center;
+      text-transform: uppercase;
+      text-shadow: 0px 0px 14px rgba(0, 0, 0, .5);
+
+      @media (min-width: $mobile-breakpoint) {
+        &.desktop-and-tablet-only {
+          display: table-caption; // minimizes line width
+        }
+      }
+    }
+
+    a {
+      text-decoration: none;
+    }
+  }
+}
+
+#socialmedia {
+  // See the icons.svg file for more icons than are used in the default template
+  $icon-size: 34px;
+  $mobile-icon-size: 30px;
+
+  @media (min-width: $mobile-breakpoint) {
+    flex: 0 1 auto;
+    padding: $default-gutter;
+  }
+  @media (max-width: $mobile-breakpoint) {
+    padding: 0 $default-gutter 0 0;
+  }
+
+  ul {
+    margin: 0;
+    padding: 0;
+
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    li {
+      list-style-type: none;
+
+      margin: 0;
+      padding: 0;
+
+      @media (min-width: $mobile-breakpoint) {
+        height: $icon-size;
+        width: $icon-size;
+      }
+
+      @media (max-width: $mobile-breakpoint) {
+        height: $mobile-icon-size;
+        width: $mobile-icon-size;
+        margin-left: $mobile-icon-size/3;
+      }
+    }
+
+
+    .icon {
+      fill: $white;
+      max-height: 100%;
+      max-width: 100%;
+
+      opacity: $default-opacity;
+
+      &:hover {
+        opacity: 1;
+      }
+    }
+  }
+}
+
+#main {
+  @media (min-width: $mobile-breakpoint) {
+    padding: 2rem;
+  }
+  @media (max-width: $mobile-breakpoint) {
+    padding: 1rem;
+  }
+}
+
+#main p:last-child {
+    margin: 0;
+}
+
+.post-header {
+  .byline {
+    .date {
+      font-variant-caps: small-caps;
+    }
+  }
+}
+
+#post {
+  margin: 0 auto;
+  max-width: 700px;
+}
+
+#footercont {
+  color: rgba(0, 0, 0, 0.4);
+  text-transform: uppercase;
+  font-size: 11px;
+}

+ 1 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/lotus-highlightjs.min.css

@@ -0,0 +1 @@
+.hljs{display:block;overflow-x:auto;padding:0.5em;background:#fbfbfb}.hljs,.hljs-subst{color:#000}.hljs-string,.hljs-meta,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-addition{color:#756bb1}.hljs-comment,.hljs-quote{color:#636363}.hljs-number,.hljs-regexp,.hljs-literal,.hljs-bullet,.hljs-link{color:#31a354}.hljs-deletion,.hljs-variable{color:#88f}.hljs-keyword,.hljs-selector-tag,.hljs-title,.hljs-section,.hljs-built_in,.hljs-doctag,.hljs-type,.hljs-tag,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-strong{color:#3182bd}.hljs-emphasis{font-style:italic}.hljs-attribute{color:#e6550d}

+ 461 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/css/normalize.css

@@ -0,0 +1,461 @@
+/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
+
+/**
+ * 1. Change the default font family in all browsers (opinionated).
+ * 2. Correct the line height in all browsers.
+ * 3. Prevent adjustments of font size after orientation changes in
+ *    IE on Windows Phone and in iOS.
+ */
+
+/* Document
+   ========================================================================== */
+
+html {
+  font-family: sans-serif; /* 1 */
+  line-height: 1.15; /* 2 */
+  -ms-text-size-adjust: 100%; /* 3 */
+  -webkit-text-size-adjust: 100%; /* 3 */
+}
+
+/* Sections
+   ========================================================================== */
+
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+
+body {
+  margin: 0;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+article,
+aside,
+footer,
+header,
+nav,
+section {
+  display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+/* Grouping content
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in IE.
+ */
+
+figcaption,
+figure,
+main { /* 1 */
+  display: block;
+}
+
+/**
+ * Add the correct margin in IE 8.
+ */
+
+figure {
+  margin: 1em 40px;
+}
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+  box-sizing: content-box; /* 1 */
+  height: 0; /* 1 */
+  overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+   ========================================================================== */
+
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+ */
+
+a {
+  background-color: transparent; /* 1 */
+  -webkit-text-decoration-skip: objects; /* 2 */
+}
+
+/**
+ * Remove the outline on focused links when they are also active or hovered
+ * in all browsers (opinionated).
+ */
+
+a:active,
+a:hover {
+  outline-width: 0;
+}
+
+/**
+ * 1. Remove the bottom border in Firefox 39-.
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+  border-bottom: none; /* 1 */
+  text-decoration: underline; /* 2 */
+  text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
+
+b,
+strong {
+  font-weight: inherit;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+
+dfn {
+  font-style: italic;
+}
+
+/**
+ * Add the correct background and color in IE 9-.
+ */
+
+mark {
+  background-color: #ff0;
+  color: #000;
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+  font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+/* Embedded content
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+audio,
+video {
+  display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+
+img {
+  border-style: none;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+
+svg:not(:root) {
+  overflow: hidden;
+}
+
+/* Forms
+   ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: sans-serif; /* 1 */
+  font-size: 100%; /* 1 */
+  line-height: 1.15; /* 1 */
+  margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+  overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+  text-transform: none;
+}
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ *    controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+html [type="button"], /* 1 */
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button; /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  border-style: none;
+  padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+  outline: 1px dotted ButtonText;
+}
+
+/**
+ * Change the border, margin, and padding in all browsers (opinionated).
+ */
+
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ *    `fieldset` elements in all browsers.
+ */
+
+legend {
+  box-sizing: border-box; /* 1 */
+  color: inherit; /* 2 */
+  display: table; /* 1 */
+  max-width: 100%; /* 1 */
+  padding: 0; /* 3 */
+  white-space: normal; /* 1 */
+}
+
+/**
+ * 1. Add the correct display in IE 9-.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+  display: inline-block; /* 1 */
+  vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+
+textarea {
+  overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+  box-sizing: border-box; /* 1 */
+  padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+  -webkit-appearance: textfield; /* 1 */
+  outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+  -webkit-appearance: button; /* 1 */
+  font: inherit; /* 2 */
+}
+
+/* Interactive
+   ========================================================================== */
+
+/*
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ */
+
+details, /* 1 */
+menu {
+  display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+  display: list-item;
+}
+
+/* Scripting
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+canvas {
+  display: inline-block;
+}
+
+/**
+ * Add the correct display in IE.
+ */
+
+template {
+  display: none;
+}
+
+/* Hidden
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 10-.
+ */
+
+[hidden] {
+  display: none;
+}

+ 56 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/404.html

@@ -0,0 +1,56 @@
+<html>
+    <head>
+        <link rel="stylesheet" href="css/normalize.css">
+        <link rel="stylesheet" href="css/blog.css">
+        <link href="https://fonts.googleapis.com/css?family=Montserrat:400" rel="stylesheet">
+        <style>
+         body {
+             background-color: #522158;
+             color: white;
+         }
+
+         main {
+             background-image: url(img/black-lotus.svg);
+             background-position: center;
+             background-origin: content-box;
+             background-repeat: no-repeat;
+             background-size: contain;
+
+             display:flex;
+             flex-direction: column;
+             align-items: center;
+             justify-content: center;
+
+             height: 100vh;
+             width: 100vw;
+             padding: 2%;
+         }
+
+         a {
+             text-decoration: none;
+         }
+
+         #spacer {
+             flex: 0 0 50%;
+         }
+         #message{
+             flex: 0 0 50%;
+
+             color: white;
+             font-family: "Montserrat", sans-serif;
+             font-size: 2em;
+             width:50%;
+             text-align:center;
+         }
+
+        </style>
+    </head>
+    <body>
+        <a href="/">
+            <main>
+                <div id="spacer"></div>
+                <p id="message">Emptiness - 404</p>
+            </main>
+        </a>
+    </body>
+</html>

+ 20 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/archives.html

@@ -0,0 +1,20 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Archives{% endblock %}
+{% block content %}
+<div id="posts">
+    <div id="page-header">
+        <h1>Archives</h1>
+    </div>
+    {% for group in groups %}
+        <h4>{{group.group}}</h4>
+        <ul>
+        {% for post in group.posts %}
+        <li>
+            {{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+        {% endfor %}
+        </ul>
+    {% endfor %}
+
+</div>
+{% endblock %}

+ 19 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/author.html

@@ -0,0 +1,19 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Posts by {{author}} {% endblock %}
+{% block content %}
+<div id="posts">
+    <div id="page-header" class="post-header">
+        <h1>Posts by {{author}}</h1>
+    </div>
+    {% for group in groups %}
+    <h4>{{group.group}}</h4>
+    <ul>
+        {% for post in group.posts %}
+        <li>
+            {{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+        {% endfor %}
+    </ul>
+    {% endfor %}
+</div>
+{% endblock %}

+ 77 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/base.html

@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="utf-8">
+        <title>{{title}}{% block subtitle %}{% endblock %}</title>
+        <meta name="description" content="">
+        <meta name="keywords" content="">
+        <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
+        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="images/ico/apple-touch-icon-144.png">
+        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="images/ico/apple-touch-icon-114.png">
+        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="images/ico/apple-touch-icon-72.png">
+        <link rel="apple-touch-icon-precomposed" href="images/ico/apple-touch-icon-57.png">
+
+        <link href="https://fonts.googleapis.com/css?family=Montserrat:400,700|Oxygen:300,400,700|Inconsolata" rel="stylesheet">
+        {% style "css/normalize.css" %}
+        {% style "css/blog.css" %}
+        {% style "css/lotus-highlightjs.min.css" %}
+    </head>
+    <body>
+        <aside id="sidebar">
+            <div id="logo">
+                <a title="{{title}}" href="{{index-uri}}">
+                    <img class="icon" src="{{blog-prefix}}/img/white-lotus.svg">
+                    <div class="text desktop-and-tablet-only">{{title}}</div>
+                    <div class="text mobile-only">{{title}}</div>
+                </a>
+            </div>
+
+            <nav id="sidebar-links">
+                <nav id="menucont">
+                    <input type="checkbox" id="menu-checkbox" class="menu-checkbox">
+                    <label for="menu-checkbox" class="menutitle">
+                        <svg class="icon icon-menu" aria-hidden="true"><use xlink:href="{{blog-prefix}}/img/icons.svg#icon-menu"></use></svg><span class="menu-text">Menu</span>
+                    </label>
+                    <ul class="menu">
+                        <li {% if home %} class="active" {% endif %}><a title="Home" href="{{index-uri}}"><div class="menu-item-text">Home</div></a></li>
+                        <li {% if archives %} class="active" {% endif %}><a title="Archives" href="{{archives-uri}}"><div class="menu-item-text">Archives</div></a></li>
+                        {% if tags|not-empty %}
+                        <li {%ifequal uri tags-uri %} class="active" {% endifequal %}><a title="Tags" href="{{tags-uri}}"><div class="menu-item-text">Tags</div></a></li>
+                        {% endif %}
+                        {% for nav-page in navbar-pages %}
+                        <li {%ifequal page.uri nav-page.uri %} class="active" {% endifequal %}>
+                            <a href="{{nav-page.uri}}"><div class="menu-item-text">{{nav-page.title}}</div></a>
+                        </li>
+                        {% endfor %}
+                        <!-- <li><a title="RSS" href="{{rss-uri}}"><div class="menu-item-text">RSS</div></a></li> -->
+                    </ul>
+                </nav>
+
+                <nav id="socialmedia">
+                    <ul>
+                        <li><a title="LinkedIn" href="https://www.linkedin.com/in/matthewdavidson1" rel="external"><svg class="icon icon-linkedin"><use xlink:href="{{blog-prefix}}/img/icons.svg#icon-linkedin"></use></svg></a></li>
+                        <li><a title="GitHub" href="https://github.com/KingMob" rel="external"><svg class="icon icon-github-circled"><use xlink:href="{{blog-prefix}}/img/icons.svg#icon-github-circled"></use></svg></a></li>
+                        <li><a title="RSS Feed" href="{{rss-uri}}"><svg class="icon icon-rss-squared"><use xlink:href="{{blog-prefix}}/img/icons.svg#icon-rss-squared"></use></svg></a></li>
+                    </ul>
+                </nav>
+            </nav>
+        </aside>
+
+        <article id="main">
+            {% block content %}
+            {% endblock %}
+            <hr/>
+            <div id="footercont">
+                Copyright &copy; {{today|date:yyyy}} {{author}}
+                <br>Powered by <a href="http://cryogenweb.org">Cryogen</a>
+                <br>Theme by <a href="http://github.com/KingMob">KingMob</a>
+            </div>
+        </article>
+
+        {% script "js/highlight.pack.js" %}
+        <script>hljs.initHighlightingOnLoad();</script>
+
+        {% if post.klipse %} {{post.klipse|safe}} {% endif %}
+        {% if page.klipse %} {{page.klipse|safe}} {% endif %}
+    </body>
+</html>

+ 16 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/home.html

@@ -0,0 +1,16 @@
+{% extends "/html/base.html" %}
+{% block content %}
+<div id="post">
+    {% include "/html/post-content.html" %}
+    {% if disqus? %}
+    <div id="comments">
+        <a href="{{post.uri}}#disqus_thread">View Comments</a>
+    </div>
+    {% endif %}
+
+    {% with prev=post.prev next=post.next%}
+    {% include "/html/prev-next.html" %}
+    {% endwith %}
+
+</div>
+{% endblock %}

+ 16 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/page.html

@@ -0,0 +1,16 @@
+{% extends "/html/base.html" %}
+{% block subtitle %}: {{page.title}}{% endblock %}
+{% block content %}
+<div id="custom-page">
+    <div id="page-header">
+        <h1>{{page.title}}</h1>
+    </div>
+    {% if page.toc %}{{page.toc|safe}}{% endif %}
+    {{page.content|safe}}
+
+    {% with prev=page.prev next=page.next%}
+    {% include "/html/prev-next.html" %}
+    {% endwith %}
+
+</div>
+{% endblock %}

+ 25 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/post-content.html

@@ -0,0 +1,25 @@
+<div class="post-header">
+    <div id="post-meta">
+        <h1>{{post.title}}</h1>
+        <div class="byline">
+            <span class="date">{{post.date|date:longDate}}</span>
+            {% if post.author %}
+            <span class="author">By: {{post.author}}</span>
+            {% endif %}
+        </div>
+    </div>
+</div>
+<div>
+    {% if post.toc %}{{post.toc|safe}}{% endif %}
+    {{post.content|safe}}
+</div>
+{% if post.tags|not-empty %}
+<div id="post-tags">
+    <br/>
+    <b>Tags: </b>
+    {% for tag in post.tags %}
+    <a href="{{tag.uri}}">{{tag.name}}</a>
+    {% endfor %}
+</div>
+{% endif %}
+<br/>

+ 28 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/post.html

@@ -0,0 +1,28 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: {{post.title}}{% endblock %}
+{% block content %}
+<div id="post">
+    {% include "/html/post-content.html" %}
+
+    {% with prev=post.prev next=post.next%}
+    {% include "/html/prev-next.html" %}
+    {% endwith %}
+
+    {% if disqus-shortname %}
+    <div id="disqus_thread"></div>
+    <script type="text/javascript">
+        var disqus_config = function () {
+            this.page.url = "{{site-url}}{{uri}}";
+            this.page.identifier = "{{post.title}}";
+        };
+        (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>
+    {% endif %}
+
+
+</div>
+{% endblock %}

+ 12 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/prev-next.html

@@ -0,0 +1,12 @@
+<div id="prev-next">
+    {% if prev %}
+    <a class="prev" href="{{prev.uri}}"><svg class="icon icon-circle-left"><use xlink:href="{{blog-prefix}}/img/icons.svg#icon-circle-left"></use></svg><div class="nav-text">{{prev.title}}</div></a>
+    {% else %}
+    <div class="prev"></div>
+    {% endif %}
+    {% if next %}
+    <a class="next" href="{{next.uri}}"><div class="nav-text"">{{next.title}}</div><svg class="icon icon-circle-right"><use xlink:href="{{blog-prefix}}/img/icons.svg#icon-circle-right"></use></svg></a>
+    {% else %}
+    <div class="next"></div>
+    {% endif %}
+</div>

+ 29 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/previews.html

@@ -0,0 +1,29 @@
+{% extends "/html/base.html" %}
+{% block content %}
+<div id="post">
+    {% for post in posts %}
+    <div class="post-header">
+        <h1>{{post.title}}</h1>
+        <div id="post-meta">
+            {% if post.author %}
+            <div class="author">{{post.author}}</div>
+            {% endif %}
+            <strong>{{post.date|date:longDate}}</strong>
+        </div>
+    </div>
+    {{post.content|safe}}
+    <br/>
+    <a class="button" href="{{post.uri}}">Continue reading &#8594;</a>
+    <hr>
+    {% endfor %}
+
+    <div id="prev-next">
+        {% if prev-uri %}
+        <a class="prev" href="{{prev-uri}}">&laquo; Prev</a>
+        {% endif %}
+        {% if next-uri %}
+        <a class="next" href="{{next-uri}}">Next &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 16 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/tag.html

@@ -0,0 +1,16 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Posts Tagged &quot;{{name}}&quot;{% endblock %}
+{% block content %}
+<div id="posts-by-tag">
+    <div id="page-header">
+        <h1>Posts Tagged &quot;{{name}}&quot;</h1>
+    </div>
+    <ul>
+    {% for post in posts %}
+        <li>
+            <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+    {% endfor %}
+    </ul>
+</div>
+{% endblock %}

+ 15 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/html/tags.html

@@ -0,0 +1,15 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Tags{% endblock %}
+{% block content %}
+<div id="tags-page">
+    <div id="page-header">
+        <h1>Tags</h1>
+    </div>
+
+    <ul>
+        {% for tag in tags %}
+        <li><a href="{{tag.uri}}">{{tag.name}}</a></li>
+        {% endfor %}
+    </ul>
+</div>
+{% endblock %}

文件差异内容过多而无法显示
+ 0 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/img/black-lotus.svg


+ 96 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/img/icons.svg

@@ -0,0 +1,96 @@
+<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<defs>
+<symbol id="icon-mail" viewBox="0 0 32 32">
+<title>mail</title>
+<path d="M29.728 26.848v-13.696q-0.576 0.64-1.248 1.152-4.768 3.68-7.616 6.048-0.896 0.768-1.472 1.184t-1.536 0.896-1.824 0.416h-0.064q-0.832 0-1.824-0.416t-1.536-0.896-1.472-1.184q-2.816-2.368-7.616-6.048-0.672-0.512-1.248-1.152v13.696q0 0.224 0.192 0.416t0.384 0.16h26.304q0.224 0 0.384-0.16t0.192-0.416zM29.728 8.096v-0.448t-0.032-0.224-0.032-0.224-0.096-0.16-0.16-0.128-0.256-0.064h-26.304q-0.224 0-0.384 0.192t-0.192 0.384q0 3.008 2.656 5.088 3.424 2.688 7.136 5.632 0.128 0.096 0.64 0.544t0.8 0.672 0.8 0.544 0.896 0.512 0.768 0.16h0.064q0.352 0 0.768-0.16t0.896-0.512 0.8-0.544 0.8-0.672 0.64-0.544q3.712-2.944 7.168-5.632 0.96-0.768 1.792-2.080t0.832-2.336zM32 7.424v19.424q0 1.184-0.832 2.016t-2.016 0.864h-26.304q-1.152 0-2.016-0.864t-0.832-2.016v-19.424q0-1.184 0.832-2.016t2.016-0.832h26.304q1.184 0 2.016 0.832t0.832 2.016z"></path>
+</symbol>
+<symbol id="icon-twitter" viewBox="0 0 30 32">
+<title>twitter</title>
+<path d="M28.928 7.296q-1.184 1.728-2.88 2.976 0 0.256 0 0.736 0 2.336-0.672 4.64t-2.048 4.448-3.296 3.744-4.608 2.624-5.792 0.96q-4.832 0-8.832-2.592 0.608 0.064 1.376 0.064 4.032 0 7.168-2.464-1.888-0.032-3.36-1.152t-2.048-2.848q0.608 0.096 1.088 0.096 0.768 0 1.536-0.192-2.016-0.416-3.328-1.984t-1.312-3.68v-0.064q1.216 0.672 2.624 0.736-1.184-0.8-1.888-2.048t-0.704-2.752q0-1.568 0.8-2.912 2.176 2.656 5.248 4.256t6.656 1.76q-0.16-0.672-0.16-1.312 0-2.4 1.696-4.064t4.064-1.696q2.528 0 4.224 1.824 1.952-0.384 3.68-1.408-0.672 2.048-2.56 3.2 1.664-0.192 3.328-0.896z"></path>
+</symbol>
+<symbol id="icon-facebook" viewBox="0 0 18 32">
+<title>facebook</title>
+<path d="M17.12 0.224v4.704h-2.784q-1.536 0-2.080 0.64t-0.544 1.92v3.392h5.248l-0.704 5.28h-4.544v13.568h-5.472v-13.568h-4.544v-5.28h4.544v-3.904q0-3.328 1.856-5.152t4.96-1.824q2.624 0 4.064 0.224z"></path>
+</symbol>
+<symbol id="icon-github-circled" viewBox="0 0 27 32">
+<title>github-circled</title>
+<path d="M13.728 2.272q3.712 0 6.88 1.856t4.992 4.992 1.824 6.88q0 4.48-2.624 8.064t-6.752 4.96q-0.48 0.096-0.704-0.128t-0.224-0.544q0-0.032 0-1.376t0-2.4q0-1.728-0.928-2.528 1.024-0.096 1.824-0.32t1.696-0.704 1.44-1.184 0.96-1.856 0.352-2.688q0-2.144-1.408-3.68 0.672-1.632-0.128-3.648-0.512-0.16-1.472 0.192t-1.632 0.8l-0.672 0.416q-1.664-0.48-3.424-0.48t-3.456 0.48q-0.256-0.192-0.736-0.48t-1.504-0.704-1.504-0.224q-0.8 2.016-0.16 3.648-1.408 1.536-1.408 3.68 0 1.504 0.384 2.656t0.928 1.888 1.44 1.184 1.664 0.704 1.824 0.32q-0.672 0.64-0.864 1.856-0.384 0.16-0.8 0.256t-1.024 0.096-1.152-0.384-0.992-1.12q-0.352-0.576-0.864-0.928t-0.896-0.448l-0.352-0.032q-0.384 0-0.512 0.064t-0.096 0.224 0.16 0.256 0.224 0.192l0.128 0.096q0.384 0.192 0.768 0.672t0.576 0.928l0.192 0.416q0.224 0.672 0.768 1.088t1.184 0.544 1.248 0.096 0.992-0.032l0.416-0.096q0 0.704 0 1.6t0.032 0.96q0 0.32-0.256 0.544t-0.704 0.128q-4.128-1.376-6.752-4.96t-2.624-8.064q0-3.744 1.856-6.88t4.96-4.992 6.912-1.856zM5.184 21.984q0.064-0.128-0.096-0.224-0.192-0.032-0.256 0.032-0.032 0.128 0.128 0.224t0.224-0.032zM5.76 22.592q0.128-0.096-0.032-0.288-0.192-0.16-0.288-0.064-0.128 0.096 0.032 0.288t0.288 0.064zM6.272 23.392q0.192-0.128 0-0.352-0.128-0.224-0.288-0.096-0.16 0.096 0 0.32t0.288 0.128zM7.040 24.128q0.128-0.128-0.064-0.32-0.224-0.224-0.352-0.064-0.16 0.16 0.064 0.352 0.192 0.192 0.352 0.032zM8.064 24.576q0.032-0.192-0.256-0.288-0.256-0.064-0.32 0.128t0.224 0.288q0.256 0.096 0.352-0.128zM9.184 24.672q0-0.224-0.32-0.192-0.288 0-0.288 0.192 0 0.224 0.32 0.192 0.288 0 0.288-0.192zM10.208 24.512q-0.032-0.224-0.32-0.16-0.288 0.032-0.256 0.256t0.32 0.128 0.256-0.224z"></path>
+</symbol>
+<symbol id="icon-rss" viewBox="0 0 25 32">
+<title>rss</title>
+<path d="M6.848 24q0 1.44-0.992 2.432t-2.432 0.992-2.432-0.992-0.992-2.432 0.992-2.432 2.432-0.992 2.432 0.992 0.992 2.432zM16 26.208q0.032 0.48-0.288 0.832-0.32 0.384-0.864 0.384h-2.4q-0.448 0-0.768-0.288t-0.352-0.736q-0.384-4.096-3.296-7.008t-7.008-3.296q-0.448-0.032-0.736-0.352t-0.288-0.768v-2.4q0-0.512 0.384-0.832 0.288-0.32 0.768-0.32h0.096q2.848 0.224 5.44 1.44t4.64 3.232q2.016 2.016 3.232 4.64t1.44 5.472zM25.152 26.24q0.032 0.48-0.32 0.832-0.32 0.352-0.832 0.352h-2.56q-0.448 0-0.8-0.32t-0.32-0.736q-0.224-3.84-1.824-7.296t-4.128-6.016-6.016-4.128-7.264-1.824q-0.448-0.032-0.768-0.352t-0.32-0.768v-2.56q0-0.512 0.352-0.832 0.32-0.32 0.8-0.32h0.032q4.704 0.256 8.96 2.144t7.616 5.248q3.328 3.328 5.248 7.616t2.144 8.96z"></path>
+</symbol>
+<symbol id="icon-menu" viewBox="0 0 27 32">
+<title>menu</title>
+<path d="M27.424 24v2.272q0 0.48-0.32 0.8t-0.832 0.352h-25.12q-0.48 0-0.8-0.352t-0.352-0.8v-2.272q0-0.48 0.352-0.8t0.8-0.352h25.12q0.48 0 0.832 0.352t0.32 0.8zM27.424 14.848v2.304q0 0.448-0.32 0.8t-0.832 0.32h-25.12q-0.48 0-0.8-0.32t-0.352-0.8v-2.304q0-0.448 0.352-0.8t0.8-0.32h25.12q0.48 0 0.832 0.32t0.32 0.8zM27.424 5.728v2.272q0 0.448-0.32 0.8t-0.832 0.352h-25.12q-0.48 0-0.8-0.352t-0.352-0.8v-2.272q0-0.48 0.352-0.832t0.8-0.32h25.12q0.48 0 0.832 0.32t0.32 0.832z"></path>
+</symbol>
+<symbol id="icon-pinterest-circled" viewBox="0 0 27 32">
+<title>pinterest-circled</title>
+<path d="M27.424 16q0 3.744-1.824 6.88t-4.992 4.992-6.88 1.856q-1.984 0-3.904-0.576 1.056-1.664 1.376-2.944 0.192-0.608 0.992-3.776 0.352 0.704 1.28 1.216t2.048 0.512q2.176 0 3.872-1.216t2.624-3.36 0.928-4.832q0-2.048-1.088-3.84t-3.072-2.88-4.544-1.152q-1.888 0-3.52 0.544t-2.752 1.376-1.952 1.952-1.184 2.304-0.384 2.4q0 1.856 0.704 3.264t2.112 1.984q0.512 0.224 0.672-0.352 0.032-0.128 0.128-0.544t0.16-0.544q0.096-0.416-0.192-0.768-0.928-1.088-0.928-2.688 0-2.688 1.856-4.64t4.896-1.952q2.688 0 4.224 1.472t1.504 3.808q0 3.040-1.248 5.152t-3.136 2.144q-1.088 0-1.728-0.8t-0.416-1.856q0.128-0.608 0.48-1.664t0.544-1.824 0.192-1.376q0-0.896-0.48-1.472t-1.376-0.576q-1.12 0-1.888 0.992t-0.768 2.56q0 1.28 0.448 2.176l-1.76 7.456q-0.288 1.248-0.224 3.168-3.68-1.632-5.952-5.024t-2.272-7.552q0-3.744 1.856-6.88t4.96-4.992 6.912-1.856 6.88 1.856 4.992 4.992 1.824 6.88z"></path>
+</symbol>
+<symbol id="icon-gplus" viewBox="0 0 41 32">
+<title>gplus</title>
+<path d="M25.664 16.288q0 3.744-1.568 6.624t-4.416 4.544-6.592 1.632q-2.656 0-5.088-1.024t-4.192-2.784-2.784-4.192-1.024-5.088 1.024-5.088 2.784-4.192 4.192-2.784 5.088-1.024q5.12 0 8.768 3.424l-3.552 3.424q-2.080-2.016-5.216-2.016-2.208 0-4.064 1.088t-2.944 3.008-1.088 4.16 1.088 4.16 2.944 3.008 4.064 1.088q1.472 0 2.72-0.416t2.048-1.024 1.408-1.376 0.864-1.504 0.384-1.312h-7.424v-4.512h12.352q0.224 1.152 0.224 2.176zM41.152 14.112v3.776h-3.744v3.712h-3.744v-3.712h-3.744v-3.776h3.744v-3.712h3.744v3.712h3.744z"></path>
+</symbol>
+<symbol id="icon-mail-alt" viewBox="0 0 32 32">
+<title>mail-alt</title>
+<path d="M32 12.672v14.176q0 1.184-0.832 2.016t-2.016 0.864h-26.304q-1.152 0-2.016-0.864t-0.832-2.016v-14.176q0.8 0.864 1.792 1.568 6.464 4.384 8.896 6.144 1.024 0.768 1.632 1.184t1.696 0.864 1.952 0.416h0.064q0.896 0 1.952-0.416t1.696-0.864 1.632-1.184q3.040-2.176 8.896-6.144 1.024-0.704 1.792-1.568zM32 7.424q0 1.408-0.864 2.688t-2.176 2.208q-6.72 4.672-8.384 5.792-0.16 0.128-0.736 0.544t-0.96 0.704-0.928 0.576-1.024 0.48-0.896 0.16h-0.064q-0.384 0-0.864-0.16t-1.024-0.48-0.96-0.576-0.96-0.704-0.736-0.544q-1.632-1.12-4.704-3.232t-3.648-2.56q-1.12-0.736-2.080-2.048t-0.992-2.464q0-1.376 0.736-2.304t2.112-0.928h26.304q1.152 0 2.016 0.832t0.832 2.016z"></path>
+</symbol>
+<symbol id="icon-linkedin" viewBox="0 0 27 32">
+<title>linkedin</title>
+<path d="M6.24 11.168v17.696h-5.888v-17.696h5.888zM6.624 5.696q0 1.312-0.928 2.176t-2.4 0.864h-0.032q-1.472 0-2.368-0.864t-0.896-2.176 0.928-2.176 2.4-0.864 2.368 0.864 0.928 2.176zM27.424 18.72v10.144h-5.856v-9.472q0-1.888-0.736-2.944t-2.272-1.056q-1.12 0-1.856 0.608t-1.152 1.536q-0.192 0.544-0.192 1.44v9.888h-5.888q0.032-7.136 0.032-11.552t0-5.28l-0.032-0.864h5.888v2.56h-0.032q0.352-0.576 0.736-0.992t0.992-0.928 1.568-0.768 2.048-0.288q3.040 0 4.896 2.016t1.856 5.952z"></path>
+</symbol>
+<symbol id="icon-rss-squared" viewBox="0 0 27 32">
+<title>rss-squared</title>
+<path d="M9.152 22.848q0-0.928-0.672-1.6t-1.632-0.672-1.6 0.672-0.672 1.6 0.672 1.632 1.6 0.672 1.632-0.672 0.672-1.632zM15.424 24.544q-0.256-4.16-3.168-7.104t-7.072-3.136q-0.256-0.032-0.448 0.16t-0.16 0.416v2.272q0 0.224 0.16 0.384t0.384 0.192q2.752 0.192 4.704 2.176t2.144 4.704q0.032 0.224 0.192 0.384t0.384 0.16h2.304q0.224 0 0.416-0.192t0.16-0.416zM22.272 24.544q-0.096-2.752-0.992-5.312t-2.496-4.64-3.68-3.648-4.64-2.496-5.312-0.992q-0.224-0.032-0.416 0.16-0.16 0.16-0.16 0.416v2.272q0 0.224 0.16 0.384t0.384 0.192q3.648 0.128 6.752 1.984t4.992 4.96 1.984 6.752q0 0.256 0.16 0.416t0.416 0.16h2.272q0.224 0 0.416-0.192 0.192-0.16 0.16-0.416zM27.424 7.424v17.152q0 2.112-1.504 3.616t-3.648 1.536h-17.12q-2.144 0-3.648-1.536t-1.504-3.616v-17.152q0-2.112 1.504-3.616t3.648-1.536h17.12q2.144 0 3.648 1.536t1.504 3.616z"></path>
+</symbol>
+<symbol id="icon-stackoverflow" viewBox="0 0 27 32">
+<title>stackoverflow</title>
+<path d="M23.008 29.152h-19.968v-8.576h-2.848v11.424h25.696v-11.424h-2.88v8.576zM6.208 19.776l0.576-2.784 13.984 2.944-0.576 2.784zM8.032 13.12l1.216-2.624 12.928 6.048-1.184 2.592zM11.616 6.752l1.824-2.208 10.976 9.184-1.824 2.176zM18.72 0l8.512 11.456-2.272 1.696-8.544-11.424zM5.888 26.272v-2.848h14.304v2.848h-14.304z"></path>
+</symbol>
+<symbol id="icon-instagram" viewBox="0 0 27 32">
+<title>instagram</title>
+<path d="M18.272 16q0-1.888-1.312-3.232t-3.232-1.344-3.232 1.344-1.344 3.232 1.344 3.232 3.232 1.344 3.232-1.344 1.312-3.232zM20.736 16q0 2.912-2.048 4.992t-4.96 2.048-4.992-2.048-2.048-4.992 2.048-4.992 4.992-2.048 4.96 2.048 2.048 4.992zM22.688 8.672q0 0.672-0.48 1.152t-1.184 0.48-1.152-0.48-0.48-1.152 0.48-1.152 1.152-0.48 1.184 0.48 0.48 1.152zM13.728 4.736q-0.128 0-1.376 0t-1.888 0-1.728 0.064-1.824 0.16-1.28 0.352q-0.896 0.352-1.568 1.024t-1.056 1.568q-0.192 0.512-0.32 1.28t-0.192 1.856-0.032 1.696 0 1.888 0 1.376 0 1.376 0 1.888 0.032 1.696 0.192 1.856 0.32 1.28q0.384 0.896 1.056 1.568t1.568 1.024q0.512 0.192 1.28 0.352t1.824 0.16 1.728 0.064 1.888 0 1.376 0 1.344 0 1.888 0 1.728-0.064 1.856-0.16 1.248-0.352q0.896-0.352 1.6-1.024t1.024-1.568q0.192-0.512 0.32-1.28t0.192-1.856 0.032-1.696 0-1.888 0-1.376 0-1.376 0-1.888-0.032-1.696-0.192-1.856-0.32-1.28q-0.352-0.896-1.024-1.568t-1.6-1.024q-0.512-0.192-1.248-0.352t-1.856-0.16-1.728-0.064-1.888 0-1.344 0zM27.424 16q0 4.096-0.096 5.664-0.16 3.712-2.208 5.76t-5.728 2.208q-1.6 0.096-5.664 0.096t-5.664-0.096q-3.712-0.192-5.76-2.208t-2.208-5.76q-0.096-1.568-0.096-5.664t0.096-5.664q0.16-3.712 2.208-5.76t5.76-2.208q1.568-0.096 5.664-0.096t5.664 0.096q3.712 0.192 5.728 2.208t2.208 5.76q0.096 1.568 0.096 5.664z"></path>
+</symbol>
+<symbol id="icon-tumblr" viewBox="0 0 18 32">
+<title>tumblr</title>
+<path d="M16.864 23.744l1.408 4.224q-0.384 0.608-1.952 1.184t-3.168 0.576q-1.856 0.032-3.424-0.48t-2.528-1.312-1.696-1.888-0.992-2.144-0.288-2.112v-9.728h-3.008v-3.84q1.28-0.448 2.304-1.248t1.632-1.6 1.024-1.824 0.608-1.76 0.256-1.568q0.032-0.096 0.096-0.16t0.128-0.064h4.352v7.584h5.952v4.48h-5.952v9.248q0 0.544 0.096 0.992t0.416 0.96 0.896 0.736 1.44 0.256q1.408-0.032 2.4-0.512z"></path>
+</symbol>
+<symbol id="icon-tumblr-squared" viewBox="0 0 27 32">
+<title>tumblr-squared</title>
+<path d="M20.288 26.080l-1.12-3.264q-0.768 0.384-1.824 0.384-0.64 0.032-1.12-0.16t-0.672-0.576-0.32-0.736-0.096-0.768v-7.104h4.608v-3.456h-4.576v-5.824h-3.36q-0.16 0-0.16 0.16-0.096 0.8-0.32 1.568t-0.704 1.696-1.376 1.696-2.112 1.216v2.944h2.336v7.456q0 1.024 0.384 2.048t1.152 1.984 2.176 1.536 3.136 0.544q1.248 0 2.432-0.448t1.536-0.896zM27.424 7.424v17.152q0 2.112-1.504 3.616t-3.648 1.536h-17.12q-2.144 0-3.648-1.536t-1.504-3.616v-17.152q0-2.112 1.504-3.616t3.648-1.536h17.12q2.144 0 3.648 1.536t1.504 3.616z"></path>
+</symbol>
+<symbol id="icon-stackexchange" viewBox="0 0 23 32">
+<title>stackexchange</title>
+<path d="M22.496 22.368v1.184q0 1.504-1.024 2.592t-2.496 1.056h-1.024l-4.64 4.8v-4.8h-9.44q-1.44 0-2.464-1.056t-1.024-2.592v-1.184h22.112zM22.496 16.544v4.576h-22.112v-4.576h22.112zM22.496 10.688v4.576h-22.112v-4.576h22.112zM22.496 8.192v1.184h-22.112v-1.184q0-1.504 1.024-2.56t2.464-1.056h15.104q1.44 0 2.496 1.056t1.024 2.56z"></path>
+</symbol>
+<symbol id="icon-hacker-news" viewBox="0 0 27 32">
+<title>hacker-news</title>
+<path d="M14.464 17.92l4.736-8.896h-2.016l-2.784 5.568q-0.448 0.864-0.8 1.632l-0.736-1.632-2.784-5.568h-2.144l4.704 8.8v5.792h1.824v-5.696zM27.424 7.424v17.152q0 2.112-1.504 3.616t-3.648 1.536h-17.12q-2.144 0-3.648-1.536t-1.504-3.616v-17.152q0-2.112 1.504-3.616t3.648-1.536h17.12q2.144 0 3.648 1.536t1.504 3.616z"></path>
+</symbol>
+<symbol id="icon-facebook-official" viewBox="0 0 27 32">
+<title>facebook-official</title>
+<path d="M25.92 2.272q0.608 0 1.056 0.448t0.448 1.088v24.384q0 0.64-0.448 1.088t-1.056 0.448h-6.976v-10.656h3.552l0.512-4.128h-4.064v-2.656q0-0.992 0.416-1.472t1.632-0.512l2.176-0.032v-3.68q-1.12-0.16-3.2-0.16-2.4 0-3.872 1.408t-1.44 4.064v3.040h-3.584v4.128h3.584v10.656h-13.152q-0.608 0-1.056-0.448t-0.448-1.088v-24.384q0-0.64 0.448-1.088t1.056-0.448h24.416z"></path>
+</symbol>
+<symbol id="icon-pinterest" viewBox="0 0 23 32">
+<title>pinterest</title>
+<path d="M0 10.656q0-1.92 0.672-3.616t1.856-2.976 2.72-2.208 3.296-1.408 3.616-0.448q2.816 0 5.248 1.184t3.936 3.456 1.504 5.12q0 1.728-0.32 3.36t-1.088 3.168-1.792 2.656-2.56 1.856-3.392 0.672q-1.216 0-2.4-0.576t-1.728-1.568q-0.16 0.704-0.48 2.016t-0.448 1.696-0.352 1.28-0.48 1.248-0.544 1.12-0.832 1.408-1.12 1.536l-0.224 0.096-0.16-0.192q-0.288-2.816-0.288-3.36 0-1.632 0.384-3.68t1.184-5.152 0.928-3.616q-0.576-1.152-0.576-3.008 0-1.504 0.928-2.784t2.368-1.312q1.088 0 1.696 0.736t0.608 1.824q0 1.184-0.768 3.392t-0.8 3.36q0 1.12 0.8 1.856t1.952 0.736q0.992 0 1.824-0.448t1.408-1.216 0.992-1.696 0.672-1.952 0.352-1.984 0.128-1.792q0-3.072-1.952-4.8t-5.12-1.728q-3.552 0-5.952 2.304t-2.4 5.856q0 0.8 0.224 1.536t0.48 1.152 0.48 0.832 0.224 0.544q0 0.48-0.256 1.28t-0.672 0.8q-0.032 0-0.288-0.032-0.928-0.288-1.632-0.992t-1.088-1.696-0.576-1.92-0.192-1.92z"></path>
+</symbol>
+<symbol id="icon-facebook-squared" viewBox="0 0 27 32">
+<title>facebook-squared</title>
+<path d="M22.272 2.272q2.144 0 3.648 1.536t1.504 3.616v17.152q0 2.112-1.504 3.616t-3.648 1.536h-3.328v-10.656h3.552l0.512-4.128h-4.064v-2.656q0-0.992 0.416-1.472t1.632-0.512l2.176-0.032v-3.68q-1.12-0.16-3.2-0.16-2.4 0-3.872 1.408t-1.44 4.064v3.040h-3.584v4.128h3.584v10.656h-9.504q-2.144 0-3.648-1.536t-1.504-3.616v-17.152q0-2.112 1.504-3.616t3.648-1.536h17.12z"></path>
+</symbol>
+<symbol id="icon-linkedin-squared" viewBox="0 0 27 32">
+<title>linkedin-squared</title>
+<path d="M4.224 25.248h4.128v-12.384h-4.128v12.384zM8.64 9.024q-0.032-0.928-0.672-1.536t-1.632-0.608-1.696 0.608-0.672 1.536q0 0.928 0.64 1.536t1.664 0.608v0q1.056 0 1.696-0.608t0.672-1.536zM19.072 25.248h4.128v-7.104q0-2.752-1.312-4.16t-3.424-1.408q-2.432 0-3.744 2.080h0.032v-1.792h-4.128q0.064 1.184 0 12.384h4.128v-6.944q0-0.672 0.128-0.992 0.256-0.608 0.8-1.056t1.312-0.448q2.080 0 2.080 2.816v6.624zM27.424 7.424v17.152q0 2.112-1.504 3.616t-3.648 1.536h-17.12q-2.144 0-3.648-1.536t-1.504-3.616v-17.152q0-2.112 1.504-3.616t3.648-1.536h17.12q2.144 0 3.648 1.536t1.504 3.616z"></path>
+</symbol>
+<symbol id="icon-circle-left" viewBox="0 0 16 16">
+<path d="M8 16c4.418 0 8-3.582 8-8s-3.582-8-8-8-8 3.582-8 8 3.582 8 8 8zM8 1.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5-6.5-2.91-6.5-6.5 2.91-6.5 6.5-6.5z"></path>
+<path d="M10.457 4.957l-1.414-1.414-4.457 4.457 4.457 4.457 1.414-1.414-3.043-3.043z"></path>
+</symbol>
+<symbol id="icon-circle-right" viewBox="0 0 16 16">
+<path d="M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5 6.5 2.91 6.5 6.5-2.91 6.5-6.5 6.5z"></path>
+<path d="M5.543 11.043l1.414 1.414 4.457-4.457-4.457-4.457-1.414 1.414 3.043 3.043z"></path>
+</symbol>
+</defs>
+</svg>

文件差异内容过多而无法显示
+ 0 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/img/white-lotus.svg


文件差异内容过多而无法显示
+ 1 - 0
tinydatacenter.com-v2/app/resources/templates/themes/lotus/js/highlight.pack.js


+ 50 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/buttons.css

@@ -0,0 +1,50 @@
+.button {
+    position: relative;
+    display: inline-block;
+    padding: 7px 12px;
+    margin: 0;
+    width: auto;
+    font-family: "Montserrat";
+    font-size: 16px;
+    text-transform: uppercase;
+    font-weight: 400;
+    cursor: pointer;
+    background: none;
+    border: none;
+    outline: none;
+    text-align: left;
+    letter-spacing: 2px;
+}
+
+.button.fullbutton {
+    width: 100%;
+}
+
+.button.fullbutton span {
+    float: right;
+}
+
+.button:after {
+    content: '';
+    position: absolute;
+    z-index: -1;
+}
+
+/** Colours **/
+
+.button {
+    background: none;
+    border: 2px solid #A71E2E;
+    color: #A71E2E !important;
+}
+
+.button:hover {
+    background: #A71E2E;
+    color: #FFF !important;
+}
+
+.button:active {
+    top: 2px;
+}
+
+

+ 119 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/menu.css

@@ -0,0 +1,119 @@
+/** Menu Styles **/
+
+#menucont ul.menu {
+    margin: 0;
+}
+
+#menucont ul.menu li {
+    position: relative;
+    float: left;
+    width: 100%;
+    list-style-type: none;
+    padding: 0;
+}
+
+#menucont ul.menu li a {
+    float: left;
+    color: #FFF;
+    width: 100%;
+    padding: 10px 20px;
+    margin: 0;
+    font-weight: 300;
+    text-transform: uppercase;
+    line-height: 22px;
+    text-decoration: none;
+    letter-spacing: 2px;
+}
+
+#menucont ul.menu li a:hover {
+    background: rgba(0, 0, 0, 0.2);
+}
+
+#menucont ul.menu li.active a,
+#menucont ul.menu li.active a:hover {
+    background: rgba(0, 0, 0, 0.2);
+    font-weight: 600;
+}
+
+#menucont .menutitle {
+    display: none;
+}
+
+@media screen and (max-width: 480px) {
+
+    #menucont .menu {
+        display: none;
+        margin: 0;
+    }
+
+    #menucont .menu.open {
+        display: block;
+    }
+
+    #menucont ul.menu li {
+        position: relative;
+        float: none;
+    }
+
+    #menucont ul.menu li, #menucont ul.menu ul li {
+        display: block;
+    }
+
+    #menucont ul.menu li a {
+        width: 100%;
+        display: inline-block;
+        margin: 0;
+        padding: 5px 0;
+        text-indent: 0;
+        line-height: 23px;
+        color: rgba(255, 255, 255, 0.6);
+        background: none;
+        font-weight: 300;
+        text-transform: uppercase;
+    }
+
+    #menucont ul.menu li.active a,
+    #menucont ul.menu li.active a:hover {
+        font-weight: 600;
+        color: #FFF;
+        background: none;
+    }
+
+    #menucont ul.menu li a:hover {
+        color: #FFF;
+        background: none;
+    }
+
+    #menucont ul.menu > li:last-child a {
+        margin: 0 0 20px 0;
+    }
+
+    #menucont .menutitle {
+        display: block;
+        width: 100%;
+        padding: 12px 42px 12px 0;
+        display: block;
+        cursor: pointer;
+        text-align: left;
+        color: #FFF;
+        text-transform: uppercase;
+    }
+
+    #menucont .menutitle p {
+        margin-bottom: 0;
+    }
+
+    #menucont .menutitle p strong {
+        margin: 0 0 0 15px;
+        font-size: 18px;
+        font-weight: 300;
+        letter-spacing: 2px;
+    }
+
+    #menucont .menutitle span {
+        margin: 0;
+        font-size: 20px;
+    }
+
+}
+

+ 77 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/reset.css

@@ -0,0 +1,77 @@
+/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain)
+ Removed code from first reset list since it conflics with highlight.js.
+*/
+
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    font-size: 100%;
+    font: inherit;
+    vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+
+article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
+    display: block;
+}
+
+body {
+    line-height: 1;
+}
+
+ol, ul {
+    list-style: none;
+}
+
+blockquote, q {
+    quotes: none;
+}
+
+blockquote:before, blockquote:after, q:before, q:after {
+    content: '';
+    content: none;
+}
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+/* Clear Fix Styles */
+
+.clearfix:after {
+    visibility: hidden;
+    display: block;
+    font-size: 0;
+    content: " ";
+    clear: both;
+    height: 0;
+}
+
+.clearfix {
+    display: inline-block;
+}
+
+/* start commented backslash hack \*/
+* html .clearfix {
+    height: 1%;
+}
+
+.clearfix {
+    display: block;
+}
+
+/* close commented backslash hack */
+{
+    height: 1%
+;
+}
+
+.clearfix {
+    display: block;
+}
+

+ 287 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/style.css

@@ -0,0 +1,287 @@
+/* ==================================================
+   CSS Imports
+================================================== */
+@import url("reset.css");
+@import url("typography.css");
+@import url("menu.css");
+@import url("buttons.css");
+/* ==================================================
+   Google Fonts
+================================================== */
+@import url("http://fonts.googleapis.com/css?family=Oxygen:300,400,700");
+@import url("http://fonts.googleapis.com/css?family=Montserrat:400,700");
+
+/* ==================================================
+   Global Styles
+================================================== */
+
+* {
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+}
+
+pre code{
+    display: block;
+    overflow-x: auto;
+    background: #2d2d2d;
+    color: #cccccc;
+    padding: 0.5em;
+}
+
+html {
+    height: 100%;
+    overflow: auto;
+
+    -webkit-font-smoothing: antialiased;
+    -webkit-text-size-adjust: 100%;
+    -ms-text-size-adjust: 100%;
+}
+
+body {
+    font-family: "Oxygen", Arial, Verdana, Helvetica, sans-serif;
+    font-size: 15px;
+    color: #555;
+    font-weight: 400;
+    line-height: 28px;
+    background: #FFF;
+
+    text-rendering: optimizeLegibility;
+    vertical-align: baseline;
+}
+
+::selection {
+    background: #A71E2E;
+    color: #FFF;
+}
+
+::-moz-selection {
+    background: #A71E2E;
+    color: #FFF;
+}
+
+a {
+    color: #A71E2E;
+    text-decoration: none;
+}
+
+a:hover {
+    color: #222;
+}
+
+/* ==================================================
+   Images
+================================================== */
+
+img {
+    -webkit-backface-visibility: hidden;
+    -moz-backface-visibility: hidden;
+    -ms-backface-visibility: hidden;
+}
+
+img.imgfull {
+    float: left;
+    width: 100%;
+    max-width: 1000px;
+    margin: 0 0 20px 0;
+    border-top: 5px solid #A71E2E;
+}
+
+/* ==================================================
+   Layout Styles
+================================================== */
+
+.container {
+    position: relative;
+    z-index: 2;
+    width: 100%;
+    padding: 0 30px;
+    min-width: 280px;
+    line-height: 26px;
+}
+
+.container .bodycontainer {
+    margin: 0 auto;
+    width: 100%;
+    max-width: 1000px;
+}
+
+/* ==================================================
+   Sections
+================================================== */
+
+#left {
+    position: fixed;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    max-width: 280px;
+    background: #A71E2E;
+    color: #FFF;
+    z-index: 3;
+    overflow-y: auto;
+
+    -webkit-overflow-scrolling: touch;
+}
+
+#left p#logo {
+    margin: 0 0 20px 0;
+}
+
+#left p#logo a {
+    float: left;
+    display: block;
+    padding: 30px 20px;
+    width: 100%;
+    color: #FFF;
+    margin: 0 0 20px 0;
+}
+
+#left p#logo a span.fa {
+    float: left;
+    display: block;
+    padding: 25px;
+    background: rgba(0, 0, 0, 0.2);
+    font-size: 48px;
+    margin: 0 0 10px 0;
+
+    -webkit-border-radius: 80px;
+    -moz-border-radius: 80px;
+    border-radius: 80px;
+}
+
+#left p#logo a span.text {
+    float: left;
+    width: 100%;
+    font-size: 30px;
+    line-height: 30px;
+    font-weight: 700;
+    font-family: "Montserrat";
+    text-transform: uppercase;
+}
+
+#left #socialmedia ul {
+    position: absolute;
+    bottom: 30px;
+    left: 30px;
+    margin: 0;
+}
+
+#left #socialmedia ul li {
+    display: inline-block;
+    list-style-type: none;
+    margin: 0 12px 0 0;
+    padding: 0;
+}
+
+#left #socialmedia ul li a {
+    font-size: 23px;
+    color: #FFF;
+    opacity: 0.4;
+}
+
+#left #socialmedia ul li a:hover {
+    opacity: 1;
+}
+
+#right {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    max-width: 1240px;
+    z-index: 2;
+    padding: 40px 50px 40px 320px;
+}
+
+#right p {
+    margin: 0 0 20px 0;
+}
+
+#right p:last-child {
+    margin: 0;
+}
+
+#footercont {
+    color: rgba(0, 0, 0, 0.4);
+    text-transform: uppercase;
+    font-size: 14px;
+}
+
+#footercont p {
+    margin: 0;
+    text-align: left;
+    letter-spacing: 1.4px;
+}
+
+/* ==================================================
+   Responsive Media Queries - Tablets
+================================================== */
+
+@media screen and (max-width: 768px) {
+
+    #left {
+        max-width: 200px;
+    }
+
+    #left #socialmedia ul {
+        bottom: 20px;
+        left: 20px;
+    }
+
+    #left #socialmedia ul li {
+        margin: 0 8px 0 0;
+    }
+
+    #left #socialmedia ul li a {
+        font-size: 21px;
+    }
+
+    #right {
+        padding: 20px 20px 20px 230px;
+    }
+
+}
+
+/* ==================================================
+   Responsive Media Queries - Mobiles
+================================================== */
+
+@media screen and (max-width: 480px) {
+
+    #left {
+        position: relative;
+        top: 0;
+        left: 0;
+        width: 100%;
+        max-width: 100%;
+        padding: 20px;
+    }
+
+    #left p#logo a {
+        padding: 0;
+    }
+
+    #left #socialmedia ul {
+        position: relative;
+        bottom: auto;
+        left: auto;
+        margin: 5px 0 0 0;
+    }
+
+    #left #socialmedia ul li a {
+        font-size: 25px;
+    }
+
+    #right {
+        position: relative;
+        top: 0;
+        left: 0;
+        width: 100%;
+        max-width: 100%;
+        padding: 30px 20px;
+    }
+
+}
+

+ 135 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/css/typography.css

@@ -0,0 +1,135 @@
+.textleft {
+    text-align: left;
+}
+
+.textcentre {
+    text-align: center;
+}
+
+.textright {
+    text-align: right;
+}
+
+p {
+    margin: 0 0 20px 0;
+}
+
+strong, b {
+    font-weight: 600;
+}
+
+em, i {
+    font-style: italic;
+}
+
+h1 {
+    margin: 0 0 10px 0;
+    font-weight: 700;
+    font-family: "Montserrat";
+    text-transform: uppercase;
+    font-size: 46px;
+    line-height: 42px;
+    letter-spacing: -1px;
+    color: #111;
+}
+
+h2 {
+    margin: 30px 0 15px 0;
+    font-weight: 350;
+    font-family: "Montserrat";
+    text-transform: uppercase;
+    font-size: 23px;
+    line-height: 21px;
+    letter-spacing: -0.5px;
+    color: #111;
+}
+
+h3 {
+    margin: 26px 0 13px 0;
+    font-weight: 200;
+    font-family: "Montserrat";
+    font-size: 16px;
+    line-height: 16px;
+    letter-spacing: -0.4px;
+    color: #111;
+}
+
+h4, h5, h6 {
+    margin: 20px 0 10px 0;
+    font-weight: 100;
+    font-family: "Montserrat";
+    font-size: 12px;
+    line-height: 12px;
+    color: #111;
+}
+
+ul {
+    margin: 0 0 20px 35px;
+    list-style-type: square;
+}
+
+ul li {
+    padding: 0 0 0 2px;
+}
+
+ul ul {
+    margin: 0 0 0 25px;
+}
+
+ol {
+    margin: 0 0 20px 35px;
+    list-style-type: decimal;
+}
+
+ol li {
+    padding: 0 0 0 2px;
+}
+
+ol ol {
+    margin: 0 0 0 25px;
+}
+
+hr {
+    clear: both;
+    float: left;
+    width: 100%;
+    padding: 0;
+    margin: 30px 0 40px 0;
+    border: none;
+    border-top: 4px solid #A71E2E;
+    text-align: center;
+}
+
+blockquote {
+    background: #EEE;
+    margin: 0 0 5px 0 !important;
+    color: #555;
+    border-left: 5px solid #A71E2E;
+    padding: 15px;
+    font-style: italic;
+}
+
+blockquote p {
+    margin: 0;
+}
+
+blockquote p.author {
+    text-align: right;
+    font-size: 14px;
+    letter-spacing: 2px;
+    color: #999;
+}
+
+@media screen and (max-width: 768px) {
+
+    .textcentre {
+        text-align: left;
+    }
+
+    .textright {
+        text-align: left;
+    }
+
+}
+
+

+ 40 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/404.html

@@ -0,0 +1,40 @@
+<html>
+    <head>
+        <style>        
+        #message{
+               display:block;
+               width:100%;
+               padding:150px 0;
+               line-height:1.6em;
+               text-align:center;
+            }
+        h1, h2 {            
+               color: rgb(151, 151, 151);                
+               float: left;
+               margin:0 0 0 40px;
+               padding:0;
+               float:left;
+               font-family: Georgia, 'Times New Roman', Times, serif;               
+               font-weight: normal;               
+               line-height: normal;                                
+               text-transform: uppercase;
+        }
+        #message .aside{display:block; width:80%; margin:0 auto; padding:0;}        
+        #message .aside h2 span{display:block; font-size:30px;}        
+        #message p:first-child{margin-top:0;}
+        h1 {margin-top:-90px; font-size:200px;}
+        h2 {font-size: 60px;}
+        </style>    
+    </head>
+    <body>
+        <div class="content">          
+            <section id="message">
+              <div class="aside">
+                <h1>404</h1>
+                <h2>Error ! <span>Page Not Found</span></h2>
+              </div>
+            </section>
+        </div>
+    </body>
+</html>
+

+ 20 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/archives.html

@@ -0,0 +1,20 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Archives{% endblock %}
+{% block content %}
+<div id="posts">
+    <div id="page-header">
+        <h1>Archives</h1>
+    </div>
+    {% for group in groups %}
+        <h4>{{group.group}}</h4>
+        <ul>
+        {% for post in group.posts %}
+        <li>
+            {{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+        {% endfor %}
+        </ul>
+    {% endfor %}
+
+</div>
+{% endblock %}

+ 19 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/author.html

@@ -0,0 +1,19 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Posts by {{author}} {% endblock %}
+{% block content %}
+<div id="posts">
+    <div id="page-header" class="post-header">
+        <h1>Posts by {{author}}</h1>
+    </div>
+    {% for group in groups %}
+    <h4>{{group.group}}</h4>
+    <ul>
+        {% for post in group.posts %}
+        <li>
+            {{post.date|date:"MMM dd"}} - <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+        {% endfor %}
+    </ul>
+    {% endfor %}
+</div>
+{% endblock %}

+ 87 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/base.html

@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
+<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
+<!--[if IE 8 ]><html class="ie ie8" lang="en"><![endif]-->
+<!--[if (gte IE 9)|!(IE)]><!--><html lang="en"><!--<![endif]-->
+<head>
+    <!-- Website Template designed by www.downloadwebsitetemplates.co.uk -->
+    <!-- Modified to fit Cryogen.-->
+    <meta charset="UTF-8">
+    <title>{{title}}{% block subtitle %}{% endblock %}</title>
+    <meta name="description" content="">
+    <meta name="keywords" content="">
+    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
+    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="images/ico/apple-touch-icon-144.png">
+    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="images/ico/apple-touch-icon-114.png">
+    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="images/ico/apple-touch-icon-72.png">
+    <link rel="apple-touch-icon-precomposed" href="images/ico/apple-touch-icon-57.png">
+    <link rel="shortcut icon" href="images/ico/favicon.png">
+    <!--[if IE]><![endif]-->
+    {% style "css/buttons.css" %}
+    {% style "css/menu.css" %}
+    {% style "css/reset.css" %}
+    {% style "css/style.css" %}
+    {% style "css/typography.css" %}
+    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
+    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.7.0/styles/tomorrow-night-eighties.min.css">
+    <!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+</head>
+<body>
+
+<div id="left">
+
+    <p id="logo">
+        <a title="{{title}}" href="{{index-uri}}">
+            <span class="fa fa-rocket"></span>
+            <span class="text">Nucleus</span>
+        </a>
+    </p>
+
+    <div id="menucont" class="bodycontainer clearfix">
+        <div class="menutitle">
+            <p><span class="fa fa-reorder"></span><strong>Menu</strong></p>
+        </div>
+        <ul class="menu">
+            <li {% if home %} class="active" {% endif %}><a title="Home" href="{{index-uri}}">Home</a></li>
+            <li {% if archives %} class="active" {% endif %}><a title="Archives" href="{{archives-uri}}">Archives</a></li>
+            {% if tags|not-empty %}
+            <li {%ifequal uri tags-uri %} class="active" {% endifequal %}><a title="Tags" href="{{tags-uri}}">Tags</a></li>
+            {% endif %}
+            {% for nav-page in navbar-pages %}
+            <li {%ifequal page.uri nav-page.uri %} class="active" {% endifequal %}>
+                <a href="{{nav-page.uri}}">{{nav-page.title}}</a>
+            </li>
+            {% endfor %}
+            <li><a title="RSS" href="{{rss-uri}}">RSS</a></li>
+        </ul>
+    </div>
+
+    <div id="socialmedia" class="clearfix">
+        <ul>
+            <li><a title="GitHub" href="./" rel="external"><span class="fa fa-github"></span></a></li>
+            <li><a title="Stack Overflow" href="./" rel="external"><span class="fa fa-stack-overflow"></span></a></li>
+            <li><a title="Google+" href="./" rel="external"><span class="fa fa-google-plus"></span></a></li>
+            <li><a title="LinkedIn" href="./" rel="external"><span class="fa fa-linkedin"></span></a></li>
+            <li><a title="Last.fm" href="./" rel="external"><span class="fa fa-lastfm"></span></a></li>
+        </ul>
+    </div>
+
+</div>
+
+<div id="right" class="clearfix">
+    {% block content %}
+    {% endblock %}
+<hr/>
+<div id="footercont" class="clearfix">Copyright &copy; {{today|date:yyyy}} {{author}}
+    <p>Powered by <a href="http://cryogenweb.org">Cryogen</a> | Free Website Template by <a title="free website templates" href="http://www.downloadwebsitetemplates.co.uk" rel="external">Download Website Templates</a></p>
+
+</div>
+</div>
+<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
+{% script "js/highlight.pack.js" %}
+<script>hljs.initHighlightingOnLoad();</script>
+{% script "js/scripts.js" %}
+{% if post.klipse %} {{post.klipse|safe}} {% endif %}
+{% if page.klipse %} {{page.klipse|safe}} {% endif %}
+</body>
+</html>

+ 20 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/home.html

@@ -0,0 +1,20 @@
+{% extends "/html/base.html" %}
+{% block content %}
+<div id="post">
+    {% include "/html/post-content.html" %}
+    {% if disqus? %}
+    <div id="comments">
+        <a href="{{post.uri}}#disqus_thread">View Comments</a>
+    </div>
+    {% endif %}
+
+    <div id="prev-next">
+        {% if post.prev %}
+        <a class="button" href="{{post.prev.uri}}">&laquo; {{post.prev.title}}</a>
+        {% endif %}
+        {% if post.next %}
+        <a class="button right" href="{{post.next.uri}}">{{post.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 20 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/page.html

@@ -0,0 +1,20 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: {{page.title}}{% endblock %}
+{% block content %}
+<div id="custom-page">
+    <div id="page-header">
+        <h1>{{page.title}}</h1>
+    </div>
+    {% if page.toc %}{{page.toc|safe}}{% endif %}
+    {{page.content|safe}}
+
+    <div id="prev-next">
+        {% if page.prev %}
+        <a class="button" href="{{page.prev.uri}}">&laquo; {{page.prev.title}}</a>
+        {% endif %}
+        {% if page.next %}
+        <a class="right button" href="{{page.next.uri}}">{{page.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 23 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/post-content.html

@@ -0,0 +1,23 @@
+<div class="post-header">
+    <div id="post-meta" class="row">
+        <strong>{{post.date|date:longDate}}</strong>
+        {% if post.author %}
+        <span class="col-lg-6 right">By: {{post.author}}</span>
+        {% endif %}
+    </div>
+    <h1>{{post.title}}</h1>
+</div>
+<div>
+    {% if post.toc %}{{post.toc|safe}}{% endif %}
+    {{post.content|safe}}
+</div>
+{% if post.tags|not-empty %}
+<div id="post-tags">
+    <br/> 
+    <b>Tags: </b>
+    {% for tag in post.tags %}
+    <a href="{{tag.uri}}">{{tag.name}}</a>
+    {% endfor %}
+</div>
+{% endif %}
+<br/>

+ 32 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/post.html

@@ -0,0 +1,32 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: {{post.title}}{% endblock %}
+{% block content %}
+<div id="post">
+    {% include "/html/post-content.html" %}
+    <div id="prev-next">
+        {% if post.prev %}
+        <a class="button" href="{{post.prev.uri}}">&laquo; {{post.prev.title}}</a>
+        {% endif %}
+        {% if post.next %}
+        <a class="right button" href="{{post.next.uri}}">{{post.next.title}} &raquo;</a>
+        {% endif %}
+    </div>
+
+    {% if disqus-shortname %}
+    <div id="disqus_thread"></div>
+    <script type="text/javascript">
+        var disqus_config = function () {
+            this.page.url = "{{site-url}}{{uri}}";
+            this.page.identifier = "{{post.title}}";
+        };
+        (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>
+    {% endif %}
+
+
+</div>
+{% endblock %}

+ 29 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/previews.html

@@ -0,0 +1,29 @@
+{% extends "/html/base.html" %}
+{% block content %}
+<div id="post">
+    {% for post in posts %}
+    <div class="post-header">
+        <h1>{{post.title}}</h1>
+        <div id="post-meta">
+            {% if post.author %}
+            <div class="author">{{post.author}}</div>
+            {% endif %}
+            <strong>{{post.date|date:longDate}}</strong>
+        </div>
+    </div>
+    {{post.content|safe}}
+    <br/>
+    <a class="button" href="{{post.uri}}">Continue reading &#8594;</a>
+    <hr>
+    {% endfor %}
+
+    <div id="prev-next">
+        {% if prev-uri %}
+        <a class="button left" href="{{prev-uri}}">&laquo; Prev</a>
+        {% endif %}
+        {% if next-uri %}
+        <a class="button right" href="{{next-uri}}">Next &raquo;</a>
+        {% endif %}
+    </div>
+</div>
+{% endblock %}

+ 16 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/tag.html

@@ -0,0 +1,16 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Posts Tagged &quot;{{name}}&quot;{% endblock %}
+{% block content %}
+<div id="posts-by-tag">
+    <div id="page-header">
+        <h1>Posts Tagged &quot;{{name}}&quot;</h1>
+    </div>
+    <ul>
+    {% for post in posts %}
+        <li>
+            <a href="{{post.uri}}">{{post.title}}</a>
+        </li>
+    {% endfor %}
+    </ul>
+</div>
+{% endblock %}

+ 15 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/html/tags.html

@@ -0,0 +1,15 @@
+{% extends "/html/base.html" %}
+{%block subtitle %}: Tags{% endblock %}
+{% block content %}
+<div id="tags-page">
+    <div id="page-header">
+        <h1>Tags</h1>
+    </div>
+
+    <ul>
+        {% for tag in tags %}
+        <li><a href="{{tag.uri}}">{{tag.name}}</a></li>
+        {% endfor %}
+    </ul>
+</div>
+{% endblock %}

文件差异内容过多而无法显示
+ 1 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/js/highlight.pack.js


+ 26 - 0
tinydatacenter.com-v2/app/resources/templates/themes/nucleus/js/scripts.js

@@ -0,0 +1,26 @@
+/** External Links **/
+
+function externalLinks() { if (!document.getElementsByTagName) return; var anchors = document.getElementsByTagName("a"); for (var i=0; i<anchors.length; i++) { var anchor = anchors[i]; if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") anchor.target = "_blank"; } } window.onload = externalLinks;
+
+/** jQuery Easing **/
+
+jQuery.easing.jswing=jQuery.easing.swing;
+jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,a,c,b,d){return jQuery.easing[jQuery.easing.def](e,a,c,b,d)},easeInQuad:function(e,a,c,b,d){return b*(a/=d)*a+c},easeOutQuad:function(e,a,c,b,d){return-b*(a/=d)*(a-2)+c},easeInOutQuad:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a+c;return-b/2*(--a*(a-2)-1)+c},easeInCubic:function(e,a,c,b,d){return b*(a/=d)*a*a+c},easeOutCubic:function(e,a,c,b,d){return b*((a=a/d-1)*a*a+1)+c},easeInOutCubic:function(e,a,c,b,d){if((a/=d/2)<1)return b/
+2*a*a*a+c;return b/2*((a-=2)*a*a+2)+c},easeInQuart:function(e,a,c,b,d){return b*(a/=d)*a*a*a+c},easeOutQuart:function(e,a,c,b,d){return-b*((a=a/d-1)*a*a*a-1)+c},easeInOutQuart:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a*a*a+c;return-b/2*((a-=2)*a*a*a-2)+c},easeInQuint:function(e,a,c,b,d){return b*(a/=d)*a*a*a*a+c},easeOutQuint:function(e,a,c,b,d){return b*((a=a/d-1)*a*a*a*a+1)+c},easeInOutQuint:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a*a*a*a+c;return b/2*((a-=2)*a*a*a*a+2)+c},easeInSine:function(e,
+a,c,b,d){return-b*Math.cos(a/d*(Math.PI/2))+b+c},easeOutSine:function(e,a,c,b,d){return b*Math.sin(a/d*(Math.PI/2))+c},easeInOutSine:function(e,a,c,b,d){return-b/2*(Math.cos(Math.PI*a/d)-1)+c},easeInExpo:function(e,a,c,b,d){return a==0?c:b*Math.pow(2,10*(a/d-1))+c},easeOutExpo:function(e,a,c,b,d){return a==d?c+b:b*(-Math.pow(2,-10*a/d)+1)+c},easeInOutExpo:function(e,a,c,b,d){if(a==0)return c;if(a==d)return c+b;if((a/=d/2)<1)return b/2*Math.pow(2,10*(a-1))+c;return b/2*(-Math.pow(2,-10*--a)+2)+c},
+easeInCirc:function(e,a,c,b,d){return-b*(Math.sqrt(1-(a/=d)*a)-1)+c},easeOutCirc:function(e,a,c,b,d){return b*Math.sqrt(1-(a=a/d-1)*a)+c},easeInOutCirc:function(e,a,c,b,d){if((a/=d/2)<1)return-b/2*(Math.sqrt(1-a*a)-1)+c;return b/2*(Math.sqrt(1-(a-=2)*a)+1)+c},easeInElastic:function(e,a,c,b,d){e=1.70158;var f=0,g=b;if(a==0)return c;if((a/=d)==1)return c+b;f||(f=d*0.3);if(g<Math.abs(b)){g=b;e=f/4}else e=f/(2*Math.PI)*Math.asin(b/g);return-(g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f))+c},easeOutElastic:function(e,
+a,c,b,d){e=1.70158;var f=0,g=b;if(a==0)return c;if((a/=d)==1)return c+b;f||(f=d*0.3);if(g<Math.abs(b)){g=b;e=f/4}else e=f/(2*Math.PI)*Math.asin(b/g);return g*Math.pow(2,-10*a)*Math.sin((a*d-e)*2*Math.PI/f)+b+c},easeInOutElastic:function(e,a,c,b,d){e=1.70158;var f=0,g=b;if(a==0)return c;if((a/=d/2)==2)return c+b;f||(f=d*0.3*1.5);if(g<Math.abs(b)){g=b;e=f/4}else e=f/(2*Math.PI)*Math.asin(b/g);if(a<1)return-0.5*g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f)+c;return g*Math.pow(2,-10*(a-=1))*Math.sin((a*
+d-e)*2*Math.PI/f)*0.5+b+c},easeInBack:function(e,a,c,b,d,f){if(f==undefined)f=1.70158;return b*(a/=d)*a*((f+1)*a-f)+c},easeOutBack:function(e,a,c,b,d,f){if(f==undefined)f=1.70158;return b*((a=a/d-1)*a*((f+1)*a+f)+1)+c},easeInOutBack:function(e,a,c,b,d,f){if(f==undefined)f=1.70158;if((a/=d/2)<1)return b/2*a*a*(((f*=1.525)+1)*a-f)+c;return b/2*((a-=2)*a*(((f*=1.525)+1)*a+f)+2)+c},easeInBounce:function(e,a,c,b,d){return b-jQuery.easing.easeOutBounce(e,d-a,0,b,d)+c},easeOutBounce:function(e,a,c,b,d){return(a/=
+d)<1/2.75?b*7.5625*a*a+c:a<2/2.75?b*(7.5625*(a-=1.5/2.75)*a+0.75)+c:a<2.5/2.75?b*(7.5625*(a-=2.25/2.75)*a+0.9375)+c:b*(7.5625*(a-=2.625/2.75)*a+0.984375)+c},easeInOutBounce:function(e,a,c,b,d){if(a<d/2)return jQuery.easing.easeInBounce(e,a*2,0,b,d)*0.5+c;return jQuery.easing.easeOutBounce(e,a*2-d,0,b,d)*0.5+b*0.5+c}});
+
+/** Responsive Menu **/
+
+$(document).ready(function() {
+	$(".menutitle").click(function() {
+		$(".menu").slideToggle(350,'easeInOutExpo', function() {
+			$(this).attr('style', '').toggleClass('open');
+		});
+		$(this).toggleClass("active");
+	});
+});
+

+ 8 - 0
tinydatacenter.com-v2/app/src/cryogen/core.clj

@@ -0,0 +1,8 @@
+(ns cryogen.core
+  (:require [cryogen-core.compiler :refer [compile-assets-timed]]
+            [cryogen-core.plugins :refer [load-plugins]]))
+
+(defn -main []
+  (load-plugins)
+  (compile-assets-timed)
+  (System/exit 0))

+ 32 - 0
tinydatacenter.com-v2/app/src/cryogen/server.clj

@@ -0,0 +1,32 @@
+(ns cryogen.server
+  (:require [compojure.core :refer [GET defroutes]]
+            [compojure.route :as route]
+            [ring.util.response :refer [redirect resource-response]]
+            [ring.util.codec :refer [url-decode]]
+            [cryogen-core.watcher :refer [start-watcher!]]
+            [cryogen-core.plugins :refer [load-plugins]]
+            [cryogen-core.compiler :refer [compile-assets-timed read-config]]
+            [cryogen-core.io :refer [path]]))
+
+(defn init []
+  (load-plugins)
+  (compile-assets-timed)
+  (let [ignored-files (-> (read-config) :ignored-files)]
+    (start-watcher! "resources/templates" ignored-files compile-assets-timed)))
+
+(defn wrap-subdirectories
+  [handler]
+  (fn [request]
+    (let [req-uri (.substring (url-decode (:uri request)) 1)
+          res-path (path req-uri (when (:clean-urls? (read-config)) "index.html"))]
+      (or (resource-response res-path {:root "public"})
+          (handler request)))))
+
+(defroutes routes
+  (GET "/" [] (redirect (let [config (read-config)]
+                          (path (:blog-prefix config) "/"
+                                (when-not (:clean-urls? config) "index.html")))))
+  (route/resources "/")
+  (route/not-found "Page not found"))
+
+(def handler (wrap-subdirectories routes))

+ 3 - 0
tinydatacenter.com-v2/build-static.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker build -t website-v2-static -f Dockerfile.static .

+ 3 - 0
tinydatacenter.com-v2/build.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker build -t website-v2-dev .

+ 1 - 0
tinydatacenter.com-v2/md-pages

@@ -0,0 +1 @@
+app/resources/templates/md/pages

+ 1 - 0
tinydatacenter.com-v2/md-posts

@@ -0,0 +1 @@
+app/resources/templates/md/posts

+ 3 - 0
tinydatacenter.com-v2/start-static.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker run -d --restart always  --name website-v2-static -p 23080:9090 website-v2-static

+ 3 - 0
tinydatacenter.com-v2/start.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker run -d --restart always --mount type=bind,source=$PWD/app,target=/tmp/app --name website-v2-dev -p 23000:3000 website-v2

+ 3 - 0
tinydatacenter.com-v2/stop-static.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker rm -f website-v2-static

+ 3 - 0
tinydatacenter.com-v2/stop.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker rm -f website-v2-dev

部分文件因为文件数量过多而无法显示