fae-railsz 2.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 (328) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +5 -0
  3. data/Rakefile +37 -0
  4. data/app/assets/fonts/fae/icons.eot +0 -0
  5. data/app/assets/fonts/fae/icons.svg +56 -0
  6. data/app/assets/fonts/fae/icons.ttf +0 -0
  7. data/app/assets/fonts/fae/icons.woff +0 -0
  8. data/app/assets/fonts/fae/lato-bold-webfont.eot +0 -0
  9. data/app/assets/fonts/fae/lato-bold-webfont.svg +4551 -0
  10. data/app/assets/fonts/fae/lato-bold-webfont.ttf +0 -0
  11. data/app/assets/fonts/fae/lato-bold-webfont.woff +0 -0
  12. data/app/assets/fonts/fae/lato-light-webfont.eot +0 -0
  13. data/app/assets/fonts/fae/lato-light-webfont.svg +4241 -0
  14. data/app/assets/fonts/fae/lato-light-webfont.ttf +0 -0
  15. data/app/assets/fonts/fae/lato-light-webfont.woff +0 -0
  16. data/app/assets/fonts/fae/lato-regular-webfont.eot +0 -0
  17. data/app/assets/fonts/fae/lato-regular-webfont.svg +4241 -0
  18. data/app/assets/fonts/fae/lato-regular-webfont.ttf +0 -0
  19. data/app/assets/fonts/fae/lato-regular-webfont.woff +0 -0
  20. data/app/assets/fonts/fae/selection.json +1334 -0
  21. data/app/assets/images/fae/error_bg.jpg +0 -0
  22. data/app/assets/images/fae/error_sad_face.png +0 -0
  23. data/app/assets/images/fae/icons/alert.svg +9 -0
  24. data/app/assets/images/fae/icons/arrow_down.svg +8 -0
  25. data/app/assets/images/fae/icons/arrow_left.svg +9 -0
  26. data/app/assets/images/fae/icons/arrow_right.svg +9 -0
  27. data/app/assets/images/fae/icons/arrow_stacked.svg +8 -0
  28. data/app/assets/images/fae/icons/arrow_up.svg +8 -0
  29. data/app/assets/images/fae/icons/calendar.svg +17 -0
  30. data/app/assets/images/fae/icons/check.svg +7 -0
  31. data/app/assets/images/fae/icons/checkmark.svg +8 -0
  32. data/app/assets/images/fae/icons/chevron_down.svg +7 -0
  33. data/app/assets/images/fae/icons/chevron_left.svg +10 -0
  34. data/app/assets/images/fae/icons/chevron_right.svg +10 -0
  35. data/app/assets/images/fae/icons/chevron_up.svg +7 -0
  36. data/app/assets/images/fae/icons/delete.svg +8 -0
  37. data/app/assets/images/fae/icons/delete_x.svg +8 -0
  38. data/app/assets/images/fae/icons/edit.svg +11 -0
  39. data/app/assets/images/fae/icons/handle.svg +13 -0
  40. data/app/assets/images/fae/icons/home.svg +10 -0
  41. data/app/assets/images/fae/icons/logout.svg +12 -0
  42. data/app/assets/images/fae/icons/magnifying_glass.svg +10 -0
  43. data/app/assets/images/fae/icons/menu.svg +11 -0
  44. data/app/assets/images/fae/icons/offlink.svg +25 -0
  45. data/app/assets/images/fae/icons/plus.svg +8 -0
  46. data/app/assets/images/fae/icons/pulldown.svg +11 -0
  47. data/app/assets/images/fae/icons/search.svg +11 -0
  48. data/app/assets/images/fae/icons/settings.svg +12 -0
  49. data/app/assets/images/fae/icons/sort.svg +11 -0
  50. data/app/assets/images/fae/icons/support.svg +15 -0
  51. data/app/assets/images/fae/icons/trash.svg +10 -0
  52. data/app/assets/images/fae/icons/trumbowyg.svg +1 -0
  53. data/app/assets/images/fae/icons/user.svg +13 -0
  54. data/app/assets/images/fae/icons/users.svg +19 -0
  55. data/app/assets/images/fae/icons/zoom.svg +12 -0
  56. data/app/assets/images/fae/tutorial_model_location.png +0 -0
  57. data/app/assets/images/fae/youtube_helper.jpg +0 -0
  58. data/app/assets/javascripts/fae/_modals.js +60 -0
  59. data/app/assets/javascripts/fae/_tables.js +403 -0
  60. data/app/assets/javascripts/fae/admin.js.erb +11 -0
  61. data/app/assets/javascripts/fae/application.js +63 -0
  62. data/app/assets/javascripts/fae/fae_init.js +8 -0
  63. data/app/assets/javascripts/fae/form/_ajax.js +380 -0
  64. data/app/assets/javascripts/fae/form/_cancel.js +38 -0
  65. data/app/assets/javascripts/fae/form/_filtering.js +276 -0
  66. data/app/assets/javascripts/fae/form/_form.js +60 -0
  67. data/app/assets/javascripts/fae/form/_slugger.js.erb +100 -0
  68. data/app/assets/javascripts/fae/form/_validator.js +459 -0
  69. data/app/assets/javascripts/fae/form/fae_chosen.js +44 -0
  70. data/app/assets/javascripts/fae/form/fileinputer.js +178 -0
  71. data/app/assets/javascripts/fae/form/hinter.js +111 -0
  72. data/app/assets/javascripts/fae/form/inputs/_checkbox.js +27 -0
  73. data/app/assets/javascripts/fae/form/inputs/_color.js +42 -0
  74. data/app/assets/javascripts/fae/form/inputs/_dates.js +78 -0
  75. data/app/assets/javascripts/fae/form/inputs/_select.js +162 -0
  76. data/app/assets/javascripts/fae/form/inputs/_text.js +118 -0
  77. data/app/assets/javascripts/fae/navigation/_global_search.js +184 -0
  78. data/app/assets/javascripts/fae/navigation/_language.js +89 -0
  79. data/app/assets/javascripts/fae/navigation/_navigation.js +206 -0
  80. data/app/assets/javascripts/fae/navigation/_subnav_highlighter.js +81 -0
  81. data/app/assets/javascripts/fae/navigation/sticky.js +186 -0
  82. data/app/assets/javascripts/fae/vendor/chosen.jquery.min.js +2 -0
  83. data/app/assets/javascripts/fae/vendor/frob_core_helpers.js +587 -0
  84. data/app/assets/javascripts/fae/vendor/fryr.js +437 -0
  85. data/app/assets/javascripts/fae/vendor/jqColorPicker.min.js +4 -0
  86. data/app/assets/javascripts/fae/vendor/jquery.daterangepicker.js +1292 -0
  87. data/app/assets/javascripts/fae/vendor/jquery.multi-select.js +534 -0
  88. data/app/assets/javascripts/fae/vendor/jquery.simplemodal.1.4.4.js +719 -0
  89. data/app/assets/javascripts/fae/vendor/jquery.tablesorter.js +1901 -0
  90. data/app/assets/javascripts/fae/vendor/js.cookie.js +139 -0
  91. data/app/assets/javascripts/fae/vendor/moment.min.js +7 -0
  92. data/app/assets/javascripts/fae/vendor/simplemde.min.js +13 -0
  93. data/app/assets/javascripts/fae/vendor/touch_punch.js +11 -0
  94. data/app/assets/javascripts/fae/vendor/trumbowyg.js.erb +4 -0
  95. data/app/assets/javascripts/fae/vendor/trumbowyg/plugins/upload/trumbowyg.upload.js +223 -0
  96. data/app/assets/javascripts/fae/vendor/trumbowyg/trumbowyg.js +1603 -0
  97. data/app/assets/stylesheets/fae/application.css +8 -0
  98. data/app/assets/stylesheets/fae/base.scss +82 -0
  99. data/app/assets/stylesheets/fae/globals/_fonts.scss +43 -0
  100. data/app/assets/stylesheets/fae/globals/_icons.scss +15 -0
  101. data/app/assets/stylesheets/fae/globals/_plugins.scss +51 -0
  102. data/app/assets/stylesheets/fae/globals/_tags.scss +68 -0
  103. data/app/assets/stylesheets/fae/globals/imports/_extends.scss +53 -0
  104. data/app/assets/stylesheets/fae/globals/imports/_mixins.scss +58 -0
  105. data/app/assets/stylesheets/fae/globals/imports/_variables.scss +165 -0
  106. data/app/assets/stylesheets/fae/globals/imports/finescss/_fine.scss +7 -0
  107. data/app/assets/stylesheets/fae/globals/imports/finescss/_fine_functions.scss +88 -0
  108. data/app/assets/stylesheets/fae/globals/imports/finescss/_fine_mixins.scss +280 -0
  109. data/app/assets/stylesheets/fae/globals/imports/finescss/_fine_variables.scss +30 -0
  110. data/app/assets/stylesheets/fae/globals/layout/_base.scss +48 -0
  111. data/app/assets/stylesheets/fae/globals/layout/_breadcrumbs.scss +45 -0
  112. data/app/assets/stylesheets/fae/globals/layout/_content-header.scss +99 -0
  113. data/app/assets/stylesheets/fae/globals/legacy/_pre-1.3.scss +659 -0
  114. data/app/assets/stylesheets/fae/globals/navigation/_base.scss +22 -0
  115. data/app/assets/stylesheets/fae/globals/navigation/_footer.scss +50 -0
  116. data/app/assets/stylesheets/fae/globals/navigation/_header.scss +149 -0
  117. data/app/assets/stylesheets/fae/globals/navigation/_mobilenav.scss +149 -0
  118. data/app/assets/stylesheets/fae/globals/navigation/_search.scss +76 -0
  119. data/app/assets/stylesheets/fae/globals/navigation/_sidenav.scss +142 -0
  120. data/app/assets/stylesheets/fae/globals/navigation/_utility.scss +95 -0
  121. data/app/assets/stylesheets/fae/modules/_alerts.scss +50 -0
  122. data/app/assets/stylesheets/fae/modules/_buttons.scss +62 -0
  123. data/app/assets/stylesheets/fae/modules/_modal.scss +78 -0
  124. data/app/assets/stylesheets/fae/modules/_toggles.scss +48 -0
  125. data/app/assets/stylesheets/fae/modules/forms/_asset-actions.scss +83 -0
  126. data/app/assets/stylesheets/fae/modules/forms/_base.scss +100 -0
  127. data/app/assets/stylesheets/fae/modules/forms/_checkbox.scss +87 -0
  128. data/app/assets/stylesheets/fae/modules/forms/_colorpicker.scss +57 -0
  129. data/app/assets/stylesheets/fae/modules/forms/_date.scss +335 -0
  130. data/app/assets/stylesheets/fae/modules/forms/_hints.scss +40 -0
  131. data/app/assets/stylesheets/fae/modules/forms/_label.scss +57 -0
  132. data/app/assets/stylesheets/fae/modules/forms/_radio.scss +69 -0
  133. data/app/assets/stylesheets/fae/modules/forms/_select.scss +317 -0
  134. data/app/assets/stylesheets/fae/modules/forms/_simple-mde.scss +29 -0
  135. data/app/assets/stylesheets/fae/modules/forms/_text.scss +62 -0
  136. data/app/assets/stylesheets/fae/modules/forms/_textarea.scss +16 -0
  137. data/app/assets/stylesheets/fae/modules/forms/_validation.scss +63 -0
  138. data/app/assets/stylesheets/fae/modules/tables/_actions.scss +41 -0
  139. data/app/assets/stylesheets/fae/modules/tables/_base.scss +63 -0
  140. data/app/assets/stylesheets/fae/modules/tables/_collapsible.scss +76 -0
  141. data/app/assets/stylesheets/fae/modules/tables/_filters.scss +61 -0
  142. data/app/assets/stylesheets/fae/modules/tables/_image.scss +21 -0
  143. data/app/assets/stylesheets/fae/modules/tables/_pagination.scss +34 -0
  144. data/app/assets/stylesheets/fae/modules/tables/_sorting.scss +58 -0
  145. data/app/assets/stylesheets/fae/modules/tables/_sticky.scss +9 -0
  146. data/app/assets/stylesheets/fae/modules/tables/_tooltips.scss +24 -0
  147. data/app/assets/stylesheets/fae/pages/_error.scss +35 -0
  148. data/app/assets/stylesheets/fae/pages/_help.scss +28 -0
  149. data/app/assets/stylesheets/fae/pages/_home.scss +18 -0
  150. data/app/assets/stylesheets/fae/pages/_login.scss +137 -0
  151. data/app/assets/stylesheets/fae/vendor/chosen.css +377 -0
  152. data/app/assets/stylesheets/fae/vendor/daterangepicker.css +227 -0
  153. data/app/assets/stylesheets/fae/vendor/reset.css +48 -0
  154. data/app/assets/stylesheets/fae/vendor/simplemde.min.css +7 -0
  155. data/app/assets/stylesheets/fae/vendor/trumbowyg.css +584 -0
  156. data/app/controllers/concerns/fae/application_controller_concern.rb +1 -0
  157. data/app/controllers/concerns/fae/asset_cloner.rb +46 -0
  158. data/app/controllers/concerns/fae/cloneable.rb +136 -0
  159. data/app/controllers/fae/application_controller.rb +123 -0
  160. data/app/controllers/fae/base_controller.rb +117 -0
  161. data/app/controllers/fae/files_controller.rb +26 -0
  162. data/app/controllers/fae/images_controller.rb +37 -0
  163. data/app/controllers/fae/nested_base_controller.rb +100 -0
  164. data/app/controllers/fae/options_controller.rb +29 -0
  165. data/app/controllers/fae/pages_controller.rb +44 -0
  166. data/app/controllers/fae/setup_controller.rb +54 -0
  167. data/app/controllers/fae/static_pages_controller.rb +54 -0
  168. data/app/controllers/fae/users_controller.rb +71 -0
  169. data/app/controllers/fae/utilities_controller.rb +61 -0
  170. data/app/helpers/fae/application_helper.rb +114 -0
  171. data/app/helpers/fae/fae_helper.rb +6 -0
  172. data/app/helpers/fae/form_helper.rb +240 -0
  173. data/app/helpers/fae/nested_form_helper.rb +39 -0
  174. data/app/helpers/fae/view_helper.rb +175 -0
  175. data/app/inputs/date_range_input.rb +17 -0
  176. data/app/inputs/radio_collection_input.rb +17 -0
  177. data/app/inputs/symbol_input.rb +5 -0
  178. data/app/models/concerns/fae/assets_validatable.rb +12 -0
  179. data/app/models/concerns/fae/authorization_concern.rb +12 -0
  180. data/app/models/concerns/fae/base_model_concern.rb +105 -0
  181. data/app/models/concerns/fae/change_concern.rb +1 -0
  182. data/app/models/concerns/fae/file_concern.rb +1 -0
  183. data/app/models/concerns/fae/image_concern.rb +1 -0
  184. data/app/models/concerns/fae/navigation_concern.rb +10 -0
  185. data/app/models/concerns/fae/option_concern.rb +1 -0
  186. data/app/models/concerns/fae/page_validatable.rb +26 -0
  187. data/app/models/concerns/fae/paper_trailer.rb +8 -0
  188. data/app/models/concerns/fae/role_concern.rb +1 -0
  189. data/app/models/concerns/fae/sortable.rb +51 -0
  190. data/app/models/concerns/fae/static_page_concern.rb +1 -0
  191. data/app/models/concerns/fae/text_area_concern.rb +1 -0
  192. data/app/models/concerns/fae/text_field_concern.rb +1 -0
  193. data/app/models/concerns/fae/trackable.rb +124 -0
  194. data/app/models/concerns/fae/user_concern.rb +7 -0
  195. data/app/models/fae/authorization.rb +8 -0
  196. data/app/models/fae/change.rb +53 -0
  197. data/app/models/fae/file.rb +24 -0
  198. data/app/models/fae/image.rb +33 -0
  199. data/app/models/fae/navigation.rb +132 -0
  200. data/app/models/fae/option.rb +38 -0
  201. data/app/models/fae/role.rb +18 -0
  202. data/app/models/fae/static_page.rb +109 -0
  203. data/app/models/fae/text_area.rb +14 -0
  204. data/app/models/fae/text_field.rb +14 -0
  205. data/app/models/fae/user.rb +67 -0
  206. data/app/uploaders/fae/file_uploader.rb +26 -0
  207. data/app/uploaders/fae/image_uploader.rb +28 -0
  208. data/app/validators/fae/cross_model_uniqueness_validator.rb +14 -0
  209. data/app/views/devise/confirmations/new.html.slim +13 -0
  210. data/app/views/devise/mailer/confirmation_instructions.html.slim +3 -0
  211. data/app/views/devise/mailer/reset_password_instructions.html.slim +5 -0
  212. data/app/views/devise/mailer/unlock_instructions.html.slim +4 -0
  213. data/app/views/devise/passwords/edit.html.slim +10 -0
  214. data/app/views/devise/passwords/new.html.slim +10 -0
  215. data/app/views/devise/registrations/edit.html.slim +22 -0
  216. data/app/views/devise/registrations/new.html.slim +15 -0
  217. data/app/views/devise/sessions/new.html.slim +7 -0
  218. data/app/views/devise/shared/_links.slim +25 -0
  219. data/app/views/devise/unlocks/new.html.slim +13 -0
  220. data/app/views/fae/application/_breadcrumb.html.slim +19 -0
  221. data/app/views/fae/application/_content_form.html.slim +55 -0
  222. data/app/views/fae/application/_credit.slim +6 -0
  223. data/app/views/fae/application/_file_uploader.html.slim +36 -0
  224. data/app/views/fae/application/_flash_messages.slim +2 -0
  225. data/app/views/fae/application/_global_search_results.html.slim +37 -0
  226. data/app/views/fae/application/_header.slim +50 -0
  227. data/app/views/fae/application/_markdown_helper.slim +41 -0
  228. data/app/views/fae/application/_mobilenav.slim +66 -0
  229. data/app/views/fae/application/_sidenav.slim +23 -0
  230. data/app/views/fae/application/_user_log.html.slim +36 -0
  231. data/app/views/fae/images/_image_uploader.html.slim +66 -0
  232. data/app/views/fae/options/_form.html.slim +16 -0
  233. data/app/views/fae/options/edit.html.slim +1 -0
  234. data/app/views/fae/pages/activity_log.html.slim +32 -0
  235. data/app/views/fae/pages/disabled_environment.html.slim +4 -0
  236. data/app/views/fae/pages/error404.html.slim +7 -0
  237. data/app/views/fae/pages/help.html.slim +35 -0
  238. data/app/views/fae/pages/home.html.slim +36 -0
  239. data/app/views/fae/setup/first_user.html.slim +11 -0
  240. data/app/views/fae/shared/_errors.slim +4 -0
  241. data/app/views/fae/shared/_form_header.html.slim +40 -0
  242. data/app/views/fae/shared/_index_header.html.slim +26 -0
  243. data/app/views/fae/shared/_nested_table.html.slim +49 -0
  244. data/app/views/fae/shared/_recent_changes.html.slim +22 -0
  245. data/app/views/fae/shared/_shared_nested_table.html.slim +46 -0
  246. data/app/views/fae/static_pages/index.html.slim +13 -0
  247. data/app/views/fae/users/_form.html.slim +19 -0
  248. data/app/views/fae/users/edit.html.slim +1 -0
  249. data/app/views/fae/users/index.html.slim +23 -0
  250. data/app/views/fae/users/new.html.slim +1 -0
  251. data/app/views/fae/users/settings.html.slim +1 -0
  252. data/app/views/kaminari/fae/_gap.html.slim +8 -0
  253. data/app/views/kaminari/fae/_next_page.html.slim +9 -0
  254. data/app/views/kaminari/fae/_page.html.slim +15 -0
  255. data/app/views/kaminari/fae/_paginator.html.slim +15 -0
  256. data/app/views/kaminari/fae/_prev_page.html.slim +9 -0
  257. data/app/views/layouts/devise.html.slim +29 -0
  258. data/app/views/layouts/fae/application.html.slim +23 -0
  259. data/app/views/layouts/fae/error.html.slim +11 -0
  260. data/config/deploy.rb +73 -0
  261. data/config/deploy/dev.rb +19 -0
  262. data/config/deploy/prod.rb +19 -0
  263. data/config/deploy/stage.rb +19 -0
  264. data/config/initializers/assets.rb +1 -0
  265. data/config/initializers/carrierwave.rb +3 -0
  266. data/config/initializers/devise.rb +258 -0
  267. data/config/initializers/devise_monkeypatch.rb +11 -0
  268. data/config/initializers/fae_judge.rb +3 -0
  269. data/config/initializers/inflections.rb +16 -0
  270. data/config/initializers/kaminari_config.rb +10 -0
  271. data/config/initializers/simple_form.rb +147 -0
  272. data/config/initializers/time_formats.rb +3 -0
  273. data/config/locales/devise.en.yml +59 -0
  274. data/config/locales/devise.zh-CN.yml +59 -0
  275. data/config/locales/fae.en.yml +10 -0
  276. data/config/locales/fae.zh-CN.yml +10 -0
  277. data/config/locales/simple_form.en.yml +26 -0
  278. data/config/locales/simple_form.zh-CN.yml +26 -0
  279. data/config/routes.rb +46 -0
  280. data/db/migrate/20140809222030_add_user_table.rb +49 -0
  281. data/db/migrate/20140822224029_create_fae_roles.rb +10 -0
  282. data/db/migrate/20141008180718_create_fae_images_table.rb +19 -0
  283. data/db/migrate/20141017194616_create_fae_options.rb +16 -0
  284. data/db/migrate/20141021181327_create_fae_files.rb +17 -0
  285. data/db/migrate/20141021183047_create_fae_text_areas.rb +16 -0
  286. data/db/migrate/20141021184311_create_fae_pages.rb +13 -0
  287. data/db/migrate/20141105214814_create_fae_text_fields.rb +15 -0
  288. data/db/migrate/20150930224821_create_fae_changes.rb +17 -0
  289. data/lib/fae-rails.rb +6 -0
  290. data/lib/fae/concerns/models/base.rb +8 -0
  291. data/lib/fae/engine.rb +37 -0
  292. data/lib/fae/options.rb +35 -0
  293. data/lib/fae/validation_helper_collection.rb +76 -0
  294. data/lib/fae/version.rb +3 -0
  295. data/lib/file_size_validator.rb +71 -0
  296. data/lib/generators/fae/base_generator.rb +156 -0
  297. data/lib/generators/fae/controller_generator.rb +13 -0
  298. data/lib/generators/fae/install_generator.rb +61 -0
  299. data/lib/generators/fae/model_generator.rb +11 -0
  300. data/lib/generators/fae/nested_index_scaffold_generator.rb +36 -0
  301. data/lib/generators/fae/nested_scaffold_generator.rb +51 -0
  302. data/lib/generators/fae/page_generator.rb +65 -0
  303. data/lib/generators/fae/scaffold_generator.rb +15 -0
  304. data/lib/generators/fae/templates/assets/fae.js +6 -0
  305. data/lib/generators/fae/templates/assets/fae.scss +2 -0
  306. data/lib/generators/fae/templates/controllers/nested_index_scaffold_controller.rb +81 -0
  307. data/lib/generators/fae/templates/controllers/nested_scaffold_controller.rb +13 -0
  308. data/lib/generators/fae/templates/controllers/scaffold_controller.rb +13 -0
  309. data/lib/generators/fae/templates/controllers/static_pages_controller.rb +10 -0
  310. data/lib/generators/fae/templates/initializers/fae.rb +63 -0
  311. data/lib/generators/fae/templates/initializers/fae_fine.rb +51 -0
  312. data/lib/generators/fae/templates/initializers/judge.rb +6 -0
  313. data/lib/generators/fae/templates/models/concerns/authorization_concern.rb +27 -0
  314. data/lib/generators/fae/templates/models/concerns/navigation_concern.rb +33 -0
  315. data/lib/generators/fae/templates/models/pages_model.rb +14 -0
  316. data/lib/generators/fae/templates/tasks/fae_tasks.rake +19 -0
  317. data/lib/generators/fae/templates/views/_form.html.slim +18 -0
  318. data/lib/generators/fae/templates/views/_form_index_nested.html.slim +13 -0
  319. data/lib/generators/fae/templates/views/_form_nested.html.slim +17 -0
  320. data/lib/generators/fae/templates/views/edit.html.slim +1 -0
  321. data/lib/generators/fae/templates/views/edit_nested.html.slim +3 -0
  322. data/lib/generators/fae/templates/views/index.html.slim +35 -0
  323. data/lib/generators/fae/templates/views/index_nested.html.slim +8 -0
  324. data/lib/generators/fae/templates/views/new.html.slim +1 -0
  325. data/lib/generators/fae/templates/views/new_nested.html.slim +3 -0
  326. data/lib/generators/fae/templates/views/static_page_form.html.slim +15 -0
  327. data/lib/generators/fae/templates/views/table_nested.html.slim +4 -0
  328. metadata +692 -0
