easycomments 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ }