binda 0.0.7 → 0.1.0

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 (301) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +850 -18
  3. data/Rakefile +1 -13
  4. data/app/assets/javascripts/binda/application.js +23 -0
  5. data/app/assets/javascripts/binda/components/bootstrap.js +9 -0
  6. data/app/assets/javascripts/binda/components/field_group_editor.js +18 -0
  7. data/app/assets/javascripts/binda/components/fileupload.js +182 -0
  8. data/app/assets/javascripts/binda/components/form_item.js +91 -23
  9. data/app/assets/javascripts/binda/components/form_item_choice.js +15 -8
  10. data/app/assets/javascripts/binda/components/form_item_editor.js +6 -6
  11. data/app/assets/javascripts/binda/components/form_item_image.js +23 -0
  12. data/app/assets/javascripts/binda/components/form_item_repeater.js +70 -23
  13. data/app/assets/javascripts/binda/components/login-shader.js +193 -0
  14. data/app/assets/javascripts/binda/components/login_form.js +116 -0
  15. data/app/assets/javascripts/binda/components/radio-toggle.js +18 -0
  16. data/app/assets/javascripts/binda/components/select2.js +22 -0
  17. data/app/assets/javascripts/binda/components/sortable.js +53 -8
  18. data/app/assets/javascripts/binda/dist/binda.bundle.js +914 -107
  19. data/app/assets/javascripts/binda/index.js +26 -3
  20. data/app/assets/stylesheets/binda/application.scss +6 -0
  21. data/app/assets/stylesheets/binda/components/assets_manager.scss +46 -36
  22. data/app/assets/stylesheets/binda/components/b-btn.scss +114 -0
  23. data/app/assets/stylesheets/binda/components/button.scss +4 -1
  24. data/app/assets/stylesheets/binda/components/fileupload.scss +134 -0
  25. data/app/assets/stylesheets/binda/components/form_item.scss +233 -168
  26. data/app/assets/stylesheets/binda/components/form_item_image.scss +0 -0
  27. data/app/assets/stylesheets/binda/components/form_item_video.scss +25 -0
  28. data/app/assets/stylesheets/binda/components/main_container.scss +3 -0
  29. data/app/assets/stylesheets/binda/components/main_content.scss +1 -2
  30. data/app/assets/stylesheets/binda/components/main_header.scss +21 -20
  31. data/app/assets/stylesheets/binda/components/main_sidebar.scss +121 -0
  32. data/app/assets/stylesheets/binda/components/main_table.scss +84 -28
  33. data/app/assets/stylesheets/binda/components/popup_warning.scss +71 -0
  34. data/app/assets/stylesheets/binda/components/select2.scss +126 -0
  35. data/app/assets/stylesheets/binda/components/sortable.scss +83 -56
  36. data/app/assets/stylesheets/binda/components/standard-form.scss +228 -0
  37. data/app/assets/stylesheets/binda/components/texts.scss +6 -0
  38. data/app/assets/stylesheets/binda/controllers/components_index.scss +3 -0
  39. data/app/assets/stylesheets/binda/controllers/users_sessions_new.scss +309 -0
  40. data/app/assets/stylesheets/binda/index.scss +16 -8
  41. data/app/assets/stylesheets/binda/settings/bootstrap_overrides.scss +0 -0
  42. data/app/assets/stylesheets/binda/settings/buttons.scss +36 -0
  43. data/app/assets/stylesheets/binda/settings/common.scss +36 -79
  44. data/app/assets/stylesheets/binda/settings/fonts.scss +88 -31
  45. data/app/assets/stylesheets/binda/settings/tiny_mce_overrides.scss +82 -0
  46. data/app/assets/stylesheets/binda/settings/variables.scss +36 -31
  47. data/app/controllers/binda/application_controller.rb +0 -2
  48. data/app/controllers/binda/assets_controller.rb +1 -1
  49. data/app/controllers/binda/boards_controller.rb +15 -4
  50. data/app/controllers/binda/components_controller.rb +30 -15
  51. data/app/controllers/binda/field_groups_controller.rb +19 -4
  52. data/app/controllers/binda/images_controller.rb +68 -0
  53. data/app/controllers/binda/repeaters_controller.rb +3 -12
  54. data/app/controllers/binda/structures_controller.rb +8 -1
  55. data/app/controllers/binda/videos_controller.rb +68 -0
  56. data/app/controllers/concerns/binda/fieldable_helpers.rb +113 -28
  57. data/app/controllers/concerns/binda/maintenance_helpers.rb +34 -0
  58. data/app/helpers/binda/components_helper.rb +26 -2
  59. data/app/helpers/binda/field_groups_helper.rb +16 -0
  60. data/app/helpers/binda/structures_helper.rb +6 -0
  61. data/app/models/binda/asset.rb +0 -4
  62. data/app/models/binda/b.rb +5 -0
  63. data/app/models/binda/board.rb +1 -18
  64. data/app/models/binda/choice.rb +48 -12
  65. data/app/models/binda/component.rb +20 -0
  66. data/app/models/binda/field_group.rb +2 -2
  67. data/app/models/binda/field_setting.rb +61 -28
  68. data/app/models/binda/gallery.rb +0 -2
  69. data/app/models/binda/image.rb +7 -0
  70. data/app/models/binda/relation.rb +79 -0
  71. data/app/models/binda/relation_link.rb +11 -0
  72. data/app/models/binda/repeater.rb +1 -1
  73. data/app/models/binda/selection.rb +0 -9
  74. data/app/models/binda/structure.rb +41 -39
  75. data/app/models/binda/video.rb +7 -0
  76. data/app/models/concerns/binda/default_helpers.rb +186 -0
  77. data/app/models/concerns/binda/fieldable_associations.rb +276 -30
  78. data/app/uploaders/binda/{asset → image}/image_uploader.rb +27 -9
  79. data/app/uploaders/binda/video/video_uploader.rb +51 -0
  80. data/app/views/binda/boards/edit.html.erb +6 -1
  81. data/app/views/binda/categories/_form.html.erb +41 -40
  82. data/app/views/binda/categories/edit.html.erb +1 -1
  83. data/app/views/binda/categories/index.html.erb +16 -13
  84. data/app/views/binda/components/edit.html.erb +6 -3
  85. data/app/views/binda/components/index.html.erb +69 -28
  86. data/app/views/binda/components/new.html.erb +1 -1
  87. data/app/views/binda/components/sort_index.html.erb +46 -0
  88. data/app/views/binda/field_groups/_form_body.html.erb +65 -44
  89. data/app/views/binda/field_groups/_form_item.html.erb +66 -23
  90. data/app/views/binda/field_groups/_form_item_choice.erb +34 -15
  91. data/app/views/binda/field_groups/_form_section.html.erb +6 -10
  92. data/app/views/binda/field_groups/_form_section_repeater.html.erb +3 -3
  93. data/app/views/binda/field_groups/edit.html.erb +1 -1
  94. data/app/views/binda/field_settings/_form_body.html.erb +5 -5
  95. data/app/views/binda/field_settings/edit.html.erb +1 -1
  96. data/app/views/binda/fieldable/_form_body.html.erb +93 -79
  97. data/app/views/binda/fieldable/_form_item_date.html.erb +14 -14
  98. data/app/views/binda/fieldable/_form_item_image.html.erb +35 -0
  99. data/app/views/binda/fieldable/_form_item_new_repeater.html.erb +12 -5
  100. data/app/views/binda/fieldable/_form_item_relation.html.erb +44 -0
  101. data/app/views/binda/fieldable/_form_item_repeater.html.erb +80 -58
  102. data/app/views/binda/fieldable/_form_item_selections.html.erb +109 -87
  103. data/app/views/binda/fieldable/_form_item_string.html.erb +19 -17
  104. data/app/views/binda/fieldable/_form_item_text.html.erb +19 -16
  105. data/app/views/binda/fieldable/_form_item_video.html.erb +32 -0
  106. data/app/views/binda/fieldable/_form_section.html.erb +27 -5
  107. data/app/views/binda/fieldable/_form_section_repeater.html.erb +30 -10
  108. data/app/views/binda/fieldable/_form_sidebar.html.erb +44 -20
  109. data/app/views/binda/manage/users/_form_body.html.erb +42 -37
  110. data/app/views/binda/manage/users/edit.html.erb +1 -1
  111. data/app/views/binda/manage/users/index.html.erb +21 -21
  112. data/app/views/binda/structures/_form_body.html.erb +54 -60
  113. data/app/views/binda/structures/_form_section.html.erb +32 -18
  114. data/app/views/binda/structures/_form_sidebar.html.erb +35 -0
  115. data/app/views/binda/structures/edit.html.erb +2 -2
  116. data/app/views/binda/structures/index.html.erb +21 -16
  117. data/app/views/binda/structures/sort_index.html.erb +36 -0
  118. data/app/views/{users → binda/users}/confirmations/new.html.erb +1 -1
  119. data/app/views/{users → binda/users}/mailer/confirmation_instructions.html.erb +0 -0
  120. data/app/views/{users → binda/users}/mailer/password_change.html.erb +0 -0
  121. data/app/views/{users → binda/users}/mailer/reset_password_instructions.html.erb +0 -0
  122. data/app/views/{users → binda/users}/mailer/unlock_instructions.html.erb +0 -0
  123. data/app/views/{users → binda/users}/passwords/edit.html.erb +1 -1
  124. data/app/views/{users → binda/users}/passwords/new.html.erb +1 -1
  125. data/app/views/{users → binda/users}/registrations/edit.html.erb +0 -0
  126. data/app/views/{users → binda/users}/registrations/new.html.erb +1 -1
  127. data/app/views/binda/users/sessions/_background.html.erb +139 -0
  128. data/app/views/binda/users/sessions/new.html.erb +62 -0
  129. data/app/views/{users → binda/users}/shared/_links.html.erb +3 -3
  130. data/app/views/{users → binda/users}/unlocks/new.html.erb +1 -1
  131. data/app/views/kaminari/_first_page.html.erb +11 -0
  132. data/app/views/kaminari/_gap.html.erb +8 -0
  133. data/app/views/kaminari/_last_page.html.erb +11 -0
  134. data/app/views/kaminari/_next_page.html.erb +11 -0
  135. data/app/views/kaminari/_page.html.erb +12 -0
  136. data/app/views/kaminari/_paginator.html.erb +19 -0
  137. data/app/views/kaminari/_prev_page.html.erb +11 -0
  138. data/app/views/layouts/binda/_flash.html.erb +1 -1
  139. data/app/views/layouts/binda/_header.html.erb +2 -6
  140. data/app/views/layouts/binda/_sidebar.html.erb +11 -4
  141. data/app/views/layouts/binda/application.html.erb +15 -7
  142. data/config/autoprefixer.yml +5 -0
  143. data/config/database.yml.travis +3 -0
  144. data/config/initializers/assets.rb +1 -0
  145. data/config/initializers/autoprefixer.yml +5 -0
  146. data/config/initializers/carrierwave.rb +32 -0
  147. data/config/initializers/devise.rb +14 -10
  148. data/config/initializers/devise_patch.rb +8 -8
  149. data/config/initializers/simple_form.rb +4 -0
  150. data/config/initializers/simple_form__fileupload.rb +121 -0
  151. data/config/initializers/{simple_form_bootstrap.rb → simple_form_custom.rb} +79 -50
  152. data/config/locales/en.yml +61 -3
  153. data/config/locales/it.yml +51 -0
  154. data/config/locales/simple_form.en.yml +3 -3
  155. data/config/routes.rb +41 -24
  156. data/db/migrate/1_create_binda_tables.rb +18 -7
  157. data/db/migrate/20171214140451_add_preview_mode.rb +5 -0
  158. data/lib/binda.rb +1 -1
  159. data/lib/binda/engine.rb +19 -23
  160. data/lib/binda/version.rb +2 -2
  161. data/lib/generators/binda/install/install_generator.rb +59 -54
  162. data/lib/generators/binda/install/templates/config/initializers/carrierwave.rb +11 -2
  163. data/lib/generators/binda/maintenance/USAGE +8 -0
  164. data/lib/generators/binda/maintenance/maintenance_generator.rb +50 -0
  165. data/lib/generators/binda/maintenance/templates/app/assets/javascripts/maintenance.js +0 -0
  166. data/lib/generators/binda/maintenance/templates/app/assets/stylesheets/maintenance.scss +0 -0
  167. data/lib/generators/binda/maintenance/templates/app/views/layouts/maintenance.html.erb +16 -0
  168. data/lib/generators/binda/maintenance/templates/config/initializers/maintenance.rb +1 -0
  169. data/lib/generators/binda/setup/setup_generator.rb +41 -30
  170. data/lib/tasks/add_default_helpers_class_task.rake +11 -0
  171. data/lib/tasks/add_video_feature_task.rake +15 -0
  172. data/lib/tasks/remove_orphan_fields_task.rake +16 -0
  173. data/lib/tasks/set_repeater_position_task.rake +13 -0
  174. data/lib/tasks/upgrade_to_v007_task.rake +72 -0
  175. data/lib/tasks/user_tasks.rake +14 -0
  176. data/vendor/assets/fonts/font-awesome/fa-brands-400.eot +0 -0
  177. data/vendor/assets/fonts/font-awesome/fa-brands-400.svg +978 -0
  178. data/vendor/assets/fonts/font-awesome/fa-brands-400.ttf +0 -0
  179. data/vendor/assets/fonts/font-awesome/fa-brands-400.woff +0 -0
  180. data/vendor/assets/fonts/font-awesome/fa-brands-400.woff2 +0 -0
  181. data/vendor/assets/fonts/font-awesome/fa-regular-400.eot +0 -0
  182. data/vendor/assets/fonts/font-awesome/fa-regular-400.svg +363 -0
  183. data/vendor/assets/fonts/font-awesome/fa-regular-400.ttf +0 -0
  184. data/vendor/assets/fonts/font-awesome/fa-regular-400.woff +0 -0
  185. data/vendor/assets/fonts/font-awesome/fa-regular-400.woff2 +0 -0
  186. data/vendor/assets/fonts/font-awesome/fa-solid-900.eot +0 -0
  187. data/vendor/assets/fonts/font-awesome/fa-solid-900.svg +1410 -0
  188. data/vendor/assets/fonts/font-awesome/fa-solid-900.ttf +0 -0
  189. data/vendor/assets/fonts/font-awesome/fa-solid-900.woff +0 -0
  190. data/vendor/assets/fonts/font-awesome/fa-solid-900.woff2 +0 -0
  191. data/vendor/assets/javascripts/GSAP/CSSPlugin.min.js +13 -0
  192. data/vendor/assets/javascripts/GSAP/EasePack.min.js +12 -0
  193. data/vendor/assets/javascripts/GSAP/ScrollToPlugin.min.js +12 -0
  194. data/vendor/assets/javascripts/GSAP/TweenLite.min.js +12 -0
  195. data/vendor/assets/javascripts/select2/i18n/af.js +3 -0
  196. data/vendor/assets/javascripts/select2/i18n/ar.js +3 -0
  197. data/vendor/assets/javascripts/select2/i18n/az.js +3 -0
  198. data/vendor/assets/javascripts/select2/i18n/bg.js +3 -0
  199. data/vendor/assets/javascripts/select2/i18n/bs.js +3 -0
  200. data/vendor/assets/javascripts/select2/i18n/ca.js +3 -0
  201. data/vendor/assets/javascripts/select2/i18n/cs.js +3 -0
  202. data/vendor/assets/javascripts/select2/i18n/da.js +3 -0
  203. data/vendor/assets/javascripts/select2/i18n/de.js +3 -0
  204. data/vendor/assets/javascripts/select2/i18n/dsb.js +3 -0
  205. data/vendor/assets/javascripts/select2/i18n/el.js +3 -0
  206. data/vendor/assets/javascripts/select2/i18n/en.js +3 -0
  207. data/vendor/assets/javascripts/select2/i18n/es.js +3 -0
  208. data/vendor/assets/javascripts/select2/i18n/et.js +3 -0
  209. data/vendor/assets/javascripts/select2/i18n/eu.js +3 -0
  210. data/vendor/assets/javascripts/select2/i18n/fa.js +3 -0
  211. data/vendor/assets/javascripts/select2/i18n/fi.js +3 -0
  212. data/vendor/assets/javascripts/select2/i18n/fr.js +3 -0
  213. data/vendor/assets/javascripts/select2/i18n/gl.js +3 -0
  214. data/vendor/assets/javascripts/select2/i18n/he.js +3 -0
  215. data/vendor/assets/javascripts/select2/i18n/hi.js +3 -0
  216. data/vendor/assets/javascripts/select2/i18n/hr.js +3 -0
  217. data/vendor/assets/javascripts/select2/i18n/hsb.js +3 -0
  218. data/vendor/assets/javascripts/select2/i18n/hu.js +3 -0
  219. data/vendor/assets/javascripts/select2/i18n/hy.js +3 -0
  220. data/vendor/assets/javascripts/select2/i18n/id.js +3 -0
  221. data/vendor/assets/javascripts/select2/i18n/is.js +3 -0
  222. data/vendor/assets/javascripts/select2/i18n/it.js +3 -0
  223. data/vendor/assets/javascripts/select2/i18n/ja.js +3 -0
  224. data/vendor/assets/javascripts/select2/i18n/km.js +3 -0
  225. data/vendor/assets/javascripts/select2/i18n/ko.js +3 -0
  226. data/vendor/assets/javascripts/select2/i18n/lt.js +3 -0
  227. data/vendor/assets/javascripts/select2/i18n/lv.js +3 -0
  228. data/vendor/assets/javascripts/select2/i18n/mk.js +3 -0
  229. data/vendor/assets/javascripts/select2/i18n/ms.js +3 -0
  230. data/vendor/assets/javascripts/select2/i18n/nb.js +3 -0
  231. data/vendor/assets/javascripts/select2/i18n/nl.js +3 -0
  232. data/vendor/assets/javascripts/select2/i18n/pl.js +3 -0
  233. data/vendor/assets/javascripts/select2/i18n/ps.js +3 -0
  234. data/vendor/assets/javascripts/select2/i18n/pt-BR.js +3 -0
  235. data/vendor/assets/javascripts/select2/i18n/pt.js +3 -0
  236. data/vendor/assets/javascripts/select2/i18n/ro.js +3 -0
  237. data/vendor/assets/javascripts/select2/i18n/ru.js +3 -0
  238. data/vendor/assets/javascripts/select2/i18n/sk.js +3 -0
  239. data/vendor/assets/javascripts/select2/i18n/sl.js +3 -0
  240. data/vendor/assets/javascripts/select2/i18n/sr-Cyrl.js +3 -0
  241. data/vendor/assets/javascripts/select2/i18n/sr.js +3 -0
  242. data/vendor/assets/javascripts/select2/i18n/sv.js +3 -0
  243. data/vendor/assets/javascripts/select2/i18n/th.js +3 -0
  244. data/vendor/assets/javascripts/select2/i18n/tr.js +3 -0
  245. data/vendor/assets/javascripts/select2/i18n/uk.js +3 -0
  246. data/vendor/assets/javascripts/select2/i18n/vi.js +3 -0
  247. data/vendor/assets/javascripts/select2/i18n/zh-CN.js +3 -0
  248. data/vendor/assets/javascripts/select2/i18n/zh-TW.js +3 -0
  249. data/vendor/assets/javascripts/select2/select2.full.min.js +1 -0
  250. data/vendor/assets/javascripts/select2/select2.min.js +1 -0
  251. data/vendor/assets/javascripts/tether.min.js +1 -0
  252. data/vendor/assets/stylesheets/{bootstrap-select.css → bootstrap/bootstrap-select.css} +0 -0
  253. data/vendor/assets/stylesheets/font-awesome/_animated.scss +6 -20
  254. data/vendor/assets/stylesheets/font-awesome/_bordered-pulled.scss +6 -11
  255. data/vendor/assets/stylesheets/font-awesome/_core.scss +11 -7
  256. data/vendor/assets/stylesheets/font-awesome/_fixed-width.scss +1 -1
  257. data/vendor/assets/stylesheets/font-awesome/_icons.scss +785 -787
  258. data/vendor/assets/stylesheets/font-awesome/_larger.scss +16 -6
  259. data/vendor/assets/stylesheets/font-awesome/_list.scss +7 -8
  260. data/vendor/assets/stylesheets/font-awesome/_mixins.scss +17 -20
  261. data/vendor/assets/stylesheets/font-awesome/_rotated-flipped.scss +9 -6
  262. data/vendor/assets/stylesheets/font-awesome/_screen-reader.scss +2 -2
  263. data/vendor/assets/stylesheets/font-awesome/_stacked.scss +19 -8
  264. data/vendor/assets/stylesheets/font-awesome/_variables.scss +795 -795
  265. data/vendor/assets/stylesheets/font-awesome/fa-brands.scss +21 -0
  266. data/vendor/assets/stylesheets/font-awesome/fa-regular.scss +22 -0
  267. data/vendor/assets/stylesheets/font-awesome/fa-solid.scss +23 -0
  268. data/vendor/assets/stylesheets/font-awesome/fontawesome.scss +20 -0
  269. data/vendor/assets/stylesheets/select2/select2.min.css +1 -0
  270. metadata +278 -125
  271. data/app/assets/javascripts/binda/components/form_item_asset.js +0 -25
  272. data/app/assets/stylesheets/binda/application.css +0 -6
  273. data/app/assets/stylesheets/binda/components/form_body.scss +0 -2
  274. data/app/assets/stylesheets/binda/components/form_item_asset.scss +0 -20
  275. data/app/assets/stylesheets/binda/components/form_section.scss +0 -40
  276. data/app/assets/stylesheets/binda/components/sidebar.scss +0 -131
  277. data/app/assets/stylesheets/binda/layout/components_index.scss +0 -9
  278. data/app/assets/stylesheets/binda/layout/dashboard.scss +0 -7
  279. data/app/assets/stylesheets/binda/layout/users_sign_in.scss +0 -29
  280. data/app/controllers/binda/bindings_controller.rb +0 -62
  281. data/app/controllers/concerns/binda/default_helpers.rb +0 -226
  282. data/app/helpers/binda/bindings_helper.rb +0 -4
  283. data/app/models/binda/binda.rb +0 -7
  284. data/app/models/binda/binding.rb +0 -24
  285. data/app/views/binda/bindings/_form.html.erb +0 -32
  286. data/app/views/binda/bindings/edit.html.erb +0 -6
  287. data/app/views/binda/bindings/index.html.erb +0 -31
  288. data/app/views/binda/bindings/new.html.erb +0 -5
  289. data/app/views/binda/bindings/show.html.erb +0 -19
  290. data/app/views/binda/field_groups/index.html.erb +0 -34
  291. data/app/views/binda/fieldable/_form_item_asset.html.erb +0 -20
  292. data/app/views/users/sessions/new.html.erb +0 -27
  293. data/lib/tasks/binda.rake +0 -79
  294. data/vendor/assets/fonts/font-awesome/FontAwesome.otf +0 -0
  295. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  296. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.svg +0 -2671
  297. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  298. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  299. data/vendor/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  300. data/vendor/assets/stylesheets/font-awesome/_path.scss +0 -15
  301. data/vendor/assets/stylesheets/font-awesome/font-awesome.scss +0 -18
@@ -12,22 +12,27 @@ $desktop: 960px;
12
12
  // FROM BOOTSTRAP
13
13
  // --------------
14
14
 
15
+ $color-black: #000;
16
+ $color-white: #FFF;
17
+
15
18
  //== Colors
16
19
  //
17
20
  //## Gray and colors for use across Bootstrap.
18
21
 
19
- $gray-base: #000 !default;
20
- $gray-darker: lighten($gray-base, 13.5%) !default; // #222
21
- $gray-dark: lighten($gray-base, 20%) !default; // #333
22
- $gray: lighten($gray-base, 33.5%) !default; // #555
23
- $gray-light: lighten($gray-base, 46.7%) !default; // #777
24
- $gray-lighter: lighten($gray-base, 93.5%) !default; // #eee
22
+ $color-gray-darkest: rgb( 17, 17, 17 );
23
+ $color-gray-darker: rgb( 51, 51, 51 );
24
+ $color-gray-dark: rgb( 102, 102, 102 );
25
+ $color-gray: rgb( 128, 128, 128 );
26
+ $color-gray-light: rgb( 153, 153, 153 );
27
+ $color-gray-lighter: rgb( 193, 193, 193 );
28
+ $color-gray-lightest: rgb( 229, 229, 229 );
25
29
 
