Muck Invites
Make it easy to let users invite other users.
Setup
Add the gem to your Gemfile:
gem 'muck-invites'
Initializer
# Create an initializer to configure settings:
MuckInvites.configure do |config|
config.use_gravatar_in_photo_list = true # The invite list can include photos from gravatar.
config.create_activities_when_invited_joins = true # Add an entry to the inviter's activity when the invited joins.
config.email_inviters_when_invited_joins = true # Send out an email to the inviter when the invited person joins.
end
Javascript and CSS
Be sure to include muck.js:
<%= javascript_include_tag %w{ muck.js } %>
You can include muck-invites.css or copy and paste the styles and change them as desired:
<%= stylesheet_link_tag 'muck-invites' -%>
Include a link to initialize the invite process. You might want to do this in a lightbox.
The simple version that simply asks for an email and password:
<%= link_to 'Invite Your Friends', new_invite_path, :class => 'invite_box' %>
The better method that uses oauth to talk to email services instead of asking for a password:
<%= link_to 'Invite Friends', compose_invites_path, :class => 'invite_box iframe' %>
The ‘invite_box’ class will result in the invite showing up in a popup. Remove that class if you want to customize the link to do something else. By default the popup will use the ‘popup’ layout from muck-engine.
Oauth
The invite system can use oauth where available to acquire contacts. To enable this functionality install the muck-auth gem:
gem 'muck-auth'
See the muck-auth gem for more information - github.com/tatemae/muck-auth
Inviter model
Add ‘include MuckInvites::Models::MuckInviter’ to the class that you wish to have do the inviting. This is commonly the user model, but might also be another model - for example Event.
class User < ActiveRecord::Base
acts_as_authentic do |c|
c.crypto_provider = Authlogic::CryptoProviders::BCrypt
end
include MuckUsers::Models::MuckUser
include MuckInvites::Models::MuckInviter
end
or
class Event < ActiveRecord::Base
include MuckInvites::Models::MuckInviter
end
Other models
These models are required for the invite system to function and must be named as specified. Addition functionality can be added to each model as needed.
Create an Invitee model:
class Invitee < ActiveRecord::Base
include MuckInvites::Models::MuckInvitee
end
Create an Invite model:
class Invite < ActiveRecord::Base
include MuckInvites::Models::MuckInvite
end
Copyright © 2009-2010 Tatemae.com, released under the MIT license