lato_view 1.1

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