easycomments 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +14 -0
  5. data/LICENSE +21 -0
  6. data/README.md +92 -0
  7. data/Rakefile +49 -0
  8. data/_config.yml +28 -0
  9. data/bin/ec +45 -0
  10. data/config.ru +12 -0
  11. data/dashboard.rb +57 -0
  12. data/easycomments.gemspec +22 -0
  13. data/ec.rb +43 -0
  14. data/lib/easycomments/ec_configuration.rb +42 -0
  15. data/lib/easycomments/ec_dashboard_model.rb +70 -0
  16. data/lib/easycomments/ec_model.rb +47 -0
  17. data/lib/easycomments.rb +14 -0
  18. data/public/bower.json +32 -0
  19. data/public/bower_components/core-a11y-keys/.bower.json +28 -0
  20. data/public/bower_components/core-a11y-keys/README.md +4 -0
  21. data/public/bower_components/core-a11y-keys/bower.json +18 -0
  22. data/public/bower_components/core-a11y-keys/core-a11y-keys.html +335 -0
  23. data/public/bower_components/core-a11y-keys/demo.html +41 -0
  24. data/public/bower_components/core-a11y-keys/index.html +22 -0
  25. data/public/bower_components/core-ajax/.bower.json +22 -0
  26. data/public/bower_components/core-ajax/README.md +4 -0
  27. data/public/bower_components/core-ajax/bower.json +11 -0
  28. data/public/bower_components/core-ajax/core-ajax.html +434 -0
  29. data/public/bower_components/core-ajax/core-xhr.html +116 -0
  30. data/public/bower_components/core-ajax/demo-progress.html +65 -0
  31. data/public/bower_components/core-ajax/demo.html +43 -0
  32. data/public/bower_components/core-ajax/index.html +22 -0
  33. data/public/bower_components/core-ajax/metadata.html +23 -0
  34. data/public/bower_components/core-ajax/test/core-ajax-progress.html +108 -0
  35. data/public/bower_components/core-ajax/test/core-ajax-race.html +81 -0
  36. data/public/bower_components/core-ajax/test/core-ajax.html +287 -0
  37. data/public/bower_components/core-ajax/test/index.html +17 -0
  38. data/public/bower_components/core-collapse/.bower.json +21 -0
  39. data/public/bower_components/core-collapse/README.md +4 -0
  40. data/public/bower_components/core-collapse/bower.json +11 -0
  41. data/public/bower_components/core-collapse/core-collapse.css +16 -0
  42. data/public/bower_components/core-collapse/core-collapse.html +298 -0
  43. data/public/bower_components/core-collapse/demo.html +75 -0
  44. data/public/bower_components/core-collapse/index.html +22 -0
  45. data/public/bower_components/core-collapse/test/basic.html +85 -0
  46. data/public/bower_components/core-collapse/test/index.html +24 -0
  47. data/public/bower_components/core-component-page/.bower.json +19 -0
  48. data/public/bower_components/core-component-page/README.md +6 -0
  49. data/public/bower_components/core-component-page/bowager-logo.png +0 -0
  50. data/public/bower_components/core-component-page/bower.json +9 -0
  51. data/public/bower_components/core-component-page/core-component-page.html +37 -0
  52. data/public/bower_components/core-component-page/demo.html +23 -0
  53. data/public/bower_components/core-component-page/index.html +22 -0
  54. data/public/bower_components/core-drawer-panel/.bower.json +19 -0
  55. data/public/bower_components/core-drawer-panel/README.md +4 -0
  56. data/public/bower_components/core-drawer-panel/bower.json +9 -0
  57. data/public/bower_components/core-drawer-panel/core-drawer-panel.css +160 -0
  58. data/public/bower_components/core-drawer-panel/core-drawer-panel.html +418 -0
  59. data/public/bower_components/core-drawer-panel/demo.html +68 -0
  60. data/public/bower_components/core-drawer-panel/index.html +22 -0
  61. data/public/bower_components/core-drawer-panel/metadata.html +37 -0
  62. data/public/bower_components/core-focusable/.bower.json +18 -0
  63. data/public/bower_components/core-focusable/README.md +6 -0
  64. data/public/bower_components/core-focusable/bower.json +8 -0
  65. data/public/bower_components/core-focusable/core-focusable.html +4 -0
  66. data/public/bower_components/core-focusable/core-focusable.js +134 -0
  67. data/public/bower_components/core-focusable/demo.html +109 -0
  68. data/public/bower_components/core-focusable/polymer-mixin.js +35 -0
  69. data/public/bower_components/core-header-panel/.bower.json +18 -0
  70. data/public/bower_components/core-header-panel/README.md +4 -0
  71. data/public/bower_components/core-header-panel/bower.json +8 -0
  72. data/public/bower_components/core-header-panel/core-header-panel.css +78 -0
  73. data/public/bower_components/core-header-panel/core-header-panel.html +277 -0
  74. data/public/bower_components/core-header-panel/demo.html +100 -0
  75. data/public/bower_components/core-header-panel/index.html +23 -0
  76. data/public/bower_components/core-header-panel/metadata.html +37 -0
  77. data/public/bower_components/core-icon/.bower.json +19 -0
  78. data/public/bower_components/core-icon/README.md +4 -0
  79. data/public/bower_components/core-icon/bower.json +9 -0
  80. data/public/bower_components/core-icon/core-icon.css +16 -0
  81. data/public/bower_components/core-icon/core-icon.html +201 -0
  82. data/public/bower_components/core-icon/demo.html +44 -0
  83. data/public/bower_components/core-icon/index.html +22 -0
  84. data/public/bower_components/core-icon/metadata.html +21 -0
  85. data/public/bower_components/core-icon-button/.bower.json +18 -0
  86. data/public/bower_components/core-icon-button/README.md +4 -0
  87. data/public/bower_components/core-icon-button/bower.json +8 -0
  88. data/public/bower_components/core-icon-button/core-icon-button.css +75 -0
  89. data/public/bower_components/core-icon-button/core-icon-button.html +81 -0
  90. data/public/bower_components/core-icon-button/demo.html +35 -0
  91. data/public/bower_components/core-icon-button/index.html +22 -0
  92. data/public/bower_components/core-icon-button/metadata.html +20 -0
  93. data/public/bower_components/core-icons/.bower.json +24 -0
  94. data/public/bower_components/core-icons/.gitignore +2 -0
  95. data/public/bower_components/core-icons/README.md +8 -0
  96. data/public/bower_components/core-icons/av-icons.html +65 -0
  97. data/public/bower_components/core-icons/bower.json +14 -0
  98. data/public/bower_components/core-icons/communication-icons.html +54 -0
  99. data/public/bower_components/core-icons/core-icons.html +278 -0
  100. data/public/bower_components/core-icons/demo.html +98 -0
  101. data/public/bower_components/core-icons/device-icons.html +90 -0
  102. data/public/bower_components/core-icons/editor-icons.html +67 -0
  103. data/public/bower_components/core-icons/hardware-icons.html +56 -0
  104. data/public/bower_components/core-icons/image-icons.html +152 -0
  105. data/public/bower_components/core-icons/index.html +22 -0
  106. data/public/bower_components/core-icons/maps-icons.html +70 -0
  107. data/public/bower_components/core-icons/notification-icons.html +49 -0
  108. data/public/bower_components/core-icons/social-icons.html +39 -0
  109. data/public/bower_components/core-iconset/.bower.json +20 -0
  110. data/public/bower_components/core-iconset/README.md +4 -0
  111. data/public/bower_components/core-iconset/bower.json +10 -0
  112. data/public/bower_components/core-iconset/core-iconset.html +241 -0
  113. data/public/bower_components/core-iconset/demo.html +62 -0
  114. data/public/bower_components/core-iconset/index.html +22 -0
  115. data/public/bower_components/core-iconset/my-icons-big.png +0 -0
  116. data/public/bower_components/core-iconset/my-icons.png +0 -0
  117. data/public/bower_components/core-iconset-svg/.bower.json +19 -0
  118. data/public/bower_components/core-iconset-svg/README.md +4 -0
  119. data/public/bower_components/core-iconset-svg/bower.json +9 -0
  120. data/public/bower_components/core-iconset-svg/core-iconset-svg.html +168 -0
  121. data/public/bower_components/core-iconset-svg/demo.html +66 -0
  122. data/public/bower_components/core-iconset-svg/index.html +22 -0
  123. data/public/bower_components/core-iconset-svg/svg-sample-icons.html +68 -0
  124. data/public/bower_components/core-input/.bower.json +20 -0
  125. data/public/bower_components/core-input/README.md +2 -0
  126. data/public/bower_components/core-input/bower.json +10 -0
  127. data/public/bower_components/core-input/core-input.css +41 -0
  128. data/public/bower_components/core-input/core-input.html +148 -0
  129. data/public/bower_components/core-input/demo.html +62 -0
  130. data/public/bower_components/core-input/index.html +22 -0
  131. data/public/bower_components/core-input/metadata.html +23 -0
  132. data/public/bower_components/core-input/test/a11y.html +55 -0
  133. data/public/bower_components/core-input/test/basic.html +60 -0
  134. data/public/bower_components/core-input/test/index.html +25 -0
  135. data/public/bower_components/core-item/.bower.json +19 -0
  136. data/public/bower_components/core-item/README.md +4 -0
  137. data/public/bower_components/core-item/bower.json +9 -0
  138. data/public/bower_components/core-item/core-item.css +45 -0
  139. data/public/bower_components/core-item/core-item.html +73 -0
  140. data/public/bower_components/core-item/demo.html +92 -0
  141. data/public/bower_components/core-item/index.html +22 -0
  142. data/public/bower_components/core-item/metadata.html +24 -0
  143. data/public/bower_components/core-media-query/.bower.json +18 -0
  144. data/public/bower_components/core-media-query/README.md +4 -0
  145. data/public/bower_components/core-media-query/bower.json +8 -0
  146. data/public/bower_components/core-media-query/core-media-query.html +87 -0
  147. data/public/bower_components/core-media-query/demo.html +44 -0
  148. data/public/bower_components/core-media-query/index.html +22 -0
  149. data/public/bower_components/core-menu/.bower.json +22 -0
  150. data/public/bower_components/core-menu/README.md +4 -0
  151. data/public/bower_components/core-menu/bower.json +11 -0
  152. data/public/bower_components/core-menu/core-menu.css +18 -0
  153. data/public/bower_components/core-menu/core-menu.html +73 -0
  154. data/public/bower_components/core-menu/core-submenu.css +43 -0
  155. data/public/bower_components/core-menu/core-submenu.html +126 -0
  156. data/public/bower_components/core-menu/demo.html +101 -0
  157. data/public/bower_components/core-menu/index.html +22 -0
  158. data/public/bower_components/core-menu/metadata.html +62 -0
  159. data/public/bower_components/core-meta/.bower.json +18 -0
  160. data/public/bower_components/core-meta/README.md +4 -0
  161. data/public/bower_components/core-meta/bower.json +8 -0
  162. data/public/bower_components/core-meta/core-meta.html +145 -0
  163. data/public/bower_components/core-meta/demo.html +58 -0
  164. data/public/bower_components/core-meta/index.html +22 -0
  165. data/public/bower_components/core-overlay/.bower.json +20 -0
  166. data/public/bower_components/core-overlay/README.md +4 -0
  167. data/public/bower_components/core-overlay/bower.json +10 -0
  168. data/public/bower_components/core-overlay/core-key-helper.html +22 -0
  169. data/public/bower_components/core-overlay/core-overlay-layer.html +116 -0
  170. data/public/bower_components/core-overlay/core-overlay.html +776 -0
  171. data/public/bower_components/core-overlay/demo.html +155 -0
  172. data/public/bower_components/core-overlay/gulpfile.js +2 -0
  173. data/public/bower_components/core-overlay/index.html +22 -0
  174. data/public/bower_components/core-overlay/tests/html/core-overlay-basic.html +127 -0
  175. data/public/bower_components/core-overlay/tests/html/core-overlay-positioning-margin.html +153 -0
  176. data/public/bower_components/core-overlay/tests/html/core-overlay-positioning.html +167 -0
  177. data/public/bower_components/core-overlay/tests/html/core-overlay-quick-close.html +45 -0
  178. data/public/bower_components/core-overlay/tests/html/core-overlay-scroll.html +130 -0
  179. data/public/bower_components/core-overlay/tests/js/htmltests.js +7 -0
  180. data/public/bower_components/core-overlay/tests/runner.html +14 -0
  181. data/public/bower_components/core-overlay/tests/tests.json +6 -0
  182. data/public/bower_components/core-pages/.bower.json +19 -0
  183. data/public/bower_components/core-pages/README.md +4 -0
  184. data/public/bower_components/core-pages/bower.json +8 -0
  185. data/public/bower_components/core-pages/core-pages.css +30 -0
  186. data/public/bower_components/core-pages/core-pages.html +44 -0
  187. data/public/bower_components/core-pages/demo.html +136 -0
  188. data/public/bower_components/core-pages/index.html +22 -0
  189. data/public/bower_components/core-pages/metadata.html +25 -0
  190. data/public/bower_components/core-resizable/.bower.json +18 -0
  191. data/public/bower_components/core-resizable/README.md +4 -0
  192. data/public/bower_components/core-resizable/bower.json +8 -0
  193. data/public/bower_components/core-resizable/core-resizable.html +248 -0
  194. data/public/bower_components/core-resizable/index.html +22 -0
  195. data/public/bower_components/core-resizable/test/basic.html +504 -0
  196. data/public/bower_components/core-resizable/test/index.html +16 -0
  197. data/public/bower_components/core-resizable/test/test-elements.html +66 -0
  198. data/public/bower_components/core-scaffold/.bower.json +22 -0
  199. data/public/bower_components/core-scaffold/README.md +4 -0
  200. data/public/bower_components/core-scaffold/bower.json +11 -0
  201. data/public/bower_components/core-scaffold/core-scaffold.html +252 -0
  202. data/public/bower_components/core-scaffold/demo.html +82 -0
  203. data/public/bower_components/core-scaffold/index.html +22 -0
  204. data/public/bower_components/core-scaffold/metadata.html +52 -0
  205. data/public/bower_components/core-selection/.bower.json +21 -0
  206. data/public/bower_components/core-selection/README.md +4 -0
  207. data/public/bower_components/core-selection/bower.json +11 -0
  208. data/public/bower_components/core-selection/core-selection.html +149 -0
  209. data/public/bower_components/core-selection/demo.html +59 -0
  210. data/public/bower_components/core-selection/index.html +22 -0
  211. data/public/bower_components/core-selection/test/basic.html +62 -0
  212. data/public/bower_components/core-selection/test/index.html +25 -0
  213. data/public/bower_components/core-selection/test/multi.html +63 -0
  214. data/public/bower_components/core-selector/.bower.json +22 -0
  215. data/public/bower_components/core-selector/.gitignore +2 -0
  216. data/public/bower_components/core-selector/README.md +4 -0
  217. data/public/bower_components/core-selector/bower.json +12 -0
  218. data/public/bower_components/core-selector/core-selector.html +548 -0
  219. data/public/bower_components/core-selector/demo.html +106 -0
  220. data/public/bower_components/core-selector/index.html +22 -0
  221. data/public/bower_components/core-selector/metadata.html +20 -0
  222. data/public/bower_components/core-selector/test/activate-event.html +63 -0
  223. data/public/bower_components/core-selector/test/basic.html +126 -0
  224. data/public/bower_components/core-selector/test/content.html +101 -0
  225. data/public/bower_components/core-selector/test/index.html +30 -0
  226. data/public/bower_components/core-selector/test/multi.html +115 -0
  227. data/public/bower_components/core-selector/test/next-previous.html +113 -0
  228. data/public/bower_components/core-selector/test/selected-attr-prop.html +62 -0
  229. data/public/bower_components/core-selector/test/template-repeat.html +63 -0
  230. data/public/bower_components/core-style/.bower.json +18 -0
  231. data/public/bower_components/core-style/README.md +4 -0
  232. data/public/bower_components/core-style/bower.json +8 -0
  233. data/public/bower_components/core-style/core-style.html +387 -0
  234. data/public/bower_components/core-style/demo.html +58 -0
  235. data/public/bower_components/core-style/elements.html +55 -0
  236. data/public/bower_components/core-style/index.html +22 -0
  237. data/public/bower_components/core-style/my-theme.html +73 -0
  238. data/public/bower_components/core-toolbar/.bower.json +19 -0
  239. data/public/bower_components/core-toolbar/README.md +4 -0
  240. data/public/bower_components/core-toolbar/bower.json +9 -0
  241. data/public/bower_components/core-toolbar/core-toolbar.css +117 -0
  242. data/public/bower_components/core-toolbar/core-toolbar.html +155 -0
  243. data/public/bower_components/core-toolbar/demo.html +119 -0
  244. data/public/bower_components/core-toolbar/index.html +22 -0
  245. data/public/bower_components/core-toolbar/metadata.html +28 -0
  246. data/public/bower_components/core-toolbar/test/basic.html +86 -0
  247. data/public/bower_components/core-toolbar/test/index.html +24 -0
  248. data/public/bower_components/core-transition/.bower.json +19 -0
  249. data/public/bower_components/core-transition/README.md +2 -0
  250. data/public/bower_components/core-transition/bower.json +9 -0
  251. data/public/bower_components/core-transition/core-transition-css.html +220 -0
  252. data/public/bower_components/core-transition/core-transition-overlay.css +46 -0
  253. data/public/bower_components/core-transition/core-transition.html +140 -0
  254. data/public/bower_components/core-transition/demo.html +87 -0
  255. data/public/bower_components/core-transition/index.html +22 -0
  256. data/public/bower_components/font-roboto/.bower.json +15 -0
  257. data/public/bower_components/font-roboto/roboto.html +9 -0
  258. data/public/bower_components/paper-button/.bower.json +27 -0
  259. data/public/bower_components/paper-button/README.md +4 -0
  260. data/public/bower_components/paper-button/bower.json +16 -0
  261. data/public/bower_components/paper-button/demo.html +157 -0
  262. data/public/bower_components/paper-button/index.html +22 -0
  263. data/public/bower_components/paper-button/metadata.html +17 -0
  264. data/public/bower_components/paper-button/paper-button-base.html +164 -0
  265. data/public/bower_components/paper-button/paper-button.html +197 -0
  266. data/public/bower_components/paper-button/test/index.html +24 -0
  267. data/public/bower_components/paper-button/test/paper-button.html +112 -0
  268. data/public/bower_components/paper-icon-button/.bower.json +25 -0
  269. data/public/bower_components/paper-icon-button/README.md +4 -0
  270. data/public/bower_components/paper-icon-button/bower.json +15 -0
  271. data/public/bower_components/paper-icon-button/demo.html +150 -0
  272. data/public/bower_components/paper-icon-button/index.html +22 -0
  273. data/public/bower_components/paper-icon-button/metadata.html +21 -0
  274. data/public/bower_components/paper-icon-button/paper-icon-button.html +154 -0
  275. data/public/bower_components/paper-icon-button/test/a11y.html +68 -0
  276. data/public/bower_components/paper-icon-button/test/basic.html +50 -0
  277. data/public/bower_components/paper-icon-button/test/index.html +25 -0
  278. data/public/bower_components/paper-input/.bower.json +26 -0
  279. data/public/bower_components/paper-input/.gitignore +1 -0
  280. data/public/bower_components/paper-input/README.md +4 -0
  281. data/public/bower_components/paper-input/bower.json +15 -0
  282. data/public/bower_components/paper-input/demo.html +236 -0
  283. data/public/bower_components/paper-input/index.html +22 -0
  284. data/public/bower_components/paper-input/metadata.html +20 -0
  285. data/public/bower_components/paper-input/paper-autogrow-textarea.html +162 -0
  286. data/public/bower_components/paper-input/paper-char-counter.html +121 -0
  287. data/public/bower_components/paper-input/paper-input-decorator.css +132 -0
  288. data/public/bower_components/paper-input/paper-input-decorator.html +547 -0
  289. data/public/bower_components/paper-input/paper-input.html +145 -0
  290. data/public/bower_components/paper-input/test/index.html +26 -0
  291. data/public/bower_components/paper-input/test/paper-autogrow-textarea.html +146 -0
  292. data/public/bower_components/paper-input/test/paper-input-decorator.html +240 -0
  293. data/public/bower_components/paper-input/test/paper-input.html +68 -0
  294. data/public/bower_components/paper-input/test/util.js +15 -0
  295. data/public/bower_components/paper-radio-button/.bower.json +22 -0
  296. data/public/bower_components/paper-radio-button/README.md +4 -0
  297. data/public/bower_components/paper-radio-button/bower.json +12 -0
  298. data/public/bower_components/paper-radio-button/demo.html +84 -0
  299. data/public/bower_components/paper-radio-button/index.html +22 -0
  300. data/public/bower_components/paper-radio-button/metadata.html +17 -0
  301. data/public/bower_components/paper-radio-button/paper-radio-button.css +108 -0
  302. data/public/bower_components/paper-radio-button/paper-radio-button.html +166 -0
  303. data/public/bower_components/paper-ripple/.bower.json +23 -0
  304. data/public/bower_components/paper-ripple/README.md +4 -0
  305. data/public/bower_components/paper-ripple/bower.json +13 -0
  306. data/public/bower_components/paper-ripple/demo.html +414 -0
  307. data/public/bower_components/paper-ripple/index.html +22 -0
  308. data/public/bower_components/paper-ripple/metadata.html +20 -0
  309. data/public/bower_components/paper-ripple/paper-ripple.html +477 -0
  310. data/public/bower_components/paper-ripple/test/index.html +24 -0
  311. data/public/bower_components/paper-ripple/test/position.html +109 -0
  312. data/public/bower_components/paper-shadow/.bower.json +22 -0
  313. data/public/bower_components/paper-shadow/README.md +4 -0
  314. data/public/bower_components/paper-shadow/bower.json +11 -0
  315. data/public/bower_components/paper-shadow/demo.html +134 -0
  316. data/public/bower_components/paper-shadow/index.html +22 -0
  317. data/public/bower_components/paper-shadow/metadata.html +17 -0
  318. data/public/bower_components/paper-shadow/paper-shadow.css +66 -0
  319. data/public/bower_components/paper-shadow/paper-shadow.html +86 -0
  320. data/public/bower_components/paper-shadow/test/basic.html +62 -0
  321. data/public/bower_components/paper-shadow/test/index.html +24 -0
  322. data/public/bower_components/paper-tabs/.bower.json +26 -0
  323. data/public/bower_components/paper-tabs/README.md +4 -0
  324. data/public/bower_components/paper-tabs/bower.json +15 -0
  325. data/public/bower_components/paper-tabs/demo.html +242 -0
  326. data/public/bower_components/paper-tabs/index.html +22 -0
  327. data/public/bower_components/paper-tabs/metadata.html +58 -0
  328. data/public/bower_components/paper-tabs/paper-tab.css +59 -0
  329. data/public/bower_components/paper-tabs/paper-tab.html +82 -0
  330. data/public/bower_components/paper-tabs/paper-tabs.css +80 -0
  331. data/public/bower_components/paper-tabs/paper-tabs.html +353 -0
  332. data/public/bower_components/paper-toast/.bower.json +22 -0
  333. data/public/bower_components/paper-toast/README.md +4 -0
  334. data/public/bower_components/paper-toast/bower.json +11 -0
  335. data/public/bower_components/paper-toast/demo.html +63 -0
  336. data/public/bower_components/paper-toast/index.html +22 -0
  337. data/public/bower_components/paper-toast/metadata.html +20 -0
  338. data/public/bower_components/paper-toast/paper-toast.css +80 -0
  339. data/public/bower_components/paper-toast/paper-toast.html +296 -0
  340. data/public/bower_components/paper-toggle-button/.bower.json +20 -0
  341. data/public/bower_components/paper-toggle-button/README.md +4 -0
  342. data/public/bower_components/paper-toggle-button/bower.json +9 -0
  343. data/public/bower_components/paper-toggle-button/demo.html +97 -0
  344. data/public/bower_components/paper-toggle-button/index.html +22 -0
  345. data/public/bower_components/paper-toggle-button/metadata.html +17 -0
  346. data/public/bower_components/paper-toggle-button/paper-toggle-button.css +95 -0
  347. data/public/bower_components/paper-toggle-button/paper-toggle-button.html +179 -0
  348. data/public/bower_components/polymer/.bower.json +32 -0
  349. data/public/bower_components/polymer/README.md +21 -0
  350. data/public/bower_components/polymer/bower.json +23 -0
  351. data/public/bower_components/polymer/build.log +26 -0
  352. data/public/bower_components/polymer/layout.html +286 -0
  353. data/public/bower_components/polymer/polymer.html +12 -0
  354. data/public/bower_components/polymer/polymer.js +11859 -0
  355. data/public/bower_components/polymer/polymer.min.js +14 -0
  356. data/public/bower_components/webcomponentsjs/.bower.json +23 -0
  357. data/public/bower_components/webcomponentsjs/CustomElements.js +634 -0
  358. data/public/bower_components/webcomponentsjs/CustomElements.min.js +11 -0
  359. data/public/bower_components/webcomponentsjs/HTMLImports.js +764 -0
  360. data/public/bower_components/webcomponentsjs/HTMLImports.min.js +11 -0
  361. data/public/bower_components/webcomponentsjs/README.md +73 -0
  362. data/public/bower_components/webcomponentsjs/ShadowDOM.js +4277 -0
  363. data/public/bower_components/webcomponentsjs/ShadowDOM.min.js +13 -0
  364. data/public/bower_components/webcomponentsjs/bower.json +14 -0
  365. data/public/bower_components/webcomponentsjs/build.log +31 -0
  366. data/public/bower_components/webcomponentsjs/package.json +31 -0
  367. data/public/bower_components/webcomponentsjs/webcomponents-lite.js +1728 -0
  368. data/public/bower_components/webcomponentsjs/webcomponents-lite.min.js +11 -0
  369. data/public/bower_components/webcomponentsjs/webcomponents.js +6114 -0
  370. data/public/bower_components/webcomponentsjs/webcomponents.min.js +14 -0
  371. data/public/css/main.css +41 -0
  372. data/public/elements/ec-dashboard/ec-dashboard.html +269 -0
  373. data/public/polymer-loader.html +24 -0
  374. data/public/polymer-loader.vulcanized.html +19 -0
  375. data/spec/ec/ec_dashboard_spec.rb +78 -0
  376. data/spec/ec/ec_spec.rb +78 -0
  377. data/spec/spec_helper.rb +27 -0
  378. data/views/index.html +88 -0
  379. metadata +464 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a75da80c881fc020f2f5bb5aadb4a2402669e9bf
