type_station 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (441) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/type_station/editables/admin_bar.js.coffee +19 -48
  3. data/app/assets/javascripts/type_station/editables/entity_editor.js.coffee +152 -0
  4. data/app/assets/javascripts/type_station/editables/file_editor.js.coffee +46 -0
  5. data/app/assets/javascripts/type_station/editables/link_finder.js.coffee +26 -26
  6. data/app/assets/javascripts/type_station/editables/text_html_editor.js.coffee +63 -0
  7. data/app/assets/javascripts/type_station/init.js.coffee +8 -50
  8. data/app/assets/javascripts/type_station/lib/models.js.coffee +5 -5
  9. data/app/assets/javascripts/type_station/lib/ts.js.coffee +84 -1
  10. data/app/assets/stylesheets/type_station/admin_bar.css.scss +10 -16
  11. data/app/assets/stylesheets/type_station/base.css.scss +26 -51
  12. data/app/controllers/type_station/admin/entities_controller.rb +53 -0
  13. data/app/controllers/type_station/admin/pages_controller.rb +4 -50
  14. data/app/controllers/type_station/application_controller.rb +1 -11
  15. data/app/controllers/type_station/pages_controller.rb +5 -5
  16. data/app/models/type_station/content.rb +14 -1
  17. data/app/models/type_station/entity.rb +80 -0
  18. data/app/models/type_station/page.rb +8 -120
  19. data/app/presenters/type_station/admin_bar_presenter.rb +9 -0
  20. data/app/presenters/type_station/content_presenter.rb +12 -2
  21. data/app/presenters/type_station/page_presenter.rb +6 -39
  22. data/app/presenters/type_station/presenter.rb +71 -0
  23. data/app/views/type_station/toolbars/_admin_bar.html.haml +18 -123
  24. data/config/routes.rb +3 -1
  25. data/lib/type_station/blocks/base.rb +32 -20
  26. data/lib/type_station/blocks/entity.rb +56 -0
  27. data/lib/type_station/blocks/field.rb +34 -0
  28. data/lib/type_station/concerns/path_generator.rb +69 -0
  29. data/lib/type_station/concerns/templatable.rb +16 -0
  30. data/lib/type_station/concerns.rb +2 -0
  31. data/lib/type_station/configuration.rb +8 -4
  32. data/lib/type_station/dsl.rb +6 -7
  33. data/lib/type_station/engine.rb +6 -0
  34. data/lib/type_station/railtie.rb +3 -5
  35. data/lib/type_station/version.rb +2 -2
  36. data/lib/type_station/view_helpers.rb +23 -86
  37. data/spec/dummy/app/helpers/another_name_helper.rb +1 -1
  38. data/spec/dummy/app/models/team.rb +3 -0
  39. data/spec/dummy/app/presenters/index_presenter.rb +18 -0
  40. data/spec/dummy/app/presenters/team_presenter.rb +7 -0
  41. data/spec/dummy/app/views/pages/index_other.html.erb +79 -78
  42. data/spec/dummy/config/initializers/config.rb +3 -3
  43. data/spec/dummy/config/mongoid.yml +2 -2
  44. data/spec/dummy/log/development.log +3229 -63846
  45. data/spec/dummy/tmp/cache/assets/development/sass/{d54c17bdece82ab7e34807e87c417af01a5b0646 → 5195863f2e60bebe518d97f94bb3d4b177b0b425}/chosen.css.scssc +0 -0
  46. data/spec/dummy/tmp/cache/assets/development/sass/631a1227c978d11ae414a23c82459b12296c5574/admin_bar.css.scssc +0 -0
  47. data/spec/dummy/tmp/cache/assets/development/sass/631a1227c978d11ae414a23c82459b12296c5574/base.css.scssc +0 -0
  48. data/spec/dummy/tmp/cache/assets/development/sass/{6fe6492bf5ccb83234e7598f9cf2dee000d6fd1d → d9d756bcf855b539202ff507923feaef562a86d9}/_ionicons-font.scssc +0 -0
  49. data/spec/dummy/tmp/cache/assets/development/sass/{6fe6492bf5ccb83234e7598f9cf2dee000d6fd1d → d9d756bcf855b539202ff507923feaef562a86d9}/_ionicons-icons.scssc +0 -0
  50. data/spec/dummy/tmp/cache/assets/development/sass/{6fe6492bf5ccb83234e7598f9cf2dee000d6fd1d → d9d756bcf855b539202ff507923feaef562a86d9}/_ionicons-variables.scssc +0 -0
  51. data/spec/dummy/tmp/cache/assets/development/sass/{6fe6492bf5ccb83234e7598f9cf2dee000d6fd1d → d9d756bcf855b539202ff507923feaef562a86d9}/ionicons.scssc +0 -0
  52. data/spec/dummy/tmp/cache/assets/development/sprockets/03faf403247b5c2b01bfc3b194c9a108 +0 -0
  53. data/spec/dummy/tmp/cache/assets/development/sprockets/{42a12b3c21e3f05a34cb05b0c63c690c → 04ce8830b8d9eb9869b4e717c72e4c77} +0 -0
  54. data/spec/dummy/tmp/cache/assets/development/sprockets/{ffa56cf66ebfb8bbe51b752fa5e854b7 → 05111c950181c5c7db004ab0537ad63a} +0 -0
  55. data/spec/dummy/tmp/cache/assets/development/sprockets/{12f3bf6fe9d52ff385ee5f0e1a94e256 → 06f720204faca086942ed12e58cc7e99} +0 -0
  56. data/spec/dummy/tmp/cache/assets/development/sprockets/{d11321573db03471f91362fca3d3c5c5 → 06fe7bcbc391b00c5a196a93f90ecabb} +0 -0
  57. data/spec/dummy/tmp/cache/assets/development/sprockets/07a3408841510f4fb1eb0ede33cdb028 +0 -0
  58. data/spec/dummy/tmp/cache/assets/development/sprockets/1057bd97781bd01e53c6be1c18815331 +0 -0
  59. data/spec/dummy/tmp/cache/assets/development/sprockets/{311ffc36d5a7e1d3216e672b3e57e7ed → 11a2e83f32c39554a1d8d1812fcfefa8} +0 -0
  60. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  61. data/spec/dummy/tmp/cache/assets/development/sprockets/1e7d8fa3d4680fd1b85b0881f495525f +0 -0
  62. data/spec/dummy/tmp/cache/assets/development/sprockets/21bece9bdb4b2b78355dfc15633484fb +0 -0
  63. data/spec/dummy/tmp/cache/assets/development/sprockets/{a37ae28c4ac4e0bc0e2cb4423c40b24c → 268002ee16dde5d8865159003c5b9f56} +0 -0
  64. data/spec/dummy/tmp/cache/assets/development/sprockets/{8bec81b5959299e431f5adfc6c410719 → 2b6923a6b24ec5ce8800fedede741151} +0 -0
  65. data/spec/dummy/tmp/cache/assets/development/sprockets/2bf3770399e96a6b30d1d1078739c1f0 +0 -0
  66. data/spec/dummy/tmp/cache/assets/development/sprockets/2e14a727c7ff43dcd32c2d15c7d4e49c +0 -0
  67. data/spec/dummy/tmp/cache/assets/development/sprockets/{3030c5140945ca6d88763e4f9136b93d → 2ed9e055cb4bc9748131e083298e90f3} +0 -0
  68. data/spec/dummy/tmp/cache/assets/development/sprockets/{5c2d0bbd303da757c44328df9bccedf7 → 2f14bda8290314a0fd6c175fcad55e69} +0 -0
  69. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  70. data/spec/dummy/tmp/cache/assets/development/sprockets/{985af24e0c117b294f64311bf0187513 → 2fbff71a6bc8ae2a4172de51e568ea3b} +0 -0
  71. data/spec/dummy/tmp/cache/assets/development/sprockets/{f566af7037e0e3042b19bd5ee11b21c4 → 305b28bd53201553c837a27834d3fee9} +0 -0
  72. data/spec/dummy/tmp/cache/assets/development/sprockets/{c0c85148a1307bb6d6a87139811da3ad → 318672b968af34804563871c8b1e1d23} +0 -0
  73. data/spec/dummy/tmp/cache/assets/development/sprockets/{0b495c71c71a2d087e00d9f77c89b537 → 3203d681677ab8bf95858a71dca72ad1} +0 -0
  74. data/spec/dummy/tmp/cache/assets/development/sprockets/{4d6d33dd083743a6d1e0d708c4e4e7aa → 333827a9cf72b750448f816161e1ecda} +0 -0
  75. data/spec/dummy/tmp/cache/assets/development/sprockets/{0d8f54d1682f575aec8f27993d3af45e → 34c2fc984403383284ed5696d70c010e} +0 -0
  76. data/spec/dummy/tmp/cache/assets/development/sprockets/{0c7b9a1778b05de10a66fde42c60b47c → 35191399e8ceb198f89ffa9a8e5e6d18} +0 -0
  77. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  78. data/spec/dummy/tmp/cache/assets/development/sprockets/{90c324b461b60cdeb6b549dbf932f162 → 3af1f1791459e78c28c4e7e55115168b} +0 -0
  79. data/spec/dummy/tmp/cache/assets/development/sprockets/412cf59ab3b41a364279e5d53ad68152 +0 -0
  80. data/spec/dummy/tmp/cache/assets/development/sprockets/{f7345825a6e023e880e9a0744a4896bd → 4440e4eecd7f5abe3a350795b7c562a3} +0 -0
  81. data/spec/dummy/tmp/cache/assets/development/sprockets/48d06b052d87bd96e9e9b8a50a69b18a +0 -0
  82. data/spec/dummy/tmp/cache/assets/development/sprockets/4c48023968030daffd8c05e4e1ea78bf +0 -0
  83. data/spec/dummy/tmp/cache/assets/development/sprockets/{7ef9b3c736e553151f79c509136b1c44 → 4d43e505f0233833295b19c57e3f51bb} +0 -0
  84. data/spec/dummy/tmp/cache/assets/development/sprockets/{b6cef25e5142cb56f70ca0a8d31f312e → 5374e389194ac8d6d65ecfcfb0659919} +0 -0
  85. data/spec/dummy/tmp/cache/assets/development/sprockets/{cf5014041f97c55eee7c67feddf11b81 → 5403ae64c2a793b44bcc6728afa05e81} +0 -0
  86. data/spec/dummy/tmp/cache/assets/development/sprockets/55e73132107a6039a07892904fb85b3f +0 -0
  87. data/spec/dummy/tmp/cache/assets/development/sprockets/57096386bc19c2ad35327c072821d712 +0 -0
  88. data/spec/dummy/tmp/cache/assets/development/sprockets/57a2ad49228767f4bdd4a7d12ab9fdeb +0 -0
  89. data/spec/dummy/tmp/cache/assets/development/sprockets/{db1a08b3c680b077476f767a8addb44b → 58db8276645522fa111c4a297a6b3252} +0 -0
  90. data/spec/dummy/tmp/cache/assets/development/sprockets/5963d34af3b79a722db1c029191b2127 +0 -0
  91. data/spec/dummy/tmp/cache/assets/development/sprockets/{da50fa3c24d736a5eb19bc107acd4ae7 → 5fd77f69e8769780727bcddc3bbef6da} +0 -0
  92. data/spec/dummy/tmp/cache/assets/development/sprockets/6527d2ff5eb008ef2a32f7796a6490d6 +0 -0
  93. data/spec/dummy/tmp/cache/assets/development/sprockets/{8438f80ca5340a65edcf7a37bde5d43d → 6694f57666543a152f6f95b772233bd3} +0 -0
  94. data/spec/dummy/tmp/cache/assets/development/sprockets/685c03a878584655eb4475b4cdacdd75 +0 -0
  95. data/spec/dummy/tmp/cache/assets/development/sprockets/6aad7e14a81065dffac7093aacf234f2 +0 -0
  96. data/spec/dummy/tmp/cache/assets/development/sprockets/6c54d2efe05a3f58e5194a546a67d7b3 +0 -0
  97. data/spec/dummy/tmp/cache/assets/development/sprockets/6e3a8b3faf7a8b9b6491dc8a5c1e8d23 +0 -0
  98. data/spec/dummy/tmp/cache/assets/development/sprockets/{f1567fa9088d43b2fb0f9a0caa1ed107 → 6eea7ea5e4bfeeb41ccc235189ffd18b} +0 -0
  99. data/spec/dummy/tmp/cache/assets/development/sprockets/{d4248f8b11c6b21abffed4a5e718722d → 722eee3ce416c20905dda68eab3d517e} +0 -0
  100. data/spec/dummy/tmp/cache/assets/development/sprockets/{56afaea2e164564be4d5f5bbc7f81050 → 7960910c69f2bcf82925d090b4745c83} +0 -0
  101. data/spec/dummy/tmp/cache/assets/development/sprockets/{740af710fe4125080680a8561398cd43 → 7f512b27e66494dd23baf2e5fb34b96a} +0 -0
  102. data/spec/dummy/tmp/cache/assets/development/sprockets/{e842f1fb8542889be369b76982f3157c → 80dca6b775b0c8c933ba3bd53864a11f} +0 -0
  103. data/spec/dummy/tmp/cache/assets/development/sprockets/82cfb0f0bcd16b930ec1befc0d5cd8b8 +0 -0
  104. data/spec/dummy/tmp/cache/assets/development/sprockets/83c193129690d0c85c5370d822c4da82 +0 -0
  105. data/spec/dummy/tmp/cache/assets/development/sprockets/83d012091edd332e8b52f58cf1a8aba5 +0 -0
  106. data/spec/dummy/tmp/cache/assets/development/sprockets/848f8022bef8c0160c31cfa94841c896 +0 -0
  107. data/spec/dummy/tmp/cache/assets/development/sprockets/{0d5a85a524a12561b8cfff4e8d06b332 → 85944b215ca6c0d1a1d7806605dfd545} +0 -0
  108. data/spec/dummy/tmp/cache/assets/development/sprockets/{570677a99f6abc19d74f793d5cb24f5f → 88c61205fb088e828eaf562152fb80e1} +0 -0
  109. data/spec/dummy/tmp/cache/assets/development/sprockets/{849593e0c4cb1f2e2b3f7941be4bfb17 → 895bfeb62235ec6bfdc13f057e975c50} +0 -0
  110. data/spec/dummy/tmp/cache/assets/development/sprockets/8a5150409eaf099549443d23d5d53c88 +0 -0
  111. data/spec/dummy/tmp/cache/assets/development/sprockets/8db596b50a3235e0956dfbc06ac6c990 +0 -0
  112. data/spec/dummy/tmp/cache/assets/development/sprockets/8f4346bc63f61c8274390947394eeeb7 +0 -0
  113. data/spec/dummy/tmp/cache/assets/development/sprockets/{79b7c5b4127ac19346c56dd224bf8b19 → 8feb7e7adc10eec24e0ab54bef0c0857} +0 -0
  114. data/spec/dummy/tmp/cache/assets/development/sprockets/{a87019c62b5fb3b3dc75db921d98ad59 → 95130b18f8c813f4fa587e14f232c241} +0 -0
  115. data/spec/dummy/tmp/cache/assets/development/sprockets/{98bae9585542e37b839b68b25937fdf6 → 963c4df95ae6a8d8e54c7fe89d702fff} +0 -0
  116. data/spec/dummy/tmp/cache/assets/development/sprockets/973acef0f44b868ef5c17c4d65d80ab0 +0 -0
  117. data/spec/dummy/tmp/cache/assets/development/sprockets/{ce5a41536c75e4bc37a5b0be19e9f786 → 98a60691ad77eb6c878a60773f6ca69a} +0 -0
  118. data/spec/dummy/tmp/cache/assets/development/sprockets/9a5b201b4dddc98127641bcf852a4ea8 +0 -0
  119. data/spec/dummy/tmp/cache/assets/development/sprockets/9eafacb2fca5506e20523d97e92f5251 +0 -0
  120. data/spec/dummy/tmp/cache/assets/development/sprockets/a0c3540cd0a5390bd8985db285d1574f +0 -0
  121. data/spec/dummy/tmp/cache/assets/development/sprockets/a17ca57bada5cb7cb8c1d0b10fbd9904 +0 -0
  122. data/spec/dummy/tmp/cache/assets/development/sprockets/{ff96189f6d2677d5fa7c400167c74874 → a1b319a55f70f85dbee50bcb28aa81d4} +0 -0
  123. data/spec/dummy/tmp/cache/assets/development/sprockets/{99fd048521a12239746f91aa138613bf → a51f09cb29d7bd6071434928f56887af} +0 -0
  124. data/spec/dummy/tmp/cache/assets/development/sprockets/{f084a3a159f23d2f0f9943c4a2e5f8e9 → a6195a184397922f6afd2e7bf3d4a7e7} +0 -0
  125. data/spec/dummy/tmp/cache/assets/development/sprockets/a8ecf10c3e4c97b944e10c2cb0931fd5 +0 -0
  126. data/spec/dummy/tmp/cache/assets/development/sprockets/{0b230f1bf23bd7b1392e34cacde00da0 → aa5deb52794e98d34cc0b868202211ee} +0 -0
  127. data/spec/dummy/tmp/cache/assets/development/sprockets/aa9f5420651d522078eadd9de8350d35 +0 -0
  128. data/spec/dummy/tmp/cache/assets/development/sprockets/{99a40b6133b9eaa016bd6cf01fff987a → aab1005ca95fedeee05cb5f8d06eaa6c} +0 -0
  129. data/spec/dummy/tmp/cache/assets/development/sprockets/{21f725a9b3479e57849414f8272a905b → ab1e4897ca815d147fb473e23bf35bd7} +0 -0
  130. data/spec/dummy/tmp/cache/assets/development/sprockets/{a87cf4d10d892fb23f2fc818d7ca7207 → afa9de4377b9615980b737000fc68a2a} +0 -0
  131. data/spec/dummy/tmp/cache/assets/development/sprockets/b1fc0c5413b58bf1bf40a04dcd687d18 +0 -0
  132. data/spec/dummy/tmp/cache/assets/development/sprockets/b3383c0b0b1d8449e7a9c742a544edb7 +0 -0
  133. data/spec/dummy/tmp/cache/assets/development/sprockets/b3b877cfd5c63c892cfe8c6248e3d003 +0 -0
  134. data/spec/dummy/tmp/cache/assets/development/sprockets/{cad829df95038ddc2958dab7e1b591ad → b401f905161e2ce92571718065d5e35c} +0 -0
  135. data/spec/dummy/tmp/cache/assets/development/sprockets/b62bf39167cc044d19958ff731ef6578 +0 -0
  136. data/spec/dummy/tmp/cache/assets/development/sprockets/bb1b5b9fd84c67b2b994666f8162e79b +0 -0
  137. data/spec/dummy/tmp/cache/assets/development/sprockets/bc7d25832d4cd5332bdf3ec19783ae76 +0 -0
  138. data/spec/dummy/tmp/cache/assets/development/sprockets/bcdec54b8cd89a231c20c7c45d8eca71 +0 -0
  139. data/spec/dummy/tmp/cache/assets/development/sprockets/{492de35b811aed43fc60de0227a5d0ab → bf1e850366946d51a864f66042acb16d} +0 -0
  140. data/spec/dummy/tmp/cache/assets/development/sprockets/c06990d2e8f15c9de915a7b33d17dac5 +0 -0
  141. data/spec/dummy/tmp/cache/assets/development/sprockets/c136f3c36aea515920f7a51809e79094 +0 -0
  142. data/spec/dummy/tmp/cache/assets/development/sprockets/{c0600b832214f9e16294a1c37c0c3f6e → c39ca879cd6484827df2dd7605577066} +0 -0
  143. data/spec/dummy/tmp/cache/assets/development/sprockets/c4b181c541556124b2275b0ae4a94461 +0 -0
  144. data/spec/dummy/tmp/cache/assets/development/sprockets/c7699aedd27ae409c1ccf0c02a7782fc +0 -0
  145. data/spec/dummy/tmp/cache/assets/development/sprockets/{ef7d0257e22920401b54d6662e627252 → c85e062576453cbe6504556843184e48} +0 -0
  146. data/spec/dummy/tmp/cache/assets/development/sprockets/ccc931022e80caf6ac008099f2589e7d +0 -0
  147. data/spec/dummy/tmp/cache/assets/development/sprockets/{a8e9ef7143431aa34568a350dad82af2 → cf5e51adf346ca56aee15b72f394fce9} +0 -0
  148. data/spec/dummy/tmp/cache/assets/development/sprockets/{b6f21db694cacb7f5bcbb93cf45f65ed → cf6bd170bc3f231ca9da6434bd53359b} +0 -0
  149. data/spec/dummy/tmp/cache/assets/development/sprockets/cfcaaf334e027f46a4eddee54f3e3b27 +0 -0
  150. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  151. data/spec/dummy/tmp/cache/assets/development/sprockets/d54b81fedb82c1d520b92cfd20e18ef5 +0 -0
  152. data/spec/dummy/tmp/cache/assets/development/sprockets/d5de77884a5b0a88b13f76a0d8d2075e +0 -0
  153. data/spec/dummy/tmp/cache/assets/development/sprockets/d63daaafe9be33950037e285fb142eb5 +0 -0
  154. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  155. data/spec/dummy/tmp/cache/assets/development/sprockets/ddf237d5e172776d2061090bbf8fc6a5 +0 -0
  156. data/spec/dummy/tmp/cache/assets/development/sprockets/{e736f7cd2394078039a3b11e6ee42802 → deb9cd21864c66e80861376afc6e17cd} +0 -0
  157. data/spec/dummy/tmp/cache/assets/development/sprockets/{d02809f043bce2445374a43a8f64b4b8 → e03864d9763609a4fa6412863f2c9a8c} +0 -0
  158. data/spec/dummy/tmp/cache/assets/development/sprockets/e080ee3bf59ec12040e4cabaa97dc241 +0 -0
  159. data/spec/dummy/tmp/cache/assets/development/sprockets/e1bc9024b810c879e24aa1de0f013358 +0 -0
  160. data/spec/dummy/tmp/cache/assets/development/sprockets/{147a08ea451b98ff5a28a0088b7d5c89 → e348418df158e4447a3120415eaeb3c5} +0 -0
  161. data/spec/dummy/tmp/cache/assets/development/sprockets/e39cb3a82453b50e888022543695b4e2 +0 -0
  162. data/spec/dummy/tmp/cache/assets/development/sprockets/e77bfcad61fabf7ed2d4dd21e881b8c8 +0 -0
  163. data/spec/dummy/tmp/cache/assets/development/sprockets/{a855b42a37290315d53e93434721869d → ea306a2a3565b22cd16bf45555e751b5} +0 -0
  164. data/spec/dummy/tmp/cache/assets/development/sprockets/eb1b637b8414e22b792fe2f3549283e3 +0 -0
  165. data/spec/dummy/tmp/cache/assets/development/sprockets/{e8d6c5a2e13578e611f85cd7acd0088f → ebfd318084bf0cbcc2ab7ee6bf5c306c} +0 -0
  166. data/spec/dummy/tmp/cache/assets/development/sprockets/{42a7cd7e7e7d73b1882a085a3ed212b5 → ef58d6e4cfadfdd86e4f38c165c82e0a} +0 -0
  167. data/spec/dummy/tmp/cache/assets/development/sprockets/f4205d4b499b80a483c15c2408be1874 +0 -0
  168. data/spec/dummy/tmp/cache/assets/development/sprockets/{7316e0f7a256fd92f78a590981226fbe → f4a54e3803a4dbd2339782565404ffc1} +0 -0
  169. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  170. data/spec/dummy/tmp/cache/assets/development/sprockets/{d1e5823c113c9ee03e6c6d7773eb6fac → f7fe63074e55b9b04eef14bac17d6344} +0 -0
  171. data/spec/dummy/tmp/cache/assets/development/sprockets/f8a56681cc92b0dba2c2fdb753933a8b +0 -0
  172. data/spec/dummy/tmp/cache/assets/development/sprockets/{f14e64162f52a8d2d22ff9e1c1cc4fac → f9c9583263fc196b23e3630ecaca20ef} +0 -0
  173. data/spec/dummy/tmp/cache/assets/development/sprockets/fba3208cb66e48884d72c7875e5ff4ca +0 -0
  174. data/spec/dummy/tmp/cache/assets/development/sprockets/{6f7174fb7f1fbb8e01d382a128a979e8 → fee315e7956140b77895e8a26e569ca5} +0 -0
  175. data/spec/dummy/tmp/pids/server.pid +1 -0
  176. data/vendor/assets/javascripts/medium-editor.js +1919 -1125
  177. data/vendor/assets/stylesheets/medium-editor/medium-editor.css +39 -9
  178. data/vendor/assets/stylesheets/medium-editor/themes/bootstrap.css +3 -5
  179. data/vendor/assets/stylesheets/medium-editor/themes/bootstrap.min.css +1 -1
  180. data/vendor/assets/stylesheets/medium-editor/themes/default.css +6 -8
  181. data/vendor/assets/stylesheets/medium-editor/themes/default.min.css +1 -1
  182. data/vendor/assets/stylesheets/medium-editor/themes/flat.css +2 -2
  183. data/vendor/assets/stylesheets/medium-editor/themes/mani.css +4 -4
  184. data/vendor/assets/stylesheets/medium-editor/themes/mani.min.css +1 -1
  185. data/vendor/assets/stylesheets/medium-editor/themes/roman.css +4 -4
  186. data/vendor/assets/stylesheets/medium-editor/themes/roman.min.css +1 -1
  187. metadata +337 -669
  188. data/app/assets/javascripts/type_station/editables/edit_link.js.coffee +0 -90
  189. data/app/assets/javascripts/type_station/editables/edit_page.js.coffee +0 -116
  190. data/app/assets/javascripts/type_station/editables/file.js.coffee +0 -66
  191. data/app/assets/javascripts/type_station/editables/image.js.coffee +0 -68
  192. data/app/assets/javascripts/type_station/editables/new_page.js.coffee +0 -79
  193. data/app/assets/javascripts/type_station/editables/text_html.js.coffee +0 -66
  194. data/app/views/layouts/type_station/application.html.erb +0 -14
  195. data/lib/type_station/blocks/edit_link.rb +0 -27
  196. data/lib/type_station/blocks/edit_page.rb +0 -28
  197. data/lib/type_station/blocks/editable_file.rb +0 -19
  198. data/lib/type_station/blocks/editable_html.rb +0 -15
  199. data/lib/type_station/blocks/editable_image.rb +0 -19
  200. data/lib/type_station/blocks/editable_text.rb +0 -19
  201. data/lib/type_station/blocks/new_collection.rb +0 -15
  202. data/lib/type_station/blocks/new_page.rb +0 -19
  203. data/lib/type_station/blocks/static_link.rb +0 -31
  204. data/lib/type_station/blocks/stickable.rb +0 -23
  205. data/lib/type_station/helpers/edit.rb +0 -36
  206. data/lib/type_station/helpers/editable.rb +0 -37
  207. data/lib/type_station/helpers/new.rb +0 -25
  208. data/lib/type_station/helpers/utilities.rb +0 -40
  209. data/lib/type_station/helpers.rb +0 -2
  210. data/spec/dummy/log/test.log +0 -1380
  211. data/spec/dummy/tmp/cache/assets/development/sass/d51071614a47c21d9e7a31bac67dfe51fed9abe3/_buttons.scssc +0 -0
  212. data/spec/dummy/tmp/cache/assets/development/sass/d51071614a47c21d9e7a31bac67dfe51fed9abe3/_mixins.scssc +0 -0
  213. data/spec/dummy/tmp/cache/assets/development/sass/d51071614a47c21d9e7a31bac67dfe51fed9abe3/_variables.scssc +0 -0
  214. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_alerts.scssc +0 -0
  215. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_background-variant.scssc +0 -0
  216. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_border-radius.scssc +0 -0
  217. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_buttons.scssc +0 -0
  218. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_center-block.scssc +0 -0
  219. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_clearfix.scssc +0 -0
  220. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_forms.scssc +0 -0
  221. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_gradients.scssc +0 -0
  222. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_grid-framework.scssc +0 -0
  223. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_grid.scssc +0 -0
  224. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_hide-text.scssc +0 -0
  225. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_image.scssc +0 -0
  226. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_labels.scssc +0 -0
  227. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_list-group.scssc +0 -0
  228. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_nav-divider.scssc +0 -0
  229. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_nav-vertical-align.scssc +0 -0
  230. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_opacity.scssc +0 -0
  231. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_pagination.scssc +0 -0
  232. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_panels.scssc +0 -0
  233. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_progress-bar.scssc +0 -0
  234. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_reset-filter.scssc +0 -0
  235. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_resize.scssc +0 -0
  236. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_responsive-visibility.scssc +0 -0
  237. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_size.scssc +0 -0
  238. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_tab-focus.scssc +0 -0
  239. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_table-row.scssc +0 -0
  240. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_text-emphasis.scssc +0 -0
  241. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_text-overflow.scssc +0 -0
  242. data/spec/dummy/tmp/cache/assets/development/sass/e63a0fef5d60e74f917815e496f07ccb348b5adc/_vendor-prefixes.scssc +0 -0
  243. data/spec/dummy/tmp/cache/assets/development/sass/fde2fd9fd4415e2893f7c202128d5909c847645f/admin_bar.css.scssc +0 -0
  244. data/spec/dummy/tmp/cache/assets/development/sass/fde2fd9fd4415e2893f7c202128d5909c847645f/base.css.scssc +0 -0
  245. data/spec/dummy/tmp/cache/assets/development/sprockets/07d82d3c1e3632b7f4bf807c2965e13b +0 -0
  246. data/spec/dummy/tmp/cache/assets/development/sprockets/0825425ebf24766be13ebf4e696dc267 +0 -0
  247. data/spec/dummy/tmp/cache/assets/development/sprockets/0aa47ff15e22d0e74389460968c32717 +0 -0
  248. data/spec/dummy/tmp/cache/assets/development/sprockets/0b163fa81b2ba6f9e0a9d3e6164af7cd +0 -0
  249. data/spec/dummy/tmp/cache/assets/development/sprockets/0cbda04368ddbf6d761e788334075e7c +0 -0
  250. data/spec/dummy/tmp/cache/assets/development/sprockets/0dd8d5d73e593c919592d3d02deb62e8 +0 -0
  251. data/spec/dummy/tmp/cache/assets/development/sprockets/0e846d0579634bd3924d701ebcd09040 +0 -0
  252. data/spec/dummy/tmp/cache/assets/development/sprockets/127cceefef1ada19384ec7fec980c5ee +0 -0
  253. data/spec/dummy/tmp/cache/assets/development/sprockets/182d8b06dcdb4f799088741f553903d3 +0 -0
  254. data/spec/dummy/tmp/cache/assets/development/sprockets/1b64a5fd92110dbd078f4ea964e2d0ad +0 -0
  255. data/spec/dummy/tmp/cache/assets/development/sprockets/1d67ea254300e2a208df8f296477fca2 +0 -0
  256. data/spec/dummy/tmp/cache/assets/development/sprockets/1ff95c0ddc6f6687c044d2a11b8323eb +0 -0
  257. data/spec/dummy/tmp/cache/assets/development/sprockets/2155dbeb10a65c2519b49179b3bc6f3a +0 -0
  258. data/spec/dummy/tmp/cache/assets/development/sprockets/2535956b4e5e79e8fbd3d30f68de7024 +0 -0
  259. data/spec/dummy/tmp/cache/assets/development/sprockets/28ad54c6e5882957dd269b1b2a3c3c75 +0 -0
  260. data/spec/dummy/tmp/cache/assets/development/sprockets/29a7d8d0307a932153f20c48b57ecda1 +0 -0
  261. data/spec/dummy/tmp/cache/assets/development/sprockets/2d0ee72828e0dcbaf2390d3d67595461 +0 -0
  262. data/spec/dummy/tmp/cache/assets/development/sprockets/2d13dd9465026b66cce912e30e142020 +0 -0
  263. data/spec/dummy/tmp/cache/assets/development/sprockets/300f6f1e08668cacf691691df4d13889 +0 -0
  264. data/spec/dummy/tmp/cache/assets/development/sprockets/30e3d4f790a4234a26c7f74efba15a2e +0 -0
  265. data/spec/dummy/tmp/cache/assets/development/sprockets/33ba18d4294cbb074bd3afee4728e2b9 +0 -0
  266. data/spec/dummy/tmp/cache/assets/development/sprockets/3571d341c3629bb4c9034d2f924f34ac +0 -0
  267. data/spec/dummy/tmp/cache/assets/development/sprockets/3a3d03c0a92f21419e1e85991774a28b +0 -0
  268. data/spec/dummy/tmp/cache/assets/development/sprockets/3dea6de9e06b1e372ebf4790f5eecc48 +0 -0
  269. data/spec/dummy/tmp/cache/assets/development/sprockets/3e7667a45f81a73030337cb8afe0acc3 +0 -0
  270. data/spec/dummy/tmp/cache/assets/development/sprockets/4144b15d96ec80b5c7fb367b57aaeef3 +0 -0
  271. data/spec/dummy/tmp/cache/assets/development/sprockets/43c1381ebee89f30d22f80f305f78ee6 +0 -0
  272. data/spec/dummy/tmp/cache/assets/development/sprockets/450d192e072fd68fb5c20711bdd21c9e +0 -0
  273. data/spec/dummy/tmp/cache/assets/development/sprockets/4729c7f6ab6a91a079ab04a8f04e932b +0 -0
  274. data/spec/dummy/tmp/cache/assets/development/sprockets/48f052ab53e11ca42b15cc7f40fe2d4c +0 -0
  275. data/spec/dummy/tmp/cache/assets/development/sprockets/4c324a18fe6bf7dbf7a04cccbfdb366e +0 -0
  276. data/spec/dummy/tmp/cache/assets/development/sprockets/4fc791a177c880f50bf425e8d2862c20 +0 -0
  277. data/spec/dummy/tmp/cache/assets/development/sprockets/51c578f550b2fd1ff7a873dbcf75b75b +0 -0
  278. data/spec/dummy/tmp/cache/assets/development/sprockets/535f36c50d5b36ff83bc03bc6a19b8fc +0 -0
  279. data/spec/dummy/tmp/cache/assets/development/sprockets/539ac885f1ce2ff4f1d693223a77b74d +0 -0
  280. data/spec/dummy/tmp/cache/assets/development/sprockets/53ef9dcaf6b6ddcefceec48187797dc5 +0 -0
  281. data/spec/dummy/tmp/cache/assets/development/sprockets/55c2f55c27a62b998b8d33555158da53 +0 -0
  282. data/spec/dummy/tmp/cache/assets/development/sprockets/575f0b5d245887cf587b0169d6993308 +0 -0
  283. data/spec/dummy/tmp/cache/assets/development/sprockets/579b1a727fe5b55dfe450b0835c56a65 +0 -0
  284. data/spec/dummy/tmp/cache/assets/development/sprockets/5a806147b739da644a296d2def76c243 +0 -0
  285. data/spec/dummy/tmp/cache/assets/development/sprockets/5d79ea654842f86bec8702b02616c633 +0 -0
  286. data/spec/dummy/tmp/cache/assets/development/sprockets/60b14e8e4c0d91f7af9d162cf4c67a9c +0 -0
  287. data/spec/dummy/tmp/cache/assets/development/sprockets/61d7a0e99e49f7a9917d385223a97015 +0 -0
  288. data/spec/dummy/tmp/cache/assets/development/sprockets/623a22125c47f6f4391fd1a56e40b8a0 +0 -0
  289. data/spec/dummy/tmp/cache/assets/development/sprockets/65cf3864264ab5fd70d6e74a934adf8d +0 -0
  290. data/spec/dummy/tmp/cache/assets/development/sprockets/6b734dd1ce043b913eb812a20ea2d42f +0 -0
  291. data/spec/dummy/tmp/cache/assets/development/sprockets/6e0fcc860289a427d98aa4ee86bd12b7 +0 -0
  292. data/spec/dummy/tmp/cache/assets/development/sprockets/709e51f7191f25018b0012df4ff6389f +0 -0
  293. data/spec/dummy/tmp/cache/assets/development/sprockets/70dfe9a7b27467587b0d4d00a7e0f6fb +0 -0
  294. data/spec/dummy/tmp/cache/assets/development/sprockets/71e10ee69b177ab54cb6033385a77ef9 +0 -0
  295. data/spec/dummy/tmp/cache/assets/development/sprockets/735d50df5dc976a13b56aa81f5970298 +0 -0
  296. data/spec/dummy/tmp/cache/assets/development/sprockets/73939a29e193b5a1fad031fa75f94119 +0 -0
  297. data/spec/dummy/tmp/cache/assets/development/sprockets/73cc8ce397fbfe4408bcac87302a6952 +0 -0
  298. data/spec/dummy/tmp/cache/assets/development/sprockets/7cfbbb15a3f9dcb4a5ee988ea309504d +0 -0
  299. data/spec/dummy/tmp/cache/assets/development/sprockets/7efe4acab136927c0b1df06d7c1212cd +0 -0
  300. data/spec/dummy/tmp/cache/assets/development/sprockets/7f14b0b39c11df4f58e03d390b589547 +0 -0
  301. data/spec/dummy/tmp/cache/assets/development/sprockets/7fc9c7161658070c78790a28b4ff590f +0 -0
  302. data/spec/dummy/tmp/cache/assets/development/sprockets/825bd4dba50f1ea2c0ae5e8a3708119e +0 -0
  303. data/spec/dummy/tmp/cache/assets/development/sprockets/84822f25094f67b515ad5f452381dcb0 +0 -0
  304. data/spec/dummy/tmp/cache/assets/development/sprockets/85c54085eea77d703dd054b1adcf309d +0 -0
  305. data/spec/dummy/tmp/cache/assets/development/sprockets/85d858ed64f06543161931735cb77748 +0 -0
  306. data/spec/dummy/tmp/cache/assets/development/sprockets/85fe1c52386ac4419fdf124a22228a98 +0 -0
  307. data/spec/dummy/tmp/cache/assets/development/sprockets/8803d0a63bbf3fce683c968d4a900480 +0 -0
  308. data/spec/dummy/tmp/cache/assets/development/sprockets/887e2151ef4cd6e915fd9bfc27c41d7d +0 -0
  309. data/spec/dummy/tmp/cache/assets/development/sprockets/8b33a159429f95c8fbb14e5d45b01967 +0 -0
  310. data/spec/dummy/tmp/cache/assets/development/sprockets/8caeabedf4518243187dbf20bf76a0d8 +0 -0
  311. data/spec/dummy/tmp/cache/assets/development/sprockets/8e60a95e73cedfb4b58fbf6fc32564b3 +0 -0
  312. data/spec/dummy/tmp/cache/assets/development/sprockets/92c1d07e65b1251e6a9f62064f749658 +0 -0
  313. data/spec/dummy/tmp/cache/assets/development/sprockets/92d59399e3f951cc11721f03a2b328fd +0 -0
  314. data/spec/dummy/tmp/cache/assets/development/sprockets/966db607ae0e7aad72cf171b8fec537a +0 -0
  315. data/spec/dummy/tmp/cache/assets/development/sprockets/9a9290586c54792a989ea679f38ebc98 +0 -0
  316. data/spec/dummy/tmp/cache/assets/development/sprockets/9c6580777be29320c993da37d292fcae +0 -0
  317. data/spec/dummy/tmp/cache/assets/development/sprockets/9c8cd77db76e28f0a074573a72509ce9 +0 -0
  318. data/spec/dummy/tmp/cache/assets/development/sprockets/9d5a258ab9e431a1a7eaf931ed4c3fb3 +0 -0
  319. data/spec/dummy/tmp/cache/assets/development/sprockets/9d961151482903524be9a51e312c8d49 +0 -0
  320. data/spec/dummy/tmp/cache/assets/development/sprockets/a165e7cd7871ea0af12d29ef10193272 +0 -0
  321. data/spec/dummy/tmp/cache/assets/development/sprockets/a2b3a282d5d8a5c20444d1a27f70a61e +0 -0
  322. data/spec/dummy/tmp/cache/assets/development/sprockets/a539d3e91d5fb8eeb973ac8706bbf5c9 +0 -0
  323. data/spec/dummy/tmp/cache/assets/development/sprockets/ab4192212bd78e95967e5a716548236f +0 -0
  324. data/spec/dummy/tmp/cache/assets/development/sprockets/acbb40a3fca4d574f84a89894274b5ab +0 -0
  325. data/spec/dummy/tmp/cache/assets/development/sprockets/af97ed366de5933460d41b9198ddc99e +0 -0
  326. data/spec/dummy/tmp/cache/assets/development/sprockets/afad1821c4be2be037ae8672c21db00a +0 -0
  327. data/spec/dummy/tmp/cache/assets/development/sprockets/b0acb9e437685aa3f0c0a2ca751a04ce +0 -0
  328. data/spec/dummy/tmp/cache/assets/development/sprockets/b0b0cf6bca2dad4b85f30801d615eac4 +0 -0
  329. data/spec/dummy/tmp/cache/assets/development/sprockets/b1a982f644c0350cb843b63d69a9506f +0 -0
  330. data/spec/dummy/tmp/cache/assets/development/sprockets/b772142455a4c78005e67264e239e867 +0 -0
  331. data/spec/dummy/tmp/cache/assets/development/sprockets/b85e6623f6fed5c83a7a375ff15bdd79 +0 -0
  332. data/spec/dummy/tmp/cache/assets/development/sprockets/b89a0282f37737eb86781a8ddbdf14a3 +0 -0
  333. data/spec/dummy/tmp/cache/assets/development/sprockets/bc2f1083a88e2e7c4e88f13f025824ed +0 -0
  334. data/spec/dummy/tmp/cache/assets/development/sprockets/bcf0359847dcb2f9179c6a46248bcea5 +0 -0
  335. data/spec/dummy/tmp/cache/assets/development/sprockets/bd3113e1418cbc640eb6e1b06d486163 +0 -0
  336. data/spec/dummy/tmp/cache/assets/development/sprockets/c4e5a8fece2f70f43c6e7cc4a790def7 +0 -0
  337. data/spec/dummy/tmp/cache/assets/development/sprockets/c4ec64020d1ff391bab8c2f0bbc7cd02 +0 -0
  338. data/spec/dummy/tmp/cache/assets/development/sprockets/c501910d385d42ea0cf75ae3c4f220e6 +0 -0
  339. data/spec/dummy/tmp/cache/assets/development/sprockets/c7628a8a59ea560abb9213543333222c +0 -0
  340. data/spec/dummy/tmp/cache/assets/development/sprockets/cb80f61fc678a70e99e16156ae6e07d1 +0 -0
  341. data/spec/dummy/tmp/cache/assets/development/sprockets/cc9a378dda4e65e86b1f3fd522d019a1 +0 -0
  342. data/spec/dummy/tmp/cache/assets/development/sprockets/cdaf4cc6f0288db4f6fa5b8073ac6272 +0 -0
  343. data/spec/dummy/tmp/cache/assets/development/sprockets/cdedc95319572f0c3e36a3a5a044572d +0 -0
  344. data/spec/dummy/tmp/cache/assets/development/sprockets/d05d272f053261f2d5e3dcca85f19172 +0 -0
  345. data/spec/dummy/tmp/cache/assets/development/sprockets/d05d2c6ed489a61e2a9756430af9f48f +0 -0
  346. data/spec/dummy/tmp/cache/assets/development/sprockets/d07ab5a5474c0fb71b3bd351947707e5 +0 -0
  347. data/spec/dummy/tmp/cache/assets/development/sprockets/d1f0a2d6fd58a203f3ca66950c822c33 +0 -0
  348. data/spec/dummy/tmp/cache/assets/development/sprockets/d3a2586089547d98e033029b94eb86a5 +0 -0
  349. data/spec/dummy/tmp/cache/assets/development/sprockets/d9924e9691068558c4ce3a20bec7fea1 +0 -0
  350. data/spec/dummy/tmp/cache/assets/development/sprockets/da9349ff5720f218552184c8fef40d7a +0 -0
  351. data/spec/dummy/tmp/cache/assets/development/sprockets/dd9f84cc20227ad66bbd1f26bbc11ccc +0 -0
  352. data/spec/dummy/tmp/cache/assets/development/sprockets/de9d72cab443cce32e1d45e62d2b4c04 +0 -0
  353. data/spec/dummy/tmp/cache/assets/development/sprockets/e03c578b73cf9936edc84ff2b48c07da +0 -0
  354. data/spec/dummy/tmp/cache/assets/development/sprockets/e04691fd3eaee6408ac1d1b7fade69e6 +0 -0
  355. data/spec/dummy/tmp/cache/assets/development/sprockets/e40f49d676971d013ad991bdf2dc344b +0 -0
  356. data/spec/dummy/tmp/cache/assets/development/sprockets/e72700144fea9ebdc4813bc00f023fc7 +0 -0
  357. data/spec/dummy/tmp/cache/assets/development/sprockets/e9b5bc7c65d160f7e31993bbe7a05d63 +0 -0
  358. data/spec/dummy/tmp/cache/assets/development/sprockets/ebdd71d1c3cf34d7d174e5c1abb123b7 +0 -0
  359. data/spec/dummy/tmp/cache/assets/development/sprockets/ec22367449630f093cf0449cea0abdfd +0 -0
  360. data/spec/dummy/tmp/cache/assets/development/sprockets/f479b0a1614f114b61a63664e172dec1 +0 -0
  361. data/spec/dummy/tmp/cache/assets/development/sprockets/f6eeeb889d424f50b0f725d4656e0721 +0 -0
  362. data/spec/dummy/tmp/cache/assets/development/sprockets/f7c0e18cf77ef251a27e9ff91578fb47 +0 -0
  363. data/spec/dummy/tmp/cache/assets/development/sprockets/fa8cab89937bf25aa48b23445f1b4f64 +0 -0
  364. data/spec/dummy/tmp/cache/assets/development/sprockets/fc5de94b46d8aff03ec5355f912a9a81 +0 -0
  365. data/spec/dummy/tmp/cache/assets/development/sprockets/fd1cae0417fea68172ab7b747a1d6fd8 +0 -0
  366. data/spec/dummy/tmp/cache/assets/development/sprockets/fd2dacd118d6197c3a9325e2103abe7d +0 -0
  367. data/spec/dummy/tmp/cache/assets/development/sprockets/fe43b3c0b7d3233a250ce9c46342919c +0 -0
  368. data/spec/dummy/tmp/cache/assets/test/sass/fde2fd9fd4415e2893f7c202128d5909c847645f/admin_bar.css.scssc +0 -0
  369. data/spec/dummy/tmp/cache/assets/test/sass/fde2fd9fd4415e2893f7c202128d5909c847645f/base.css.scssc +0 -0
  370. data/spec/dummy/tmp/cache/assets/test/sprockets/0825425ebf24766be13ebf4e696dc267 +0 -0
  371. data/spec/dummy/tmp/cache/assets/test/sprockets/0b495c71c71a2d087e00d9f77c89b537 +0 -0
  372. data/spec/dummy/tmp/cache/assets/test/sprockets/0cbda04368ddbf6d761e788334075e7c +0 -0
  373. data/spec/dummy/tmp/cache/assets/test/sprockets/0d8f54d1682f575aec8f27993d3af45e +0 -0
  374. data/spec/dummy/tmp/cache/assets/test/sprockets/12f3bf6fe9d52ff385ee5f0e1a94e256 +0 -0
  375. data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  376. data/spec/dummy/tmp/cache/assets/test/sprockets/182d8b06dcdb4f799088741f553903d3 +0 -0
  377. data/spec/dummy/tmp/cache/assets/test/sprockets/1b64a5fd92110dbd078f4ea964e2d0ad +0 -0
  378. data/spec/dummy/tmp/cache/assets/test/sprockets/2155dbeb10a65c2519b49179b3bc6f3a +0 -0
  379. data/spec/dummy/tmp/cache/assets/test/sprockets/21f725a9b3479e57849414f8272a905b +0 -0
  380. data/spec/dummy/tmp/cache/assets/test/sprockets/2535956b4e5e79e8fbd3d30f68de7024 +0 -0
  381. data/spec/dummy/tmp/cache/assets/test/sprockets/28ad54c6e5882957dd269b1b2a3c3c75 +0 -0
  382. data/spec/dummy/tmp/cache/assets/test/sprockets/29a7d8d0307a932153f20c48b57ecda1 +0 -0
  383. data/spec/dummy/tmp/cache/assets/test/sprockets/2d13dd9465026b66cce912e30e142020 +0 -0
  384. data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  385. data/spec/dummy/tmp/cache/assets/test/sprockets/300f6f1e08668cacf691691df4d13889 +0 -0
  386. data/spec/dummy/tmp/cache/assets/test/sprockets/311ffc36d5a7e1d3216e672b3e57e7ed +0 -0
  387. data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  388. data/spec/dummy/tmp/cache/assets/test/sprockets/3a3d03c0a92f21419e1e85991774a28b +0 -0
  389. data/spec/dummy/tmp/cache/assets/test/sprockets/3dea6de9e06b1e372ebf4790f5eecc48 +0 -0
  390. data/spec/dummy/tmp/cache/assets/test/sprockets/4144b15d96ec80b5c7fb367b57aaeef3 +0 -0
  391. data/spec/dummy/tmp/cache/assets/test/sprockets/4729c7f6ab6a91a079ab04a8f04e932b +0 -0
  392. data/spec/dummy/tmp/cache/assets/test/sprockets/4c324a18fe6bf7dbf7a04cccbfdb366e +0 -0
  393. data/spec/dummy/tmp/cache/assets/test/sprockets/535f36c50d5b36ff83bc03bc6a19b8fc +0 -0
  394. data/spec/dummy/tmp/cache/assets/test/sprockets/55c2f55c27a62b998b8d33555158da53 +0 -0
  395. data/spec/dummy/tmp/cache/assets/test/sprockets/56afaea2e164564be4d5f5bbc7f81050 +0 -0
  396. data/spec/dummy/tmp/cache/assets/test/sprockets/570677a99f6abc19d74f793d5cb24f5f +0 -0
  397. data/spec/dummy/tmp/cache/assets/test/sprockets/579b1a727fe5b55dfe450b0835c56a65 +0 -0
  398. data/spec/dummy/tmp/cache/assets/test/sprockets/6f7174fb7f1fbb8e01d382a128a979e8 +0 -0
  399. data/spec/dummy/tmp/cache/assets/test/sprockets/735d50df5dc976a13b56aa81f5970298 +0 -0
  400. data/spec/dummy/tmp/cache/assets/test/sprockets/7746e5b6582f701e40ad5ae69e7a6d25 +0 -0
  401. data/spec/dummy/tmp/cache/assets/test/sprockets/7f14b0b39c11df4f58e03d390b589547 +0 -0
  402. data/spec/dummy/tmp/cache/assets/test/sprockets/8091ad5bff4f0d3d70f874750430241b +0 -0
  403. data/spec/dummy/tmp/cache/assets/test/sprockets/825bd4dba50f1ea2c0ae5e8a3708119e +0 -0
  404. data/spec/dummy/tmp/cache/assets/test/sprockets/849593e0c4cb1f2e2b3f7941be4bfb17 +0 -0
  405. data/spec/dummy/tmp/cache/assets/test/sprockets/85d858ed64f06543161931735cb77748 +0 -0
  406. data/spec/dummy/tmp/cache/assets/test/sprockets/8803d0a63bbf3fce683c968d4a900480 +0 -0
  407. data/spec/dummy/tmp/cache/assets/test/sprockets/887e2151ef4cd6e915fd9bfc27c41d7d +0 -0
  408. data/spec/dummy/tmp/cache/assets/test/sprockets/8bec81b5959299e431f5adfc6c410719 +0 -0
  409. data/spec/dummy/tmp/cache/assets/test/sprockets/90c324b461b60cdeb6b549dbf932f162 +0 -0
  410. data/spec/dummy/tmp/cache/assets/test/sprockets/92d59399e3f951cc11721f03a2b328fd +0 -0
  411. data/spec/dummy/tmp/cache/assets/test/sprockets/966db607ae0e7aad72cf171b8fec537a +0 -0
  412. data/spec/dummy/tmp/cache/assets/test/sprockets/98bae9585542e37b839b68b25937fdf6 +0 -0
  413. data/spec/dummy/tmp/cache/assets/test/sprockets/99fd048521a12239746f91aa138613bf +0 -0
  414. data/spec/dummy/tmp/cache/assets/test/sprockets/a539d3e91d5fb8eeb973ac8706bbf5c9 +0 -0
  415. data/spec/dummy/tmp/cache/assets/test/sprockets/a87019c62b5fb3b3dc75db921d98ad59 +0 -0
  416. data/spec/dummy/tmp/cache/assets/test/sprockets/a87cf4d10d892fb23f2fc818d7ca7207 +0 -0
  417. data/spec/dummy/tmp/cache/assets/test/sprockets/ab4192212bd78e95967e5a716548236f +0 -0
  418. data/spec/dummy/tmp/cache/assets/test/sprockets/af97ed366de5933460d41b9198ddc99e +0 -0
  419. data/spec/dummy/tmp/cache/assets/test/sprockets/b6cef25e5142cb56f70ca0a8d31f312e +0 -0
  420. data/spec/dummy/tmp/cache/assets/test/sprockets/b6f21db694cacb7f5bcbb93cf45f65ed +0 -0
  421. data/spec/dummy/tmp/cache/assets/test/sprockets/bd3113e1418cbc640eb6e1b06d486163 +0 -0
  422. data/spec/dummy/tmp/cache/assets/test/sprockets/c0600b832214f9e16294a1c37c0c3f6e +0 -0
  423. data/spec/dummy/tmp/cache/assets/test/sprockets/cad829df95038ddc2958dab7e1b591ad +0 -0
  424. data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  425. data/spec/dummy/tmp/cache/assets/test/sprockets/d05d272f053261f2d5e3dcca85f19172 +0 -0
  426. data/spec/dummy/tmp/cache/assets/test/sprockets/d1e5823c113c9ee03e6c6d7773eb6fac +0 -0
  427. data/spec/dummy/tmp/cache/assets/test/sprockets/d1f0a2d6fd58a203f3ca66950c822c33 +0 -0
  428. data/spec/dummy/tmp/cache/assets/test/sprockets/d3a2586089547d98e033029b94eb86a5 +0 -0
  429. data/spec/dummy/tmp/cache/assets/test/sprockets/d4248f8b11c6b21abffed4a5e718722d +0 -0
  430. data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  431. data/spec/dummy/tmp/cache/assets/test/sprockets/da50fa3c24d736a5eb19bc107acd4ae7 +0 -0
  432. data/spec/dummy/tmp/cache/assets/test/sprockets/db1a08b3c680b077476f767a8addb44b +0 -0
  433. data/spec/dummy/tmp/cache/assets/test/sprockets/dd9f84cc20227ad66bbd1f26bbc11ccc +0 -0
  434. data/spec/dummy/tmp/cache/assets/test/sprockets/de9d72cab443cce32e1d45e62d2b4c04 +0 -0
  435. data/spec/dummy/tmp/cache/assets/test/sprockets/e03c578b73cf9936edc84ff2b48c07da +0 -0
  436. data/spec/dummy/tmp/cache/assets/test/sprockets/e842f1fb8542889be369b76982f3157c +0 -0
  437. data/spec/dummy/tmp/cache/assets/test/sprockets/ebdd71d1c3cf34d7d174e5c1abb123b7 +0 -0
  438. data/spec/dummy/tmp/cache/assets/test/sprockets/f14e64162f52a8d2d22ff9e1c1cc4fac +0 -0
  439. data/spec/dummy/tmp/cache/assets/test/sprockets/f566af7037e0e3042b19bd5ee11b21c4 +0 -0
  440. data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  441. data/spec/dummy/tmp/cache/assets/test/sprockets/fd1cae0417fea68172ab7b747a1d6fd8 +0 -0
