lato_core 1.1.5 → 2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (307) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +29 -0
  4. data/Rakefile +1 -22
  5. data/app/assets/config/lato_core_manifest.js +2 -0
  6. data/app/assets/fonts/lato_core/fontawesome-webfont.eot +0 -0
  7. data/app/assets/fonts/lato_core/fontawesome-webfont.svg +2671 -0
  8. data/app/assets/fonts/lato_core/fontawesome-webfont.ttf +0 -0
  9. data/app/assets/fonts/lato_core/fontawesome-webfont.woff +0 -0
  10. data/app/assets/fonts/lato_core/fontawesome-webfont.woff2 +0 -0
  11. data/app/assets/fonts/lato_core/lato-bold-webfont.eot +0 -0
  12. data/app/assets/fonts/lato_core/lato-bold-webfont.svg +4551 -0
  13. data/app/assets/fonts/lato_core/lato-bold-webfont.ttf +0 -0
  14. data/app/assets/fonts/lato_core/lato-bold-webfont.woff +0 -0
  15. data/app/assets/fonts/lato_core/lato-bold-webfont.woff2 +0 -0
  16. data/app/assets/fonts/lato_core/lato-regular-webfont.eot +0 -0
  17. data/app/assets/fonts/lato_core/lato-regular-webfont.svg +4241 -0
  18. data/app/assets/fonts/lato_core/lato-regular-webfont.ttf +0 -0
  19. data/app/assets/fonts/lato_core/lato-regular-webfont.woff +0 -0
  20. data/app/assets/fonts/lato_core/lato-regular-webfont.woff2 +0 -0
  21. data/app/assets/images/lato_core/editor-icons.svg +1 -0
  22. data/app/assets/images/lato_core/logo-negative.svg +13 -0
  23. data/app/assets/images/lato_core/logo.svg +1 -0
  24. data/app/assets/images/lato_core/user.png +0 -0
  25. data/app/assets/javascripts/lato_core/application.js +28 -0
  26. data/app/assets/javascripts/lato_core/initializers/Charts.js +36 -0
  27. data/app/assets/javascripts/lato_core/initializers/Elements.js +67 -0
  28. data/app/assets/javascripts/lato_core/initializers/Inputs.js +201 -0
  29. data/app/assets/javascripts/lato_core/initializers/Layout.js +37 -0
  30. data/app/assets/javascripts/lato_core/initializers/SortableManager.js +66 -0
  31. data/app/assets/javascripts/lato_core/interfaces/Modal.js +28 -0
  32. data/app/assets/javascripts/lato_core/vendors/Sortable.min.js +2 -0
  33. data/app/assets/javascripts/lato_core/vendors/chart.bundle.js +17220 -0
  34. data/app/assets/javascripts/lato_core/vendors/dropzone.js +1767 -0
  35. data/app/assets/javascripts/lato_core/vendors/jquery.datetimepicker.full.js +3243 -0
  36. data/app/assets/javascripts/lato_core/vendors/jquery.floatThead.js +1106 -0
  37. data/app/assets/javascripts/lato_core/vendors/jquery.selectize.js +3829 -0
  38. data/app/assets/javascripts/lato_core/vendors/jquery.trumbowyg.js +1603 -0
  39. data/app/assets/stylesheets/lato_core/application.scss +23 -0
  40. data/app/assets/stylesheets/lato_core/base/_base.scss +35 -0
  41. data/app/assets/stylesheets/lato_core/base/_button.scss +23 -0
  42. data/app/assets/stylesheets/lato_core/base/_grid.scss +258 -0
  43. data/app/assets/stylesheets/lato_core/base/_helpers.scss +29 -0
  44. data/app/assets/stylesheets/lato_core/base/_mixin.scss +37 -0
  45. data/app/assets/stylesheets/lato_core/base/_normalize.scss +424 -0
  46. data/app/assets/stylesheets/lato_core/base/_table.scss +47 -0
  47. data/app/assets/stylesheets/lato_core/base/_typography.scss +23 -0
  48. data/app/assets/stylesheets/lato_core/cells/_cells.scss +4 -0
  49. data/app/assets/stylesheets/lato_core/cells/charts/_bar.scss +3 -0
  50. data/app/assets/stylesheets/lato_core/cells/charts/_charts.scss +2 -0
  51. data/app/assets/stylesheets/lato_core/cells/charts/_general.scss +7 -0
  52. data/app/assets/stylesheets/lato_core/cells/elements/_block.scss +12 -0
  53. data/app/assets/stylesheets/lato_core/cells/elements/_button.scss +132 -0
  54. data/app/assets/stylesheets/lato_core/cells/elements/_buttongroup.scss +25 -0
  55. data/app/assets/stylesheets/lato_core/cells/elements/_code.scss +8 -0
  56. data/app/assets/stylesheets/lato_core/cells/elements/_elements.scss +10 -0
  57. data/app/assets/stylesheets/lato_core/cells/elements/_flash.scss +74 -0
  58. data/app/assets/stylesheets/lato_core/cells/elements/_modal.scss +76 -0
  59. data/app/assets/stylesheets/lato_core/cells/elements/_pagination.scss +64 -0
  60. data/app/assets/stylesheets/lato_core/cells/elements/_row.scss +3 -0
  61. data/app/assets/stylesheets/lato_core/cells/elements/_table.scss +57 -0
  62. data/app/assets/stylesheets/lato_core/cells/elements/_title.scss +32 -0
  63. data/app/assets/stylesheets/lato_core/cells/inputs/_checkbox.scss +42 -0
  64. data/app/assets/stylesheets/lato_core/cells/inputs/_datetime.scss +23 -0
  65. data/app/assets/stylesheets/lato_core/cells/inputs/_dropzone.scss +12 -0
  66. data/app/assets/stylesheets/lato_core/cells/inputs/_editor.scss +3 -0
  67. data/app/assets/stylesheets/lato_core/cells/inputs/_email.scss +3 -0
  68. data/app/assets/stylesheets/lato_core/cells/inputs/_form.scss +3 -0
  69. data/app/assets/stylesheets/lato_core/cells/inputs/_general.scss +51 -0
  70. data/app/assets/stylesheets/lato_core/cells/inputs/_geolocalization.scss +12 -0
  71. data/app/assets/stylesheets/lato_core/cells/inputs/_inputs.scss +14 -0
  72. data/app/assets/stylesheets/lato_core/cells/inputs/_number.scss +3 -0
  73. data/app/assets/stylesheets/lato_core/cells/inputs/_password.scss +3 -0
  74. data/app/assets/stylesheets/lato_core/cells/inputs/_select.scss +47 -0
  75. data/app/assets/stylesheets/lato_core/cells/inputs/_sortableblock.scss +51 -0
  76. data/app/assets/stylesheets/lato_core/cells/inputs/_text.scss +3 -0
  77. data/app/assets/stylesheets/lato_core/cells/inputs/_textarea.scss +25 -0
  78. data/app/assets/stylesheets/lato_core/cells/widgets/_index.scss +74 -0
  79. data/app/assets/stylesheets/lato_core/cells/widgets/_widgets.scss +1 -0
  80. data/app/assets/stylesheets/lato_core/layouts/_admin.scss +352 -0
  81. data/app/assets/stylesheets/lato_core/layouts/_authentication.scss +10 -0
  82. data/app/assets/stylesheets/lato_core/layouts/_layouts.scss +2 -0
  83. data/app/assets/stylesheets/lato_core/pages/_dashboard.scss +35 -0
  84. data/app/assets/stylesheets/lato_core/pages/_login.scss +7 -0
  85. data/app/assets/stylesheets/lato_core/pages/_pages.scss +2 -0
  86. data/app/assets/stylesheets/lato_core/partials/_dynamic_data_to_js.scss +3 -0
  87. data/app/assets/stylesheets/lato_core/partials/_partials.scss +1 -0
  88. data/app/assets/stylesheets/lato_core/theme.scss.erb +127 -0
  89. data/app/assets/stylesheets/lato_core/vendors/_datetimepicker.css +568 -0
  90. data/app/assets/stylesheets/lato_core/vendors/_dropzone.css +388 -0
  91. data/app/assets/stylesheets/lato_core/vendors/_fontawesome.css +2341 -0
  92. data/app/assets/stylesheets/lato_core/vendors/_scrollbar.css +904 -0
  93. data/app/assets/stylesheets/lato_core/vendors/_selectize.css +324 -0
  94. data/app/assets/stylesheets/lato_core/vendors/_trumbowyg.css +584 -0
  95. data/app/assets/stylesheets/lato_core/vendors/_vendors.scss +6 -0
  96. data/app/assets/stylesheets/lato_core/widgets/_systeminfo.scss +21 -0
  97. data/app/assets/stylesheets/lato_core/widgets/_widgets.scss +1 -0
  98. data/app/cells/lato_core/charts/bar/vertical/cell.rb +57 -0
  99. data/app/cells/lato_core/charts/bar/vertical/views/show.html.erb +7 -0
  100. data/app/cells/lato_core/elements/block/cell.rb +39 -0
  101. data/app/cells/lato_core/elements/block/views/close.html.erb +1 -0
  102. data/app/cells/lato_core/elements/block/views/open.html.erb +4 -0
  103. data/app/cells/lato_core/elements/button/cell.rb +59 -0
  104. data/app/cells/lato_core/elements/button/views/button.html.erb +27 -0
  105. data/app/cells/lato_core/elements/button/views/link.html.erb +65 -0
  106. data/app/cells/lato_core/elements/buttongroup/cell.rb +33 -0
  107. data/app/cells/lato_core/elements/buttongroup/views/show.html.erb +7 -0
  108. data/app/cells/lato_core/elements/code/cell.rb +36 -0
  109. data/app/cells/lato_core/elements/code/views/close.html.erb +2 -0
  110. data/app/cells/lato_core/elements/code/views/open.html.erb +2 -0
  111. data/app/cells/lato_core/elements/flash/cell.rb +35 -0
  112. data/app/cells/lato_core/elements/flash/views/show.html.erb +11 -0
  113. data/app/cells/lato_core/elements/icon/cell.rb +31 -0
  114. data/app/cells/lato_core/elements/icon/views/show.html.erb +1 -0
  115. data/app/cells/lato_core/elements/modal/cell.rb +31 -0
  116. data/app/cells/lato_core/elements/modal/views/show.html.erb +21 -0
  117. data/app/cells/lato_core/elements/pagination/cell.rb +68 -0
  118. data/app/cells/lato_core/elements/pagination/views/show.html.erb +59 -0
  119. data/app/cells/lato_core/elements/row/cell.rb +37 -0
  120. data/app/cells/lato_core/elements/row/views/close.html.erb +1 -0
  121. data/app/cells/lato_core/elements/row/views/open.html.erb +3 -0
  122. data/app/cells/lato_core/elements/table/body/cell.rb +37 -0
  123. data/app/cells/lato_core/elements/table/body/views/close.html.erb +1 -0
  124. data/app/cells/lato_core/elements/table/body/views/open.html.erb +3 -0
  125. data/app/cells/lato_core/elements/table/container/cell.rb +41 -0
  126. data/app/cells/lato_core/elements/table/container/views/close.html.erb +2 -0
  127. data/app/cells/lato_core/elements/table/container/views/open.html.erb +7 -0
  128. data/app/cells/lato_core/elements/table/head/cell.rb +33 -0
  129. data/app/cells/lato_core/elements/table/head/views/show.html.erb +7 -0
  130. data/app/cells/lato_core/elements/table/row/cell.rb +49 -0
  131. data/app/cells/lato_core/elements/table/row/views/show.html.erb +35 -0
  132. data/app/cells/lato_core/elements/title/cell.rb +52 -0
  133. data/app/cells/lato_core/elements/title/views/show.html.erb +4 -0
  134. data/app/cells/lato_core/inputs/checkbox/cell.rb +38 -0
  135. data/app/cells/lato_core/inputs/checkbox/views/show.html.erb +20 -0
  136. data/app/cells/lato_core/inputs/datetime/cell.rb +53 -0
  137. data/app/cells/lato_core/inputs/datetime/views/show.html.erb +19 -0
  138. data/app/cells/lato_core/inputs/dropzone/cell.rb +37 -0
  139. data/app/cells/lato_core/inputs/dropzone/views/show.html.erb +24 -0
  140. data/app/cells/lato_core/inputs/editor/cell.rb +37 -0
  141. data/app/cells/lato_core/inputs/editor/views/show.html.erb +12 -0
  142. data/app/cells/lato_core/inputs/email/cell.rb +40 -0
  143. data/app/cells/lato_core/inputs/email/views/show.html.erb +19 -0
  144. data/app/cells/lato_core/inputs/form/cell.rb +39 -0
  145. data/app/cells/lato_core/inputs/form/views/close.html.erb +1 -0
  146. data/app/cells/lato_core/inputs/form/views/open.html.erb +12 -0
  147. data/app/cells/lato_core/inputs/geolocalization/cell.rb +51 -0
  148. data/app/cells/lato_core/inputs/geolocalization/views/show.html.erb +26 -0
  149. data/app/cells/lato_core/inputs/number/cell.rb +44 -0
  150. data/app/cells/lato_core/inputs/number/views/show.html.erb +25 -0
  151. data/app/cells/lato_core/inputs/password/cell.rb +42 -0
  152. data/app/cells/lato_core/inputs/password/views/show.html.erb +21 -0
  153. data/app/cells/lato_core/inputs/select/cell.rb +56 -0
  154. data/app/cells/lato_core/inputs/select/views/show.html.erb +25 -0
  155. data/app/cells/lato_core/inputs/shared/help.html.erb +7 -0
  156. data/app/cells/lato_core/inputs/shared/label.html.erb +11 -0
  157. data/app/cells/lato_core/inputs/sortableblock/cell.rb +39 -0
  158. data/app/cells/lato_core/inputs/sortableblock/views/show.html.erb +40 -0
  159. data/app/cells/lato_core/inputs/text/cell.rb +42 -0
  160. data/app/cells/lato_core/inputs/text/views/show.html.erb +21 -0
  161. data/app/cells/lato_core/inputs/textarea/cell.rb +41 -0
  162. data/app/cells/lato_core/inputs/textarea/views/show.html.erb +16 -0
  163. data/app/cells/lato_core/widgets/index/cell.rb +215 -0
  164. data/app/cells/lato_core/widgets/index/views/partials/new.html.erb +3 -0
  165. data/app/cells/lato_core/widgets/index/views/partials/pagination.html.erb +3 -0
  166. data/app/cells/lato_core/widgets/index/views/partials/search.html.erb +17 -0
  167. data/app/cells/lato_core/widgets/index/views/show.html.erb +45 -0
  168. data/app/controllers/lato_core/api/api_controller.rb +5 -0
  169. data/app/controllers/lato_core/application_controller.rb +9 -1
  170. data/app/controllers/lato_core/back/authentication_controller.rb +33 -99
  171. data/app/controllers/lato_core/back/back_controller.rb +5 -14
  172. data/app/controllers/lato_core/back/dashboard_controller.rb +13 -0
  173. data/app/controllers/lato_core/back/superusers_controller.rb +97 -113
  174. data/app/controllers/lato_core/doc/cells_charts_controller.rb +7 -0
  175. data/app/controllers/lato_core/doc/cells_elements_controller.rb +31 -0
  176. data/app/controllers/lato_core/doc/cells_inputs_controller.rb +33 -0
  177. data/app/controllers/lato_core/doc/cells_widgets_controller.rb +10 -0
  178. data/app/controllers/lato_core/doc/doc_controller.rb +17 -0
  179. data/app/controllers/lato_core/doc/general_controller.rb +13 -0
  180. data/app/helpers/lato_core/application_helper.rb +4 -0
  181. data/app/jobs/lato_core/application_job.rb +4 -0
  182. data/app/mailers/lato_core/application_mailer.rb +2 -5
  183. data/app/models/lato_core/application_record.rb +5 -0
  184. data/app/models/lato_core/superuser.rb +11 -16
  185. data/app/models/lato_core/superuser/entity_helpers.rb +29 -0
  186. data/app/views/lato_core/back/authentication/index.html.erb +25 -0
  187. data/app/views/lato_core/back/dashboard/index.html.erb +29 -0
  188. data/app/views/lato_core/back/superusers/edit.html.erb +10 -15
  189. data/app/views/lato_core/back/superusers/index.html.erb +16 -27
  190. data/app/views/lato_core/back/superusers/new.html.erb +8 -13
  191. data/app/views/lato_core/back/superusers/shared/_form.html.erb +47 -55
  192. data/app/views/lato_core/back/superusers/show.html.erb +65 -1
  193. data/app/views/lato_core/doc/cells_charts/bar_vertical.erb +64 -0
  194. data/app/views/lato_core/doc/cells_elements/block.html.erb +172 -0
  195. data/app/views/lato_core/doc/cells_elements/button.html.erb +375 -0
  196. data/app/views/lato_core/doc/cells_elements/buttongroup.html.erb +101 -0
  197. data/app/views/lato_core/doc/cells_elements/flash_messages.html.erb +123 -0
  198. data/app/views/lato_core/doc/cells_elements/icon.html.erb +58 -0
  199. data/app/views/lato_core/doc/cells_elements/modal.html.erb +89 -0
  200. data/app/views/lato_core/doc/cells_elements/pagination.html.erb +149 -0
  201. data/app/views/lato_core/doc/cells_elements/row.html.erb +62 -0
  202. data/app/views/lato_core/doc/cells_elements/table.html.erb +272 -0
  203. data/app/views/lato_core/doc/cells_elements/table_body.html.erb +118 -0
  204. data/app/views/lato_core/doc/cells_elements/table_head.html.erb +110 -0
  205. data/app/views/lato_core/doc/cells_elements/table_row.html.erb +212 -0
  206. data/app/views/lato_core/doc/cells_elements/title.html.erb +70 -0
  207. data/app/views/lato_core/doc/cells_inputs/checkbox.html.erb +101 -0
  208. data/app/views/lato_core/doc/cells_inputs/datetime.html.erb +178 -0
  209. data/app/views/lato_core/doc/cells_inputs/dropzone.html.erb +114 -0
  210. data/app/views/lato_core/doc/cells_inputs/editor.html.erb +59 -0
  211. data/app/views/lato_core/doc/cells_inputs/email.html.erb +79 -0
  212. data/app/views/lato_core/doc/cells_inputs/form.html.erb +242 -0
  213. data/app/views/lato_core/doc/cells_inputs/geolocalization.html.erb +157 -0
  214. data/app/views/lato_core/doc/cells_inputs/number.html.erb +100 -0
  215. data/app/views/lato_core/doc/cells_inputs/password.html.erb +79 -0
  216. data/app/views/lato_core/doc/cells_inputs/select.html.erb +124 -0
  217. data/app/views/lato_core/doc/cells_inputs/sortableblock.html.erb +72 -0
  218. data/app/views/lato_core/doc/cells_inputs/text.html.erb +204 -0
  219. data/app/views/lato_core/doc/cells_inputs/textarea.html.erb +104 -0
  220. data/app/views/lato_core/doc/cells_widgets/index.html.erb +163 -0
  221. data/app/views/lato_core/doc/doc/index.html.erb +95 -0
  222. data/app/views/lato_core/doc/general/generators.html.erb +60 -0
  223. data/app/views/lato_core/doc/general/installation.html.erb +49 -0
  224. data/app/views/lato_core/doc/general/languages.html.erb +67 -0
  225. data/app/views/lato_core/doc/general/personalization.html.erb +177 -0
  226. data/app/views/lato_core/doc/shared/_modal_content.html.erb +4 -0
  227. data/app/views/lato_core/doc/shared/_sortableblock_partial.html.erb +1 -0
  228. data/app/views/lato_core/partials/_dynamic_data_to_js.html.erb +3 -0
  229. data/app/views/lato_core/partials/_gmaps.html.erb +5 -0
  230. data/app/views/lato_core/widgets/_systeminfo.html.erb +15 -0
  231. data/app/views/layouts/lato_core/admin.html.erb +44 -0
  232. data/app/views/layouts/lato_core/authentication.html.erb +22 -0
  233. data/app/views/layouts/lato_core/partials/_back.html.erb +5 -0
  234. data/app/views/layouts/lato_core/partials/_load_javascript.html.erb +4 -0
  235. data/app/views/layouts/lato_core/partials/_load_partials.html.erb +5 -0
  236. data/app/views/layouts/lato_core/partials/_load_stylesheet.html.erb +4 -0
  237. data/app/views/layouts/lato_core/partials/_logo.html.erb +9 -0
  238. data/app/views/layouts/lato_core/partials/_menu.html.erb +67 -0
  239. data/app/views/layouts/lato_core/partials/_profile.html.erb +19 -0
  240. data/app/views/layouts/lato_core/partials/_title.html.erb +3 -0
  241. data/app/views/layouts/lato_core/partials/_widgets.html.erb +13 -0
  242. data/config/configs.yml +102 -0
  243. data/config/initializers/assets.rb +9 -0
  244. data/config/initializers/init_system.rb +39 -0
  245. data/config/languages/default.yml +63 -0
  246. data/config/languages/it.yml +63 -0
  247. data/config/routes.rb +10 -13
  248. data/config/routes/api.rb +3 -0
  249. data/config/routes/back.rb +10 -0
  250. data/config/routes/doc.rb +48 -0
  251. data/db/migrate/20160224181217_create_lato_core_superusers.rb +8 -2
  252. data/lib/generators/lato_core/crud_generator.rb +26 -0
  253. data/lib/generators/lato_core/initializer_generator.rb +46 -0
  254. data/lib/generators/lato_core/templates/assets/images/logo.svg +13 -0
  255. data/{config/initializers/lists.rb → lib/generators/lato_core/templates/assets/javascripts/application.js} +0 -0
  256. data/lib/generators/lato_core/templates/assets/stylesheets/application.scss +2 -0
  257. data/lib/generators/lato_core/templates/assets/stylesheets/theme.scss.erb +13 -0
  258. data/lib/generators/lato_core/templates/controllers/application_controller.rb +13 -0
  259. data/lib/generators/lato_core/templates/controllers/crud_controller.rb +87 -0
  260. data/lib/generators/lato_core/templates/views/application/index.html.erb +16 -0
  261. data/lib/generators/lato_core/templates/views/crud/edit.html.erb +18 -0
  262. data/lib/generators/lato_core/templates/views/crud/index.html.erb +29 -0
  263. data/lib/generators/lato_core/templates/views/crud/new.html.erb +18 -0
  264. data/lib/generators/lato_core/templates/views/crud/shared/_form.html.erb +25 -0
  265. data/lib/generators/lato_core/templates/views/crud/show.html.erb +16 -0
  266. data/lib/lato_core.rb +6 -5
  267. data/lib/lato_core/cell.rb +28 -0
  268. data/lib/lato_core/engine.rb +16 -13
  269. data/lib/lato_core/helper.rb +11 -0
  270. data/lib/lato_core/helpers/cells.rb +20 -0
  271. data/lib/lato_core/helpers/general.rb +16 -0
  272. data/lib/lato_core/interface.rb +17 -14
  273. data/lib/lato_core/interfaces/apihelpers.rb +39 -0
  274. data/lib/lato_core/interfaces/application.rb +65 -0
  275. data/lib/lato_core/interfaces/authentication.rb +41 -0
  276. data/lib/lato_core/interfaces/cells.rb +41 -0
  277. data/lib/lato_core/interfaces/general.rb +39 -0
  278. data/lib/lato_core/interfaces/layout.rb +213 -0
  279. data/lib/lato_core/interfaces/modules.rb +110 -0
  280. data/lib/lato_core/interfaces/token.rb +25 -0
  281. data/lib/lato_core/version.rb +3 -0
  282. data/lib/tasks/lato_core_tasks.rake +4 -8
  283. data/lib/tasks/lato_tasks.rake +83 -0
  284. metadata +407 -33
  285. data/app/controllers/lato_core/api/v1/api_controller.rb +0 -8
  286. data/app/mailers/lato_core/superusers_mailer.rb +0 -27
  287. data/app/views/lato_core/back/authentication/login.html.erb +0 -45
  288. data/app/views/lato_core/back/authentication/password_edit.html.erb +0 -45
  289. data/app/views/lato_core/back/authentication/password_forget.html.erb +0 -36
  290. data/app/views/lato_core/back/back/home.html.erb +0 -20
  291. data/app/views/lato_core/mailers/layouts/mailer.html.erb +0 -9
  292. data/app/views/lato_core/mailers/layouts/mailer.text.erb +0 -1
  293. data/app/views/lato_core/mailers/superusers/notify.html.erb +0 -2
  294. data/app/views/lato_core/mailers/superusers/recover_password.html.erb +0 -4
  295. data/config/config.yml +0 -8
  296. data/config/example.yml +0 -66
  297. data/config/initializers/init.rb +0 -15
  298. data/config/initializers/ram.rb +0 -14
  299. data/lang/default.yml +0 -61
  300. data/lang/en.yml +0 -61
  301. data/lib/lato_core/interface/authentication.rb +0 -26
  302. data/lib/lato_core/interface/cache.rb +0 -23
  303. data/lib/lato_core/interface/communication.rb +0 -87
  304. data/lib/lato_core/interface/languages.rb +0 -51
  305. data/lib/lato_core/interface/navigation.rb +0 -95
  306. data/lib/lato_core/interface/session.rb +0 -57
  307. data/lib/lato_core/interface/superusers.rb +0 -134
