lato_view 1.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 (231) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +35 -0
  3. data/app/assets/fonts/lato-bold-webfont.eot +0 -0
  4. data/app/assets/fonts/lato-bold-webfont.svg +4551 -0
  5. data/app/assets/fonts/lato-bold-webfont.ttf +0 -0
  6. data/app/assets/fonts/lato-bold-webfont.woff +0 -0
  7. data/app/assets/fonts/lato-bold-webfont.woff2 +0 -0
  8. data/app/assets/fonts/lato-regular-webfont.eot +0 -0
  9. data/app/assets/fonts/lato-regular-webfont.svg +4241 -0
  10. data/app/assets/fonts/lato-regular-webfont.ttf +0 -0
  11. data/app/assets/fonts/lato-regular-webfont.woff +0 -0
  12. data/app/assets/fonts/lato-regular-webfont.woff2 +0 -0
  13. data/app/assets/images/lato_view/icons/_arrow-down.svg +1 -0
  14. data/app/assets/images/lato_view/icons/_arrow-left.svg +1 -0
  15. data/app/assets/images/lato_view/icons/_arrow-right.svg +1 -0
  16. data/app/assets/images/lato_view/icons/_arrow-up.svg +1 -0
  17. data/app/assets/images/lato_view/icons/_artist.svg +1 -0
  18. data/app/assets/images/lato_view/icons/_artwork.svg +1 -0
  19. data/app/assets/images/lato_view/icons/_attachment.svg +1 -0
  20. data/app/assets/images/lato_view/icons/_calendar.svg +1 -0
  21. data/app/assets/images/lato_view/icons/_clients.svg +1 -0
  22. data/app/assets/images/lato_view/icons/_close.svg +1 -0
  23. data/app/assets/images/lato_view/icons/_download.svg +1 -0
  24. data/app/assets/images/lato_view/icons/_file.svg +1 -0
  25. data/app/assets/images/lato_view/icons/_google-plus.svg +1 -0
  26. data/app/assets/images/lato_view/icons/_home.svg +1 -0
  27. data/app/assets/images/lato_view/icons/_info.svg +1 -0
  28. data/app/assets/images/lato_view/icons/_instagram.svg +1 -0
  29. data/app/assets/images/lato_view/icons/_lato-logo.svg +1 -0
  30. data/app/assets/images/lato_view/icons/_linkedin.svg +1 -0
  31. data/app/assets/images/lato_view/icons/_list.svg +1 -0
  32. data/app/assets/images/lato_view/icons/_magni-glass.svg +1 -0
  33. data/app/assets/images/lato_view/icons/_mail.svg +1 -0
  34. data/app/assets/images/lato_view/icons/_minus.svg +1 -0
  35. data/app/assets/images/lato_view/icons/_modify.svg +1 -0
  36. data/app/assets/images/lato_view/icons/_percentage.svg +1 -0
  37. data/app/assets/images/lato_view/icons/_plus.svg +1 -0
  38. data/app/assets/images/lato_view/icons/_power.svg +1 -0
  39. data/app/assets/images/lato_view/icons/_settings.svg +1 -0
  40. data/app/assets/images/lato_view/icons/_sweet.svg +1 -0
  41. data/app/assets/images/lato_view/icons/_trash.svg +1 -0
  42. data/app/assets/images/lato_view/icons/_twitter.svg +1 -0
  43. data/app/assets/images/lato_view/icons/_upload.svg +1 -0
  44. data/app/assets/images/lato_view/icons/_user.svg +1 -0
  45. data/app/assets/images/lato_view/icons/_users.svg +1 -0
  46. data/app/assets/images/lato_view/icons/_warning.svg +1 -0
  47. data/app/assets/images/lato_view/icons/_web.svg +1 -0
  48. data/app/assets/images/lato_view/vendor/trumbowyg_icons.svg +1 -0
  49. data/app/assets/images/lato_view/work-in-progress/da-scegliere.svg +225 -0
  50. data/app/assets/images/lato_view/work-in-progress/social.svg +76 -0
  51. data/app/assets/javascripts/lato_view/application.js +68 -0
  52. data/app/assets/javascripts/lato_view/build/ActionBar.js +65 -0
  53. data/app/assets/javascripts/lato_view/build/Dropdown.js +33 -0
  54. data/app/assets/javascripts/lato_view/build/Flash.js +23 -0
  55. data/app/assets/javascripts/lato_view/build/FormManager.js +159 -0
  56. data/app/assets/javascripts/lato_view/build/Navigation.js +79 -0
  57. data/app/assets/javascripts/lato_view/build/Util.js +91 -0
  58. data/app/assets/javascripts/lato_view/build/Validator.js +235 -0
  59. data/app/assets/javascripts/lato_view/vendor/dropzone.min.js +2 -0
  60. data/app/assets/javascripts/lato_view/vendor/jquery.email-autocomplete.min.js +9 -0
  61. data/app/assets/javascripts/lato_view/vendor/modernizr.js +3 -0
  62. data/app/assets/javascripts/lato_view/vendor/moment.min.js +7 -0
  63. data/app/assets/javascripts/lato_view/vendor/picker-it_IT.js +1 -0
  64. data/app/assets/javascripts/lato_view/vendor/picker.date.js +5 -0
  65. data/app/assets/javascripts/lato_view/vendor/picker.js +7 -0
  66. data/app/assets/javascripts/lato_view/vendor/picker.time.js +5 -0
  67. data/app/assets/javascripts/lato_view/vendor/trumbowyg.js +1522 -0
  68. data/app/assets/stylesheets/lato_view/application.scss.erb +32 -0
  69. data/app/assets/stylesheets/lato_view/base/_base.scss +53 -0
  70. data/app/assets/stylesheets/lato_view/base/_helpers.scss +491 -0
  71. data/app/assets/stylesheets/lato_view/base/_media.scss +32 -0
  72. data/app/assets/stylesheets/lato_view/base/_reset.scss +424 -0
  73. data/app/assets/stylesheets/lato_view/base/_typography.scss +138 -0
  74. data/app/assets/stylesheets/lato_view/config/_config.scss +143 -0
  75. data/app/assets/stylesheets/lato_view/config/templates/_base-template.scss +158 -0
  76. data/app/assets/stylesheets/lato_view/config/templates/_black-template.scss +158 -0
  77. data/app/assets/stylesheets/lato_view/modules/_action-bar.scss +62 -0
  78. data/app/assets/stylesheets/lato_view/modules/_arranger.scss +10 -0
  79. data/app/assets/stylesheets/lato_view/modules/_button-group.scss +70 -0
  80. data/app/assets/stylesheets/lato_view/modules/_buttons.scss +177 -0
  81. data/app/assets/stylesheets/lato_view/modules/_content-block.scss +33 -0
  82. data/app/assets/stylesheets/lato_view/modules/_datepicker.scss +580 -0
  83. data/app/assets/stylesheets/lato_view/modules/_dropdown.scss +166 -0
  84. data/app/assets/stylesheets/lato_view/modules/_flash.scss +55 -0
  85. data/app/assets/stylesheets/lato_view/modules/_form-controls.scss +83 -0
  86. data/app/assets/stylesheets/lato_view/modules/_form.scss +297 -0
  87. data/app/assets/stylesheets/lato_view/modules/_modules.scss +19 -0
  88. data/app/assets/stylesheets/lato_view/modules/_navbar.scss +262 -0
  89. data/app/assets/stylesheets/lato_view/modules/_pagination.scss +30 -0
  90. data/app/assets/stylesheets/lato_view/modules/_search-bar.scss +44 -0
  91. data/app/assets/stylesheets/lato_view/modules/_select.scss +313 -0
  92. data/app/assets/stylesheets/lato_view/modules/_sidebar.scss +211 -0
  93. data/app/assets/stylesheets/lato_view/modules/_status.scss +39 -0
  94. data/app/assets/stylesheets/lato_view/modules/_table.scss +94 -0
  95. data/app/assets/stylesheets/lato_view/modules/_upload.scss +371 -0
  96. data/app/assets/stylesheets/lato_view/modules/_wyswyg.scss +755 -0
  97. data/app/assets/stylesheets/lato_view/views/_admin.scss +30 -0
  98. data/app/assets/stylesheets/lato_view/views/_grid.scss +448 -0
  99. data/app/assets/stylesheets/lato_view/views/_login.scss +152 -0
  100. data/app/assets/stylesheets/lato_view/views/_print.scss +41 -0
  101. data/app/assets/stylesheets/lato_view/views/_views.scss +48 -0
  102. data/app/concepts/lato_view/actionbar/cell.rb +65 -0
  103. data/app/concepts/lato_view/actionbar/views/show.html.erb +21 -0
  104. data/app/concepts/lato_view/block/cell.rb +52 -0
  105. data/app/concepts/lato_view/buttongroup/cell.rb +50 -0
  106. data/app/concepts/lato_view/buttongroup/views/show.html.erb +7 -0
  107. data/app/concepts/lato_view/dropdown/cell.rb +46 -0
  108. data/app/concepts/lato_view/dropdown/views/show.html.erb +19 -0
  109. data/app/concepts/lato_view/index/cell.rb +112 -0
  110. data/app/concepts/lato_view/index/views/head.html.erb +12 -0
  111. data/app/concepts/lato_view/index/views/rows.html.erb +49 -0
  112. data/app/concepts/lato_view/input/cell.rb +148 -0
  113. data/app/concepts/lato_view/input/views/checkbox.html.erb +8 -0
  114. data/app/concepts/lato_view/input/views/date.html.erb +5 -0
  115. data/app/concepts/lato_view/input/views/editor.html.erb +7 -0
  116. data/app/concepts/lato_view/input/views/email.html.erb +5 -0
  117. data/app/concepts/lato_view/input/views/file.html.erb +17 -0
  118. data/app/concepts/lato_view/input/views/multiple-select.html.erb +12 -0
  119. data/app/concepts/lato_view/input/views/number.html.erb +5 -0
  120. data/app/concepts/lato_view/input/views/password.html.erb +8 -0
  121. data/app/concepts/lato_view/input/views/radio.html.erb +10 -0
  122. data/app/concepts/lato_view/input/views/select.html.erb +12 -0
  123. data/app/concepts/lato_view/input/views/text.html.erb +5 -0
  124. data/app/concepts/lato_view/input/views/textarea.html.erb +5 -0
  125. data/app/concepts/lato_view/input/views/time.html.erb +5 -0
  126. data/app/concepts/lato_view/searchbar/cell.rb +63 -0
  127. data/app/concepts/lato_view/searchbar/views/show.html.erb +6 -0
  128. data/app/concepts/lato_view/table/cell.rb +88 -0
  129. data/app/concepts/lato_view/table/views/head.html.erb +9 -0
  130. data/app/concepts/lato_view/table/views/row.html.erb +7 -0
  131. data/app/concepts/lato_view/table/views/rows.html.erb +5 -0
  132. data/app/controllers/lato_view/assets_controller.rb +18 -0
  133. data/app/controllers/lato_view/develop_controller.rb +18 -0
  134. data/app/helpers/lato_view/application_helper.rb +22 -0
  135. data/app/views/lato_view/develop/home.html.erb +281 -0
  136. data/app/views/lato_view/icons/_arrowdown.svg +1 -0
  137. data/app/views/lato_view/icons/_arrowleft.svg +1 -0
  138. data/app/views/lato_view/icons/_arrowright.svg +1 -0
  139. data/app/views/lato_view/icons/_arrowup.svg +1 -0
  140. data/app/views/lato_view/icons/_artist.svg +1 -0
  141. data/app/views/lato_view/icons/_artwork.svg +1 -0
  142. data/app/views/lato_view/icons/_attachment.svg +1 -0
  143. data/app/views/lato_view/icons/_calendar.svg +1 -0
  144. data/app/views/lato_view/icons/_clients.svg +1 -0
  145. data/app/views/lato_view/icons/_close.svg +1 -0
  146. data/app/views/lato_view/icons/_download.svg +1 -0
  147. data/app/views/lato_view/icons/_file.svg +1 -0
  148. data/app/views/lato_view/icons/_googleplus.svg +1 -0
  149. data/app/views/lato_view/icons/_home.svg +1 -0
  150. data/app/views/lato_view/icons/_info.svg +1 -0
  151. data/app/views/lato_view/icons/_instagram.svg +1 -0
  152. data/app/views/lato_view/icons/_latologo.svg +1 -0
  153. data/app/views/lato_view/icons/_linkedin.svg +1 -0
  154. data/app/views/lato_view/icons/_list.svg +1 -0
  155. data/app/views/lato_view/icons/_magni-glass.svg +1 -0
  156. data/app/views/lato_view/icons/_mail.svg +1 -0
  157. data/app/views/lato_view/icons/_minus.svg +1 -0
  158. data/app/views/lato_view/icons/_modify.svg +1 -0
  159. data/app/views/lato_view/icons/_percentage.svg +1 -0
  160. data/app/views/lato_view/icons/_plus.svg +1 -0
  161. data/app/views/lato_view/icons/_power.svg +1 -0
  162. data/app/views/lato_view/icons/_settings.svg +1 -0
  163. data/app/views/lato_view/icons/_sweet.svg +1 -0
  164. data/app/views/lato_view/icons/_trash.svg +1 -0
  165. data/app/views/lato_view/icons/_twitter.svg +1 -0
  166. data/app/views/lato_view/icons/_upload.svg +1 -0
  167. data/app/views/lato_view/icons/_user.svg +1 -0
  168. data/app/views/lato_view/icons/_users.svg +1 -0
  169. data/app/views/lato_view/icons/_warning.svg +1 -0
  170. data/app/views/lato_view/icons/_web.svg +1 -0
  171. data/app/views/lato_view/layout/_flash.html.erb +5 -0
  172. data/app/views/lato_view/layout/_header.html.erb +31 -0
  173. data/app/views/lato_view/layout/_sidebar.html.erb +28 -0
  174. data/app/views/lato_view/layout/_strings.html.erb +8 -0
  175. data/app/views/layouts/lato_layout.html.erb +81 -0
  176. data/config/example.yml +19 -0
  177. data/config/initializers/assets.rb +5 -0
  178. data/config/initializers/init.rb +5 -0
  179. data/config/initializers/lists.rb +34 -0
  180. data/config/initializers/ram.rb +23 -0
  181. data/config/routes.rb +9 -0
  182. data/lib/lato_view/concepts.rb +19 -0
  183. data/lib/lato_view/engine.rb +23 -0
  184. data/lib/lato_view/interface/assets.rb +90 -0
  185. data/lib/lato_view/interface/images.rb +69 -0
  186. data/lib/lato_view/interface/navigation.rb +17 -0
  187. data/lib/lato_view/interface/themes.rb +37 -0
  188. data/lib/lato_view/interface.rb +19 -0
  189. data/lib/lato_view.rb +20 -0
  190. data/lib/tasks/lato_starter_tasks.rake +11 -0
  191. data/test/controllers/lato_view/api/v1/api_controller_test.rb +9 -0
  192. data/test/controllers/lato_view/application_controller_test.rb +9 -0
  193. data/test/controllers/lato_view/back/back_controller_test.rb +9 -0
  194. data/test/dummy/README.rdoc +28 -0
  195. data/test/dummy/Rakefile +6 -0
  196. data/test/dummy/app/assets/javascripts/application.js +13 -0
  197. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  198. data/test/dummy/app/controllers/application_controller.rb +5 -0
  199. data/test/dummy/app/helpers/application_helper.rb +2 -0
  200. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  201. data/test/dummy/bin/bundle +3 -0
  202. data/test/dummy/bin/rails +4 -0
  203. data/test/dummy/bin/rake +4 -0
  204. data/test/dummy/bin/setup +29 -0
  205. data/test/dummy/config/application.rb +25 -0
  206. data/test/dummy/config/boot.rb +5 -0
  207. data/test/dummy/config/database.yml +25 -0
  208. data/test/dummy/config/environment.rb +5 -0
  209. data/test/dummy/config/environments/development.rb +41 -0
  210. data/test/dummy/config/environments/production.rb +79 -0
  211. data/test/dummy/config/environments/test.rb +42 -0
  212. data/test/dummy/config/initializers/assets.rb +11 -0
  213. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  214. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  215. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  216. data/test/dummy/config/initializers/inflections.rb +16 -0
  217. data/test/dummy/config/initializers/mime_types.rb +4 -0
  218. data/test/dummy/config/initializers/session_store.rb +3 -0
  219. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  220. data/test/dummy/config/locales/en.yml +23 -0
  221. data/test/dummy/config/routes.rb +3 -0
  222. data/test/dummy/config/secrets.yml +22 -0
  223. data/test/dummy/config.ru +4 -0
  224. data/test/dummy/public/404.html +67 -0
  225. data/test/dummy/public/422.html +67 -0
  226. data/test/dummy/public/500.html +66 -0
  227. data/test/dummy/public/favicon.ico +0 -0
  228. data/test/integration/navigation_test.rb +8 -0
  229. data/test/lato_view_test.rb +7 -0
  230. data/test/test_helper.rb +21 -0
  231. metadata +453 -0