4
+ data.tar.gz: 17b46c901e56b0f9d950b746c807858d18f0c56c
5
+ SHA512:
6
+ metadata.gz: 79d4b7adc8a9148d2874fb0abf00cd6d2af6ceaa937230df218d38f4a997837b97a9a50a61c9ed6ac5c0397133abc8dc7a819709ed0f5de4337afaebb8d01351
7
+ data.tar.gz: 54a4acaea68bc66e7ce58521e3a49c495bba55414e994b95a2009c3b9a652fa0758cc95dc37da024ddde2896c322403614af1c346e068a32d92791fa676cdf4a
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --default-path spec/ec
2
+ --pattern **_spec.rb
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'sinatra'
4
+ gem 'rack-protection'
5
+ gem 'multi_json'
6
+ gem 'rack-contrib'
7
+ gem 'sequel'
8
+ gem 'rack-cors'
9
+ gem 'bcrypt'
10
+
11
+ group :test, :development do
12
+ gem 'sqlite3'
13
+ gem 'airborne'
14
+ end
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) <2015> <Zisis Maras - zisismaras@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # EasyComments
2
+ EasyComments(EC) is an easy to use comment system with a simple api
3
+ for posting and retrieving comments.It also comes bundled with a dashboard
4
+ for moderating your comments.
5
+
6
+ ##Installing
7
+ Install by cloning the repository or for convenience install the gem
8
+ ```ruby
9
+ gem install easycomments
10
+ ```
11
+ and then(if you installed the gem) in a directory run
12
+ ```ruby
13
+ ec install
14
+ ```
15
+ (pass the --dev flag if you also want the spec suite)
16
+
17
+ ##Configuring
18
+ Edit _config.yml and add your database (all adapters supported by sequel can be used)
19
+ and change any other option you need.
20
+ Then run
21
+ ```ruby
22
+ rake init
23
+ ```
24
+ to build the table and then
25
+ ```ruby
26
+ rake adduser
27
+ ```
28
+ to add your user.
29
+
30
+ ##Endpoints
31
+ EC has one endpoint for posting a new comment and one for retrieving a comment list.
32
+ ```
33
+ GET /comments, with a 'post' parameter
34
+ ```
35
+ The 'post' parameter simply serves as a namespace to group comments for retrieval,
36
+ it can be a blog post title, an url or something more sophisticated, it's up to you.
37
+
38
+ ```
39
+ POST /comment, with parameters : post, name, email, body
40
+ ```
41
+ Example client can be found here : [easycomments-polymer](https://github.com/zisismaras/easycomments-polymer)
42
+
43
+ ##Dashboard
44
+ EC comes bundled with a dashboard (can be accessed at /dashboard) to moderate your
45
+ comments like approving, deleting, editing or ignoring.
46
+ It's build with [polymer](https://www.polymer-project.org) and [webcomponents](http://webcomponents.org/)
47
+
48
+ ##Configuration options
49
+ in _config.yml you can change the following
50
+ ```ruby
51
+ #database connection url to be passed to sequel's connect method.
52
+ #check http://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html
53
+ #all adapters supported by sequel can be used
54
+ connection: "sqlite://blog.db"
55
+
56
+ #set to true to allow all coments to be posted without moderation.
57
+ approve_by_default: false
58
+
59
+ #set to true to allow comments without a name.
60
+ allow_anonymous_post: false
61
+
62
+ #datetime format to be passed to strftime.
63
+ #see availabe options here http://ruby-doc.org/core-2.2.1/Time.html#method-i-strftime
64
+ timestamp_format: "%d/%m/%Y - %H:%M"
65
+
66
+ #set to true to enable cross-origin resource sharing.
67
+ allow_cors: false
68
+
69
+ #see available formats here https://github.com/cyu/rack-cors
70
+ cors_origin: "*"
71
+ ```
72
+
73
+ ## Updating
74
+ If you installed easycomments as a gem there is a 'ec update' command.
75
+ It will recopy all the files but keeps your _config.yml and Gemfile.
76
+ (--dev flag is available to also copy the spec suite)
77
+
78
+ ## Rake tasks
79
+ 'rake init' creates the required table.
80
+ 'rake update' run it after re-editing _config.yml to update the table.
81
+ 'rake adduser' you should always run this and not adding new users in _config.yml
82
+ by hand since it also bcypts your passwords!
83
+
84
+ ## Contributing
85
+ 1. Fork it
86
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
87
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
88
+ 4. Push to the branch (`git push origin my-new-feature`)
89
+ 5. Create new Pull Request
90
+
91
+ ###Licensed under MIT.
92
+
data/Rakefile ADDED
@@ -0,0 +1,49 @@
1
+ require "sequel"
2
+ require 'io/console'
3
+ require 'bcrypt'
4
+ require_relative "lib/easycomments/ec_configuration.rb"
5
+
6
+ include Configuration
7
+
8
+ DB = Sequel.connect(CONNECTION)
9
+
10
+ desc "Initializes EasyComments database"
11
+ task :init do
12
+ DB.create_table :comments do
13
+ primary_key :id
14
+ String :name
15
+ String :email
16
+ String :post
17
+ String :body
18
+ TrueClass :approved, :default=>APPROVE_BY_DEFAULT
19
+ TrueClass :action_taken, :default=>false
20
+ DateTime :timestamp
21
+ end
22
+ puts "EasyComments database initialized."
23
+ end
24
+
25
+ desc "Updates EasyComments database."
26
+ task :update do
27
+ DB.alter_table(:comments) do
28
+ set_column_default :approved, APPROVE_BY_DEFAULT
29
+ end
30
+ puts "EasyComments database updated."
31
+ end
32
+
33
+ desc "Create a new user."
34
+ task :adduser do
35
+ print "Username: "
36
+ username = STDIN.gets.chomp
37
+ print "Password for #{username}: "
38
+ password = STDIN.noecho(&:gets).chomp
39
+ bcrypt_password = BCrypt::Password.create(password)
40
+ conf = CONFIG
41
+ if conf[:users].nil?
42
+ conf.merge!({:users => {username => bcrypt_password}})
43
+ else
44
+ conf[:users].merge!({username => bcrypt_password})
45
+ end
46
+ File.open("_config.yml", 'w') { |f| YAML.dump(conf, f) }
47
+ File.open("_config.yml", 'a') { |f| f.write(comment_wall) }
48
+ puts "\nNew user added."
49
+ end
data/_config.yml ADDED
@@ -0,0 +1,28 @@
1
+ ---
2
+ connection: "sqlite://blog.db"
3
+ approve_by_default: false
4
+ allow_anonymous_post: false
5
+ timestamp_format: "%d/%m/%Y - %H:%M"
6
+ allow_cors: false
7
+ cors_origin: "*"
8
+ :users:
9
+ #
10
+ ##connection : database connection url to be passed to sequel's connect method.
11
+ ##check http://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html
12
+ ##all adapters supported by sequel can be used
13
+ #
14
+ ##approve_by_default : set to true to allow all coments to be posted without moderation.
15
+ #
16
+ ##allow_anonymous_post : set to true to allow comments without a name.
17
+ #
18
+ ##timestamp_format : datetime format to be passed to strftime.
19
+ ##see availabe options here http://ruby-doc.org/core-2.2.1/Time.html#method-i-strftime
20
+ #
21
+ ##allow_cors : set to true to enable cross-origin resource sharing.
22
+ #
23
+ ##cors_origin : see available formats here https://github.com/cyu/rack-cors
24
+ #
25
+ ##users : do not edit this by hand use 'rake adduser' instead.
26
+ #
27
+ ##if you edit this file after 'rake init' use 'rake update' for the changes to take effect.
28
+ #
data/bin/ec ADDED
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+ #encoding: utf-8
3
+ require 'fileutils'
4
+
5
+ local_path = File.expand_path("../../", __FILE__)
6
+ users_path = Dir.pwd
7
+
8
+ files = %w(ec.rb dashboard.rb config.ru _config.yml Rakefile Gemfile)
9
+
10
+ def copy_files(local_path, users_path, files, dev=false)
11
+ files.each do |filename|
12
+ FileUtils.cp_r local_path + '/' + filename, users_path, :verbose => true
13
+ end
14
+ FileUtils.cp_r local_path + "/lib", users_path, :verbose => true
15
+ FileUtils.cp_r local_path + "/public", users_path, :verbose => true
16
+ FileUtils.cp_r local_path + "/views", users_path, :verbose => true
17
+ if dev
18
+ FileUtils.cp_r local_path + "/spec", users_path, :verbose => true
19
+ FileUtils.cp_r local_path + '/.rspec', users_path, :verbose => true
20
+ end
21
+ end
22
+
23
+ if ARGV[0] == 'install'
24
+ if ARGV[1] == '--dev'
25
+ copy_files(local_path, users_path, files, true)
26
+ else
27
+ copy_files(local_path, users_path, files)
28
+ end
29
+ puts "done!"
30
+ elsif ARGV[0] == 'update'
31
+ files.delete("_config.yml")
32
+ files.delete("Gemfile")
33
+ if ARGV[1] == '--dev'
34
+ copy_files(local_path, users_path, files, true)
35
+ else
36
+ copy_files(local_path, users_path, files)
37
+ end
38
+ puts "done!"
39
+ end
40
+
41
+ if ARGV[0] == '--help' || ARGV[0] == '-h' || ARGV[0].nil?
42
+ puts 'ec install, copies all the required files in the current directory.'
43
+ puts 'ec update, same as install but skips _config.yml and Gemfile.'
44
+ puts 'pass the --dev flag to "ec install" or "ec update" to also copy the test suite.'
45
+ end
data/config.ru ADDED
@@ -0,0 +1,12 @@
1
+ require './ec'
2
+ require './dashboard'
3
+
4
+ run Rack::Builder.new {
5
+ map "/" do
6
+ run EC.new
7
+ end
8
+
9
+ map "/dashboard" do
10
+ run ECDashboard.new
11
+ end
12
+ }
data/dashboard.rb ADDED
@@ -0,0 +1,57 @@
1
+ require_relative "lib/easycomments.rb"
2
+ require_relative "lib/easycomments/ec_dashboard_model.rb"
3
+
4
+ class ECDashboard < Sinatra::Application
5
+
6
+ include ECDashboardModel
7
+
8
+ before do
9
+ content_type 'application/json'
10
+ end
11
+
12
+ get "/" do
13
+ content_type 'text/html'
14
+ send_file 'views/index.html'
15
+ end
16
+
17
+ post '/login' do
18
+ authenticate(params[:username], params[:password])
19
+ end
20
+
21
+ get "/comments" do
22
+ get_comments(params[:post])
23
+ end
24
+
25
+ get '/get_all_posts' do
26
+ get_all_posts
27
+ end
28
+
29
+ post '/edit_comment' do
30
+ edit_comment(params[:id], params[:new_body])
31
+ end
32
+
33
+ post '/remove_comment' do
34
+ remove_comment(params[:id])
35
+ end
36
+
37
+ post '/change_approval_status' do
38
+ comment_change_approval(params[:id])
39
+ end
40
+
41
+ get '/get_total_pending' do
42
+ get_total_pending
43
+ end
44
+
45
+ get '/get_posts_with_pending' do
46
+ get_posts_with_pending
47
+ end
48
+
49
+ get '/get_pending_comments' do
50
+ get_pending_comments(params[:post])
51
+ end
52
+
53
+ post '/ignore_comment' do
54
+ ignore_comment(params[:id])
55
+ end
56
+
57
+ end
@@ -0,0 +1,22 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'easycomments'
3
+ s.version = '1.0.1'
4
+ s.date = '2015-03-30'
5
+ s.summary = "Simple and easy to use comment system"
6
+ s.description = <<EOF
7
+ EasyComments(EC) is an easy to use comment system with a simple api
8
+ for posting and retrieving comments.It also comes bundled with a dashboard
9
+ for moderating your comments.
10
+ EOF
11
+
12
+ s.files = `git ls-files`.split("\n")
13
+ s.executables << 'ec'
14
+
15
+ s.add_development_dependency 'airborne', '~> 0.1', '>=0.1.15'
16
+ s.add_development_dependency "rake", '~> 10.4', '>= 10.4.2'
17
+
18
+ s.authors = ["Zisis Maras"]
19
+ s.email = 'zisismaras@gmail.com'
20
+ s.homepage = 'https://github.com/zisismaras/easycomments'
21
+ s.license = 'MIT'
22
+ end
data/ec.rb ADDED
@@ -0,0 +1,43 @@
1
+ require_relative "lib/easycomments.rb"
2
+ require_relative "lib/easycomments/ec_model.rb"
3
+
4
+ class EC < Sinatra::Application
5
+
6
+ include ECModel
7
+
8
+ before do
9
+ content_type 'application/json'
10
+ end
11
+
12
+ if ALLOW_CORS
13
+ use Rack::Cors do
14
+ allow do
15
+ origins CORS_ORIGIN
16
+ resource '/comments', :headers => :any, :methods => :get
17
+ resource '/comment', :headers => :any, :methods => :post
18
+ end
19
+ end
20
+ use Rack::Protection::FrameOptions
21
+ use Rack::Protection::PathTraversal
22
+ use Rack::Protection::IPSpoofing
23
+ else
24
+ use Rack::Protection::FrameOptions
25
+ use Rack::Protection::PathTraversal
26
+ use Rack::Protection::IPSpoofing
27
+ use Rack::Protection::HttpOrigin
28
+ end
29
+
30
+
31
+ get "/comments" do
32
+ get_comments(params[:post])
33
+ end
34
+
35
+ post "/comment" do
36
+ post_comment(params)
37
+ end
38
+
39
+ get "/" do
40
+ redirect "/dashboard"
41
+ end
42
+
43
+ end
@@ -0,0 +1,42 @@
1
+ require 'yaml'
2
+
3
+ module Configuration
4
+
5
+ extend self
6
+
7
+ CONFIG = YAML.load_file('_config.yml')
8
+ CONNECTION = CONFIG["connection"]
9
+ APPROVE_BY_DEFAULT = CONFIG["approve_by_default"]
10
+ ALLOW_ANONYMOUS_POST = CONFIG["allow_anonymous_post"]
11
+ TIMESTAMP_FORMAT = CONFIG["timestamp_format"]
12
+ USERNAME = CONFIG["username"]
13
+ PASSWORD = CONFIG["password"]
14
+ ALLOW_CORS = CONFIG["allow_cors"]
15
+ CORS_ORIGIN = CONFIG["cors_origin"]
16
+
17
+ #wall of help text to be added in _config.yml
18
+ def comment_wall
19
+ comments = <<COMMENTS
20
+ #
21
+ ##connection : database connection url to be passed to sequel's connect method.
22
+ ##check http://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html
23
+ ##all adapters supported by sequel can be used
24
+ #
25
+ ##approve_by_default : set to true to allow all coments to be posted without moderation.
26
+ #
27
+ ##allow_anonymous_post : set to true to allow comments without a name.
28
+ #
29
+ ##timestamp_format : datetime format to be passed to strftime.
30
+ ##see availabe options here http://ruby-doc.org/core-2.2.1/Time.html#method-i-strftime
31
+ #
32
+ ##allow_cors : set to true to enable cross-origin resource sharing.
33
+ #
34
+ ##cors_origin : see available formats here https://github.com/cyu/rack-cors
35
+ #
36
+ ##users : do not edit this by hand use 'rake adduser' instead.
37
+ #
38
+ ##if you edit this file after 'rake init' use 'rake update' for the changes to take effect.
39
+ #
40
+ COMMENTS
41
+ end
42
+ end
@@ -0,0 +1,70 @@
1
+ require_relative "../easycomments.rb"
2
+
3
+ module ECDashboardModel
4
+ extend self
5
+
6
+ def get_comments(post)
7
+ comments = DB[:comments].where(:post => post).all.sort_by{|comment| comment[:id].to_i}.reverse #show latest comment first
8
+ comments = comments.each{|comment| comment[:timestamp] = comment[:timestamp].strftime(TIMESTAMP_FORMAT)}
9
+ MultiJson.dump({:comments => comments})
10
+ end
11
+
12
+ def get_all_posts
13
+ MultiJson.dump({:posts => DB[:comments].map(:post).uniq})
14
+ end
15
+
16
+ def edit_comment(id, new_body)
17
+ DB[:comments].where(:id => id).update(:body => new_body, :action_taken => true)
18
+ MultiJson.dump({:status => "Comment successfully edited."})
19
+ end
20
+
21
+ def remove_comment(id)
22
+ DB[:comments].where(:id => id).delete
23
+ MultiJson.dump({:status => "Comment successfully removed."})
24
+ end
25
+
26
+ def comment_change_approval(id)
27
+ comment = DB[:comments].where(:id => id).all.first
28
+ DB[:comments].where(:id => id).update(:approved => !comment[:approved], :action_taken => true)
29
+ MultiJson.dump({:status => "Approval status successfully changed."})
30
+ end
31
+
32
+ def get_total_pending
33
+ pending = DB[:comments].where(:action_taken => false).all.count
34
+ MultiJson.dump({:pending => pending})
35
+ end
36
+
37
+ def get_posts_with_pending
38
+ pending =[]
39
+ posts = DB[:comments].where(:action_taken => false).map(:post).uniq
40
+ posts.each do |post|
41
+ pending.push({:post => post, :pending => DB[:comments].where(:post => post, :action_taken => false).count})
42
+ end
43
+ MultiJson.dump({:pending => pending})
44
+ end
45
+
46
+ def get_pending_comments(post)
47
+ comments = DB[:comments].where(:post => post, :action_taken => false).all.sort_by{|comment| comment[:id].to_i}.reverse #show latest comment first
48
+ comments = comments.each{|comment| comment[:timestamp] = comment[:timestamp].strftime(TIMESTAMP_FORMAT)}
49
+ MultiJson.dump({:comments => comments})
50
+ end
51
+
52
+ def ignore_comment(id)
53
+ comment = DB[:comments].where(:id => id).all.first
54
+ DB[:comments].where(:id => id).update(:action_taken => true)
55
+ MultiJson.dump({:status => "Comment successfully ignored."})
56
+ end
57
+
58
+ def authenticate(username, password)
59
+ access = {}
60
+ CONFIG[:users].each_pair do |u, p|
61
+ if username == u && BCrypt::Password.new(p) == password
62
+ access = {:has_access => true}
63
+ else
64
+ access = {:has_access => false}
65
+ end
66
+ end
67
+ MultiJson.dump(access)
68
+ end
69
+
70
+ end
@@ -0,0 +1,47 @@
1
+ require_relative "../easycomments.rb"
2
+
3
+ module ECModel
4
+
5
+ extend self
6
+
7
+ def post_comment(comment)
8
+ if comment[:body] != "undefined" && comment[:body] != ""
9
+ if ALLOW_ANONYMOUS_POST
10
+ comment[:name] = "Anonymous" if comment[:name] == "undefined" || comment[:name] == ""
11
+ comment[:email] = "no_email" if comment[:email] == "undefined" || comment[:email] == ""
12
+ save_comment(comment)
13
+ elsif comment[:name] == "Anonymous" || comment[:name] == "undefined" || comment[:name] == ""
14
+ MultiJson.dump({:status => "Error : no name provided."})
15
+ else
16
+ save_comment(comment)
17
+ end
18
+ else
19
+ MultiJson.dump({:status => "Error : no comment provided."})
20
+ end
21
+ end
22
+
23
+ def get_comments(post)
24
+ comments = DB[:comments].where(:post => post, :approved => true).all.sort_by{|comment| comment[:id].to_i}.reverse #show latest comment first
25
+ comments = comments.each{|comment| comment[:timestamp] = comment[:timestamp].strftime(TIMESTAMP_FORMAT)}
26
+ MultiJson.dump({:comments => comments})
27
+ end
28
+
29
+ private
30
+ def escape_comment(comment)
31
+ comment[:name] = Rack::Utils.escape_html(comment[:name])
32
+ comment[:email] = Rack::Utils.escape_html(comment[:email])
33
+ comment[:body] = Rack::Utils.escape_html(comment[:body])
34
+ comment
35
+ end
36
+
37
+ def save_comment(comment)
38
+ comment = escape_comment(comment)
39
+ DB[:comments].insert(:post => comment[:post],
40
+ :name => comment[:name],
41
+ :email => comment[:email],
42
+ :body => comment[:body],
43
+ :timestamp => Time.now
44
+ )
45
+ MultiJson.dump({:status => "New comment posted."})
46
+ end
47
+ end
@@ -0,0 +1,14 @@
1
+ require "sinatra/base"
2
+ require "multi_json"
3
+ require "sequel"
4
+ require 'rack/cors'
5
+ require 'rack/utils'
6
+ require 'rack/protection'
7
+ require 'bcrypt'
8
+ require_relative "easycomments/ec_configuration.rb"
9
+
10
+ VERSION = "1.0.1"
11
+
12
+ include Configuration
13
+
14
+ DB = Sequel.connect(CONNECTION)
data/public/bower.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "easycomments_dashboard",
3
+ "version": "1.0.0",
4
+ "authors": [
5
+ "Zisis Maras <zisismaras@gmail.com>"
6
+ ],
7
+ "main": "index.html",
8
+ "license": "MIT",
9
+ "ignore": [
10
+ "**/.*",
11
+ "node_modules",
12
+ "bower_components",
13
+ "test",
14
+ "tests"
15
+ ],
16
+ "dependencies": {
17
+ "polymer": "Polymer/polymer#~0.5.5",
18
+ "paper-shadow": "Polymer/paper-shadow#~0.5.5",
19
+ "font-roboto": "Polymer/font-roboto#~0.5.5",
20
+ "paper-button": "Polymer/paper-button#~0.5.5",
21
+ "paper-input": "Polymer/paper-input#~0.5.5",
22
+ "core-scaffold": "Polymer/core-scaffold#~0.5.5",
23
+ "core-menu": "Polymer/core-menu#~0.5.5",
24
+ "core-item": "Polymer/core-item#~0.5.5",
25
+ "core-header-panel": "Polymer/core-header-panel#~0.5.5",
26
+ "core-ajax": "polymer/core-ajax#~0.5.5",
27
+ "paper-toast": "polymer/paper-toast#~0.5.5",
28
+ "paper-toggle-button": "polymer/paper-toggle-button#~0.5.5",
29
+ "paper-tabs": "polymer/paper-tabs#~0.5.5",
30
+ "core-pages": "polymer/core-pages#~0.5.5"
31
+ }
32
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "core-a11y-keys",
3
+ "private": true,
4
+ "dependencies": {
5
+ "polymer": "Polymer/polymer#^0.5"
6
+ },
7
+ "devDependencies": {
8
+ "web-component-tester": "Polymer/web-component-tester#^1"
9
+ },
10
+ "ignore": [
11
+ "**/.*",
12
+ "node_modules",
13
+ "bower_components",
14
+ "test",
15
+ "tests"
16
+ ],
17
+ "version": "0.5.5",
18
+ "homepage": "https://github.com/Polymer/core-a11y-keys",
19
+ "_release": "0.5.5",
20
+ "_resolution": {
21
+ "type": "version",
22
+ "tag": "0.5.5",
23
+ "commit": "bb806f0d130c1e276f97b1ddef83400a828c17be"
24
+ },
25
+ "_source": "git://github.com/Polymer/core-a11y-keys.git",
26
+ "_target": "^0.5",
27
+ "_originalSource": "Polymer/core-a11y-keys"
28
+ }
@@ -0,0 +1,4 @@
1
+ core-a11y-keys
2
+ ==============
3
+
4
+ See the [component page](http://polymer-project.org/docs/elements/core-elements.html#core-a11y-keys) for more information.
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "core-a11y-keys",
3
+ "private": true,
4
+ "dependencies": {
5
+ "polymer": "Polymer/polymer#^0.5"
6
+ },
7
+ "devDependencies": {
8
+ "web-component-tester": "Polymer/web-component-tester#^1"
9
+ },
10
+ "ignore": [
11
+ "**/.*",
12
+ "node_modules",
13
+ "bower_components",
14
+ "test",
15
+ "tests"
16
+ ],
17
+ "version": "0.5.5"
18
+ }