refinerycms 0.9.6.19 → 0.9.6.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. data/.gems +0 -8
  2. data/.gitignore +3 -1
  3. data/Rakefile +1 -5
  4. data/VERSION +1 -1
  5. data/bin/refinery-update-core +11 -2
  6. data/config/application.rb +6 -1
  7. data/config/environments/development.rb +10 -6
  8. data/config/settings.rb +3 -0
  9. data/db/migrate/20100305023036_change_users_columns_for_authlogic.rb +46 -0
  10. data/db/migrate/20100305023037_remove_unused_users_columns.rb +16 -0
  11. data/db/migrate/20100312155331_make_user_perishable_token_nullable.rb +13 -0
  12. data/db/migrate/20100312160327_make_user_persistence_token_nullable.rb +13 -0
  13. data/db/migrate/20100315203301_remove_state_from_users.rb +9 -0
  14. data/db/schema.rb +8 -21
  15. data/db/seeds.rb +5 -19
  16. data/lib/refinery/tasks/refinery.rb +1 -1
  17. data/public/javascripts/admin.js +6 -2
  18. data/public/javascripts/jquery-ui-1.8.min.js +374 -0
  19. data/public/javascripts/jquery.js +606 -444
  20. data/public/javascripts/refinery/admin.js +30 -9
  21. data/public/javascripts/refinery/boot_wym.js +4 -0
  22. data/public/javascripts/wymeditor/jquery.refinery.wymeditor.js +3 -4
  23. data/public/stylesheets/refinery/refinery.css +11 -0
  24. data/public/stylesheets/wymeditor/skins/refinery/skin.css +3 -1
  25. data/public/stylesheets/wymeditor/skins/refinery/wymiframe.css +5 -5
  26. data/readme.md +13 -10
  27. data/test/fixtures/users.yml +5 -5
  28. data/test/functional/dashboard_controller_test.rb +0 -4
  29. data/test/functional/images_controller_test.rb +0 -3
  30. data/test/test_helper.rb +7 -3
  31. data/themes/hemingway/views/layouts/application.html.erb +1 -12
  32. data/vendor/plugins/authentication/app/controllers/admin/users_controller.rb +1 -3
  33. data/vendor/plugins/authentication/app/controllers/sessions_controller.rb +3 -14
  34. data/vendor/plugins/authentication/app/controllers/users_controller.rb +26 -37
  35. data/vendor/plugins/authentication/app/models/user.rb +29 -112
  36. data/vendor/plugins/authentication/app/models/user_mailer.rb +8 -5
  37. data/vendor/plugins/authentication/app/models/user_session.rb +9 -0
  38. data/vendor/plugins/authentication/app/views/admin/users/index.html.erb +1 -1
  39. data/vendor/plugins/authentication/app/views/sessions/new.html.erb +5 -4
  40. data/vendor/plugins/authentication/lib/authenticated_system.rb +40 -30
  41. data/vendor/plugins/authentication/rails/init.rb +9 -0
  42. data/vendor/plugins/authlogic/CHANGELOG.rdoc +345 -0
  43. data/vendor/plugins/authlogic/LICENSE +20 -0
  44. data/vendor/plugins/authlogic/README.rdoc +246 -0
  45. data/vendor/plugins/authlogic/Rakefile +42 -0
  46. data/vendor/plugins/authlogic/VERSION.yml +5 -0
  47. data/vendor/plugins/authlogic/authlogic.gemspec +217 -0
  48. data/vendor/plugins/authlogic/generators/session/session_generator.rb +9 -0
  49. data/vendor/plugins/authlogic/generators/session/templates/session.rb +2 -0
  50. data/vendor/plugins/authlogic/init.rb +1 -0
  51. data/vendor/plugins/authlogic/lib/authlogic.rb +64 -0
  52. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/base.rb +107 -0
  53. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/email.rb +110 -0
  54. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/logged_in_status.rb +60 -0
  55. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/login.rb +141 -0
  56. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/magic_columns.rb +24 -0
  57. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/password.rb +355 -0
  58. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/perishable_token.rb +105 -0
  59. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/persistence_token.rb +68 -0
  60. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/restful_authentication.rb +61 -0
  61. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/session_maintenance.rb +139 -0
  62. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/single_access_token.rb +65 -0
  63. data/vendor/plugins/authlogic/lib/authlogic/acts_as_authentic/validations_scope.rb +32 -0
  64. data/vendor/plugins/authlogic/lib/authlogic/authenticates_many/association.rb +42 -0
  65. data/vendor/plugins/authlogic/lib/authlogic/authenticates_many/base.rb +55 -0
  66. data/vendor/plugins/authlogic/lib/authlogic/controller_adapters/abstract_adapter.rb +67 -0
  67. data/vendor/plugins/authlogic/lib/authlogic/controller_adapters/merb_adapter.rb +30 -0
  68. data/vendor/plugins/authlogic/lib/authlogic/controller_adapters/rails_adapter.rb +48 -0
  69. data/vendor/plugins/authlogic/lib/authlogic/controller_adapters/sinatra_adapter.rb +61 -0
  70. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/aes256.rb +43 -0
  71. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/bcrypt.rb +90 -0
  72. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/md5.rb +34 -0
  73. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/sha1.rb +35 -0
  74. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/sha256.rb +50 -0
  75. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/sha512.rb +50 -0
  76. data/vendor/plugins/authlogic/lib/authlogic/crypto_providers/wordpress.rb +43 -0
  77. data/vendor/plugins/authlogic/lib/authlogic/i18n.rb +83 -0
  78. data/vendor/plugins/authlogic/lib/authlogic/i18n/translator.rb +15 -0
  79. data/vendor/plugins/authlogic/lib/authlogic/random.rb +33 -0
  80. data/vendor/plugins/authlogic/lib/authlogic/regex.rb +25 -0
  81. data/vendor/plugins/authlogic/lib/authlogic/session/activation.rb +58 -0
  82. data/vendor/plugins/authlogic/lib/authlogic/session/active_record_trickery.rb +64 -0
  83. data/vendor/plugins/authlogic/lib/authlogic/session/base.rb +37 -0
  84. data/vendor/plugins/authlogic/lib/authlogic/session/brute_force_protection.rb +96 -0
  85. data/vendor/plugins/authlogic/lib/authlogic/session/callbacks.rb +99 -0
  86. data/vendor/plugins/authlogic/lib/authlogic/session/cookies.rb +130 -0
  87. data/vendor/plugins/authlogic/lib/authlogic/session/existence.rb +93 -0
  88. data/vendor/plugins/authlogic/lib/authlogic/session/foundation.rb +63 -0
  89. data/vendor/plugins/authlogic/lib/authlogic/session/http_auth.rb +58 -0
  90. data/vendor/plugins/authlogic/lib/authlogic/session/id.rb +41 -0
  91. data/vendor/plugins/authlogic/lib/authlogic/session/klass.rb +78 -0
  92. data/vendor/plugins/authlogic/lib/authlogic/session/magic_columns.rb +95 -0
  93. data/vendor/plugins/authlogic/lib/authlogic/session/magic_states.rb +59 -0
  94. data/vendor/plugins/authlogic/lib/authlogic/session/params.rb +101 -0
  95. data/vendor/plugins/authlogic/lib/authlogic/session/password.rb +240 -0
  96. data/vendor/plugins/authlogic/lib/authlogic/session/perishable_token.rb +18 -0
  97. data/vendor/plugins/authlogic/lib/authlogic/session/persistence.rb +70 -0
  98. data/vendor/plugins/authlogic/lib/authlogic/session/priority_record.rb +34 -0
  99. data/vendor/plugins/authlogic/lib/authlogic/session/scopes.rb +101 -0
  100. data/vendor/plugins/authlogic/lib/authlogic/session/session.rb +62 -0
  101. data/vendor/plugins/authlogic/lib/authlogic/session/timeout.rb +82 -0
  102. data/vendor/plugins/authlogic/lib/authlogic/session/unauthorized_record.rb +50 -0
  103. data/vendor/plugins/authlogic/lib/authlogic/session/validation.rb +82 -0
  104. data/vendor/plugins/authlogic/lib/authlogic/test_case.rb +120 -0
  105. data/vendor/plugins/authlogic/lib/authlogic/test_case/mock_controller.rb +45 -0
  106. data/vendor/plugins/authlogic/lib/authlogic/test_case/mock_cookie_jar.rb +14 -0
  107. data/vendor/plugins/authlogic/lib/authlogic/test_case/mock_logger.rb +10 -0
  108. data/vendor/plugins/authlogic/lib/authlogic/test_case/mock_request.rb +19 -0
  109. data/vendor/plugins/authlogic/lib/authlogic/test_case/rails_request_adapter.rb +30 -0
  110. data/vendor/plugins/authlogic/rails/init.rb +1 -0
  111. data/vendor/plugins/authlogic/shoulda_macros/authlogic.rb +69 -0
  112. data/vendor/plugins/authlogic/test/acts_as_authentic_test/base_test.rb +18 -0
  113. data/vendor/plugins/authlogic/test/acts_as_authentic_test/email_test.rb +97 -0
  114. data/vendor/plugins/authlogic/test/acts_as_authentic_test/logged_in_status_test.rb +36 -0
  115. data/vendor/plugins/authlogic/test/acts_as_authentic_test/login_test.rb +109 -0
  116. data/vendor/plugins/authlogic/test/acts_as_authentic_test/magic_columns_test.rb +27 -0
  117. data/vendor/plugins/authlogic/test/acts_as_authentic_test/password_test.rb +236 -0
  118. data/vendor/plugins/authlogic/test/acts_as_authentic_test/perishable_token_test.rb +90 -0
  119. data/vendor/plugins/authlogic/test/acts_as_authentic_test/persistence_token_test.rb +55 -0
  120. data/vendor/plugins/authlogic/test/acts_as_authentic_test/restful_authentication_test.rb +40 -0
  121. data/vendor/plugins/authlogic/test/acts_as_authentic_test/session_maintenance_test.rb +84 -0
  122. data/vendor/plugins/authlogic/test/acts_as_authentic_test/single_access_test.rb +44 -0
  123. data/vendor/plugins/authlogic/test/authenticates_many_test.rb +16 -0
  124. data/vendor/plugins/authlogic/test/crypto_provider_test/aes256_test.rb +14 -0
  125. data/vendor/plugins/authlogic/test/crypto_provider_test/bcrypt_test.rb +14 -0
  126. data/vendor/plugins/authlogic/test/crypto_provider_test/sha1_test.rb +23 -0
  127. data/vendor/plugins/authlogic/test/crypto_provider_test/sha256_test.rb +14 -0
  128. data/vendor/plugins/authlogic/test/crypto_provider_test/sha512_test.rb +14 -0
  129. data/vendor/plugins/authlogic/test/fixtures/companies.yml +5 -0
  130. data/vendor/plugins/authlogic/test/fixtures/employees.yml +17 -0
  131. data/vendor/plugins/authlogic/test/fixtures/projects.yml +3 -0
  132. data/vendor/plugins/authlogic/test/fixtures/users.yml +24 -0
  133. data/vendor/plugins/authlogic/test/i18n_test.rb +33 -0
  134. data/vendor/plugins/authlogic/test/libs/affiliate.rb +7 -0
  135. data/vendor/plugins/authlogic/test/libs/company.rb +6 -0
  136. data/vendor/plugins/authlogic/test/libs/employee.rb +7 -0
  137. data/vendor/plugins/authlogic/test/libs/employee_session.rb +2 -0
  138. data/vendor/plugins/authlogic/test/libs/ldaper.rb +3 -0
  139. data/vendor/plugins/authlogic/test/libs/ordered_hash.rb +9 -0
  140. data/vendor/plugins/authlogic/test/libs/project.rb +3 -0
  141. data/vendor/plugins/authlogic/test/libs/user.rb +5 -0
  142. data/vendor/plugins/authlogic/test/libs/user_session.rb +6 -0
  143. data/vendor/plugins/authlogic/test/random_test.rb +49 -0
  144. data/vendor/plugins/authlogic/test/session_test/activation_test.rb +43 -0
  145. data/vendor/plugins/authlogic/test/session_test/active_record_trickery_test.rb +36 -0
  146. data/vendor/plugins/authlogic/test/session_test/brute_force_protection_test.rb +101 -0
  147. data/vendor/plugins/authlogic/test/session_test/callbacks_test.rb +6 -0
  148. data/vendor/plugins/authlogic/test/session_test/cookies_test.rb +112 -0
  149. data/vendor/plugins/authlogic/test/session_test/credentials_test.rb +0 -0
  150. data/vendor/plugins/authlogic/test/session_test/existence_test.rb +64 -0
  151. data/vendor/plugins/authlogic/test/session_test/http_auth_test.rb +28 -0
  152. data/vendor/plugins/authlogic/test/session_test/id_test.rb +17 -0
  153. data/vendor/plugins/authlogic/test/session_test/klass_test.rb +40 -0
  154. data/vendor/plugins/authlogic/test/session_test/magic_columns_test.rb +62 -0
  155. data/vendor/plugins/authlogic/test/session_test/magic_states_test.rb +60 -0
  156. data/vendor/plugins/authlogic/test/session_test/params_test.rb +53 -0
  157. data/vendor/plugins/authlogic/test/session_test/password_test.rb +106 -0
  158. data/vendor/plugins/authlogic/test/session_test/perishability_test.rb +15 -0
  159. data/vendor/plugins/authlogic/test/session_test/persistence_test.rb +21 -0
  160. data/vendor/plugins/authlogic/test/session_test/scopes_test.rb +60 -0
  161. data/vendor/plugins/authlogic/test/session_test/session_test.rb +59 -0
  162. data/vendor/plugins/authlogic/test/session_test/timeout_test.rb +52 -0
  163. data/vendor/plugins/authlogic/test/session_test/unauthorized_record_test.rb +13 -0
  164. data/vendor/plugins/authlogic/test/session_test/validation_test.rb +23 -0
  165. data/vendor/plugins/authlogic/test/test_helper.rb +182 -0
  166. data/vendor/plugins/dashboard/app/helpers/admin/dashboard_helper.rb +1 -1
  167. data/vendor/plugins/friendly_id/Changelog.md +243 -0
  168. data/vendor/plugins/friendly_id/Contributors.md +30 -0
  169. data/vendor/plugins/friendly_id/Gemfile +2 -0
  170. data/vendor/plugins/friendly_id/Guide.md +509 -0
  171. data/vendor/plugins/friendly_id/LICENSE +19 -0
  172. data/vendor/plugins/friendly_id/README.md +76 -0
  173. data/vendor/plugins/friendly_id/Rakefile +68 -0
  174. data/vendor/plugins/friendly_id/extras/README.txt +3 -0
  175. data/vendor/plugins/friendly_id/extras/bench.rb +59 -0
  176. data/vendor/plugins/friendly_id/extras/extras.rb +31 -0
  177. data/vendor/plugins/friendly_id/extras/prof.rb +14 -0
  178. data/vendor/plugins/friendly_id/extras/template-gem.rb +26 -0
  179. data/vendor/plugins/friendly_id/extras/template-plugin.rb +28 -0
  180. data/vendor/plugins/friendly_id/friendly_id.gemspec +40 -0
  181. data/vendor/plugins/friendly_id/generators/friendly_id/friendly_id_generator.rb +28 -0
  182. data/vendor/plugins/friendly_id/generators/friendly_id/templates/create_slugs.rb +18 -0
  183. data/vendor/plugins/friendly_id/lib/friendly_id.rb +67 -0
  184. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2.rb +47 -0
  185. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/configuration.rb +66 -0
  186. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/finders.rb +140 -0
  187. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/simple_model.rb +162 -0
  188. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/slug.rb +111 -0
  189. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/slugged_model.rb +323 -0
  190. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/tasks.rb +66 -0
  191. data/vendor/plugins/friendly_id/lib/friendly_id/active_record2/tasks/friendly_id.rake +19 -0
  192. data/vendor/plugins/friendly_id/lib/friendly_id/configuration.rb +132 -0
  193. data/vendor/plugins/friendly_id/lib/friendly_id/finders.rb +106 -0
  194. data/vendor/plugins/friendly_id/lib/friendly_id/slug_string.rb +292 -0
  195. data/vendor/plugins/friendly_id/lib/friendly_id/slugged.rb +91 -0
  196. data/vendor/plugins/friendly_id/lib/friendly_id/status.rb +35 -0
  197. data/vendor/plugins/friendly_id/lib/friendly_id/test.rb +175 -0
  198. data/vendor/plugins/friendly_id/lib/friendly_id/version.rb +8 -0
  199. data/vendor/plugins/friendly_id/rails/init.rb +2 -0
  200. data/vendor/plugins/friendly_id/test/active_record2/basic_slugged_model_test.rb +14 -0
  201. data/vendor/plugins/friendly_id/test/active_record2/cached_slug_test.rb +61 -0
  202. data/vendor/plugins/friendly_id/test/active_record2/core.rb +93 -0
  203. data/vendor/plugins/friendly_id/test/active_record2/custom_normalizer_test.rb +20 -0
  204. data/vendor/plugins/friendly_id/test/active_record2/custom_table_name_test.rb +22 -0
  205. data/vendor/plugins/friendly_id/test/active_record2/deprecated_test.rb +23 -0
  206. data/vendor/plugins/friendly_id/test/active_record2/scoped_model_test.rb +111 -0
  207. data/vendor/plugins/friendly_id/test/active_record2/simple_test.rb +59 -0
  208. data/vendor/plugins/friendly_id/test/active_record2/slug_test.rb +34 -0
  209. data/vendor/plugins/friendly_id/test/active_record2/slugged.rb +30 -0
  210. data/vendor/plugins/friendly_id/test/active_record2/slugged_status_test.rb +61 -0
  211. data/vendor/plugins/friendly_id/test/active_record2/sti_test.rb +22 -0
  212. data/vendor/plugins/friendly_id/test/active_record2/support/database.mysql.yml +4 -0
  213. data/vendor/plugins/friendly_id/test/active_record2/support/database.postgres.yml +6 -0
  214. data/vendor/plugins/friendly_id/test/active_record2/support/database.sqlite3.yml +2 -0
  215. data/vendor/plugins/friendly_id/test/active_record2/support/models.rb +78 -0
  216. data/vendor/plugins/friendly_id/test/active_record2/tasks_test.rb +82 -0
  217. data/vendor/plugins/friendly_id/test/active_record2/test_helper.rb +114 -0
  218. data/vendor/plugins/friendly_id/test/friendly_id_test.rb +60 -0
  219. data/vendor/plugins/friendly_id/test/slug_string_test.rb +78 -0
  220. data/vendor/plugins/friendly_id/test/test_helper.rb +9 -0
  221. data/vendor/plugins/hpricot/CHANGELOG +88 -0
  222. data/vendor/plugins/hpricot/COPYING +18 -0
  223. data/vendor/plugins/hpricot/README +275 -0
  224. data/vendor/plugins/hpricot/Rakefile +272 -0
  225. data/vendor/plugins/hpricot/ext/fast_xs/FastXsService.java +1030 -0
  226. data/vendor/plugins/hpricot/ext/fast_xs/extconf.rb +4 -0
  227. data/vendor/plugins/hpricot/ext/fast_xs/fast_xs.c +201 -0
  228. data/vendor/plugins/hpricot/ext/hpricot_scan/HpricotCss.java +831 -0
  229. data/vendor/plugins/hpricot/ext/hpricot_scan/HpricotScanService.java +2086 -0
  230. data/vendor/plugins/hpricot/ext/hpricot_scan/MANIFEST +0 -0
  231. data/vendor/plugins/hpricot/ext/hpricot_scan/extconf.rb +6 -0
  232. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_common.rl +76 -0
  233. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_css.c +3503 -0
  234. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_css.java.rl +155 -0
  235. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_css.rl +115 -0
  236. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_scan.c +6927 -0
  237. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_scan.h +79 -0
  238. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_scan.java.rl +1152 -0
  239. data/vendor/plugins/hpricot/ext/hpricot_scan/hpricot_scan.rl +788 -0
  240. data/vendor/plugins/hpricot/extras/mingw-rbconfig.rb +176 -0
  241. data/vendor/plugins/hpricot/hpricot.gemspec +17 -0
  242. data/vendor/plugins/hpricot/lib/hpricot.rb +26 -0
  243. data/vendor/plugins/hpricot/lib/hpricot/blankslate.rb +63 -0
  244. data/vendor/plugins/hpricot/lib/hpricot/builder.rb +216 -0
  245. data/vendor/plugins/hpricot/lib/hpricot/elements.rb +510 -0
  246. data/vendor/plugins/hpricot/lib/hpricot/htmlinfo.rb +691 -0
  247. data/vendor/plugins/hpricot/lib/hpricot/inspect.rb +103 -0
  248. data/vendor/plugins/hpricot/lib/hpricot/modules.rb +40 -0
  249. data/vendor/plugins/hpricot/lib/hpricot/parse.rb +38 -0
  250. data/vendor/plugins/hpricot/lib/hpricot/tag.rb +219 -0
  251. data/vendor/plugins/hpricot/lib/hpricot/tags.rb +164 -0
  252. data/vendor/plugins/hpricot/lib/hpricot/traverse.rb +839 -0
  253. data/vendor/plugins/hpricot/lib/hpricot/xchar.rb +94 -0
  254. data/vendor/plugins/hpricot/setup.rb +1585 -0
  255. data/vendor/plugins/hpricot/test/files/basic.xhtml +17 -0
  256. data/vendor/plugins/hpricot/test/files/boingboing.html +2266 -0
  257. data/vendor/plugins/hpricot/test/files/cy0.html +3653 -0
  258. data/vendor/plugins/hpricot/test/files/immob.html +400 -0
  259. data/vendor/plugins/hpricot/test/files/pace_application.html +1320 -0
  260. data/vendor/plugins/hpricot/test/files/tenderlove.html +16 -0
  261. data/vendor/plugins/hpricot/test/files/uswebgen.html +220 -0
  262. data/vendor/plugins/hpricot/test/files/utf8.html +1054 -0
  263. data/vendor/plugins/hpricot/test/files/week9.html +1723 -0
  264. data/vendor/plugins/hpricot/test/files/why.xml +19 -0
  265. data/vendor/plugins/hpricot/test/load_files.rb +7 -0
  266. data/vendor/plugins/hpricot/test/nokogiri-bench.rb +64 -0
  267. data/vendor/plugins/hpricot/test/test_alter.rb +96 -0
  268. data/vendor/plugins/hpricot/test/test_builder.rb +37 -0
  269. data/vendor/plugins/hpricot/test/test_parser.rb +428 -0
  270. data/vendor/plugins/hpricot/test/test_paths.rb +25 -0
  271. data/vendor/plugins/hpricot/test/test_preserved.rb +88 -0
  272. data/vendor/plugins/hpricot/test/test_xml.rb +28 -0
  273. data/vendor/plugins/inquiries/app/controllers/admin/inquiries_controller.rb +1 -6
  274. data/vendor/plugins/inquiries/app/helpers/inquiries_helper.rb +0 -11
  275. data/vendor/plugins/inquiries/app/views/admin/inquiries/_inquiry.html.erb +10 -6
  276. data/vendor/plugins/inquiries/app/views/inquiry_mailer/confirmation.html.erb +1 -1
  277. data/vendor/plugins/inquiries/config/routes.rb +1 -1
  278. data/vendor/plugins/pages/app/controllers/admin/pages_controller.rb +16 -3
  279. data/vendor/plugins/pages/app/models/page_part.rb +9 -0
  280. data/vendor/plugins/rails_indexes/lib/indexer.rb +0 -2
  281. data/vendor/plugins/refinery/app/views/admin/_head.html.erb +2 -1
  282. data/vendor/plugins/refinery/app/views/shared/_head.html.erb +0 -1
  283. data/vendor/plugins/refinery/app/views/shared/_ie6check.html.erb +23 -11
  284. data/vendor/plugins/refinery/app/views/welcome.html.erb +1 -1
  285. data/vendor/plugins/refinery/app/views/wymiframe.html.erb +2 -1
  286. data/vendor/plugins/refinery/lib/generators/refinery/USAGE +1 -1
  287. data/vendor/plugins/refinery/lib/generators/refinery/templates/migration.rb +2 -2
  288. data/vendor/plugins/refinery/lib/generators/refinery/templates/model.rb +4 -0
  289. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/admin/_form.html.erb +6 -0
  290. data/vendor/plugins/refinery/lib/generators/refinery/templates/views/show.html.erb +5 -3
  291. data/vendor/plugins/refinery/lib/refinery/application_helper.rb +2 -2
  292. data/vendor/plugins/refinery/lib/refinery/initializer.rb +4 -41
  293. data/vendor/plugins/refinery_settings/app/models/refinery_setting.rb +7 -3
  294. data/vendor/plugins/slim_scrooge/README.textile +112 -0
  295. data/vendor/plugins/slim_scrooge/Rakefile +29 -0
  296. data/vendor/plugins/slim_scrooge/VERSION.yml +5 -0
  297. data/vendor/plugins/slim_scrooge/ext/Rakefile +42 -0
  298. data/vendor/plugins/slim_scrooge/ext/extconf.rb +5 -0
  299. data/vendor/plugins/slim_scrooge/lib/slim_scrooge.rb +16 -0
  300. data/vendor/plugins/slim_scrooge/lib/slim_scrooge/callsite.rb +96 -0
  301. data/vendor/plugins/slim_scrooge/lib/slim_scrooge/callsites.rb +70 -0
  302. data/vendor/plugins/slim_scrooge/lib/slim_scrooge/monitored_hash.rb +103 -0
  303. data/vendor/plugins/slim_scrooge/lib/slim_scrooge/result_set.rb +38 -0
  304. data/vendor/plugins/slim_scrooge/lib/slim_scrooge/simple_set.rb +34 -0
  305. data/vendor/plugins/slim_scrooge/lib/slim_scrooge/slim_scrooge.rb +46 -0
  306. data/vendor/plugins/slim_scrooge/rails/init.rb +8 -0
  307. data/vendor/plugins/slim_scrooge/slim_scrooge.gemspec +62 -0
  308. data/vendor/plugins/slim_scrooge/slim_scrooge_windows.gemspec +59 -0
  309. data/vendor/plugins/slim_scrooge/test/active_record_setup.rb +3 -0
  310. data/vendor/plugins/slim_scrooge/test/helper.rb +91 -0
  311. data/vendor/plugins/slim_scrooge/test/models/course.rb +2 -0
  312. data/vendor/plugins/slim_scrooge/test/schema/schema.rb +5 -0
  313. data/vendor/plugins/slim_scrooge/test/setup.rb +5 -0
  314. data/vendor/plugins/themes/app/models/theme.rb +7 -0
  315. data/vendor/plugins/themes/lib/theme_server.rb +3 -1
  316. data/vendor/plugins/themes/rails/init.rb +16 -13
  317. data/vendor/plugins/will_paginate/.manifest +43 -0
  318. data/vendor/plugins/will_paginate/CHANGELOG.rdoc +139 -0
  319. data/vendor/plugins/will_paginate/LICENSE +18 -0
  320. data/vendor/plugins/will_paginate/README.rdoc +107 -0
  321. data/vendor/plugins/will_paginate/Rakefile +53 -0
  322. data/vendor/plugins/will_paginate/examples/apple-circle.gif +0 -0
  323. data/vendor/plugins/will_paginate/examples/index.haml +69 -0
  324. data/vendor/plugins/will_paginate/examples/index.html +92 -0
  325. data/vendor/plugins/will_paginate/examples/pagination.css +90 -0
  326. data/vendor/plugins/will_paginate/examples/pagination.sass +91 -0
  327. data/vendor/plugins/will_paginate/init.rb +1 -0
  328. data/vendor/plugins/will_paginate/lib/will_paginate.rb +90 -0
  329. data/vendor/plugins/will_paginate/lib/will_paginate/array.rb +16 -0
  330. data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +146 -0
  331. data/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +43 -0
  332. data/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +264 -0
  333. data/vendor/plugins/will_paginate/lib/will_paginate/named_scope.rb +170 -0
  334. data/vendor/plugins/will_paginate/lib/will_paginate/named_scope_patch.rb +37 -0
  335. data/vendor/plugins/will_paginate/lib/will_paginate/version.rb +9 -0
  336. data/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +408 -0
  337. data/vendor/plugins/will_paginate/test/boot.rb +21 -0
  338. data/vendor/plugins/will_paginate/test/collection_test.rb +143 -0
  339. data/vendor/plugins/will_paginate/test/console +8 -0
  340. data/vendor/plugins/will_paginate/test/database.yml +22 -0
  341. data/vendor/plugins/will_paginate/test/finder_test.rb +473 -0
  342. data/vendor/plugins/will_paginate/test/fixtures/admin.rb +3 -0
  343. data/vendor/plugins/will_paginate/test/fixtures/developer.rb +14 -0
  344. data/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml +13 -0
  345. data/vendor/plugins/will_paginate/test/fixtures/project.rb +15 -0
  346. data/vendor/plugins/will_paginate/test/fixtures/projects.yml +6 -0
  347. data/vendor/plugins/will_paginate/test/fixtures/replies.yml +29 -0
  348. data/vendor/plugins/will_paginate/test/fixtures/reply.rb +7 -0
  349. data/vendor/plugins/will_paginate/test/fixtures/schema.rb +38 -0
  350. data/vendor/plugins/will_paginate/test/fixtures/topic.rb +10 -0
  351. data/vendor/plugins/will_paginate/test/fixtures/topics.yml +30 -0
  352. data/vendor/plugins/will_paginate/test/fixtures/user.rb +2 -0
  353. data/vendor/plugins/will_paginate/test/fixtures/users.yml +35 -0
  354. data/vendor/plugins/will_paginate/test/helper.rb +37 -0
  355. data/vendor/plugins/will_paginate/test/lib/activerecord_test_case.rb +43 -0
  356. data/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb +75 -0
  357. data/vendor/plugins/will_paginate/test/lib/load_fixtures.rb +11 -0
  358. data/vendor/plugins/will_paginate/test/lib/view_test_process.rb +179 -0
  359. data/vendor/plugins/will_paginate/test/tasks.rake +59 -0
  360. data/vendor/plugins/will_paginate/test/view_test.rb +373 -0
  361. data/vendor/plugins/will_paginate/will_paginate.gemspec +19 -0
  362. metadata +308 -27
  363. data/db/migrate/20091029034951_remove_blurb_from_news_items.rb +0 -9
  364. data/public/javascripts/jquery-ui-1.8rc1.min.js +0 -375
  365. data/test/fixtures/news_items.yml +0 -14
  366. data/test/unit/news_items_test.rb +0 -33
  367. data/vendor/plugins/authentication/test/fixtures/users.yml +0 -19
  368. data/vendor/plugins/authentication/test/functional/sessions_controller_test.rb +0 -85
  369. data/vendor/plugins/authentication/test/functional/users_controller_test.rb +0 -99
  370. data/vendor/plugins/authentication/test/unit/user_test.rb +0 -164
  371. data/vendor/plugins/news/app/controllers/admin/news_items_controller.rb +0 -5
  372. data/vendor/plugins/news/app/controllers/news_items_controller.rb +0 -20
  373. data/vendor/plugins/news/app/models/news_item.rb +0 -24
  374. data/vendor/plugins/news/app/views/admin/news_items/_form.html.erb +0 -19
  375. data/vendor/plugins/news/app/views/admin/news_items/_news_item.html.erb +0 -15
  376. data/vendor/plugins/news/app/views/admin/news_items/edit.html.erb +0 -1
  377. data/vendor/plugins/news/app/views/admin/news_items/index.html.erb +0 -31
  378. data/vendor/plugins/news/app/views/admin/news_items/new.html.erb +0 -1
  379. data/vendor/plugins/news/app/views/news_items/_recent_posts.html.erb +0 -8
  380. data/vendor/plugins/news/app/views/news_items/index.html.erb +0 -17
  381. data/vendor/plugins/news/app/views/news_items/index.rss.builder +0 -26
  382. data/vendor/plugins/news/app/views/news_items/show.html.erb +0 -13
  383. data/vendor/plugins/news/config/routes.rb +0 -7
  384. data/vendor/plugins/news/news.md +0 -20
  385. data/vendor/plugins/news/rails/init.rb +0 -11
