Add isPublic filter on entries

This commit is contained in:
Jeremy Benoist 2017-06-10 15:00:52 +02:00
parent 873f6b8e03
commit e8911f7c09
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
16 changed files with 76 additions and 0 deletions

View file

@ -684,6 +684,16 @@ class Entry
$this->uid = null;
}
/**
* Used in the entries filter so it's more explicit for the end user than the uid.
*
* @return bool
*/
public function isPublic()
{
return null !== $this->uid;
}
/**
* @return string
*/

View file

@ -150,6 +150,20 @@ class EntryFilterType extends AbstractType
},
'label' => 'entry.filters.preview_picture_label',
])
->add('isPublic', CheckboxFilterType::class, [
'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
if (false === $values['value']) {
return;
}
// is_public isn't a real field
// we should use the "uid" field to determine if the entry has been made public
$expression = $filterQuery->getExpr()->isNotNull($values['alias'].'.uid');
return $filterQuery->createCondition($expression);
},
'label' => 'entry.filters.is_public_label',
])
->add('language', ChoiceFilterType::class, [
'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())),
'label' => 'entry.filters.language_label',

View file

@ -186,6 +186,8 @@ entry:
unread_label: 'Ulæst'
preview_picture_label: 'Har et vist billede'
preview_picture_help: 'Forhåndsvis billede'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'Sprog'
# http_status_label: 'HTTP status'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Ungelesene'
preview_picture_label: 'Vorschaubild vorhanden'
preview_picture_help: 'Vorschaubild'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'Sprache'
http_status_label: 'HTTP-Status'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Unread'
preview_picture_label: 'Has a preview picture'
preview_picture_help: 'Preview picture'
is_public_label: 'Has a public link'
is_public_help: 'Public link'
language_label: 'Language'
http_status_label: 'HTTP status'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Sin leer'
preview_picture_label: 'Tiene imagen de previsualización'
preview_picture_help: 'Imagen de previsualización'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'Idioma'
http_status_label: 'Código de estado HTTP'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'خوانده‌نشده'
preview_picture_label: 'دارای عکس پیش‌نمایش'
preview_picture_help: 'پیش‌نمایش عکس'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'زبان'
# http_status_label: 'HTTP status'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: "Non lus"
preview_picture_label: "A une photo"
preview_picture_help: "Photo"
is_public_label: 'A une lien public'
is_public_help: 'Lien public'
language_label: "Langue"
http_status_label: "Statut HTTP"
reading_time:

View file

@ -187,6 +187,8 @@ entry:
# unread_label: 'Unread'
preview_picture_label: "Ha un'immagine di anteprima"
preview_picture_help: 'Immagine di anteprima'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'Lingua'
# http_status_label: 'HTTP status'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Pas legits'
preview_picture_label: 'A un imatge'
preview_picture_help: 'Imatge'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'Lenga'
http_status_label: 'Estatut HTTP'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Nieprzeczytane'
preview_picture_label: 'Posiada podgląd obrazu'
preview_picture_help: 'Podgląd obrazu'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'Język'
http_status_label: 'Status HTTP'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Não Lido'
preview_picture_label: 'Possui uma imagem de preview'
preview_picture_help: 'Imagem de preview'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'Idioma'
# http_status_label: 'HTTP status'
reading_time:

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Necitite'
preview_picture_label: 'Are o imagine de previzualizare'
preview_picture_help: 'Previzualizare imagine'
# is_public_label: 'Has a public link'
# is_public_help: 'Public link'
language_label: 'Limbă'
# http_status_label: 'HTTP status'
reading_time:

View file

@ -127,6 +127,11 @@
{{ form_widget(form.previewPicture) }}
{{ form_label(form.previewPicture) }}
</div>
<div class="input-field">
{{ form_widget(form.isPublic) }}
{{ form_label(form.isPublic) }}
</div>
</div>
<div id="filter-language" class="filter-group">

View file

@ -102,6 +102,15 @@
{{ form_label(form.previewPicture) }}
</div>
<div class="col s12">
<label>{{ 'entry.filters.is_public_help'|trans }}</label>
</div>
<div class="input-field col s12 with-checkbox">
{{ form_widget(form.isPublic) }}
{{ form_label(form.isPublic) }}
</div>
<div class="col s12">
{{ form_label(form.language) }}
</div>
@ -121,10 +130,12 @@
<div class="col s12">
{{ form_label(form.readingTime) }}
</div>
<div class="input-field col s6">
{{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
<label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
</div>
<div class="input-field col s6">
{{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
<label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label>

View file

@ -860,6 +860,20 @@ class EntryControllerTest extends WallabagCoreTestCase
$this->assertCount(1, $crawler->filter('div[class=entry]'));
}
public function testFilterOnIsPublic()
{
$this->logInAs('admin');
$this->useTheme('baggy');
$client = $this->getClient();
$crawler = $client->request('GET', '/unread/list');
$form = $crawler->filter('button[id=submit-filter]')->form();
$form['entry_filter[isPublic]']->tick();
$crawler = $client->submit($form);
$this->assertCount(0, $crawler->filter('div[class=entry]'));
}
public function testPreviewPictureFilter()
{
$this->logInAs('admin');