outpost-cms 0.0.3 → 0.0.4

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 (391) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +19 -1
  3. data/Rakefile +0 -12
  4. data/app/assets/javascripts/outpost.js +1 -1
  5. data/app/assets/javascripts/outpost/auto_slug_field.js.coffee +6 -6
  6. data/app/assets/javascripts/outpost/date_time_input.js.coffee +13 -13
  7. data/app/assets/javascripts/outpost/field_counter.js.coffee +15 -15
  8. data/app/assets/javascripts/outpost/field_manager.js.coffee +3 -3
  9. data/app/assets/javascripts/outpost/global_plugins.js.coffee +16 -19
  10. data/app/assets/javascripts/outpost/index_manager.js.coffee +12 -12
  11. data/app/assets/javascripts/outpost/notification.js.coffee +33 -11
  12. data/app/assets/javascripts/outpost/preview.js.coffee +4 -4
  13. data/app/assets/javascripts/outpost/utilities.js.coffee +13 -0
  14. data/app/assets/stylesheets/outpost/_base.css.scss +9 -9
  15. data/app/assets/stylesheets/outpost/_forms.css.scss +28 -15
  16. data/app/assets/stylesheets/outpost/_index.css.scss +2 -2
  17. data/app/assets/stylesheets/outpost/_utility.css.scss +1 -1
  18. data/app/controllers/outpost/application_controller.rb +5 -3
  19. data/app/controllers/outpost/errors_controller.rb +2 -1
  20. data/app/controllers/outpost/resource_controller.rb +1 -1
  21. data/app/controllers/outpost/sessions_controller.rb +10 -5
  22. data/app/helpers/authorization_helper.rb +3 -3
  23. data/app/helpers/list_helper.rb +72 -49
  24. data/app/helpers/outpost_helper.rb +4 -4
  25. data/app/helpers/render_helper.rb +5 -5
  26. data/app/helpers/utility_helper.rb +5 -5
  27. data/app/models/permission.rb +8 -5
  28. data/app/views/layouts/outpost/application.html.erb +7 -7
  29. data/app/views/layouts/outpost/minimal.html.erb +1 -1
  30. data/app/views/outpost/errors/error_500.html.erb +1 -1
  31. data/app/views/outpost/resource/_errors.html.erb +2 -11
  32. data/app/views/outpost/resource/edit.html.erb +8 -4
  33. data/app/views/outpost/resource/new.html.erb +5 -1
  34. data/app/views/outpost/sessions/new.html.erb +1 -1
  35. data/app/views/outpost/shared/_filters.html.erb +2 -2
  36. data/app/views/outpost/shared/_form_block.html.erb +2 -2
  37. data/app/views/outpost/shared/_form_nav.html.erb +1 -1
  38. data/app/views/outpost/shared/_full_errors.html.erb +9 -0
  39. data/app/views/outpost/shared/_headers.html.erb +4 -4
  40. data/app/views/outpost/shared/_navigation.html.erb +4 -4
  41. data/app/views/outpost/shared/_submit_row.html.erb +5 -5
  42. data/lib/action_view/helpers/form_builder.rb +28 -16
  43. data/lib/outpost.rb +8 -5
  44. data/lib/outpost/breadcrumbs.rb +13 -11
  45. data/lib/outpost/config.rb +6 -6
  46. data/lib/outpost/controller.rb +8 -2
  47. data/lib/outpost/controller/actions.rb +3 -3
  48. data/lib/outpost/controller/authentication.rb +2 -1
  49. data/lib/outpost/controller/authorization.rb +3 -2
  50. data/lib/outpost/controller/callbacks.rb +2 -1
  51. data/lib/outpost/controller/custom_errors.rb +44 -13
  52. data/lib/outpost/controller/helpers.rb +1 -29
  53. data/lib/outpost/controller/ordering.rb +59 -16
  54. data/lib/outpost/controller/preferences.rb +3 -3
  55. data/lib/outpost/helpers/naming.rb +2 -2
  56. data/lib/outpost/hook.rb +5 -5
  57. data/lib/outpost/list.rb +3 -3
  58. data/lib/outpost/list/base.rb +23 -13
  59. data/lib/outpost/list/column.rb +13 -4
  60. data/lib/outpost/list/filter.rb +4 -4
  61. data/lib/outpost/model.rb +2 -2
  62. data/lib/outpost/model/authentication.rb +6 -2
  63. data/lib/outpost/model/authorization.rb +1 -2
  64. data/lib/outpost/model/identifier.rb +15 -10
  65. data/lib/outpost/model/methods.rb +2 -2
  66. data/lib/outpost/model/naming.rb +10 -7
  67. data/lib/outpost/model/routing.rb +6 -6
  68. data/lib/outpost/model/serializer.rb +3 -3
  69. data/lib/outpost/version.rb +1 -1
  70. data/spec/controllers/authentication_spec.rb +10 -10
  71. data/spec/controllers/sessions_controller_spec.rb +17 -17
  72. data/spec/factories.rb +1 -1
  73. data/spec/features/authentication_spec.rb +43 -0
  74. data/spec/features/authorization_spec.rb +28 -0
  75. data/spec/features/creating_spec.rb +44 -0
  76. data/spec/features/destroying_spec.rb +18 -0
  77. data/spec/features/editing_spec.rb +43 -0
  78. data/spec/features/save_options_spec.rb +35 -0
  79. data/spec/helpers/authorization_helper_spec.rb +8 -8
  80. data/spec/helpers/list_helper_spec.rb +34 -0
  81. data/spec/helpers/render_helper_spec.rb +1 -1
  82. data/spec/helpers/utility_helper_spec.rb +10 -10
  83. data/spec/internal/app/controllers/outpost/people_controller.rb +3 -3
  84. data/spec/internal/app/models/person.rb +3 -0
  85. data/spec/internal/config/routes.rb +1 -1
  86. data/spec/internal/db/combustion_test.sqlite +0 -0
  87. data/spec/internal/log/test.log +35260 -53251
  88. data/spec/internal/tmp/cache/assets/test/sass/20f5650af539e2cc0c7216330842920da53e851d/bootstrap.css.scssc +0 -0
  89. data/spec/internal/tmp/cache/assets/test/sass/20f5650af539e2cc0c7216330842920da53e851d/datepicker.css.scssc +0 -0
  90. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_alerts.scssc +0 -0
  91. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_breadcrumbs.scssc +0 -0
  92. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_button-groups.scssc +0 -0
  93. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_buttons.scssc +0 -0
  94. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_close.scssc +0 -0
  95. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_code.scssc +0 -0
  96. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_component-animations.scssc +0 -0
  97. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_dropdowns.scssc +0 -0
  98. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_forms.scssc +0 -0
  99. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_grid.scssc +0 -0
  100. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_labels-badges.scssc +0 -0
  101. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_layouts.scssc +0 -0
  102. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_mixins.scssc +0 -0
  103. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_modals.scssc +0 -0
  104. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_navbar.scssc +0 -0
  105. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_navs.scssc +0 -0
  106. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_pager.scssc +0 -0
  107. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_pagination.scssc +0 -0
  108. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_reset.scssc +0 -0
  109. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_scaffolding.scssc +0 -0
  110. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_sprites.scssc +0 -0
  111. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_tables.scssc +0 -0
  112. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_type.scssc +0 -0
  113. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_utilities.scssc +0 -0
  114. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_variables.scssc +0 -0
  115. data/spec/internal/tmp/cache/assets/test/sass/4867dc0a3f589a0a2c9635bfeae1ddc8691d74a0/_wells.scssc +0 -0
  116. data/spec/internal/tmp/cache/assets/test/sass/56c521c2866fc194cbbf1ead1ad9e7d727f5e7b3/select2.css.scssc +0 -0
  117. data/spec/internal/tmp/cache/assets/test/sass/87aa0c8b43c5e29ce88dd86b1a2c657232e4bb6f/outpost.css.scssc +0 -0
  118. data/spec/internal/tmp/cache/assets/test/sass/cde194af3b19eae3aef82845ab8bc0df6c0d84d4/select2.css.scssc +0 -0
  119. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_alerts.scssc +0 -0
  120. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_breadcrumbs.scssc +0 -0
  121. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_button-groups.scssc +0 -0
  122. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_buttons.scssc +0 -0
  123. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_close.scssc +0 -0
  124. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_code.scssc +0 -0
  125. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_component-animations.scssc +0 -0
  126. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_dropdowns.scssc +0 -0
  127. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_forms.scssc +0 -0
  128. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_grid.scssc +0 -0
  129. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_labels-badges.scssc +0 -0
  130. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_layouts.scssc +0 -0
  131. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_mixins.scssc +0 -0
  132. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_modals.scssc +0 -0
  133. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_navbar.scssc +0 -0
  134. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_navs.scssc +0 -0
  135. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_pager.scssc +0 -0
  136. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_pagination.scssc +0 -0
  137. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_reset.scssc +0 -0
  138. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_scaffolding.scssc +0 -0
  139. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_sprites.scssc +0 -0
  140. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_tables.scssc +0 -0
  141. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_type.scssc +0 -0
  142. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_utilities.scssc +0 -0
  143. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_variables.scssc +0 -0
  144. data/spec/internal/tmp/cache/assets/test/sass/cee3b45c60038923cb15e74edf0b508296df0b89/_wells.scssc +0 -0
  145. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_alerts.scssc +0 -0
  146. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_breadcrumbs.scssc +0 -0
  147. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_button-groups.scssc +0 -0
  148. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_buttons.scssc +0 -0
  149. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_close.scssc +0 -0
  150. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_code.scssc +0 -0
  151. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_component-animations.scssc +0 -0
  152. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_dropdowns.scssc +0 -0
  153. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_forms.scssc +0 -0
  154. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_grid.scssc +0 -0
  155. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_labels-badges.scssc +0 -0
  156. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_layouts.scssc +0 -0
  157. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_mixins.scssc +0 -0
  158. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_modals.scssc +0 -0
  159. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_navbar.scssc +0 -0
  160. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_navs.scssc +0 -0
  161. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_pager.scssc +0 -0
  162. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_pagination.scssc +0 -0
  163. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_reset.scssc +0 -0
  164. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_scaffolding.scssc +0 -0
  165. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_sprites.scssc +0 -0
  166. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_tables.scssc +0 -0
  167. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_type.scssc +0 -0
  168. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_utilities.scssc +0 -0
  169. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_variables.scssc +0 -0
  170. data/spec/internal/tmp/cache/assets/test/sass/db455d3ae1e484fbc281e7097adf4ecb850d7d10/_wells.scssc +0 -0
  171. data/spec/internal/tmp/cache/assets/test/sass/e1eb86f6478445881765984079761fb4af85ab4e/select2.css.scssc +0 -0
  172. data/spec/internal/tmp/cache/assets/test/sass/ea24470654f74c1fe92aa45b2fae66b2a464a390/_base.css.scssc +0 -0
  173. data/spec/internal/tmp/cache/assets/test/sass/ea24470654f74c1fe92aa45b2fae66b2a464a390/_edit.css.scssc +0 -0
  174. data/spec/internal/tmp/cache/assets/test/sass/ea24470654f74c1fe92aa45b2fae66b2a464a390/_forms.css.scssc +0 -0
  175. data/spec/internal/tmp/cache/assets/test/sass/ea24470654f74c1fe92aa45b2fae66b2a464a390/_index.css.scssc +0 -0
  176. data/spec/internal/tmp/cache/assets/test/sass/ea24470654f74c1fe92aa45b2fae66b2a464a390/_utility.css.scssc +0 -0
  177. data/spec/internal/tmp/cache/assets/test/sass/ea24470654f74c1fe92aa45b2fae66b2a464a390/application.css.scssc +0 -0
  178. data/spec/internal/tmp/cache/assets/test/sass/ea24470654f74c1fe92aa45b2fae66b2a464a390/outpost.css.scssc +0 -0
  179. data/spec/internal/tmp/cache/assets/test/sass/ea24470654f74c1fe92aa45b2fae66b2a464a390/select2.css.scssc +0 -0
  180. data/spec/internal/tmp/cache/assets/test/sprockets/00154e1fc60e5765eb3704d402af06d1 +0 -0
  181. data/spec/internal/tmp/cache/assets/test/sprockets/0122e4f8c5576de5137307df7d6163a0 +0 -0
  182. data/spec/internal/tmp/cache/assets/test/sprockets/016db564806ffd72c90385066f2d1526 +0 -0
  183. data/spec/internal/tmp/cache/assets/test/sprockets/0185dbaba82d3fbc0fd9d2383dc7338d +0 -0
  184. data/spec/internal/tmp/cache/assets/test/sprockets/01a8e4b866eb7fc8ea5ed3941f1b1877 +0 -0
  185. data/spec/internal/tmp/cache/assets/test/sprockets/02713d4140ec033db3e897e7597c2096 +0 -0
  186. data/spec/internal/tmp/cache/assets/test/sprockets/0377ae38f0ab4fa7131b364012d9a4fa +0 -0
  187. data/spec/internal/tmp/cache/assets/test/sprockets/04effed13eef407140fbe39b6efae4b2 +0 -0
  188. data/spec/internal/tmp/cache/assets/test/sprockets/086d226e30e05ea260b6d01a4fbd8a29 +0 -0
  189. data/spec/internal/tmp/cache/assets/test/sprockets/0a032a3ea9ed2f90e27e350839fcc8dc +0 -0
  190. data/spec/internal/tmp/cache/assets/test/sprockets/0bc810339d0afdbe60e338e0041023cc +0 -0
  191. data/spec/internal/tmp/cache/assets/test/sprockets/0e167df01ba09061de9f5c49cfdccc99 +0 -0
  192. data/spec/internal/tmp/cache/assets/test/sprockets/0e69140d2c49ad3bd2a53e1a61ca911f +0 -0
  193. data/spec/internal/tmp/cache/assets/test/sprockets/15a87828df71925cca15a55b77afcf64 +0 -0
  194. data/spec/internal/tmp/cache/assets/test/sprockets/19b0f301c27628308ff1f81a322fcaa9 +0 -0
  195. data/spec/internal/tmp/cache/assets/test/sprockets/1b718773e74da99a05a30cc200c74d2b +0 -0
  196. data/spec/internal/tmp/cache/assets/test/sprockets/1d2a3ed3a5ee7d864dccd4feb0298858 +0 -0
  197. data/spec/internal/tmp/cache/assets/test/sprockets/1dfbb70993a8817b5e5aee44b888309d +0 -0
  198. data/spec/internal/tmp/cache/assets/test/sprockets/1e397e58ea65aa807232e81ba0646007 +0 -0
  199. data/spec/internal/tmp/cache/assets/test/sprockets/1e85a069dc1fa2fd3a325dd73115819a +0 -0
  200. data/spec/internal/tmp/cache/assets/test/sprockets/1fa01b5b6a31a3380b9f7926508624cb +0 -0
  201. data/spec/internal/tmp/cache/assets/test/sprockets/21f2bd9f5281712ad2d8c772fd407505 +0 -0
  202. data/spec/internal/tmp/cache/assets/test/sprockets/235664cdcf9cd81bf6a89a09e1e5711a +0 -0
  203. data/spec/internal/tmp/cache/assets/test/sprockets/23643a6f2a1f5c182681eca82a12b3b5 +0 -0
  204. data/spec/internal/tmp/cache/assets/test/sprockets/25f2c3cb96afc04742cb792a8adf703a +0 -0
  205. data/spec/internal/tmp/cache/assets/test/sprockets/26ad3186c36f3514d1028fb00180ed9c +0 -0
  206. data/spec/internal/tmp/cache/assets/test/sprockets/271f465e2ee560eee64005efa04346de +0 -0
  207. data/spec/internal/tmp/cache/assets/test/sprockets/29a5c683744eb88ed1292f59cd6063c9 +0 -0
  208. data/spec/internal/tmp/cache/assets/test/sprockets/2bb02e7009e6fec07e0ed0d01a1cf997 +0 -0
  209. data/spec/internal/tmp/cache/assets/test/sprockets/2cb954dcae3aa6f587625543070feb84 +0 -0
  210. data/spec/internal/tmp/cache/assets/test/sprockets/2f2c37a813522cd1889d2ebdfb2d2a66 +0 -0
  211. data/spec/internal/tmp/cache/assets/test/sprockets/316c469209d39a7bdac5c11828cf8d74 +0 -0
  212. data/spec/internal/tmp/cache/assets/test/sprockets/31be2b6ebd86190dc1ec80ce5f0833c5 +0 -0
  213. data/spec/internal/tmp/cache/assets/test/sprockets/36372f01bbdb43b410ec5192f7b6902f +0 -0
  214. data/spec/internal/tmp/cache/assets/test/sprockets/3717c6d6d1b1afd049b633417ed63cdd +0 -0
  215. data/spec/internal/tmp/cache/assets/test/sprockets/37abf1a201cc821dfc13cc427659a47b +0 -0
  216. data/spec/internal/tmp/cache/assets/test/sprockets/38341483f58eeea1d871954dbe986267 +0 -0
  217. data/spec/internal/tmp/cache/assets/test/sprockets/38aa3f8364fc8f118029ff4651c72221 +0 -0
  218. data/spec/internal/tmp/cache/assets/test/sprockets/3e5a01607dc58566739854e9f3ce5024 +0 -0
  219. data/spec/internal/tmp/cache/assets/test/sprockets/3f1c054c86b6510099f8e6c5dfe7ff3a +0 -0
  220. data/spec/internal/tmp/cache/assets/test/sprockets/3f744831928042565f7903a46a39791c +0 -0
  221. data/spec/internal/tmp/cache/assets/test/sprockets/3fadb5164d4b3caf81ef217fcde0d142 +0 -0
  222. data/spec/internal/tmp/cache/assets/test/sprockets/44020d882ece5491178ab3560f0d47a6 +0 -0
  223. data/spec/internal/tmp/cache/assets/test/sprockets/450ba61c4dc9c4cfa9f7efa5c9bba83d +0 -0
  224. data/spec/internal/tmp/cache/assets/test/sprockets/4543f412f8a876cd357e5888a4453e5d +0 -0
  225. data/spec/internal/tmp/cache/assets/test/sprockets/4a0eb5dbdb969be5257139300ae901a9 +0 -0
  226. data/spec/internal/tmp/cache/assets/test/sprockets/4ad30c03a35f4b46291c9c6331c43567 +0 -0
  227. data/spec/internal/tmp/cache/assets/test/sprockets/4c55f0b46f9bfc697010c07487d932e1 +0 -0
  228. data/spec/internal/tmp/cache/assets/test/sprockets/4d5649fe189b1fdead6428fdd2b9fafd +0 -0
  229. data/spec/internal/tmp/cache/assets/test/sprockets/4d779cbf3db6f14b3e022a5e5758d72d +0 -0
  230. data/spec/internal/tmp/cache/assets/test/sprockets/4ed642ba978ceb9502349fa8e6676440 +0 -0
  231. data/spec/internal/tmp/cache/assets/test/sprockets/4f6d52d657e0c1e635762f3edc6e8e20 +0 -0
  232. data/spec/internal/tmp/cache/assets/test/sprockets/50ae0bcf805250caf4ae4c4e01deebc9 +0 -0
  233. data/spec/internal/tmp/cache/assets/test/sprockets/53fc0263b1ce55a46ed55c461a2a8696 +0 -0
  234. data/spec/internal/tmp/cache/assets/test/sprockets/53fee1ff706022963c15ff24d5c53b54 +0 -0
  235. data/spec/internal/tmp/cache/assets/test/sprockets/54746a8bf1cdccbce2a3cfb4af05aef8 +0 -0
  236. data/spec/internal/tmp/cache/assets/test/sprockets/595ad1f5b58343141474f9211039df61 +0 -0
  237. data/spec/internal/tmp/cache/assets/test/sprockets/5c8c03be6364f23b4008487f351afa73 +0 -0
  238. data/spec/internal/tmp/cache/assets/test/sprockets/5d1e25ab219593639db982c901882c0f +0 -0
  239. data/spec/internal/tmp/cache/assets/test/sprockets/5d676e2352411dd3f05c6cee14727d1c +0 -0
  240. data/spec/internal/tmp/cache/assets/test/sprockets/5e2716f68ca78a5c0c83b157db90fc0d +0 -0
  241. data/spec/internal/tmp/cache/assets/test/sprockets/5e3f572f31041a301e0891c10f04604c +0 -0
  242. data/spec/internal/tmp/cache/assets/test/sprockets/620148b9ab753da9e8644581b619731b +0 -0
  243. data/spec/internal/tmp/cache/assets/test/sprockets/6471408d963e9165f8831b4bab80edd9 +0 -0
  244. data/spec/internal/tmp/cache/assets/test/sprockets/64a8cb638857a130dbabae4d1633618e +0 -0
  245. data/spec/internal/tmp/cache/assets/test/sprockets/6503f1ef9797aafce9339deb9200cfca +0 -0
  246. data/spec/internal/tmp/cache/assets/test/sprockets/6519463c3d8d8a34d743ef38eff5df45 +0 -0
  247. data/spec/internal/tmp/cache/assets/test/sprockets/656b07036edb74305c343f41eba55695 +0 -0
  248. data/spec/internal/tmp/cache/assets/test/sprockets/6571b577767caea14c3b89201d0643a2 +0 -0
  249. data/spec/internal/tmp/cache/assets/test/sprockets/6748f4abf46d0d2f516279ec032fd817 +0 -0
  250. data/spec/internal/tmp/cache/assets/test/sprockets/67a11a42996d51802481c92dc09c83fa +0 -0
  251. data/spec/internal/tmp/cache/assets/test/sprockets/6873baccb9ed57b839e83cfb93738955 +0 -0
  252. data/spec/internal/tmp/cache/assets/test/sprockets/6b9d79602e3b6ff9dd067605adeb0888 +0 -0
  253. data/spec/internal/tmp/cache/assets/test/sprockets/6c3df81c5fb88b555bafde4f54db7db2 +0 -0
  254. data/spec/internal/tmp/cache/assets/test/sprockets/6c62bea96eebf0f05624a859e8666f9a +0 -0
  255. data/spec/internal/tmp/cache/assets/test/sprockets/6cecd8ec655b80ac006bbec236b4263b +0 -0
  256. data/spec/internal/tmp/cache/assets/test/sprockets/700c635c138594de7ac50ad4b0420a0f +0 -0
  257. data/spec/internal/tmp/cache/assets/test/sprockets/70de8c6638b3ad61a4125dfb42e41f5b +0 -0
  258. data/spec/internal/tmp/cache/assets/test/sprockets/72a7339f697b2dcde9bd4835eaa42642 +0 -0
  259. data/spec/internal/tmp/cache/assets/test/sprockets/756eb63f1239c0a7a3d85253ddb5ca0d +0 -0
  260. data/spec/internal/tmp/cache/assets/test/sprockets/76e213ff5da12faa448078def3d32db5 +0 -0
  261. data/spec/internal/tmp/cache/assets/test/sprockets/76e3360cc08985753a1273cd40c3084a +0 -0
  262. data/spec/internal/tmp/cache/assets/test/sprockets/78f9aaf7b4a1253db9bdb2f2301a9b7d +0 -0
  263. data/spec/internal/tmp/cache/assets/test/sprockets/7ba5aaf62125e0b56d9e46603f5f8601 +0 -0
  264. data/spec/internal/tmp/cache/assets/test/sprockets/7e0d7eb383740100156a527b9e26d659 +0 -0
  265. data/spec/internal/tmp/cache/assets/test/sprockets/7e297a13578eea5ae51d5abb3be9df18 +0 -0
  266. data/spec/internal/tmp/cache/assets/test/sprockets/81670753eb8197bb1b9ca4d5a66a6fc5 +0 -0
  267. data/spec/internal/tmp/cache/assets/test/sprockets/896416332cf9f3e34262e6241b8237ef +0 -0
  268. data/spec/internal/tmp/cache/assets/test/sprockets/8b99288467087dc247c025d41444f377 +0 -0
  269. data/spec/internal/tmp/cache/assets/test/sprockets/8c123b8d3cc73220c5b69f99d2168389 +0 -0
  270. data/spec/internal/tmp/cache/assets/test/sprockets/8c5dcc180f78ee4957d754df726e2248 +0 -0
  271. data/spec/internal/tmp/cache/assets/test/sprockets/8e6315300501d34a896b82c0c0ceb70c +0 -0
  272. data/spec/internal/tmp/cache/assets/test/sprockets/90d6924223f69e10833fa8ef351e35ab +0 -0
  273. data/spec/internal/tmp/cache/assets/test/sprockets/9117ec941398c9b1340aa0b170ab2dc7 +0 -0
  274. data/spec/internal/tmp/cache/assets/test/sprockets/91d56ecde1551ea73ef462a44b77f650 +0 -0
  275. data/spec/internal/tmp/cache/assets/test/sprockets/9676f39584b5a04f92b29c0729175a8c +0 -0
  276. data/spec/internal/tmp/cache/assets/test/sprockets/9788c645f0c65ea7466be1dc13f64eea +0 -0
  277. data/spec/internal/tmp/cache/assets/test/sprockets/9add31bfd5f6aaa920af7f38211f9aa2 +0 -0
  278. data/spec/internal/tmp/cache/assets/test/sprockets/9b08bbf9ae722116682b8e22cb38c2ec +0 -0
  279. data/spec/internal/tmp/cache/assets/test/sprockets/9bc5469fea2a4926d4744c370bae613a +0 -0
  280. data/spec/internal/tmp/cache/assets/test/sprockets/9c1b3e8d4f1bab87ed819b82da42f535 +0 -0
  281. data/spec/internal/tmp/cache/assets/test/sprockets/9c736faedfe2dfe359042f9d2ce85367 +0 -0
  282. data/spec/internal/tmp/cache/assets/test/sprockets/9cf76f5ce68332b0f67c2f3b896a3475 +0 -0
  283. data/spec/internal/tmp/cache/assets/test/sprockets/9d484a2e742210fa6bc8be543c6331b9 +0 -0
  284. data/spec/internal/tmp/cache/assets/test/sprockets/9dd86c42f919be9f13a14317e7607f31 +0 -0
  285. data/spec/internal/tmp/cache/assets/test/sprockets/a0743c695fe7f2f40fc5f188fd054c2b +0 -0
  286. data/spec/internal/tmp/cache/assets/test/sprockets/a0b5c6371ce0b3308fc3be90c4f9ef5b +0 -0
  287. data/spec/internal/tmp/cache/assets/test/sprockets/a1e23f12c8163631dc3a2a98efd393a1 +0 -0
  288. data/spec/internal/tmp/cache/assets/test/sprockets/a2668b2b36e10c17a0a37e15af1adf92 +0 -0
  289. data/spec/internal/tmp/cache/assets/test/sprockets/a2d1f22b3a5164f8bdf8a2e08456d9c3 +0 -0
  290. data/spec/internal/tmp/cache/assets/test/sprockets/a458e44cf710f6e94208e22d3eafae3f +0 -0
  291. data/spec/internal/tmp/cache/assets/test/sprockets/a79a727e3b12ecb263735a8edecc86c2 +0 -0
  292. data/spec/internal/tmp/cache/assets/test/sprockets/aaa6c30950f43b707d50ee44229c1d0f +0 -0
  293. data/spec/internal/tmp/cache/assets/test/sprockets/ac25c69ce48ecf3a3a3808ba26537243 +0 -0
  294. data/spec/internal/tmp/cache/assets/test/sprockets/acb56c1b241b90a3a8694a04d7724e7d +0 -0
  295. data/spec/internal/tmp/cache/assets/test/sprockets/ad5315bf4cd3b8c4d38f662ef41c44d0 +0 -0
  296. data/spec/internal/tmp/cache/assets/test/sprockets/b0e1d9e51dba635c57573102d479dea9 +0 -0
  297. data/spec/internal/tmp/cache/assets/test/sprockets/b1a78635932522eb99a619b6e190b898 +0 -0
  298. data/spec/internal/tmp/cache/assets/test/sprockets/b236b354a0e5045c17b85a70f66e612d +0 -0
  299. data/spec/internal/tmp/cache/assets/test/sprockets/b2a3274db2081478a289f8eeee8370c7 +0 -0
  300. data/spec/internal/tmp/cache/assets/test/sprockets/b49f83c898ca822909d8d2c32470cfec +0 -0
  301. data/spec/internal/tmp/cache/assets/test/sprockets/b4c4d53c35d932c2b28bcefa990ec7fc +0 -0
  302. data/spec/internal/tmp/cache/assets/test/sprockets/b6f987547de2c90ebc0413d3263b87e8 +0 -0
  303. data/spec/internal/tmp/cache/assets/test/sprockets/b832658770b677e87a9d095ed3a87c47 +0 -0
  304. data/spec/internal/tmp/cache/assets/test/sprockets/b9d76e389aeda53d2f9cc256f75e303b +0 -0
  305. data/spec/internal/tmp/cache/assets/test/sprockets/bad56ba50db6ed97894b003103289ffe +0 -0
  306. data/spec/internal/tmp/cache/assets/test/sprockets/bb4e55b9b1a8a3bb8a8f0a10d4c6b074 +0 -0
  307. data/spec/internal/tmp/cache/assets/test/sprockets/bc8ba0b8c4f10524a604a7163f16e3dd +0 -0
  308. data/spec/internal/tmp/cache/assets/test/sprockets/bdfb9045b2f813ac4397c5cf0487f840 +0 -0
  309. data/spec/internal/tmp/cache/assets/test/sprockets/bf20d01df22f01e0fd66116d0ce58969 +0 -0
  310. data/spec/internal/tmp/cache/assets/test/sprockets/bf6fcb4c8c96d5406899b48c688e17a2 +0 -0
  311. data/spec/internal/tmp/cache/assets/test/sprockets/c0291860b6abb7bdc04ccc1e990e38f0 +0 -0
  312. data/spec/internal/tmp/cache/assets/test/sprockets/c1195a7d9d0e930545cda22ad40b0a9c +0 -0
  313. data/spec/internal/tmp/cache/assets/test/sprockets/c13a23e52c9d1956c61fb8540bfff8ef +0 -0
  314. data/spec/internal/tmp/cache/assets/test/sprockets/c1aa6b16696817c61530071b80c0cd43 +0 -0
  315. data/spec/internal/tmp/cache/assets/test/sprockets/c3954ed4f5e4dced91ee1240e4f90a05 +0 -0
  316. data/spec/internal/tmp/cache/assets/test/sprockets/c56fce185c88af8d191796b0172f498b +0 -0
  317. data/spec/internal/tmp/cache/assets/test/sprockets/c698133fe56541139a2f0d883ca07936 +0 -0
  318. data/spec/internal/tmp/cache/assets/test/sprockets/c7fcb613d0a346398fdf7a3a6ee722a1 +0 -0
  319. data/spec/internal/tmp/cache/assets/test/sprockets/c811799e9db5c939aab1e8e394df3b64 +0 -0
  320. data/spec/internal/tmp/cache/assets/test/sprockets/c9a027b847d199e99825ea85000303cf +0 -0
  321. data/spec/internal/tmp/cache/assets/test/sprockets/c9f12fd289b0f7e670ede1eeb8d3c24c +0 -0
  322. data/spec/internal/tmp/cache/assets/test/sprockets/c9f83bead35bd9bb5c671e327174c526 +0 -0
  323. data/spec/internal/tmp/cache/assets/test/sprockets/cb6a30f2c5219f77229df845e426ea71 +0 -0
  324. data/spec/internal/tmp/cache/assets/test/sprockets/cbbd567516b06004eb748f5a59bc14cc +0 -0
  325. data/spec/internal/tmp/cache/assets/test/sprockets/cbf827028b6168652324eb60180e21bd +0 -0
  326. data/spec/internal/tmp/cache/assets/test/sprockets/cc6766435593a06fcc9193244ea952a0 +0 -0
  327. data/spec/internal/tmp/cache/assets/test/sprockets/ccf22a7e27ed81a71d47f42a7cdb8e0e +0 -0
  328. data/spec/internal/tmp/cache/assets/test/sprockets/cd7d618755faec87f9c5cf47c6ae3365 +0 -0
  329. data/spec/internal/tmp/cache/assets/test/sprockets/cded6947b5642cfe05ffecc7a33ba54f +0 -0
  330. data/spec/internal/tmp/cache/assets/test/sprockets/d3638dad50702ecfe0e1b3bc8e07afc4 +0 -0
  331. data/spec/internal/tmp/cache/assets/test/sprockets/d5693a0bc9ebc317ed346946e8fe94ba +0 -0
  332. data/spec/internal/tmp/cache/assets/test/sprockets/d5c56cd3863549bedac1c7b3f28ae1d7 +0 -0
  333. data/spec/internal/tmp/cache/assets/test/sprockets/d6ba30bdd7d4b6d5205c150734acf5fa +0 -0
  334. data/spec/internal/tmp/cache/assets/test/sprockets/dd47254dcdc30cdbffbe6c32c57032fe +0 -0
  335. data/spec/internal/tmp/cache/assets/test/sprockets/dde6829bdb6fb77823831ab67644b76f +0 -0
  336. data/spec/internal/tmp/cache/assets/test/sprockets/ded9d8a2db25b4ab7f6d4f297208ded2 +0 -0
  337. data/spec/internal/tmp/cache/assets/test/sprockets/df8f0d31d3b82184ed7ded27b99b8ad4 +0 -0
  338. data/spec/internal/tmp/cache/assets/test/sprockets/e29bc5278f7e0bed414f714583faceee +0 -0
  339. data/spec/internal/tmp/cache/assets/test/sprockets/e461582472217950b63ee3247041e99c +0 -0
  340. data/spec/internal/tmp/cache/assets/test/sprockets/e521c94e59f66d600e517a555502fa11 +0 -0
  341. data/spec/internal/tmp/cache/assets/test/sprockets/e5be380a9dba4e6deae7a8511e4d7c13 +0 -0
  342. data/spec/internal/tmp/cache/assets/test/sprockets/e744b5ae603dc485f33ed176c899adfc +0 -0
  343. data/spec/internal/tmp/cache/assets/test/sprockets/e80c7be4df818b60928137fb7c450a43 +0 -0
  344. data/spec/internal/tmp/cache/assets/test/sprockets/e8edf2c8d66f7e31710f9aa5068d1155 +0 -0
  345. data/spec/internal/tmp/cache/assets/test/sprockets/ea8cf9239f191c63624cef6a3b6d2fbe +0 -0
  346. data/spec/internal/tmp/cache/assets/test/sprockets/ebb6acb80a5274f63d3ac5fd8df530b1 +0 -0
  347. data/spec/internal/tmp/cache/assets/test/sprockets/ebf2e1ad04f201369fb43454efc7bbd7 +0 -0
  348. data/spec/internal/tmp/cache/assets/test/sprockets/ec197b57d7a6b4163dac32744e3fa5b0 +0 -0
  349. data/spec/internal/tmp/cache/assets/test/sprockets/edb76e2e1ee82dc916a1086ca2d71de9 +0 -0
  350. data/spec/internal/tmp/cache/assets/test/sprockets/edc87d0b81267faccd7c5ada85675f9b +0 -0
  351. data/spec/internal/tmp/cache/assets/test/sprockets/ef4e09f768bb9330652eaa198bbd2c61 +0 -0
  352. data/spec/internal/tmp/cache/assets/test/sprockets/ef64bea489660cf5e30a6feb53bf3a5d +0 -0
  353. data/spec/internal/tmp/cache/assets/test/sprockets/f1b8af27ca9833a0ac2a5e10763efaa2 +0 -0
  354. data/spec/internal/tmp/cache/assets/test/sprockets/f5827ca48c75eb2925e0ae71f4545190 +0 -0
  355. data/spec/internal/tmp/cache/assets/test/sprockets/f60d687ea69fe491a8686efe8d6b3022 +0 -0
  356. data/spec/internal/tmp/cache/assets/test/sprockets/f66a526c31371958b5cd65928dd07d7f +0 -0
  357. data/spec/internal/tmp/cache/assets/test/sprockets/f6d577e76daa020d3df860c5dc7f8f61 +0 -0
  358. data/spec/internal/tmp/cache/assets/test/sprockets/f71d6134d0f24cb1de62de79100e19ee +0 -0
  359. data/spec/internal/tmp/cache/assets/test/sprockets/f7ace754f231b5ad97520f631ea60e01 +0 -0
  360. data/spec/internal/tmp/cache/assets/test/sprockets/f8f8cc64c68687e8c827d78d42ed93a4 +0 -0
  361. data/spec/internal/tmp/cache/assets/test/sprockets/fa2eaf4b4fc72c8cb321c6f9c022a55f +0 -0
  362. data/spec/internal/tmp/cache/assets/test/sprockets/fa32e1bd0e55873cd424ac5e7ce5c5ac +0 -0
  363. data/spec/internal/tmp/cache/assets/test/sprockets/fa9f906d3d676d23eac6d15f90f77876 +0 -0
  364. data/spec/internal/tmp/cache/assets/test/sprockets/fd8537c2a374241cc1d2d029ca4a3623 +0 -0
  365. data/spec/internal/tmp/cache/assets/test/sprockets/ff2e40602b14836c882af817459fa90e +0 -0
  366. data/spec/internal/tmp/capybara/capybara-201308160115352034044402.html +51 -0
  367. data/spec/internal/tmp/capybara/capybara-201308160118107572662369.html +140 -0
  368. data/spec/internal/tmp/capybara/capybara-201308160124322422773822.html +140 -0
  369. data/spec/internal/tmp/capybara/capybara-201308160216057700618069.html +71 -0
  370. data/spec/internal/tmp/capybara/capybara-201308160227299029704750.html +51 -0
  371. data/spec/internal/tmp/capybara/capybara-201308160227517375148134.html +51 -0
  372. data/spec/lib/breadcrumbs_spec.rb +5 -5
  373. data/spec/lib/config_spec.rb +11 -11
  374. data/spec/lib/controller/callbacks_spec.rb +1 -9
  375. data/spec/lib/controller/helpers_spec.rb +4 -4
  376. data/spec/lib/hook_spec.rb +1 -1
  377. data/spec/lib/list/base_spec.rb +18 -18
  378. data/spec/lib/list/column_spec.rb +4 -4
  379. data/spec/lib/list/filter_spec.rb +2 -2
  380. data/spec/lib/model/authentication_spec.rb +4 -4
  381. data/spec/lib/model/authorization_spec.rb +4 -4
  382. data/spec/lib/model/identifier_spec.rb +19 -18
  383. data/spec/lib/model/methods_spec.rb +1 -1
  384. data/spec/lib/model/naming_spec.rb +10 -10
  385. data/spec/lib/model/routing_spec.rb +14 -14
  386. data/spec/lib/model/serializer_spec.rb +1 -1
  387. data/spec/lib/outpost_spec.rb +5 -5
  388. data/spec/spec_helper.rb +7 -0
  389. data/spec/support/authentication_helper.rb +20 -0
  390. data/spec/support/authorization_helper.rb +13 -0
  391. metadata +632 -124
@@ -5,42 +5,64 @@
5
5
  #
6
6
  class outpost.Notification
7
7
  constructor: (@wrapper, @type, @message) ->
8
- @el = $("<div />", class: "alert alert-#{type}").html("#{message}")
8
+ @el = @_buildElement()
9
9
 
10
+ # Alias for #append
10
11
  render: ->
12
+ @append()
13
+
14
+ # Replaces the element.
15
+ # This is useful if you've changed the message or type.
16
+ rerender: ->
17
+ newEl = @_buildElement()
18
+ @el.replaceWith(newEl)
19
+ @el = newEl
20
+
21
+ # Append the element to the wrapper.
22
+ append: ->
11
23
  @wrapper.append @el
12
-
24
+
25
+ # Prepend the element to the wrapper.
13
26
  prepend: ->
14
27
  @wrapper.prepend @el
15
-
28
+
16
29
  # Replaces the wrapper's content with the alert
17
30
  replace: ->
18
31
  @wrapper.html @el
19
-
32
+
33
+ # Delegation for jQuery: @el.html("new text")
34
+ html: (html) ->
35
+ @el.html(html)
36
+
20
37
  # Delegation for jQuery: @el.is(":visible")
21
38
  isVisible: ->
22
39
  @el.is(":visible")
23
-
40
+
24
41
  # Delegation for jQuery: @el.show()
