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,66 @@
1
+ nav.nav.mobilenav
2
+ ul
3
+ - @fae_navigation.items.each do |item|
4
+ ruby:
5
+ item[:path] ||= '#'
6
+ main_class = item[:sublinks].present? ? 'mobilenav-accordion js-accordion' : ''
7
+ main_class << " #{item[:class_name]}" if item[:class_name].present?
8
+
9
+ li class=main_class
10
+ a href=item[:path] = item[:text]
11
+
12
+ - if item[:sublinks].present?
13
+ ul.subnav.js-subnav.js-subnav.js-subnav
14
+ li
15
+ / <span>s are for the mobile titles
16
+ span.mobilenav-subheader.js-mobile-back = item[:text]
17
+
18
+ - item[:sublinks].each do |subitem|
19
+ ruby:
20
+ subitem[:path] ||= '#'
21
+ sub_class = 'mobilenav-accordion -sub js-accordion' if subitem[:sublinks].present?
22
+ link_class = subitem[:class_name] if subitem[:class_name].present?
23
+
24
+ li class=sub_class
25
+ a class=link_class href=subitem[:path] = subitem[:text]
26
+
27
+ - if subitem[:sublinks].present?
28
+ ul.subnav.js-subnav
29
+ li: span.mobilenav-subheader.js-mobile-back = subitem[:text]
30
+ - subitem[:sublinks].each do |thirditem|
31
+ - thirditem[:path] ||= '#'
32
+ li: a href=thirditem[:path] = thirditem[:text]
33
+
34
+ - if current_user.super_admin_or_admin?
35
+ li.mobilenav-accordion.js-accordion
36
+ a href="#" Admin
37
+ ul.subnav.js-subnav.js-subnav.js-subnav
38
+ li
39
+ span.mobilenav-subheader.js-mobile-back Admin
40
+ ul
41
+ li: a href=fae.users_path Users
42
+ li: a href=fae.activity_log_path Activity Log
43
+ - if current_user.super_admin?
44
+ li: a href=fae.option_path Root Settings
45
+
46
+ - if user_signed_in?
47
+ li.mobilenav-user
48
+ span.mobilenav-user-header = current_user.full_name
49
+ ul
50
+ li: a.-logout href=fae.destroy_user_session_path Log Out
51
+ li: a.-settings href=fae.settings_path Your Settings
52
+ li: a.-support href=fae.help_path Support
53
+ - site_urls_are_present = @option.stage_url.present? && @option.live_url.present?
54
+ - view_site_class = site_urls_are_present ? 'mobilenav-accordion js-accordion' : nil
55
+ - if @option.stage_url.present? || @option.live_url.present?
56
+ li class=view_site_class
57
+ - if site_urls_are_present
58
+ a href="#" View Site
59
+ ul.subnav.js-subnav
60
+ li: span.mobilenav-subheader.js-mobile-back View Site
61
+ li: a.-viewsite href=@option.stage_url target="_blank" Preview Site
62
+ li: a.-viewsite href=@option.live_url target="_blank" Live Site
63
+ - elsif @option.stage_url.present?
64
+ a.-viewsite href=@option.stage_url target="_blank" Preview Site
65
+ - elsif @option.live_url.present?
66
+ a.-viewsite href=@option.live_url target="_blank" Live Site
@@ -0,0 +1,23 @@
1
+ - if user_signed_in? && @fae_sidenav_items.present?
2
+ nav.nav.sidenav.js-nav#js-sidenav
3
+ ul
4
+ - @fae_sidenav_items.each_with_index do |item, idx|
5
+ ruby:
6
+ main_class = item[:sublinks].present? ? [ 'sidenav-accordion js-accordion' ] : []
7
+ main_class << nav_active_class(item[:class_name], 2, idx)
8
+
9
+ li class=main_class.join(' ')
10
+ a href=item[:path] = item[:text]
11
+
12
+ - if item[:sublinks].present?
13
+ ul.subnav.js-subnav
14
+ - item[:sublinks].each_with_index do |subitem, sub_idx|
15
+ li
16
+ a class=nav_active_class(subitem[:class_name], 3, sub_idx, idx) href=subitem[:path] = subitem[:text]
17
+
18
+ / TODO: support 5th level?
19
+ / - if subitem[:sublinks].present?
20
+ / ul.subnav.js-subnav
21
+ / - subitem[:sublinks].each do |thirditem|
22
+ / - thirditem[:path] ||= '#'
23
+ / li: a href=thirditem[:path] = thirditem[:text]
@@ -0,0 +1,36 @@
1
+ - if false # disable user log due to performance issues
2
+ - unless params[:action] === 'new'
3
+ main.content#user_log_section
4
+ h2 User Log
5
+ table
6
+ thead
7
+ tr
8
+ th Session
9
+ th User
10
+ th Modified
11
+ tbody
12
+ - if item.versions.present?
13
+
14
+ - compared_attributes = item.attributes
15
+ - item.versions.reverse.each do |version|
16
+ ruby:
17
+ changed = []
18
+ if version.event === 'create'
19
+ changed << "created"
20
+ else
21
+ excluded = ['updated_at']
22
+ compared_attributes.each do |attribute, value|
23
+ changed.push(attribute) unless excluded.include?(attribute) || value.to_s == PaperTrail.serializer.load(version.object)[attribute].to_s
24
+ end
25
+ compared_attributes = PaperTrail.serializer.load(version.object)
26
+ end
27
+
28
+ - if changed.present?
29
+ tr
30
+ td = version.created_at
31
+ td = version.user.present? ? version.user.full_name : content_tag(:em, "user no longer exists")
32
+ td = changed.join(', ')
33
+
34
+ - else
35
+ tr
36
+ td colspan="3" No logs available.
@@ -0,0 +1,66 @@
1
+ ruby:
2
+ require_locals ['f'], local_assigns
3
+ item ||= f.object
4
+ image_name ||= :image
5
+ the_image = item.send(image_name)
6
+ label ||= image_name.to_s.titleize
7
+ alt_label ||= "#{label} Alt Text"
8
+ caption_label ||= "#{label} Caption"
9
+ helper_text ||= ""
10
+ alt_helper_text ||= 'Brief description of image contents, used in hover text and by visually impaired users.'
11
+ caption_helper_text ||= ""
12
+ show_alt = true if show_alt.nil?
13
+ show_caption ||= false
14
+ required ||= false
15
+ attached_as ||= image_name.to_s
16
+ languages = f.object.class.try(:fae_fields).try(:[], image_name).try(:[], :languages)
17
+ language ||= nil
18
+
19
+ - if languages.present?
20
+ - languages.each do |lang|
21
+ = render 'fae/images/image_uploader', f: f, item: item, image_name: "#{image_name}_#{lang}".to_sym, label: "#{label} (#{lang.to_s})", alt_label: "#{alt_label} (#{lang.to_s})", caption_label: "#{caption_label} (#{lang.to_s})", helper_text: helper_text, alt_helper_text: alt_helper_text, caption_helper_text: caption_helper_text, show_caption: show_caption, required: required, attached_as: attached_as, language: lang
22
+
23
+ - else
24
+ - wrapper_html = language.present? ? { data: { language: language } } : {}
25
+ = f.simple_fields_for image_name, defaults: { wrapper_html: wrapper_html } do |i|
26
+ .field.input*wrapper_html
27
+ label class="#{'required' if required}"
28
+ - if required
29
+ abbr title="required" *
30
+
31
+ = " #{label.html_safe}"
32
+
33
+ - if helper_text.present?
34
+ h6.helper_text = helper_text
35
+
36
+ - if the_image.asset.present?
37
+ .asset-actions
38
+ img.js-image-modal src=the_image.asset.url
39
+ .asset-title = the_image.asset.file.filename
40
+
41
+ = link_to '', fae.delete_image_path(the_image.id), class: 'asset-delete js-asset-delete', remote: true, method: :delete, data: { confirm: t('fae.delete_confirmation') } if the_image.id.present?
42
+
43
+ .asset-inputs style="#{'display:none;' if the_image.asset.present?}"
44
+ = i.input :asset, as: :file, label: false, input_html: { data: { limit: Fae.max_image_upload_size, exceeded: t('fae.exceeded_upload_limit') } }
45
+ = i.input :asset_cache, as: :hidden
46
+ - imageable_type = f.object.class.superclass.name == 'Fae::StaticPage' ? 'Fae::StaticPage' : f.object.class.name
47
+ = i.input :imageable_type, as: :hidden, input_html: { value: imageable_type }
48
+ = i.input :attached_as, as: :hidden, input_html: { value: attached_as }
49
+
50
+ - if show_caption
51
+ ruby:
52
+ options = { label: caption_label.html_safe }
53
+ options[:helper_text] = caption_helper_text if caption_helper_text.present?
54
+ options[:wrapper_html] = wrapper_html
55
+
56
+ = fae_input i, :caption, options
57
+
58
+ - if show_alt
59
+ ruby:
60
+ options = { label: alt_label.html_safe }
61
+ options[:helper_text] = alt_helper_text if alt_helper_text.present?
62
+ options[:wrapper_html] = wrapper_html
63
+
64
+ = fae_input i, :alt, options
65
+
66
+ = i.hidden_field :required, value: required
@@ -0,0 +1,16 @@
1
+ = simple_form_for(@option) do |f|
2
+ header.content-header.js-content-header
3
+ h1 Root Settings
4
+ .content-header-buttons
5
+ a.button#js-header-cancel href=fae.root_path(cancelled: true) Cancel
6
+ = f.submit 'Save'
7
+
8
+ == render 'flash_messages'
9
+
10
+ section.content
11
+ = fae_input f, :title, label: 'Project Name'
12
+ = fae_input f, :time_zone, wrapper_class: 'select'
13
+ = fae_input f, :live_url, label: 'Live URL', helper_text: 'Include http:// for external links.'
14
+ = fae_input f, :stage_url, label: 'Stage URL', helper_text: 'Include http:// for external links.'
15
+ = fae_image_form f, :logo, helper_text: 'Used on login page, 300x300px .jpg'
16
+ = fae_image_form f, :favicon
@@ -0,0 +1 @@
1
+ == render 'form'
@@ -0,0 +1,32 @@
1
+ == render 'fae/shared/index_header', title: 'Activity Log', new_button: false
2
+
3
+ main.content
4
+
5
+ == fae_filter_form title: 'Search Changes', action: fae.activity_log_filter_path do
6
+ == fae_filter_select :user, options: Fae::User.all.map { |u| [u.full_name, u.id] }
7
+ == fae_filter_select :model, options: Fae::Change.unique_changeable_types
8
+ == fae_filter_select :type, options: ['created', 'updated', 'deleted']
9
+ == fae_filter_select :date, options: ['Last Hour', 'Last Day', 'Last Week', 'Last Month'], placeholder: 'All Time'
10
+
11
+ table.js-results-table
12
+ thead
13
+ tr
14
+ th data-sort="user.first_name" User
15
+ th data-sort="changeable_type" Item
16
+ th data-sort="change_type" Type
17
+ th Attribute(s) Updated
18
+ th data-sort="updated_at" Modified
19
+ tbody
20
+ - if @items.present?
21
+ - @items.each do |change|
22
+ tr
23
+ td = change.user.full_name if change.user.present?
24
+ td = change_item_link(change)
25
+ td = change.change_type
26
+ td = change.updated_attributes.join(', ') if change.updated_attributes.present?
27
+ td = fae_datetime_format(change.updated_at)
28
+ - else
29
+ tr
30
+ td colspan=5 No changes recorded
31
+
32
+ == fae_paginate @items
@@ -0,0 +1,4 @@
1
+ .center
2
+ .sad_face
3
+ h1 Disabled Admin
4
+ p The admin on this domain has been disabled. This usually occurs on a staging domain where content is managed in production. Contact application support for more information.
@@ -0,0 +1,7 @@
1
+ .center
2
+ .sad_face
3
+ h1 Oops!
4
+ p
5
+ | The page you requested can not be found. Please&nbsp;
6
+ a href=fae.root_path click here
7
+ | &nbsp;to be taken to our home page.
@@ -0,0 +1,35 @@
1
+ = render 'fae/shared/index_header', title: 'Need some help?', breadcrumbs: false, new_button: false
2
+
3
+ section.help-section
4
+ article.content
5
+ h2 Contact Us
6
+ p
7
+ strong> Phone:
8
+ | 503.243.3463
9
+ br
10
+ strong> Email:
11
+ a href="mailto:fae@wearefine.com" fae@wearefine.com
12
+ br
13
+ strong> Website:
14
+ a href="http://www.wearefine.com" target="_blank" wearefine.com
15
+
16
+ article.content
17
+ h2 Reporting A Bug?
18
+
19
+ h3 Please include this helpful information:
20
+ ruby:
21
+ help_information = {
22
+ 'Version' => "Fae v#{Fae::VERSION}",
23
+ 'Date' => Time.now,
24
+ 'Site' => request.url,
25
+ 'Env' => Rails.env,
26
+ 'Browser' => "#{@browser.name} #{@browser.full_version}",
27
+ 'Platform' => @browser.platform,
28
+ 'User ID' => current_user.id
29
+ }
30
+
31
+ p
32
+ - help_information.each do |identifier, value|
33
+ strong> #{identifier}:
34
+ = value
35
+ br
@@ -0,0 +1,36 @@
1
+ header.content-header.js-content-header.-dashboard
2
+ div
3
+ i.icon-home>
4
+ | &nbsp;&nbsp;Hello
5
+ strong< = current_user.full_name
6
+
7
+ == render 'flash_messages'
8
+
9
+ - if @models.any?
10
+ main.content
11
+ table.js-sort-column
12
+ thead
13
+ tr
14
+ th Name
15
+ th Type
16
+ th.-action-wide Modified
17
+ tbody
18
+ - @list.each do |item|
19
+ - begin
20
+ - parent = item.respond_to?(:fae_parent) ? item.fae_parent : nil
21
+ - edit_path = edit_polymorphic_path([main_app, fae_scope, parent, item])
22
+ - index_path = polymorphic_path([main_app, fae_scope, parent, item.class.to_s.pluralize.underscore])
23
+ tr
24
+ td: a href=edit_path = item.fae_display_field
25
+ td: a href=index_path = item.class.to_s
26
+ td = fae_date_format item.updated_at
27
+ - rescue
28
+ - else
29
+ section.help-section
30
+ article.content
31
+ h2 Welcome to Fae
32
+ p
33
+ ' You don'thave any objects setup to manage. If you need help getting started, check out the
34
+ br
35
+ a href="https://www.faecms.com/documentation/quickstart-guide" target="_blank" Quickstart Guide and Documentation site
36
+ ' .
@@ -0,0 +1,11 @@
1
+ .first_user-form
2
+ p Please create your super admin user.
3
+
4
+ = simple_form_for(@user, html: { multipart: true, novalidate: true }, url: fae.first_user_path) do |f|
5
+ = fae_input f, :first_name
6
+ = fae_input f, :last_name
7
+ = fae_input f, :email
8
+ = fae_input f, :password, helper_text: 'Passwords must contain at least 8 characters.'
9
+ = fae_input f, :password_confirmation
10
+ .login-form-actions
11
+ = f.button :submit, "Submit"
@@ -0,0 +1,4 @@
1
+ - unless flash.present?
2
+ .flash-message.alert.hide = t('fae.save_error')
3
+
4
+ == render 'flash_messages'
@@ -0,0 +1,40 @@
1
+ ruby:
2
+ require_locals ['header'], local_assigns
3
+ save_button_text ||= 'Save'
4
+ cancel_button_text ||= 'Cancel'
5
+ cloneable ||= false
6
+ clone_button_text ||= 'Clone'
7
+ subnav ||= []
8
+ header_as_string = header.is_a?(String) ? header : header.class.name.split('::').last
9
+ header_as_string = header_as_string.singularize
10
+ title ||= "#{params[:action]} #{header_as_string}".titleize
11
+ breadcrumb = !local_assigns[:breadcrumbs].eql?(false)
12
+ languages ||= false
13
+ show_flash_messages = !local_assigns[:show_flash_messages].eql?(false)
14
+
15
+ header.content-header.js-content-header
16
+ - if breadcrumb
17
+ == render 'breadcrumb', title: title
18
+ - else
19
+ = form_header header
20
+
21
+ .content-header-buttons
22
+ - if languages
23
+ - selected = current_user.language || ''
24
+
25
+ .content-header-select
26
+ = select_tag 'fae-languages', options_for_select(Fae.languages.map(&:reverse), selected), id: 'js-language', class: 'small_pulldown', prompt: 'All Languages'
27
+
28
+ a.button#js-header-cancel href=@index_path = cancel_button_text
29
+ - if cloneable.present? && params[:id].present?
30
+ a.button data-method="post" href="#{@index_path}?from_existing=#{params[:id]}" = clone_button_text
31
+ input name="commit" type="submit" value=save_button_text
32
+
33
+ - if subnav.present?
34
+ ul.content-header-subnav#js-content-header-subnav
35
+ - subnav.each do |link, id_selector|
36
+ - subnav_item = link.is_a?(Array) ? link : [link, link.parameterize(separator: '_')]
37
+ li: a href="##{subnav_item[1]}" = subnav_item[0]
38
+
39
+ - if show_flash_messages
40
+ == render 'fae/shared/errors'
@@ -0,0 +1,26 @@
1
+ ruby:
2
+ nested ||= false
3
+ title ||= @klass_humanized.pluralize.titleize
4
+ new_button = !local_assigns[:new_button].eql?(false)
5
+ new_path ||= "new_#{fae_path}_#{@klass_singular}_path"
6
+ button_text ||= "Add #{title.singularize}"
7
+ csv ||= false
8
+ breadcrumb = !local_assigns[:breadcrumbs].eql?(false)
9
+
10
+ header.content-header.js-content-header
11
+ - if breadcrumb
12
+ == render 'breadcrumb'
13
+ - else
14
+ h1 = title
15
+
16
+ .content-header-buttons
17
+ - if csv && @items.present?
18
+ a.button href="#{@index_path}.csv" Export to CSV
19
+
20
+ - if new_button
21
+ - if nested
22
+ a.add-button.js-add-link.js-index-add-link remote='true' href=self.send(new_path) = button_text
23
+ - else
24
+ a.add-button href=@new_path = button_text
25
+
26
+ == render 'flash_messages'
@@ -0,0 +1,49 @@
1
+ ruby:
2
+ index ||= false
3
+
4
+ if index
5
+ require_locals(['assoc'], local_assigns)
6
+ else
7
+ require_locals(['assoc', 'parent_item'], local_assigns)
8
+ end
9
+
10
+ # optional locals
11
+ assoc_name ||= assoc.to_s # 'restaurant_bars'
12
+ title ||= assoc_name.titleize # 'Restaurant Bars'
13
+ add_button_text ||= "Add #{title.singularize}"
14
+ ordered ||= false
15
+ has_thumb ||= false
16
+ edit_column ||= false
17
+ cols ||= []
18
+ helper_text ||= ''
19
+
20
+ # lesser known optional locals, dervived from options by default
21
+ assoc_name_singular ||= assoc_name.singularize # 'restaurant_bar'
22
+ new_path ||= "new_#{fae_path}_#{assoc_name_singular}_path"
23
+ edit_path ||= "edit_#{fae_path}_#{assoc_name_singular}_path"
24
+
25
+ begin
26
+ if index
27
+ new_path = self.send(new_path)
28
+ else
29
+ new_path = self.send(new_path, item_id: parent_item.id, item_class: parent_item.class.to_s)
30
+ end
31
+ rescue
32
+ new_path += new_path['?'] ? '&' : '?'
33
+ new_path += "item_id=#{parent_item.id}&=item_class=#{parent_item.class.to_s}"
34
+ end
35
+
36
+ options_for_table = { index: index, assoc: assoc, assoc_name: assoc_name, title: title, add_button_text: add_button_text, ordered: ordered, has_thumb: has_thumb, edit_column: edit_column, cols: cols, assoc_name_singular: assoc_name_singular, new_path: new_path, edit_path: edit_path }
37
+ options_for_table[:parent_item] = parent_item unless index
38
+
39
+ section.addedit-form.js-addedit-form class="#{'content' if index}"
40
+ - if index
41
+ == render 'fae/shared/shared_nested_table', options_for_table
42
+
43
+ - else
44
+ a.js-add-link.table-add-link.button.-small href=new_path = add_button_text
45
+ h2 = title
46
+ - if helper_text.present?
47
+ h6.table-helper-text = helper_text
48
+ == render 'fae/application/flash_messages'
49
+ == render 'fae/shared/shared_nested_table', options_for_table