@@ -0,0 +1,65 @@
1
+ module LatoView
2
+ # Cella che si occupa di generare una actionbar in grado di contenere
3
+ # il titolo della pagina e i link alle principali azioni. Puo' inoltre
4
+ # contenere anche dei widget per altri tipi di interazioni.
5
+ module Actionbar
6
+ # Cella Actionbar
7
+ class Cell < Cell
8
+
9
+ # Lista allineamenti accettati dalla cella per i widget
10
+ @@align = %(left right)
11
+ # Lista di links da mostrare nella Actionbar secondo la
12
+ # struttura [['Nome link', 'url'], ['Nome link', 'url']]
13
+ # * *default*: nil
14
+ attr_accessor :links
15
+
16
+ # Titolo principale da mostrare nella Actionbar
17
+ # * *default*: nil
18
+ attr_accessor :title
19
+
20
+ # Celle da inserire all'interno della Actionbar. Le celle per ora
21
+ # supportate sono: (searchbar, dropdown, buttongroup).
22
+ # I widget devono essere inseriti sotto forma di array che segue
23
+ # la struttura [[cella_widget, 'allineamento'], [...]]
24
+ # * *default*: nil
25
+ attr_accessor :widgets
26
+
27
+ def initialize(links: nil, title: '', widgets: nil)
28
+ # assegno i valori alle variabili di istanza
29
+ @links = links if links && check_links(links)
30
+ @title = title
31
+ @widgets = widgets if widgets && check_widgets(widgets)
32
+ end
33
+
34
+ def show
35
+ render 'show.html'
36
+ end
37
+
38
+ # Funzione che controlla che la lista links sia inviata nel formato
39
+ # corretto
40
+ private def check_links(links)
41
+ # evito il controllo se sono in production
42
+ return true if Rails.env.production?
43
+ raise 'Actionbar Concept: links must be an array' unless links.is_a? Array
44
+ links.each do |link|
45
+ raise 'Actionbar Concept: links content must be an array' unless link.is_a? Array
46
+ raise 'Actionbar Concept: links content must have two value' if link.length != 2
47
+ end
48
+ end
49
+
50
+ # Funzione che controlla che i widgets passati alla actionbar siano corretti
51
+ private def check_widgets(widgets)
52
+ # evito il controllo se sono in production
53
+ return true if Rails.env.production?
54
+ raise 'Actionbar Concept: links must be an array' unless widgets.is_a? Array
55
+ widgets.each do |widget|
56
+ raise 'Actionbar Concept: widgets content must be an array' unless widget.is_a? Array
57
+ raise 'Actionbar Concept: widgets content must have two value' if widget.length != 2
58
+ raise 'Actionbar Concept: widget align is not a correct value' unless @@align.include? widget.last.to_s
59
+ end
60
+ end
61
+
62
+ end
63
+ # Fine cella
64
+ end
65
+ end
@@ -0,0 +1,21 @@
1
+ <div class="action-bar">
2
+ <div class="action-group-left">
3
+ <h1 class="admin-section-title"><%= @title %></h1>
4
+ </div>
5
+
6
+ <% if @widgets %>
7
+ <% @widgets.each do |widget| %>
8
+ <div class="action-group-<%= widget.last %>">
9
+ <%= raw widget.first %>
10
+ </div>
11
+ <% end %>
12
+ <% end %>
13
+
14
+ <div class="action-group-right">
15
+ <% if @links %>
16
+ <% @links.each do |link| %>
17
+ <%= link_to link[0], link[1], class: 'lato-button action-button' %>
18
+ <% end %>
19
+ <% end %>
20
+ </div>
21
+ </div>
@@ -0,0 +1,52 @@
1
+ module LatoView
2
+ # Cella che si occupa di generare un blocco contenitore generale
3
+ # utilizzabile per inserire altri elementi
4
+ module Block
5
+ # Cella Block
6
+ class Cell < Cell
7
+ # Lista dei parametri accettati per l'attributo width
8
+ @@widths = VIEW_GRIDCLASS
9
+
10
+ # Dimensione del blocco (half, third, fourth, two-third)
11
+ # * *default*: nil (large)
12
+ attr_accessor :width
13
+
14
+ # Contenuto del blocco
15
+ # * *default*: nil
16
+ attr_accessor :content
17
+
18
+ # Classi custom aggiunte all'html del blocco
19
+ # * *default*: nil
20
+ attr_accessor :custom_class
21
+
22
+ def initialize(width: 'small-12 medium-12 large-12 xlarge-12', content: '', custom_class: '')
23
+ # eseguo brevi controlli sull'input
24
+ raise 'Block Concept: width value in not correct' unless (width.to_s.split(' ') - @@widths).empty?
25
+ # assegno i valori alle variabili di istanza
26
+ @width = width
27
+ @content = content
28
+ @class = custom_class
29
+ end
30
+
31
+ def show
32
+ open + @content + close
33
+ end
34
+
35
+ # Funzione per stampare l'apertura di un blocco
36
+ # * *Parametri* :
37
+ # - width: dimensione del blocco da aprire (se non viene impostata la
38
+ # funzione
39
+ # utilizza la dimensione prefissata in fase di inizializzazione)
40
+ def open(width: @width, custom_class: @class)
41
+ "<div class='content-block column #{width} #{custom_class}'>"
42
+ end
43
+
44
+ # Funzione per stampare la chiusura di un blocco
45
+ def close
46
+ '</div>'
47
+ end
48
+
49
+ end
50
+ # Fine cella
51
+ end
52
+ end
@@ -0,0 +1,50 @@
1
+ module LatoView
2
+ # Elemento grafico composto da un insieme di link uniti in orizzontale
3
+ module Buttongroup
4
+ # Cella Buttongroup
5
+ class Cell < Cell
6
+ # Lista stili possibili per il bottongroup
7
+ @@styles = VIEW_CELLSSTYLES
8
+
9
+ # Lista di links da mostrare nella Actionbar secondo la
10
+ # struttura [['Nome link', 'url'], ['Nome link', 'url']]
11
+ # * *default*: nil
12
+ attr_accessor :links
13
+
14
+ # Dimensione dei pulsanti della button
15
+ # * *default*: nil
16
+ attr_accessor :size
17
+
18
+ # Stile da utilizzare per la buttongroup
19
+ # * *default*: nil (normal)
20
+ attr_accessor :style
21
+
22
+ def initialize(links: nil, size: nil, style: 'normal')
23
+ # eseguo brevi controlli sull'input
24
+ raise 'Bottongroup Concept: style value in not correct' unless @@styles.include? style.to_s
25
+ # assegno i valori alle variabili di istanza
26
+ @links = links if links && check_links(links)
27
+ @size = size
28
+ @style = style
29
+ end
30
+
31
+ def show
32
+ render 'show.html'
33
+ end
34
+
35
+ # Funzione che controlla che la lista links sia inviata nel formato
36
+ # corretto
37
+ private def check_links(links)
38
+ # evito il controllo se sono in production
39
+ return true if Rails.env.production?
40
+ raise 'Bottongroup Concept: links must be an array' unless links.is_a? Array
41
+ links.each do |link|
42
+ raise 'Bottongroup Concept: links content must be an array' unless link.is_a? Array
43
+ raise 'Bottongroup Concept: links content must have two value' if link.length != 2
44
+ end
45
+ end
46
+
47
+ end
48
+ # Fine cella
49
+ end
50
+ end
@@ -0,0 +1,7 @@
1
+ <div class="button-group group-<%= @size %> <%= @style %>">
2
+ <% if @links %>
3
+ <% @links.each do |link| %>
4
+ <%= link_to link[0], link[1], class: 'group-button' %>
5
+ <% end %>
6
+ <% end %>
7
+ </div>
@@ -0,0 +1,46 @@
1
+ module LatoView
2
+ # Cella che si occupa di generare un pannello di dropdown in grado di
3
+ # contenere una lista di link
4
+ module Dropdown
5
+ # Cella Actionbar
6
+ class Cell < Cell
7
+ # Lista di links da mostrare nel Dropdown secondo la
8
+ # struttura [['Nome link', 'url'], ['Nome link', 'url']]
9
+ # * *default*: nil
10
+ attr_accessor :links
11
+
12
+ # Titolo principale da mostrare nel dropdown
13
+ # * *default*: nil
14
+ attr_accessor :title
15
+
16
+ # Testo da inserire come nome nel pulsante che apre il Dropdown
17
+ # * *default*: nil
18
+ attr_accessor :button
19
+
20
+ def initialize(links: nil, title: '', button: nil)
21
+ # assegno i valori alle variabili di istanza
22
+ @links = links if links && check_links(links)
23
+ @title = title
24
+ @button = button
25
+ end
26
+
27
+ def show
28
+ render 'show.html'
29
+ end
30
+
31
+ # Funzione che controlla che la lista links sia inviata nel formato
32
+ # corretto
33
+ private def check_links(links)
34
+ # evito il controllo se sono in production
35
+ return true if Rails.env.production?
36
+ raise 'Dropdown Concept: links must be an array' unless links.is_a? Array
37
+ links.each do |link|
38
+ raise 'Dropdown Concept: links content must be an array' unless link.is_a? Array
39
+ raise 'Dropdown Concept: links content must have two value' if link.length != 2
40
+ end
41
+ end
42
+
43
+ end
44
+ # Fine cella
45
+ end
46
+ end
@@ -0,0 +1,19 @@
1
+ <div class="arranger">
2
+ <% if @title %>
3
+ <div class="arrange-voice"><%= @title %></div>
4
+ <% end %>
5
+ <div class="dropdown">
6
+ <% if @button %>
7
+ <div class="active-voice"><span class="voice-text"><%= @button %></span> <span class="drop-icon"></span></div>
8
+ <% else %>
9
+ <div class="active-voice"><span class="voice-text"><%= @links.first.first %></span> <span class="drop-icon"></span></div>
10
+ <% end %>
11
+ <div class="the-drop">
12
+ <ul>
13
+ <% @links.each do |link| %>
14
+ <li><a href="<%= link.last %>"><%= link.first %></a></li>
15
+ <% end %>
16
+ </ul>
17
+ </div>
18
+ </div>
19
+ </div>
@@ -0,0 +1,112 @@
1
+ module LatoView
2
+ # Cella che si occupa di mostrare una lista di elementi di un model
3
+ # insieme ai link alle azioni di visualizzazione, modifica e eliminazione.
4
+ # Il corretto funzionamento dei link alle azioni necessita che i routes del
5
+ # modello siano settati attraverso la funzione 'resources'
6
+ module Index
7
+ # Cella Index
8
+ class Cell < Cell
9
+ # Istanze del database da stampare
10
+ attr_accessor :elements
11
+
12
+ # Intestazione della tabella
13
+ # * *struttura*: ['Voce 1', 'Voce 2', ... ]
14
+ attr_accessor :head
15
+
16
+ # Attributi dellle entita' da mostrare nella tabella
17
+ # * *struttura*: ['voce1', 'voce2', ... ]
18
+ attr_accessor :attributes
19
+
20
+ # Link principale alla pagina index delle entita'
21
+ # (da gestire tramite resources)
22
+ attr_accessor :link
23
+
24
+ # Valore booleano che indica se mostrare il link allo show dell'entita'
25
+ # * *default*: true
26
+ attr_accessor :show_link
27
+
28
+ # Valore booleano che indica se mostrare il link all'edit dell'entita'
29
+ # * *default*: true
30
+ attr_accessor :edit_link
31
+
32
+ # Valore booleano che indica se mostrare il link al delete dell'entita'
33
+ # * *default*: true
34
+ attr_accessor :delete_link
35
+
36
+ # Valore booleano che indica se il link di eliminazione deve essere
37
+ # eseguito con il remote: true
38
+ # * *default*: false
39
+ attr_accessor :remote_delete
40
+
41
+ # Valore usato per aggiungere delle classi custom alla tabella dell'index
42
+ # * *default*: nil
43
+ attr_accessor :custom_class
44
+
45
+ def initialize(elements: nil, head: nil, attributes: nil, link: nil,
46
+ show_link: true, edit_link: true, delete_link: true,
47
+ remote_delete: false, custom_class: nil)
48
+ # eseguo brevi controlli sull'input
49
+ raise 'Index Concept: head must be an array' unless head.is_a? Array
50
+ raise 'Index Concept: attributes must be an array' unless attributes.is_a? Array
51
+ raise 'Index Concept: head and attributes have different length' if head.length != attributes.length
52
+ # assegno i valori alle variabili di istanza
53
+ @elements = elements
54
+ @head = head
55
+ @attributes = attributes
56
+ @link = link
57
+ @show_link = show_link
58
+ @edit_link = edit_link
59
+ @delete_link = delete_link
60
+ @remote_delete = remote_delete
61
+ @custom_class = custom_class
62
+ end
63
+
64
+ def show
65
+ open + head + rows + close
66
+ end
67
+
68
+ # Funzione che stampa l'apertura dell'index
69
+ def open
70
+ "<table class='table #{@custom_class}'>"
71
+ end
72
+
73
+ # Funzione che genera l'intestazione dell'index
74
+ def head
75
+ render 'head.html'
76
+ end
77
+
78
+ # Funzione che stampa le righe dell'index
79
+ def rows
80
+ render 'rows.html'
81
+ end
82
+
83
+ # Funzione che stampa la chiusura di una tabella
84
+ def close
85
+ '</table>'
86
+ end
87
+
88
+ # Funzione che ritorna il link allo show dell'entita' con l'id
89
+ # passato come parametro
90
+ protected def show_link(id)
91
+ return "#{@link}#{id}" if @link.end_with? '/'
92
+ "#{@link}/#{id}"
93
+ end
94
+
95
+ # Funzione che ritorna il link all'edit dell'entita'
96
+ # con l'id passato come parametro
97
+ protected def edit_link(id)
98
+ return "#{@link}#{id}/edit" if @link.end_with? '/'
99
+ "#{@link}/#{id}/edit"
100
+ end
101
+
102
+ # Funzione che ritorna il link all'edit dell'entita'
103
+ # con l'id passato come parametro
104
+ protected def delete_link(id)
105
+ show_link(id)
106
+ end
107
+
108
+
109
+ end
110
+ # Fine cella
111
+ end
112
+ end
@@ -0,0 +1,12 @@
1
+ <% if(@head and !@head.nil?) %>
2
+ <thead>
3
+ <tr>
4
+ <% @head.each do |title| %>
5
+ <th><%=raw title %></th>
6
+ <% end %>
7
+ <% if @show_link || @edit_link || @delete_link %>
8
+ <th class="actions"><%= VIEW_LANG['index']['actions'] %></th>
9
+ <% end %>
10
+ </tr>
11
+ </thead>
12
+ <% end %>
@@ -0,0 +1,49 @@
1
+ <% if(@elements) %>
2
+ <tbody>
3
+ <% @elements.each do |element| %>
4
+ <tr>
5
+ <% @attributes.each_with_index do |attribute, index| %>
6
+ <% value = element.send(attribute) %>
7
+
8
+ <% # se e' un booleano %>
9
+ <% if(!!value == value) %>
10
+
11
+ <td data-label="<%= @head[index] %>">
12
+ <% if value %>
13
+ <div class="general-status">
14
+ <div class="status round-status true"></div>
15
+ </div>
16
+ <% else %>
17
+ <div class="general-status">
18
+ <div class="status round-status false"></div>
19
+ </div>
20
+ <% end %>
21
+ </td>
22
+
23
+ <% else %>
24
+
25
+ <td data-label="<%= @head[index] %>"><%= value %></td>
26
+
27
+ <% end %>
28
+
29
+ <% end %>
30
+
31
+ <% if @show_link || @edit_link || @delete_link %>
32
+ <td class="actions">
33
+ <% if(@show_link) %>
34
+ <%= link_to VIEW_LANG['index']['show'], self.show_link(element.id), class: 'lato-button' %>
35
+ <% end %>
36
+ <% if(@edit_link) %>
37
+ <%= link_to VIEW_LANG['index']['edit'], self.edit_link(element.id), class: 'lato-button button-yellow' %>
38
+ <% end %>
39
+ <% if(@delete_link) %>
40
+ <%= link_to VIEW_LANG['index']['delete'], self.delete_link(element.id), method: :delete, remote: @remote_delete,
41
+ class: 'lato-button button-red',
42
+ data: {confirm: VIEW_LANG['input']['confirm_delete']} %>
43
+ <% end %>
44
+ </td>
45
+ <% end %>
46
+ </tr>
47
+ <% end %>
48
+ </tbody>
49
+ <% end %>
@@ -0,0 +1,148 @@
1
+ module LatoView
2
+ # Cella che gestisce tutti i possibili input utilizzabili nei form
3
+ module Input
4
+ # Cella Input
5
+ class Cell < Cell
6
+ # Lista di tipologie di input accettate
7
+ @@types = VIEW_INPUTTYPES
8
+ # Lista dei parametri accettati per l'attributo width
9
+ @@widths = VIEW_INPUTWIDTH
10
+
11
+ # Tipologia di input da inizializzare
12
+ # (text, number, select, password, email, multiple-select, date,
13
+ # checkbox, radio, textarea, file)
14
+ # * *default*: 'text'
15
+ attr_accessor :type
16
+
17
+ # Nome da assegnare all'input
18
+ # * *default*: 'input'
19
+ attr_accessor :name
20
+
21
+ # Valore da inserire come placeholder all'input
22
+ # * *default*: nil
23
+ attr_accessor :placeholder
24
+
25
+ # Valore gia' impostato nell'input
26
+ # * *default*: nil
27
+ attr_accessor :value
28
+
29
+ # Testo da inserire nella label dell'input
30
+ # * *default*: nil
31
+ attr_accessor :label
32
+
33
+ # Dimensione dell'input (half, third, fourth, two-third)
34
+ # * *default*: nil ('large')
35
+ attr_accessor :width
36
+
37
+ # Valore booleano usato per indicare se l'input e' obbligatorio
38
+ # nel form in cui si trova
39
+ # * *default*: false
40
+ attr_accessor :required
41
+
42
+ # Valore booleano che indica (nel caso di input password) se mostrare
43
+ # il pulsante per vedere la password
44
+ # * *default*: true
45
+ attr_accessor :password_visible
46
+
47
+ # Classi custom da inserire nel codice dell'input
48
+ # * *default*: nil
49
+ attr_accessor :custom_class
50
+
51
+ # Lista di opzioni da mostrare (nel caso di input select o radio buttons
52
+ # e checkbox).
53
+ # La struttura deve essere [['value1', 'Name 1'], ['value2', 'Name 2']]
54
+ # * *default*: []
55
+ attr_accessor :options
56
+
57
+ # Valore booleano che indica (nel caso di input select) se mostrare
58
+ # o meno la prima opzione del select vuota
59
+ # * *default*: false
60
+ attr_accessor :option_blank
61
+
62
+ # Valore che indica se disattivare o meno l'input
63
+ # * *default*: false
64
+ attr_accessor :disabled
65
+
66
+ # Valore che indica (nel caso di input file) se accettare piu' file o
67
+ # uno singolarmente
68
+ # * *default*: false
69
+ attr_accessor :multiple_files
70
+
71
+ def initialize(type: 'text', name: 'input', placeholder: '',
72
+ value: '', label: '', width: 'large', required: false,
73
+ password_visible: true, custom_class: '', options: [],
74
+ option_blank: false, disabled: false,
75
+ multiple_files: false)
76
+ # eseguo brevi controlli sull'input
77
+ raise 'Input Concept: type has not a correct value' unless @@types.include? type
78
+ raise 'Input Concept: width has not a correct value' unless @@widths.include? width
79
+ raise 'Input Concept: options must be an array' if options && !options.is_a?(Array)
80
+ # assegno i valori alle variabili di istanza
81
+ @type = type
82
+ @name = name
83
+ @placeholder = placeholder
84
+ @value = value
85
+ @label = label
86
+ @width = width
87
+ @required = required
88
+ @password_visible = password_visible
89
+ @options = options
90
+ @custom_class = custom_class
91
+ @option_blank = option_blank
92
+ @disabled = disabled
93
+ @multiple_files = multiple_files
94
+ end
95
+
96
+ def show
97
+ render "#{@type.downcase}.html" if @type
98
+ end
99
+
100
+ # Ritorna il value di un opzione di un select ricevuta come parametro.
101
+ # Funzione usata solo per i select e i radio button
102
+ protected def option_value(option)
103
+ return option.first if option.is_a? Array
104
+ return option
105
+ end
106
+
107
+ # Ritorna il name di un opzione di un select di un select ricevuta
108
+ # come parametro. Funzione usata solo per i select e i radio button
109
+ protected def option_name(option)
110
+ return option.last if option.is_a? Array
111
+ return option
112
+ end
113
+
114
+ # Ritorna una stringa 'selected' se il valore dell'option ricevuto
115
+ # come parametro e' uguale al value inizializzato all'input
116
+ protected def selected_value(option)
117
+ value = option_value(option)
118
+ return "checked" if value === @value && @type === 'radio'
119
+ return "selected='selected'" if value === @value || (@type === 'multiple-select' && @value.is_a?(Array) && @value.include?(value))
120
+ end
121
+
122
+ # Funzione che ritorna la stringa con attributo data-input settato a
123
+ # required se l'input risulta essere stato inizializzato come obbligatorio
124
+ protected def required_data_input
125
+ return "data-input='check'" if @type === 'checkbox' && @required
126
+ return "data-input='required'" if @required
127
+ end
128
+
129
+ # Funzione che disabilita un input
130
+ protected def disabled_data_input
131
+ return "disabled='disabled'" if @disabled
132
+ end
133
+
134
+ # Funzione che prende in input un activerecords, il nome dell'attributo
135
+ # da usare come valore e il nome dell'attributo da usare come nome e
136
+ # ritorna un array da usare come options per un input select o un radio buttons
137
+ def self.generate_options_from_activerecords(activerecords, value, name)
138
+ rows = []
139
+ activerecords.each do |row|
140
+ rows.push([row.send(value), row.send(name)])
141
+ end
142
+ rows
143
+ end
144
+
145
+ end
146
+ # Fine cella
147
+ end
148
+ end
@@ -0,0 +1,8 @@
1
+ <div class="form-control <%= @width %>" <%= required_data_input %>>
2
+ <div class="form-block">
3
+ <input type="hidden" name="<%= @name %>" value="0">
4
+ <input type="checkbox" class="check <%= @custom_class %>" <%= disabled_data_input %> name="<%= @name %>" id="<%= @name %>" value="1" <% if @value %>checked<% end %>>
5
+ <label class="label-control" for="<%= @name %>"><%= @label%></label>
6
+ </div>
7
+ <div class="input-error-message"></div>
8
+ </div>
@@ -0,0 +1,5 @@
1
+ <div class="form-control <%= @width %>" <%= required_data_input %>>
2
+ <label class="form-label"><%= @label %></label>
3
+ <input type="text" class="input date-picker <%= @custom_class %>" name="<%= @name %>" placeholder="<%= @placeholder %>" <%= disabled_data_input %> value="<%= @value %>">
4
+ <div class="input-error-message"></div>
5
+ </div>
@@ -0,0 +1,7 @@
1
+ <div class="form-control <%= @width %>" <%= required_data_input %>>
2
+ <label class="form-label"><%= @label %></label>
3
+ <textarea class="editor <%= @custom_class %>" name="<%= @name %>" placeholder="<%= @placeholder %>" >
4
+ <%= @value %>
5
+ </textarea>
6
+ <div class="input-error-message"></div>
7
+ </div>
@@ -0,0 +1,5 @@
1
+ <div class="form-control <%= @width %>" data-control="email" <%= required_data_input %>>
2
+ <label class="form-label"><%= @label %></label>
3
+ <input type="email" autocomplete="off" class="input input-email <%= @custom_class %>" <%= disabled_data_input %> name="<%= @name %>" placeholder="<%= @placeholder %>" value="<%= @value %>">
4
+ <div class="input-error-message"></div>
5
+ </div>
@@ -0,0 +1,17 @@
1
+ <div class="form-control <%= @width %>" <%= required_data_input %>>
2
+ <label class="form-label"><%= @label %></label>
3
+ <input type="file" class="input-file <%= @custom_class %>" id="<%= @name %>" name="<%= @name %>" <%= disabled_data_input %> placeholder="<%= @placeholder %>" value="<%= @value %>" data-multiple-caption="{count} <%= VIEW_LANG['input']['selected_files'] %>" <% if @multiple_files %>multiple<% end %>>
4
+ <label for="<%= @name %>">
5
+ <div class="upload-icon">
6
+ <svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200"><path d="M189.9 126.9v57.6c0 6-4.5 10.5-10.5 10.5H19.2c-6 0-10.5-4.5-10.5-10.5v-57.6c0-6 4.5-10.5 10.5-10.5s10.5 4.5 10.5 10.5v46.5h139.1v-46.5c0-6 4.5-10.5 10.5-10.5s10.6 4.5 10.6 10.5zm-125.2-61l24-24.5v91.1c0 6 4.5 10.5 10.5 10.5s10.5-4.5 10.5-10.5V41.3l24 24.5c2 2 5 3 7.5 3s5.5-1 7.5-3c4-4 4-10.5 0-15l-42-43c-2-2-5-3-7.5-3s-5.5 1-7.5 3l-42 43c-4 4-4 10.5 0 15 4.5 4.6 11 4.1 15 .1z"/></svg>
7
+ </div>
8
+ <span><%= VIEW_LANG['input']['choose_file'] %></span>
9
+ </label>
10
+ <div class="input-error-message"></div>
11
+ </div>
12
+
13
+ <%
14
+
15
+ # DA FIXARE CARICAMENTO ICONA CON RENDER O FUNZIONE PUT_SVG
16
+
17
+ %>
@@ -0,0 +1,12 @@
1
+ <div class="form-control <%= @width %>" <%= required_data_input %>>
2
+ <label class="form-label"><%= @label %></label>
3
+ <select class="select <%= @custom_class %>" name="<%= @name %>" placeholder="<%= @placeholder %>" <%= disabled_data_input %> multiple="multiple">
4
+ <% if(@option_blank) %>
5
+ <option></option>
6
+ <% end %>
7
+ <% @options.each do |option| %>
8
+ <option value="<%= option_value(option) %>" <%= selected_value(option) %>><%= option_name(option) %></option>
9
+ <% end %>
10
+ </select>
11
+ <div class="input-error-message"></div>
12
+ </div>
@@ -0,0 +1,5 @@
1
+ <div class="form-control <%= @width %>" data-control="number" <%= required_data_input %>>
2
+ <label class="form-label"><%= @label %></label>
3
+ <input type="text" class="input input-number <%= @custom_class %>" <%= disabled_data_input %> name="<%= @name %>" placeholder="<%= @placeholder %>" value="<%= @value %>">
4
+ <div class="input-error-message"></div>
5
+ </div>
@@ -0,0 +1,8 @@
1
+ <div class="form-control <%= @width %>" <%= required_data_input %>>
2
+ <label class="form-label"><%= @label %></label>
3
+ <input type="password" class="input input-password <%= @custom_class %>" <%= disabled_data_input %> name="<%= @name %>" placeholder="<%= @placeholder %>" value="<%= @value %>">
4
+ <% if @password_visible %>
5
+ <div class="password-reveal"></div>
6
+ <% end %>
7
+ <div class="input-error-message"></div>
8
+ </div>