25
42
  show: ->
26
43
  @el.show()
27
-
44
+
28
45
  # Delegation for jQuery: @el.hide()
29
- hide: ->
46
+ hide: ->
30
47
  @el.hide()
31
-
48
+
32
49
  # Delegation for jQuery: @el.fadeIn()
33
50
  fadeIn: (speed=400, callback=null) ->
34
51
  @el.fadeIn(speed, callback?())
35
-
52
+
36
53
  # Delegation for jQuery: @el.fadeOut()
37
54
  fadeOut: (speed=400, callback=null) ->
38
55
  @el.fadeOut(speed, callback?())
39
-
56
+
40
57
  # Delegation for jQuery: @el.detach()
41
58
  detach: ->
42
59
  @el.detach()
43
-
60
+
44
61
  # Delegation for jQuery: @el.remove()
45
62
  remove: ->
46
63
  @el.remove()
64
+
65
+
66
+ # Builds an element based on the attributes.
67
+ _buildElement: ->
68
+ $("<div />", class: "alert alert-#{@type}").html("#{@message}")
@@ -6,13 +6,13 @@
6
6
  class outpost.Preview
7
7
  constructor: (@options) ->
8
8
  _t = @
9
-
9
+
10
10
  $("form #preview-submit a.js-preview-btn").on
