Skip to content

Система управления подписками и рассылками

License

Notifications You must be signed in to change notification settings

BrandyMint/courier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build status Build Status#

Courier

Базовый модуль для управления подпиской:

Courier.subscribe user, :new_comments, @post
Courier.unbubscribe ...

Запуск рассылки с указанным именем

Courier.notify :new_post, @post
Courier.notify :new_news_item, NewsItem.last

Этот метод находит всех пользователей подписанных на данную рассылку, в независимост от того подписывались они на пост или подписывались на всю рассылку (не указывался resource при подписке) и передает их в рассылочный класс (наследника Courier::Subscription)

Подписать пользователя

На указанную рассылку, при необходимости указыватся ресурс (например @post). Тоже что и Courier.subscribe только через пользовательский объект.

user.subsribe :new_comments, @post
user.subsribe :new_posts
user.unsubsribe :new_posts

Courier::Subscription::Base

Модель и базовый класс управления подпиской. Записи создаются на стадии разработки приложения.

Поля модели:

  • id
  • name - имя попдиски
  • type - класс управления
  • access - уровень доступа на подписку (user/admin)
  • subject - тема письма
  • properties - serialized hash

Методы:

subscribe user, resource=nil
unsibscribe user, resource=nil

Courier::Subscription::Base < Base

properties:

  • subject_method - название метода у модели для вытаскивания темы письма (например "subject" или "title"). Если не установле то в качестве темы используется поле subject подписки

Courier::SubscriptionUser

Матрица пользователь<->рассылка.

Поля модели

  • subscription_id
  • user_id
  • resource_id
  • resource_type

Примеры

Как разослать письма вручную:

Courier::Mailer.send( :new_comment,
                      User.first,
                      'test subjet', 
                      NewsItem.find(15761).comments.first
                     ).deliver

Создание новой подписки

Вначале определяем подписку в lib/tasks/seed/courier.rake

Courier.create :user_posts do
    description 'Новые посты пользователя' # заголовок, который будет отображаться в my.investcafe.ru/subscriptions
    from 'Инвесткафе <no-reply@investcafe.ru>'
    subject '%{user.name.to_s} написал новый пост %{post.title}' # тема письма
    access :user #доступ к подписке, пользователи или админы
  end

Запускаем rake, чтобы подписка загрузилась в бд

rake icf:seed:courier

Для формирования письма добавляем метод класса Courier::Mailer::Common, в app/mailers/courier/mailer/common.rb

def user_posts(context)
  @post = context.post
  @subscriber = context.subscriber

  mail do |format|
    format.html { render :user_posts }
  end
end

либо используем уже готовый шаблон.

Для вывода ссылки на подписку/отписку используйте хелпер

= toggle_subscription_link user, :user_posts

первым параметром идет ресурс (на что подписываемся), потом идет название самой подписки.

После первой подписки идем на страницу my.investcafe.ru/subscriptions и проверяем как отображаются вновь добавленные.

Docs

http://rubydoc.info/github/BrandyMint/courier/master/frames http://docs.brandymint.ru

About

Система управления подписками и рассылками

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •