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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bfef55a2fe56f15367da92452ef73abbf321a011
4
+ data.tar.gz: a6d770b0dede836f75a1f71ed8b8df6a5fbc750c
5
+ SHA512:
6
+ metadata.gz: c529623b4c5e19170c93276a6e81a80c972f5f227ee3a445db9f3fba0af29b252d4fd2bab301ccff0cefb43c15364d5fe7b4666ed9ac0ff21f012f92ac9fe627
7
+ data.tar.gz: 808a4605e0a650b8dba66cb6bd9e13fa0661aa1a869fe32295642eb70606017cd198885706535bfeac266610e84e1a7626eeab4f912fc5bf8d49fad36b99bb11
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
1
  # Outpost
2
+ ![Outpost Sign](http://i.imgur.com/NWfpNk5.jpg)
3
+
2
4
  [![Build Status](https://travis-ci.org/SCPR/outpost.png)](https://travis-ci.org/SCPR/outpost)
3
5
 
4
6
  A Rails Engine for quickly standing up a CMS for a Newsroom.
@@ -83,7 +85,7 @@ end
83
85
 
84
86
  Note that this gem doesn't provide any routes for you. It is expected that you'll want to use the path globbing to render Outpost-style 404's inside of Outpost (rather than your application's 404 page), so it gets too messy and complicated to try to combine your routes with path globbing.
85
87
 
86
- You'll want to put this at the bottom of you `outpost` namespace in your routes:
88
+ You'll want to put this at the bottom of your `outpost` namespace in your routes:
87
89
 
88
90
  ```ruby
89
91
  root to: 'home#dashboard'
@@ -276,6 +278,19 @@ resources :stories, concerns: [:previewable]
276
278
  ```
277
279
 
278
280
 
281
+ ### Utilities
282
+
283
+ #### Prevent the `enter` key from submitting your forms
284
+ On some pages, like New and Edit, we don't want the "Enter" key to submit the
285
+ form. You can prevent this by adding:
286
+
287
+ ```javascript
288
+ <script>outpost.Utilities.preventEnterFromSubmittingForm("#edit_blog_entry");</script>
289
+ ```
290
+
291
+ The form ID argument is optional. By default it will target all forms on the page.
292
+
293
+
279
294
  #### More documentation to come.
280
295
 
281
296
  ## Todo
@@ -293,3 +308,6 @@ make them.
293
308
  Fork it, make your changes, and send me a pull request.
294
309
 
295
310
  Run tests with `bundle exec rake test`
311
+
312
+
313
+ ![Outpost](http://i.imgur.com/cU24Ylh.png)
data/Rakefile CHANGED
@@ -2,21 +2,9 @@
2
2
  RAKED = true
3
3
 
4
4
  require 'bundler/setup'
5
- #require 'rdoc/task'
6
5
  require 'rspec/core/rake_task'
7
6
  require 'combustion'
8
7
 
9
- # RDoc::Task.new(:rdoc) do |rdoc|
10
- # rdoc.rdoc_dir = 'rdoc'
11
- # rdoc.title = 'Outpost'
12
- # rdoc.markup = 'tomdoc'
13
- # rdoc.options << '--line-numbers'
14
- # rdoc.rdoc_files.include('README.md')
15
- # rdoc.rdoc_files.include('lib/**/*.rb')
16
- # rdoc.rdoc_files.include('app/helpers/**/*.rb')
17
- # rdoc.rdoc_files.include('app/models/**/*.rb')
18
- # end
19
-
20
8
  Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each { |f| load f }
21
9
 
22
10
  Bundler.require :default, :test
@@ -16,7 +16,6 @@
16
16
  //= require bootstrap-scrollspy
17
17
  //= require bootstrap-alert
18
18
  //= require bootstrap-affix
19
- //= require bootstrap-tooltip
20
19
  //= require bootstrap-datepicker
21
20
 
22
21
  //= require outpost/base
@@ -30,3 +29,4 @@
30
29
  //= require outpost/preview
31
30
  //= require outpost/index_manager
32
31
  //= require outpost/global_plugins
32
+ //= require outpost/utilities
@@ -12,11 +12,11 @@ class outpost.AutoSlugField
12
12
  DefaultOptions:
13
13
  titleClass: ".sluggable"
14
14
  maxLength: 50
15
-
15
+
16
16
  constructor: (options={}) ->
17
17
  @options = _.defaults options, @DefaultOptions
18
18
 
19
- # Find the sluggable title field - if it doesn't
19
+ # Find the sluggable title field - if it doesn't
20
20
  # exist then we can't auto-generate a slug
21
21
  @titleField = $(@options.titleClass)[0]
22
22
 
@@ -25,7 +25,7 @@ class outpost.AutoSlugField
25
25
  @maxLength = @options.maxLength
26
26
  @button = $ JST['outpost/templates/slug_generate_button']()
27
27
 
28
- # If we found a matching field,
28
+ # If we found a matching field,
29
29
  # render the generate button and add it after the slug field
30
30
  @slugField.after(@button)
31
31
  @button.on
@@ -37,12 +37,12 @@ class outpost.AutoSlugField
37
37
  true
38
38
 
39
39
  #------------------
40
-
40
+
41
41
  updateSlug: (value) ->
42
42
  @slugField.val @slugify(value)
43
-
43
+
44
44
  #------------------
45
-
45
+
46
46
  slugify: (str) ->
47
47
  str.toLowerCase()
48
48
  .replace(/\s+/g, "-") # Spaces -> `-`
@@ -5,7 +5,7 @@ $ ->
5
5
 
6
6
  ##
7
7
  # DateTimeInput
8
- #
8
+ #
9
9
  # Turns simple textfields (for datetime attributes) into
10
10
  # awesome timetime picker things.
11
11
  #
@@ -15,13 +15,13 @@ class outpost.DateTimeInput
15
15
  @buildDateTimeInputs: (els) ->
16
16
  for wrapper in $("div.datetime", els)
17
17
  new outpost.DateTimeInput(wrapper: wrapper)
18
-
18
+
19
19
  @buildDateInputs: (els) ->
20
20
  for wrapper in $("div.date", els)
21
21
  new outpost.DateTimeInput(wrapper: wrapper, time: false, field: "input.date")
22
-
22
+
23
23
  #-----------------------
24
-
24
+
25
25
  DefaultOptions:
26
26
  time: true
27
27
  dateTemplate: JST["outpost/templates/date_field"]
@@ -47,10 +47,10 @@ class outpost.DateTimeInput
47
47
  @id = @field.attr("id")
48
48
  @dateId = "#{@id}_date"
49
49
  @timeId = "#{@id}_time"
50
-
50
+
51
51
  # Hide the field since we don't want anybody editing it directly
52
52
  @field.hide()
53
-
53
+
54
54
  # Render the templates
55
55
  # Prepend time first so it's second
56
56
  @controls.prepend(@options.timeTemplate(time_id: @timeId, time_format: @options.timeFormat)) if @time
@@ -67,17 +67,17 @@ class outpost.DateTimeInput
67
67
  if @field.val()
68
68
  @dateEl.val @getDate(@options.dateFormat)
69
69
  @timeEl.val @getDate(@options.timeFormat) if @time
70
-
70
+
71
71
  # Make the dateEl a datepicker
72
72
  @dateEl.datepicker(autoclose: true, format: @options.dateFormat.toLowerCase())
73
-
73
+
74
74
  # Fill in hidden text field when visible field is changed
75
75
  @timestampEls.on
76
76
  change: (event) => (@field.trigger "update")
77
77
 
78
78
  @field.on
79
79
  update: => (@setDate(@dateEl.val(), @timeEl.val() if @time))
80
-
80
+
81
81
  # Fill in visible fields with right now time,
82
82
  # and trigger the "update" event on field hidden field
83
83
  @populateIcons.on
@@ -85,7 +85,7 @@ class outpost.DateTimeInput
85
85
  @populateDate(@dateEl, @options.dateFormat)
86
86
  @populateDate(@timeEl, @options.timeFormat) if @time
87
87
  @field.trigger "update"
88
-
88
+
89
89
  # Populate a visible field with a date human-readable date string
90
90
  populateDate: (el, format) ->
91
91
  date = moment().format(format)
@@ -95,14 +95,14 @@ class outpost.DateTimeInput
95
95
  getDate: (format) ->
96
96
  date = Date.parse(@field.val())
97
97
  moment(date).format(format) if date
98
-
98
+
99
99
  # Set value of hidden field to a real date
100
100
  setDate: (date, time="") ->
101
101
  date = moment(Date.parse("#{date} #{time}"))
102
102
  console.log "date set to", date
103
-
103
+
104
104
  if date
105
- formatted = date.format(@options.dbFormat)
105
+ formatted = date.format(@options.dbFormat)
106
106
  @field.val(formatted)
107
107
  else
108
108
  @field.val("")
@@ -7,7 +7,7 @@ $ ->
7
7
  fuzziness = el.attr("data-fuzziness")
8
8
  new outpost.FieldCounter(el, target: target, fuzziness: fuzziness)
9
9
 
10
- ##
10
+ ##
11
11
  # FieldCounter
12
12
  # To turn a field into a field counter, add three attributes:
13
13
  #
@@ -15,7 +15,7 @@ $ ->
15
15
  # data-target="50" # Perfect length
16
16
  # data-fuzziness="10" # Lee-way in either direction (inclusive)
17
17
  #
18
- # Anything spanning the range of
18
+ # Anything spanning the range of
19
19
  #
20
20
  # `(target - fuzziness) through (target + fuzziness)`
21
21
  #
@@ -32,7 +32,7 @@ class outpost.FieldCounter
32
32
  counterClass: "counter-notify"
33
33
  counterWrapper: ".controls" # The element to which the counter will be prepended
34
34
  counterStyle: "padding: 3px; margin: 0 0 2px 0;"
35
-
35
+
36
36
  constructor: (@el, options={}) ->
37
37
  @options = _.defaults options, @DefaultOptions
38
38
 
@@ -40,22 +40,22 @@ class outpost.FieldCounter
40
40
  @field = $("input, textarea", @el)
41
41
  @counterEl = $("<div />", class: @options.counterClass, style: @options.counterStyle)
42
42
  $(@options.counterWrapper, @el).prepend @counterEl
43
-
43
+
44
44
  # Setup attributes
45
45
  @count = 0
46
46
  @target = parseInt(@options.target)
47
47
  @fuzziness = parseInt(@options.fuzziness)
48
48
  @rangeLow = @target - @fuzziness
49
49
  @rangeHigh = @target + @fuzziness
50
-
50
+
51
51
  @inRangeClass = @options.inRangeClass
52
52
  @outOfRangeClass = @options.outOfRangeClass
53
-
53
+
54
54
  # Register listeners
55
55
  @field.on
56
56
  keyup: (event) =>
57
57
  @updateCount($(event.target).val().length)
58
-
58
+
59
59
  @el.on
60
60
  updateCounter: (event, count) =>
61
61
  @updateText(count)
@@ -63,25 +63,25 @@ class outpost.FieldCounter
63
63
 
64
64
  # Set the count on initialize
65
65
  @updateCount(@field.val().length)
66
-
66
+
67
67
  #--------------
68
68
 
69
69
  inRange: ->
70
70
  @rangeLow <= @count and @count <= @rangeHigh
71
-
71
+
72
72
  #--------------
73
-
73
+
74
74
  updateCount: (length) ->
75
75
  @count = length
76
76
  @el.trigger "updateCounter", @count
77
-
77
+
78
78
  #--------------
79
-
79
+
80
80
  updateText: (count) ->
81
81
  @counterEl.html("<strong>Optimal Length:</strong> #{count} of #{@target} (+/- #{@fuzziness})")
82
82
 
83
83
  #--------------
84
-
84
+
85
85
  updateColor: (count) ->
86
86
  if @inRange()
87
87
  @counterEl.removeClass(@outOfRangeClass)
@@ -89,5 +89,5 @@ class outpost.FieldCounter
89
89
  else
90
90
  @counterEl.removeClass(@inRangeClass)
91
91
  @counterEl.addClass(@outOfRangeClass)
92
-
93
-
92
+
93
+
@@ -6,7 +6,7 @@
6
6
  #
7
7
  class outpost.FieldManager
8
8
  constructor: ->
9
-
9
+
10
10
  $("fieldset.form-block legend").on
11
11
  click: (event) ->
12
12
  target = $(@)
@@ -22,12 +22,12 @@ class outpost.FieldManager
22
22
  time = new Date().getTime()
23
23
  regexp = new RegExp(target.data('id'), 'g')
24
24
  fields = $(target.data('fields').trim().replace(regexp, time))
25
-
25
+
26
26
  if buildTarget = target.data('build-target')
27
27
  $(buildTarget).append fields
28
28
  else
29
29
  target.before(fields)
30
-
30
+
31
31
  # Build any special fields.
32
32
  # TODO: Can we accomplish this with triggers?
33
33
  outpost.DateTimeInput.buildDateTimeInputs(fields)
@@ -1,23 +1,12 @@
1
- # Bootstrap things
1
+ # This file just turns on some simple behavior.
2
2
 
3
- # Scrollspy has to be initiated here,
4
- # instead of via data- attributes,
3
+ # Scrollspy has to be initiated here,
4
+ # instead of via data- attributes,
5
5
  # otherwise it's buggy. I don't know why.
6
6
  offset = 160
7
7
  nav = "#form-nav"
8
8
 
9
9
  $ ->
10
- # Prevent firefox from submitting a form when the "Enter"
11
- # key is pressed inside of a text field...
12
- $("form input[type=text]").on
13
- keydown: (event) ->
14
- key = event.keyCode || event.which
15
-
16
- if key == 13 # Enter
17
- event.stopPropagation()
18
- event.preventDefault()
19
- false
20
-
21
10
  # Select2
22
11
  # Set a blank placeholder for all selects.
23
12
  # Also allow clearing for any option.
@@ -30,18 +19,15 @@ $ ->
30
19
  $("select").not('[data-disable-select2="true"]').select2
31
20
  placeholder: " "
32
21
  allowClear: true
33
-
34
- # Tooltip
35
- $('[rel="tooltip"]').tooltip()
36
22
 
37
23
  # Affix
38
24
  # Fix the width for all of these elements
39
25
  $('[data-spy="affix"]').each ->
40
26
  $(@).width $(@).width()
41
27
 
42
- # For table headers, we want them to act cool so we have
28
+ # For table headers, we want them to act cool so we have
43
29
  # to treat them special. First fix the widths of the "th"
44
- # elements. Then make the top margin of the table the
30
+ # elements. Then make the top margin of the table the
45
31
  # same as the height of the header. Then move the header
46
32
  # up its height in pixels to give the appearance of
47
33
  # sitting on top.
@@ -84,4 +70,15 @@ $ ->
84
70
  $(@).on click: (event) ->
85
71
  window.location = href
86
72
 
73
+
74
+ # Disable the save buttons when the form is submitted.
75
+ # We can't actually disable the buttons (in the UI), because we need
76
+ # their information on the server side to figure out where
77
+ # to redirect. So instead we'll just register a callback that prevents
78
+ # the button from doing anything else after the form is submitted.
79
+ $('.js-content-form').one
80
+ submit: (event) ->
81
+ $(".js-save-btns button").on
82
+ click: (event) -> event.preventDefault();
83
+
87
84
  true
@@ -6,10 +6,10 @@
6
6
  class outpost.IndexManager
7
7
  DefaultOptions:
8
8
  cellFinder: "*[data-updatable='true']"
9
-
9
+
10
10
  constructor: (@baseUrl, options={}) ->
11
11
  @options = _.defaults options, @DefaultOptions
12
-
12
+
13
13
  for cell in $(@options.cellFinder)
14
14
  new outpost.QuickEditCell $(cell), @baseUrl
15
15
 
@@ -26,23 +26,23 @@ class outpost.QuickEditCell
26
26
  id: "data-id"
27
27
  highlightColor: "#dff0d8"
28
28
  highlightTime: 2000
29
-
29
+
30
30
  constructor: (@el, baseUrl, options={}) ->
31
31
  @options = _.defaults options, @defaults
32
-
32
+
33
33
  # Check values
34
34
  @value = null
35
35
  @keyup = false
36
-
36
+
37
37
  # Attributes
38
38
  @attribute = @el.attr(@options.attribute)
39
39
  @id = @el.attr(@options.id)
40
40
  @url = "#{baseUrl}/#{@id}"
41
-
41
+
42
42
  @ajaxOptions =
43
43
  dataType: 'json'
44
44
  url: @url
45
-
45
+
46
46
  @el.on
47
47
  click: (event) => @buildForm()
48
48
 
@@ -57,7 +57,7 @@ class outpost.QuickEditCell
57
57
  , 'input'
58
58
 
59
59
  #-------------
60
-
60
+
61
61
  buildForm: (event) ->
62
62
  $.ajax _.extend @ajaxOptions,
63
63
  type: "GET"
@@ -67,19 +67,19 @@ class outpost.QuickEditCell
67
67
  @el.find("input").focus()
68
68
 
69
69
  #-------------
70
-
70
+
71
71
  updateData: (event) ->
72
72
  input = $(event.target)
73
73
  value = input.val()
74
-
74
+
75
75
  if value is @value
76
76
  @el.html(value)
77
77
  @keyup = false
78
78
  return
79
-
79
+
80
80
  $.ajax _.extend @ajaxOptions,
81
81
  type: "PUT"
82
- data:
82
+ data:
83
83
  data_point:
84
84
  data_value: value
85
85
  success: (data, status, xhr) =>