community_engine 2.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +15 -0
- data/.gitmodules +0 -0
- data/.travis.yml +9 -0
- data/CHANGELOG +118 -0
- data/Gemfile +3 -0
- data/LICENSE +30 -0
- data/README.markdown +188 -0
- data/Rakefile +54 -0
- data/UPGRADING.markdown +93 -0
- data/about.yml +7 -0
- data/app/assets/images/auth/facebook_32.png +0 -0
- data/app/assets/images/auth/facebook_64.png +0 -0
- data/app/assets/images/auth/google_32.png +0 -0
- data/app/assets/images/auth/google_64.png +0 -0
- data/app/assets/images/auth/linked_in_32.png +0 -0
- data/app/assets/images/auth/linked_in_64.png +0 -0
- data/app/assets/images/auth/open_id_32.png +0 -0
- data/app/assets/images/auth/remove.png +0 -0
- data/app/assets/images/auth/twitter_32.png +0 -0
- data/app/assets/images/auth/twitter_64.png +0 -0
- data/app/assets/images/bg_h6btn.gif +0 -0
- data/app/assets/images/bg_navbar.gif +0 -0
- data/app/assets/images/clearbits/bg_rounded.gif +0 -0
- data/app/assets/images/clearbits/comment.gif +0 -0
- data/app/assets/images/clearbits/lock.gif +0 -0
- data/app/assets/images/clearbits/smile.gif +0 -0
- data/app/assets/images/close.gif +0 -0
- data/app/assets/images/cropper/marqueeHoriz.gif +0 -0
- data/app/assets/images/cropper/marqueeVert.gif +0 -0
- data/app/assets/images/feed.png +0 -0
- data/app/assets/images/icon_missing_medium.gif +0 -0
- data/app/assets/images/icon_missing_thumb.gif +0 -0
- data/app/assets/images/icons/31.png +0 -0
- data/app/assets/images/icons/52.png +0 -0
- data/app/assets/images/icons/accept.png +0 -0
- data/app/assets/images/icons/activity_default.png +0 -0
- data/app/assets/images/icons/add.png +0 -0
- data/app/assets/images/icons/book.png +0 -0
- data/app/assets/images/icons/bullet_arrow_down.png +0 -0
- data/app/assets/images/icons/bullet_arrow_down_50.png +0 -0
- data/app/assets/images/icons/clipping.png +0 -0
- data/app/assets/images/icons/comment.png +0 -0
- data/app/assets/images/icons/comments.png +0 -0
- data/app/assets/images/icons/date.png +0 -0
- data/app/assets/images/icons/delete.png +0 -0
- data/app/assets/images/icons/email.png +0 -0
- data/app/assets/images/icons/email_edit.png +0 -0
- data/app/assets/images/icons/email_go.png +0 -0
- data/app/assets/images/icons/email_open.png +0 -0
- data/app/assets/images/icons/group_go.png +0 -0
- data/app/assets/images/icons/heart.png +0 -0
- data/app/assets/images/icons/heart_add.png +0 -0
- data/app/assets/images/icons/heart_off.png +0 -0
- data/app/assets/images/icons/ical.gif +0 -0
- data/app/assets/images/icons/page_white.png +0 -0
- data/app/assets/images/icons/page_white_magnify.png +0 -0
- data/app/assets/images/icons/picture.png +0 -0
- data/app/assets/images/icons/poll.png +0 -0
- data/app/assets/images/icons/post.png +0 -0
- data/app/assets/images/icons/printer.png +0 -0
- data/app/assets/images/icons/rss.png +0 -0
- data/app/assets/images/icons/slides.png +0 -0
- data/app/assets/images/icons/tag_blue.png +0 -0
- data/app/assets/images/icons/user.png +0 -0
- data/app/assets/images/icons/user_add.png +0 -0
- data/app/assets/images/icons/user_edit.png +0 -0
- data/app/assets/images/icons/user_go.png +0 -0
- data/app/assets/images/icons/vote.png +0 -0
- data/app/assets/images/icons/world.png +0 -0
- data/app/assets/images/icons/wrench.png +0 -0
- data/app/assets/images/logo.gif +0 -0
- data/app/assets/images/reply_background.png +0 -0
- data/app/assets/images/search.gif +0 -0
- data/app/assets/images/spinner.gif +0 -0
- data/app/assets/images/spinner_black.gif +0 -0
- data/app/assets/images/spinner_bounce.gif +0 -0
- data/app/assets/images/swf/choose.png +0 -0
- data/app/assets/images/swf/line_grapher.swf +0 -0
- data/app/assets/images/swf/swfupload.swf +0 -0
- data/app/assets/images/thumb.gif +0 -0
- data/app/assets/javascripts/builder.js +136 -0
- data/app/assets/javascripts/calendarview.js +839 -0
- data/app/assets/javascripts/community_engine.js +20 -0
- data/app/assets/javascripts/cropper.css +182 -0
- data/app/assets/javascripts/cropper.js +566 -0
- data/app/assets/javascripts/forum.js +73 -0
- data/app/assets/javascripts/lightbox.js +151 -0
- data/app/assets/javascripts/prototip-min.js +27 -0
- data/app/assets/javascripts/rails.js +202 -0
- data/app/assets/javascripts/tinymce/plugins/curblyadvimage/css/advimage.css +84 -0
- data/app/assets/javascripts/tinymce/plugins/curblyadvimage/editor_plugin.js +52 -0
- data/app/assets/javascripts/tinymce/plugins/curblyadvimage/editor_plugin_src.js +45 -0
- data/app/assets/javascripts/tinymce/plugins/curblyadvimage/image.htm +180 -0
- data/app/assets/javascripts/tinymce/plugins/curblyadvimage/img/sample.gif +0 -0
- data/app/assets/javascripts/tinymce/plugins/curblyadvimage/js/functions.js +508 -0
- data/app/assets/javascripts/tinymce/plugins/curblyadvimage/langs/en.js +3 -0
- data/app/assets/javascripts/tinymce/plugins/curblyadvimage/langs/en_dlg.js +43 -0
- data/app/assets/stylesheets/community_engine.css +6 -0
- data/app/assets/stylesheets/forum.css +605 -0
- data/app/assets/stylesheets/lightbox.css +38 -0
- data/app/assets/stylesheets/prototip.css +73 -0
- data/app/assets/stylesheets/reset-fonts-grids.css +8 -0
- data/app/assets/stylesheets/screen.css +977 -0
- data/app/controllers/activities_controller.rb +38 -0
- data/app/controllers/admin_controller.rb +80 -0
- data/app/controllers/ads_controller.rb +85 -0
- data/app/controllers/albums_controller.rb +106 -0
- data/app/controllers/authorizations_controller.rb +41 -0
- data/app/controllers/base_controller.rb +151 -0
- data/app/controllers/categories_controller.rb +118 -0
- data/app/controllers/clippings_controller.rb +192 -0
- data/app/controllers/comment_sweeper.rb +35 -0
- data/app/controllers/comments_controller.rb +179 -0
- data/app/controllers/event_sweeper.rb +24 -0
- data/app/controllers/events_controller.rb +173 -0
- data/app/controllers/favorite_sweeper.rb +29 -0
- data/app/controllers/favorites_controller.rb +36 -0
- data/app/controllers/forums_controller.rb +71 -0
- data/app/controllers/friendships_controller.rb +126 -0
- data/app/controllers/homepage_features_controller.rb +68 -0
- data/app/controllers/invitations_controller.rb +46 -0
- data/app/controllers/messages_controller.rb +95 -0
- data/app/controllers/metro_areas_controller.rb +68 -0
- data/app/controllers/moderators_controller.rb +26 -0
- data/app/controllers/monitorships_controller.rb +20 -0
- data/app/controllers/page_sweeper.rb +33 -0
- data/app/controllers/pages_controller.rb +70 -0
- data/app/controllers/password_resets_controller.rb +52 -0
- data/app/controllers/photo_manager_controller.rb +11 -0
- data/app/controllers/photos_controller.rb +189 -0
- data/app/controllers/post_sweeper.rb +36 -0
- data/app/controllers/posts_controller.rb +252 -0
- data/app/controllers/rsvps_controller.rb +77 -0
- data/app/controllers/sb_posts_controller.rb +149 -0
- data/app/controllers/sessions_controller.rb +34 -0
- data/app/controllers/sitemap_controller.rb +21 -0
- data/app/controllers/statistics_controller.rb +34 -0
- data/app/controllers/taggable_sweeper.rb +38 -0
- data/app/controllers/tags_controller.rb +104 -0
- data/app/controllers/theme_controller.rb +60 -0
- data/app/controllers/topics_controller.rb +122 -0
- data/app/controllers/users_controller.rb +426 -0
- data/app/controllers/vote_sweeper.rb +16 -0
- data/app/controllers/votes_controller.rb +24 -0
- data/app/helpers/base_helper.rb +290 -0
- data/app/helpers/forums_helper.rb +31 -0
- data/app/helpers/friendships_helper.rb +16 -0
- data/app/helpers/monitorships_helper.rb +2 -0
- data/app/helpers/posts_helper.rb +17 -0
- data/app/helpers/sitemap_helper.rb +7 -0
- data/app/helpers/users_helper.rb +6 -0
- data/app/models/ad.rb +43 -0
- data/app/models/album.rb +12 -0
- data/app/models/asset.rb +3 -0
- data/app/models/authorization.rb +60 -0
- data/app/models/category.rb +20 -0
- data/app/models/choice.rb +13 -0
- data/app/models/clipping.rb +78 -0
- data/app/models/clipping_image.rb +9 -0
- data/app/models/comment.rb +122 -0
- data/app/models/country.rb +24 -0
- data/app/models/event.rb +61 -0
- data/app/models/facebook_profile.rb +32 -0
- data/app/models/facebook_publisher.rb +45 -0
- data/app/models/favorite.rb +47 -0
- data/app/models/forum.rb +22 -0
- data/app/models/friendship.rb +64 -0
- data/app/models/friendship_status.rb +3 -0
- data/app/models/homepage_feature.rb +15 -0
- data/app/models/invitation.rb +36 -0
- data/app/models/message.rb +84 -0
- data/app/models/message_thread.rb +33 -0
- data/app/models/metro_area.rb +16 -0
- data/app/models/moderatorship.rb +8 -0
- data/app/models/monitorship.rb +6 -0
- data/app/models/page.rb +8 -0
- data/app/models/photo.rb +83 -0
- data/app/models/poll.rb +39 -0
- data/app/models/post.rb +201 -0
- data/app/models/role.rb +5 -0
- data/app/models/rsvp.rb +24 -0
- data/app/models/sb_post.rb +67 -0
- data/app/models/state.rb +4 -0
- data/app/models/topic.rb +72 -0
- data/app/models/twitter_profile.rb +20 -0
- data/app/models/user.rb +483 -0
- data/app/models/user_notifier.rb +140 -0
- data/app/models/user_session.rb +14 -0
- data/app/models/vote.rb +19 -0
- data/app/views/activities/_activity.html.haml +56 -0
- data/app/views/activities/_icon.html.haml +14 -0
- data/app/views/activities/_unhandled_item.html.haml +1 -0
- data/app/views/activities/destroy.js.rjs +1 -0
- data/app/views/activities/index.html.haml +16 -0
- data/app/views/activities/network.html.haml +14 -0
- data/app/views/admin/comments.html.haml +71 -0
- data/app/views/admin/events.html.haml +33 -0
- data/app/views/admin/messages.html.haml +4 -0
- data/app/views/admin/users.html.haml +69 -0
- data/app/views/ads/edit.html.haml +46 -0
- data/app/views/ads/index.html.haml +43 -0
- data/app/views/ads/new.html.haml +44 -0
- data/app/views/ads/show.html.haml +36 -0
- data/app/views/albums/_form.html.haml +14 -0
- data/app/views/albums/edit.html.haml +16 -0
- data/app/views/albums/new.html.haml +15 -0
- data/app/views/albums/show.html.haml +32 -0
- data/app/views/base/_homepage_banner_message.html.haml +19 -0
- data/app/views/base/advertise.html.haml +8 -0
- data/app/views/base/plaxo.html.haml +5 -0
- data/app/views/base/site_index.html.haml +35 -0
- data/app/views/categories/_tips.html.haml +11 -0
- data/app/views/categories/edit.html.haml +34 -0
- data/app/views/categories/index.html.haml +30 -0
- data/app/views/categories/new.html.haml +9 -0
- data/app/views/categories/show.html.haml +45 -0
- data/app/views/clippings/_clipping.html.haml +18 -0
- data/app/views/clippings/_images.html.haml +3 -0
- data/app/views/clippings/_meta.html.haml +26 -0
- data/app/views/clippings/edit.html.haml +26 -0
- data/app/views/clippings/index.html.haml +35 -0
- data/app/views/clippings/load_images_from_uri.js.rjs +1 -0
- data/app/views/clippings/new.html.haml +29 -0
- data/app/views/clippings/new_clipping.html.haml +91 -0
- data/app/views/clippings/show.html.haml +56 -0
- data/app/views/clippings/site_index.html.haml +34 -0
- data/app/views/comments/_comment.html.haml +42 -0
- data/app/views/comments/_comment_form.html.haml +50 -0
- data/app/views/comments/_edit_form.html.haml +29 -0
- data/app/views/comments/create.js.rjs +20 -0
- data/app/views/comments/edit.js.rjs +7 -0
- data/app/views/comments/index.html.haml +23 -0
- data/app/views/comments/update.js.rjs +9 -0
- data/app/views/events/_event.html.haml +32 -0
- data/app/views/events/_subscribe.html.haml +7 -0
- data/app/views/events/edit.html.haml +34 -0
- data/app/views/events/index.html.haml +22 -0
- data/app/views/events/new.html.haml +32 -0
- data/app/views/events/show.html.haml +29 -0
- data/app/views/facebook/_fb_require.html.haml +11 -0
- data/app/views/favorites/_favorite.html.haml +5 -0
- data/app/views/favorites/create.js.rjs +17 -0
- data/app/views/favorites/destroy.js.rjs +14 -0
- data/app/views/favorites/index.html.haml +10 -0
- data/app/views/favorites/show.html.haml +13 -0
- data/app/views/forums/_form.html.haml +21 -0
- data/app/views/forums/edit.html.haml +11 -0
- data/app/views/forums/index.html.haml +70 -0
- data/app/views/forums/new.html.haml +9 -0
- data/app/views/forums/show.html.haml +85 -0
- data/app/views/friendships/_friendship.html.haml +16 -0
- data/app/views/friendships/_friendships.html.erb +14 -0
- data/app/views/friendships/accepted.html.haml +13 -0
- data/app/views/friendships/denied.html.haml +8 -0
- data/app/views/friendships/index.html.erb +3 -0
- data/app/views/friendships/index.xml.builder +29 -0
- data/app/views/friendships/pending.html.haml +7 -0
- data/app/views/friendships/show.html.haml +12 -0
- data/app/views/homepage_features/edit.html.haml +31 -0
- data/app/views/homepage_features/index.html.haml +30 -0
- data/app/views/homepage_features/new.html.haml +30 -0
- data/app/views/homepage_features/show.html.haml +29 -0
- data/app/views/invitations/index.html.erb +16 -0
- data/app/views/invitations/new.html.haml +33 -0
- data/app/views/layouts/application.html.haml +59 -0
- data/app/views/messages/_form.html.haml +24 -0
- data/app/views/messages/_inbox.html.haml +41 -0
- data/app/views/messages/_sent.html.haml +34 -0
- data/app/views/messages/_sidebar_nav.html.haml +9 -0
- data/app/views/messages/index.html.haml +8 -0
- data/app/views/messages/new.html.haml +10 -0
- data/app/views/messages/show.html.haml +40 -0
- data/app/views/metro_areas/edit.html.haml +16 -0
- data/app/views/metro_areas/index.html.haml +28 -0
- data/app/views/metro_areas/new.html.haml +16 -0
- data/app/views/metro_areas/show.html.haml +22 -0
- data/app/views/moderators/_toggle.html.erb +14 -0
- data/app/views/moderators/create.js.rjs +5 -0
- data/app/views/moderators/destroy.js.rjs +1 -0
- data/app/views/monitorships/create.js.rjs +4 -0
- data/app/views/monitorships/destroy.js.rjs +4 -0
- data/app/views/pages/_form.html.haml +25 -0
- data/app/views/pages/edit.html.haml +16 -0
- data/app/views/pages/edit.html.haml~ +16 -0
- data/app/views/pages/index.html.haml +34 -0
- data/app/views/pages/index.html.haml~ +28 -0
- data/app/views/pages/new.html.haml +14 -0
- data/app/views/pages/show.html.haml +8 -0
- data/app/views/pages/show.html.haml~ +6 -0
- data/app/views/password_resets/edit.html.haml +16 -0
- data/app/views/password_resets/new.html.haml +13 -0
- data/app/views/photo_manager/index.html.haml +49 -0
- data/app/views/photos/_manage_photos.html.haml +14 -0
- data/app/views/photos/_show_image_list.html.haml +24 -0
- data/app/views/photos/edit.html.haml +39 -0
- data/app/views/photos/index.html.haml +28 -0
- data/app/views/photos/index.xml.builder +9 -0
- data/app/views/photos/manage_photos.js.rjs +5 -0
- data/app/views/photos/new.html.haml +51 -0
- data/app/views/photos/recent.html.haml +8 -0
- data/app/views/photos/show.html.haml +53 -0
- data/app/views/polls/_edit.html.haml +15 -0
- data/app/views/polls/_excerpt.html.haml +4 -0
- data/app/views/polls/_new.html.haml +10 -0
- data/app/views/polls/_poll_ui.html.haml +37 -0
- data/app/views/polls/_polls_sidebar.html.haml +8 -0
- data/app/views/posts/_author_profile.html.haml +21 -0
- data/app/views/posts/_favorited_post.html.haml +10 -0
- data/app/views/posts/_post.html.haml +29 -0
- data/app/views/posts/_send_to_friend.html.erb +29 -0
- data/app/views/posts/_sidebar_post.html.haml +1 -0
- data/app/views/posts/edit.html.haml +48 -0
- data/app/views/posts/featured.html.haml +19 -0
- data/app/views/posts/index.html.haml +23 -0
- data/app/views/posts/manage.html.haml +66 -0
- data/app/views/posts/new.html.haml +67 -0
- data/app/views/posts/popular.html.haml +35 -0
- data/app/views/posts/preview.html.haml +27 -0
- data/app/views/posts/recent.html.haml +29 -0
- data/app/views/posts/show.html.haml +85 -0
- data/app/views/rsvps/edit.html.haml +9 -0
- data/app/views/rsvps/new.html.haml +9 -0
- data/app/views/sb_posts/_dummy_forum_post.html.erb +13 -0
- data/app/views/sb_posts/_edit.html.erb +31 -0
- data/app/views/sb_posts/_post.xml.builder +10 -0
- data/app/views/sb_posts/_reply_form.html.haml +37 -0
- data/app/views/sb_posts/_sb_post.html.haml +34 -0
- data/app/views/sb_posts/create.js.rjs +16 -0
- data/app/views/sb_posts/edit.html.erb +13 -0
- data/app/views/sb_posts/edit.js.rjs +6 -0
- data/app/views/sb_posts/index.html.haml +55 -0
- data/app/views/sb_posts/index.xml.builder +20 -0
- data/app/views/sb_posts/monitored.html.erb +55 -0
- data/app/views/sb_posts/monitored.xml.builder +15 -0
- data/app/views/sb_posts/update.js.rjs +5 -0
- data/app/views/sessions/new.html.haml +27 -0
- data/app/views/shared/_admin_nav.html.haml +19 -0
- data/app/views/shared/_bio_help.html.haml +4 -0
- data/app/views/shared/_box.html.haml +3 -0
- data/app/views/shared/_contact.html.haml +5 -0
- data/app/views/shared/_explore.html.haml +9 -0
- data/app/views/shared/_footer_content.html.haml +13 -0
- data/app/views/shared/_header.html.haml +42 -0
- data/app/views/shared/_location_chooser.html.haml +21 -0
- data/app/views/shared/_login_sidebar.html.haml +14 -0
- data/app/views/shared/_messages.html.haml +8 -0
- data/app/views/shared/_scripts_and_styles.html.haml +12 -0
- data/app/views/shared/_user_menu.html.haml +21 -0
- data/app/views/sitemap/index.html.haml +21 -0
- data/app/views/sitemap/index.xml.builder +28 -0
- data/app/views/statistics/activities.xml.builder +33 -0
- data/app/views/statistics/index.html.haml +56 -0
- data/app/views/tags/edit.html.haml +19 -0
- data/app/views/tags/index.html.haml +25 -0
- data/app/views/tags/manage.html.haml +37 -0
- data/app/views/tags/show.html.haml +65 -0
- data/app/views/topics/_form.html.haml +28 -0
- data/app/views/topics/_recent_topics_sidebar.haml +22 -0
- data/app/views/topics/edit.html.haml +10 -0
- data/app/views/topics/new.html.haml +21 -0
- data/app/views/topics/show.html.haml +107 -0
- data/app/views/topics/show.xml.builder +15 -0
- data/app/views/user_notifier/activation.text.erb +11 -0
- data/app/views/user_notifier/comment_notice.text.erb +8 -0
- data/app/views/user_notifier/follow_up_comment_notice.text.erb +15 -0
- data/app/views/user_notifier/follow_up_comment_notice_anonymous.text.erb +18 -0
- data/app/views/user_notifier/forgot_username.text.erb +8 -0
- data/app/views/user_notifier/friendship_accepted.text.erb +8 -0
- data/app/views/user_notifier/friendship_request.text.erb +8 -0
- data/app/views/user_notifier/message_notification.text.erb +14 -0
- data/app/views/user_notifier/new_forum_post_notice.text.erb +14 -0
- data/app/views/user_notifier/password_reset_instructions.text.erb +10 -0
- data/app/views/user_notifier/post_recommendation.text.erb +32 -0
- data/app/views/user_notifier/signup_invitation.text.erb +14 -0
- data/app/views/user_notifier/signup_notification.text.erb +16 -0
- data/app/views/users/_dashboard_nav.html.haml +40 -0
- data/app/views/users/_omniauth_connect.html.haml +21 -0
- data/app/views/users/_profile_completeness.html.haml +21 -0
- data/app/views/users/_profile_user_info_sidebar.html.haml +50 -0
- data/app/views/users/_search_options.html.haml +10 -0
- data/app/views/users/_sidebar_user.html.haml +8 -0
- data/app/views/users/_user.html.haml +31 -0
- data/app/views/users/crop_profile_photo.html.haml +40 -0
- data/app/views/users/dashboard.html.haml +44 -0
- data/app/views/users/edit.html.haml +75 -0
- data/app/views/users/edit_account.html.haml +64 -0
- data/app/views/users/forgot_username.html.haml +13 -0
- data/app/views/users/index.html.haml +18 -0
- data/app/views/users/invite.html.haml +31 -0
- data/app/views/users/new.html.haml +54 -0
- data/app/views/users/resend_activation.html.haml +13 -0
- data/app/views/users/show.html.haml +103 -0
- data/app/views/users/signup_completed.html.haml +8 -0
- data/app/views/users/statistics.html.haml +28 -0
- data/app/views/users/upload_profile_photo.html.haml +15 -0
- data/app/views/users/welcome_about.html.haml +66 -0
- data/app/views/users/welcome_invite.html.haml +33 -0
- data/app/views/users/welcome_photo.html.haml +29 -0
- data/app/views/votes/create.js.rjs +6 -0
- data/community_engine.gemspec +55 -0
- data/config/application_config.rb +162 -0
- data/config/initializers/cropper.rb +19 -0
- data/config/initializers/mce_options.rb +40 -0
- data/config/initializers/recaptcha_constants.rb +6 -0
- data/config/initializers/white_list.rb +7 -0
- data/config/locales/de-DE.yml +1271 -0
- data/config/locales/en.yml +1658 -0
- data/config/locales/es-AR.yml +758 -0
- data/config/locales/es-ES.yml +340 -0
- data/config/locales/es-MX.yml +672 -0
- data/config/locales/fr-FR.yml +1509 -0
- data/config/locales/ja-JP.yml +1321 -0
- data/config/locales/ru-RU.yml +97 -0
- data/config/locales/sr-CP.yml +89 -0
- data/config/locales/sv-SE.yml +1320 -0
- data/config/routes.rb +242 -0
- data/db/migrate/001_create_users.rb +26 -0
- data/db/migrate/002_add_activation_code_to_user.rb +11 -0
- data/db/migrate/003_create_photos.rb +22 -0
- data/db/migrate/004_add_tag_support.rb +21 -0
- data/db/migrate/005_create_friendships.rb +14 -0
- data/db/migrate/006_add_comments_tables.rb +18 -0
- data/db/migrate/007_create_friendship_statuses.rb +13 -0
- data/db/migrate/008_add_friendship_statuses.rb +14 -0
- data/db/migrate/009_create_clippings.rb +16 -0
- data/db/migrate/010_create_invitations.rb +14 -0
- data/db/migrate/011_create_homepage_features.rb +22 -0
- data/db/migrate/012_create_posts.rb +19 -0
- data/db/migrate/013_create_states.rb +13 -0
- data/db/migrate/014_add_states.rb +11 -0
- data/db/migrate/015_create_metro_areas.rb +15 -0
- data/db/migrate/016_add_metro_areas.rb +295 -0
- data/db/migrate/017_add_sessions_table.rb +20 -0
- data/db/migrate/018_create_categories.rb +11 -0
- data/db/migrate/019_change_comment_to_text_field.rb +10 -0
- data/db/migrate/020_create_login_slug.rb +9 -0
- data/db/migrate/021_add_category_names.rb +8 -0
- data/db/migrate/023_add_denied_friendship_status.rb +13 -0
- data/db/migrate/024_add_notification_preferences.rb +13 -0
- data/db/migrate/025_create_countries.rb +11 -0
- data/db/migrate/026_add_countries.rb +230 -0
- data/db/migrate/027_add_us_to_existing_metro_areas.rb +9 -0
- data/db/migrate/028_add_country_id_to_users.rb +9 -0
- data/db/migrate/029_add_us_to_users_with_states.rb +14 -0
- data/db/migrate/030_add_users_counter_cache.rb +9 -0
- data/db/migrate/031_news_to_talk.rb +10 -0
- data/db/migrate/033_featured_users.rb +9 -0
- data/db/migrate/034_add_last_login.rb +9 -0
- data/db/migrate/035_track_emailed.rb +9 -0
- data/db/migrate/036_create_skills.rb +11 -0
- data/db/migrate/037_create_offerings.rb +12 -0
- data/db/migrate/038_add_zag_to_users.rb +13 -0
- data/db/migrate/039_create_activities_table.rb +17 -0
- data/db/migrate/040_add_category_tips.rb +9 -0
- data/db/migrate/041_create_events_table.rb +19 -0
- data/db/migrate/042_add_privacy_to_users.rb +10 -0
- data/db/migrate/043_sql_session_store_setup.rb +39 -0
- data/db/migrate/044_category_improvements.rb +11 -0
- data/db/migrate/045_adding_indexes.rb +39 -0
- data/db/migrate/046_adding_ads.rb +20 -0
- data/db/migrate/047_add_polls.rb +30 -0
- data/db/migrate/049_add_activities_count.rb +9 -0
- data/db/migrate/050_create_initial_schema.rb +73 -0
- data/db/migrate/051_add_audience_limitation_to_ads.rb +9 -0
- data/db/migrate/052_create_assets.rb +21 -0
- data/db/migrate/053_create_favoritables.rb +23 -0
- data/db/migrate/054_add_published_as_to_posts.rb +13 -0
- data/db/migrate/055_add_published_at_to_posts.rb +15 -0
- data/db/migrate/056_create_roles.rb +28 -0
- data/db/migrate/057_add_more_indexes.rb +19 -0
- data/db/migrate/058_add_anonymous_commenting_fields.rb +15 -0
- data/db/migrate/059_create_messages.rb +16 -0
- data/db/migrate/060_still_more_indexes.rb +19 -0
- data/db/migrate/061_postgres_compatibility_changes.rb +9 -0
- data/db/migrate/062_add_notify_to_comments.rb +11 -0
- data/db/migrate/063_create_albums.rb +15 -0
- data/db/migrate/064_add_album_id_to_photos.rb +9 -0
- data/db/migrate/065_add_view_count_to_albums.rb +9 -0
- data/db/migrate/066_add_view_count_to_photos.rb +9 -0
- data/db/migrate/067_create_static_pages.rb +22 -0
- data/db/migrate/068_create_rsvps.rb +13 -0
- data/db/migrate/069_create_pages.rb +29 -0
- data/db/migrate/070_add_pages.rb +11 -0
- data/db/migrate/071_authlogic_compatibility_changes.rb +43 -0
- data/db/migrate/072_add_allow_rsvp_to_events.rb +9 -0
- data/db/migrate/073_add_taggings_count_to_tags.rb +9 -0
- data/db/migrate/074_add_threading_to_messages.rb +19 -0
- data/db/migrate/075_add_anonymous_forum_posting.rb +16 -0
- data/db/migrate/076_add_comment_notification_toggle.rb +9 -0
- data/db/migrate/077_paperclip_changes.rb +36 -0
- data/db/migrate/078_create_authorizations.rb +20 -0
- data/db/migrate/079_create_slugs.rb +18 -0
- data/db/sample/users.rb +55 -0
- data/generators/ce_plugin/USAGE +7 -0
- data/generators/ce_plugin/ce_plugin_generator.rb +25 -0
- data/generators/ce_plugin/templates/README +13 -0
- data/generators/ce_plugin/templates/desert_routes.rb +3 -0
- data/generators/ce_plugin/templates/init.rb +8 -0
- data/generators/ce_plugin/templates/plugin.rb +1 -0
- data/generators/plugin_migration/plugin_migration_generator.rb +101 -0
- data/generators/plugin_migration/templates/plugin_migration.erb +13 -0
- data/lang/TRANSLATION.markdown +32 -0
- data/lib/community_engine/authenticated_system.rb +167 -0
- data/lib/community_engine/authenticated_test_helper.rb +113 -0
- data/lib/community_engine/community_engine_sha1_crypto_method.rb +12 -0
- data/lib/community_engine/engine.rb +39 -0
- data/lib/community_engine/engines_extensions.rb +7 -0
- data/lib/community_engine/i18n_extensions.rb +31 -0
- data/lib/community_engine/localized_application.rb +83 -0
- data/lib/community_engine/rails_asset_extensions.rb +131 -0
- data/lib/community_engine/url_upload.rb +15 -0
- data/lib/community_engine/version.rb +10 -0
- data/lib/community_engine/viewable.rb +12 -0
- data/lib/community_engine.rb +34 -0
- data/lib/tag_hacks.rb +24 -0
- data/lib/tasks/community_engine_tasks.rake +87 -0
- data/public/favicon.ico +0 -0
- data/sample_files/s3.yml +17 -0
- data/test/fixtures/ads.yml +13 -0
- data/test/fixtures/albums.yml +16 -0
- data/test/fixtures/categories.yml +16 -0
- data/test/fixtures/clippings.yml +15 -0
- data/test/fixtures/comments.yml +55 -0
- data/test/fixtures/countries.yml +13 -0
- data/test/fixtures/events.yml +61 -0
- data/test/fixtures/files/Granite.bmp +0 -0
- data/test/fixtures/files/library.jpg +0 -0
- data/test/fixtures/forums.yml +10 -0
- data/test/fixtures/friendship_statuses.yml +10 -0
- data/test/fixtures/friendships.yml +15 -0
- data/test/fixtures/homepage_features.yml +13 -0
- data/test/fixtures/invitations.yml +5 -0
- data/test/fixtures/messages.yml +24 -0
- data/test/fixtures/metro_areas.yml +24 -0
- data/test/fixtures/moderatorships.yml +4 -0
- data/test/fixtures/monitorships.yml +10 -0
- data/test/fixtures/pages.yml +26 -0
- data/test/fixtures/photos.yml +29 -0
- data/test/fixtures/posts.yml +49 -0
- data/test/fixtures/roles.yml +9 -0
- data/test/fixtures/rsvps.yml +7 -0
- data/test/fixtures/sb_posts.yml +90 -0
- data/test/fixtures/states.yml +7 -0
- data/test/fixtures/taggings.yml +15 -0
- data/test/fixtures/tags.yml +11 -0
- data/test/fixtures/topics.yml +63 -0
- data/test/fixtures/users.yml +222 -0
- data/test/functional/activities_controller_test.rb +62 -0
- data/test/functional/admin_controller_test.rb +60 -0
- data/test/functional/ads_controller_test.rb +51 -0
- data/test/functional/albums_controller_test.rb +120 -0
- data/test/functional/base_controller_test.rb +27 -0
- data/test/functional/categories_controller_test.rb +51 -0
- data/test/functional/clippings_controller_test.rb +123 -0
- data/test/functional/comments_controller_test.rb +215 -0
- data/test/functional/events_controller_test.rb +104 -0
- data/test/functional/favorites_controller_test.rb +53 -0
- data/test/functional/forums_controller_test.rb +95 -0
- data/test/functional/friendships_controller_test.rb +98 -0
- data/test/functional/homepage_features_controller_test.rb +69 -0
- data/test/functional/invitations_controller_test.rb +45 -0
- data/test/functional/messages_controller_test.rb +154 -0
- data/test/functional/metro_areas_controller_test.rb +63 -0
- data/test/functional/moderators_controller_test.rb +22 -0
- data/test/functional/monitorships_controller_test.rb +72 -0
- data/test/functional/pages_controller_test.rb +95 -0
- data/test/functional/password_reset_controller_test.rb +34 -0
- data/test/functional/photo_manager_controller_test.rb +21 -0
- data/test/functional/photos_controller_test.rb +203 -0
- data/test/functional/posts_controller_test.rb +224 -0
- data/test/functional/rsvps_controller_test.rb +92 -0
- data/test/functional/sb_posts_controller_test.rb +193 -0
- data/test/functional/sessions_controller_test.rb +55 -0
- data/test/functional/sitemap_controller_test.rb +9 -0
- data/test/functional/statistics_controller_test.rb +18 -0
- data/test/functional/tags_controller_test.rb +52 -0
- data/test/functional/theme_controller_test.rb +11 -0
- data/test/functional/topics_controller_test.rb +201 -0
- data/test/functional/users_controller_test.rb +460 -0
- data/test/functional/votes_controller_test.rb +27 -0
- data/test/test_helper.rb +103 -0
- data/test/testapp/.gitignore +4 -0
- data/test/testapp/README +256 -0
- data/test/testapp/Rakefile +7 -0
- data/test/testapp/app/controllers/application_controller.rb +3 -0
- data/test/testapp/app/helpers/application_helper.rb +2 -0
- data/test/testapp/config/application.rb +45 -0
- data/test/testapp/config/application_config.rb +1 -0
- data/test/testapp/config/boot.rb +10 -0
- data/test/testapp/config/database.yml +22 -0
- data/test/testapp/config/environment.rb +6 -0
- data/test/testapp/config/environments/development.rb +25 -0
- data/test/testapp/config/environments/production.rb +49 -0
- data/test/testapp/config/environments/test.rb +35 -0
- data/test/testapp/config/initializers/backtrace_silencers.rb +7 -0
- data/test/testapp/config/initializers/inflections.rb +10 -0
- data/test/testapp/config/initializers/mime_types.rb +5 -0
- data/test/testapp/config/initializers/secret_token.rb +7 -0
- data/test/testapp/config/initializers/session_store.rb +8 -0
- data/test/testapp/config/locales/en.yml +5 -0
- data/test/testapp/config/routes.rb +3 -0
- data/test/testapp/config.ru +4 -0
- data/test/testapp/db/schema.rb +456 -0
- data/test/testapp/db/seeds.rb +7 -0
- data/test/testapp/doc/README_FOR_APP +2 -0
- data/test/testapp/lib/tasks/.gitkeep +0 -0
- data/test/testapp/public/404.html +26 -0
- data/test/testapp/public/422.html +26 -0
- data/test/testapp/public/500.html +26 -0
- data/test/testapp/public/favicon.ico +0 -0
- data/test/testapp/public/images/rails.png +0 -0
- data/test/testapp/public/robots.txt +5 -0
- data/test/testapp/script/rails +6 -0
- data/test/testapp/test/performance/browsing_test.rb +9 -0
- data/test/testapp/test/test_helper.rb +13 -0
- data/test/testapp/vendor/plugins/.gitkeep +0 -0
- data/test/unit/ad_test.rb +34 -0
- data/test/unit/asset_test.rb +15 -0
- data/test/unit/authorization_test.rb +55 -0
- data/test/unit/category_test.rb +22 -0
- data/test/unit/choice_test.rb +9 -0
- data/test/unit/clipping_image_test.rb +17 -0
- data/test/unit/clipping_test.rb +52 -0
- data/test/unit/comment_test.rb +107 -0
- data/test/unit/country_test.rb +15 -0
- data/test/unit/event_test.rb +75 -0
- data/test/unit/favorite_test.rb +71 -0
- data/test/unit/forum_test.rb +23 -0
- data/test/unit/friendship_status_test.rb +10 -0
- data/test/unit/friendship_test.rb +38 -0
- data/test/unit/homepage_feature_test.rb +10 -0
- data/test/unit/invitation_test.rb +27 -0
- data/test/unit/message_test.rb +49 -0
- data/test/unit/message_thread_test.rb +80 -0
- data/test/unit/metro_area_test.rb +10 -0
- data/test/unit/moderatorship_test.rb +30 -0
- data/test/unit/monitorships_test.rb +38 -0
- data/test/unit/page_test.rb +25 -0
- data/test/unit/photo_test.rb +42 -0
- data/test/unit/poll_test.rb +25 -0
- data/test/unit/post_test.rb +212 -0
- data/test/unit/rsvp_test.rb +33 -0
- data/test/unit/sb_post_test.rb +152 -0
- data/test/unit/state_test.rb +10 -0
- data/test/unit/tag_test.rb +22 -0
- data/test/unit/topic_test.rb +111 -0
- data/test/unit/user_notifier_test.rb +108 -0
- data/test/unit/user_test.rb +259 -0
- data/test/unit/vote_test.rb +9 -0
- data/vendor/plugins/activity_tracker/README +4 -0
- data/vendor/plugins/activity_tracker/Rakefile +22 -0
- data/vendor/plugins/activity_tracker/generators/activity_migration/USAGE +13 -0
- data/vendor/plugins/activity_tracker/generators/activity_migration/activity_migration_generator.rb +11 -0
- data/vendor/plugins/activity_tracker/generators/activity_migration/templates/migration.rb +17 -0
- data/vendor/plugins/activity_tracker/init.rb +1 -0
- data/vendor/plugins/activity_tracker/install.rb +1 -0
- data/vendor/plugins/activity_tracker/lib/activity.rb +40 -0
- data/vendor/plugins/activity_tracker/lib/activity_tracker.rb +80 -0
- data/vendor/plugins/activity_tracker/tasks/activity_tracker_tasks.rake +4 -0
- data/vendor/plugins/activity_tracker/test/abstract_unit.rb +47 -0
- data/vendor/plugins/activity_tracker/test/activity_tracker_test.rb +48 -0
- data/vendor/plugins/activity_tracker/test/database.yml +18 -0
- data/vendor/plugins/activity_tracker/test/debug.log +3329 -0
- data/vendor/plugins/activity_tracker/test/fixtures/test_post.rb +5 -0
- data/vendor/plugins/activity_tracker/test/fixtures/test_posts.yml +3 -0
- data/vendor/plugins/activity_tracker/test/fixtures/test_user.rb +4 -0
- data/vendor/plugins/activity_tracker/test/fixtures/test_users.yml +6 -0
- data/vendor/plugins/activity_tracker/test/schema.rb +21 -0
- data/vendor/plugins/activity_tracker/uninstall.rb +1 -0
- data/vendor/plugins/acts_as_list/README +23 -0
- data/vendor/plugins/acts_as_list/init.rb +3 -0
- data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +256 -0
- data/vendor/plugins/acts_as_list/test/list_test.rb +332 -0
- data/vendor/plugins/acts_as_publishable/README +3 -0
- data/vendor/plugins/acts_as_publishable/Rakefile +22 -0
- data/vendor/plugins/acts_as_publishable/generators/publishing/publishing_generator.rb +34 -0
- data/vendor/plugins/acts_as_publishable/generators/publishing/templates/migration.rb +13 -0
- data/vendor/plugins/acts_as_publishable/init.rb +3 -0
- data/vendor/plugins/acts_as_publishable/install.rb +3 -0
- data/vendor/plugins/acts_as_publishable/lib/acts_as_publishable.rb +81 -0
- data/vendor/plugins/acts_as_publishable/test/acts_as_publishable_test.rb +8 -0
- data/vendor/plugins/acts_as_publishable/uninstall.rb +1 -0
- data/vendor/plugins/auto_complete/README +23 -0
- data/vendor/plugins/auto_complete/Rakefile +22 -0
- data/vendor/plugins/auto_complete/init.rb +2 -0
- data/vendor/plugins/auto_complete/lib/auto_complete.rb +47 -0
- data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +143 -0
- data/vendor/plugins/auto_complete/test/auto_complete_test.rb +67 -0
- data/vendor/plugins/enumerations_mixin/LICENSE +20 -0
- data/vendor/plugins/enumerations_mixin/README_ENUMERATIONS +163 -0
- data/vendor/plugins/enumerations_mixin/init.rb +21 -0
- data/vendor/plugins/enumerations_mixin/lib/active_record/acts/enumerated.rb +177 -0
- data/vendor/plugins/enumerations_mixin/lib/active_record/aggregations/has_enumerated.rb +60 -0
- data/vendor/plugins/enumerations_mixin/lib/active_record/virtual_enumerations.rb +68 -0
- data/vendor/plugins/enumerations_mixin/virtual_enumerations_sample.rb +76 -0
- data/vendor/plugins/prototype_legacy_helper/README.markdown +13 -0
- data/vendor/plugins/prototype_legacy_helper/init.rb +1 -0
- data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +432 -0
- data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +297 -0
- data/vendor/plugins/resource_feeder/README +4 -0
- data/vendor/plugins/resource_feeder/Rakefile +22 -0
- data/vendor/plugins/resource_feeder/init.rb +2 -0
- data/vendor/plugins/resource_feeder/lib/resource_feeder/atom.rb +71 -0
- data/vendor/plugins/resource_feeder/lib/resource_feeder/rss.rb +71 -0
- data/vendor/plugins/resource_feeder/lib/resource_feeder.rb +2 -0
- data/vendor/plugins/resource_feeder/test/atom_feed_test.rb +85 -0
- data/vendor/plugins/resource_feeder/test/rss_feed_test.rb +61 -0
- data/vendor/plugins/resource_feeder/test/test_helper.rb +60 -0
- data/vendor/plugins/respond_to_parent/MIT-LICENSE +20 -0
- data/vendor/plugins/respond_to_parent/README +47 -0
- data/vendor/plugins/respond_to_parent/Rakefile +22 -0
- data/vendor/plugins/respond_to_parent/init.rb +1 -0
- data/vendor/plugins/respond_to_parent/install.rb +1 -0
- data/vendor/plugins/respond_to_parent/lib/responds_to_parent.rb +70 -0
- data/vendor/plugins/respond_to_parent/test/responds_to_parent_test.rb +10 -0
- data/vendor/plugins/respond_to_parent/test/test_helper.rb +6 -0
- data/vendor/plugins/respond_to_parent/uninstall.rb +1 -0
- data/vendor/plugins/tiny_mce/CHANGELOG_PLUGIN.rdoc +91 -0
- data/vendor/plugins/tiny_mce/CHANGELOG_TINYMCE +1226 -0
- data/vendor/plugins/tiny_mce/DEV_UPGRADE_NOTES.rdoc +12 -0
- data/vendor/plugins/tiny_mce/init.rb +2 -0
- data/vendor/plugins/tiny_mce/install.rb +18 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce/base.rb +33 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce/configuration.rb +114 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce/exceptions.rb +14 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce/helpers.rb +43 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce/railtie.rb +13 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce/spell_checker.rb +67 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce/valid_tinymce_langs.yml +25 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce/valid_tinymce_options.yml +167 -0
- data/vendor/plugins/tiny_mce/lib/tiny_mce.rb +24 -0
- data/vendor/plugins/white_list/README +35 -0
- data/vendor/plugins/white_list/Rakefile +22 -0
- data/vendor/plugins/white_list/init.rb +35 -0
- data/vendor/plugins/white_list/lib/white_list_helper.rb +61 -0
- data/vendor/plugins/white_list/test/white_list_test.rb +120 -0
- metadata +1073 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
#hack to get around the fact that the StaticPage model no longer exists
|
2
|
+
class StaticPage < ActiveRecord::Base
|
3
|
+
end
|
4
|
+
|
5
|
+
|
6
|
+
class CreatePages < ActiveRecord::Migration
|
7
|
+
def self.up
|
8
|
+
create_table :pages do |t|
|
9
|
+
t.string :title
|
10
|
+
t.text :body
|
11
|
+
t.string :published_as, :limit => 16, :default => 'draft'
|
12
|
+
t.boolean :page_public, :default => true
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
|
16
|
+
#remove static pages table id needed and migrate StaticPages to Pages
|
17
|
+
if ActiveRecord::Base.connection.tables.include?('static_pages')
|
18
|
+
StaticPage.all.each do |page|
|
19
|
+
Page.create(:title => page.title, :body => page.content, :published_as=>"live", :page_public => true)
|
20
|
+
end
|
21
|
+
|
22
|
+
drop_table :static_pages
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.down
|
27
|
+
drop_table :pages
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class AddPages < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
# Don't add this stuff in a migration.
|
4
|
+
# Page.create(:title=>:about.l, :body=>"<p>#{:your_about_text_goes_here.l}</p>", :published_as=>"live", :page_public=>true)
|
5
|
+
# Page.create(:title=>:faq.l, :body=>"<p>#{:your_faq_text_goes_here.l}</p>", :published_as=>"live", :page_public=>true)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.down
|
9
|
+
Page.destroy_all
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class AuthlogicCompatibilityChanges < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
change_column :users, :crypted_password, :string, :limit => 255
|
4
|
+
change_column :users, :salt, :string, :limit => 255
|
5
|
+
|
6
|
+
rename_column :users, :salt, :password_salt
|
7
|
+
rename_column :users, :remember_token, :persistence_token
|
8
|
+
|
9
|
+
remove_column :users, :remember_token_expires_at
|
10
|
+
|
11
|
+
change_table :users do |t|
|
12
|
+
t.column :single_access_token, :string
|
13
|
+
t.column :perishable_token, :string
|
14
|
+
t.column :login_count, :integer, :default => 0
|
15
|
+
t.column :failed_login_count, :integer, :default => 0
|
16
|
+
t.column :last_request_at, :datetime
|
17
|
+
t.column :current_login_at, :datetime
|
18
|
+
t.column :current_login_ip, :string
|
19
|
+
t.column :last_login_ip, :string
|
20
|
+
end
|
21
|
+
|
22
|
+
add_index :users, :login
|
23
|
+
add_index :users, :persistence_token
|
24
|
+
add_index :users, :last_request_at
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.down
|
28
|
+
remove_index :users, :login
|
29
|
+
remove_index :users, :persistence_token
|
30
|
+
remove_index :users, :last_request_at
|
31
|
+
|
32
|
+
change_table :users do |t|
|
33
|
+
t.remove :single_access_token, :perishable_token, :login_count, :failed_login_count,
|
34
|
+
:last_request_at, :current_login_at, :current_login_ip, :last_login_ip
|
35
|
+
end
|
36
|
+
|
37
|
+
rename_column :users, :persistence_token, :remember_token
|
38
|
+
|
39
|
+
add_column :users, :remember_token_expires_at, :datetime, :default => nil
|
40
|
+
rename_column :users, :password_salt, :salt
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class AddThreadingToMessages < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
add_column :messages, :parent_id, :integer
|
4
|
+
|
5
|
+
create_table :message_threads do |t|
|
6
|
+
t.integer :sender_id
|
7
|
+
t.integer :recipient_id
|
8
|
+
t.integer :message_id
|
9
|
+
t.integer :parent_message_id
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down
|
16
|
+
remove_column :messages, :parent_id
|
17
|
+
drop_table :message_threads
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class AddAnonymousForumPosting < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
add_column :sb_posts, :author_name, :string
|
4
|
+
add_column :sb_posts, :author_email, :string
|
5
|
+
add_column :sb_posts, :author_url, :string
|
6
|
+
add_column :sb_posts, :author_ip, :string
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.down
|
11
|
+
remove_column :sb_posts, :author_name
|
12
|
+
remove_column :sb_posts, :author_email
|
13
|
+
remove_column :sb_posts, :author_url
|
14
|
+
remove_column :sb_posts, :author_ip
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class PaperclipChanges < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
rename_column :photos, :filename, :photo_file_name
|
4
|
+
rename_column :photos, :content_type, :photo_content_type
|
5
|
+
rename_column :photos, :size, :photo_file_size
|
6
|
+
add_column :photos, :photo_updated_at, :datetime
|
7
|
+
|
8
|
+
rename_column :assets, :filename, :asset_file_name
|
9
|
+
rename_column :assets, :content_type, :asset_content_type
|
10
|
+
rename_column :assets, :size, :asset_file_size
|
11
|
+
add_column :assets, :asset_updated_at, :datetime
|
12
|
+
|
13
|
+
rename_column :homepage_features, :filename, :image_file_name
|
14
|
+
rename_column :homepage_features, :content_type, :image_content_type
|
15
|
+
rename_column :homepage_features, :size, :image_file_size
|
16
|
+
add_column :homepage_features, :image_updated_at, :datetime
|
17
|
+
end
|
18
|
+
|
19
|
+
def down
|
20
|
+
rename_column :photos, :photo_file_name, :filename
|
21
|
+
rename_column :photos, :photo_content_type, :content_type
|
22
|
+
rename_column :photos, :photo_file_size, :size
|
23
|
+
remove_column :photos, :photo_updated_at
|
24
|
+
|
25
|
+
rename_column :assets, :asset_file_name, :filename
|
26
|
+
rename_column :assets, :asset_content_type, :content_type
|
27
|
+
rename_column :assets, :asset_file_size, :size
|
28
|
+
remove_column :assets, :asset_updated_at
|
29
|
+
|
30
|
+
rename_column :homepage_feature, :image_file_name, :filename
|
31
|
+
rename_column :homepage_feature, :image_content_type, :content_type
|
32
|
+
rename_column :homepage_feature, :image_file_size, :size
|
33
|
+
remove_column :homepage_feature, :image_updated_at
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class CreateAuthorizations < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :authorizations do |t|
|
4
|
+
t.integer :user_id
|
5
|
+
t.string :provider
|
6
|
+
t.string :uid
|
7
|
+
t.string :name
|
8
|
+
t.string :nickname
|
9
|
+
t.string :email
|
10
|
+
t.string :picture_url
|
11
|
+
t.string :access_token
|
12
|
+
t.string :access_token_secret
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.down
|
18
|
+
drop_table :authorizations
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateSlugs < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :slugs do |t|
|
4
|
+
t.string :name
|
5
|
+
t.integer :sluggable_id
|
6
|
+
t.integer :sequence, :null => false, :default => 1
|
7
|
+
t.string :sluggable_type, :limit => 40
|
8
|
+
t.string :scope
|
9
|
+
t.datetime :created_at
|
10
|
+
end
|
11
|
+
add_index :slugs, :sluggable_id
|
12
|
+
add_index :slugs, [:name, :sluggable_type, :sequence, :scope], :name => "index_slugs_on_n_s_s_and_s", :unique => true
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down
|
16
|
+
drop_table :slugs
|
17
|
+
end
|
18
|
+
end
|
data/db/sample/users.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
# see last line where we create an admin if there is none, asking for email and password
|
2
|
+
|
3
|
+
def prompt_for_admin_password
|
4
|
+
password = ask('Password [communityengine]: ', String) do |q|
|
5
|
+
q.echo = false
|
6
|
+
q.validate = /^(|.{5,40})$/
|
7
|
+
q.responses[:not_valid] = "Invalid password. Must be at least 5 characters long."
|
8
|
+
q.whitespace = :strip
|
9
|
+
end
|
10
|
+
password = "communityengine" if password.blank?
|
11
|
+
password
|
12
|
+
end
|
13
|
+
|
14
|
+
def prompt_for_admin_login
|
15
|
+
login = ask('Login [admin]: ', String) do |q|
|
16
|
+
q.echo = true
|
17
|
+
q.whitespace = :strip
|
18
|
+
end
|
19
|
+
login = "admin" if login.blank?
|
20
|
+
login
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_admin_user
|
24
|
+
if ENV['AUTO_ACCEPT']
|
25
|
+
password = "communityengine"
|
26
|
+
login = "admin"
|
27
|
+
else
|
28
|
+
require 'highline/import'
|
29
|
+
puts "Create the admin user (press enter for defaults)."
|
30
|
+
login = prompt_for_admin_login
|
31
|
+
password = prompt_for_admin_password
|
32
|
+
end
|
33
|
+
attributes = {
|
34
|
+
:password => password,
|
35
|
+
:password_confirmation => password,
|
36
|
+
:email => 'admin@example.com',
|
37
|
+
:login => login,
|
38
|
+
:birthday => 30.years.ago
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
if User.find_by_login(login)
|
43
|
+
puts "\nWARNING: There is already a user with the login: #{login}, so no account changes were made. If you wish to create an additional admin user, please run 'rake community_engine:create_admin' again with a different login.\n\n"
|
44
|
+
else
|
45
|
+
admin = User.create(attributes)
|
46
|
+
# create an admin role and and assign the admin user to that role
|
47
|
+
admin.role = Role[:admin]
|
48
|
+
admin.activate
|
49
|
+
puts "\nINFO: User with admin priviliges was created.\n" if admin.save!
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
load File.join(Rails.root, 'vendor', 'plugins', 'community_engine', 'app', 'models', 'user.rb')
|
54
|
+
|
55
|
+
create_admin_user
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class CePluginGenerator < PluginGenerator
|
2
|
+
|
3
|
+
def initialize(runtime_args, runtime_options = {})
|
4
|
+
super
|
5
|
+
@plugin_path = "vendor/plugins/community_engine_#{file_name}"
|
6
|
+
end
|
7
|
+
|
8
|
+
def manifest
|
9
|
+
record do |m|
|
10
|
+
m.directory "#{plugin_path}/app"
|
11
|
+
m.directory "#{plugin_path}/config"
|
12
|
+
m.directory "#{plugin_path}/db"
|
13
|
+
m.directory "#{plugin_path}/lib"
|
14
|
+
m.directory "#{plugin_path}/public"
|
15
|
+
m.directory "#{plugin_path}/tasks"
|
16
|
+
m.directory "#{plugin_path}/test"
|
17
|
+
|
18
|
+
m.template 'README', "#{plugin_path}/README"
|
19
|
+
m.template 'init.rb', "#{plugin_path}/init.rb"
|
20
|
+
m.template 'plugin.rb', "#{plugin_path}/lib/#{file_name}.rb"
|
21
|
+
m.template 'desert_routes.rb', "#{plugin_path}/config/desert_routes.rb"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= class_name %>
|
2
|
+
<%= "=" * class_name.size %>
|
3
|
+
|
4
|
+
This is a CommunityEngine plugin. It's designed to work with the CommunityEngine social networking platform, and won't work unless CE is properly installed.
|
5
|
+
|
6
|
+
|
7
|
+
How To Build Your CE Plugin
|
8
|
+
===========================
|
9
|
+
|
10
|
+
Start building the functionality of your plugin by adding models and controllers in the plugin's app directory. This plugin will be loaded after the rest of CE, so you can override CE models and controllers here.
|
11
|
+
|
12
|
+
|
13
|
+
Copyright (c) <%= Date.today.year %> [name of plugin creator], released under the MIT license
|
@@ -0,0 +1,8 @@
|
|
1
|
+
config.after_initialize do
|
2
|
+
if Rails.env == 'development'
|
3
|
+
ActiveSupport::Dependencies.load_once_paths = ActiveSupport::Dependencies.load_once_paths.select {|path| (path =~ /(community_engine_<%= file_name %>)/).nil? }
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
require_plugin 'community_engine'
|
8
|
+
config.plugin_paths += ["#{Rails.root}/vendor/plugins/community_engine_<%= file_name %>/plugins"]
|
@@ -0,0 +1 @@
|
|
1
|
+
# <%= class_name %>
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# Generates a migration which migrates all plugins to their latest versions
|
2
|
+
# within the database.
|
3
|
+
class PluginMigrationGenerator < Rails::Generator::Base
|
4
|
+
|
5
|
+
# 255 characters max for Windows NTFS (http://en.wikipedia.org/wiki/Filename)
|
6
|
+
# minus 14 for timestamp, minus some extra chars for dot, underscore, file
|
7
|
+
# extension. So let's have 230.
|
8
|
+
MAX_FILENAME_LENGTH = 230
|
9
|
+
|
10
|
+
def initialize(runtime_args, runtime_options={})
|
11
|
+
super
|
12
|
+
@options = {:assigns => {}}
|
13
|
+
ensure_schema_table_exists
|
14
|
+
get_plugins_to_migrate(runtime_args)
|
15
|
+
|
16
|
+
if @plugins_to_migrate.empty?
|
17
|
+
puts "All plugins are migrated to their latest versions"
|
18
|
+
exit(0)
|
19
|
+
end
|
20
|
+
|
21
|
+
@options[:migration_file_name] = build_migration_name
|
22
|
+
@options[:assigns][:class_name] = build_migration_name.classify
|
23
|
+
end
|
24
|
+
|
25
|
+
def manifest
|
26
|
+
record do |m|
|
27
|
+
m.migration_template 'plugin_migration.erb', 'db/migrate', @options
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
protected
|
32
|
+
|
33
|
+
# Create the schema table if it doesn't already exist.
|
34
|
+
def ensure_schema_table_exists
|
35
|
+
ActiveRecord::Base.connection.initialize_schema_migrations_table
|
36
|
+
end
|
37
|
+
|
38
|
+
# Determine all the plugins which have migrations that aren't present
|
39
|
+
# according to the plugin schema information from the database.
|
40
|
+
def get_plugins_to_migrate(plugin_names)
|
41
|
+
|
42
|
+
# First, grab all the plugins which exist and have migrations
|
43
|
+
@plugins_to_migrate = if plugin_names.empty?
|
44
|
+
Desert::Manager.plugins
|
45
|
+
else
|
46
|
+
plugin_names.map do |name|
|
47
|
+
Desert::Manager.find_plugin(name) ? Desert::Manager.find_plugin(name) : raise("Cannot find the plugin '#{name}'")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
@plugins_to_migrate.reject! { |p| p.latest_migration.nil? }
|
52
|
+
|
53
|
+
# Then find the current versions from the database
|
54
|
+
@current_versions = {}
|
55
|
+
@plugins_to_migrate.each do |plugin|
|
56
|
+
plugin.with_current_plugin do
|
57
|
+
@current_versions[plugin.name] = Desert::PluginMigrations::Migrator.current_version
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Then find the latest versions from their migration directories
|
62
|
+
@new_versions = {}
|
63
|
+
@plugins_to_migrate.each do |plugin|
|
64
|
+
@new_versions[plugin.name] = plugin.latest_migration
|
65
|
+
end
|
66
|
+
|
67
|
+
# Remove any plugins that don't need migration
|
68
|
+
@plugins_to_migrate.map { |p| p.name }.each do |name|
|
69
|
+
@plugins_to_migrate.delete(Desert::Manager.find_plugin(name)) if @current_versions[name] == @new_versions[name]
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
@options[:assigns][:plugins] = @plugins_to_migrate
|
74
|
+
@options[:assigns][:new_versions] = @new_versions
|
75
|
+
@options[:assigns][:current_versions] = @current_versions
|
76
|
+
end
|
77
|
+
|
78
|
+
# Returns a migration name. If the descriptive migration name based on the
|
79
|
+
# plugin names involved is shorter than 230 characters that one will be
|
80
|
+
# used. Otherwise a shorter name will be returned.
|
81
|
+
def build_migration_name
|
82
|
+
descriptive_migration_name.tap do |name|
|
83
|
+
name.replace short_migration_name if name.length > MAX_FILENAME_LENGTH
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# Construct a unique migration name based on the plugins involved and the
|
88
|
+
# versions they should reach after this migration is run. The name constructed
|
89
|
+
# needs to be lowercase
|
90
|
+
def descriptive_migration_name
|
91
|
+
@plugins_to_migrate.map do |plugin|
|
92
|
+
"#{plugin.name}_to_version_#{@new_versions[plugin.name]}"
|
93
|
+
end.join("_and_").downcase
|
94
|
+
end
|
95
|
+
|
96
|
+
# Short migration name that will be used if the descriptive_migration_name
|
97
|
+
# exceeds 230 characters
|
98
|
+
def short_migration_name
|
99
|
+
'plugin_migrations'
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class <%= class_name %> < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
<%- plugins.each do |plugin| -%>
|
4
|
+
migrate_plugin(:<%= plugin.name %>, <%= new_versions[plugin.name] %>)
|
5
|
+
<%- end -%>
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.down
|
9
|
+
<%- plugins.each do |plugin| -%>
|
10
|
+
migrate_plugin(:<%= plugin.name %>, <%= current_versions[plugin.name] %>)
|
11
|
+
<%- end -%>
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
How translation works
|
2
|
+
=====================
|
3
|
+
|
4
|
+
Text which is visible to the user in CE is represented by translation tokens. Any text visible to users in your application should be represented by a translation token followed by a `.l` (e.g. `:this_phrase_needs_translation.l`).
|
5
|
+
|
6
|
+
This tells the system to look for a translation of this phrase in the appropriate locale file. It will look for that in either `Rails.root/lang/ui` or `Rails.root/vendor/plugin/community_engine/lang/ui`, picking up a YAML-file which begins with the locale you've set in `application.yml` (e.g. `de-DE.yml`).
|
7
|
+
|
8
|
+
Why load locales from both directories? The latter holds the standard translations that come with CE. The former is for your customized translation (use `Rails.root/vendor/plugin/community_engine/lang/en.yml` as a reference of all tokens used in CE).
|
9
|
+
|
10
|
+
If you see a token like `_translation_missing_` save the URL and the context of it and post a request at Lighthouse or the Google group to get it fixed.
|
11
|
+
|
12
|
+
For Developers
|
13
|
+
==============
|
14
|
+
If you rework standard CE and you add a visible item to a view (a UI element, a flash notice or something similar), please use the translation tokens to add text. Place these tokens in `en.yml` for other translators to give them a chance to complete their translation files.
|
15
|
+
NOTE: If you have special characters or a colon in your translation phrase you have to surround them with double quotes.
|
16
|
+
|
17
|
+
For Translators
|
18
|
+
===============
|
19
|
+
Try using the translate plugin: [http://github.com/bborn/translate](http://github.com/bborn/translate) when creating or updating translations in new locales
|
20
|
+
|
21
|
+
It provides you with some useful rake tasks, including:
|
22
|
+
|
23
|
+
rake translate:diff_keys FROM_LOCAL=en TO_LOCALE=es
|
24
|
+
#Shows you which keys exist in FROM_LOCALE.yml but not in TO_LOCALE.yml
|
25
|
+
|
26
|
+
rake translate:obsolete LOCALE=es
|
27
|
+
#Shows you which keys exists in LOCALE.yml but not in the application source
|
28
|
+
|
29
|
+
rake translate:orphans LOCALE=es
|
30
|
+
#Show you which keys are in your template code but aren't in LOCALE.yml
|
31
|
+
|
32
|
+
|
@@ -0,0 +1,167 @@
|
|
1
|
+
module AuthenticatedSystem
|
2
|
+
def update_last_seen_at
|
3
|
+
return unless logged_in?
|
4
|
+
User.update_all ['sb_last_seen_at = ?', Time.now.utc], ['id = ?', current_user.id]
|
5
|
+
current_user.sb_last_seen_at = Time.now.utc
|
6
|
+
end
|
7
|
+
|
8
|
+
def login_by_token
|
9
|
+
end
|
10
|
+
|
11
|
+
protected
|
12
|
+
# Returns true or false if the user is logged in.
|
13
|
+
def logged_in?
|
14
|
+
current_user ? true : false
|
15
|
+
end
|
16
|
+
|
17
|
+
# Accesses the current user from the session.
|
18
|
+
def current_user
|
19
|
+
return @current_user if defined?(@current_user)
|
20
|
+
@current_user = current_user_session && current_user_session.record
|
21
|
+
end
|
22
|
+
|
23
|
+
# Create a user session without credentials.
|
24
|
+
def current_user=(user)
|
25
|
+
return if current_user # Use act_as_user= to switch to another user account
|
26
|
+
@current_user_session = UserSession.create(user, true)
|
27
|
+
@current_user = @current_user_session.record
|
28
|
+
end
|
29
|
+
|
30
|
+
# Set session to another user. Only available to admins
|
31
|
+
def assume_user(new_user)
|
32
|
+
return unless current_user && current_user.admin? && !new_user.admin?
|
33
|
+
session[:admin_id] = current_user.id
|
34
|
+
UserSession.create(new_user, true)
|
35
|
+
end
|
36
|
+
|
37
|
+
def return_to_admin
|
38
|
+
unless current_user && !session[:admin_id].nil? && !current_user.admin?
|
39
|
+
redirect_to login_path
|
40
|
+
return
|
41
|
+
end
|
42
|
+
|
43
|
+
admin = User.find(session[:admin_id])
|
44
|
+
if admin && admin.admin?
|
45
|
+
session[:admin_id] = nil
|
46
|
+
UserSession.create(admin, true)
|
47
|
+
redirect_to user_path(admin)
|
48
|
+
else
|
49
|
+
current_user_session.destroy
|
50
|
+
redirect_to login_path
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Accesses the current session.
|
55
|
+
def current_user_session
|
56
|
+
return @current_user_session if defined?(@current_user_session)
|
57
|
+
@current_user_session = UserSession.find
|
58
|
+
end
|
59
|
+
|
60
|
+
# Check if the user is authorized.
|
61
|
+
#
|
62
|
+
# Override this method in your controllers if you want to restrict access
|
63
|
+
# to only a few actions or if you want to check if the user
|
64
|
+
# has the correct rights.
|
65
|
+
#
|
66
|
+
# Example:
|
67
|
+
#
|
68
|
+
# # only allow nonbobs
|
69
|
+
# def authorize?
|
70
|
+
# current_user.login != "bob"
|
71
|
+
# end
|
72
|
+
def authorized?
|
73
|
+
true
|
74
|
+
end
|
75
|
+
def admin?
|
76
|
+
logged_in? && current_user.admin?
|
77
|
+
end
|
78
|
+
def moderator?
|
79
|
+
logged_in? && current_user.moderator?
|
80
|
+
end
|
81
|
+
|
82
|
+
# Redirect as appropriate when an access request fails.
|
83
|
+
#
|
84
|
+
# The default action is to redirect to the login screen.
|
85
|
+
#
|
86
|
+
# Override this method in your controllers if you want to have special
|
87
|
+
# behavior in case the user is not authorized
|
88
|
+
# to access the requested action. For example, a popup window might
|
89
|
+
# simply close itself.
|
90
|
+
def access_denied
|
91
|
+
respond_to do |accepts|
|
92
|
+
accepts.html do
|
93
|
+
store_location
|
94
|
+
redirect_to login_path and return false
|
95
|
+
end
|
96
|
+
accepts.xml do
|
97
|
+
headers["Status"] = "Unauthorized"
|
98
|
+
headers["WWW-Authenticate"] = %(Basic realm="Web Password")
|
99
|
+
render :text => "Couldn't authenticate you", :status => '401 Unauthorized'
|
100
|
+
end
|
101
|
+
accepts.js do
|
102
|
+
store_location
|
103
|
+
render :update do |page|
|
104
|
+
page.redirect_to login_path
|
105
|
+
end and return false
|
106
|
+
end
|
107
|
+
end
|
108
|
+
false
|
109
|
+
end
|
110
|
+
|
111
|
+
# Inclusion hook to make #current_user and #logged_in?
|
112
|
+
# available as ActionView helper methods.
|
113
|
+
def self.included(base)
|
114
|
+
base.send :helper_method, :current_user, :current_user_session, :logged_in?, :admin?, :moderator?
|
115
|
+
end
|
116
|
+
|
117
|
+
private
|
118
|
+
|
119
|
+
# Filter method to enforce a login requirement.
|
120
|
+
#
|
121
|
+
# To require logins for all actions, use this in your controllers:
|
122
|
+
#
|
123
|
+
# before_filter :login_required
|
124
|
+
#
|
125
|
+
# To require logins for specific actions, use this in your controllers:
|
126
|
+
#
|
127
|
+
# before_filter :login_required, :only => [ :edit, :update ]
|
128
|
+
#
|
129
|
+
# To skip this in a subclassed controller:
|
130
|
+
#
|
131
|
+
# skip_before_filter :login_required
|
132
|
+
#
|
133
|
+
def login_required
|
134
|
+
store_location
|
135
|
+
logged_in? && authorized? ? true : access_denied
|
136
|
+
end
|
137
|
+
|
138
|
+
def require_user
|
139
|
+
unless current_user
|
140
|
+
store_location
|
141
|
+
access_denied
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
def require_no_user
|
146
|
+
if current_user
|
147
|
+
store_location
|
148
|
+
access_denied
|
149
|
+
return false
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
# Store the URI of the current request in the session.
|
154
|
+
#
|
155
|
+
# We can return to this location by calling #redirect_back_or_default.
|
156
|
+
def store_location
|
157
|
+
session[:return_to] = request.url
|
158
|
+
end
|
159
|
+
|
160
|
+
# Redirect to the URI stored by the most recent store_location call or
|
161
|
+
# to the passed default.
|
162
|
+
def redirect_back_or_default(default)
|
163
|
+
redirect_to(session[:return_to] || default)
|
164
|
+
session[:return_to] = nil
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|