@@ -0,0 +1,323 @@
1
+ module FriendlyId
2
+ module ActiveRecord2
3
+ module SluggedModel
4
+
5
+ module SluggedFinder
6
+ # Whether :include => :slugs has been passed as an option.
7
+ def slugs_included?
8
+ [*(options[:include] or [])].flatten.include?(:slugs)
9
+ end
10
+ end
11
+
12
+ class MultipleFinder
13
+
14
+ include FriendlyId::Finders::Base
15
+ include FriendlyId::ActiveRecord2::Finders::Multiple
16
+ include SluggedFinder
17
+
18
+ attr_reader :slugs
19
+
20
+ def find
21
+ @results = with_scope(:find => find_options) { all options }.uniq
22
+ raise ::ActiveRecord::RecordNotFound, error_message if @results.size != expected_size
23
+ @results.each {|result| result.friendly_id_status.name = slug_for(result)}
24
+ end
25
+
26
+ private
27
+
28
+ def find_conditions
29
+ slugs
30
+ # [unfriendly_find_conditions, friendly_find_conditions].compact.join(" OR ")
31
+ ids = (unfriendly_ids + sluggable_ids).join(",")
32
+ "%s IN (%s)" % ["#{quoted_table_name}.#{primary_key}", ids]
33
+ end
34
+
35
+ def friendly_find_conditions
36
+ "slugs.id IN (%s)" % slugs.compact.to_s(:db) if slugs?
37
+ end
38
+
39
+ def find_options
40
+ {:select => "#{quoted_table_name}.*", :conditions => find_conditions,
41
+ :joins => slugs_included? ? options[:joins] : :slugs}
42
+ end
43
+
44
+ def sluggable_ids
45
+ if !@sluggable_ids
46
+ @sluggable_ids ||= []
47
+ slugs
48
+ end
49
+ @sluggable_ids
50
+ end
51
+
52
+ def slugs
53
+ @sluggable_ids ||= []
54
+ @slugs ||= friendly_ids.map do |friendly_id|
55
+ name, sequence = friendly_id.parse_friendly_id(friendly_id_config.sequence_separator)
56
+ slug = Slug.first :conditions => {
57
+ :name => name,
58
+ :scope => scope,
59
+ :sequence => sequence,
60
+ :sluggable_type => base_class.name
61
+ }
62
+ sluggable_ids << slug.sluggable_id if slug
63
+ slug
64
+ end
65
+ end
66
+
67
+ def slugs?
68
+ !slugs.empty?
69
+ end
70
+
71
+ def slug_for(result)
72
+ slugs.select {|slug| result.id == slug.sluggable_id}.first
73
+ end
74
+
75
+ def unfriendly_find_conditions
76
+ "%s IN (%s)" % ["#{quoted_table_name}.#{primary_key}", unfriendly_ids.join(",")] if unfriendly_ids?
77
+ end
78
+
79
+ def unfriendly_ids?
80
+ ! unfriendly_ids.empty?
81
+ end
82
+
83
+ end
84
+
85
+ # Performs a find a single friendly_id using the cached_slug column,
86
+ # if available. This is significantly faster, and can be used in all
87
+ # circumstances unless the +:scope+ argument is present.
88
+ class CachedMultipleFinder < SimpleModel::MultipleFinder
89
+ # The column used to store the cached slug.
90
+ def column
91
+ "#{table_name}.#{friendly_id_config.cache_column}"
92
+ end
93
+ end
94
+
95
+ class SingleFinder
96
+
97
+ include FriendlyId::Finders::Base
98
+ include FriendlyId::Finders::Single
99
+ include SluggedFinder
100
+
101
+ def find
102
+ result = with_scope({:find => find_options}) { find_initial options }
103
+ raise ::ActiveRecord::RecordNotFound.new if friendly? and !result
104
+ result.friendly_id_status.name = name if result
105
+ result
106
+ rescue ::ActiveRecord::RecordNotFound => @error
107
+ friendly_id_config.scope? ? raise_scoped_error : (raise @error)
108
+ end
109
+
110
+ private
111
+
112
+ def find_options
113
+ slug_table = Slug.table_name
114
+ {
115
+ :select => "#{model_class.quoted_table_name}.*",
116
+ :joins => slugs_included? ? options[:joins] : :slugs,
117
+ :conditions => {
118
+ "#{slug_table}.name" => name,
119
+ "#{slug_table}.scope" => scope,
120
+ "#{slug_table}.sequence" => sequence
121
+ }
122
+ }
123
+ end
124
+
125
+ def raise_scoped_error
126
+ scope_message = options[:scope] || "expected, but none given"
127
+ message = "%s, scope: %s" % [@error.message, scope_message]
128
+ raise ::ActiveRecord::RecordNotFound, message
129
+ end
130
+
131
+ end
132
+
133
+ # Performs a find for multiple friendly_ids using the cached_slug column,
134
+ # if available. This is significantly faster, and can be used in all
135
+ # circumstances unless the +:scope+ argument is present.
136
+ class CachedSingleFinder < SimpleModel::SingleFinder
137
+
138
+ def find
139
+ super
140
+ rescue ActiveRecord::RecordNotFound
141
+ SingleFinder.new(id, model_class, options).find
142
+ end
143
+
144
+ # The column used to store the cached slug.
145
+ def column
146
+ "#{table_name}.#{friendly_id_config.cache_column}"
147
+ end
148
+
149
+ end
150
+
151
+ # The methods in this module override ActiveRecord's +find_one+ and
152
+ # +find_some+ to add FriendlyId's features.
153
+ module FinderMethods
154
+
155
+ protected
156
+
157
+ def find_one(id_or_name, options)
158
+ finder = Finders::FinderProxy.new(id_or_name, self, options)
159
+ finder.unfriendly? ? super : finder.find or super
160
+ end
161
+
162
+ def find_some(ids_and_names, options)
163
+ Finders::FinderProxy.new(ids_and_names, self, options).find
164
+ end
165
+
166
+ # Since Rails goes out of its way to make these options completely
167
+ # inaccessible, we have to copy them here.
168
+ def validate_find_options(options)
169
+ options.assert_valid_keys([:conditions, :include, :joins, :limit, :offset,
170
+ :order, :select, :readonly, :group, :from, :lock, :having, :scope])
171
+ end
172
+
173
+ end
174
+
175
+ # These methods will be removed in FriendlyId 3.0.
176
+ module DeprecatedMethods
177
+
178
+ # @deprecated Please use #to_param
179
+ def best_id
180
+ warn("best_id is deprecated and will be removed in 3.0. Please use #to_param.")
181
+ to_param
182
+ end
183
+
184
+ # @deprecated Please use #friendly_id_status.slug.
185
+ def finder_slug
186
+ warn("finder_slug is deprecated and will be removed in 3.0. Please use #friendly_id_status.slug.")
187
+ friendly_id_status.slug
188
+ end
189
+
190
+ # Was the record found using one of its friendly ids?
191
+ # @deprecated Please use #friendly_id_status.friendly?
192
+ def found_using_friendly_id?
193
+ warn("found_using_friendly_id? is deprecated and will be removed in 3.0. Please use #friendly_id_status.friendly?")
194
+ friendly_id_status.friendly?
195
+ end
196
+
197
+ # Was the record found using its numeric id?
198
+ # @deprecated Please use #friendly_id_status.numeric?
199
+ def found_using_numeric_id?
200
+ warn("found_using_numeric_id is deprecated and will be removed in 3.0. Please use #friendly_id_status.numeric?")
201
+ friendly_id_status.numeric?
202
+ end
203
+
204
+ # Was the record found using an old friendly id?
205
+ # @deprecated Please use #friendly_id_status.outdated?
206
+ def found_using_outdated_friendly_id?
207
+ warn("found_using_outdated_friendly_id is deprecated and will be removed in 3.0. Please use #friendly_id_status.outdated?")
208
+ friendly_id_status.outdated?
209
+ end
210
+
211
+ # Was the record found using an old friendly id, or its numeric id?
212
+ # @deprecated Please use !#friendly_id_status.best?
213
+ def has_better_id?
214
+ warn("has_better_id? is deprecated and will be removed in 3.0. Please use !#friendly_id_status.best?")
215
+ ! friendly_id_status.best?
216
+ end
217
+
218
+ # @deprecated Please use #slug?
219
+ def has_a_slug?
220
+ warn("has_a_slug? is deprecated and will be removed in 3.0. Please use #slug?")
221
+ slug?
222
+ end
223
+
224
+ end
225
+
226
+ def self.included(base)
227
+ base.class_eval do
228
+ has_many :slugs, :order => 'id DESC', :as => :sluggable, :dependent => :destroy
229
+ before_save :build_slug
230
+ after_save :set_slug_cache
231
+ after_update :update_scope
232
+ after_update :update_dependent_scopes
233
+ protect_friendly_id_attributes
234
+ extend FinderMethods
235
+ end
236
+ end
237
+
238
+ include FriendlyId::Slugged::Model
239
+ include DeprecatedMethods
240
+
241
+ def find_slug(name)
242
+ separator = friendly_id_config.sequence_separator
243
+ slugs.find_by_name_and_sequence(*name.to_s.parse_friendly_id(separator))
244
+ end
245
+
246
+ # The model instance's current {FriendlyId::ActiveRecord2::Slug slug}.
247
+ def slug
248
+ return @slug if new_record?
249
+ @slug ||= slugs.first(:order => "id DESC")
250
+ end
251
+
252
+ # Set the slug.
253
+ def slug=(slug)
254
+ @new_friendly_id = slug.to_friendly_id unless slug.nil?
255
+ super
256
+ end
257
+
258
+ # Returns the friendly id, or if none is available, the numeric id.
259
+ def to_param
260
+ friendly_id_config.cache_column ? to_param_from_cache : to_param_from_slug
261
+ end
262
+
263
+ private
264
+
265
+ def scope_changed?
266
+ friendly_id_config.scope? && send(friendly_id_config.scope).to_param != slug.scope
267
+ end
268
+
269
+ # Respond with the cached value if available.
270
+ def to_param_from_cache
271
+ read_attribute(friendly_id_config.cache_column) || id.to_s
272
+ end
273
+
274
+ # Respond with the slugged value if available.
275
+ def to_param_from_slug
276
+ slug? ? slug.to_friendly_id : id.to_s
277
+ end
278
+
279
+ # Build the new slug using the generated friendly id.
280
+ def build_slug
281
+ return unless new_slug_needed?
282
+ self.slug = slugs.build :name => slug_text.to_s, :scope => friendly_id_config.scope_for(self)
283
+ end
284
+
285
+ # Reset the cached friendly_id?
286
+ def new_cache_needed?
287
+ uses_slug_cache? && send(friendly_id_config.cache_column) != slug.to_friendly_id
288
+ end
289
+
290
+ # Reset the cached friendly_id.
291
+ def set_slug_cache
292
+ if new_cache_needed?
293
+ send "#{friendly_id_config.cache_column}=", slug.to_friendly_id
294
+ send :update_without_callbacks
295
+ end
296
+ end
297
+
298
+ def update_scope
299
+ return unless scope_changed?
300
+ slug.update_attributes :scope => send(friendly_id_config.scope).to_param
301
+ rescue ActiveRecord::StatementInvalid
302
+ slug.update_attributes :sequence => Slug.similar_to(slug).first.sequence.succ
303
+ end
304
+
305
+ # Update the slugs for any model that is using this model as its
306
+ # FriendlyId scope.
307
+ def update_dependent_scopes
308
+ if slugs(true).size > 1 && @new_friendly_id
309
+ friendly_id_config.child_scopes.each do |klass|
310
+ Slug.update_all "scope = '#{@new_friendly_id}'", ["sluggable_type = ? AND scope = ?",
311
+ klass.to_s, slugs.second.to_friendly_id]
312
+ end
313
+ end
314
+ end
315
+
316
+ # Does the model use slug caching?
317
+ def uses_slug_cache?
318
+ friendly_id_config.cache_column?
319
+ end
320
+
321
+ end
322
+ end
323
+ end
@@ -0,0 +1,66 @@
1
+ module FriendlyId
2
+ class TaskRunner
3
+
4
+ attr_accessor :days
5
+ attr_accessor :klass
6
+ attr_accessor :task_options
7
+
8
+ OLD_SLUG_DAYS = 45
9
+
10
+ def initialize(&block)
11
+ self.klass = ENV["MODEL"]
12
+ self.days = ENV["DAYS"]
13
+ end
14
+
15
+ def method_missing(*args)
16
+ klass.send(*args)
17
+ end
18
+
19
+ def days=(days)
20
+ @days = days.blank? ? OLD_SLUG_DAYS : days.to_i
21
+ end
22
+
23
+ def klass=(klass)
24
+ @klass = klass.to_s.classify.constantize unless klass.blank?
25
+ end
26
+
27
+ def make_slugs
28
+ validate_uses_slugs
29
+ options = {:limit => 100, :include => :slugs, :conditions => "slugs.id IS NULL"}.merge(task_options || {})
30
+ while records = find(:all, options) do
31
+ break if records.size == 0
32
+ records.each do |record|
33
+ record.save!
34
+ yield(record) if block_given?
35
+ end
36
+ end
37
+ end
38
+
39
+ def delete_slugs
40
+ validate_uses_slugs
41
+ Slug.destroy_all(["sluggable_type = ?", klass.to_s])
42
+ if column = friendly_id_config.cache_column
43
+ update_all("#{column} = NULL")
44
+ end
45
+ end
46
+
47
+ def delete_old_slugs
48
+ conditions = ["created_at < ?", DateTime.now - days.days]
49
+ if klass
50
+ conditions[0] << " AND sluggable_type = ?"
51
+ conditions << klass.to_s
52
+ end
53
+ Slug.all(:conditions => conditions).select(&:outdated?).map(&:destroy)
54
+ end
55
+
56
+ def validate_uses_slugs
57
+ unless friendly_id_config.use_slug?
58
+ raise "Class '%s' doesn't use slugs" % klass.to_s
59
+ end
60
+ rescue NoMethodError
61
+ raise "Class '%s' doesn't use FriendlyId" % klass.to_s
62
+ end
63
+
64
+ end
65
+
66
+ end
@@ -0,0 +1,19 @@
1
+ namespace :friendly_id do
2
+ desc "Make slugs for a model."
3
+ task :make_slugs => :environment do
4
+ FriendlyId::TaskRunner.new.make_slugs do |record|
5
+ puts "%s(%d): friendly_id set to '%s'" % [record.class.to_s, record.id, record.slug.name]
6
+ end
7
+ end
8
+
9
+ desc "Regenereate slugs for a model."
10
+ task :redo_slugs => :environment do
11
+ FriendlyId::TaskRunner.new.delete_slugs
12
+ Rake::Task["friendly_id:make_slugs"].invoke
13
+ end
14
+
15
+ desc "Kill obsolete slugs older than DAYS=45 days."
16
+ task :remove_old_slugs => :environment do
17
+ FriendlyId::TaskRunner.new.delete_old_slugs
18
+ end
19
+ end
@@ -0,0 +1,132 @@
1
+ module FriendlyId
2
+
3
+ # This class is not intended to be used on its own, it is used internally
4
+ # by `has_friendly_id` to store a model's configuration and
5
+ # configuration-related methods.
6
+ #
7
+ # The arguments accepted by +has_friendly_id+ correspond to the writeable
8
+ # instance attributes of this class; please see the description of the
9
+ # attributes below for information on the possible options.
10
+ #
11
+ # @example
12
+ # has_friendly_id :name,
13
+ # :use_slug => true,
14
+ # :max_length => 150,
15
+ # :approximate_ascii => true,
16
+ # :ascii_approximation_options => :german,
17
+ # :sequence_separator => ":",
18
+ # :reserved_words => ["reserved", "words"],
19
+ # :scope => :country,
20
+ # :cache_column => :my_cache_column_name
21
+ # # etc.
22
+ class Configuration
23
+
24
+ DEFAULTS = {
25
+ :ascii_approximation_options => [],
26
+ :max_length => 255,
27
+ :reserved_words => ["index", "new"],
28
+ :reserved_message => 'can not be "%s"',
29
+ :sequence_separator => "--"
30
+ }
31
+
32
+ # Strip diacritics from Western characters.
33
+ attr_accessor :approximate_ascii
34
+
35
+ # Locale-type options for ASCII approximations. These can be any of the
36
+ # values supported by {SlugString#approximate_ascii!}.
37
+ attr_accessor :ascii_approximation_options
38
+
39
+ # The class that's using the configuration.
40
+ attr_reader :configured_class
41
+
42
+ # The maximum allowed length for a friendly_id string. This is checked *after* a
43
+ # string is processed by FriendlyId to remove spaces, special characters, etc.
44
+ attr_accessor :max_length
45
+
46
+ # The method or column that will be used as the basis of the friendly_id string.
47
+ attr_reader :method
48
+ alias :column :method
49
+
50
+ # A block or proc through which to filter the friendly_id text.
51
+ # This method will be removed from FriendlyId 3.0.
52
+ # @deprecated Please override the +normalize_friendly_id+
53
+ # method in your model class rather than passing a block to `has_friendly_id`.
54
+ attr_accessor :normalizer
55
+
56
+ # The message shown when a reserved word is used.
57
+ # @see #reserved_words
58
+ attr_accessor :reserved_message
59
+
60
+ # Array of words that are reserved and can't be used as friendly_id strings.
61
+ # If a listed word is used in a sluggable model, it will raise a
62
+ # FriendlyId::SlugGenerationError. For Rails applications, you are recommended
63
+ # to include "index" and "new", which used as the defaults unless overridden.
64
+ attr_accessor :reserved_words
65
+
66
+ # The method or relation to use as the friendly_id's scope.
67
+ attr_accessor :scope
68
+
69
+ # The string that separates slug names from slug sequences. Defaults to "--".
70
+ attr_accessor :sequence_separator
71
+
72
+ # Strip non-ASCII characters from the friendly_id string.
73
+ attr_accessor :strip_non_ascii
74
+
75
+ # Use slugs for storing the friendly_id string.
76
+ attr_accessor :use_slug
77
+ alias :use_slugs= :use_slug
78
+
79
+ def initialize(configured_class, method, options = nil, &block)
80
+ @configured_class = configured_class
81
+ @method = method.to_sym
82
+ DEFAULTS.merge(options || {}).each do |key, value|
83
+ self.send "#{key}=".to_sym, value
84
+ end
85
+ yield self if block_given?
86
+ end
87
+
88
+ def normalizer=(arg)
89
+ return if arg.nil?
90
+ warn("passing a block to has_friendly_id is deprecated and will be removed from 3.0. Please override #normalize_friendly_id.")
91
+ @normalizer = arg
92
+ end
93
+
94
+ def reserved_words=(*words)
95
+ @reserved_words = words.flatten.uniq
96
+ end
97
+
98
+ def reserved?(word)
99
+ reserved_words.include? word.to_s
100
+ end
101
+
102
+ def reserved_error_message(word)
103
+ [method, reserved_message % word] if reserved? word
104
+ end
105
+
106
+ # This method will be removed from FriendlyId 3.0.
107
+ # @deprecated Please use {#reserved_words reserved_words}.
108
+ def reserved=(*args)
109
+ warn('The "reserved" option is deprecated and will be removed from FriendlyId 3.0. Please use "reserved_words".')
110
+ self.reserved_words = *args
111
+ end
112
+
113
+ # This method will be removed from FriendlyId 3.0.
114
+ # @deprecated Please use {#approximate_ascii approximate_ascii}.
115
+ def strip_diacritics=(*args)
116
+ warn('strip_diacritics is deprecated and will be removed from 3.0. Please use #approximate_ascii')
117
+ self.approximate_ascii = *args
118
+ end
119
+
120
+ %w[approximate_ascii normalizer scope strip_non_ascii use_slug].each do |method|
121
+ class_eval(<<-EOM)
122
+ def #{method}?
123
+ !! #{method}
124
+ end
125
+ EOM
126
+ end
127
+
128
+ alias :use_slugs? :use_slug?
129
+
130
+ end
131
+
132
+ end