My static website generator using poole https://www.xythobuz.de
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

page.html 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <!DOCTYPE html>
  2. <!--%
  3. if page.get("lang", "en") == "de":
  4. print '<html lang="de">'
  5. else:
  6. print '<html lang="en">'
  7. %-->
  8. <head>
  9. <meta charset="{{ htmlspecialchars(__encoding__) }}" />
  10. <title>{{ htmlspecialchars(page.title) }} - xythobuz.de</title>
  11. <meta name="description" content="{{ htmlspecialchars(page.get("description", "Electronics & Software Projects")) }}" />
  12. <meta name="keywords" content="{{ htmlspecialchars(page.get("keywords", "xythobuz")) }}" />
  13. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  14. <link rel="author" href="xythobuz@xythobuz.de" />
  15. <link rel="shortcut icon" href="img/favicon.ico" />
  16. <link rel="alternate" type="application/rss+xml" title="xythobuz.de" href="rss.xml" />
  17. <link type="text/css" rel="stylesheet" href="css/style.css" />
  18. <link type="text/css" rel="stylesheet" href="css/print.css" media="print" />
  19. <link type="text/css" rel="stylesheet" href="css/sh_bright.min.css" />
  20. <link type="text/css" rel="stylesheet" href="css/gh-fork-ribbon.css" />
  21. <link type="text/css" rel="stylesheet" href="css/lightgallery.min.css" />
  22. <script type="text/javascript" src="js/sh_main.js"></script>
  23. </head>
  24. <body onload="sh_highlightDocument('/js/sh/', '.min.js');">
  25. <!--%
  26. if page.get("github", "") != "":
  27. # GitHub Fork-Me Ribbon
  28. print '<div class="github-fork-ribbon-wrapper right-bottom">'
  29. print '<div class="github-fork-ribbon"><a href="'
  30. print page.github
  31. print '">Fork this with Git</a></div></div>'
  32. %-->
  33. <div id="wrap"><div id="nav">
  34. <ul>
  35. <li id="home"><a href="index.html">xythobuz.de</a></li>
  36. <!--%
  37. mpages = [p for p in pages if p.get("parent", "") == "main" and p.lang == "en"]
  38. mpages.sort(key=lambda p: int(p["position"]))
  39. entry = ' <li><a href="%s">%s</a></li>'
  40. for p in mpages[1:]:
  41. print(entry % (htmlspecialchars(p["url"]), htmlspecialchars(p["title"])))
  42. %-->
  43. <li>-</li>
  44. <li><a href="https://git.xythobuz.de/explore/repos">Gitea</a></li>
  45. <li><a href="https://github.com/xythobuz">GitHub</a></li>
  46. <li><a href="printer.html">🔨</a></li>
  47. <div class="fonts">
  48. <li><span class="font-big">Text:</span></li>
  49. <li><a class="dec" href="#"><span class="font-big">A</span><span class="font-small">A</span></a></li>
  50. <li><a class="reset" href="#"><span class="font-big">A</span><span class="font-big">A</span></a></li>
  51. <li><a class="inc" href="#"><span class="font-small">A</span><span class="font-big">A</span></a></li>
  52. </div>
  53. <!--%
  54. tmp = [p for p in page["lang_links"].iteritems()]
  55. if len(tmp) > 1:
  56. print ' <li>'
  57. print " ".join(["<li><a href='%s'>%s</a></li>" % (url, lang) for lang, url in page["lang_links"].iteritems()]).replace(">en<", '><img src="img/en.png" alt="English"><').replace(">de<", '><img src="img/de.png" alt="Deutsch"><')
  58. print "</li>"
  59. %-->
  60. </ul>
  61. </div></div>
  62. <div id="content">
  63. <!--%
  64. from datetime import datetime
  65. if page.get("noheader", "false") == "false":
  66. if page.get("title", "") == "Blog":
  67. print "<h1>%s</h1>" % (page.get("post", ""))
  68. else:
  69. if page.get("lang", "en") == "de":
  70. print "<h1>%s</h1>" % (page.get("title_de", ""))
  71. else:
  72. print "<h1>%s</h1>" % (page.get("title", ""))
  73. if page.get("date", "") != "":
  74. if page.get("lang", "en") == "de":
  75. date = datetime.strptime(page["date"], "%Y-%m-%d").strftime("%d.%m.%Y")
  76. print "<i>Ver&ouml;ffentlicht am %s.</i>" % date
  77. else:
  78. date = datetime.strptime(page["date"], "%Y-%m-%d").strftime("%B %d, %Y")
  79. print "<i>Published at %s.</i>" % date
  80. if page.get("date", "") != "" and page.get("update", "") != "":
  81. print "<br>"
  82. if page.get("update", "") != "":
  83. if page.get("lang", "en") == "de":
  84. date = datetime.strptime(page["update"], "%Y-%m-%d").strftime("%d.%m.%Y")
  85. print "<i>Zuletzt aktualisiert am %s.</i>" % date
  86. else:
  87. date = datetime.strptime(page["update"], "%Y-%m-%d").strftime("%B %d, %Y")
  88. print "<i>Last updated at %s.</i>" % date
  89. %-->
  90. {{ __content__ }}
  91. <hr>
  92. <!--%
  93. # Disqus Comments (only show button to load afterwards)
  94. if page.get("comments", "false") == "true":
  95. print '<div style="text-align: center;">'
  96. print '<button class="show-comments">Load Disqus comments</button>'
  97. print '<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>'
  98. print '</div>'
  99. print '<div id="disqus_thread"></div>'
  100. print '<hr>'
  101. elif page.get("comments", "false") != "false":
  102. print '<div style="text-align: center;"><a href="%s">Head over here to discuss this article!</a></div>' % page.get("comments", "false")
  103. print '<hr>'
  104. %-->
  105. </div>
  106. <div id="footer">
  107. <a href="https://hg.sr.ht/~obensonne/poole">Poole</a>
  108. &middot;
  109. <a href="http://shjs.sourceforge.net">SHJS</a>
  110. &middot;
  111. <a href="https://github.com/sachinchoolur/lightGallery">lightGallery</a>
  112. &middot;
  113. <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">CC-BY</a>
  114. &middot;
  115. <a href="http://www.amazon.de/?_encoding=UTF8&amp;camp=1638&amp;creative=19454&amp;linkCode=ur2&amp;site-redirect=de&amp;tag=xythobuzorg-21">Amazon.de Affiliate</a>
  116. &middot;
  117. <a href="http://www.amazon.de/registry/wishlist/1TURV4XV2J3VT">Amazon.de Wishlist</a>
  118. &middot;
  119. <a href="http://steamcommunity.com/id/xythobuz/wishlist/?sort=price">Steam Wishlist</a>
  120. &middot;
  121. <a href="https://www.paypal.com/us/cgi-bin/webscr?cmd=_send-money&nav=1&email=xythobuz@me.com">PayPal</a>
  122. </div>
  123. <script type="text/javascript" src="js/jquery.min.js"></script>
  124. <!--%
  125. # Dynamically load Disqus comments after user requested it
  126. if page.get("comments", "false") == "true":
  127. print '<script type="text/javascript">'
  128. print 'var disqus_shortname = "xythobuz";'
  129. print 'var disqus_identifier = "http://xythobuz.org/' + page["url"] + '";'
  130. print 'var disqus_url = "http://xythobuz.org/' + page["url"] + '";'
  131. print '$(document).ready(function() {'
  132. print '$(".show-comments").on("click", function(){'
  133. print '(function() {'
  134. print 'var dsq = document.createElement("script"); dsq.type = "text/javascript"; dsq.async = true;'
  135. print 'dsq.src = "http://" + disqus_shortname + ".disqus.com/embed.js";'
  136. print '(document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0] ).appendChild(dsq);'
  137. print '})();'
  138. print '$(this).fadeOut();'
  139. print '});'
  140. print '});'
  141. print '</script>'
  142. %-->
  143. <script type="text/javascript">
  144. $(document).ready(function() {
  145. jQuery(window).resize(function() {
  146. $('#wrap').css('height', $('#nav').css('height'));
  147. });
  148. var fontSize = parseInt($('body').css('font-size'), 10);
  149. var initialFontSize = fontSize;
  150. $('.inc').on('click', function() {
  151. fontSize += 1;
  152. $('#content').css('font-size', fontSize + 'px');
  153. })
  154. $('.dec').on('click', function() {
  155. if (fontSize > 1) {
  156. fontSize -= 1;
  157. $('#content').css('font-size', fontSize + 'px');
  158. }
  159. })
  160. $('.reset').on('click', function() {
  161. if (fontSize != initialFontSize) {
  162. fontSize = initialFontSize;
  163. $('#content').css('font-size', initialFontSize + 'px');
  164. }
  165. })
  166. $(document).keypress(function(event) {
  167. if (event.charCode == '+'.charCodeAt(0)) {
  168. fontSize += 1;
  169. $('#content').css('font-size', fontSize + 'px');
  170. }
  171. if (event.charCode == '-'.charCodeAt(0)) {
  172. if (fontSize > 1) {
  173. fontSize -= 1;
  174. $('#content').css('font-size', fontSize + 'px');
  175. }
  176. }
  177. if (event.charCode == '0'.charCodeAt(0)) {
  178. if (fontSize != initialFontSize) {
  179. fontSize = initialFontSize;
  180. $('#content').css('font-size', initialFontSize + 'px');
  181. }
  182. }
  183. });
  184. })
  185. </script>
  186. <script type="text/javascript" src="js/jquery.mousewheel.min.js"></script>
  187. <script type="text/javascript" src="js/lightgallery-all.min.js"></script>
  188. <script type="text/javascript">
  189. $(document).ready(function() {
  190. var lg = document.getElementsByClassName("lightgallery");
  191. for (var i = 0; i < lg.length; i++) {
  192. var settings = {
  193. loadYoutubeThumbnail: true,
  194. youtubeThumbSize: 'mqdefault',
  195. loadVimeoThumbnail: true,
  196. vimeoThumbSize: 'thumbnail_medium',
  197. youtubePlayerParams: {
  198. modestbranding: 1,
  199. showinfo: 0,
  200. rel: 0
  201. },
  202. vimeoPlayerParams: {
  203. byline: 0,
  204. portrait: 0
  205. },
  206. thumbnail:true,
  207. animateThumb: true,
  208. showThumbByDefault: false,
  209. galleryId: i
  210. };
  211. var d = lg.item(i);
  212. if ($(d).find(".border").length > 0) {
  213. settings.selector = '.border';
  214. }
  215. $(d).lightGallery(settings);
  216. }
  217. });
  218. </script>
  219. <script>
  220. (function(f, a, t, h, o, m){
  221. a[h]=a[h]||function(){
  222. (a[h].q=a[h].q||[]).push(arguments)
  223. };
  224. o=f.createElement('script'),
  225. m=f.getElementsByTagName('script')[0];
  226. o.async=1; o.src=t; o.id='fathom-script';
  227. m.parentNode.insertBefore(o,m)
  228. })(document, window, '//stats.xythobuz.de/tracker.js', 'fathom');
  229. fathom('set', 'siteId', 'APYRK');
  230. fathom('trackPageview');
  231. </script>
  232. </body>
  233. </html>