@@ -0,0 +1,16 @@
1
+ <div class="inputs-textarea inputs__container <%= @args[:class] %>">
2
+
3
+ <%= render '../../shared/label.html' %>
4
+
5
+ <textarea
6
+ class="inputs__textarea"
7
+ name="<%= @args[:name] %>"
8
+ placeholder="<%= @args[:placeholder] %>"
9
+ data-required="<%= @args[:required] %>"
10
+ data-max-length="<%= @args[:max_length] %>"
11
+ data-min-length="<%= @args[:min_length] %>"
12
+ /><%= @args[:value] %></textarea>
13
+
14
+ <%= render '../../shared/help.html' %>
15
+
16
+ </div>
@@ -0,0 +1,215 @@
1
+ # TODO: Write the component in a better way.
2
+
3
+ module LatoCore
4
+
5
+ class Widgets::Index::Cell < Cell
6
+
7
+ @@requested_args = [:records]
8
+
9
+ @@default_args = {
10
+ head: [],
11
+ columns: [],
12
+ index_url: nil,
13
+ pagination: false,
14
+ search: false,
15
+ actions: {
16
+ show: false,
17
+ edit: false,
18
+ delete: false,
19
+ new: false
20
+ }
21
+ }
22
+
23
+ def initialize(args = {})
24
+ @args = validate_args(
25
+ args: args,
26
+ requested_args: @@requested_args,
27
+ default_args: @@default_args
28
+ )
29
+
30
+ set_conditions
31
+ end
32
+
33
+ def show
34
+ render 'show.html'
35
+ end
36
+
37
+ private
38
+
39
+ def set_conditions
40
+ @records = @args[:records].is_a?(Hash) ? @args[:records][:records] : @args[:records]
41
+ # conditions for show
42
+ @show_row_actions = @args[:index_url] && @args[:actions] && (@args[:actions][:show] || @args[:actions][:edit] || @args[:actions][:delete])
43
+ @show_row_actions_class = @show_row_actions ? 'widgets-index--actions' : ''
44
+ @show_search = @args[:index_url] && @args[:search]
45
+ @show_pagiantion = @args[:index_url] && @args[:pagination]
46
+ @show_new_action = @args[:index_url] && @args[:actions] && @args[:actions][:new]
47
+ # generate table components
48
+ @table = generate_table
49
+ @table_head = generate_table_head
50
+ @table_body = generate_table_body
51
+ @table_rows = generate_table_rows
52
+ # generate search components
53
+ @search_form = generate_search_form if @show_search
54
+ @search_input = generate_search_input if @show_search
55
+ @search_submit = generate_search_submit if @show_search
56
+ @search_params = generate_search_params if @show_search
57
+ # generate action components
58
+ @action_new_button = generate_new_button if @show_new_action
59
+ # generate pagination components
60
+ @pagination = generate_pagination if @show_pagiantion
61
+ end
62
+
63
+ # Table generation:
64
+
65
+ # This function generate the table.
66
+ def generate_table
67
+ return LatoCore::Elements::Table::Container::Cell.new
68
+ end
69
+
70
+ # This function generate the head for the table.
71
+ def generate_table_head
72
+ labels = []
73
+
74
+ if @args[:head] && @args[:head].length > 0
75
+ # manage case with custom head
76
+ labels = @args[:head]
77
+ labels.push(LANGUAGES[:lato_core][:mixed][:actions]) if @show_row_actions
78
+ elsif @records && @records.length > 0
79
+ # manage case without custom head
80
+ labels = @records.first.attributes.keys.map {|s| s.gsub('_', ' ')}
81
+ labels = labels.map(&:capitalize)
82
+ labels.push(LANGUAGES[:lato_core][:mixed][:actions]) if @show_row_actions
83
+ end
84
+
85
+ return LatoCore::Elements::Table::Head::Cell.new(labels: labels)
86
+ end
87
+
88
+ # This function generate the table body.
89
+ def generate_table_body
90
+ return LatoCore::Elements::Table::Body::Cell.new
91
+ end
92
+
93
+ # This function generate the rows fr the table.
94
+ def generate_table_rows
95
+ table_rows = []
96
+
97
+ if @args[:columns] && @args[:columns].length > 0
98
+ # manage case with custom columns
99
+ table_rows = generate_table_rows_from_columns_functions(@args[:columns])
100
+ elsif @records && @records.length > 0
101
+ # manage case without custom columns
102
+ table_rows = generate_table_rows_from_columns_functions(@records.first.attributes.keys)
103
+ end
104
+
105
+ return table_rows
106
+ end
107
+
108
+ # This function generate the rows for a list of columns.
109
+ def generate_table_rows_from_columns_functions columns_functions
110
+ table_rows = []
111
+
112
+ @records.each do |record|
113
+ labels = []
114
+ # add function result to row columns
115
+ columns_functions.each do |column_function|
116
+ labels.push(record.send(column_function))
117
+ end
118
+ # add actions to row columns
119
+ if @show_row_actions
120
+ labels.push(generate_actions_bottongroup_for_record(record))
121
+ end
122
+ # puts rows on table rows
123
+ table_rows.push(LatoCore::Elements::Table::Row::Cell.new(labels: labels))
124
+ end
125
+
126
+ return table_rows
127
+ end
128
+
129
+ # This function generate row actions for a table row.
130
+ def generate_actions_bottongroup_for_record record
131
+ action_buttons = []
132
+ action_buttons.push(generate_show_button(record.id)) if @args[:actions][:show]
133
+ action_buttons.push(generate_edit_button(record.id)) if @args[:actions][:edit]
134
+ action_buttons.push(generate_delete_button(record.id)) if @args[:actions][:delete]
135
+ return LatoCore::Elements::Buttongroup::Cell.new(buttons: action_buttons)
136
+ end
137
+
138
+ # Actions generation:
139
+
140
+ # This function generate the show button for a record.
141
+ def generate_show_button record_id
142
+ return unless @args[:index_url]
143
+ url = @args[:index_url].end_with?('/') ? "#{@args[:index_url].gsub(/\?.*/, '')}#{record_id}" : "#{@args[:index_url].gsub(/\?.*/, '')}/#{record_id}"
144
+ return LatoCore::Elements::Button::Cell.new(label: LANGUAGES[:lato_core][:mixed][:show], url: url, style: 'info', icon: 'eye')
145
+ end
146
+
147
+ # This function generate the edit button for a record.
148
+ def generate_edit_button record_id
149
+ return unless @args[:index_url]
150
+ url = @args[:index_url].end_with?('/') ? "#{@args[:index_url].gsub(/\?.*/, '')}#{record_id}/edit" : "#{@args[:index_url].gsub(/\?.*/, '')}/#{record_id}/edit"
151
+ return LatoCore::Elements::Button::Cell.new(label: LANGUAGES[:lato_core][:mixed][:edit], url: url, style: 'warning', icon: 'pencil')
152
+ end
153
+
154
+ # This function generate the delete button for a record.
155
+ def generate_delete_button record_id
156
+ return unless @args[:index_url]
157
+ url = @args[:index_url].end_with?('/') ? "#{@args[:index_url].gsub(/\?.*/, '')}#{record_id}" : "#{@args[:index_url].gsub(/\?.*/, '')}/#{record_id}"
158
+ return LatoCore::Elements::Button::Cell.new(label: LANGUAGES[:lato_core][:mixed][:delete], url: url, method: 'delete',
159
+ icon: 'trash', style: 'danger', confirmation: {
160
+ message: LANGUAGES[:lato_core][:mixed][:default_delete_message],
161
+ positive_response: LANGUAGES[:lato_core][:mixed][:default_delete_positive_response],
162
+ negative_response: LANGUAGES[:lato_core][:mixed][:default_delete_negative_response]
163
+ })
164
+ end
165
+
166
+ # This function generate new button.
167
+ def generate_new_button
168
+ return unless @args[:index_url]
169
+ url = "#{@args[:index_url].gsub(/\?.*/, '')}/new"
170
+ return LatoCore::Elements::Button::Cell.new(label: LANGUAGES[:lato_core][:mixed][:new],
171
+ url: url, icon: 'plus')
172
+ end
173
+
174
+ # Search generation:
175
+
176
+ # This function generate a form for the index.
177
+ def generate_search_form
178
+ return unless @args[:index_url]
179
+ return LatoCore::Inputs::Form::Cell.new(url: @args[:index_url], method: 'get')
180
+ end
181
+
182
+ # This function generate and return the search input.
183
+ def generate_search_input
184
+ search_placeholder = @args[:records].is_a?(Hash) ? @args[:records][:search_key].humanize : ''
185
+ search_value = @args[:records].is_a?(Hash) ? @args[:records][:search] : ''
186
+ return LatoCore::Inputs::Text::Cell.new(name: 'widget_index[search]', value: search_value, placeholder: search_placeholder)
187
+ end
188
+
189
+ # This function generate the search submit button.
190
+ def generate_search_submit
191
+ return LatoCore::Elements::Button::Cell.new(label: ' ', icon: 'search', type: 'submit', icon_align: 'right')
192
+ end
193
+
194
+ # This function generate a list of params the need to be set on the search form.
195
+ def generate_search_params
196
+ return Rack::Utils.parse_query URI(@args[:index_url]).query
197
+ end
198
+
199
+ # Pagination generation:
200
+
201
+ def generate_pagination
202
+ total_records = @args[:records].is_a?(Hash) ? @args[:records][:total] : @args[:records].length
203
+ total_records_per_page = @args[:records].is_a?(Hash) ? @args[:records][:per_page] : @args[:records].length
204
+ total_pages = (total_records.to_f / total_records_per_page.to_f).ceil
205
+ current_page = @args[:records].is_a?(Hash) ? @args[:records][:pagination] : 1
206
+ search_value = @args[:records].is_a?(Hash) ? @args[:records][:search] : ''
207
+
208
+ url = core__add_param_to_url(@args[:index_url], 'widget_index[search]', search_value)
209
+ return LatoCore::Elements::Pagination::Cell.new(total: total_pages, current: current_page, url: url,
210
+ param: 'widget_index[pagination]')
211
+ end
212
+
213
+ end
214
+
215
+ end
@@ -0,0 +1,3 @@
1
+ <div class="widgets-index__new-action">
2
+ <%= @action_new_button %>
3
+ </div>
@@ -0,0 +1,3 @@
1
+ <div class="widgets-index__pagination">
2
+ <%= @pagination.show %>
3
+ </div>
@@ -0,0 +1,17 @@
1
+ <div class="widgets-index__search">
2
+
3
+ <%= @search_form.open %>
4
+
5
+ <!-- MANTAIN OLD PARAMS -->
6
+ <% @search_params.each do |key, value| %>
7
+ <input type="hidden" name="<%= key %>" value="<%= value %>">
8
+ <% end %>
9
+ <!-- / MANTAIN OLD PARAMS -->
10
+
11
+ <%= @search_input.show %>
12
+
13
+ <%= @search_submit.show %>
14
+
15
+ <%= @search_form.close %>
16
+
17
+ </div>
@@ -0,0 +1,45 @@
1
+ <div class="widgets-index <%= @show_row_actions_class %>">
2
+
3
+ <% if @show_search || @show_new_action %>
4
+
5
+ <div class="widgets-index__head">
6
+
7
+ <% if @show_search %>
8
+
9
+ <%= render './partials/search.html' %>
10
+
11
+ <% end %>
12
+
13
+ <% if @show_new_action %>
14
+
15
+ <%= render './partials/new.html' %>
16
+
17
+ <% end %>
18
+
19
+ </div>
20
+
21
+ <% end %>
22
+
23
+ <%=raw @table.open %>
24
+
25
+ <%=raw @table_head.show %>
26
+
27
+ <%=raw @table_body.open %>
28
+
29
+ <% @table_rows.each do |table_row| %>
30
+
31
+ <%=raw table_row.show %>
32
+
33
+ <% end %>
34
+
35
+ <%=raw @table_body.close %>
36
+
37
+ <%=raw @table.close %>
38
+
39
+ <% if @show_pagiantion %>
40
+
41
+ <%= render './partials/pagination.html' %>
42
+
43
+ <% end %>
44
+
45
+ </div>
@@ -0,0 +1,5 @@
1
+ module LatoCore
2
+ class Api::ApiController < ApplicationController
3
+
4
+ end
5
+ end
@@ -1,6 +1,14 @@
1
1
  module LatoCore
2
- # This class is the main controller class of lato_core.
2
+
3
+ # ApplicationController
3
4
  class ApplicationController < ActionController::Base
4
5
 
6
+ protect_from_forgery with: :exception
7
+
8
+ def index
9
+ redirect_to lato_core.dashboard_path
10
+ end
11
+
5
12
  end
13
+
6
14
  end
@@ -1,115 +1,49 @@
1
1
  module LatoCore
2
- module Back
3
- # This class is used for authentication actions.
4
- class AuthenticationController < Back::BackController
5
2
 
6
- # not use login check for actions on this controller.
7
- skip_before_action :core_controlUser, except: [:exec_logout]
3
+ # AuthenticationController
4
+ class Back::AuthenticationController < Back::BackController
8
5
 
9
- # This function render login view if user is not logged.
10
- def login
11
- redirect_to lato_core.root_path if core_controlSession
12
- end
6
+ layout 'lato_core/authentication'
13
7
 
14
- # This function exec the login for user using username and password.
15
- def exec_login
16
- if core_createSession(params[:username], params[:password])
17
- redirect_to lato_core.root_path
18
- else
19
- flash[:warning] = CORE_LANG['superusers']['login_error']
20
- redirect_to lato_core.login_path
21
- end
22
- end
8
+ skip_before_action :core__manage_superuser_session
23
9
 
