index.mustache.html 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <title>Web Sandbox</title>
  5. <link rel="stylesheet" href="/css/normalize.css">
  6. <link rel="stylesheet" href="/css/main.css">
  7. {{#testMode}}<link rel="stylesheet" href="/css/qunit-2.4.1.css">{{/testMode}}
  8. <link rel="stylesheet" href="/css/vendor/pure-grids-min.css">
  9. <link rel="stylesheet" href="/css/vendor/pure-grids-responsive-min.css">
  10. <link rel="stylesheet" href="/css/styles.css">
  11. <style type="text/css" media="screen">
  12. </style>
  13. </head>
  14. <body>
  15. <div class="panel-container">
  16. <div class="panel-left">
  17. <div id="navbar">
  18. <button id="menu-btn" class="btn icon-menu"></button>
  19. <a id="nav-back-home" href="/">Web Sandbox</a>
  20. {{#testMode}}<a id="test-reload-btn" href="/?testing=1" style="float:right;"><button class="btn icon-loop2"></button></a>{{/testMode}}
  21. </div>
  22. <div id="nav-menus">
  23. <div id="menu-repo" class="pure-g">
  24. <div class="pure-u-1">
  25. <span class="cat-title">{{_.exampleCollections}}</span>
  26. <ul class="nav-menu">{{#menuRepo}}
  27. <li><a href="/{{path}}">{{title}}</a></li>{{/menuRepo}}
  28. </ul>
  29. </div>
  30. </div>
  31. <div id="menu-example" class="pure-g nav-menu">{{#menuExample}}
  32. <div class="pure-u-1 pure-u-md-1-2">
  33. <span class="cat-title">{{category.title}}</span>
  34. <ul data-id="{{category.slug}}">{{#examples}}
  35. <li><a href="/{{{slug}}}">{{title}}</a></li>{{/examples}}</ul>
  36. </div>{{/menuExample}}</div>
  37. </div>
  38. <div id="notification" class="alert-box"></div>
  39. <div class="panel-inner">
  40. {{#errorMessage}}
  41. <div id="server-alert" class="alert-box error">{{errorMessage}}</div>
  42. {{/errorMessage}}
  43. <div class="details-div">
  44. <div class="inline-block left">
  45. <section id="shortcut-repo"{{#repo}} class="hidden"{{/repo}}>
  46. <div class="bold">{{_.exampleCollections}}</div><ul>{{#menuRepo}}
  47. <li><a href="/{{path}}">{{title}}</a></li>{{/menuRepo}}
  48. </ul>
  49. </section>
  50. <section id="details-repo" class="inline-block">
  51. {{#repo}}
  52. <span class="bold">{{_.collection}} </span><span>{{title}}</span>
  53. {{/repo}}
  54. </section>
  55. </div>
  56. <div id="add-repo" class="btn-form inline-block">
  57. <button class="add-btn inline-block h-collapsed light-gray fast in"><span class="icon-plus"></span> {{_.addCollection}}</button>
  58. <form class="inline-block h-collapsed">
  59. <input type="text" name="title" class="input-sm" value="" placeholder="{{_.collectionName}}" required />
  60. <button type="button" class="icon-cross rounded"></button><!--
  61. --><button type="submit" class="icon-checkmark rounded"></button>
  62. </form>
  63. </div>
  64. </div>
  65. <div class="details-div">
  66. <div class="inline-block left">
  67. <section id="shortcut-example"{{^showShortcutExample}} class="hidden"{{/showShortcutExample}}>
  68. <div class="bold">{{_.examplesInCollection}}</div>{{#menuExample}}
  69. <span class="cat-title">{{category.title}}</span>
  70. <ul data-id="{{category.slug}}">{{#examples}}
  71. <li><a href="/{{{slug}}}">{{title}}</a></li>{{/examples}}</ul>
  72. {{/menuExample}}
  73. </section>
  74. <section id="details-example" class="inline-block">
  75. {{#example}}
  76. <strong>{{_.example}} </strong><span>{{title}}</span>
  77. {{/example}}
  78. </section>
  79. </div>
  80. <div id="add-example" class="btn-form inline-block">
  81. <button class="add-btn inline-block h-collapsed light-gray fast{{#repo}} in{{/repo}}"><span class="icon-plus"></span> {{_.addExample}}</button>
  82. <form class="inline-block h-collapsed">
  83. <input type="text" name="title" class="input-sm" value="" placeholder="{{_.exampleName}}" required />
  84. <button type="button" id="add-example-cancel" class="icon-cross rounded"></button><!--
  85. --><button type="submit" id="add-example-save" class="icon-checkmark rounded"></button>
  86. </form>
  87. </div>
  88. </div>
  89. <!-- <button id="save-changes" class="icon-cloud-upload green"></button> -->
  90. </div>
  91. <div id="editor-wrapper"{{^showEditor}} style="display: none";{{/showEditor}}>
  92. <ul id="tabs">{{#files}}
  93. <li class="tab-{{type}}" data-type="{{type}}">{{name}}</li>
  94. {{/files}}
  95. </ul><ul id="add-file">
  96. <li><button class="add-btn inline-block h-collapsed fast in">+</button>
  97. <form class="inline-block h-collapsed">
  98. <input type="text" name="title" class="input-xs input-light-border" value="" placeholder="{{_.fileNameWithExt}}" required />
  99. <button type="button" id="add-example-cancel" class="icon-cross"></button><!--
  100. --><button type="submit" id="add-example-save" class="icon-checkmark"></button>
  101. </form></li>
  102. </ul>
  103. <div id="editor"></div>
  104. </div>
  105. <!-- <script type="text/html" id="editor-javascript"></script>
  106. <script type="text/html" id="editor-html"></script>
  107. <script type="text/html" id="editor-css"></script> -->
  108. <!-- <button id="revert-editor">!</button> -->
  109. </div>
  110. <div class="splitter">
  111. </div>
  112. <div class="panel-right">
  113. <iframe id="sandbox-iframe"{{#testMode}} class="test-mode"{{/testMode}} {{#example}}src="/examples/{{repo.path}}/{{example.slug}}"{{/example}}{{^example}}src="/html/start-iframe.html"{{/example}}></iframe>
  114. {{#testMode}}
  115. <div id="qunit"></div>
  116. <div id="qunit-fixture"></div>
  117. {{/testMode}}
  118. </div>
  119. </div>
  120. {{=<% %>=}}
  121. <script data-tmpl-for="menu-example" id="menu-example-tmpl" type="text/x-mustache-tmpl">
  122. {{#menuExample}}
  123. <div class="pure-u-1 pure-u-md-1-2">
  124. <span class="cat-title">{{category.title}}</span>
  125. <ul data-id="{{category.slug}}">{{#examples}}
  126. <li><a href="/{{{slug}}}">{{title}}</a></li>{{/examples}}
  127. </ul>
  128. </div>{{/menuExample}}
  129. </script>
  130. <script data-tmpl-for="details-example" id="details-example-tmpl" type="text/x-mustache-tmpl">
  131. {{#example}}
  132. <strong>{{_.example}} </strong><span>{{title}}</span>
  133. {{/example}}
  134. </script>
  135. <script data-tmpl-for="tabs" id="tabs-tmpl" type="text/x-mustache-tmpl">
  136. {{#files}}
  137. <li class="tab-{{type}}" data-type="{{type}}">{{name}}</li>
  138. {{/files}}
  139. </script>
  140. <script data-tmpl-for="details-repo" id="details-example-repo" type="text/x-mustache-tmpl">
  141. {{#repo}}
  142. <strong>{{_.collection}} </strong><span>{{title}}</span>
  143. {{/repo}}
  144. </script>
  145. <script data-tmpl-for="shortcut-repo" type="text/x-mustache-tmpl">
  146. <div class="bold">{{_.exampleCollections}}</div><ul>{{#repos}}
  147. <li><a href="/{{path}}">{{title}}</a></li>{{/repos}}
  148. </ul>
  149. </script>
  150. <script data-tmpl-for="menu-repo" type="text/x-mustache-tmpl">
  151. <div class="pure-u-1">
  152. <span class="cat-title">{{_.exampleCollections}}</span>
  153. <ul class="nav-menu">{{#repos}}
  154. <li><a href="/{{path}}">{{title}}</a></li>{{/repos}}
  155. </ul>
  156. </div>
  157. </script>
  158. <script data-tmpl-for="shortcut-example" type="text/x-mustache-tmpl">
  159. <div class="bold">{{_.examplesInCollection}}</div>{{#menuExample}}
  160. <span class="cat-title">{{category.title}}</span>
  161. <ul data-id="{{category.slug}}">{{#examples}}
  162. <li><a href="/{{{slug}}}">{{title}}</a></li>{{/examples}}</ul>
  163. {{/menuExample}}
  164. </script>
  165. <%={{ }}=%>
  166. <!-- Vendor scripts -->
  167. <script src="/js/vendor/eventemitter.js"></script>
  168. <script src="/js/vendor/modernizr-3.5.0.min.js"></script>
  169. <script src="/js/plugins.js"></script>
  170. <script src="/js/vendor/jquery-3.2.1.min.js" ></script>
  171. <script src="/js/vendor/jquery-resizable.min.js" ></script>
  172. <script src="/js/vendor/jquery.color.js" ></script>
  173. <script src="/js/vendor/mustache.min.js" ></script>
  174. <script src="/js/vendor/lodash.min.js" ></script>
  175. <script src="/js/vendor/loadJS.js" ></script>
  176. <script src="/js/vendor/ace/ace.js" type="text/javascript" charset="utf-8"></script>
  177. <!-- WS scripts -->
  178. <script id="inline-js-data">
  179. window._ws = {
  180. files: {{{filesJSON}}},
  181. repo: {{{repoJSON}}},
  182. repos: {{{reposJSON}}},
  183. _: {{{_JSON}}},
  184. example: {{{exampleJSON}}}
  185. };
  186. </script>
  187. <script src="/js/req-promise.js"></script>
  188. <script src="/js/ws-ui-parts.js"></script>
  189. <script src="/js/ws-notify.js"></script>
  190. <script src="/js/ws-events.js"></script>
  191. <script src="/js/ws-menu.js"></script>
  192. <script src="/js/ws-forms.js"></script>
  193. <script src="/js/editor-local-storage.js"></script>
  194. <script src="/js/ws-editor.js"></script>
  195. {{#testRun}}
  196. <script>
  197. window._ws._path = "{{{appPath}}}";
  198. </script>
  199. <script src="/js/vendor/qunit-2.4.1.js"></script>
  200. <script src="/js/test/ws.test.js"></script>
  201. {{/testRun}}
  202. </body>
  203. </html>