refinerycms-menus 1.0 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (540) hide show
  1. data/Guardfile +27 -0
  2. data/app/assets/javascripts/refinery/backend.js.coffee +39 -0
  3. data/app/assets/stylesheets/refinery/select_form.css.scss +183 -0
  4. data/app/controllers/refinery/menus/admin/menu_links_controller.rb +33 -0
  5. data/app/controllers/refinery/menus/admin/menus_controller.rb +70 -0
  6. data/app/models/refinery/menus/menu.rb +21 -0
  7. data/app/models/refinery/menus/menu_link.rb +134 -0
  8. data/app/views/refinery/menus/_menu_branch.html.erb +38 -0
  9. data/app/views/refinery/menus/admin/menu_links/_custom_link.html.erb +26 -0
  10. data/app/views/refinery/menus/admin/menu_links/_menu_link.html.erb +28 -0
  11. data/app/views/refinery/menus/admin/menu_links/_resource_link.html.erb +26 -0
  12. data/app/views/refinery/menus/admin/menu_links/_resource_link_editor_box.html.erb +21 -0
  13. data/app/views/refinery/menus/admin/menu_links/create.js.erb +6 -0
  14. data/app/views/refinery/menus/admin/menu_links/destroy.js.erb +3 -0
  15. data/app/views/refinery/menus/admin/menus/_form.html.erb +31 -0
  16. data/app/views/refinery/menus/admin/menus/_form_actions.html.erb +23 -0
  17. data/app/views/refinery/menus/admin/menus/_menu.html.erb +16 -0
  18. data/app/views/refinery/menus/admin/menus/_menus.html.erb +3 -0
  19. data/app/views/refinery/menus/admin/menus/_records.html.erb +18 -0
  20. data/app/views/refinery/menus/admin/menus/edit.html.erb +10 -0
  21. data/app/views/refinery/menus/admin/menus/index.html.erb +3 -0
  22. data/config/locales/da.yml +35 -0
  23. data/config/locales/en.yml +34 -21
  24. data/config/locales/fr.yml +13 -0
  25. data/config/routes.rb +12 -6
  26. data/db/migrate/01_create_page_menus.rb +31 -0
  27. data/db/migrate/02_add_permatitle_to_page_menus.rb +9 -0
  28. data/db/migrate/03_add_menu_match_to_page_positions.rb +6 -0
  29. data/db/migrate/04_add_flex_fields_to_page_positions.rb +9 -0
  30. data/db/migrate/05_remove_refinery_page_id_from_refinery_page_positions.rb +9 -0
  31. data/db/migrate/06_rename_page_positions_to_menu_links.rb +5 -0
  32. data/db/migrate/07_add_class_and_id_attribute_to_menu_links.rb +6 -0
  33. data/db/migrate/08_rename_page_menus_to_menus.rb +6 -0
  34. data/db/migrate/09_add_namespace_to_tables.rb +6 -0
  35. data/db/seeds.rb +12 -0
  36. data/lib/generators/refinery/menus/menus_generator.rb +24 -0
  37. data/lib/generators/refinery/menus/templates/config/initializers/refinery/menus.rb.erb +18 -0
  38. data/lib/refinery/menu_item_decorator.rb +22 -0
  39. data/lib/refinery/menus.rb +30 -0
  40. data/lib/refinery/menus/configuration.rb +28 -0
  41. data/lib/refinery/menus/engine.rb +29 -0
  42. data/lib/refinery/menus/instance_methods.rb +17 -0
  43. data/lib/refinery/menus/version.rb +18 -0
  44. data/lib/refinerycms-menus.rb +1 -0
  45. data/lib/tasks/refinery/menus.rake +65 -0
  46. data/readme.md +105 -0
  47. data/spec/dummy/README.rdoc +261 -0
  48. data/spec/dummy/Rakefile +7 -0
  49. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  50. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  51. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  52. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  53. data/spec/dummy/app/views/refinery/pages/show.html.erb +5 -0
  54. data/spec/dummy/app/views/sitemap/index.xml.builder +25 -0
  55. data/spec/dummy/config.ru +4 -0
  56. data/spec/dummy/config/application.rb +65 -0
  57. data/spec/dummy/config/boot.rb +6 -0
  58. data/spec/dummy/config/database.yml +18 -0
  59. data/spec/dummy/config/database.yml.mysql +20 -0
  60. data/spec/dummy/config/database.yml.postgresql +58 -0
  61. data/spec/dummy/config/database.yml.sqlite3 +18 -0
  62. data/spec/dummy/config/environment.rb +5 -0
  63. data/spec/dummy/config/environments/development.rb +37 -0
  64. data/spec/dummy/config/environments/production.rb +67 -0
  65. data/spec/dummy/config/environments/test.rb +37 -0
  66. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  67. data/spec/dummy/config/initializers/inflections.rb +15 -0
  68. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  69. data/spec/dummy/config/initializers/refinery/authentication.rb +5 -0
  70. data/spec/dummy/config/initializers/refinery/core.rb +52 -0
  71. data/spec/dummy/config/initializers/refinery/i18n.rb +15 -0
  72. data/spec/dummy/config/initializers/refinery/images.rb +45 -0
  73. data/spec/dummy/config/initializers/refinery/pages.rb +53 -0
  74. data/spec/dummy/config/initializers/refinery/resources.rb +27 -0
  75. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  76. data/spec/dummy/config/initializers/session_store.rb +8 -0
  77. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  78. data/spec/dummy/config/locales/en.yml +5 -0
  79. data/spec/dummy/config/routes.rb +3 -0
  80. data/spec/dummy/db/migrate/20130204144343_create_page_menus.refinery_menus.rb +32 -0
  81. data/spec/dummy/db/migrate/20130204144344_add_permatitle_to_page_menus.refinery_menus.rb +10 -0
  82. data/spec/dummy/db/migrate/20130204144345_add_menu_match_to_page_positions.refinery_menus.rb +7 -0
  83. data/spec/dummy/db/migrate/20130204144346_add_flex_fields_to_page_positions.refinery_menus.rb +10 -0
  84. data/spec/dummy/db/migrate/20130204144347_remove_refinery_page_id_from_refinery_page_positions.refinery_menus.rb +10 -0
  85. data/spec/dummy/db/migrate/20130204144348_rename_page_positions_to_menu_links.refinery_menus.rb +6 -0
  86. data/spec/dummy/db/migrate/20130204144349_add_class_and_id_attribute_to_menu_links.refinery_menus.rb +7 -0
  87. data/spec/dummy/db/migrate/20130204144350_rename_page_menus_to_menus.refinery_menus.rb +7 -0
  88. data/spec/dummy/db/migrate/20130204144351_add_namespace_to_tables.refinery_menus.rb +7 -0
  89. data/spec/dummy/db/migrate/20130204144352_create_refinerycms_authentication_schema.refinery_authentication.rb +44 -0
  90. data/spec/dummy/db/migrate/20130204144353_create_refinerycms_images_schema.refinery_images.rb +16 -0
  91. data/spec/dummy/db/migrate/20130204144354_create_refinerycms_resources_schema.refinery_resources.rb +14 -0
  92. data/spec/dummy/db/migrate/20130204144355_create_refinerycms_pages_schema.refinery_pages.rb +59 -0
  93. data/spec/dummy/db/migrate/20130204144356_create_seo_meta.seo_meta_engine.rb +24 -0
  94. data/spec/dummy/db/schema.rb +183 -0
  95. data/spec/dummy/db/seeds.rb +10 -0
  96. data/spec/dummy/dummy_dev +0 -0
  97. data/spec/dummy/dummy_test +0 -0
  98. data/spec/dummy/log/development.log +1439 -0
  99. data/spec/dummy/log/test.log +8115 -0
  100. data/spec/dummy/public/404.html +26 -0
  101. data/spec/dummy/public/422.html +26 -0
  102. data/spec/dummy/public/500.html +25 -0
  103. data/spec/dummy/public/favicon.ico +0 -0
  104. data/spec/dummy/script/rails +6 -0
  105. data/spec/dummy/tmp/cache/assets/BD4/2D0/sprockets%2F92d6b860252436c37505675357e29939 +0 -0
  106. data/spec/dummy/tmp/cache/assets/C15/9A0/sprockets%2Fa6284e072e57a0350213560e83342a89 +0 -0
  107. data/spec/dummy/tmp/cache/assets/C18/B70/sprockets%2F2036d35792672f0289a32d16a148c180 +0 -0
  108. data/spec/dummy/tmp/cache/assets/C2F/7A0/sprockets%2F7860517869b482070dc05f5679b5072f +0 -0
  109. data/spec/dummy/tmp/cache/assets/C44/370/sprockets%2Fef5e4507470b3431ba0240585922c682 +0 -0
  110. data/spec/dummy/tmp/cache/assets/C45/B30/sprockets%2F500931587f30bed692a334173807bb41 +0 -0
  111. data/spec/dummy/tmp/cache/assets/C4A/520/sprockets%2F77b0b75b0f4434222d0638616a3e8619 +0 -0
  112. data/spec/dummy/tmp/cache/assets/C4C/680/sprockets%2F466134e5101f41ee447499d060f8302e +0 -0
  113. data/spec/dummy/tmp/cache/assets/C57/F00/sprockets%2F3068533042be2b1991ce169738f983f0 +0 -0
  114. data/spec/dummy/tmp/cache/assets/C64/030/sprockets%2F577683d34df277fc25e18725958603d0 +0 -0
  115. data/spec/dummy/tmp/cache/assets/C65/490/sprockets%2F2d580e07834f7d8e68708270c71a6768 +0 -0
  116. data/spec/dummy/tmp/cache/assets/C77/170/sprockets%2F58624646998b6497b934a99fb38e1d19 +0 -0
  117. data/spec/dummy/tmp/cache/assets/C85/F90/sprockets%2Fd4586b524947ee00f423218c4b7b4883 +0 -0
  118. data/spec/dummy/tmp/cache/assets/C87/250/sprockets%2F1350b4c897c5946f7613b3674bf060d7 +0 -0
  119. data/spec/dummy/tmp/cache/assets/C9D/520/sprockets%2F6ff38c7729ec1ec56425477e61878327 +0 -0
  120. data/spec/dummy/tmp/cache/assets/C9F/E60/sprockets%2F28a16332aa1e60404b66e255a56938ac +0 -0
  121. data/spec/dummy/tmp/cache/assets/CA1/880/sprockets%2Fe2704733c55ee1b4ca652aa038063719 +0 -0
  122. data/spec/dummy/tmp/cache/assets/CA5/DC0/sprockets%2Fc09b2c4a92184d81241227cd18f8501f +0 -0
  123. data/spec/dummy/tmp/cache/assets/CA7/400/sprockets%2Fc5813f86b45b618740b0181b524bcf62 +0 -0
  124. data/spec/dummy/tmp/cache/assets/CAB/F00/sprockets%2F872459663ad68a00f13b36144e2c75cb +0 -0
  125. data/spec/dummy/tmp/cache/assets/CAF/8D0/sprockets%2F7c3a860485a6acb1e70f7372693a6163 +0 -0
  126. data/spec/dummy/tmp/cache/assets/CB0/5C0/sprockets%2F4d69819407d2c01f0868e5a74c4b314c +0 -0
  127. data/spec/dummy/tmp/cache/assets/CBE/A60/sprockets%2Ff3009f076c6522642f68f447dd938c4c +0 -0
  128. data/spec/dummy/tmp/cache/assets/CC2/7C0/sprockets%2F76701bcf06983f998b8734f624bac750 +0 -0
  129. data/spec/dummy/tmp/cache/assets/CC7/DA0/sprockets%2F817c99f99316484061f5636d8d3ac1ef +0 -0
  130. data/spec/dummy/tmp/cache/assets/CD4/E10/sprockets%2F4234271cfcde930620aa2703db368e68 +0 -0
  131. data/spec/dummy/tmp/cache/assets/CD5/DF0/sprockets%2Feeb3f1b44cb602e1824851e6427452f1 +0 -0
  132. data/spec/dummy/tmp/cache/assets/CD8/9A0/sprockets%2Fb7e711ea1482aed36c56b06964a24373 +0 -0
  133. data/spec/dummy/tmp/cache/assets/CDE/440/sprockets%2F652595237e875bfc201ed73c1c85a1e1 +0 -0
  134. data/spec/dummy/tmp/cache/assets/CE0/3F0/sprockets%2F21a81c805309e62e8c96ffff404b7213 +0 -0
  135. data/spec/dummy/tmp/cache/assets/CE3/9E0/sprockets%2F8b75a95c1b6f651000e2967884ebac53 +0 -0
  136. data/spec/dummy/tmp/cache/assets/CEB/120/sprockets%2Fca83656d959612d1b48f5b403fe6565c +0 -0
  137. data/spec/dummy/tmp/cache/assets/CF4/AE0/sprockets%2F78a6d639dfc60f3057ce49b5513a4899 +0 -0
  138. data/spec/dummy/tmp/cache/assets/CF8/990/sprockets%2Fcfe84c01ac0040722f475b9b213a365c +0 -0
  139. data/spec/dummy/tmp/cache/assets/CFF/850/sprockets%2F9ed0ca8b9b75cc08e0131027b731560c +0 -0
  140. data/spec/dummy/tmp/cache/assets/D00/DA0/sprockets%2F537f8494ee496907637abaf63469b8de +0 -0
  141. data/spec/dummy/tmp/cache/assets/D06/310/sprockets%2F4c45c12788e4f002674c21b31f17cfdd +0 -0
  142. data/spec/dummy/tmp/cache/assets/D0B/250/sprockets%2F34137e2028650c51d75ceafd4f8c1e37 +0 -0
  143. data/spec/dummy/tmp/cache/assets/D0C/2B0/sprockets%2F26ca2c4f35358e731816e4222c9cfd1e +0 -0
  144. data/spec/dummy/tmp/cache/assets/D0F/1D0/sprockets%2Fb9525add67a2442dd1578d2a380c4c79 +0 -0
  145. data/spec/dummy/tmp/cache/assets/D0F/C50/sprockets%2F7d6c03215849b0d6955060f9ec1dda6c +0 -0
  146. data/spec/dummy/tmp/cache/assets/D10/8A0/sprockets%2Fe787060f2fa7b376e6929bab8003c60c +0 -0
  147. data/spec/dummy/tmp/cache/assets/D10/E00/sprockets%2F74ca5021a890c529eb29592acee877a1 +0 -0
  148. data/spec/dummy/tmp/cache/assets/D11/F70/sprockets%2Ffb6c5626914c0e7e53a78e38ce18b004 +0 -0
  149. data/spec/dummy/tmp/cache/assets/D12/9E0/sprockets%2F3b39857cfaf550138a6e5d1083c9b2d6 +0 -0
  150. data/spec/dummy/tmp/cache/assets/D13/5B0/sprockets%2F2eb332653560c168d9c15d98ae5ca29f +0 -0
  151. data/spec/dummy/tmp/cache/assets/D17/490/sprockets%2F6d3a0b7b473aa78c662f5c869c568b32 +0 -0
  152. data/spec/dummy/tmp/cache/assets/D1B/150/sprockets%2Ff7750b570e3e0738983b65b5c641fdcf +0 -0
  153. data/spec/dummy/tmp/cache/assets/D1F/050/sprockets%2Fbc58457521b9bbf18b15487e86d6e0e9 +0 -0
  154. data/spec/dummy/tmp/cache/assets/D1F/4E0/sprockets%2Fc6e35f7bb7db6b15a78e8506a9856084 +0 -0
  155. data/spec/dummy/tmp/cache/assets/D1F/510/sprockets%2F4719bebff1466e438868162e1fa8c35e +0 -0
  156. data/spec/dummy/tmp/cache/assets/D24/9A0/sprockets%2F5b38a78468f75a479cf1fb2590dd458b +0 -0
  157. data/spec/dummy/tmp/cache/assets/D26/890/sprockets%2Ff1f0b9c8a4d61a4e49b08d143000bf02 +0 -0
  158. data/spec/dummy/tmp/cache/assets/D26/930/sprockets%2F3e7779994bf22ddf12ca64f739df3517 +0 -0
  159. data/spec/dummy/tmp/cache/assets/D27/560/sprockets%2F96abfee457f1b942981d56ea61839d65 +0 -0
  160. data/spec/dummy/tmp/cache/assets/D2B/8E0/sprockets%2F2c5f01453202b6e4c9ebc3ca935eb323 +0 -0
  161. data/spec/dummy/tmp/cache/assets/D2B/BA0/sprockets%2F17e31999d96178ba11e9872a6f6cdd8f +0 -0
  162. data/spec/dummy/tmp/cache/assets/D30/4F0/sprockets%2F8ef75d43c78e6c6001cc3c4ac201d602 +0 -0
  163. data/spec/dummy/tmp/cache/assets/D33/430/sprockets%2F3bf55b9e13def8d1131b0e504f1951a6 +0 -0
  164. data/spec/dummy/tmp/cache/assets/D3A/090/sprockets%2F5ad8a097a12bf36ec3328e5ab6e95044 +0 -0
  165. data/spec/dummy/tmp/cache/assets/D42/430/sprockets%2Fd36340d75c1fbba53f10f92763b89f9a +0 -0
  166. data/spec/dummy/tmp/cache/assets/D42/660/sprockets%2F4bc29a4494ccedc764001569e599ab0e +0 -0
  167. data/spec/dummy/tmp/cache/assets/D48/D50/sprockets%2F53b9b1a2f1bfd3b4d6776895cf05b289 +0 -0
  168. data/spec/dummy/tmp/cache/assets/D4A/940/sprockets%2Fcbb593a12a764a8d98359c05f8fd39d1 +0 -0
  169. data/spec/dummy/tmp/cache/assets/D4A/D50/sprockets%2Fca7d84ec820d53873f4e91a9d03cd594 +0 -0
  170. data/spec/dummy/tmp/cache/assets/D4C/F10/sprockets%2Fae96a38212cf9a569b2be23bc9f88645 +0 -0
  171. data/spec/dummy/tmp/cache/assets/D53/2A0/sprockets%2Ff809f29a38ba868af096a5e57d647a2e +0 -0
  172. data/spec/dummy/tmp/cache/assets/D53/480/sprockets%2F5d58d5812633dbbc96df3d27994ae8d5 +0 -0
  173. data/spec/dummy/tmp/cache/assets/D53/A80/sprockets%2Fd33eb75db5980ac3c9dd481ff3844878 +0 -0
  174. data/spec/dummy/tmp/cache/assets/D55/150/sprockets%2Fd7623ea8e84793eca6821816ce85cdf6 +0 -0
  175. data/spec/dummy/tmp/cache/assets/D59/DC0/sprockets%2Ffb2997b21dee8767fc8b0408d39f79d2 +0 -0
  176. data/spec/dummy/tmp/cache/assets/D5E/C90/sprockets%2Fc7c80bcd4798e3272b89b88387bed7d8 +0 -0
  177. data/spec/dummy/tmp/cache/assets/D61/430/sprockets%2Fe1230e60c2d9e665124cde1ec3d48c4a +0 -0
  178. data/spec/dummy/tmp/cache/assets/D63/020/sprockets%2F5dcdad4f60236c88eb049e9131cca060 +0 -0
  179. data/spec/dummy/tmp/cache/assets/D63/D20/sprockets%2Fcc9f83c87eff73ca7548e59f1a845288 +0 -0
  180. data/spec/dummy/tmp/cache/assets/D65/820/sprockets%2F2e8b0981910d00ddd5cdd7ccf192f313 +0 -0
  181. data/spec/dummy/tmp/cache/assets/D67/1F0/sprockets%2Fe309e279a7111fb1e6e5c2dc06f8b51b +0 -0
  182. data/spec/dummy/tmp/cache/assets/D68/800/sprockets%2Ffe4f5faa0dce2936f7d9f260114a5600 +0 -0
  183. data/spec/dummy/tmp/cache/assets/D6C/2B0/sprockets%2F57294aae845659df4e22207acf7daba0 +0 -0
  184. data/spec/dummy/tmp/cache/assets/D6C/A30/sprockets%2F81a9caee4e07b1de2367762c247a9ca4 +0 -0
  185. data/spec/dummy/tmp/cache/assets/D6D/570/sprockets%2F1d3b463ec0b3d7c2f39878d1fda350c9 +0 -0
  186. data/spec/dummy/tmp/cache/assets/D6F/620/sprockets%2F8b7bd54ff34551fbe044ee15a98fc302 +0 -0
  187. data/spec/dummy/tmp/cache/assets/D78/0C0/sprockets%2F18b24524d5d2c8029bfe09df41e9fed9 +0 -0
  188. data/spec/dummy/tmp/cache/assets/D79/E70/sprockets%2F83880198f8c830a0b5f3f7c55bacd6cf +0 -0
  189. data/spec/dummy/tmp/cache/assets/D7C/610/sprockets%2F8e6df6a269df75eb0c8f72613c0b468c +0 -0
  190. data/spec/dummy/tmp/cache/assets/D7D/F20/sprockets%2Fb3b2dd248bb9689ee88905a97fc1e0e1 +0 -0
  191. data/spec/dummy/tmp/cache/assets/D8F/BB0/sprockets%2Fcb0296ec2aa3d7f34b2f8e0e60e73b03 +0 -0
  192. data/spec/dummy/tmp/cache/assets/D90/A30/sprockets%2F429edb8ee870df0ca4a3ea323f06a341 +0 -0
  193. data/spec/dummy/tmp/cache/assets/D93/BE0/sprockets%2F06fa87ccb9cecb705b81c1e14d11475b +0 -0
  194. data/spec/dummy/tmp/cache/assets/D94/C50/sprockets%2Fec833021b3ac954bd1f7dab93fcb2718 +0 -0
  195. data/spec/dummy/tmp/cache/assets/D98/8C0/sprockets%2F9d032a33cadc1d6dded822596f9d008a +0 -0
  196. data/spec/dummy/tmp/cache/assets/D98/A10/sprockets%2Fb6e1d5bae4af0877da064a58e1808d3b +0 -0
  197. data/spec/dummy/tmp/cache/assets/D9B/FE0/sprockets%2F351e441b3be4f9cf0be43c95b4d529dc +0 -0
  198. data/spec/dummy/tmp/cache/assets/D9D/960/sprockets%2F580fa81a5f9ac2f1add383b9a8755da1 +0 -0
  199. data/spec/dummy/tmp/cache/assets/DA0/4A0/sprockets%2F2f07bc53e7a9e43fd0c62fd84bc62e18 +0 -0
  200. data/spec/dummy/tmp/cache/assets/DA2/0F0/sprockets%2F1a818ea53d77a3a957127e9aaad49dcf +0 -0
  201. data/spec/dummy/tmp/cache/assets/DA2/B80/sprockets%2F1f029886c259cbd4b9dacf0aa5f07d67 +0 -0
  202. data/spec/dummy/tmp/cache/assets/DA2/C20/sprockets%2F2e7b093ddc552791fa865f2c3f2ecfa3 +0 -0
  203. data/spec/dummy/tmp/cache/assets/DA7/4C0/sprockets%2Fbc0caa78e891ffd54e735ac39b65762b +0 -0
  204. data/spec/dummy/tmp/cache/assets/DA7/E40/sprockets%2F1748cb6eed62765c7b76e0368ceab6ac +0 -0
  205. data/spec/dummy/tmp/cache/assets/DAD/270/sprockets%2F4b71e8a8debe653dd913ff638d4581af +0 -0
  206. data/spec/dummy/tmp/cache/assets/DB0/E10/sprockets%2F45ef8a66b9ba662b7af67e86ba72ff16 +0 -0
  207. data/spec/dummy/tmp/cache/assets/DB1/100/sprockets%2Ff4d0d6f994a7df2f6fce618c9c31353f +0 -0
  208. data/spec/dummy/tmp/cache/assets/DB3/530/sprockets%2F42a9c9f65511df0eacf6f5b3c9f7993f +0 -0
  209. data/spec/dummy/tmp/cache/assets/DC3/000/sprockets%2F34c7b5be062c228fbd8122748bdaecae +0 -0
  210. data/spec/dummy/tmp/cache/assets/DC4/8E0/sprockets%2F128aaae87a03a5a69d3edf512e5a1f7e +0 -0
  211. data/spec/dummy/tmp/cache/assets/DC5/640/sprockets%2F6936df1b7a138be323a10fcd37e3cfcd +0 -0
  212. data/spec/dummy/tmp/cache/assets/DCB/9E0/sprockets%2Fc2bda1b7e2fec27b27e0f3c7d258d818 +0 -0
  213. data/spec/dummy/tmp/cache/assets/DD2/8E0/sprockets%2F371036eedde0e38ee67d7bb0667bbfb6 +0 -0
  214. data/spec/dummy/tmp/cache/assets/DD4/CE0/sprockets%2F9385a694dc7d2dbc68705bbe9ac70cbb +0 -0
  215. data/spec/dummy/tmp/cache/assets/DD7/DC0/sprockets%2F60bf1bfbe4b9f145b9f0a8763bf974ec +0 -0
  216. data/spec/dummy/tmp/cache/assets/DD8/670/sprockets%2Fdf5cb3fa8682dc6868a64b721fcda71f +0 -0
  217. data/spec/dummy/tmp/cache/assets/DDA/B70/sprockets%2F6f72db00d6cdd6d235db22000adabdb2 +0 -0
  218. data/spec/dummy/tmp/cache/assets/DE0/4D0/sprockets%2F4d52cffb98c59fecb059a57c46b8e53c +0 -0
  219. data/spec/dummy/tmp/cache/assets/DE0/EB0/sprockets%2Ff4e5fcc952ef18f7f5b8bdf854651cb0 +0 -0
  220. data/spec/dummy/tmp/cache/assets/DE2/260/sprockets%2Fe00cd72d106602f30dcabe4b1feedb18 +0 -0
  221. data/spec/dummy/tmp/cache/assets/DE2/E30/sprockets%2F382fdd5b14cc3bbd16e99e3f4ff9868c +0 -0
  222. data/spec/dummy/tmp/cache/assets/DEC/820/sprockets%2F0a6b744660b704abcdaef44adb8fac17 +0 -0
  223. data/spec/dummy/tmp/cache/assets/DF8/A10/sprockets%2F1d901ea9cdb0eae6f18aa90f6bf7273c +0 -0
  224. data/spec/dummy/tmp/cache/assets/DFC/8E0/sprockets%2Fc08af26ddea6be41516dbe9c5c5936ac +0 -0
  225. data/spec/dummy/tmp/cache/assets/E00/EC0/sprockets%2F7b155319ca7d4fb9fb3fdd507be82abf +0 -0
  226. data/spec/dummy/tmp/cache/assets/E05/0C0/sprockets%2F4fdc2c7e858945af1bef617a22ed5afc +0 -0
  227. data/spec/dummy/tmp/cache/assets/E24/490/sprockets%2F593f3bef8bded42eb7cce2a2b60ec015 +0 -0
  228. data/spec/dummy/tmp/cache/assets/E40/B70/sprockets%2F250ba5b0ea49da430ddaca7eaeda5b54 +0 -0
  229. data/spec/dummy/tmp/cache/assets/E42/680/sprockets%2F7ab48cdf50b10c5c20fd3ec0dbcdc35a +0 -0
  230. data/spec/dummy/tmp/cache/assets/E56/2D0/sprockets%2Ffdcdb5a6a41e55b25db5b3c5f19b4fcf +0 -0
  231. data/spec/dummy/tmp/cache/assets/E5B/7F0/sprockets%2Ffeae26122b9dfee5a17f6aac7feb28e0 +0 -0
  232. data/spec/dummy/tmp/cache/assets/E66/920/sprockets%2Ffa8bf3adfdf9ce8fda315022b8668efa +0 -0
  233. data/spec/dummy/tmp/cache/assets/E83/D30/sprockets%2Fbaad95b59000ff3b6bfb1fefc9b0f2ce +0 -0
  234. data/spec/dummy/tmp/cache/sass/17739c79117e0a47cc5fa921e1d471e68c8c1dfa/skin.css.scssc +0 -0
  235. data/spec/dummy/tmp/cache/sass/59dc080dcda8715df03705f02779a4ead9f9d6bf/layout.css.scssc +0 -0
  236. data/spec/dummy/tmp/cache/sass/59dc080dcda8715df03705f02779a4ead9f9d6bf/site_bar.css.scssc +0 -0
  237. data/spec/dummy/tmp/cache/sass/59dc080dcda8715df03705f02779a4ead9f9d6bf/submenu.css.scssc +0 -0
  238. data/spec/dummy/tmp/cache/sass/59dc080dcda8715df03705f02779a4ead9f9d6bf/tooltips.css.scssc +0 -0
  239. data/spec/dummy/tmp/cache/sass/59dc080dcda8715df03705f02779a4ead9f9d6bf/ui.css.scssc +0 -0
  240. data/spec/dummy/tmp/cache/sass/cc739a60b5ec58018f1347486985b51daf51ab04/select_form.css.scssc +0 -0
  241. data/spec/dummy/tmp/data/meta_request/03dce8b1a5732e271aa5d23d9d1eafbe.json +1 -0
  242. data/spec/dummy/tmp/data/meta_request/06ba0fb7da0db7042fdffa88c4a8d650.json +1 -0
  243. data/spec/dummy/tmp/data/meta_request/1bf22b78ad2ff4901d5aa932c1730386.json +1 -0
  244. data/spec/dummy/tmp/data/meta_request/38807466b8a482c2da72362f0073bd6e.json +1 -0
  245. data/spec/dummy/tmp/data/meta_request/5f19481d5901efefbc63aef0effc2e49.json +1 -0
  246. data/spec/dummy/tmp/data/meta_request/a20e2a9aaff427eee4f1e1ed7b13af14.json +1 -0
  247. data/spec/dummy/tmp/data/meta_request/a4b516894e0e275bbb3b28603326eeae.json +1 -0
  248. data/spec/dummy/tmp/data/meta_request/ba0fc11d54e6f107c6b617c17bf3d555.json +1 -0
  249. data/spec/dummy/tmp/data/meta_request/e3c96b5f5033ec9b5e0482d616f34556.json +1 -0
  250. data/spec/dummy/tmp/data/meta_request/ee49070e51f359d852f99ac8f415312e.json +1 -0
  251. data/spec/dummy/tmp/dragonfly/cache/body/16/7fdfc97216adbd0ae17b1c97903b61390f170b +7 -0
  252. data/spec/dummy/tmp/dragonfly/cache/body/2a/2857f555d30feea7cd55ff2e1494c44a41b0a7 +0 -0
  253. data/spec/dummy/tmp/dragonfly/cache/body/2c/535691e4477579c7c0649574a5efcefe222116 +0 -0
  254. data/spec/dummy/tmp/dragonfly/cache/body/38/67d3ac1d0839b2a612a82a3bdf93de235ba330 +0 -0
  255. data/spec/dummy/tmp/dragonfly/cache/body/60/c2784679ec29df37f08148fb7993ccb76393bf +0 -0
  256. data/spec/dummy/tmp/dragonfly/cache/body/63/53fcfc2a9e56fa633b4af6e7a95cdf38e6b2fa +0 -0
  257. data/spec/dummy/tmp/dragonfly/cache/body/85/936cd23c48084c9e2992df95c1205a6cea7592 +0 -0
  258. data/spec/dummy/tmp/dragonfly/cache/body/88/72adf860a379cf6eab4faf35a67301b38325c6 +0 -0
  259. data/spec/dummy/tmp/dragonfly/cache/body/8a/13507b51d53cb9d99ca97a1d86d139949a2937 +119 -0
  260. data/spec/dummy/tmp/dragonfly/cache/body/8e/207f3243726851a629bc188282e0b4a0c9683c +66 -0
  261. data/spec/dummy/tmp/dragonfly/cache/body/93/ebbf02317e13e58c1cac8cde30f3e2c81fe37a +69 -0
  262. data/spec/dummy/tmp/dragonfly/cache/body/98/c4cee368ff88b27e0ece923d365dfd953ca7a8 +24628 -0
  263. data/spec/dummy/tmp/dragonfly/cache/body/a3/243ca6a628b77b3523a18aff6bafae85b45adc +0 -0
  264. data/spec/dummy/tmp/dragonfly/cache/body/a9/8ec259c5e198fffb3116e4cf950e2d8b695880 +0 -0
  265. data/spec/dummy/tmp/dragonfly/cache/body/ae/b242dc5fd6cbc8ab3e1385c9436507e7bbeca4 +357 -0
  266. data/spec/dummy/tmp/dragonfly/cache/body/b3/f434d2e0622653cd592d251e6fbf14410ecc5c +25 -0
  267. data/spec/dummy/tmp/dragonfly/cache/body/b6/244b0027a8c9f702b311cb5b2ab8cc64f3b5f2 +0 -0
  268. data/spec/dummy/tmp/dragonfly/cache/body/b6/347599a46b519ea2405ed3fec97ec10ff2c24c +57 -0
  269. data/spec/dummy/tmp/dragonfly/cache/body/bb/2768413b6a7b6c2beaadd075cccb3df2056bff +48 -0
  270. data/spec/dummy/tmp/dragonfly/cache/body/c2/87fb3a839a1d021a733a9b0aee24155e421893 +51 -0
  271. data/spec/dummy/tmp/dragonfly/cache/body/c3/b5de4576cd7c6ae218405d9a37469e11c851dd +0 -0
  272. data/spec/dummy/tmp/dragonfly/cache/body/c3/c2169f34fe6a824f435e4a75f83143293f50b6 +55 -0
  273. data/spec/dummy/tmp/dragonfly/cache/body/ca/d871eb14170b67621b17df90e163103af6923c +0 -0
  274. data/spec/dummy/tmp/dragonfly/cache/body/d0/a90047653afcdac85171e6b34d599538b89773 +0 -0
  275. data/spec/dummy/tmp/dragonfly/cache/body/e3/f3cdb48fe677ae8237a89c6ae2b0d449b0493c +3315 -0
  276. data/spec/dummy/tmp/dragonfly/cache/body/e9/44bc33255e7d76fc8621ecbbcdee153fc0f88e +183 -0
  277. data/spec/dummy/tmp/dragonfly/cache/body/e9/9b614bde4086cf41d947c6580444332c70ccaf +5518 -0
  278. data/spec/dummy/tmp/dragonfly/cache/body/f6/ed64e8a1f9a3e608197a98721eca81f945d8d7 +0 -0
  279. data/spec/dummy/tmp/dragonfly/cache/body/f7/e17dec7a0f20359d68b099858f7e8cb95586a5 +0 -0
  280. data/spec/dummy/tmp/dragonfly/cache/meta/01/cee619015a8dc799e619916210fa074dc34fd2 +0 -0
  281. data/spec/dummy/tmp/dragonfly/cache/meta/02/39de8979b9dbbca145f2ebce70e7cbf6e67540 +0 -0
  282. data/spec/dummy/tmp/dragonfly/cache/meta/02/9c5533435d284516c79a7a47bcc28158bd0efe +0 -0
  283. data/spec/dummy/tmp/dragonfly/cache/meta/05/d0aff59ae453526e999ca28cf7205e53abdee8 +0 -0
  284. data/spec/dummy/tmp/dragonfly/cache/meta/0a/586695a7c486bf4de273d5b70bc9c357ab0bbc +0 -0
  285. data/spec/dummy/tmp/dragonfly/cache/meta/0b/80ad94fa546c65ea21f8f9b7e65d8de9dfc131 +0 -0
  286. data/spec/dummy/tmp/dragonfly/cache/meta/0f/dbf2c5de9643c7478aa4f4ea55198bef84df70 +0 -0
  287. data/spec/dummy/tmp/dragonfly/cache/meta/16/8e7dabcdea60a32952bc231d279b18f066b7b1 +0 -0
  288. data/spec/dummy/tmp/dragonfly/cache/meta/16/b6a78c0f40e143c2fa72064ec8f0fbf7c903a3 +0 -0
  289. data/spec/dummy/tmp/dragonfly/cache/meta/1b/ba29a4971bf08ec035fcbeb6bf790c03e427aa +0 -0
  290. data/spec/dummy/tmp/dragonfly/cache/meta/1e/bf72c7ff814020aecf4f3d3f1f9d896d9b3ce4 +0 -0
  291. data/spec/dummy/tmp/dragonfly/cache/meta/1f/50ab28dbecc4a28c2a7b9d72b12b08507757d7 +0 -0
  292. data/spec/dummy/tmp/dragonfly/cache/meta/20/a817d5117d75b9ab23c950e3720fca9c809487 +0 -0
  293. data/spec/dummy/tmp/dragonfly/cache/meta/21/ea463922bcf9aa68f6c19f144c1de4843c4ecc +0 -0
  294. data/spec/dummy/tmp/dragonfly/cache/meta/27/01d79ed6351249d122862c74f6a1e6bb64a746 +0 -0
  295. data/spec/dummy/tmp/dragonfly/cache/meta/27/a875bc522b4a1072502d742acacf112108f9f3 +0 -0
  296. data/spec/dummy/tmp/dragonfly/cache/meta/2c/338f8d34a0df9c016156ee3ed004932d7f39b0 +0 -0
  297. data/spec/dummy/tmp/dragonfly/cache/meta/2c/789ea8794160b03aa433be305fd3fc2e3a9504 +0 -0
  298. data/spec/dummy/tmp/dragonfly/cache/meta/2e/7cba5ed8ee30337ee29fce0ac2c9c04c47e165 +0 -0
  299. data/spec/dummy/tmp/dragonfly/cache/meta/2f/5fcdd09e0f0053e46e516063fe9fc350ba3597 +0 -0
  300. data/spec/dummy/tmp/dragonfly/cache/meta/39/080cb93776b8088800a97f04645dc20c0d61e3 +0 -0
  301. data/spec/dummy/tmp/dragonfly/cache/meta/3e/562652bd53e85d0bc7d64687757e303ea48222 +0 -0
  302. data/spec/dummy/tmp/dragonfly/cache/meta/43/702b0bbf40751e03a371beae7ea632759c5ea6 +0 -0
  303. data/spec/dummy/tmp/dragonfly/cache/meta/45/020eb4a6714d210708295c8ee035a4f3b7de83 +0 -0
  304. data/spec/dummy/tmp/dragonfly/cache/meta/48/7c10db8b3443e652bb29571e0d89047910a445 +0 -0
  305. data/spec/dummy/tmp/dragonfly/cache/meta/4a/3fe383956f715c58307fabf5bfb570c8a67e11 +0 -0
  306. data/spec/dummy/tmp/dragonfly/cache/meta/50/4770d4cf47ce6afb7c72a1567e905bf675c839 +0 -0
  307. data/spec/dummy/tmp/dragonfly/cache/meta/50/943f7d303380468ae97ead7a5bf0e1c1f8086d +0 -0
  308. data/spec/dummy/tmp/dragonfly/cache/meta/52/a583ca59703de87825993806932eb7d96caf2d +0 -0
  309. data/spec/dummy/tmp/dragonfly/cache/meta/54/0548820189fdaa43dbfb96b14b68f21c6bcb77 +0 -0
  310. data/spec/dummy/tmp/dragonfly/cache/meta/54/27caab4a86e3c5083f6518f7535237a1afacfe +0 -0
  311. data/spec/dummy/tmp/dragonfly/cache/meta/55/5287ec64800a3fcc45b8f1bb72783a587f985d +0 -0
  312. data/spec/dummy/tmp/dragonfly/cache/meta/55/d75e83a1828c54c29d77ba3e37d8acf60eca48 +0 -0
  313. data/spec/dummy/tmp/dragonfly/cache/meta/56/bd3c3414d3e5b00ce6f8ffd95e3e941023bc27 +0 -0
  314. data/spec/dummy/tmp/dragonfly/cache/meta/58/77f8c256d79478ae60b730ee8e5614054e8acc +0 -0
  315. data/spec/dummy/tmp/dragonfly/cache/meta/59/b107c2482241bb885a455a7494baa91fb2e9ac +0 -0
  316. data/spec/dummy/tmp/dragonfly/cache/meta/5b/6af4cec711a1bcd6162bb57ab1a29a65682911 +0 -0
  317. data/spec/dummy/tmp/dragonfly/cache/meta/5d/49b63b9a30126b92cc9da36b66cfa9fd98fcc7 +0 -0
  318. data/spec/dummy/tmp/dragonfly/cache/meta/5d/f66c848a944876e92afa404de35542dc4a32ae +0 -0
  319. data/spec/dummy/tmp/dragonfly/cache/meta/5e/dc50712811d3e015564504fc9d403fe394de03 +0 -0
  320. data/spec/dummy/tmp/dragonfly/cache/meta/5e/ed91855a3f24c0f00262ded4df514dc8dcbc08 +0 -0
  321. data/spec/dummy/tmp/dragonfly/cache/meta/60/704074fdaa94c38f14c546ae8fee8f620e267a +0 -0
  322. data/spec/dummy/tmp/dragonfly/cache/meta/61/8f6794a8901c3a2ab4f1589f7df81900b572dc +0 -0
  323. data/spec/dummy/tmp/dragonfly/cache/meta/62/c2ca4a7f20556ff30cca9b790cca084d7a390d +0 -0
  324. data/spec/dummy/tmp/dragonfly/cache/meta/63/518bddc965fc8487603b0c3bf092a80c38477e +0 -0
  325. data/spec/dummy/tmp/dragonfly/cache/meta/63/bf4d2c9bc392450f2ac6d1f7496b839ee454b9 +0 -0
  326. data/spec/dummy/tmp/dragonfly/cache/meta/63/cbe524f36165978e1fb04ca4057bc8947b4fc5 +0 -0
  327. data/spec/dummy/tmp/dragonfly/cache/meta/6d/8b818c9e4f6b2881f1bc3c550f58617d42bdb9 +0 -0
  328. data/spec/dummy/tmp/dragonfly/cache/meta/6e/b5cce94866bc035e3f429e2842c0cb69d63da4 +0 -0
  329. data/spec/dummy/tmp/dragonfly/cache/meta/6f/076ed360b15b231a40805f61b2da5772bfb221 +0 -0
  330. data/spec/dummy/tmp/dragonfly/cache/meta/70/dce1910c6984688621073f713d7169c35feb54 +0 -0
  331. data/spec/dummy/tmp/dragonfly/cache/meta/71/05e840d712109887350f57a04e51c4dc7a26e5 +0 -0
  332. data/spec/dummy/tmp/dragonfly/cache/meta/71/eb1ef012700276c3cf36167daa10b9e8643ae8 +0 -0
  333. data/spec/dummy/tmp/dragonfly/cache/meta/77/68198b3edcbc98e4d60d311541c463350e3728 +0 -0
  334. data/spec/dummy/tmp/dragonfly/cache/meta/78/83c78396c867870da0cd76ea909443e5d44099 +0 -0
  335. data/spec/dummy/tmp/dragonfly/cache/meta/7b/6a84124a16fe524603c9cf185bf3fccd1a82db +0 -0
  336. data/spec/dummy/tmp/dragonfly/cache/meta/7c/c593a941b74058d9dd6f8de6dadd0ca3f01ce2 +0 -0
  337. data/spec/dummy/tmp/dragonfly/cache/meta/7e/3cba0fb1a67914183d1456d8961aa7238b3c53 +0 -0
  338. data/spec/dummy/tmp/dragonfly/cache/meta/82/1f3cf478625e91439be0080afa45c73a36560c +0 -0
  339. data/spec/dummy/tmp/dragonfly/cache/meta/82/6c888ad86553d814ace418e3abd4deaf5cdfad +0 -0
  340. data/spec/dummy/tmp/dragonfly/cache/meta/87/ade90ce9b9e5b48628429230ae1f7a16a59d5b +0 -0
  341. data/spec/dummy/tmp/dragonfly/cache/meta/89/87a8ec1db508b9d1cc8d216da2e68ef8e449d1 +0 -0
  342. data/spec/dummy/tmp/dragonfly/cache/meta/8b/5c8d086629bb5279538e65a9d078070aa31d09 +0 -0
  343. data/spec/dummy/tmp/dragonfly/cache/meta/95/6748212bc6bc99f4c2af0d0f062f4b51089bca +0 -0
  344. data/spec/dummy/tmp/dragonfly/cache/meta/98/593cefcf95462a07ac8790602b4f6b9874a503 +0 -0
  345. data/spec/dummy/tmp/dragonfly/cache/meta/99/1dc71739fe7f6b4a360c6dcbb7c10a803cc88d +0 -0
  346. data/spec/dummy/tmp/dragonfly/cache/meta/99/dfd655a2d6dedb542e8911103673df6813e09b +0 -0
  347. data/spec/dummy/tmp/dragonfly/cache/meta/9d/6427cbe1ad41f13a645f3a04fab8cf2d02b25c +0 -0
  348. data/spec/dummy/tmp/dragonfly/cache/meta/a2/e5f3cfb21435bfa5d43f89e59c7c42f866a5ab +0 -0
  349. data/spec/dummy/tmp/dragonfly/cache/meta/a3/f5401f93017771fc2fd2a576687fc94c901efe +0 -0
  350. data/spec/dummy/tmp/dragonfly/cache/meta/a5/c076b9c9e2bbe381d9da35b6a4be3482f9b467 +0 -0
  351. data/spec/dummy/tmp/dragonfly/cache/meta/a7/0e4deb8655f5bc0a438d5296e3233a61781c9a +0 -0
  352. data/spec/dummy/tmp/dragonfly/cache/meta/ad/468b3257b9f15364e3c14521c7156817a4da21 +0 -0
  353. data/spec/dummy/tmp/dragonfly/cache/meta/b2/000054cf2e7e1f58bf3c08fa39d62be4305ba5 +0 -0
  354. data/spec/dummy/tmp/dragonfly/cache/meta/b3/ade3801bca831d77311b8775f58409618d4397 +0 -0
  355. data/spec/dummy/tmp/dragonfly/cache/meta/b6/69bdb7bd4cce8b36db24a70d943a9e6eda28b5 +0 -0
  356. data/spec/dummy/tmp/dragonfly/cache/meta/bb/0d5212f03591c7e2b70970d2fdc92f9dfbf5a9 +0 -0
  357. data/spec/dummy/tmp/dragonfly/cache/meta/bc/d42573597c3a8138d72932efe0bcca04cfc114 +0 -0
  358. data/spec/dummy/tmp/dragonfly/cache/meta/be/3496757ca2979b580f5f0191ba640a5f5683c5 +0 -0
  359. data/spec/dummy/tmp/dragonfly/cache/meta/c2/6ba0779ad6a0654d859078199b31018e726ce5 +0 -0
  360. data/spec/dummy/tmp/dragonfly/cache/meta/c4/48ce336ecd015fad01c9efacc946d94b026679 +0 -0
  361. data/spec/dummy/tmp/dragonfly/cache/meta/c4/da04322cf51782fe995b358c03f1868caf1eb0 +0 -0
  362. data/spec/dummy/tmp/dragonfly/cache/meta/c4/e7e0e31075042edd76c18f51a80aa314af4e2e +0 -0
  363. data/spec/dummy/tmp/dragonfly/cache/meta/ca/bc9d54040906d1ad8f5ddbcf196b45fcb27baf +0 -0
  364. data/spec/dummy/tmp/dragonfly/cache/meta/d5/1f6e6f6c1662bba33ccf23600aa5fd8f5a4198 +0 -0
  365. data/spec/dummy/tmp/dragonfly/cache/meta/d8/b42059897a076ebe3ecd9f2ac804e00731eb21 +0 -0
  366. data/spec/dummy/tmp/dragonfly/cache/meta/da/847e0b976733e541ad07068b99f17e9a433cd0 +0 -0
  367. data/spec/dummy/tmp/dragonfly/cache/meta/dc/2213ae0195942ae47f4cad0a12f29b3d52211b +0 -0
  368. data/spec/dummy/tmp/dragonfly/cache/meta/de/7a810d16f1beefaf7ac39de3cc007ee79c0110 +0 -0
  369. data/spec/dummy/tmp/dragonfly/cache/meta/e0/37fa0e09d8a706b5ab6f40f3e6c2fa936970a6 +0 -0
  370. data/spec/dummy/tmp/dragonfly/cache/meta/e0/d7e7753b7f1fac358d68af693c1c8442d78671 +0 -0
  371. data/spec/dummy/tmp/dragonfly/cache/meta/e2/68afb905a52cd6d6ec835dc78a9c9fd6fbe301 +0 -0
  372. data/spec/dummy/tmp/dragonfly/cache/meta/e3/69c2a7f86f7b9aad9e5f756b5e2e426a3606e4 +0 -0
  373. data/spec/dummy/tmp/dragonfly/cache/meta/e6/48405be188e838668f52a3778bd73290978408 +0 -0
  374. data/spec/dummy/tmp/dragonfly/cache/meta/e8/bb3505e4186320f36c88c2e70e454d927d950c +0 -0
  375. data/spec/dummy/tmp/dragonfly/cache/meta/ed/2e3f54eca83173c463e0e53850ed982bb869db +0 -0
  376. data/spec/dummy/tmp/dragonfly/cache/meta/ed/c2fcf0d93ab7d359eb8bc0163eedb4738097b4 +0 -0
  377. data/spec/dummy/tmp/dragonfly/cache/meta/f0/50dae94cad6ed3e5a1ea4e83a01bc4dcec5a82 +0 -0
  378. data/spec/dummy/tmp/dragonfly/cache/meta/f4/7577e404263c5777cb88db1cae95c1349af5f6 +0 -0
  379. data/spec/dummy/tmp/dragonfly/cache/meta/f4/b36659a3489697301cb5bbfea8dbac5dde016b +0 -0
  380. data/spec/dummy/tmp/dragonfly/cache/meta/f4/e8244ce90982cc01cc38af192b5d3fa6682a23 +0 -0
  381. data/spec/dummy/tmp/dragonfly/cache/meta/f5/f5d3057bde5861abe914e9b67b2e355a784578 +0 -0
  382. data/spec/dummy/tmp/dragonfly/cache/meta/f7/29c855fa25d057110a2b80da3a168b7e56f44e +0 -0
  383. data/spec/dummy/tmp/dragonfly/cache/meta/f7/850587a39dff30c3761e6854478a8849ccc73a +0 -0
  384. data/spec/dummy/tmp/dragonfly/cache/meta/f9/73c328a353105d46408715e9de0742a0430b6a +0 -0
  385. data/spec/dummy/tmp/dragonfly/cache/meta/fb/3540163ca67855d921a195375dfdc10ebd46f3 +0 -0
  386. data/spec/dummy/tmp/dragonfly/cache/meta/fb/4ce7caeb7ba3e324503aee732cdc35dca56fd4 +0 -0
  387. data/spec/dummy/tmp/dragonfly/cache/meta/fb/c5bc26c7cb370fff36e4490d21834618f9c306 +0 -0
  388. data/spec/dummy/tmp/dragonfly/cache/meta/fd/68557882a85d20ecc2e380d45041d44a5d0412 +0 -0
  389. data/spec/dummy/tmp/index/development/refinery/page/100_105_103.ind +1 -0
  390. data/spec/dummy/tmp/index/development/refinery/page/100_105_97.ind +1 -0
  391. data/spec/dummy/tmp/index/development/refinery/page/100_105_99.ind +1 -0
  392. data/spec/dummy/tmp/index/development/refinery/page/100_111_108.ind +2 -0
  393. data/spec/dummy/tmp/index/development/refinery/page/100_111_110.ind +2 -0
  394. data/spec/dummy/tmp/index/development/refinery/page/100_117_105.ind +0 -0
  395. data/spec/dummy/tmp/index/development/refinery/page/100_97_112.ind +1 -0
  396. data/spec/dummy/tmp/index/development/refinery/page/101_103_101.ind +0 -0
  397. data/spec/dummy/tmp/index/development/refinery/page/101_108_105.ind +1 -0
  398. data/spec/dummy/tmp/index/development/refinery/page/101_110_105.ind +1 -0
  399. data/spec/dummy/tmp/index/development/refinery/page/101_114_111.ind +1 -0
  400. data/spec/dummy/tmp/index/development/refinery/page/101_114_97.ind +1 -0
  401. data/spec/dummy/tmp/index/development/refinery/page/101_115_116.ind +1 -0
  402. data/spec/dummy/tmp/index/development/refinery/page/101_116.ind +1 -0
  403. data/spec/dummy/tmp/index/development/refinery/page/101_116_105.ind +2 -0
  404. data/spec/dummy/tmp/index/development/refinery/page/101_117_105.ind +1 -0
  405. data/spec/dummy/tmp/index/development/refinery/page/101_120_97.ind +1 -0
  406. data/spec/dummy/tmp/index/development/refinery/page/102_101_108.ind +2 -0
  407. data/spec/dummy/tmp/index/development/refinery/page/102_111_117.ind +2 -0
  408. data/spec/dummy/tmp/index/development/refinery/page/102_114_105.ind +1 -0
  409. data/spec/dummy/tmp/index/development/refinery/page/103_97_116.ind +1 -0
  410. data/spec/dummy/tmp/index/development/refinery/page/104_101_110.ind +1 -0
  411. data/spec/dummy/tmp/index/development/refinery/page/104_101_114.ind +1 -0
  412. data/spec/dummy/tmp/index/development/refinery/page/104_105_109.ind +1 -0
  413. data/spec/dummy/tmp/index/development/refinery/page/104_111_108.ind +1 -0
  414. data/spec/dummy/tmp/index/development/refinery/page/104_111_109.ind +0 -0
  415. data/spec/dummy/tmp/index/development/refinery/page/104_114_101.ind +1 -0
  416. data/spec/dummy/tmp/index/development/refinery/page/104_50.ind +1 -0
  417. data/spec/dummy/tmp/index/development/refinery/page/104_97_98.ind +1 -0
  418. data/spec/dummy/tmp/index/development/refinery/page/104_97_99.ind +1 -0
  419. data/spec/dummy/tmp/index/development/refinery/page/105_100.ind +1 -0
  420. data/spec/dummy/tmp/index/development/refinery/page/105_109_112.ind +1 -0
  421. data/spec/dummy/tmp/index/development/refinery/page/105_110.ind +1 -0
  422. data/spec/dummy/tmp/index/development/refinery/page/105_110_116.ind +0 -0
  423. data/spec/dummy/tmp/index/development/refinery/page/105_110_99.ind +1 -0
  424. data/spec/dummy/tmp/index/development/refinery/page/105_112_115.ind +2 -0
  425. data/spec/dummy/tmp/index/development/refinery/page/105_115.ind +1 -0
  426. data/spec/dummy/tmp/index/development/refinery/page/105_97_99.ind +1 -0
  427. data/spec/dummy/tmp/index/development/refinery/page/106_117_115.ind +1 -0
  428. data/spec/dummy/tmp/index/development/refinery/page/108_101_111.ind +1 -0
  429. data/spec/dummy/tmp/index/development/refinery/page/108_101_99.ind +1 -0
  430. data/spec/dummy/tmp/index/development/refinery/page/108_105_103.ind +1 -0
  431. data/spec/dummy/tmp/index/development/refinery/page/108_105_116.ind +1 -0
  432. data/spec/dummy/tmp/index/development/refinery/page/108_105_98.ind +1 -0
  433. data/spec/dummy/tmp/index/development/refinery/page/108_111_114.ind +2 -0
  434. data/spec/dummy/tmp/index/development/refinery/page/108_117_99.ind +1 -0
  435. data/spec/dummy/tmp/index/development/refinery/page/108_97_99.ind +2 -0
  436. data/spec/dummy/tmp/index/development/refinery/page/109_101_116.ind +2 -0
  437. data/spec/dummy/tmp/index/development/refinery/page/109_105.ind +1 -0
  438. data/spec/dummy/tmp/index/development/refinery/page/109_111_108.ind +1 -0
  439. data/spec/dummy/tmp/index/development/refinery/page/109_111_114.ind +2 -0
  440. data/spec/dummy/tmp/index/development/refinery/page/109_97_103.ind +2 -0
  441. data/spec/dummy/tmp/index/development/refinery/page/109_97_116.ind +1 -0
  442. data/spec/dummy/tmp/index/development/refinery/page/109_97_117.ind +1 -0
  443. data/spec/dummy/tmp/index/development/refinery/page/110_101_99.ind +1 -0
  444. data/spec/dummy/tmp/index/development/refinery/page/110_105_115.ind +1 -0
  445. data/spec/dummy/tmp/index/development/refinery/page/110_105_98.ind +1 -0
  446. data/spec/dummy/tmp/index/development/refinery/page/110_111_115.ind +1 -0
  447. data/spec/dummy/tmp/index/development/refinery/page/110_111_116.ind +1 -0
  448. data/spec/dummy/tmp/index/development/refinery/page/110_117_108.ind +0 -0
  449. data/spec/dummy/tmp/index/development/refinery/page/110_117_110.ind +1 -0
  450. data/spec/dummy/tmp/index/development/refinery/page/111_100_105.ind +1 -0
  451. data/spec/dummy/tmp/index/development/refinery/page/111_102.ind +1 -0
  452. data/spec/dummy/tmp/index/development/refinery/page/111_114_99.ind +1 -0
  453. data/spec/dummy/tmp/index/development/refinery/page/111_117_114.ind +1 -0
  454. data/spec/dummy/tmp/index/development/refinery/page/111_118_101.ind +1 -0
  455. data/spec/dummy/tmp/index/development/refinery/page/112.ind +1 -0
  456. data/spec/dummy/tmp/index/development/refinery/page/112_101_100.ind +1 -0
  457. data/spec/dummy/tmp/index/development/refinery/page/112_101_108.ind +1 -0
  458. data/spec/dummy/tmp/index/development/refinery/page/112_101_114.ind +1 -0
  459. data/spec/dummy/tmp/index/development/refinery/page/112_108_97.ind +0 -0
  460. data/spec/dummy/tmp/index/development/refinery/page/112_111_115.ind +1 -0
  461. data/spec/dummy/tmp/index/development/refinery/page/112_114_111.ind +0 -0
  462. data/spec/dummy/tmp/index/development/refinery/page/112_114_97.ind +1 -0
  463. data/spec/dummy/tmp/index/development/refinery/page/112_117_108.ind +1 -0
  464. data/spec/dummy/tmp/index/development/refinery/page/112_117_114.ind +2 -0
  465. data/spec/dummy/tmp/index/development/refinery/page/112_97_103.ind +0 -0
  466. data/spec/dummy/tmp/index/development/refinery/page/113_117_105.ind +1 -0
  467. data/spec/dummy/tmp/index/development/refinery/page/114_101_113.ind +1 -0
  468. data/spec/dummy/tmp/index/development/refinery/page/114_101_116.ind +1 -0
  469. data/spec/dummy/tmp/index/development/refinery/page/114_104_111.ind +1 -0
  470. data/spec/dummy/tmp/index/development/refinery/page/114_105_115.ind +2 -0
  471. data/spec/dummy/tmp/index/development/refinery/page/115_101_100.ind +1 -0
  472. data/spec/dummy/tmp/index/development/refinery/page/115_101_109.ind +1 -0
  473. data/spec/dummy/tmp/index/development/refinery/page/115_105_116.ind +0 -0
  474. data/spec/dummy/tmp/index/development/refinery/page/115_111_108.ind +1 -0
  475. data/spec/dummy/tmp/index/development/refinery/page/115_111_114.ind +2 -0
  476. data/spec/dummy/tmp/index/development/refinery/page/115_111_99.ind +1 -0
  477. data/spec/dummy/tmp/index/development/refinery/page/115_116_97.ind +1 -0
  478. data/spec/dummy/tmp/index/development/refinery/page/115_117_115.ind +0 -0
  479. data/spec/dummy/tmp/index/development/refinery/page/115_97_103.ind +1 -0
  480. data/spec/dummy/tmp/index/development/refinery/page/116_101_108.ind +1 -0
  481. data/spec/dummy/tmp/index/development/refinery/page/116_101_120.ind +1 -0
  482. data/spec/dummy/tmp/index/development/refinery/page/116_104_101.ind +0 -0
  483. data/spec/dummy/tmp/index/development/refinery/page/116_104_105.ind +1 -0
  484. data/spec/dummy/tmp/index/development/refinery/page/116_111.ind +1 -0
  485. data/spec/dummy/tmp/index/development/refinery/page/116_111_114.ind +0 -0
  486. data/spec/dummy/tmp/index/development/refinery/page/116_114_105.ind +1 -0
  487. data/spec/dummy/tmp/index/development/refinery/page/116_97_99.ind +1 -0
  488. data/spec/dummy/tmp/index/development/refinery/page/117_108_116.ind +1 -0
  489. data/spec/dummy/tmp/index/development/refinery/page/117_114_110.ind +1 -0
  490. data/spec/dummy/tmp/index/development/refinery/page/117_116.ind +1 -0
  491. data/spec/dummy/tmp/index/development/refinery/page/118_101_108.ind +2 -0
  492. data/spec/dummy/tmp/index/development/refinery/page/118_101_115.ind +1 -0
  493. data/spec/dummy/tmp/index/development/refinery/page/118_105_116.ind +2 -0
  494. data/spec/dummy/tmp/index/development/refinery/page/118_105_118.ind +0 -0
  495. data/spec/dummy/tmp/index/development/refinery/page/119_101.ind +1 -0
  496. data/spec/dummy/tmp/index/development/refinery/page/119_101_108.ind +1 -0
  497. data/spec/dummy/tmp/index/development/refinery/page/119_104_105.ind +2 -0
  498. data/spec/dummy/tmp/index/development/refinery/page/119_97_115.ind +1 -0
  499. data/spec/dummy/tmp/index/development/refinery/page/121_111_117.ind +1 -0
  500. data/spec/dummy/tmp/index/development/refinery/page/97.ind +2 -0
  501. data/spec/dummy/tmp/index/development/refinery/page/97_100.ind +1 -0
  502. data/spec/dummy/tmp/index/development/refinery/page/97_100_105.ind +1 -0
  503. data/spec/dummy/tmp/index/development/refinery/page/97_101_110.ind +1 -0
  504. data/spec/dummy/tmp/index/development/refinery/page/97_108_105.ind +0 -0
  505. data/spec/dummy/tmp/index/development/refinery/page/97_109_101.ind +1 -0
  506. data/spec/dummy/tmp/index/development/refinery/page/97_110_111.ind +1 -0
  507. data/spec/dummy/tmp/index/development/refinery/page/97_112_116.ind +1 -0
  508. data/spec/dummy/tmp/index/development/refinery/page/97_114_99.ind +1 -0
  509. data/spec/dummy/tmp/index/development/refinery/page/97_116.ind +1 -0
  510. data/spec/dummy/tmp/index/development/refinery/page/97_98_111.ind +0 -0
  511. data/spec/dummy/tmp/index/development/refinery/page/97_99.ind +1 -0
  512. data/spec/dummy/tmp/index/development/refinery/page/98_108_111.ind +2 -0
  513. data/spec/dummy/tmp/index/development/refinery/page/98_108_97.ind +1 -0
  514. data/spec/dummy/tmp/index/development/refinery/page/99_108_97.ind +2 -0
  515. data/spec/dummy/tmp/index/development/refinery/page/99_111_110.ind +0 -0
  516. data/spec/dummy/tmp/index/development/refinery/page/99_117_114.ind +1 -0
  517. data/spec/dummy/tmp/index/development/refinery/page/size +1 -0
  518. data/spec/dummy/tmp/index/development/refinery/page/version +1 -0
  519. data/spec/factories/factory.rb +16 -0
  520. data/spec/models/refinery/menus/menu_link_spec.rb +413 -0
  521. data/spec/models/refinery/menus/menu_spec.rb +82 -0
  522. data/spec/requests/refinery/menus/admin/manage_menus_spec.rb +181 -0
  523. data/spec/spec_helper.rb +67 -0
  524. metadata +1079 -59
  525. data/app/controllers/admin/menus_controller.rb +0 -7
  526. data/app/controllers/menus_controller.rb +0 -30
  527. data/app/models/menu.rb +0 -10
  528. data/app/views/admin/menus/_form.html.erb +0 -19
  529. data/app/views/admin/menus/_menu.html.erb +0 -20
  530. data/app/views/admin/menus/_sortable_list.html.erb +0 -4
  531. data/app/views/admin/menus/edit.html.erb +0 -1
  532. data/app/views/admin/menus/index.html.erb +0 -67
  533. data/app/views/admin/menus/new.html.erb +0 -1
  534. data/app/views/menus/index.html.erb +0 -11
  535. data/app/views/menus/show.html.erb +0 -25
  536. data/config/locales/nb.yml +0 -19
  537. data/config/locales/nl.yml +0 -19
  538. data/lib/generators/refinerycms_menus_generator.rb +0 -6
  539. data/lib/menus.rb +0 -20
  540. data/lib/tasks/menus.rake +0 -13
