vis/subscribe_manager_l5

Subscribe management package for VIS cms


License
Other

Documentation

Subscribing package for VIS cms

Разделы

  1. Установка
  2. VIS-CMS
  3. Настройка
  4. Пример использования
  5. Описание классов

Установка

Выполняем

    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' => 'Удаление',
    ),

Пример использования

  1. Создаем паршал с формой подписки, например:
@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
  1. Передаем в форму подписки список возможных сущностей на подписку через вью-композер
    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();

Описание классов

  1. 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)
  1. 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)