community_engine 2.3.2 → 3.0.0

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 (580) hide show
  1. checksums.yaml +13 -5
  2. data/.travis.yml +5 -4
  3. data/CHANGELOG +43 -5
  4. data/Gemfile +1 -16
  5. data/README.markdown +22 -19
  6. data/UPGRADING.markdown +10 -0
  7. data/about.yml +1 -1
  8. data/app/assets/javascripts/community_engine.js +187 -18
  9. data/app/assets/javascripts/cropper.js +86 -565
  10. data/app/assets/javascripts/forum.js +26 -71
  11. data/app/assets/javascripts/jquery.migrate.js +521 -0
  12. data/app/assets/stylesheets/_colors.css.scss +100 -0
  13. data/app/assets/stylesheets/_font.css.scss +17 -0
  14. data/app/assets/stylesheets/_forms.css.scss +20 -0
  15. data/app/assets/stylesheets/_forum.css.scss +0 -0
  16. data/app/assets/stylesheets/_grid.css.scss +7 -0
  17. data/app/assets/stylesheets/_layers.css.scss +7 -0
  18. data/app/assets/stylesheets/_layout.css.scss +28 -0
  19. data/app/assets/stylesheets/community_engine.css.scss +18 -0
  20. data/app/assets/stylesheets/cropper.css +6 -182
  21. data/app/controllers/activities_controller.rb +10 -10
  22. data/app/controllers/admin_controller.rb +23 -23
  23. data/app/controllers/ads_controller.rb +16 -5
  24. data/app/controllers/albums_controller.rb +11 -5
  25. data/app/controllers/base_controller.rb +5 -8
  26. data/app/controllers/categories_controller.rb +31 -31
  27. data/app/controllers/clippings_controller.rb +18 -12
  28. data/app/controllers/comments_controller.rb +17 -8
  29. data/app/controllers/events_controller.rb +25 -21
  30. data/app/controllers/favorites_controller.rb +12 -12
  31. data/app/controllers/forums_controller.rb +20 -9
  32. data/app/controllers/friendships_controller.rb +41 -48
  33. data/app/controllers/homepage_features_controller.rb +11 -5
  34. data/app/controllers/invitations_controller.rb +15 -9
  35. data/app/controllers/messages_controller.rb +25 -19
  36. data/app/controllers/metro_areas_controller.rb +9 -3
  37. data/app/controllers/moderators_controller.rb +1 -1
  38. data/app/controllers/monitorships_controller.rb +2 -2
  39. data/app/controllers/pages_controller.rb +16 -4
  40. data/app/controllers/password_resets_controller.rb +0 -1
  41. data/app/controllers/photos_controller.rb +32 -30
  42. data/app/controllers/posts_controller.rb +33 -17
  43. data/app/controllers/rsvps_controller.rb +8 -4
  44. data/app/controllers/sb_posts_controller.rb +22 -18
  45. data/app/controllers/sessions_controller.rb +2 -1
  46. data/app/controllers/sitemap_controller.rb +8 -8
  47. data/app/controllers/statistics_controller.rb +9 -8
  48. data/app/controllers/tags_controller.rb +26 -24
  49. data/app/controllers/topics_controller.rb +10 -6
  50. data/app/controllers/users_controller.rb +63 -34
  51. data/app/helpers/base_helper.rb +119 -29
  52. data/app/helpers/friendships_helper.rb +3 -3
  53. data/app/helpers/posts_helper.rb +5 -7
  54. data/app/models/acts_as_taggable_on/tag.rb +12 -13
  55. data/app/models/ad.rb +2 -5
  56. data/app/models/album.rb +0 -2
  57. data/app/models/category.rb +6 -7
  58. data/app/models/clipping.rb +2 -5
  59. data/app/models/clipping_image.rb +5 -5
  60. data/app/models/comment.rb +4 -5
  61. data/app/models/country.rb +2 -4
  62. data/app/models/event.rb +1 -2
  63. data/app/models/favorite.rb +5 -10
  64. data/app/models/forum.rb +0 -2
  65. data/app/models/friendship.rb +3 -5
  66. data/app/models/friendship_status.rb +0 -2
  67. data/app/models/homepage_feature.rb +4 -6
  68. data/app/models/invitation.rb +6 -8
  69. data/app/models/message.rb +25 -26
  70. data/app/models/message_thread.rb +1 -1
  71. data/app/models/metro_area.rb +0 -2
  72. data/app/models/page.rb +0 -2
  73. data/app/models/photo.rb +8 -8
  74. data/app/models/poll.rb +7 -9
  75. data/app/models/post.rb +11 -15
  76. data/app/models/role.rb +1 -2
  77. data/app/models/rsvp.rb +0 -3
  78. data/app/models/sb_post.rb +14 -9
  79. data/app/models/state.rb +0 -2
  80. data/app/models/topic.rb +5 -6
  81. data/app/models/user.rb +50 -63
  82. data/app/models/vote.rb +1 -1
  83. data/app/views/activities/_activity.html.haml +9 -9
  84. data/app/views/activities/destroy.js.erb +1 -0
  85. data/app/views/activities/index.html.haml +13 -13
  86. data/app/views/activities/network.html.haml +10 -13
  87. data/app/views/admin/comments.html.haml +48 -70
  88. data/app/views/admin/events.html.haml +20 -27
  89. data/app/views/admin/messages.html.haml +2 -3
  90. data/app/views/admin/update.js.erb +1 -0
  91. data/app/views/admin/users.html.haml +51 -66
  92. data/app/views/ads/_form.html.haml +21 -0
  93. data/app/views/ads/edit.html.haml +6 -46
  94. data/app/views/ads/index.html.haml +25 -39
  95. data/app/views/ads/new.html.haml +4 -43
  96. data/app/views/ads/show.html.haml +18 -35
  97. data/app/views/albums/_form.html.haml +17 -12
  98. data/app/views/albums/edit.html.haml +12 -14
  99. data/app/views/albums/new.html.haml +8 -13
  100. data/app/views/albums/show.html.haml +25 -32
  101. data/app/views/base/_homepage_banner_message.html.haml +5 -19
  102. data/app/views/base/advertise.html.haml +5 -8
  103. data/app/views/base/site_index.html.haml +25 -27
  104. data/app/views/categories/_form.html.haml +8 -0
  105. data/app/views/categories/_menu_item.html.haml +13 -0
  106. data/app/views/categories/_tips.html.haml +2 -2
  107. data/app/views/categories/edit.html.haml +3 -33
  108. data/app/views/categories/index.html.haml +18 -28
  109. data/app/views/categories/new.html.haml +3 -8
  110. data/app/views/categories/show.html.haml +33 -36
  111. data/app/views/clippings/_clipping.html.haml +10 -17
  112. data/app/views/clippings/_favorite.html.haml +14 -0
  113. data/app/views/clippings/_form.html.haml +15 -0
  114. data/app/views/clippings/_images.html.haml +1 -1
  115. data/app/views/clippings/_menu_item.html.haml +6 -0
  116. data/app/views/clippings/edit.html.haml +12 -23
  117. data/app/views/clippings/index.html.haml +29 -30
  118. data/app/views/clippings/load_images_from_uri.js.erb +1 -0
  119. data/app/views/clippings/new.html.haml +9 -26
  120. data/app/views/clippings/new_clipping.html.haml +30 -77
  121. data/app/views/clippings/show.html.haml +48 -53
  122. data/app/views/clippings/site_index.html.haml +19 -32
  123. data/app/views/comments/_comment.html.haml +40 -40
  124. data/app/views/comments/_comment_form.html.haml +22 -46
  125. data/app/views/comments/_edit_form.html.haml +13 -28
  126. data/app/views/comments/create.js.erb +25 -0
  127. data/app/views/comments/destroy.js.erb +3 -0
  128. data/app/views/comments/edit.js.erb +11 -0
  129. data/app/views/comments/index.html.haml +12 -22
  130. data/app/views/comments/update.js.erb +14 -0
  131. data/app/views/events/_event.html.haml +26 -24
  132. data/app/views/events/_form.html.haml +18 -0
  133. data/app/views/events/_menu_item.html.haml +6 -0
  134. data/app/views/events/_subscribe.html.haml +1 -1
  135. data/app/views/events/edit.html.haml +7 -32
  136. data/app/views/events/index.html.haml +11 -19
  137. data/app/views/events/new.html.haml +2 -31
  138. data/app/views/events/show.html.haml +54 -24
  139. data/app/views/favorites/create.js.erb +10 -0
  140. data/app/views/favorites/destroy.js.erb +6 -0
  141. data/app/views/favorites/index.html.haml +6 -8
  142. data/app/views/forums/_form.html.haml +10 -20
  143. data/app/views/forums/_menu_item.html.haml +6 -0
  144. data/app/views/forums/edit.html.haml +8 -10
  145. data/app/views/forums/index.html.haml +56 -64
  146. data/app/views/forums/new.html.haml +5 -8
  147. data/app/views/forums/show.html.haml +65 -72
  148. data/app/views/friendships/_friendship.html.haml +14 -16
  149. data/app/views/friendships/accepted.html.haml +7 -11
  150. data/app/views/friendships/create.js.haml +1 -0
  151. data/app/views/friendships/denied.html.haml +4 -8
  152. data/app/views/friendships/pending.html.haml +4 -6
  153. data/app/views/friendships/show.html.haml +10 -11
  154. data/app/views/homepage_features/_form.html.haml +6 -0
  155. data/app/views/homepage_features/edit.html.haml +5 -30
  156. data/app/views/homepage_features/index.html.haml +22 -28
  157. data/app/views/homepage_features/new.html.haml +2 -30
  158. data/app/views/homepage_features/show.html.haml +27 -29
  159. data/app/views/invitations/index.html.haml +8 -0
  160. data/app/views/invitations/new.html.haml +21 -30
  161. data/app/views/kaminari/bootstrap/_first_page.html.erb +13 -0
  162. data/app/views/kaminari/bootstrap/_gap.html.erb +8 -0
  163. data/app/views/kaminari/bootstrap/_last_page.html.erb +13 -0
  164. data/app/views/kaminari/bootstrap/_next_page.html.erb +13 -0
  165. data/app/views/kaminari/bootstrap/_page.html.erb +12 -0
  166. data/app/views/kaminari/bootstrap/_paginator.html.erb +25 -0
  167. data/app/views/kaminari/bootstrap/_prev_page.html.erb +13 -0
  168. data/app/views/layouts/application.html.haml +26 -37
  169. data/app/views/messages/_form.html.haml +6 -12
  170. data/app/views/messages/_inbox.html.haml +34 -39
  171. data/app/views/messages/_menu_item.html.haml +11 -0
  172. data/app/views/messages/_sent.html.haml +22 -33
  173. data/app/views/messages/_sidebar_nav.html.haml +12 -9
  174. data/app/views/messages/index.html.haml +2 -2
  175. data/app/views/messages/new.html.haml +2 -9
  176. data/app/views/messages/show.html.haml +28 -36
  177. data/app/views/metro_areas/_form.html.haml +6 -0
  178. data/app/views/metro_areas/edit.html.haml +6 -14
  179. data/app/views/metro_areas/index.html.haml +19 -26
  180. data/app/views/metro_areas/new.html.haml +4 -14
  181. data/app/views/metro_areas/show.html.haml +13 -21
  182. data/app/views/moderators/_toggle.html.haml +6 -0
  183. data/app/views/moderators/create.js.erb +5 -0
  184. data/app/views/moderators/destroy.js.erb +1 -0
  185. data/app/views/monitorships/create.js.erb +1 -0
  186. data/app/views/monitorships/destroy.js.erb +1 -0
  187. data/app/views/pages/_form.html.haml +16 -23
  188. data/app/views/pages/edit.html.haml +2 -14
  189. data/app/views/pages/index.html.haml +32 -32
  190. data/app/views/pages/new.html.haml +5 -12
  191. data/app/views/pages/show.html.haml +4 -8
  192. data/app/views/password_resets/edit.html.haml +6 -14
  193. data/app/views/password_resets/new.html.haml +7 -11
  194. data/app/views/photo_manager/index.html.haml +45 -43
  195. data/app/views/photos/_form.html.haml +24 -0
  196. data/app/views/photos/_manage_photos.html.haml +14 -6
  197. data/app/views/photos/_show_image_list.html.haml +2 -2
  198. data/app/views/photos/create.js.erb +1 -0
  199. data/app/views/photos/edit.html.haml +10 -38
  200. data/app/views/photos/index.html.haml +20 -20
  201. data/app/views/photos/manage_photos.js.erb +5 -0
  202. data/app/views/photos/new.html.haml +11 -49
  203. data/app/views/photos/recent.html.haml +6 -6
  204. data/app/views/photos/show.html.haml +48 -52
  205. data/app/views/polls/_edit.html.haml +6 -10
  206. data/app/views/polls/_excerpt.html.haml +3 -4
  207. data/app/views/polls/_new.html.haml +10 -9
  208. data/app/views/polls/_poll_ui.html.haml +30 -34
  209. data/app/views/posts/_author_profile.html.haml +12 -11
  210. data/app/views/posts/_favorited_post.html.haml +8 -10
  211. data/app/views/posts/_form.html.haml +40 -0
  212. data/app/views/posts/_menu_item.html.haml +6 -0
  213. data/app/views/posts/_post.html.haml +27 -24
  214. data/app/views/posts/_send_to_friend.html.haml +26 -0
  215. data/app/views/posts/edit.html.haml +11 -48
  216. data/app/views/posts/featured.html.haml +7 -12
  217. data/app/views/posts/index.html.haml +14 -18
  218. data/app/views/posts/manage.html.haml +44 -59
  219. data/app/views/posts/new.html.haml +9 -64
  220. data/app/views/posts/popular.html.haml +25 -30
  221. data/app/views/posts/preview.html.haml +27 -26
  222. data/app/views/posts/recent.html.haml +20 -27
  223. data/app/views/posts/send_to_friend.js.erb +3 -0
  224. data/app/views/posts/show.html.haml +67 -76
  225. data/app/views/rsvps/_form.html.haml +3 -0
  226. data/app/views/rsvps/edit.html.haml +3 -9
  227. data/app/views/rsvps/new.html.haml +3 -9
  228. data/app/views/sb_posts/_dummy_forum_post.html.haml +13 -0
  229. data/app/views/sb_posts/_edit.html.haml +6 -0
  230. data/app/views/sb_posts/_edit_script.js.erb +14 -0
  231. data/app/views/sb_posts/_reply_form.html.haml +14 -35
  232. data/app/views/sb_posts/_reply_script.js.erb +13 -0
  233. data/app/views/sb_posts/_sb_post.html.haml +31 -33
  234. data/app/views/sb_posts/create.js.erb +30 -0
  235. data/app/views/sb_posts/destroy.js.erb +2 -0
  236. data/app/views/sb_posts/edit.html.erb +4 -4
  237. data/app/views/sb_posts/edit.js.erb +14 -0
  238. data/app/views/sb_posts/index.html.haml +3 -16
  239. data/app/views/sb_posts/monitored.html.erb +3 -9
  240. data/app/views/sb_posts/update.js.erb +11 -0
  241. data/app/views/sessions/_menu_item.html.haml +28 -0
  242. data/app/views/sessions/new.html.haml +19 -24
  243. data/app/views/shared/_add_friend_link.html.haml +9 -0
  244. data/app/views/shared/_admin_nav.html.haml +6 -8
  245. data/app/views/shared/_contact.html.haml +1 -1
  246. data/app/views/shared/_end_javascript.html.haml +4 -4
  247. data/app/views/shared/_explore.html.haml +7 -6
  248. data/app/views/shared/_footer_content.html.haml +12 -10
  249. data/app/views/shared/_footer_links.html.haml +18 -0
  250. data/app/views/shared/_friend_link.html.haml +25 -0
  251. data/app/views/shared/_header.html.haml +22 -42
  252. data/app/views/shared/_jumbotron.html.haml +3 -0
  253. data/app/views/shared/_load_tinymce.js.erb +15 -0
  254. data/app/views/shared/_location_chooser.html.haml +26 -17
  255. data/app/views/shared/_login_sidebar.html.haml +6 -5
  256. data/app/views/shared/_messages.html.haml +6 -8
  257. data/app/views/shared/_scripts_and_styles.html.haml +1 -2
  258. data/app/views/shared/_sidebar.html.haml +1 -0
  259. data/app/views/shared/_tag_auto_complete.html.haml +19 -0
  260. data/app/views/shared/_widget.html.haml +3 -0
  261. data/app/views/sitemap/index.html.haml +15 -20
  262. data/app/views/statistics/index.html.haml +32 -40
  263. data/app/views/tags/edit.html.haml +12 -19
  264. data/app/views/tags/index.html.haml +16 -25
  265. data/app/views/tags/manage.html.haml +24 -33
  266. data/app/views/tags/show.html.haml +52 -58
  267. data/app/views/topics/_form.html.haml +23 -25
  268. data/app/views/topics/_recent_topics_sidebar.haml +1 -1
  269. data/app/views/topics/edit.html.haml +7 -9
  270. data/app/views/topics/new.html.haml +6 -21
  271. data/app/views/topics/show.html.haml +48 -106
  272. data/app/views/user_notifier/follow_up_comment_notice.text.erb +1 -1
  273. data/app/views/user_notifier/message_notification.text.erb +1 -1
  274. data/app/views/user_notifier/new_forum_post_notice.text.erb +1 -1
  275. data/app/views/users/_dashboard_nav.html.haml +36 -39
  276. data/app/views/users/_menu_item.html.haml +6 -0
  277. data/app/views/users/_omniauth_connect.html.haml +4 -4
  278. data/app/views/users/_profile_completeness.html.haml +3 -3
  279. data/app/views/users/_profile_user_info_sidebar.html.haml +40 -43
  280. data/app/views/users/_search_options.html.haml +9 -7
  281. data/app/views/users/_sidebar_user.html.haml +1 -1
  282. data/app/views/users/_user.html.haml +27 -28
  283. data/app/views/users/crop_profile_photo.html.haml +30 -37
  284. data/app/views/users/dashboard.html.haml +37 -41
  285. data/app/views/users/edit.html.haml +53 -71
  286. data/app/views/users/edit_account.html.haml +44 -64
  287. data/app/views/users/forgot_username.html.haml +6 -12
  288. data/app/views/users/index.html.haml +4 -14
  289. data/app/views/users/invite.html.haml +14 -25
  290. data/app/views/users/new.html.haml +27 -48
  291. data/app/views/users/resend_activation.html.haml +7 -12
  292. data/app/views/users/show.html.haml +88 -90
  293. data/app/views/users/signup_completed.html.haml +7 -7
  294. data/app/views/users/statistics.html.haml +17 -18
  295. data/app/views/users/update.js.erb +1 -0
  296. data/app/views/users/upload_profile_photo.html.haml +10 -15
  297. data/app/views/users/welcome_about.html.haml +54 -61
  298. data/app/views/users/welcome_invite.html.haml +16 -25
  299. data/app/views/users/welcome_photo.html.haml +18 -27
  300. data/app/views/votes/create.js.erb +5 -0
  301. data/community_engine.gemspec +49 -41
  302. data/config/application_config.rb +13 -16
  303. data/config/initializers/mce_options.rb +9 -32
  304. data/config/initializers/recaptcha_constants.rb +2 -2
  305. data/config/locales/de-DE.yml +1 -17
  306. data/config/locales/en.yml +18 -32
  307. data/config/locales/es-AR.yml +2 -14
  308. data/config/locales/es-ES.yml +0 -6
  309. data/config/locales/es-MX.yml +1 -9
  310. data/config/locales/fr-FR.yml +3 -17
  311. data/config/locales/ja-JP.yml +2 -18
  312. data/config/locales/ru-RU.yml +3 -21
  313. data/config/locales/sr-CP.yml +0 -4
  314. data/config/locales/sv-SE.yml +3 -20
  315. data/config/routes.rb +37 -42
  316. data/db/migrate/016_add_metro_areas.rb +2 -2
  317. data/db/migrate/039_create_activities_table.rb +2 -2
  318. data/db/migrate/056_create_roles.rb +8 -6
  319. data/db/migrate/069_create_pages.rb +3 -3
  320. data/db/migrate/081_upgrade_to_friendly_id_5x.rb +25 -0
  321. data/db/migrate/082_upgrade_to_acts_as_commentable_4x.rb +29 -0
  322. data/lib/activity_tracker.rb +3 -0
  323. data/{vendor/plugins/activity_tracker/lib → lib/activity_tracker}/activity.rb +6 -6
  324. data/{vendor/plugins/activity_tracker/lib → lib/activity_tracker}/activity_tracker.rb +0 -0
  325. data/{vendor/plugins/acts_as_publishable/init.rb → lib/acts_as_publishable.rb} +1 -1
  326. data/{vendor/plugins/acts_as_publishable/lib → lib/acts_as_publishable}/acts_as_publishable.rb +3 -3
  327. data/lib/community_engine.rb +31 -9
  328. data/lib/community_engine/engine.rb +17 -1
  329. data/lib/community_engine/engines_extensions.rb +1 -3
  330. data/lib/community_engine/version.rb +3 -3
  331. data/{config/initializers → lib/paperclip_processors}/cropper.rb +3 -3
  332. data/lib/resource_feeder.rb +3 -0
  333. data/{vendor/plugins/resource_feeder/lib → lib}/resource_feeder/atom.rb +0 -0
  334. data/{vendor/plugins/resource_feeder/lib → lib}/resource_feeder/rss.rb +0 -0
  335. data/{vendor/plugins/white_list/init.rb → lib/white_list.rb} +1 -1
  336. data/{vendor/plugins/white_list/lib → lib/white_list}/white_list_helper.rb +0 -0
  337. data/test/fixtures/messages.yml +2 -2
  338. data/test/functional/admin_controller_test.rb +11 -11
  339. data/test/functional/ads_controller_test.rb +11 -11
  340. data/test/functional/albums_controller_test.rb +4 -4
  341. data/test/functional/categories_controller_test.rb +4 -4
  342. data/test/functional/clippings_controller_test.rb +4 -4
  343. data/test/functional/comments_controller_test.rb +20 -16
  344. data/test/functional/events_controller_test.rb +6 -6
  345. data/test/functional/forums_controller_test.rb +8 -8
  346. data/test/functional/friendships_controller_test.rb +13 -18
  347. data/test/functional/homepage_features_controller_test.rb +5 -5
  348. data/test/functional/messages_controller_test.rb +6 -2
  349. data/test/functional/metro_areas_controller_test.rb +7 -7
  350. data/test/functional/moderators_controller_test.rb +1 -1
  351. data/test/functional/pages_controller_test.rb +2 -2
  352. data/test/functional/password_reset_controller_test.rb +2 -2
  353. data/test/functional/photos_controller_test.rb +16 -15
  354. data/test/functional/posts_controller_test.rb +4 -4
  355. data/test/functional/rsvps_controller_test.rb +6 -6
  356. data/test/functional/sb_posts_controller_test.rb +53 -50
  357. data/test/functional/sessions_controller_test.rb +4 -1
  358. data/test/functional/tags_controller_test.rb +1 -1
  359. data/test/functional/topics_controller_test.rb +10 -10
  360. data/test/functional/users_controller_test.rb +32 -19
  361. data/test/functional/votes_controller_test.rb +1 -1
  362. data/test/test_helper.rb +3 -1
  363. data/test/testapp/config/application.rb +1 -9
  364. data/test/testapp/config/environments/development.rb +1 -2
  365. data/test/testapp/config/environments/production.rb +2 -0
  366. data/test/testapp/config/environments/test.rb +1 -2
  367. data/test/testapp/config/initializers/omniauth.rb +3 -3
  368. data/test/testapp/config/initializers/secret_token.rb +1 -0
  369. data/test/testapp/db/schema.rb +143 -152
  370. data/test/unit/category_test.rb +2 -2
  371. data/test/unit/comment_test.rb +64 -53
  372. data/test/unit/event_test.rb +4 -4
  373. data/test/unit/forum_test.rb +1 -1
  374. data/test/unit/message_test.rb +7 -1
  375. data/test/unit/page_test.rb +2 -2
  376. data/test/unit/post_test.rb +47 -47
  377. data/test/unit/sb_post_test.rb +24 -20
  378. data/test/unit/topic_test.rb +7 -6
  379. data/test/unit/user_test.rb +75 -52
  380. data/vendor/assets/javascripts/.gitkeep +0 -0
  381. data/vendor/assets/javascripts/jcrop/jquery.Jcrop.js +1699 -0
  382. data/vendor/assets/javascripts/jcrop/jquery.color.js +661 -0
  383. data/vendor/assets/javascripts/tag-it/tag-it.js +597 -0
  384. data/vendor/assets/stylesheets/.gitkeep +0 -0
  385. data/vendor/assets/stylesheets/jcrop/Jcrop.gif +0 -0
  386. data/vendor/assets/stylesheets/jcrop/jquery.Jcrop.min.css +28 -0
  387. data/vendor/assets/stylesheets/tag-it/tag-it.css +69 -0
  388. data/vendor/assets/stylesheets/tag-it/tagit.ui-zendesk.css +107 -0
  389. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/README +0 -0
  390. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/Rakefile +0 -0
  391. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/generators/publishing/publishing_generator.rb +0 -0
  392. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/generators/publishing/templates/migration.rb +0 -0
  393. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/install.rb +0 -0
  394. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/acts_as_publishable/test/acts_as_publishable_test.rb +0 -0
  395. data/vendor/{plugins/activity_tracker → converted2.3plugins_to_lib_leftovers/acts_as_publishable}/uninstall.rb +0 -0
  396. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/README +0 -0
  397. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/Rakefile +0 -0
  398. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/test/atom_feed_test.rb +0 -0
  399. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/test/rss_feed_test.rb +0 -0
  400. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/resource_feeder/test/test_helper.rb +0 -0
  401. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/white_list/README +0 -0
  402. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/white_list/Rakefile +0 -0
  403. data/vendor/{plugins → converted2.3plugins_to_lib_leftovers}/white_list/test/white_list_test.rb +0 -0
  404. metadata +348 -302
  405. data/app/assets/images/bg_h6btn.gif +0 -0
  406. data/app/assets/images/bg_navbar.gif +0 -0
  407. data/app/assets/images/clearbits/bg_rounded.gif +0 -0
  408. data/app/assets/images/clearbits/comment.gif +0 -0
  409. data/app/assets/images/clearbits/lock.gif +0 -0
  410. data/app/assets/images/clearbits/smile.gif +0 -0
  411. data/app/assets/images/close.gif +0 -0
  412. data/app/assets/images/cropper/marqueeHoriz.gif +0 -0
  413. data/app/assets/images/cropper/marqueeVert.gif +0 -0
  414. data/app/assets/images/feed.png +0 -0
  415. data/app/assets/images/icons/31.png +0 -0
  416. data/app/assets/images/icons/52.png +0 -0
  417. data/app/assets/images/icons/accept.png +0 -0
  418. data/app/assets/images/icons/activity_default.png +0 -0
  419. data/app/assets/images/icons/add.png +0 -0
  420. data/app/assets/images/icons/book.png +0 -0
  421. data/app/assets/images/icons/bullet_arrow_down.png +0 -0
  422. data/app/assets/images/icons/bullet_arrow_down_50.png +0 -0
  423. data/app/assets/images/icons/clipping.png +0 -0
  424. data/app/assets/images/icons/comment.png +0 -0
  425. data/app/assets/images/icons/comments.png +0 -0
  426. data/app/assets/images/icons/date.png +0 -0
  427. data/app/assets/images/icons/delete.png +0 -0
  428. data/app/assets/images/icons/email.png +0 -0
  429. data/app/assets/images/icons/email_edit.png +0 -0
  430. data/app/assets/images/icons/email_go.png +0 -0
  431. data/app/assets/images/icons/email_open.png +0 -0
  432. data/app/assets/images/icons/group_go.png +0 -0
  433. data/app/assets/images/icons/heart.png +0 -0
  434. data/app/assets/images/icons/heart_add.png +0 -0
  435. data/app/assets/images/icons/heart_off.png +0 -0
  436. data/app/assets/images/icons/page_white.png +0 -0
  437. data/app/assets/images/icons/page_white_magnify.png +0 -0
  438. data/app/assets/images/icons/picture.png +0 -0
  439. data/app/assets/images/icons/poll.png +0 -0
  440. data/app/assets/images/icons/post.png +0 -0
  441. data/app/assets/images/icons/printer.png +0 -0
  442. data/app/assets/images/icons/rss.png +0 -0
  443. data/app/assets/images/icons/slides.png +0 -0
  444. data/app/assets/images/icons/tag_blue.png +0 -0
  445. data/app/assets/images/icons/user.png +0 -0
  446. data/app/assets/images/icons/user_add.png +0 -0
  447. data/app/assets/images/icons/user_edit.png +0 -0
  448. data/app/assets/images/icons/user_go.png +0 -0
  449. data/app/assets/images/icons/vote.png +0 -0
  450. data/app/assets/images/icons/world.png +0 -0
  451. data/app/assets/images/icons/wrench.png +0 -0
  452. data/app/assets/images/logo.gif +0 -0
  453. data/app/assets/images/reply_background.png +0 -0
  454. data/app/assets/images/search.gif +0 -0
  455. data/app/assets/images/thumb.gif +0 -0
  456. data/app/assets/javascripts/builder.js +0 -136
  457. data/app/assets/javascripts/calendarview.js +0 -839
  458. data/app/assets/javascripts/lightbox.js +0 -151
  459. data/app/assets/javascripts/prototip-min.js +0 -27
  460. data/app/assets/javascripts/rails.js +0 -202
  461. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/css/advimage.css +0 -84
  462. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/editor_plugin.js +0 -52
  463. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/editor_plugin_src.js +0 -45
  464. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/image.htm +0 -180
  465. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/img/sample.gif +0 -0
  466. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/js/functions.js +0 -508
  467. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/langs/en.js +0 -3
  468. data/app/assets/javascripts/tinymce/plugins/curblyadvimage/langs/en_dlg.js +0 -43
  469. data/app/assets/javascripts/tinymce/plugins/tinyautosave/editor_plugin.js +0 -8
  470. data/app/assets/javascripts/tinymce/plugins/tinyautosave/editor_plugin_src.js +0 -1001
  471. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress.gif +0 -0
  472. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress10.gif +0 -0
  473. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress11.gif +0 -0
  474. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress12.gif +0 -0
  475. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress2.gif +0 -0
  476. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress3.gif +0 -0
  477. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress4.gif +0 -0
  478. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress5.gif +0 -0
  479. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress6.gif +0 -0
  480. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress7.gif +0 -0
  481. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress8.gif +0 -0
  482. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/progress9.gif +0 -0
  483. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/restore.gif +0 -0
  484. data/app/assets/javascripts/tinymce/plugins/tinyautosave/images/restore.png +0 -0
  485. data/app/assets/javascripts/tinymce/plugins/tinyautosave/langs/da.js +0 -5
  486. data/app/assets/javascripts/tinymce/plugins/tinyautosave/langs/en.js +0 -5
  487. data/app/assets/stylesheets/community_engine.css +0 -6
  488. data/app/assets/stylesheets/forum.css +0 -605
  489. data/app/assets/stylesheets/prototip.css +0 -73
  490. data/app/assets/stylesheets/reset-fonts-grids.css +0 -8
  491. data/app/assets/stylesheets/screen.css +0 -977
  492. data/app/helpers/monitorships_helper.rb +0 -2
  493. data/app/views/activities/_icon.html.haml +0 -14
  494. data/app/views/activities/destroy.js.rjs +0 -1
  495. data/app/views/clippings/_meta.html.haml +0 -26
  496. data/app/views/clippings/load_images_from_uri.js.rjs +0 -1
  497. data/app/views/comments/create.js.rjs +0 -20
  498. data/app/views/comments/edit.js.rjs +0 -7
  499. data/app/views/comments/update.js.rjs +0 -9
  500. data/app/views/favorites/create.js.rjs +0 -17
  501. data/app/views/favorites/destroy.js.rjs +0 -14
  502. data/app/views/favorites/show.html.haml +0 -13
  503. data/app/views/friendships/_friendships.html.erb +0 -14
  504. data/app/views/friendships/index.html.erb +0 -3
  505. data/app/views/friendships/index.xml.builder +0 -29
  506. data/app/views/invitations/index.html.erb +0 -16
  507. data/app/views/moderators/_toggle.html.erb +0 -14
  508. data/app/views/moderators/create.js.rjs +0 -5
  509. data/app/views/moderators/destroy.js.rjs +0 -1
  510. data/app/views/monitorships/create.js.rjs +0 -4
  511. data/app/views/monitorships/destroy.js.rjs +0 -4
  512. data/app/views/photos/manage_photos.js.rjs +0 -5
  513. data/app/views/polls/_polls_sidebar.html.haml +0 -8
  514. data/app/views/posts/_send_to_friend.html.erb +0 -29
  515. data/app/views/sb_posts/_dummy_forum_post.html.erb +0 -13
  516. data/app/views/sb_posts/_edit.html.erb +0 -31
  517. data/app/views/sb_posts/create.js.rjs +0 -16
  518. data/app/views/sb_posts/edit.js.rjs +0 -6
  519. data/app/views/sb_posts/update.js.rjs +0 -5
  520. data/app/views/shared/_user_menu.html.haml +0 -21
  521. data/app/views/votes/create.js.rjs +0 -6
  522. data/db/migrate/090_add_comment_role.rb +0 -15
  523. data/vendor/plugins/activity_tracker/README +0 -4
  524. data/vendor/plugins/activity_tracker/Rakefile +0 -22
  525. data/vendor/plugins/activity_tracker/generators/activity_migration/USAGE +0 -13
  526. data/vendor/plugins/activity_tracker/generators/activity_migration/activity_migration_generator.rb +0 -11
  527. data/vendor/plugins/activity_tracker/generators/activity_migration/templates/migration.rb +0 -17
  528. data/vendor/plugins/activity_tracker/init.rb +0 -1
  529. data/vendor/plugins/activity_tracker/install.rb +0 -1
  530. data/vendor/plugins/activity_tracker/tasks/activity_tracker_tasks.rake +0 -4
  531. data/vendor/plugins/activity_tracker/test/abstract_unit.rb +0 -47
  532. data/vendor/plugins/activity_tracker/test/activity_tracker_test.rb +0 -48
  533. data/vendor/plugins/activity_tracker/test/database.yml +0 -18
  534. data/vendor/plugins/activity_tracker/test/debug.log +0 -3329
  535. data/vendor/plugins/activity_tracker/test/fixtures/test_post.rb +0 -5
  536. data/vendor/plugins/activity_tracker/test/fixtures/test_posts.yml +0 -3
  537. data/vendor/plugins/activity_tracker/test/fixtures/test_user.rb +0 -4
  538. data/vendor/plugins/activity_tracker/test/fixtures/test_users.yml +0 -6
  539. data/vendor/plugins/activity_tracker/test/schema.rb +0 -21
  540. data/vendor/plugins/acts_as_list/README +0 -23
  541. data/vendor/plugins/acts_as_list/init.rb +0 -3
  542. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +0 -256
  543. data/vendor/plugins/acts_as_list/test/list_test.rb +0 -332
  544. data/vendor/plugins/acts_as_publishable/uninstall.rb +0 -1
  545. data/vendor/plugins/auto_complete/README +0 -23
  546. data/vendor/plugins/auto_complete/Rakefile +0 -22
  547. data/vendor/plugins/auto_complete/init.rb +0 -2
  548. data/vendor/plugins/auto_complete/lib/auto_complete.rb +0 -47
  549. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +0 -143
  550. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +0 -67
  551. data/vendor/plugins/enumerations_mixin/.gitignore +0 -1
  552. data/vendor/plugins/enumerations_mixin/Gemfile +0 -1
  553. data/vendor/plugins/enumerations_mixin/LICENSE +0 -20
  554. data/vendor/plugins/enumerations_mixin/README.md +0 -120
  555. data/vendor/plugins/enumerations_mixin/README_ENUMERATIONS +0 -163
  556. data/vendor/plugins/enumerations_mixin/Rakefile +0 -14
  557. data/vendor/plugins/enumerations_mixin/VERSION +0 -1
  558. data/vendor/plugins/enumerations_mixin/enumerations_mixin.gemspec +0 -44
  559. data/vendor/plugins/enumerations_mixin/examples/virtual_enumerations_sample.rb +0 -76
  560. data/vendor/plugins/enumerations_mixin/init.rb +0 -21
  561. data/vendor/plugins/enumerations_mixin/lib/active_record/acts/enumerated.rb +0 -180
  562. data/vendor/plugins/enumerations_mixin/lib/active_record/aggregations/has_enumerated.rb +0 -60
  563. data/vendor/plugins/enumerations_mixin/lib/active_record/virtual_enumerations.rb +0 -68
  564. data/vendor/plugins/enumerations_mixin/lib/enumerations_mixin.rb +0 -12
  565. data/vendor/plugins/enumerations_mixin/virtual_enumerations_sample.rb +0 -76
  566. data/vendor/plugins/prototype_legacy_helper/README.markdown +0 -13
  567. data/vendor/plugins/prototype_legacy_helper/init.rb +0 -1
  568. data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +0 -432
  569. data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +0 -297
  570. data/vendor/plugins/resource_feeder/init.rb +0 -2
  571. data/vendor/plugins/resource_feeder/lib/resource_feeder.rb +0 -2
  572. data/vendor/plugins/respond_to_parent/MIT-LICENSE +0 -20
  573. data/vendor/plugins/respond_to_parent/README +0 -47
  574. data/vendor/plugins/respond_to_parent/Rakefile +0 -22
  575. data/vendor/plugins/respond_to_parent/init.rb +0 -1
  576. data/vendor/plugins/respond_to_parent/install.rb +0 -1
  577. data/vendor/plugins/respond_to_parent/lib/responds_to_parent.rb +0 -70
  578. data/vendor/plugins/respond_to_parent/test/responds_to_parent_test.rb +0 -10
  579. data/vendor/plugins/respond_to_parent/test/test_helper.rb +0 -6
  580. data/vendor/plugins/respond_to_parent/uninstall.rb +0 -1
@@ -1,163 +0,0 @@
1
- Enumerations Mixin
2
- Copyright (c) 2005 Trevor Squires
3
- Released under the MIT License. See the LICENSE file for more details.
4
-
5
- What is this?:
6
-
7
- The enumerations mixin allows you to treat instances of your
8
- ActiveRecord models as though they were an enumeration of values.
9
-
10
- At it's most basic level, it allows you to say things along the lines of:
11
-
12
- booking = Booking.new(:status => BookingStatus[:provisional])
13
- booking.update_attribute(:status, BookingStatus[:confirmed])
14
-
15
- Booking.find :first,
16
- :conditions => ['status_id = ?', BookingStatus[:provisional].id]
17
-
18
- BookingStatus.all.collect {|status|, [status.name, status.id]}
19
-
20
- See "How to use it" below for more information.
21
-
22
- Package Contents:
23
-
24
- This package adds two mixins and a helper to Rails' ActiveRecord:
25
-
26
- acts_as_enumerated provides capabilities to treat your model and
27
- its records as an enumeration. At a minimum, the database table for
28
- an acts_as_enumerated must contain an 'id' column and a 'name'
29
- column. All instances for the acts_as_enumerated model are cached
30
- in memory.
31
-
32
- has_enumerated adds methods to your ActiveRecord model for setting
33
- and retrieving enumerated values using an associated acts_as_enumerated
34
- model.
35
-
36
- There is also an ActiveRecord::VirtualEnumerations helper module
37
- to create 'virtual' acts_as_enumerated models which helps to avoid
38
- cluttering up your models directory with acts_as_enumerated classes.
39
-
40
- How to use it:
41
-
42
- * acts_as_enumerated
43
-
44
- class BookingStatus < ActiveRecord::Base
45
- acts_as_enumerated :conditions => 'optional_sql_conditions',
46
- :order => 'optional_sql_orderby',
47
- :on_lookup_failure => :optional_class_method
48
- end
49
-
50
- With that, your BookingStatus class will have the following methods defined:
51
-
52
- * BookingStatus[arg] : lookup the BookingStatus instance for arg.
53
- The arg value can be a 'string' or a :symbol, in which case the
54
- lookup will be against the BookingStatus.name field. Alternatively
55
- arg can be a Fixnum, in which case the lookup will be against the
56
- BookingStatus.id field.
57
-
58
- The :on_lookup_failure option specifies the name of a class method
59
- to invoke when the [] method is unable to locate a BookingStatus
60
- record for arg. The defeault is the built-in :enforce_strict_literals
61
- which causes an exception to be raised when no record is found and
62
- the arg is a Fixnum or Symbol, otherwise it returns nil. There are
63
- also built-ins for :enforce_strict (raise and exception regardless
64
- of the type for arg) and :enforce_none which just returns nil.
65
-
66
- The whole point of the :on_lookup_failure option is that I'm pretty
67
- opinionated that a) if the value can't be looked-up for a :symbol
68
- that I've passed, it's probably a typo so I want a *big* hint that
69
- something is wrong and b) it's likely that my opinion isn't shared
70
- by everyone so it should be configurable.
71
-
72
- * BookingStatus.all : returns an array of all BookingStatus records
73
- that match the :conditions specified in acts_as_enumerated, in the
74
- order specified by :order.
75
-
76
- NOTE: acts_as_enumerated records are considered immutable. By
77
- default you cannot create/alter/destroy instances because they are
78
- cached in memory. Because of Rails' process-based model it is not
79
- safe to allow updating acts_as_enumerated records as the caches
80
- will get out of sync.
81
-
82
- However, one instance where updating the models *should* be allowed
83
- is if you are using ActiveRecord Migrations.
84
-
85
- Using the above example you would do the following:
86
-
87
- BookingStatus.enumeration_model_updates_permitted = true
88
- BookingStatus.create(:name => 'newname')
89
-
90
- * has_enumerated
91
-
92
- First of all, note that you *could* specify the relationship
93
- to an acts_as_enumerated class using the belongs_to association.
94
- However, has_enumerated is preferable because you aren't really
95
- associated to the enumerated value, you are *aggregating* it.
96
- As such, the has_enumerated macro behaves more like an aggregation
97
- than an association.
98
-
99
- class Booking < ActiveRecord::Base
100
- has_enumerated :status, :class_name => 'BookingStatus',
101
- :foreign_key => 'status_id',
102
- :on_lookup_failure => :optional_instance_method
103
- end
104
-
105
- By default, the foreign key is interpreted to be the name of your
106
- has_enumerated field (in this case 'status') plus '_id'. Additionally,
107
- the default value for :class_name is the camel-ized version of the
108
- name for your has_enumerated field. :on_lookup_failure is explained
109
- below.
110
-
111
- With that, your Booking class will have the following methods defined:
112
-
113
- * status : returns the BookingStatus with an id that matches the
114
- value in the Booking.status_id.
115
-
116
- * status= : sets the value for Booking.status_id using the id of
117
- the BookingStatus instance passed as an argument. As a short-hand,
118
- you can also pass it the 'name' of a BookingStatus instance, either
119
- as a 'string' or :symbol.
120
-
121
- I.e. mybooking.status = :confirmed or mybooking.update_attribute(:status,
122
- :confirmed)
123
-
124
- The :on_lookup_failure option in has_enumerated is there because
125
- (again) I'm opinionated about what should happen. By default, if
126
- booking.status_id contains an id that isn't a valid BookingStatus.id
127
- I just want booking.status to return nil rather than throw an
128
- exception. This ensures I can edit my Booking instances without
129
- having to put rescue blocks around all my booking.status calls.
130
- However, if I call booking.status = :bogus I want noisy hints about
131
- the bug.
132
-
133
- Of course, you may not agree with that in which case you can specify
134
- an *instance* method to be called in the case of a lookup failure.
135
- The method signature is as follows:
136
-
137
- your_lookup_handler(operation, name, name_foreign_key,
138
- acts_enumerated_class_name, lookup_value)
139
-
140
- The 'operation' arg will be either :read or :write. In the case
141
- of :read you are expected to return something or raise an exception,
142
- while in the case of a :write you don't have to return anything.
143
-
144
- Note that there's enough information in the method signature that
145
- you can specify one method to handle all lookup failures for all
146
- has_enumerated fields if you happen to have more than one defined
147
- in your model.
148
-
149
- * ActiveRecord::VirtualEnumerations
150
-
151
- For the most part, your acts_as_enumerated classes will do nothing
152
- more than just act as enumerated.
153
-
154
- In that case there isn't much point cluttering up your models
155
- directory with those class files. You can use
156
- ActiveRecord::VirtualEnumerations to reduce that clutter.
157
-
158
- Copy virtual_enumerations_sample.rb to
159
- Rails.root/config/virtual_enumerations.rb and configure it accordingly.
160
-
161
- See virtual_enumerations_sample.rb in this directory for a full
162
- description.
163
-
@@ -1,14 +0,0 @@
1
- begin
2
- require "jeweler"
3
- Jeweler::Tasks.new do |gem|
4
- gem.name = "enumerations_mixin"
5
- gem.summary = "Allows you to treat instances of your ActiveRecord models as though they were an enumeration of values"
6
- gem.description = "Allows you to treat instances of your ActiveRecord models as though they were an enumeration of values"
7
- gem.email = "pivotal-opensource@googlegroups.com"
8
- gem.homepage = "http://github.com/pivotal/enumerations_mixin"
9
- gem.authors = ["Trevor Squires", "Pivotal Labs"]
10
- gem.files = Dir["{lib}/**/*"] + Dir["{examples}/**/*"]
11
- end
12
- rescue
13
- puts "Jeweler or one of its dependencies is not installed."
14
- end
@@ -1,44 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{enumerations_mixin}
8
- s.version = "0.2.4"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Trevor Squires", "Pivotal Labs"]
12
- s.date = %q{2012-01-10}
13
- s.description = %q{Allows you to treat instances of your ActiveRecord models as though they were an enumeration of values}
14
- s.email = %q{pivotal-opensource@googlegroups.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.md"
18
- ]
19
- s.files = [
20
- "examples/virtual_enumerations_sample.rb",
21
- "lib/active_record/acts/enumerated.rb",
22
- "lib/active_record/aggregations/has_enumerated.rb",
23
- "lib/active_record/virtual_enumerations.rb",
24
- "lib/enumerations_mixin.rb"
25
- ]
26
- s.homepage = %q{http://github.com/pivotal/enumerations_mixin}
27
- s.require_paths = ["lib"]
28
- s.rubygems_version = %q{1.3.7}
29
- s.summary = %q{Allows you to treat instances of your ActiveRecord models as though they were an enumeration of values}
30
-
31
- if s.respond_to? :specification_version then
32
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
33
- s.specification_version = 3
34
-
35
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
36
- s.add_runtime_dependency(%q<rails>, [">= 3.0.0"])
37
- else
38
- s.add_dependency(%q<rails>, [">= 3.0.0"])
39
- end
40
- else
41
- s.add_dependency(%q<rails>, [">= 3.0.0"])
42
- end
43
- end
44
-
@@ -1,76 +0,0 @@
1
- # Copyright (c) 2005 Trevor Squires
2
- # Released under the MIT License. See the LICENSE file for more details.
3
-
4
- # Copy this file to Rails.root/config/initializers/virtual_enumerations.rb
5
- # and configure it accordingly.
6
- ActiveRecord::VirtualEnumerations.define do |config|
7
- ###
8
- # USAGE (and don't worry, it doesn't have to be as ugly as this):
9
- # config.define 'ClassName',
10
- # :table_name => 'table', :extends => 'SuperclassName',
11
- # :conditions => ['something = ?', "value"], :order => 'column ASC',
12
- # :on_lookup_failure => :enforce_strict_literals do
13
- # class_evaled_functions
14
- # end
15
- #
16
- # 'ClassName', :table_name and :extends are used to define your virtual class.
17
- # Note that 'ClassName' can be a :symbol or a 'CamelString'.
18
- #
19
- # The :conditions, :order and :on_lookup_failure arguments are passed to
20
- # acts_as_enumerated in your virtual class. See README_ENUMERATIONS for info
21
- # on how acts_as_enumerated works.
22
- #
23
- # The 'do' block will be class_eval'd by your virtual class after it has
24
- # been loaded-on-demand.
25
- #
26
- ###
27
- # Okay, that's pretty long-winded.
28
- # Everything after the initial 'class_name' is optional so for most applications, this
29
- # is about as verbose as you're likely to get:
30
- #
31
- # config.define :booking_status, :order => 'position ASC'
32
- #
33
- # In the above example, ActiveRecord assumes the table will be called 'booking_statuses'
34
- # and the table should have a 'position' column defined.
35
- #
36
- # If you've got a bunch of enumeration classes that share the same optional parameters
37
- # you can pass an array of names as the first argument, saving your fingers from typing
38
- # config.define over and over again:
39
- #
40
- # config.define [:booking_status, :card_issuer], :order => 'position ASC'
41
- #
42
- # You can also take advantage of ActiveRecord's STI:
43
- #
44
- # config.define :enum_record, :order => 'position ASC', :table_name => 'enumrecords'
45
- # config.define [:booking_status, :card_issuer], :extends => 'EnumRecord'
46
- #
47
- # In the above example, all of the records are stored in the table called 'enumrecords'
48
- # and all acts_as_enumerated parameters are automatically inherited by the
49
- # subclasses (although you can override them if you want).
50
- # You can also use :extends to extend a non-virtual model class (that's already in
51
- # your models directory) if that floats your boat.
52
- #
53
- # Finally, that strange optional 'do' block.
54
- # You may be struck by the need to tamper with your virtual enumeration class after
55
- # it has been loaded-on-demand. This can be as simple as blessing it with a
56
- # certain 'act':
57
- #
58
- # config.define :enum_record, :order => 'position ASC' do
59
- # acts_as_list # but see README_ENUMERATIONS for rules about modifying your records
60
- # end
61
- #
62
- # or you may be experimenting with the dark-side... singleton methods
63
- #
64
- # config.define :card_issuer do
65
- # class << self[:visa]; def verify_number(arg); some_code_here; end; end
66
- # class << self[:master_card]; def verify_number(arg); some_other_code_here; end; end
67
- # end
68
- #
69
- # For virtual enumerations, this sort of tampering *has* to be defined in the
70
- # config.define do block. This is because in development mode, rails loads and
71
- # subsequently clobbers your model classes for each request. The 'do' block will
72
- # be evaluated each time your model class is loaded-on-demand.
73
- #
74
- ###
75
-
76
- end
@@ -1,21 +0,0 @@
1
- # Copyright (c) 2005 Trevor Squires
2
- # Released under the MIT License. See the LICENSE file for more details.
3
-
4
- require 'active_record/acts/enumerated'
5
- require 'active_record/aggregations/has_enumerated'
6
- ActiveRecord::Base.class_eval do
7
- include ActiveRecord::Acts::Enumerated
8
- include ActiveRecord::Aggregations::HasEnumerated
9
- end
10
-
11
- # Virtual enumerations are useful if you've got a ton of different
12
- # enumerations and don't care to litter your models directory with them.
13
- # It's also handy if you want to define singleton methods for your
14
- # enumerated values.
15
- # See virtual_sample.txt in this directory for more info
16
- if File.exist?("#{Rails.root}/config/virtual_enumerations.rb")
17
- require 'active_record/virtual_enumerations'
18
- silence_warnings do
19
- eval(IO.read("#{Rails.root}/config/virtual_enumerations.rb"), binding)
20
- end
21
- end
@@ -1,180 +0,0 @@
1
- # Copyright (c) 2005 Trevor Squires
2
- # Released under the MIT License. See the LICENSE file for more details.
3
-
4
- module ActiveRecord
5
- module Acts
6
- module Enumerated
7
- def self.append_features(base)
8
- super
9
- base.extend(MacroMethods)
10
- end
11
-
12
- module MacroMethods
13
- def acts_as_enumerated(options = {})
14
- valid_keys = [:conditions, :order, :on_lookup_failure]
15
- options.assert_valid_keys(*valid_keys)
16
- valid_keys.each do |key|
17
- class_attribute :acts_enumerated_on_lookup_failure
18
- class_attribute "acts_enumerated_#{key.to_s}"
19
- if options.has_key?( key )
20
- self.send "acts_enumerated_#{key.to_s}=", options[key]
21
- end
22
- end
23
-
24
- unless self.is_a? ActiveRecord::Acts::Enumerated::ClassMethods
25
- extend ActiveRecord::Acts::Enumerated::ClassMethods
26
- class_eval do
27
- include ActiveRecord::Acts::Enumerated::InstanceMethods
28
- validates_uniqueness_of :name
29
- before_save :enumeration_model_update
30
- before_destroy :enumeration_model_update
31
- end
32
- end
33
- end
34
- end
35
-
36
- module ClassMethods
37
- attr_accessor :enumeration_model_updates_permitted
38
-
39
- def all
40
- return @all if @all
41
- conditions = self.acts_enumerated_conditions
42
- order = self.acts_enumerated_order
43
- @all = where(conditions).order(order).collect{|val| val.freeze}.freeze
44
- end
45
-
46
- def [](arg)
47
- case arg
48
- when Symbol
49
- rval = lookup_name(arg.id2name) and return rval
50
- when String
51
- rval = lookup_name(arg) and return rval
52
- when Fixnum
53
- rval = lookup_id(arg) and return rval
54
- when nil
55
- rval = nil
56
- else
57
- raise TypeError, "#{self.name}[]: argument should be a String, Symbol or Fixnum but got a: #{arg.class.name}"
58
- end
59
- self.send(:acts_enumerated_on_lookup_failure) || self.send(:enforce_strict_literals, arg)
60
- end
61
-
62
- def lookup_id(arg)
63
- all_by_id[arg]
64
- end
65
-
66
- def lookup_name(arg)
67
- all_by_name[arg]
68
- end
69
-
70
- def include?(arg)
71
- case arg
72
- when Symbol
73
- return !lookup_name(arg.id2name).nil?
74
- when String
75
- return !lookup_name(arg).nil?
76
- when Fixnum
77
- return !lookup_id(arg).nil?
78
- when self
79
- possible_match = lookup_id(arg.id)
80
- return !possible_match.nil? && possible_match == arg
81
- end
82
- return false
83
- end
84
-
85
- # NOTE: purging the cache is sort of pointless because
86
- # of the per-process rails model.
87
- # By default this blows up noisily just in case you try to be more
88
- # clever than rails allows.
89
- # For those times (like in Migrations) when you really do want to
90
- # alter the records you can silence the carping by setting
91
- # enumeration_model_updates_permitted to true.
92
- def purge_enumerations_cache
93
- unless self.enumeration_model_updates_permitted
94
- raise "#{self.name}: cache purging disabled for your protection"
95
- end
96
- @all = @all_by_name = @all_by_id = nil
97
- end
98
-
99
- private
100
-
101
- def all_by_id
102
- return @all_by_id if @all_by_id
103
- @all_by_id = all.inject({}) { |memo, item| memo[item.id] = item; memo;}.freeze
104
- end
105
-
106
- def all_by_name
107
- return @all_by_name if @all_by_name
108
- begin
109
- @all_by_name = all.inject({}) { |memo, item| memo[item.name] = item; memo;}.freeze
110
- rescue NoMethodError => err
111
- if err.name == :name
112
- raise TypeError, "#{self.name}: you need to define a 'name' column in the table '#{table_name}'"
113
- end
114
- raise
115
- end
116
- end
117
-
118
- def enforce_none(arg)
119
- return nil
120
- end
121
-
122
- def enforce_strict(arg)
123
- raise ActiveRecord::RecordNotFound, "Couldn't find a #{self.name} identified by (#{arg.inspect})"
124
- end
125
-
126
- def enforce_strict_literals(arg)
127
- if Fixnum === arg || Symbol === arg
128
- raise ActiveRecord::RecordNotFound, "Couldn't find a #{self.name} identified by (#{arg.inspect})"
129
- end
130
- return nil
131
- end
132
-
133
- end
134
-
135
- module InstanceMethods
136
- def ===(arg)
137
- case arg
138
- when Symbol, String, Fixnum, nil
139
- return self == self.class[arg]
140
- when Array
141
- return self.in?(*arg)
142
- end
143
- super
144
- end
145
-
146
- alias_method :like?, :===
147
-
148
- def in?(*list)
149
- for item in list
150
- self === item and return true
151
- end
152
- return false
153
- end
154
-
155
- def name_sym
156
- self.name.to_sym
157
- end
158
-
159
- private
160
-
161
- # NOTE: updating the models that back an acts_as_enumerated is
162
- # rather dangerous because of rails' per-process model.
163
- # The cached values could get out of synch between processes
164
- # and rather than completely disallow changes I make you jump
165
- # through an extra hoop just in case you're defining your enumeration
166
- # values in Migrations. I.e. set enumeration_model_updates_permitted = true
167
- def enumeration_model_update
168
- if self.class.enumeration_model_updates_permitted
169
- self.class.purge_enumerations_cache
170
- return true
171
- end
172
- # Ugh. This just seems hack-ish. I wonder if there's a better way.
173
- self.errors.add('name', "changes to acts_as_enumeration model instances are not permitted")
174
- return false
175
- end
176
- end
177
- end
178
- end
179
- end
180
-