Subscribing package for VIS cms
Π Π°Π·Π΄Π΅Π»Ρ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
- 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)