@@ -26,7 +26,7 @@ $admin-bar-icon-size: 26.5pt;
26
26
  position: fixed;
27
27
  z-index: 1000;
28
28
  background: #fff;
29
- bottom: -100px;
29
+ bottom: 0px;
30
30
  left: 0px;
31
31
  right: 0px;
32
32
  padding: 0px;
@@ -35,8 +35,7 @@ $admin-bar-icon-size: 26.5pt;
35
35
  transition: bottom .5s;
36
36
  box-shadow: 0px 0px 20px rgba(0,0,0,0.4);
37
37
  border-top: 1px solid #ccc;
38
- &.insert-open { bottom: 0px; }
39
- ul {
38
+ ul {
40
39
  display: table;
41
40
  width: 100%;
42
41
  height: $admin-bar-height;
@@ -61,13 +60,13 @@ $admin-bar-icon-size: 26.5pt;
61
60
 
62
61
  &.ts-title {
63
62
  width: 78%;
64
- input {
63
+ p {
65
64
  display: block;
66
65
  width: 100%;
67
66
  border: 0px;
68
67
  outline: none;
69
- padding: 7px 15px;
70
- font-size: 1.4em;
68
+ padding: 0px 15px;
69
+ font-size: 1em;
71
70
  }
72
71
  }
73
72
 
@@ -93,14 +92,14 @@ $admin-bar-icon-size: 26.5pt;
93
92
  }
94
93
  }
95
94
 
96
- }
95
+ }
97
96
  }