11
11
  click: (event) ->
12
12
  event.preventDefault()
13
13
  target = $(@)
14
14
  form = target.closest("form")
15
-
15
+
16
16
  # Update any hidden textareas that are using CKEditor
17
17
  # Then serialize the form.
18
18
  if CKEDITOR?
@@ -27,7 +27,7 @@ class outpost.Preview
27
27
  url: "#{_t.options.baseUrl}/preview"
28
28
  data:
29
29
  data
30
-
30
+
31
31
  beforeSend: (jqXHR, settings) ->
32
32
  _t.openWindow(target.data("windowOptions"))
33
33
  _t.writeToWindow(JST['outpost/templates/loading']())
@@ -47,7 +47,7 @@ class outpost.Preview
47
47
  # If it already exists, just focus on it.
48
48
  openWindow: (options="")->
49
49
  if !@window or (@window and @window.closed)
50
- @window = window.open("", "preview",
50
+ @window = window.open("", "preview",
51
51
  "scrollbars=yes,menubar=no,location=no,directories=no,toolbar=no,#{options}")
52
52
  else
53
53
  @window.focus()
@@ -0,0 +1,13 @@
1
+ class outpost.Utilities
2
+ # Prevent forms from submitting when the "Enter"
3
+ # key is pressed inside of a text field
4
+ # Pass in an optional form ID to restrict it just to that form.
5
+ @preventEnterFromSubmittingForm: (formId='') ->
6
+ $("form#{formId} input[type=text]").on
7
+ keydown: (event) ->
8
+ key = event.keyCode || event.which
9
+
10
+ if key == 13 # Enter
11
+ event.stopPropagation()
12
+ event.preventDefault()
13
+ false
@@ -9,7 +9,7 @@ body, p {
9
9
  line-height: 14px;
10
10
  }
11
11
 
12
- small {
12
+ small {
13
13
  font-size: 11px;
14
14
  }
15
15
 
@@ -17,7 +17,7 @@ small {
17
17
  &.unstyled {
18
18
  padding: 0;
19
19
  }
20
-
20
+
21
21
  padding-left: 0;
22
22
  padding-right: 0;
23
23
  margin: 0;
@@ -40,25 +40,25 @@ small {
40
40
 
41
41
  .cms-nav {
42
42
  max-width: 820px;
43
-
43
+
44
44
  .grouper {
45
45
  display: inline-block;
46
46
  width: 400px;
47
47
  vertical-align: top;
48
48
  }
49
-
49
+
50
50
  li {
51
51
  clear: both;
52
52
  border-bottom: 1px solid $grayLighter;
53
-
53
+
54
54
  &:hover {
55
55
  background: $linkColor;
56
- &> a {
56
+ &> a {
57
57
  color: $white;
58
58
  text-decoration: none;
59
59
  }
60
60
  }
61
-
61
+
62
62
  &> a {
63
63
  clear: none;
64
64
  width: 285px;
@@ -73,14 +73,14 @@ small {
73
73
  color: #333333;
74
74
  white-space: nowrap;
75
75
  }
76
-
76
+
77
77
  .btn-links {
78
78
  display: inline-block;
79
79
  clear: both;
80
80
  vertical-align: bottom;
81
81
  margin-bottom: 3px;
82
82
  width: 60px;
83
-
83
+
84
84
  &> a {
85
85
  margin: 0px 2px;
86
86
  &.add { float: right; }
@@ -8,8 +8,8 @@
8
8
  form.simple_form {
9
9
  table.field-rows {
10
10
  td, th {
11
- text-align: left;
12
- padding: 5px 10px;
11
+ text-align: left;
12
+ padding: 5px 10px;
13
13
  }
14
14
 
15
15
  tbody tr { padding: 5px 0; }
@@ -21,7 +21,7 @@ form.simple_form {
21
21
  input.wide, textarea {
22
22
  @extend .span7;
23
23
  }
24
-
24
+
25
25
  input, textarea {
26
26
  &.span1 { @extend .span1; }
27
27
  &.span2 { @extend .span2; }
@@ -36,52 +36,61 @@ form.simple_form {
36
36
  &.span11 { @extend .span11; }
37
37
  &.span12 { @extend .span12; }
38
38
  }
39
-
39
+
40
40
  input.thin, textarea.thin {
41
41
  @extend .span2;
42
42
  }
43
-
43
+
44
44
  input.tiny {
45
45
  @extend .span1;
46
46
  }
47
-
47
+
48
48
  // For code inputs
49
49
  textarea.fixed-font, input.fixed-font {
50
50
  @include font-monospace($size: 11px);
51
51
  background: #000;
52
52
  color: #FFFF00;
53
53
  }
54
-
54
+
55
55
  textarea {
56
56
  &.tiny { height: 100px; }
57
57
  &.short { height: 200px; }
58
58
  &.tall { height: 600px; }
59
59
  }
60
-
61
- fieldset legend {
60
+
61
+ fieldset {
62
+ margin-bottom: 40px;
63
+
64
+ legend {
65
+ background: #000;
66
+ color: #fff;
67
+ padding: 0 5px;
62
68
  cursor: pointer;
69
+ line-height: 1.2em; // override bootstrap
70
+
63
71
  &:hover {
64
- background: #ffffcc;
72
+ background: #666;
65
73
  }
74
+ }
66
75
  }
67
-
76
+
68
77
  .counter-notify {
69
78
  @extend .span7;
70
79
  }
71
-
80
+
72
81
  .inline { // Extend bootstrap .inline
73
82
  display: inline-block;
74
83
  margin-right: 5px;
75
84
  input[type=text] { @extend .span2; }
76
85
  input[type=checkbox] { width: 20px; }
77
-
86
+
78
87
  .controls {
79
88
  margin-left: 10px;
80
89
  }
81
90
  }
82
-
91
+
83
92
  .control-group.vertical {
84
- label {
93
+ label {
85
94
  float: none;
86
95
  text-align: left;
87
96
  }
@@ -114,3 +123,7 @@ form.simple_form {
114
123
  .select2-drop {
115
124
  z-index: 4;
116
125
  }
126
+
127
+ .has-many-add-link {
128
+ @extend .btn;
129
+ }
@@ -5,9 +5,9 @@
5
5
  .select2-container {
6
6
  min-width: 130px;
7
7
  }
8
-
8
+
9
9
  .filter.label {
10
- display: inline-block;
10
+ display: inline-block;
11
11
  margin-right: 10px;
12
12
  }
13
13
 
@@ -1,4 +1,4 @@
1
- .transparent {
1
+ .transparent {
2
2
  @include opacity(0.2);
3
3
  @include transition(.1s linear all);
4
4
  }
@@ -4,12 +4,12 @@ module Outpost
4
4
  include Outpost::Controller::Authorization
5
5
  include Outpost::Controller::Authentication
6
6
  include Outpost::Controller::CustomErrors
7
-
7
+
8
8
  abstract!
9
9
  protect_from_forgery
10
10
  before_filter :root_breadcrumb
11
11
  before_filter :set_sections
12
-
12
+
13
13
  #------------------------
14
14
  # Always want to add this link to the Breadcrumbs
15
15
  def root_breadcrumb
@@ -34,7 +34,9 @@ module Outpost
34
34
  #----------------------
35
35
 
36
36
  def render_preview_validation_errors(record)
37
- render "/outpost/shared/_preview_errors", layout: "outpost/minimal", locals: { record: record }
37
+ render "/outpost/shared/_preview_errors",
38
+ :layout => "outpost/minimal",
39
+ :locals => { record: record }
38
40
  end
39
41
  end
40
42
  end
@@ -1,6 +1,7 @@
1
1
  class Outpost::ErrorsController < Outpost::BaseController
2
2
  def not_found
3
- render_error(404, ActionController::RoutingError.new("Not Found")) and return
3
+ render_error(404, ActionController::RoutingError.new("Not Found"))
4
+ return
4
5
  end
5
6
 
6
7
  def trigger_error
@@ -4,7 +4,7 @@ module Outpost
4
4
  respond_to :html, :json, :js
5
5
 
6
6
  #-----------------
7
-
7
+
8
8
  def extend_breadcrumbs_with_resource_root
9
9
  breadcrumb model.to_title.pluralize, model.admin_index_path
10
10
  end
@@ -4,23 +4,28 @@ module Outpost
4
4
  before_filter :get_authentication_attribute
5
5
 
6
6
  respond_to :html
7
-
7
+
8
8
  def new
9
9
  redirect_to outpost_root_path if current_user
10
10
  end
11
-
11
+
12
12
  def create
13
- if user = Outpost.user_class.authenticate(params[@authentication_attribute], params[:password])
13
+ if user = Outpost.user_class.authenticate(
14
+ params[@authentication_attribute], params[:password])
15
+
14
16
  session[:user_id] = user.id
15
17
  user.update_column(:last_login, Time.now)
16
- redirect_to session[:return_to] || outpost_root_path, notice: "Logged in."
18
+
19
+ redirect_to session[:return_to] || outpost_root_path,
20
+ notice: "Logged in."
21
+
17
22
  session[:return_to] = nil
18
23
  else
19
24
  flash.now[:alert] = "Invalid login information."
20
25
  render :new
21
26
  end
22
27
  end
23
-
28
+
24
29
  def destroy
25
30
  @current_user = nil
26
31
  session[:user_id] = nil
@@ -1,9 +1,9 @@
1
1
  module AuthorizationHelper
2
- # Public: Block out whole chunks of code based on permissions.
2
+ # Public: Block out whole chunks of code based on permissions.
3
3
  #
4
- # resource - (Class) The model that the user must have permission
4
+ # resource - (Class) The model that the user must have permission
5
5
  # to manage in order to see the block.
6
- # message - (String) The message to display if the user isn't
6
+ # message - (String) The message to display if the user isn't
7
7
  # authorized (default: "").
8
8
  # block - The block that will be captured if the user is authorized.
9
9
  # Should return a String.
@@ -1,15 +1,23 @@
1
1
  module ListHelper
2
+ ICON_DOWN = "icon-arrow-down"
3
+ ICON_UP = "icon-arrow-up"
4
+
5
+ BOOLEAN_BOOTSTRAP_MAP = {
6
+ true => { icon: "icon-white icon-ok", badge: "badge badge-success"},
7
+ false => { icon: "icon-white icon-remove", badge: "badge badge-important"}
8
+ }
9
+
2
10
  # Public: Renders the attribute for this column and record
3
11
  #
4
12
  # column - (Outpost::Column) The column object.
5
13
  # record - (Object) The ActiveRecord object being listed.
6
- #
14
+ #
7
15
  # Examples
8
- #
9
- # column.attribute # => :published_at
16
+ #
17
+ # column.attribute # => :published_at
10
18
  # <%= render_attribute(column, @post) %>
11
19
  # # => 2013-03-13 11:39:37 -0700
12
- #
20
+ #
13
21
  # Returns String of the rendered attribute.
14
22
  def render_attribute(column, record)
15
23
  if column.display.is_a? Proc
@@ -29,13 +37,13 @@ module ListHelper
29
37
  # If we have explicitly defined a helper for this attribute, use it.
30
38
  display_helper = :"display_#{column.attribute}"
31
39
 
32
- elsif record.class.respond_to?(:reflect_on_association) &&
40
+ elsif record.class.respond_to?(:reflect_on_association) &&
33
41
  record.class.reflect_on_association(column.attribute.to_sym)
34
42
  # For associations, display the associated object's #to_title
35
43
  display_helper = :display_record
36
-
37
- elsif record.class.respond_to?(:columns_hash) &&
38
- (ar_column = record.class.columns_hash[column.attribute]) &&
44
+
45
+ elsif record.class.respond_to?(:columns_hash) &&
46
+ (ar_column = record.class.columns_hash[column.attribute]) &&
39
47
  self.methods.include?(type_helper = :"display_#{ar_column.type}")
40
48
  # display_#{column_type} for generic display
41
49
  # Example: display_datetime
@@ -48,12 +56,18 @@ module ListHelper
48
56
 
49
57
  value = record.send(column.attribute)
50
58
  column._display_helper = display_helper
51
- send(display_helper, value)
59
+
60
+ if self.method(display_helper).arity == 2
61
+ send(display_helper, value, record)
62
+ else
63
+ send(display_helper, value)
64
+ end
52
65
  end
53
66
  end
54
67
 
68
+
55
69
  # Public: Format a DateTime for displaying in lists
56
- #
70
+ #
57
71
  # date - (DateTime) The date to be formatted
58
72
  #
59
73
  # Examples
@@ -66,6 +80,7 @@ module ListHelper
66
80
  format_date(date, format: :full_date)
67
81
  end
68
82
 
83
+
69
84
  # Public: Display the attribute or "[blank]" if not present
70
85
  #
71
86
  # attrib - (String) The attribute to display
@@ -87,6 +102,7 @@ module ListHelper
87
102
  attrib.present? ? attrib.to_s : content_tag(:em, fallback)
88
103
  end
89
104
 
105
+
90
106
  # Public: Display the attribute as a string.
91
107
  #
92
108
  # attrib - (String) The attribute to display.
@@ -101,22 +117,24 @@ module ListHelper
101
117
  attrib.to_s
102
118
  end
103
119
 
120
+
104
121
  # Public: Displays an String representation of the record using +#to_title+.
105
122
  #
106
123
  # record - (String) The associated record.
107
124
  #
108
125
  # Examples
109
- #
126
+ #
110
127
  # user = User.last
111
128
  # user.to_title # => "James Earl Jones"
112
129
  # display_record(User.last)
113
130
  # # => "James Earl Jones"
114
131
  #
115
132
  # Returns String representation of the passed-in record.
116
- def display_record(record)
117
- record.try(:to_title)
133
+ def display_record(associated_record)
134
+ associated_record.try(:to_title)
118
135
  end
119
-
136
+
137
+
120
138
  # Public: Display a formatted DateTime.
121
139
  #
122
140
  # datetime - (DateTime) The DateTime object to format.
@@ -130,7 +148,8 @@ module ListHelper
130
148
  def display_datetime(datetime)
131
149
  format_date(datetime, format: :full_date, time: true)
132
150
  end
133
-
151
+
152
+
134
153
  # Public: Display a boolean attribute as a sweet icon.
135
154
  #
136
155
  # boolean - (boolean) true or false
@@ -142,72 +161,69 @@ module ListHelper
142
161
  # # => <i class="icon-white icon-ok"></i>
143
162
  # # => </span>
144
163
  #
145
- # Returns String of the appropriate icon.
164
+ # Returns String of the appropriate icon.
146
165
  def display_boolean(boolean)
147
- content_tag(:span,
148
- content_tag(:i, "", class: boolean_bootstrap_map[!!boolean][:icon]),
149
- class: boolean_bootstrap_map[!!boolean][:badge])
166
+ content_tag(:span,
167
+ content_tag(:i, "", class: BOOLEAN_BOOTSTRAP_MAP[!!boolean][:icon]),
168
+ class: BOOLEAN_BOOTSTRAP_MAP[!!boolean][:badge])
150
169
  end
151
170
 
152
- # Private: Map for booleans to Bootstrap classes.
153
- #
154
- # Returns Hash
155
- def boolean_bootstrap_map
156
- {
157
- true => { icon: "icon-white icon-ok", badge: "badge badge-success"},
158
- false => { icon: "icon-white icon-remove", badge: "badge badge-important"}
159
- }
160
- end
161
171
 
162
172
  # Public: Maps the passed-in sort mode (asc, desc) to the appropriate
163
173
  # Bootstrap Glyphicons (icon-arrow-up, icon-arrow-down respectively)
164
174
  #
165
- # sort_mode - (String) The sort mode ("asc", "desc").
175
+ # direction - (String) "ASC", "DESC"
166
176
  #
167
177
  # Examples
168
178
  #
169
- # <i class="<%= sort_mode_icon('asc') %>">
179
+ # <i class="<%= direction_icon('ASC') %>">
170
180
  # # => <i class="icon-arrow-up">
171
181
  #
172
182
  # Returns String of the icon class.
173
- def sort_mode_icon(sort_mode)
174
- case sort_mode
175
- when "desc" then "icon-arrow-down"
176
- when "asc" then "icon-arrow-up"
183
+ def direction_icon(direction)
184
+ direction = direction.to_s.upcase
185
+
186
+ case direction
187
+ when Outpost::DESCENDING then ICON_DOWN
188
+ when Outpost::ASCENDING then ICON_UP
177
189
  end
178
190
  end
179
191
 
180
- # Public: Which sort mode to switch to. Useful for creating links to
192
+
193
+ # Public: Which sort mode to switch to. Useful for creating links to
181
194
  # switch the sort mode or change the list order.
182
195
  #
183
- # column - (Outpost::Column) The column on which the sort
196
+ # column - (Outpost::Column) The column on which the sort
184
197
  # will be performed.
185
- # current_order - (String) The attribute that is currently being
198
+ # current_attribute - (String) The attribute that is currently being
186
199
  # ordered.
187
- # current_sort_mode - (String) The current sort mode ("asc", "desc").
200
+ # current_direction - (String) The current sort mode ("ASC", "DESC").
188
201
  #
189
202
  # Examples
190
- #
203
+ #
191
204
  # <%= link_to column.header, request.parameters.merge({
192
- # :sort_mode => switch_sort_mode(
193
- # column, current_order, current_sort_mode
205
+ # :direction => switch_direction(
206
+ # column, current_attribute, current_direction
194
207
  # )
195
208
  # }) %>
196
209
  #
197
210
  # Returns String of the sort mode, "asc" or "desc"
198
- def switch_sort_mode(column, current_order, current_sort_mode)
199
- if column.attribute == current_order
200
- case current_sort_mode
201
- when "asc" then "desc"
202
- when "desc" then "asc"
203
- else column.default_sort_mode
211
+ def switch_direction(column, current_attribute, current_direction)
212
+ direction = current_direction.to_s.upcase
213
+
214
+ if column.attribute == current_attribute
215
+ case direction
216
+ when Outpost::ASCENDING then Outpost::DESCENDING
217
+ when Outpost::DESCENDING then Outpost::ASCENDING
218
+ else column.default_order_direction
204
219
  end
205
220
  else
206
- column.default_sort_mode
221
+ column.default_order_direction
207
222
  end
208
223
  end
209
224
 
210
- # Public: Generate a CSS class for the column. If the column represents
225
+
226
+ # Public: Generate a CSS class for the column. If the column represents
211
227
  # an association, the class will be "column-association".
212
228
  #
213
229
  # model - (Class) The ActiveRecord model.
@@ -227,6 +243,7 @@ module ListHelper
227
243
  end
228
244
  end
229
245
 
246
+
230
247
  # Public: Generate a CSS class for this attribute
231
248
  #
232
249
  # attribute - (String) The attribute.
@@ -240,4 +257,10 @@ module ListHelper
240
257
  def column_attribute_class(attribute)
241
258
  "column-#{attribute}".parameterize
242
259
  end
260
+
261
+
262
+ # Public: Call the BOOLEAN_BOOTSTRAP_MAP
263
+ def boolean_bootstrap_map
264
+ BOOLEAN_BOOTSTRAP_MAP
265
+ end
243
266
  end