24
- # This function exec the logout for user and redirect it to login page.
25
- def exec_logout
26
- core_destroySession
27
- redirect_to lato_core.login_path
28
- end
10
+ def index
11
+ redirect_to lato_core.dashboard_path if core__check_superuser_session_valid
12
+ end
29
13
 
30
- # This function render the password forget view if user active this
31
- # action on config file.
32
- def password_forget
33
- redirect_to lato_core.root_path unless core_getRecoveryPasswordPermission
34
- redirect_to lato_core.root_path if core_controlSession
35
- end
14
+ def exec_login
15
+ @superuser = LatoCore::Superuser.find_by(username: params[:username])
16
+ return unless check_superuser_exist
36
17
 
37
- # This function exec the recover password action and send the email to
38
- # user for new password.
39
- def password_recover
40
- redirect_to lato_core.root_path unless core_getRecoveryPasswordPermission
41
- if user = LatoCore::Superuser.find_by(email: params[:email].downcase)
42
- # genero il codice da salvare come session code
43
- code = "RECPSW-#{SecureRandom.urlsafe_base64}"
44
- # genero il codice per formare l'url di recupero password
45
- code_url = URI.encode("#{user.id}::#{Time.now}::#{code}")
46
- # memorizzo il session_code sul db
47
- user.update_attribute(:session_code, code)
48
- # invio una mail di recupero
49
- LatoCore::SuperusersMailer.recover_password(user.email, code_url).deliver_now
50
- flash[:success] = CORE_LANG['recover_password']['confirm_send']
51
- else
52
- flash[:warning] = CORE_LANG['superusers']['not_found']
53
- end
18
+ # check superuser is authenticated
19
+ unless @superuser.authenticate(params[:password])
20
+ flash[:danger] = LANGUAGES[:lato_core][:flashes][:uncorrect_password]
54
21
  redirect_to lato_core.login_path