98
97
 
99
98
  #insert-content {
100
99
  background: rgba(27, 33, 36, 0.67);
101
100
  height: 100px;
102
- ul li.insert-new {
103
- cursor: pointer;
101
+ ul li.insert-new {
102
+ cursor: pointer;
104
103
  margin: 5px 0 0 5px;
105
104
  width: 1.4em;
106
105
  display: inline-block;
@@ -123,17 +122,12 @@ $admin-bar-icon-size: 26.5pt;
123
122
  color: #fff;
124
123
  text-align: left;
125
124
  }
126
- &:hover {
125
+ &:hover {
127
126
  .insert-icon { background-color: #428bca; color: #fff; }
128
127
  }
129
128
  }
130
129
  }
131
130
 
132
- #ts-admin-bar-settings {
133
- display: none;
134
- }
135
-
136
-
137
131
  #ts-admin-bar-options {
138
132
  font-family: Tahoma, Geneva, sans-serif;
139
133
  ul:after, li:after { clear: both; display: table; content: ''; }
@@ -175,4 +169,4 @@ $admin-bar-icon-size: 26.5pt;
175
169
  .sub-text { color: #444; }
176
170
  }
177
171
  }
178
- }
172
+ }
@@ -1,4 +1,4 @@
1
- $primary-color: #fff;
1
+ $primary-color: #fff;
2
2
  $primary-border-color: #ccc;
