Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
app
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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

Packages

No packages published
You can’t perform that action at this time.