@@ -0,0 +1,13 @@
1
+ require_relative 'base_generator'
2
+ module Fae
3
+ class ControllerGenerator < Fae::BaseGenerator
4
+ source_root ::File.expand_path('../templates', __FILE__)
5
+
6
+ def go
7
+ generate_controller_file
8
+ generate_view_files
9
+ add_route
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,61 @@
1
+ module Fae
2
+ class InstallGenerator < Rails::Generators::Base
3
+ source_root ::File.expand_path('../templates', __FILE__)
4
+ class_option :namespace, type: :string, default: 'admin', desc: 'Sets the namespace of the generator'
5
+ class_option :fine, type: :boolean, default: false, desc: 'Sets FINE\'s defaults'
6
+
7
+ def install
8
+ run 'bundle install'
9
+ add_route
10
+ # copy templates and generators
11
+ copy_file ::File.expand_path(::File.join(__FILE__, "../templates/tasks/fae_tasks.rake")), "lib/tasks/fae_tasks.rake"
12
+ add_fae_assets
13
+ add_navigation_concern
14
+ add_authorization_concern
15
+ build_initializer
16
+ build_judge_initializer
17
+ rake 'fae:install:migrations'
18
+ rake 'db:migrate'
19
+ rake 'fae:seed_db'
20
+ end
21
+
22
+ private
23
+
24
+ def add_route
25
+ inject_into_file "config/routes.rb", after: "routes.draw do\n" do <<-RUBY
26
+ \n namespace :#{options.namespace} do
27
+ end
28
+ # mount Fae below your admin namespec
29
+ mount Fae::Engine => '/#{options.namespace}'\n
30
+ RUBY
31
+ end
32
+ end
33
+
34
+ def add_fae_assets
35
+ copy_file ::File.expand_path(::File.join(__FILE__, '../templates/assets/fae.scss')), 'app/assets/stylesheets/fae.scss'
36
+ copy_file ::File.expand_path(::File.join(__FILE__, '../templates/assets/fae.js')), 'app/assets/javascripts/fae.js'
37
+ end
38
+
39
+ def add_navigation_concern
40
+ copy_file ::File.expand_path(::File.join(__FILE__, '../templates/models/concerns/navigation_concern.rb')), 'app/models/concerns/fae/navigation_concern.rb'
41
+ end
42
+
43
+ def add_authorization_concern
44
+ copy_file ::File.expand_path(::File.join(__FILE__, '../templates/models/concerns/authorization_concern.rb')), 'app/models/concerns/fae/authorization_concern.rb'
45
+ end
46
+
47
+ def build_initializer
48
+ init_source = options.fine ? "../templates/initializers/fae_fine.rb" : "../templates/initializers/fae.rb"
49
+ copy_file ::File.expand_path(::File.join(__FILE__, init_source)), "config/initializers/fae.rb"
50
+ inject_into_file "config/initializers/fae.rb", after: "Fae.setup do |config|\n" do <<-RUBY
51
+ \n config.devise_secret_key = '#{SecureRandom.hex(64)}'\n
52
+ RUBY
53
+ end
54
+ end
55
+
56
+ def build_judge_initializer
57
+ copy_file ::File.expand_path(::File.join(__FILE__, "../templates/initializers/judge.rb")), "config/initializers/judge.rb"
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'base_generator'
2
+ module Fae
3
+ class ModelGenerator < Fae::BaseGenerator
4
+ source_root ::File.expand_path('../templates', __FILE__)
5
+
6
+ def go
7
+ generate_model
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,36 @@
1
+ require_relative 'base_generator'
2
+ module Fae
3
+ class NestedIndexScaffoldGenerator < Fae::BaseGenerator
4
+ source_root ::File.expand_path('../templates', __FILE__)
5
+
6
+ def go
7
+ generate_model
8
+ generate_nested_index_controller_file
9
+ generate_view_files
10
+ add_route
11
+ inject_nav_item
12
+ end
13
+
14
+
15
+ private
16
+
17
+ def generate_nested_index_controller_file
18
+ @attachments = @@attachments
19
+ template "controllers/nested_index_scaffold_controller.rb", "app/controllers/#{options.namespace}/#{file_name.pluralize}_controller.rb"
20
+ end
21
+
22
+ def generate_view_files
23
+ @toggle_attrs = set_toggle_attrs
24
+ @form_attrs = set_form_attrs
25
+ @association_names = @@association_names
26
+ @attachments = @@attachments
27
+ @has_position = @@has_position
28
+ @display_field = @@display_field
29
+ template "views/index_nested.html.#{options.template}", "app/views/#{options.namespace}/#{plural_file_name}/index.html.#{options.template}"
30
+ template "views/_form_index_nested.html.#{options.template}", "app/views/#{options.namespace}/#{plural_file_name}/_form.html.#{options.template}"
31
+ template "views/new_nested.html.#{options.template}", "app/views/#{options.namespace}/#{plural_file_name}/new.html.#{options.template}"
32
+ template "views/edit_nested.html.#{options.template}", "app/views/#{options.namespace}/#{plural_file_name}/edit.html.#{options.template}"
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,51 @@
1
+ require_relative 'base_generator'
2
+ module Fae
3
+ class NestedScaffoldGenerator < Fae::BaseGenerator
4
+ source_root ::File.expand_path('../templates', __FILE__)
5
+ class_option :parent_model, type: :string, desc: 'Sets the parent model this scaffold belongs_to.'
6
+
7
+ def go
8
+ generate_nested_model_file
9
+ generate_nested_controller_file
10
+ generate_view_files
11
+ add_route
12
+ end
13
+
14
+ private
15
+
16
+ def generate_nested_model_file
17
+ generate "model #{file_name} #{@@attributes_flat}"
18
+ inject_concern
19
+ inject_display_field_to_model
20
+ inject_model_attachments
21
+ inject_position_scope
22
+ inject_parent_info if options.parent_model.present?
23
+ end
24
+
25
+ def generate_nested_controller_file
26
+ @attachments = @@attachments
27
+ template "controllers/nested_scaffold_controller.rb", "app/controllers/#{options.namespace}/#{file_name.pluralize}_controller.rb"
28
+ end
29
+
30
+ def generate_view_files
31
+ @form_attrs = set_form_attrs
32
+ @attachments = @@attachments
33
+ template "views/table_nested.html.#{options.template}", "app/views/#{options.namespace}/#{plural_file_name}/table.html.#{options.template}"
34
+ template "views/_form_nested.html.#{options.template}", "app/views/#{options.namespace}/#{plural_file_name}/_form.html.#{options.template}"
35
+ template "views/new_nested.html.#{options.template}", "app/views/#{options.namespace}/#{plural_file_name}/new.html.#{options.template}"
36
+ template "views/edit_nested.html.#{options.template}", "app/views/#{options.namespace}/#{plural_file_name}/edit.html.#{options.template}"
37
+ end
38
+
39
+ def inject_parent_info
40
+ inject_into_file "app/models/#{file_name}.rb", after: "BaseModelConcern\n" do <<-RUBY
41
+ \n belongs_to :#{options.parent_model.underscore}, touch: true
42
+
43
+ def fae_nested_parent
44
+ :#{options.parent_model.underscore}
45
+ end
46
+ RUBY
47
+ end
48
+ end
49
+
50
+ end
51
+ end
@@ -0,0 +1,65 @@
1
+ require_relative 'base_generator'
2
+
3
+ module Fae
4
+ class PageGenerator < Fae::BaseGenerator
5
+ desc 'Creates model with dependancies for Fae Static Pages'
6
+ source_root ::File.expand_path('../templates', __FILE__)
7
+
8
+ @@attributes = {}
9
+
10
+ def set_globals
11
+ if attributes.present?
12
+ attributes.each do |attr|
13
+ @@attributes[attr.name.to_sym] = convert_attr_type(attr.type)
14
+ end
15
+ end
16
+ end
17
+
18
+ def go
19
+ generate_static_page_controller
20
+ generate_static_page_model
21
+ generate_static_page_view
22
+ end
23
+
24
+ private
25
+
26
+ def generate_static_page_controller
27
+ file = "app/controllers/#{options.namespace}/content_blocks_controller.rb"
28
+ if ::File.exists?(Rails.root.join(file).to_s)
29
+ inject_into_file "app/controllers/#{options.namespace}/content_blocks_controller.rb", ", #{class_name}Page", before: ']'
30
+ else
31
+ template 'controllers/static_pages_controller.rb', file
32
+ end
33
+ end
34
+
35
+ def generate_static_page_model
36
+ @attributes = @@attributes
37
+ template "models/pages_model.rb", "app/models/#{file_name}_page.rb"
38
+ end
39
+
40
+ def generate_static_page_view
41
+ @attributes = @@attributes
42
+ template "views/static_page_form.html.#{options.template}", "app/views/#{options.namespace}/content_blocks/#{file_name}.html.#{options.template}"
43
+ end
44
+
45
+ def connect_object object
46
+ object.constantize.connection
47
+ object
48
+ end
49
+
50
+ def convert_attr_type(type)
51
+ case type.to_s
52
+ when "string"
53
+ connect_object "Fae::TextField"
54
+ when "text"
55
+ connect_object "Fae::TextArea"
56
+ when "image"
57
+ connect_object "Fae::Image"
58
+ when "file"
59
+ connect_object "Fae::File"
60
+ else
61
+ type
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,15 @@
1
+ require_relative 'base_generator'
2
+ module Fae
3
+ class ScaffoldGenerator < Fae::BaseGenerator
4
+ source_root ::File.expand_path('../templates', __FILE__)
5
+
6
+ def go
7
+ generate_model
8
+ generate_controller_file
9
+ generate_view_files
10
+ add_route
11
+ inject_nav_item
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ // This file is compiled into fae/application.js
2
+ // use this as another manifest file if you have a lot of javascript to add
3
+ // or just add your javascript directly to this file
4
+
5
+ // Uncomment the following line if you want to use Trumbowyg HTML Editor
6
+ // //= require fae/vendor/trumbowyg
@@ -0,0 +1,2 @@
1
+ // Do Not Delete this page! FAE depends on it in order to set its highlight color.
2
+ // $c-custom-highlight: #9aa142;
@@ -0,0 +1,81 @@
1
+ module <%= options.namespace.capitalize %>
2
+ class <%= class_name.pluralize %>Controller < Fae::ApplicationController
3
+ before_action :set_class_variables
4
+ before_action :set_item, only: [:show, :edit, :update, :destroy]
5
+
6
+ layout false, except: :index
7
+ helper Fae::ApplicationHelper
8
+
9
+ def new
10
+ @item = <%= class_name %>.new
11
+ end
12
+
13
+ def index
14
+ @items = <%= class_name %>.for_fae_index
15
+ end
16
+
17
+ def edit
18
+ end
19
+
20
+ def create
21
+ @item = <%= class_name %>.new(permitted_params)
22
+
23
+ if @item.save
24
+ @items = <%= class_name %>.for_fae_index
25
+ flash[:notice] = 'Item successfully created.'
26
+ render template: '<%= options.namespace %>/<%= plural_file_name %>/index'
27
+ else
28
+ render action: 'new'
29
+ end
30
+ end
31
+
32
+ def update
33
+ if @item.update(permitted_params)
34
+ @items = <%= class_name %>.for_fae_index
35
+ flash[:notice] = 'Item successfully updated.'
36
+ render template: '<%= options.namespace %>/<%= plural_file_name %>/index'
37
+ else
38
+ render action: 'edit'
39
+ end
40
+ end
41
+
42
+ def destroy
43
+ if @item.destroy
44
+ flash[:notice] = 'Item successfully removed.'
45
+ else
46
+ flash[:alert] = 'There was a problem removing your item.'
47
+ end
48
+ @items = <%= class_name %>.for_fae_index
49
+ render template: '<%= options.namespace %>/<%= plural_file_name %>/index'
50
+ end
51
+
52
+ private
53
+
54
+ def set_class_variables(class_name = nil)
55
+ klass_base = params[:controller].split('/').last
56
+ @klass_name = class_name || klass_base # used in form views
57
+ @klass = klass_base.classify.constantize # used as class reference in this controller
58
+ @klass_singular = klass_base.singularize # used in index views
59
+ @klass_humanized = @klass_name.singularize.humanize # used in index views
60
+ @index_path = '/' + params[:controller] # used in form_header partial
61
+ @new_path = @index_path + '/new' # used in index_header partial
62
+ end
63
+
64
+ def set_item
65
+ @item = <%= class_name %>.find(params[:id])
66
+ end
67
+
68
+ def permitted_params
69
+ params.require(:<%= singular_table_name %>).permit!
70
+ end
71
+
72
+ <% if @attachments.present? -%>
73
+ def build_assets
74
+ <% @attachments.each do |attachment| -%>
75
+ @item.build_<%= attachment.name %> if @item.<%= attachment.name %>.blank?
76
+ <% end -%>
77
+ end
78
+ <% end -%>
79
+
80
+ end
81
+ end
@@ -0,0 +1,13 @@
1
+ module <%= options.namespace.capitalize %>
2
+ class <%= class_name.pluralize %>Controller < Fae::NestedBaseController
3
+ <% if @attachments.present? %>
4
+ private
5
+
6
+ def build_assets
7
+ <% @attachments.each do |attachment| -%>
8
+ @item.build_<%= attachment.name %> if @item.<%= attachment.name %>.blank?
9
+ <% end -%>
10
+ end
11
+ <% end %>
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module <%= options.namespace.capitalize %>
2
+ class <%= class_name.pluralize %>Controller < Fae::BaseController
3
+ <% if @attachments.present? %>
4
+ private
5
+
6
+ def build_assets
7
+ <% @attachments.each do |attachment| -%>
8
+ @item.build_<%= attachment.name %> if @item.<%= attachment.name %>.blank?
9
+ <% end -%>
10
+ end
11
+ <% end %>
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ module <%= options.namespace.capitalize %>
2
+ class ContentBlocksController < Fae::StaticPagesController
3
+
4
+ private
5
+
6
+ def fae_pages
7
+ [<%= "#{class_name}Page" %>]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,63 @@
1
+ Fae.setup do |config|
2
+
3
+ ## devise_mailer_sender
4
+ # This email address will get passed to Devise and
5
+ # used as the from address in the password reset emails.
6
+ # config.devise_mailer_sender = 'change-me@example.com'
7
+
8
+ ## dashboard_exclusions
9
+ # The dashboard will show all objects with recent activity.
10
+ # To exclude any objects, add them to this array.
11
+ # config.dashboard_exclusions = %w( Gallery )
12
+
13
+ ## max_image_upload_size
14
+ # This will set a file size limit on image uploads in MBs.
15
+ # The default is 2 MB.
16
+ # config.max_image_upload_size = 2
17
+
18
+ ## max_file_upload_size
19
+ # This will set a file size limit on file uploads in MBs.
20
+ # The default is 5 MB.
21
+ # config.max_file_upload_size = 5
22
+
23
+ ## languages
24
+ # This hash sets the supported languages for the multiple
25
+ # language toggle feature.
26
+ # config.languages = {
27
+ # en: 'English',
28
+ # zh: 'Chinese'
29
+ # }
30
+
31
+ ## recreate_versions
32
+ # Triggers `Fae::Image` to recreate Carrierwave versions after save.
33
+ # Defaults to false
34
+ # config.recreate_versions = false
35
+
36
+ ## track_changes
37
+ # This is the global toggle for the change tracker.
38
+ # Defaults to true
39
+ # config.track_changes = true
40
+
41
+ ## tracker_history_length
42
+ # This defines how many changes per object are kept in the DB
43
+ # via the change tracker.
44
+ # Defaults to 15
45
+ # config.tracker_history_length = 15
46
+
47
+ ## disabled_environments
48
+ # This option will disable Fae complete when the app is running
49
+ # on one of the defined environments
50
+ # config.disabled_environments = [ :preview, :staging ]
51
+
52
+ ## per_page
53
+ # Sets the default number of items shown in paginated lists
54
+ # Defaults to 25
55
+ # config.per_page = 25
56
+
57
+ ## use_cache
58
+ # Determines whether or not Fae will utilize cache internally.
59
+ # Note: you still need to enable `perform_caching` and set a `cache_store`
60
+ # on the parent app
61
+ # Defaults to false
62
+ # config.use_cache = true
63
+ end