/assets/wiki.html

https://bitbucket.org/saibotd/bitbeaker/ · HTML · 87 lines · 80 code · 6 blank · 1 comment · 0 complexity · bee71616642b4b3b32c07f72a3b3a421 MD5 · raw file

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Wiki</title>
  6. <script type="text/javascript" src="file:///android_asset/creole.js"></script>
  7. <script type="text/javascript" src="file:///android_asset/markdown.js"></script>
  8. <script type="text/javascript" src="file:///android_asset/textile.js"></script>
  9. </head>
  10. <body>
  11. <select id="markup">
  12. <option value="plain">Plain text</option>
  13. <option value="markdown">Markdown</option>
  14. <option value="creole">Creole</option>
  15. <!--<option value="rest">reStructuredText</option>-->
  16. <option value="textile">Textile</option>
  17. </select>
  18. <a id="home" href="">Wiki Home</a>
  19. <div id="wiki"></div>
  20. <pre id="wiki_plain"></pre>
  21. <script language="javascript">
  22. var data = bitbeaker.getData();
  23. var markup = document.getElementById("markup");
  24. markup.addEventListener('change', changeMarkup, false);
  25. var div = document.getElementById('wiki');
  26. var pre = document.getElementById('wiki_plain');
  27. document.getElementById('home').href = bitbeaker.getWikiHomeUrl();
  28. // called from WikiActivity when page has finished loading
  29. function updateDropdownMenu() {
  30. var tmp = bitbeaker.getMarkup();
  31. if (tmp == "markdown" || tmp == "creole" /*|| tmp == "rest" */|| tmp == "textile")
  32. markup.value = tmp;
  33. else markup.value = "plain";
  34. // trigger change event manually, http://stackoverflow.com/a/2856602/262462
  35. var evt = document.createEvent("HTMLEvents");
  36. evt.initEvent("change", false, true);
  37. markup.dispatchEvent(evt);
  38. }
  39. function changeMarkup() {
  40. if (markup.value == "plain") {
  41. pre.innerHTML = data;
  42. div.innerHTML = "";
  43. }
  44. else if (markup.value == "markdown") {
  45. pre.innerHTML = "";
  46. div.innerHTML = markdown.toHTML(data);
  47. fixLinks();
  48. }
  49. else if (markup.value == "creole") {
  50. pre.innerHTML = "";
  51. div.innerHTML = "";
  52. var creole = new Parse.Simple.Creole();
  53. creole.parse(div, data);
  54. fixLinks();
  55. }
  56. /*else if (markup.value == "rest") {
  57. //TODO
  58. }*/
  59. else if (markup.value == "textile") {
  60. pre.innerHTML = "";
  61. div.innerHTML = textile(data);
  62. fixLinks();
  63. }
  64. }
  65. function fixLinks() {
  66. var links = div.getElementsByTagName("a");
  67. for (i=0; i<links.length; i++) {
  68. // add prefix to local URLs (not starting with "http")
  69. // but leave anchor links as is
  70. if (links[i].href.substring(0,4) != "http" &&
  71. links[i].href.substring(0,32) != "file:///android_asset/wiki.html#") {
  72. links[i].href = bitbeaker.getWikiHomeUrl() + links[i].href.replace("file:///android_asset/","");
  73. }
  74. if (links[i].href.substring(0,25) == "https://bitbucket.org/api") {
  75. links[i].href = links[i].href.replace(/%20/g,"_");
  76. }
  77. }
  78. }
  79. </script>
  80. </body>
  81. </html>