3
3
 
4
4
  $secondary-color: #428bca;
@@ -45,14 +45,15 @@ $secondary-border-color: #357ebd;
45
45
  z-index: 100000;
46
46
  }
47
47
 
48
- .ts-editable-image, .ts-editable-file, .ts-edit-page, .ts-edit-link { position: relative;}
48
+ .ts-block, .ts-block-text { position: relative; }
49
+ .ts-block:focus, .ts-block-text:focus { outline: none;}
49
50
 
50
51
  .ts-editable-button {
51
52
  position: absolute;
52
53
  bottom:0px;
53
54
  left: 0px;
54
55
  z-index: 10;
55
- display: none;
56
+ display: block;
56
57
  font-size: 17pt;
57
58
  box-sizing: content-box;
58
59
  line-height: 1;
@@ -66,52 +67,26 @@ $secondary-border-color: #357ebd;
66
67
  &:hover { background: rgba(27,33,36,0.87); }
67
68
  }
68
69
 
69
- .ts-edit-page-button {
70
- top: 0px;
71
- right: 40px;
72
- bottom: auto;
73
- left: auto;
74
- }
75
-
76
- .ts-delete-page-button {
77
- top: 0px;
78
- right: 0px;
79
- bottom: auto;
80
- left: auto;
81
- }
82
-
83
- .ts-move-up-button, .ts-move-down-button-invert {
84
- top: 0px;
85
- right: 120px;
86
- bottom: auto;
87
- left: auto;
88
- }
89
-
90
- .ts-move-down-button, .ts-move-up-button-invert {
91
- top: 0px;
92
- right: 80px;
93
- bottom: auto;
94
- left: auto;
95
- }
96
-
97
- .ts-editable-link-button {
98
- bottom: auto;
99
- top:0px;
100
- }
101
-
102
- body.ts-edit-mode {
103
- .ts-editable-html, .ts-editable-image, .ts-editable-file, .ts-editable-text, .ts-edit-page, .ts-edit-link {
70
+ body.ts-enable {
71
+ .ts-block {
104
72
  border: none;
105
73
  outline: none;
106
74
  -webkit-transition: border 0.5s;
107
75
  transition: border 0.5s;
108
- &:hover {
109
- outline: 1px solid #428bca;
76
+ &:hover {
77
+ outline: 2px solid #428bca;
78
+ .ts-editable-button { display: block; }
79
+ }
80
+ }
81
+
82
+ .ts-block-text {
83
+ &:hover {
84
+ outline: 2px dashed #428bca;
110
85
  .ts-editable-button { display: block; }
111
86
  }
112
87
  }
113
88
 
114
-
89
+
115
90
  }
116
91
 
117
92
  .vex-custom-field-wrapper {
@@ -158,7 +133,7 @@ body.ts-edit-mode {
158
133
  font-weight: inherit;
159
134
  font-size: inherit;
160
135
  min-height: 2.5em;
161
- margin: 0 0 0.25em;
136
+ margin: 0 0 0.25em;
162
137
  box-shadow: none;
163
138
 
164
139
  .search-choice {
@@ -176,7 +151,7 @@ body.ts-edit-mode {
176
151
  border-top: 1px solid #999;
177
152
 
178
153
  .result-selected {
179
- display: none !important;
154
+ display: none !important;
180
155
  }
181
156
 
182
157
  .highlighted {
@@ -213,18 +188,18 @@ body.ts-edit-mode {
213
188
  ul.ts-model-fields {
214
189
  margin: 4px 15px;
215
190
  padding: 0;
216
- &:after {
191
+ &:after {
217
192
  content: '';
218
193
  display: table;
219
194
  clear: both;
220
195
  }
221
- li {
196
+ li {
222
197
  &.ts-inline-field { float: left; }
223
- label {
198
+ label {
224
199
  display: inline-block;
225
200
  padding-right: 10px;
226
201
  }
227
- input {
202
+ input {
228
203
  height: 2.5em;
229
204
  font-size: 13.5pt;
230
205
  padding: 5px;
@@ -232,7 +207,7 @@ body.ts-edit-mode {
232
207
  color: #444;
233
208
  outline: none;
234
209
  }
235
- button {
210
+ button {
236
211
  width: 1.8em;
237
212
  height: 1.7em;
238
213
  font-size: 1.5em;
@@ -281,9 +256,9 @@ body.ts-edit-mode {
281
256
  }
282
257
  &:hover { background-color: $secondary-border-color; }
283
258
  }
284
- .ts-save-url {
259
+ .ts-save-url {
285
260
  padding: 0.75em 2em;
286
- margin: 8px 0px 0px;
261
+ margin: 8px 0px 0px;
287
262
  letter-spacing: 0.1em;
288
263
  text-transform: uppercase;
289
264
  font-family: inherit;
@@ -339,4 +314,4 @@ body.ts-edit-mode {
339
314
  100% { -ms-transform: rotate(359deg); } }
340
315
  @keyframes spin { 0% { transform: rotate(0deg); }
341
316
  100% { transform: rotate(359deg); } }
342
- .ion-load-a.ion-spin-animation { -webkit-animation-timing-function: steps(8, start); -moz-animation-timing-function: steps(8, start); animation-timing-function: steps(8, start); }
317
+ .ion-load-a.ion-spin-animation { -webkit-animation-timing-function: steps(8, start); -moz-animation-timing-function: steps(8, start); animation-timing-function: steps(8, start); }
@@ -0,0 +1,53 @@
1
+ module TypeStation
2
+ module Admin
3
+ class EntitiesController < ::TypeStation::AdminController
4
+
5
+ def create
6
+ @entity = Mongoid::Factory.build TypeStation::Entity, '_type' => params[:_type].classify
7
+
8
+ if params[:parent_id]
9
+ parent_entity = TypeStation::Entity.find(params[:parent_id])
10
+ @entity.parent = parent_entity
11
+ end
12
+
13
+ if @entity.update_contents(contents)
14
+ render json: { status: :success, entity: @entity }, status: :ok
15
+ else
16
+ render json: @entity.errors, status: :unprocessable_entity
17
+ end
18
+ end
19
+
20
+ def update
21
+ @entity = TypeStation::Entity.find(params[:id])
22
+
23
+ if params[:direction]
24
+ @entity.move_entity params[:direction]
25
+ end
26
+
27
+ if @entity.update_contents(contents)
28
+ render json: { status: :success }, status: :ok
29
+ else
30
+ render json: @entity.errors, status: :unprocessable_entity
31
+ end
32
+ end
33
+
34
+ def destroy
35
+ @entity = TypeStation::Entity.find(params[:id])
36
+
37
+ if @entity.delete
38
+ render json: { status: :success }, status: :ok
39
+ else
40
+ render json: @entity.errors, status: :unprocessable_entity
41
+ end
42
+ end
43
+
44
+
45
+ private
46
+
47
+ def contents
48
+ [params[:contents]].compact.flatten
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -3,59 +3,13 @@ module TypeStation
3
3
  class PagesController < ::TypeStation::AdminController
4
4
 
5
5
  def index
6
- @pages = TypeStation::Page.in(type: [:draft, :published])
6
+ @pages = TypeStation::Page.in(status: [:draft, :published])
7
7
  @pages = @pages.where(title: /#{params[:title]}/i) if params[:title]
8
8
  @pages = @pages.where(path: /#{params[:path]}/i) if params[:path]
9
-
9
+
10
10
  render json: { status: :success, pages: @pages }, status: :ok
11
11
  end
12
-
13
- def create
14
- @page = TypeStation::Page.new(title: params[:title])
15
-
16
- if params[:parent_id]
17
- parent_page = TypeStation::Page.find(params[:parent_id])
18
- @page.parent = parent_page
19
- end
20
-
21
- if @page.update_contents(contents)
22
- render json: { status: :success, url: @page.path }, status: :ok
23
- else
24
- render json: @page.errors, status: :unprocessable_entity
25
- end
26
- end
27
-
28
- def update
29
- @page = TypeStation::Page.find(params[:id])
30
-
31
- if params[:direction]
32
- @page.move_page params[:direction]
33
- end
34
-
35
- if @page.update_contents(contents)
36
- render json: { status: :success }, status: :ok
37
- else
38
- render json: @page.errors, status: :unprocessable_entity
39
- end
40
- end
41
-
42
- def destroy
43
- @page = TypeStation::Page.find(params[:id])
44
-
45
- if @page.delete
46
- render json: { status: :success }, status: :ok
47
- else
48
- render json: @page.errors, status: :unprocessable_entity
49
- end
50
- end
51
-
52
-
53
- private
54
-
55
- def contents
56
- [params[:contents]].compact.flatten
57
- end
58
-
12
+
59
13
  end
60
14
  end
61
- end
15
+ end
@@ -1,6 +1,6 @@
1
1
  module TypeStation
2
2
  class ApplicationController < ActionController::Base
3
- rescue_from TypeStation::PageNotFoundError, :with => :page_not_found
3
+ rescue_from ::TypeStation::PageNotFoundError, :with => :page_not_found
4
4
 
5
5
  private
6
6
 
@@ -12,15 +12,5 @@ module TypeStation
12
12
  render file: "#{Rails.root}/public/404.html", layout: false, status: 404 and return
13
13
  end
14
14
 
15
- def present(object, klass = nil)
16
- if object.present?
17
- object_class = object.class.to_s.gsub(/TypeStation::/, '')
18
- klass ||= "TypeStation::#{object_class}Presenter".constantize
19
- klass.new(object, view_context)
20
- else
21
- nil
22
- end
23
- end
24
-
25
15
  end
26
16
  end
@@ -1,14 +1,14 @@
1
1
  module TypeStation
2
2
  class PagesController < TypeStation::ApplicationController
3
3
  layout 'application'
4
-
4
+
5
5
  def index
6
- @page = present Page.root
6
+ @page = Page.root
7
7
  render_type_station
8
8
  end
9
9
 
10
10
  def show
11
- @page = present Page.find_by_path(params[:path])
11
+ @page = Page.find_by_path(params[:path])
12
12
  render_type_station
13
13
  end
14
14
 
@@ -19,7 +19,7 @@ module TypeStation
19
19
  if @page.redirect?
20
20
  redirect_to @page.redirect_to
21
21
  else
22
- if @page.template_name?
22
+ if @page.template_name?
23
23
  render "pages/#{@page.template_name}"
24
24
  else
25
25
  raise TypeStation::PageTemplateNameUndefined
@@ -31,4 +31,4 @@ module TypeStation
31
31
  end
32
32
 
33
33
  end
34
- end
34
+ end
@@ -13,6 +13,8 @@ module TypeStation
13
13
  field :name, type: Symbol
14
14
  field :type, type: Symbol, default: TYPES.first
15
15
 
16
+ after_save :clean_up
17
+
16
18
  # VALIDATIONS
17
19
 
18
20
  validates :name, presence: true, uniqueness: { scope: :type }
@@ -48,5 +50,16 @@ module TypeStation
48
50
  raise 'Dont know who to covert value to array'
49
51
  end
50
52
  end
53
+
54
+ def clean_up
55
+ case type
56
+ when :image, :file
57
+ original = changes[type.to_s][0]
58
+ if original && original['identifier']
59
+ Cloudinary::Uploader.destroy(original['identifier'])
60
+ end
61
+ end
62
+ end
63
+
51
64
  end
52
- end
65
+ end
@@ -0,0 +1,80 @@
1
+ module TypeStation
2
+ class Entity
3
+ include ::Mongoid::Document
4
+ include ::Mongoid::Tree
5
+ include ::Mongoid::Tree::Ordering
6
+
7
+ # RELATIONS
8
+ embeds_many :contents, class_name: 'TypeStation::Content', cascade_callbacks: true
9
+
10
+ # FIELDS
11
+ field :name, type: Symbol, default: :unnamed
12
+
13
+ # CLASS METHODS
14
+
15
+ def self.find_by_name(name)
16
+ self.where(name: name).first
17
+ end
18
+
19
+ # INSTANT METHODS
20
+
21
+ def update_contents(params)
22
+ params.each do |data|
23
+ field, value, type = data[:field].to_sym, data[:value], data[:type].to_sym
24
+ set(field, value, type)
25
+ end
26
+
27
+ save
28
+ end
29
+
30
+ def content_attributes
31
+ @content_attributes ||= Hash[self.contents.map {|c| [c.name, c]}]
32
+ end
33
+
34
+ def get(key)
35
+ if entity_fields?(key)
36
+ self[key]
37
+ elsif content?(key)
38
+ content_attributes[key].get
39
+ else
40
+ nil
41
+ end
42
+ end
43
+
44
+ def set(key, value, type = 'text')
45
+ if entity_fields?(key) && !changed.include?(key) #and not changed already
46
+ self[key] = value
47
+ else
48
+ if content?(key)
49
+ content_attributes[key].set value
50
+ else
51
+ contents.build(name: key, type: type).set(value)
52
+ end
53
+ end
54
+ end
55
+
56
+ def content?(key)
57
+ content_attributes[key].present?
58
+ end
59
+
60
+ def entity_fields?(key)
61
+ entity_fields.include?(key)
62
+ end
63
+
64
+ def move_entity(direction)
65
+ case direction.to_sym
66
+ when :move_up
67
+ move_up
68
+ when :move_down
69
+ move_down
70
+ end
71
+ end
72
+
73
+ private
74
+
75
+ def entity_fields
76
+ @entity_fields ||= self.class.fields.keys.map(&:to_sym)
77
+ end
78
+
79
+ end
80
+ end
@@ -1,30 +1,12 @@
1
1
  module TypeStation
2
- class Page
3
- include ::Mongoid::Document
4
- include ::Mongoid::Tree
5
- include ::Mongoid::Tree::Ordering
2
+ class Page < Entity
3
+ include ::TypeStation::Concerns::PathGenerator
4
+ include ::TypeStation::Concerns::Templatable
6
5
 
7
- TYPES = [:hidden, :draft, :published]
8
-
9
- # RELATIONS
10
-
11
- embeds_many :contents, class_name: 'TypeStation::Content'
12
-
13
- # FIELDS
14
- field :name, type: Symbol, default: :unnamed
15
- field :title, type: String, default: 'Untitled'
16
- field :template_name, type: String, default: 'undefined'
6
+ STATUS = [:hidden, :draft, :published]
17
7
 
18
8
  field :redirect_to, type: String, default: nil
19
- field :type, type: Symbol, default: TYPES.last # always published unless stated
20
-
21
- field :slug, type: String
22
- field :path, type: String
23
-
24
- # VALIDATIONS
25
-
26
- validates :slug, uniqueness: true, on: :update
27
- validates :path, presence: true, uniqueness: true, on: :update
9
+ field :status, type: Symbol, default: STATUS.last # always published unless stated
28
10
 
29
11
  # Validate that they is only one root page
30
12
  validates_each :parent_id do |model, attr, value|
@@ -32,115 +14,21 @@ module TypeStation
32
14
  model.errors.add(attr, 'already have a root page') if value == nil && root_page.present? && model.id != root_page.id
33
15
  end
34
16
 
35
- # CALLBACKS
36
- before_create :generate_slug
37
- before_destroy :destroy_children
38
- after_rearrange :rebuild_path
39
-
40
- # Rebuild self and children paths upon title change
41
- before_save :generate_slug, if: :title_changed?
42
- after_save :rebuild_child_paths, if: :has_children?
43
-
44
- # CLASS METHODS
45
-
46
- def self.find_by_path(path)
47
- self.where(path: File.join('',path)).first
48
- end
49
-
50
- def self.find_by_name(name)
51
- self.where(name: name).first
52
- end
53
-
54
17
  # INSTANT METHODS
55
18
 
56
- def update_contents(params)
57
- params.each do |data|
58
- field, value, type = data[:field].to_sym, data[:value], data[:type].to_sym
59
-
60
- if page_fields?(field) && !changed.include?(field) #and not changed already
61
- self[field] = value
62
- else
63
- if content?(field)
64
- set(field, value)
65
- else
66
- contents.build(name: field, type: type).set(value)
67
- end
68
- end
69
- end
70
-
71
- save
72
- end
73
-
74
- def move_page(direction)
75
- case direction.to_sym
76
- when :move_up
77
- move_up
78
- when :move_down
79
- move_down
80
- end
81
- end
82
-
83
- def get(key)
84
- content_attributes[key].get
85
- end
86
-
87
- def set(key, value)
88
- content_attributes[key].set value
89
- end
90
-
91
- def content?(key)
92
- content_attributes[key].present?
93
- end
94
-
95
- def page_fields?(key)
96
- page_fields.include?(key)
97
- end
98
-
99
- def content_attributes
100
- @content_attributes ||= Hash[self.contents.map {|c| [c.name, c]}]
101
- end
102
-
103
19
  def redirect?
104
20
  redirect_to.present?
105
21
  end
106
22
 
107
- def template_name?
108
- template_name.present? && template_name != 'undefined'
109
- end
110
-
111
23
  def visible?(user)
112
24
  return true if parent_id == nil # The root page is always visible
113
25
 
114
26
  if user.present?
115
- [:draft, :published].include?(type)
27
+ [:draft, :published].include?(status)
116
28
  else
117
- type == :published
118
- end
119
- end
120
-
121
- private
122
-
123
- def page_fields
124
- @page_fields ||= self.class.fields.keys.map(&:to_sym)
125
- end
126
-
127
- # Generates a slug based of the title give by the user
128
- def generate_slug
129
- self.slug = root? ? "" : title.parameterize
130
- rebuild_path
131
- end
132
-
133
- # Rebuild a path based of a ancestors slugs
134
- def rebuild_path
135
- self.path = root? ? "/" : self.ancestors_and_self.collect(&:slug).join('/')
136
- end
137
-
138
- def rebuild_child_paths
139
- self.children.each do |child|
140
- child.send :rebuild_path
141
- child.save
29
+ status == :published
142
30
  end
143
31
  end
144
32
 
145
33
  end
146
- end
34
+ end
@@ -0,0 +1,9 @@
1
+ module TypeStation
2
+ class AdminBarPresenter < Presenter
3
+ presents :page
4
+
5
+ form_field :title, type: :text, label: 'Title'
6
+ form_field :status, type: :select, label: 'Status', options: [['Hidden', 'hidden'], ['Draft', 'draft'], ['Published', 'published']]
7
+
8
+ end
9
+ end
@@ -2,9 +2,19 @@ module TypeStation
2
2
  class ContentPresenter < BasePresenter
3
3
  presents :content
4
4
 
5
+ def tag(default, options = {})
6
+ css_class = options.delete(:class) if options.include?(:class)
7
+ cl_image_tag((value.present? ? value['identifier'] : default), options.merge({class: ['ts-editable-image-tag', css_class], data: options}))
8
+ end
9
+
10
+ def link(default, html_options = nil, &block)
11
+ css_class = html_options.delete(:class) if html_options.include?(:class)
12
+ content_tag(:a, nil, html_options.merge({class: ['ts-editable-link-tag', css_class], href: (value.present? ? cloudinary_url(value['identifier'], format: value['format']) : default)}), &block)
13
+ end
14
+
5
15
  def value
6
- content.get
16
+ content
7
17
  end
8
18
 
9
19
  end
10
- end
20
+ end