26
- $color-primary: darken(#428bca, 6.5%) !default; // #337ab7
27
- $color-success: #5cb85c !default;
28
- $color-info: #5bc0de !default;
29
- $color-warning: #f0ad4e !default;
30
- $color-danger: #d9534f !default;
30
+ $color-primary: #337ab7;
31
+ $color-success: #5cb85c;
32
+ $color-info: #5bc0de;
33
+ $color-warning: #f0ad4e;
34
+ $color-danger: #fc4242;
35
+ $color-danger-hover: darken( $color-danger, 20%);
31
36
 
32
37
 
33
38
  //== Scaffolding
@@ -35,38 +40,38 @@ $color-danger: #d9534f !default;
35
40
  //## Settings for some of the most global styles.
36
41
 
37
42
  //** Background color for `<body>`.
38
- $body-bg: #FFF !default;
43
+ $body-bg: $color-gray-lightest;
39
44
  //** Global text color on `<body>`.
40
- $text-color: $gray-dark !default;
45
+ $text-color: $color-gray-darker;
41
46
 
42
47
  //** Global textual link color.
43
- $link-color: $color-primary !default;
48
+ $link-color: $color-primary;
44
49
  //** Link hover color set via `darken()` function.
45
- $link-hover-color: darken($link-color, 15%) !default;
50
+ $link-hover-color: darken($link-color, 15%);
46
51
  //** Link hover decoration.
47
- $link-hover-decoration: underline !default;
52
+ $link-hover-decoration: underline;
48
53
 
49
54
 
50
55
  //== Typography
51
56
  //
52
57
  //## Font, line-height, and color for body text, headings, and more.
53
58
 
54
- $font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default;
55
- $font-family-serif: Georgia, "Times New Roman", Times, serif !default;
59
+ $font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
60
+ $font-family-serif: Georgia, "Times New Roman", Times, serif;
56
61
  //** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
57
- $font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace !default;
58
- $font-family-base: $font-family-sans-serif !default;
59
-
60
- $font-size-base: 14px !default;
61
- $font-size-large: ceil(($font-size-base * 1.25)) !default; // ~18px
62
- $font-size-small: ceil(($font-size-base * 0.85)) !default; // ~12px
63
-
64
- $font-size-h1: floor(($font-size-base * 2.6)) !default; // ~36px
65
- $font-size-h2: floor(($font-size-base * 2.15)) !default; // ~30px
66
- $font-size-h3: ceil(($font-size-base * 1.7)) !default; // ~24px
67
- $font-size-h4: ceil(($font-size-base * 1.25)) !default; // ~18px
68
- $font-size-h5: $font-size-base !default;
69
- $font-size-h6: ceil(($font-size-base * 0.85)) !default; // ~12px
62
+ $font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
63
+ $font-family-base: $font-family-sans-serif;
64
+
65
+ $font-size-base: 14px;
66
+ $font-size-large: ceil(($font-size-base * 1.25)); // ~18px
67
+ $font-size-small: ceil(($font-size-base * 0.85)); // ~12px
68
+
69
+ $font-size-h1: floor(($font-size-base * 2.6)); // ~36px
70
+ $font-size-h2: floor(($font-size-base * 2.15)); // ~30px
71
+ $font-size-h3: ceil(($font-size-base * 1.7)); // ~24px
72
+ $font-size-h4: ceil(($font-size-base * 1.25)); // ~18px
73
+ $font-size-h5: $font-size-base;
74
+ $font-size-h6: ceil(($font-size-base * 0.85)); // ~12px
70
75
 
71
76
 
72
77
  // MIXINS
@@ -5,8 +5,6 @@ module Binda
5
5
 
6
6
  before_action :authenticate_user!
7
7
 
8
- include DefaultHelpers
9
-
10
8
  # _ indicates that we are not using the argument in the method
11
9
  def after_sign_in_path_for(_)
12
10
  binda.dashboard_path
@@ -2,7 +2,7 @@ require_dependency "binda/application_controller"
2
2
 
3
3
  module Binda
4
4
  class AssetsController < ApplicationController
5
- before_action :set_asset, only: [:show, :edit, :update, :destroy]
5
+ before_action :set_asset, only: [:show, :edit, :update, :destroy, :remove_image]
6
6
 
7
7
  # GET /assets
8
8
  def index
@@ -2,8 +2,8 @@ require_dependency "binda/application_controller"
2
2
 
3
3
  module Binda
4
4
  class BoardsController < ApplicationController
5
- before_action :set_board, only: [:edit, :update, :destroy, :new_repeater ]
6
- before_action :set_structure, only: [:edit, :update, :destroy, :new_repeater ]
5
+ before_action :set_board, only: [:edit, :update, :destroy, :new_repeater, :upload ]
6
+ before_action :set_structure, only: [:edit, :update, :destroy, :new_repeater, :upload ]
7
7
 
8
8
  include FieldableHelpers
9
9
 
@@ -18,7 +18,7 @@ module Binda
18
18
  if @board.update(board_params)
19
19
  redirect_to structure_board_path( @structure.slug, @board.slug ), notice: 'Setting was successfully updated.'
20
20
  else
21
- redirect_to edit_structure_board_path( @structure.slug, @board.slug ), flash: { alert: @board.errors }
21
+ render :edit, flash: { alert: @board.errors }
22
22
  end
23
23
  end
24
24
 
@@ -48,6 +48,17 @@ module Binda
48
48
  render action: :edit
49
49
  end
50
50
 
51
+ def upload
52
+ if @board.update( upload_params(:board) )
53
+ respond_to do |format|
54
+ format.json { render json: upload_details }
55
+ end
56
+ else
57
+ logger.debug("The upload process has failed. #{ @board.errors }")
58
+ head :bad_request
59
+ end
60
+ end
61
+
51
62
  private
52
63
  # Use callbacks to share common setup or constraints between actions.
53
64
  def set_board
@@ -64,7 +75,7 @@ module Binda
64
75
 
65
76
  # Only allow a trusted parameter "white list" through.
66
77
  def board_params
67
- default_params = params.require(:board).permit(
78
+ params.require(:board).permit(
68
79
  :name, :slug, :position, :structure_id,
69
80
  { structure_attributes: [ :id ] },
70
81
  *fieldable_params )
@@ -2,14 +2,18 @@ require_dependency "binda/application_controller"
2
2
 
3
3
  module Binda
4
4
  class ComponentsController < ApplicationController
5
+
5
6
  before_action :set_structure
6
- before_action :set_component, only: [:show, :edit, :update, :destroy, :new_repeater]
7
- before_action :set_position, only: [:create]
7
+ before_action :set_component, only: [:show, :edit, :update, :destroy, :new_repeater, :upload]
8
8
 
9
9
  include FieldableHelpers
10
10
 
11
11
  def index
12
- @components = @structure.components.order('position').all.page params[:page]
12
+ # if a specific order is requested otherwise order by position
13
+ avilable_orders = ['LOWER(name) ASC', 'LOWER(name) DESC', 'publish_state ASC, LOWER(name) ASC', 'publish_state DESC, LOWER(name) ASC']
14
+ params[:order] = avilable_orders[0] if params[:order].nil? || !avilable_orders.include?(params[:order])
15
+ order = params[:order]
16
+ @components = @structure.components.order(order).all.page params[:page]
13
17
  end
14
18
 
15
19
  def show
@@ -27,9 +31,9 @@ module Binda
27
31
 
28
32
  def create
29
33
  @component = @structure.components.build(component_params)
30
- @component.position = @position
34
+
31
35
  if @component.save
32
- redirect_to structure_component_path( @structure.slug, @component.slug ), notice: "A #{ @component.name } was successfully created."
36
+ redirect_to structure_component_path( @structure.slug, @component.slug ), notice: "#{ @structure.name } was successfully created."
33
37
  else
34
38
  redirect_to new_structure_component_path( @structure.slug ), flash: { alert: @component.errors }
35
39
  end
@@ -37,15 +41,15 @@ module Binda
37
41
 
38
42
  def update
39
43
  if @component.update(component_params)
40
- redirect_to structure_component_path( @structure.slug, @component.slug ), notice: "#{ @component.name.capitalize } was successfully updated."
44
+ redirect_to structure_component_path( @structure.slug, @component.slug ), notice: "#{ @structure.name.capitalize } was successfully updated."
41
45
  else
42
- redirect_to edit_structure_component_path( @structure.slug, @component.slug ), flash: { alert: @component.errors }
46
+ render :edit, flash: { alert: @component.errors }
43
47
  end
44
48
  end
45
49
 
46
50
  def destroy
47
51
  @component.destroy
48
- redirect_to structure_components_url( @structure.slug ), notice: "#{ @component.name.capitalize } was successfully destroyed."
52
+ redirect_to structure_components_url( @structure.slug ), notice: "#{ @structure.name.capitalize } was successfully destroyed."
49
53
  end
50
54
 
51
55
  def new_repeater
@@ -62,12 +66,27 @@ module Binda
62
66
  head :ok
63
67
  end
64
68
 
65
-
66
69
  def sort
67
70
  params[:component].each_with_index do |id, i|
68
- Component.find( id ).update({ position: i + 1 })
71
+ Component.find( id ).update_column('position', i + 1) # use update_column to skip callbacks (which leads to huge useless memory consumption)
72
+ end
73
+ render js: "$('##{params[:id]}').sortable('option', 'disabled', false); $('.popup-warning').addClass('popup-warning--hidden'); $('.sortable').removeClass('sortable--disabled')"
74
+ end
75
+
76
+ def sort_index
77
+ return redirect_to structure_components_path, alert: "There are too many #{@structure.name.pluralize}. It's not possible to sort more than #{Component.sort_limit} #{@structure.name.pluralize}." if @structure.components.length > Component.sort_limit
78
+ @components = @structure.components.order('position').all
79
+ end
80
+
81
+ def upload
82
+ if @component.update( upload_params(:component) )
83
+ respond_to do |format|
84
+ format.json { render json: upload_details }
85
+ end
86
+ else
87
+ logger.debug("The upload process has failed. #{ @component.errors.full_messages }")
88
+ head :bad_request
69
89
  end
70
- head :ok
71
90
  end
72
91
 
73
92
  private
@@ -92,10 +111,6 @@ module Binda
92
111
  {categories_attributes: [ :id, :category_id ]}, *fieldable_params )
93
112
  end
94
113
 
95
- def set_position
96
- @position = @structure.components.order(:position).pluck(:position).last.to_i + 1 unless @position.to_i > 0
97
- end
98
-
99
114
  end
100
115
  end
101
116
 
@@ -6,7 +6,7 @@ module Binda
6
6
  before_action :set_field_group, only: [:show, :edit, :update, :destroy]
7
7
 
8
8
  def index
9
- @field_groups = @structure.field_groups.order('position').all
9
+ redirect_to structure_field_group_path( @structure.slug )
10
10
  end
11
11
 
12
12
  def show
@@ -32,11 +32,12 @@ module Binda
32
32
  end
33
33
 
34
34
  def update
35
-
36
35
  # Add nested classes
37
36
  add_new_field_settings
38
37
  add_new_choices
39
38
 
39
+ update_choices
40
+
40
41
  # Update the other ones
41
42
  if @field_group.update(field_group_params)
42
43
  reset_field_settings_cache
@@ -80,11 +81,12 @@ module Binda
80
81
  :description,
81
82
  :field_type,
82
83
  :position,
83
- :required,
84
+ :required,
84
85
  :default_text,
85
86
  :ancestry,
86
87
  :default_choice_id,
87
- :allow_null,
88
+ :allow_null,
89
+ accepted_structure_ids: [],
88
90
  choices: [],
89
91
  choices_attributes:
90
92
  [ :id,
@@ -152,5 +154,18 @@ module Binda
152
154
  end
153
155
  end
154
156
 
157
+ def update_choices
158
+ return if field_group_params[:field_settings_attributes].nil?
159
+ field_group_params[:field_settings_attributes].each do |_, field_setting_params|
160
+ next if field_setting_params[:choices_attributes].nil?
161
+ field_setting_params[:choices_attributes].each do |_, choice_params|
162
+ choice = Choice.find(choice_params[:id])
163
+ unless choice.update(choice_params)
164
+ return redirect_to edit_structure_field_group_path( @structure.slug, @field_group.slug ), flash: { error: choice.errors }
165
+ end
166
+ end
167
+ end
168
+ end
169
+
155
170
  end
156
171
  end
@@ -0,0 +1,68 @@
1
+ require_dependency "binda/application_controller"
2
+
3
+ module Binda
4
+ class ImagesController < ApplicationController
5
+ before_action :set_image, only: [:show, :edit, :update, :destroy, :remove_image]
6
+
7
+ # GET /images
8
+ def index
9
+ @images = Image.all
10
+ end
11
+
12
+ # GET /images/1
13
+ def show
14
+ end
15
+
16
+ # GET /images/new
17
+ def new
18
+ @image = Image.new
19
+ end
20
+
21
+ # GET /images/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /images
26
+ def create
27
+ @image = Image.new(image_params)
28
+
29
+ if @image.save
30
+ redirect_to image_path( @image.id ), notice: 'Image was successfully created.'
31
+ else
32
+ render :new
33
+ end
34
+ end
35
+
36
+ # PATCH/PUT /images/1
37
+ def update
38
+ if @image.update(image_params)
39
+ redirect_to image_path( @image.id ), notice: 'Image was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ # DELETE /images/1
46
+ def destroy
47
+ @image.destroy
48
+ redirect_to images_url, notice: 'Image was successfully destroyed.'
49
+ end
50
+
51
+ def remove_image
52
+ @image.remove_image!
53
+ @image.save!
54
+ head :ok
55
+ end
56
+
57
+ private
58
+ # Use callbacks to share common setup or constraints between actions.
59
+ def set_image
60
+ @image = Image.find(params[:id])
61
+ end
62
+
63
+ # Only allow a trusted parameter "white list" through.
64
+ def image_params
65
+ params.require(:image).permit( :image, :name )
66
+ end
67
+ end
68
+ end
@@ -25,21 +25,12 @@ module Binda
25
25
  # POST /repeaters
26
26
  def create
27
27
  @repeater = Repeater.new(repeater_params)
28
-
29
- if @repeater.save
30
- redirect_to @repeater, notice: 'Repeater was successfully created.'
31
- else
32
- render :new
33
- end
28
+ @repeater.save
34
29
  end
35
30
 
36
31
  # PATCH/PUT /repeaters/1
37
32
  def update
38
- if @repeater.update(repeater_params)
39
- redirect_to @repeater, notice: 'Repeater was successfully updated.'
40
- else
41
- render :edit
42
- end
33
+ @repeater.update(repeater_params)
43
34
  end
44
35
 
45
36
  # DELETE /repeaters/1
@@ -49,7 +40,7 @@ module Binda
49
40
  if params['isAjax']
50
41
  head :ok
51
42
  else
52
- redirect_to :back, notice: 'Field group was successfully destroyed.'
43
+ redirect_to :back, notice: 'Field group was successfully destroyed.'
53
44
  end
54
45
  end
55
46
 
@@ -64,6 +64,13 @@ module Binda
64
64
  head :ok
65
65
  end
66
66
 
67
+ def sort_index
68
+ @structures = Structure.order('position').all.page params[:page]
69
+ =begin
70
+ return redirect_to structure_components_path, alert: "There are too many #{@structure.name.pluralize}. It's not possible to sort more than #{Component.sort_limit} #{@structure.name.pluralize}." if @structure.components.length > Component.sort_limit
71
+ =end
72
+ end
73
+
67
74
  private
68
75
  # Use callbacks to share common setup or constraints between actions.
69
76
  def set_structure
@@ -72,7 +79,7 @@ module Binda
72
79
 
73
80
  # Only allow a trusted parameter "white list" through.
74
81
  def structure_params
75
- params.require(:structure).permit(:name, :slug, :position, :has_categories, :instance_type, field_groups_attributes: [ :id, :name, :structure_id, :slug ] )
82
+ params.require(:structure).permit(:name, :slug, :position, :has_categories, :has_preview, :instance_type, field_groups_attributes: [ :id, :name, :structure_id, :slug ] )
76
83
  end
77
84
 
78
85
  def new_params
@@ -0,0 +1,68 @@
1
+ require_dependency "binda/application_controller"
2
+
3
+ module Binda
4
+ class VideosController < ApplicationController
5
+ before_action :set_video, only: [:show, :edit, :update, :destroy, :remove_video]
6
+
7
+ # GET /videos
8
+ def index
9
+ @videos = Video.all
10
+ end
11
+
12
+ # GET /videos/1
13
+ def show
14
+ end
15
+
16
+ # GET /videos/new
17
+ def new
18
+ @video = Video.new
19
+ end
20
+
21
+ # GET /videos/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /videos
26
+ def create
27
+ @video = Video.new(video_params)
28
+
29
+ if @video.save
30
+ redirect_to video_path( @video.id ), notice: 'Video was successfully created.'
31
+ else
32
+ render :new
33
+ end
34
+ end
35
+
36
+ # PATCH/PUT /videos/1
37
+ def update
38
+ if @video.update(video_params)
39
+ redirect_to video_path( @video.id ), notice: 'Video was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ # DELETE /videos/1
46
+ def destroy
47
+ @video.destroy
48
+ redirect_to videos_url, notice: 'Video was successfully destroyed.'
49
+ end
50
+
51
+ def remove_video
52
+ @video.remove_video!
53
+ @video.save!
54
+ render js: "$('#video-#{@video.id}').remove();"
55
+ end
56
+
57
+ private
58
+ # Use callbacks to share common setup or constraints between actions.
59
+ def set_video
60
+ @video = Video.find(params[:id])
61
+ end
62
+
63
+ # Only allow a trusted parameter "white list" through.
64
+ def video_params
65
+ params.require(:video).permit( :video, :name )
66
+ end
67
+ end
68
+ end