Subscribing package for VIS cms
Разделы
Установка
Выполняем
composer require "vis/subscribe_manager_l5":"1.*"
Добавляем SubscribeManagerServiceProvider в массив ServiceProviders в config/app.php
Vis\SubscribeManager\SubscribeManagerServiceProvider::class,
Выполняем миграцию таблиц
php artisan migrate --path=vendor/vis/subscribe_manager_l5/src/Migrations
Публикуем view, js, config
php artisan vendor:publish --provider="Vis\SubscribeManager\SubscribeManagerServiceProvider" --force
Добавляем в layouts.default(или на конкретную вьюху, если подписка только на одной странице) перед закрывающим тегом body
@include('subscribe_manager::subscribe_manager')
Настройка
В файле public/js/subscriber_rules.js определяем форму(ы), которая будет отправлять имейлы на подписку.
SubscribeManager.setForms(['quick_subscribe']);
В файле public/js/subscriber_rules.js переопределяем методы и указываем в них свои действия(например, вызов попапа с кастомным сообщением) по выполнению ajax запроса
SubscribeManager.successCallback = function (message) {
};
SubscribeManager.failCallback = function (message) {
};
VIS-CMS
В \config\builder\admin.php дописываем массив
array(
'title' => 'Подписки',
'icon' => 'group',
'check' => function() {
return Sentinel::hasAccess('admin.vis_subscribers.view');
},
'submenu' => array(
array(
'title' => 'Подписчики',
'link' => '/vis_subscribers',
'check' => function() {
return Sentinel::hasAccess('admin.vis_subscribers.view');
}
),
array(
'title' => 'Типы подписок',
'link' => '/vis_subscribe_entities',
'check' => function() {
return Sentinel::hasAccess('admin.vis_subscribe_entities.view');
}
),
)
),
Добавляем права доступа в config/builder/tb-definitions/groups.php и добавляем их к группам.
'Подписчики' => array(
'admin.vis_subscribers.view' => 'Просмотр',
'admin.vis_subscribers.create' => 'Создание',
'admin.vis_subscribers.update' => 'Редактирование',
'admin.vis_subscribers.delete' => 'Удаление',
),
'Типы подписок' => array(
'admin.vis_subscribe_entities.view' => 'Просмотр',
'admin.vis_subscribe_entities.create' => 'Создание',
'admin.vis_subscribe_entities.update' => 'Редактирование',
'admin.vis_subscribe_entities.delete' => 'Удаление',
),
Пример использования
- Создаем паршал с формой подписки, например:
@if(isset($subscribeEntities) && $subscribeEntities->count())
<section class="subscribe-block">
<div class="container">
<form id="quick_subscribe-form">
<input type="text" name="email" class="input-field" placeholder="E-mail" maxlength="255">
<select name="entity_id">
@foreach($subscribeEntities as $subscribeEntity)
<option value="{{$subscribeEntity->id}}">{{$subscribeEntity->title}}</option>
@endforeach
</select>
<button class="btn">{{__t('Підписатися')}}</button>
</form>
</div>
</section>
@endif
- Передаем в форму подписки список возможных сущностей на подписку через вью-композер
View::composer('partials.subscribe', function ($view) {
$subscribeEntities = Cache::tags('vis_subscribe_entities')->rememberForever('vis_subscribe_entities', function() {
return Vis\SubscribeManager\SubscribeEntity::active()->get();
});
$view->with('subscribeEntities', $subscribeEntities);
});
Если нужно использовать в каких-то своих целях
use Vis\SubscribeManager\Subscriber;
Получить список подписчиков на определенную сущность на выбранном языке:.
$subscribers = Subscriber::filterEntitySlug($entitySlug)->filterLang($lang)->active->get();
Описание классов
- Vis\SubscribeManager\SubscribeEntity
Класс сущностей подписки, наследует Eloquent\Model и использует Vis\Builder\Helpers\Traits\TranslateTrait
namespace Vis\SubscribeManager;
use Illuminate\Database\Eloquent\Model;
class SubscribeEntity extends Model
{
use \Vis\Builder\Helpers\Traits\TranslateTrait;
protected $table = 'vis_subscribe_entities';
}
Описание свойств:
Имя используемой таблицы
Значение: строка'
protected $table = 'vis_subscribe_entities';
Описание методов:
Метод Eloquent ManyToMany связи с подписчиками
Возвращаемое значение: коллекция связанных с сущностью подписчиков
public function subscribers()
Метод фильтр по слагу
public function scopeFilterSlug($query, $slug)
Метод фильтр по активности записей
public function scopeActive($query)
- Vis\SubscribeManager\Subscriber
Класс сущностей подписки, наследует Eloquent\Model и использует Vis\Builder\Helpers\Traits\TranslateTrait
namespace Vis\SubscribeManager;
use Illuminate\Database\Eloquent\Model;
class Subscriber extends Model
{
protected $table = 'vis_subscribers';
}
Описание свойств:
Имя используемой таблицы
Значение: строка'
protected $table = 'vis_subscribers';
Описание методов:
Метод Eloquent ManyToMany связи с сущностями подписки
Возвращаемое значение: коллекция связанных сущностей к подписчику
public function entities()
Метод фильтр по слагу
public function scopeFilterEntitySlug($query, $entitySlug)
Метод фильтр по активности подписки
public function scopeActive($query)
Метод фильтр по языку подписки
public function scopeFilterLang($query, $lang)
Метод фильтр по имейлу подписки
public function scopeFilterEmail($query, $email)