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; $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 * @return string
*/ */

View file

@ -150,6 +150,20 @@ class EntryFilterType extends AbstractType
}, },
'label' => 'entry.filters.preview_picture_label', '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, [ ->add('language', ChoiceFilterType::class, [
'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())), 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())),
'label' => 'entry.filters.language_label', 'label' => 'entry.filters.language_label',

View file

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

View file

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

View file

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

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Sin leer' unread_label: 'Sin leer'
preview_picture_label: 'Tiene imagen de previsualización' preview_picture_label: 'Tiene imagen de previsualización'
preview_picture_help: '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' language_label: 'Idioma'
http_status_label: 'Código de estado HTTP' http_status_label: 'Código de estado HTTP'
reading_time: reading_time:

View file

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

View file

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

View file

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

View file

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

View file

@ -187,6 +187,8 @@ entry:
unread_label: 'Nieprzeczytane' unread_label: 'Nieprzeczytane'
preview_picture_label: 'Posiada podgląd obrazu' preview_picture_label: 'Posiada podgląd obrazu'
preview_picture_help: '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' language_label: 'Język'
http_status_label: 'Status HTTP' http_status_label: 'Status HTTP'
reading_time: reading_time:

View file

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

View file

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

View file

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

View file

@ -102,6 +102,15 @@
{{ form_label(form.previewPicture) }} {{ form_label(form.previewPicture) }}
</div> </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"> <div class="col s12">
{{ form_label(form.language) }} {{ form_label(form.language) }}
</div> </div>
@ -121,10 +130,12 @@
<div class="col s12"> <div class="col s12">
{{ form_label(form.readingTime) }} {{ form_label(form.readingTime) }}
</div> </div>
<div class="input-field col s6"> <div class="input-field col s6">
{{ form_widget(form.readingTime.left_number, {'type': 'number'}) }} {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
<label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label> <label for="entry_filter_readingTime_left_number">{{ 'entry.filters.reading_time.from'|trans }}</label>
</div> </div>
<div class="input-field col s6"> <div class="input-field col s6">
{{ form_widget(form.readingTime.right_number, {'type': 'number'}) }} {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
<label for="entry_filter_readingTime_right_number">{{ 'entry.filters.reading_time.to'|trans }}</label> <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]')); $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() public function testPreviewPictureFilter()
{ {
$this->logInAs('admin'); $this->logInAs('admin');