mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-19 14:16:29 +00:00
Merge pull request #1342 from wallabag/v2-domain-filter
fix #981: add filter on domain name
This commit is contained in:
commit
7b2d336893
3 changed files with 45 additions and 2 deletions
|
@ -5,6 +5,8 @@ namespace Wallabag\CoreBundle\Filter;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
use Lexik\Bundle\FormFilterBundle\Filter\FilterOperands;
|
||||||
|
use Lexik\Bundle\FormFilterBundle\Filter\Query\QueryInterface;
|
||||||
|
|
||||||
class EntryFilterType extends AbstractType
|
class EntryFilterType extends AbstractType
|
||||||
{
|
{
|
||||||
|
@ -24,7 +26,18 @@ class EntryFilterType extends AbstractType
|
||||||
'placeholder' => 'dd/mm/yyyy'),
|
'placeholder' => 'dd/mm/yyyy'),
|
||||||
'format' => 'dd/MM/yyyy',
|
'format' => 'dd/MM/yyyy',
|
||||||
'widget' => 'single_text'
|
'widget' => 'single_text'
|
||||||
)));
|
)))
|
||||||
|
->add('domainName', 'filter_text', array(
|
||||||
|
'apply_filter' => function (QueryInterface $filterQuery, $field, $values)
|
||||||
|
{
|
||||||
|
$value = $values['value'];
|
||||||
|
if (strlen($value) <= 3 || empty($value)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
$expression = $filterQuery->getExpr()->like($field, $filterQuery->getExpr()->literal('%'.$value.'%'));
|
||||||
|
return $filterQuery->createCondition($expression);
|
||||||
|
}
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getName()
|
public function getName()
|
||||||
|
|
|
@ -77,8 +77,16 @@
|
||||||
<label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
|
<label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="col s12">
|
<div class="col s12">
|
||||||
|
|
||||||
<label>{% trans %}Create at{% endtrans %}</label>
|
<label>{% trans %}Create at{% endtrans %}</label>
|
||||||
|
|
||||||
|
<label>{% trans %}Domain name{% endtrans %}</label>
|
||||||
|
</div>
|
||||||
|
<div class="input-field col s6">
|
||||||
|
{{ form_widget(form.domainName, {'type': 'text'}) }}
|
||||||
|
<label for="entry_filter_domainName">{% trans %}www.website.com{% endtrans %}</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input-field col s6">
|
<div class="input-field col s6">
|
||||||
|
|
|
@ -293,7 +293,6 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||||
{
|
{
|
||||||
$this->logInAs('admin');
|
$this->logInAs('admin');
|
||||||
$client = $this->getClient();
|
$client = $this->getClient();
|
||||||
|
|
||||||
$crawler = $client->request('GET', '/config');
|
$crawler = $client->request('GET', '/config');
|
||||||
|
|
||||||
$form = $crawler->filter('button[id=config_save]')->form();
|
$form = $crawler->filter('button[id=config_save]')->form();
|
||||||
|
@ -310,4 +309,27 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||||
|
|
||||||
$this->assertContains($parameters, $client->getResponse()->getContent());
|
$this->assertContains($parameters, $client->getResponse()->getContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testFilterOnDomainName()
|
||||||
|
{
|
||||||
|
$this->logInAs('admin');
|
||||||
|
$client = $this->getClient();
|
||||||
|
|
||||||
|
$crawler = $client->request('GET', '/unread/list');
|
||||||
|
$form = $crawler->filter('button[id=submit-filter]')->form();
|
||||||
|
$data = array(
|
||||||
|
'entry_filter[domainName]' => 'monde'
|
||||||
|
);
|
||||||
|
|
||||||
|
$crawler = $client->submit($form, $data);
|
||||||
|
$this->assertCount(1, $crawler->filter('div[class=entry]'));
|
||||||
|
|
||||||
|
$form = $crawler->filter('button[id=submit-filter]')->form();
|
||||||
|
$data = array(
|
||||||
|
'entry_filter[domainName]' => 'wallabag'
|
||||||
|
);
|
||||||
|
|
||||||
|
$crawler = $client->submit($form, $data);
|
||||||
|
$this->assertCount(0, $crawler->filter('div[class=entry]'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue