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)