mirror of
https://github.com/openclassify/openclassify.git
synced 2026-01-11 18:01:10 -06:00
Merge pull request #391 from openclassify/dia
#1059 GSM filter in admin user panel
This commit is contained in:
commit
654a9359d1
@ -7,4 +7,7 @@ return [
|
||||
'view_site' => 'View Site',
|
||||
'title' => 'Control Panel',
|
||||
'search_placeholder' => 'Type to search',
|
||||
|
||||
// Users Module
|
||||
'search_by_gsm_number' => 'Search By GSM Number',
|
||||
];
|
||||
|
||||
@ -2,9 +2,11 @@
|
||||
|
||||
use Anomaly\Streams\Platform\Addon\AddonServiceProvider;
|
||||
use Anomaly\Streams\Platform\Ui\ControlPanel\Component\Navigation\Event\SortNavigation;
|
||||
use Anomaly\Streams\Platform\Ui\Table\Event\TableIsQuerying;
|
||||
use Illuminate\Pagination\AbstractPaginator;
|
||||
use Visiosoft\DefaultadminTheme\Http\Controller\Admin\PreferencesController;
|
||||
use Visiosoft\DefaultadminTheme\Http\Controller\Admin\SettingsController;
|
||||
use Visiosoft\DefaultadminTheme\Listener\AddGsmFilter;
|
||||
use Visiosoft\DefaultadminTheme\Listener\ApplySorting;
|
||||
|
||||
/**
|
||||
@ -26,6 +28,9 @@ class DefaultadminThemeServiceProvider extends AddonServiceProvider
|
||||
SortNavigation::class => [
|
||||
ApplySorting::class,
|
||||
],
|
||||
TableIsQuerying::class => [
|
||||
AddGsmFilter::class
|
||||
]
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
<?php namespace Visiosoft\DefaultadminTheme\Listener;
|
||||
|
||||
use Anomaly\Streams\Platform\Ui\Table\Component\Filter\Type\SearchFilter;
|
||||
use Anomaly\Streams\Platform\Ui\Table\Event\TableIsQuerying;
|
||||
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
|
||||
use Anomaly\UsersModule\User\Table\UserTableBuilder;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class AddGsmFilter
|
||||
{
|
||||
/**
|
||||
* @var UserRepositoryInterface
|
||||
*/
|
||||
protected $userRepository;
|
||||
|
||||
/**
|
||||
* AddGsmFilter constructor.
|
||||
* @param UserRepositoryInterface $userRepository
|
||||
*/
|
||||
public function __construct(UserRepositoryInterface $userRepository)
|
||||
{
|
||||
$this->userRepository = $userRepository;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param TableIsQuerying $event
|
||||
*/
|
||||
public function handle(TableIsQuerying $event)
|
||||
{
|
||||
$builder = $event->getBuilder();
|
||||
$query = $event->getQuery();
|
||||
|
||||
if (get_class($builder) == UserTableBuilder::class) {
|
||||
$this->addGsmFilter($builder);
|
||||
$this->getFilteredQuery($query);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a filter for gsm phone.
|
||||
*
|
||||
* @param UserTableBuilder $builder
|
||||
*/
|
||||
protected function addGsmFilter(UserTableBuilder $builder)
|
||||
{
|
||||
$filter = new SearchFilter();
|
||||
$filter->setPlaceholder(trans('visiosoft.theme.defaultadmin::control_panel.search_by_gsm_number'));
|
||||
$filter->setSlug('gsm_phone');
|
||||
|
||||
$builder->getTable()->addFilter($filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter by gsm phone if present in request.
|
||||
*
|
||||
* @param Builder $query
|
||||
* @return Builder
|
||||
*/
|
||||
protected function getFilteredQuery(Builder $query)
|
||||
{
|
||||
if ($filterGsmPhone = request('filter_gsm_phone')) {
|
||||
$query->where('gsm_phone', 'LIKE', '%' . preg_replace('/\s+/', '', $filterGsmPhone) . '%');
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user