mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-27 01:50:29 +00:00
Add isPublic filter on entries
This commit is contained in:
parent
873f6b8e03
commit
e8911f7c09
16 changed files with 76 additions and 0 deletions
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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');
|
||||
|
|
Loading…
Reference in a new issue