22
+ return
55
23
  end
56
24
 
57
- # This function render the edit view for user who ask to recover
58
- # its password (and check if it can do this action).
59
- def password_edit
60
- redirect_to lato_core.root_path unless core_getRecoveryPasswordPermission
61
- redirect_to lato_core.root_path if core_controlSession
62
- # splitto il token ricevuto (formato: id utente, timestamp, session_code)
63
- data = URI.decode(params[:token]).split('::')
64
- # controllo che il formato sia corretto
65
- if data.length != 3
66
- flash[:warning] = CORE_LANG['recover_password']['recover_error_token']
67
- redirect_to lato_core.login_path and return false
68
- end
69
- # identifico i singoli dati
70
- user_id = data.first
71
- timestamp = data.second
72
- session_code = data.last
73
- # cerco l'utente e, se non esiste, stampo un errore
74
- @user = LatoCore::Superuser.find(user_id)
75
- if !@user
76
- flash[:warning] = CORE_LANG['recover_password']['recover_error_user']
77
- redirect_to lato_core.login_path and return false
78
- end
79
- # verifico che il token sia ancora valido e non abbia superato le 24 ore
80
- if !time = timestamp.to_time || time < Time.now - 24.hours
81
- flash[:warning] = CORE_LANG['recover_password']['recover_error_token_time']
82
- redirect_to lato_core.login_path and return false
83
- end
84
- # verifico che il session_code del token sia corretto
85
- if @user.session_code != session_code
86
- flash[:warning] = CORE_LANG['recover_password']['recover_error_token']
87
- redirect_to lato_core.login_path and return false
88
- end
89
- # genero un nuovo token per togliere la validita' al link di recupero password
90
- # e lo memorizzo all'utente
91
- new_code = SecureRandom.urlsafe_base64
92
- @user.update_attribute(:session_code, new_code)
93
- end
25
+ # save user login on database and create session
26
+ @superuser.save_login(request.remote_ip)
27
+ core__create_superuser_session(@superuser, 1.days.from_now)
28
+ redirect_to lato_core.dashboard_path
29
+ end
94
30
 
95
- # This function ecec the password update after the recovery request.
96
- def password_update
97
- redirect_to lato_core.root_path unless core_getRecoveryPasswordPermission
98
- user = LatoCore::Superuser.find(params[:id])
99
- if !user || user.session_code != params[:token]
100
- flash[:warning] = CORE_LANG['recover_password']['recover_error']
101
- redirect_to lato_core.login_path and return false
102
- end
103
- user.update(password: params[:password], password_confirmation: params[:password])
104
- if !user.save
105
- flash[:warning] = CORE_LANG['recover_password']['recover_error']
106
- redirect_to lato_core.login_path and return false
107
- end
31
+ def exec_logout
32
+ core__destroy_superuser_session
33
+ flash[:success] = LANGUAGES[:lato_core][:flashes][:logout_success]
34
+ redirect_to lato_core.login_path
35
+ end
108
36
 
109
- flash[:success] = CORE_LANG['recover_password']['recover_success']
110
- redirect_to lato_core.login_path
111
- end
37
+ private
112
38
 
39
+ def check_superuser_exist
40
+ return true if @superuser
41
+
42
+ flash[:danger] = LANGUAGES[:lato_core][:flashes][:user_not_found]
43
+ redirect_to lato_core.login_path
44
+ false
113
45
  end
46
+
114
47
  end
48
+
115
49
  end