@@ -0,0 +1,27 @@
1
+ guard 'spork', :wait => 60, :cucumber => false, :rspec_env => { 'RAILS_ENV' => 'test' } do
2
+ watch('config/application.rb')
3
+ watch('config/environment.rb')
4
+ watch(%r{^config/environments/.+\.rb$})
5
+ watch(%r{^config/initializers/.+\.rb$})
6
+ watch('spec/spec_helper.rb')
7
+ watch(%r{^spec/support/.+\.rb$})
8
+ watch(%r{^vendor/extensions/(.+)/spec/support/.+\.rb$})
9
+ end
10
+
11
+ guard 'rspec', :version => 2, :cli => (['~/.rspec', '.rspec'].map{|f| File.read(File.expand_path(f)).split("\n").join(' ') if File.exists?(File.expand_path(f))}.join(' ')) do
12
+ watch(%r{^spec/.+_spec\.rb$})
13
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
14
+ watch('spec/spec_helper.rb') { "spec" }
15
+
16
+ # Rails example
17
+ watch(%r{^spec/.+_spec\.rb$})
18
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
19
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
20
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/requests/#{m[1]}_spec.rb"] }
21
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
22
+ watch('spec/spec_helper.rb') { "spec" }
23
+ watch('config/routes.rb') { "spec/routing" }
24
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
25
+ # Capybara request specs
26
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
27
+ end
@@ -0,0 +1,39 @@
1
+ jQuery =>
2
+ $('#form-container').css('min-height', $('#left_actions').height() + "px")
3
+
4
+ $('#sortable_list, .sortable_list').addClass("reordering")
5
+ list_reorder.sortable_list.nestedSortable("enable")
6
+
7
+ $('#sortable_list').on 'click', '.header', ->
8
+ $(this).siblings('.body').slideToggle()
9
+
10
+ $('#menu_form').submit (e) ->
11
+ save_structure($(this))
12
+
13
+ reset_custom_link_form()
14
+
15
+ reset_link_forms = () ->
16
+ reset_custom_link_form()
17
+ reset_resource_link_forms()
18
+
19
+ reset_custom_link_form = () ->
20
+ $('#menu_link_custom_url').val('http://')
21
+ $('#menu_link_label').val('')
22
+
23
+ reset_resource_link_forms = () ->
24
+ $('.resource-pp-add-box').find('input[type="checkbox"]').attr('checked', false)
25
+
26
+ save_structure = (form) ->
27
+ list_reorder.sortable_list.nestedSortable("disable")
28
+
29
+ $('#sortable_list, .sortable_list').removeClass("reordering")
30
+
31
+ if list_reorder.update_url != null
32
+ serialized_lists = list_reorder.sortable_list.serializelist()
33
+
34
+ for elem in serialized_lists.split('&')
35
+ if elem.length
36
+ input = $("<input>").attr("type", "hidden").attr("name", elem.split('=')[0]).val(elem.split('=')[1])
37
+ form.append(input)
38
+
39
+ window.reset_link_forms = reset_link_forms
@@ -0,0 +1,183 @@
1
+ .select_from{
2
+ display:block;
3
+ float:left;
4
+ width: 100%;
5
+ }
6
+
7
+ .select_to{
8
+ display:block;
9
+ float:left;
10
+ width: 100%;
11
+ }
12
+
13
+ .select_buttons {
14
+ display:inline-block;
15
+ float:left;
16
+ text-align:right;
17
+ padding-top: 180px;
18
+ width: 36px;
19
+ }
20
+
21
+
22
+ .pp-add-box {
23
+ background: #aaa;
24
+ margin-top: 20px;
25
+ padding: 15px;
26
+
27
+ h3 {
28
+ margin-top: 0;
29
+ }
30
+
31
+ input[type='text'] {
32
+ width: 210px;
33
+ }
34
+
35
+ label {
36
+ margin-top: 10px;
37
+ }
38
+
39
+ .pp-selection-box {
40
+ background: white;
41
+ max-height: 140px;
42
+ padding: 10px;
43
+ overflow-y: scroll;
44
+ border: 1px solid #7f9db9;
45
+ }
46
+ }
47
+
48
+ .pp-add-box .button {
49
+ margin-top: 15px;
50
+ }
51
+
52
+ #left_actions {
53
+ float: left;
54
+ width: 250px;
55
+
56
+ .controls a {
57
+ background-color: #dbedff;
58
+ background-position: 12px;
59
+ background-repeat: no-repeat;
60
+ border: 1px solid #65C3F7;
61
+ display: block;
62
+ padding: 9px 12px 9px 36px;
63
+
64
+ &:hover {
65
+ background-color: #cae7fb;
66
+ }
67
+ }
68
+
69
+ .resource-pp-add-box{
70
+ label {
71
+ display: inline;
72
+ font-weight: normal;
73
+ }
74
+ }
75
+
76
+
77
+ }
78
+
79
+ #pp-select-container {
80
+ position: relative;
81
+ }
82
+
83
+ #links-container {
84
+ #sortable_list {
85
+ padding: 10px 20px 20px 20px;
86
+ background: #eee;
87
+ width: 650px;
88
+ min-height: 400px;
89
+
90
+ list-style: none;
91
+
92
+ ul {
93
+ li {
94
+ list-style: none;
95
+ }
96
+ list-style: none;
97
+ }
98
+
99
+ .pp-placeholder {
100
+ margin-top: 10px;
101
+ cursor: default;
102
+ }
103
+ }
104
+
105
+ }
106
+
107
+
108
+ .pp-link {
109
+ position: relative;
110
+ margin-top: 10px!important;
111
+ list-style: none;
112
+
113
+ .header {
114
+ height: 20px;
115
+ line-height: 20px;
116
+ padding: 8px;
117
+ background: #c3e1ff;
118
+
119
+ &:hover {
120
+ background: #add6ff;
121
+ }
122
+
123
+ .type {
124
+ position: absolute;
125
+ top: 8px;
126
+ right: 36px;
127
+ }
128
+
129
+ .arrow {
130
+ background-repeat: no-repeat;
131
+ background-image: url(/assets/refinery/icons/down.gif);
132
+ background-position:center;
133
+ position: absolute;
134
+ right: 0px;
135
+ top: 0px;
136
+ width: 36px;
137
+ height: 36px;
138
+ cursor: pointer;
139
+ }
140
+ }
141
+
142
+ .body {
143
+ display: none;
144
+ background: #dbedff;
145
+ padding: 15px;
146
+
147
+ position: relative;
148
+
149
+ label {
150
+ display: inline-block;
151
+ margin-right: 10px;
152
+ margin-top: 0;
153
+ width: 100px;
154
+ text-align: right;
155
+ }
156
+
157
+ input {
158
+ width: 250px;
159
+ }
160
+
161
+ a.remove {
162
+ position: absolute;
163
+ right: 10px;
164
+ bottom: 10px;
165
+ cursor: pointer;
166
+ }
167
+
168
+ .original-resource {
169
+ display: inline-block;
170
+ margin: 5px 0;
171
+ }
172
+ }
173
+
174
+ }
175
+
176
+ #menu_form {
177
+ float: right;
178
+ width: 700px;
179
+ }
180
+
181
+ .field input[type=text] {
182
+ padding: 3px 5px;
183
+ }
@@ -0,0 +1,33 @@
1
+ module Refinery
2
+ module Menus
3
+ module Admin
4
+ class MenuLinksController < Refinery::AdminController
5
+
6
+ def create
7
+ respond_to do |format|
8
+ format.js do
9
+ @menu_links = []
10
+ if params[:refinery_resource_ids]
11
+ params[:refinery_resource_ids].each do |id|
12
+ @menu_links << MenuLink.create({refinery_resource_id: id}.merge(params[:menu_link]))
13
+ end
14
+ else
15
+ @menu_links << MenuLink.create(params[:menu_link])
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ def destroy
22
+ respond_to do |format|
23
+ format.js do
24
+ @menu_link = MenuLink.find(params[:id])
25
+ @menu_link.destroy
26
+ end
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,70 @@
1
+ module Refinery
2
+ module Menus
3
+ module Admin
4
+ class MenusController < ::Refinery::AdminController
5
+
6
+ crudify :'refinery/menus/menu',
7
+ :xhr_paging => true,
8
+ :sortable => false,
9
+ :include => [:links],
10
+ :redirect_to_url => "refinery.menus_admin_menus_path"
11
+
12
+ before_filter :find_menu_links, only: [:edit, :update]
13
+ before_filter :set_links_positions, only: [:create, :update]
14
+
15
+ private
16
+
17
+ # Based upon http://github.com/matenia/jQuery-Awesome-Nested-Set-Drag-and-Drop
18
+ def set_links_positions
19
+ previous = nil
20
+ # raise params.inspect
21
+ params[:ul].each do |_, list|
22
+ list.each do |index, hash|
23
+ moved_item_id = hash['id'].split(/menu_link\_?/).reject(&:empty?).first
24
+
25
+ if moved_item_id
26
+ current_link = @menu.links.find(moved_item_id) # Scope?
27
+
28
+ if current_link.respond_to?(:move_to_root)
29
+ if previous.present?
30
+ current_link.move_to_right_of(@menu.links.find(previous)) #SCOPE?
31
+ else
32
+ current_link.move_to_root
33
+ end
34
+ else
35
+ current_link.update_attributes :position => index
36
+ end
37
+
38
+ if hash['children'].present?
39
+ update_child_links_positions(hash, current_link)
40
+ end
41
+
42
+ previous = moved_item_id
43
+ end
44
+ end
45
+ end if params[:ul].present?
46
+
47
+ MenuLink.rebuild!
48
+ end
49
+
50
+ def update_child_links_positions(_node, link)
51
+ list = _node['children']['0']
52
+ list.each do |index, child|
53
+ child_id = child['id'].split(/menu_link\_?/).reject(&:empty?).first
54
+ child_link = @menu.links.find(child_id) # Scoped?
55
+ child_link.move_to_child_of(link)
56
+
57
+ if child['children'].present?
58
+ update_child_links_positions(child, child_link)
59
+ end
60
+ end
61
+ end
62
+
63
+ def find_menu_links
64
+ @menu_links = @menu.roots
65
+ end
66
+
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,21 @@
1
+ module Refinery
2
+ module Menus
3
+ class Menu < Refinery::Core::BaseModel
4
+ self.table_name = "refinery_menus"
5
+
6
+ has_many :links, :class_name => "::Refinery::Menus::MenuLink", :foreign_key => :refinery_menu_id, :dependent => :destroy, :order => "lft ASC"
7
+
8
+ validates :title, :presence => true, :uniqueness => true
9
+ validates :permatitle, :presence => true, :uniqueness => true
10
+ validates_associated :links
11
+
12
+ attr_accessible :title, :permatitle, :links, :links_attributes
13
+
14
+ accepts_nested_attributes_for :links, :allow_destroy => true
15
+
16
+ def roots
17
+ @roots ||= links.select {|pos| pos.parent_id.nil?}
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,134 @@
1
+ module Refinery
2
+ module Menus
3
+ class MenuLink < Refinery::Core::BaseModel
4
+ self.table_name = "refinery_menus_links"
5
+
6
+ attr_accessible :parent_id, :refinery_page_id, :refinery_menu_id, :refinery_resource_id, :refinery_resource_type,
7
+ :title_attribute, :custom_url, :label, :menu, :id_attribute, :class_attribute
8
+
9
+ belongs_to :menu, :class_name => '::Refinery::Menus::Menu', :foreign_key => :refinery_menu_id
10
+ belongs_to :resource, :foreign_key => :refinery_resource_id, :polymorphic => true
11
+
12
+ # Docs for acts_as_nested_set https://github.com/collectiveidea/awesome_nested_set
13
+ # rather than :delete_all we want :destroy
14
+ acts_as_nested_set :dependent => :destroy
15
+
16
+ validates :menu, :presence => true
17
+ validates :label, :presence => true
18
+
19
+ before_validation :set_label
20
+
21
+ def self.find_all_of_type(type)
22
+ # find all resources of the given type, determined by the configuration
23
+ # TODO - we may want to allow configuration of conditions (DONE), ordering, etc
24
+ if scope = self.resource_config(type)[:scope]
25
+ scope.is_a?(Symbol) ? resource_klass(type).send(scope) : resource_klass(type).instance_eval(&scope)
26
+ else
27
+ resource_klass(type).all
28
+ end
29
+ end
30
+
31
+ def self.resource_klass(type)
32
+ resource_config(type)[:klass].constantize
33
+ end
34
+
35
+ def self.resource_config(type)
36
+ Refinery::Menus.menu_resources[type.to_sym]
37
+ end
38
+
39
+ def set_label
40
+ if label.blank?
41
+ if custom_link?
42
+ begin
43
+ self.label = custom_url.match(/(\w+)\.\w+$/).captures.join.titleize
44
+ rescue
45
+ self.label = custom_url
46
+ end
47
+ else
48
+ self.label = resource.send(resource_config[:title_attr])
49
+ end
50
+ end
51
+ end
52
+
53
+ def resource_klass
54
+ Refinery::Menus::MenuLink.resource_klass(resource_type)
55
+ end
56
+
57
+ def resource_config
58
+ Refinery::Menus::MenuLink.resource_config(resource_type)
59
+ end
60
+
61
+ def resource_type
62
+ refinery_resource_type || "Custom link"
63
+ end
64
+
65
+ def type_name
66
+ resource_type.titleize
67
+ end
68
+
69
+ def custom_link?
70
+ refinery_resource_id.nil? || refinery_resource_type.nil?
71
+ end
72
+
73
+ def resource_link?
74
+ refinery_resource_id.present? && refinery_resource_type.present?
75
+ end
76
+
77
+ def resource
78
+ return nil if custom_link?
79
+ resource_klass.find(refinery_resource_id)
80
+ end
81
+
82
+ def resource_title
83
+ resource.send(resource_config[:title_attr])
84
+ end
85
+
86
+ def title
87
+ title_attribute.present? ? title_attribute : label
88
+ end
89
+
90
+ def resource_url
91
+ resource.present? ? resource.url : '/'
92
+ end
93
+
94
+ def url
95
+ if custom_link?
96
+ custom_url
97
+ else
98
+ resource_url
99
+ end
100
+ end
101
+
102
+ def as_json(options={})
103
+ json = super(options)
104
+ if resource_link?
105
+ json = {
106
+ resource: {
107
+ title: resource_title
108
+ }
109
+ }.merge(json)
110
+ end
111
+ json
112
+ end
113
+
114
+ def to_refinery_menu_item
115
+ {
116
+ :id => id,
117
+ :lft => lft,
118
+ :menu_match => menu_match,
119
+ :parent_id => parent_id,
120
+ :rgt => rgt,
121
+ :title => label,
122
+ :type => self.class.name,
123
+ :url => url,
124
+ :html => {
125
+ :id => id_attribute,
126
+ :class => class_attribute,
127
+ :title => title
128
+ }
129
+ }
130
+ end
131
+
132
+ end
133
+ end
134
+ end