));
}
+ /**
+ * Shows all entries for current user.
+ *
+ * @param Request $request
+ * @param int $page
+ *
+ * @Route("/all/list/{page}", name="all", defaults={"page" = "1"})
+ *
+ * @return \Symfony\Component\HttpFoundation\Response
+ */
+ public function showAllAction(Request $request, $page)
+ {
+ return $this->showEntries('all', $request, $page);
+ }
+
/**
* Shows unread entries for current user.
*
$qb = $repository->getBuilderForUnreadByUser($this->getUser()->getId());
break;
+ case 'all':
+ $qb = $repository->getBuilderForAllByUser($this->getUser()->getId());
+ break;
+
default:
throw new \InvalidArgumentException(sprintf('Type "%s" is not implemented.', $type));
}
return $filterQuery->createCondition($expression);
},
- ));
+ ))
+ ->add('isArchived', 'filter_checkbox')
+ ->add('isStarred', 'filter_checkbox');
}
public function getName()
;
}
+ /**
+ * Retrieves all entries for a user.
+ *
+ * @param int $userId
+ *
+ * @return QueryBuilder
+ */
+ public function getBuilderForAllByUser($userId)
+ {
+ return $this
+ ->getBuilderByUser($userId)
+ ;
+ }
+
/**
* Retrieves unread entries for a user.
*
{% if entries is empty %}
<div class="messages warning"><p>{% trans %}No articles found.{% endtrans %}</p></div>
{% else %}
- <div><form>{{ form_rest(form) }}<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">Filter</button></form></div>
+ <div><form action="{{ path('all') }}">{{ form_rest(form) }}<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">Filter</button></form></div>
{% for entry in entries %}
<div id="entry-{{ entry.id|e }}" class="entry">
<h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
<li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
<li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li>
<li><a href="{{ path('archive') }}"}>{% trans %}archive{% endtrans %}</a></li>
- <li><a href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li>
+ <li><a href="{{ path('all') }}"}>{% trans %}all{% endtrans %}</a></li>
+ <li><a href="{{ path ('tag') }}">{% trans %}tags{% endtrans %}</a></li>
<li><a href="{{ path('new') }}">{% trans %}save a link{% endtrans %}</a></li>
<li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a>
<div id="search-form" class="messages info popup-form">
{% trans %}Starred{% endtrans %}
{% elseif currentRoute == 'archive' %}
{% trans %}Archive{% endtrans %}
+ {% elseif currentRoute == 'all' %}
+ {% trans %}Filtered{% endtrans %}
{% else %}
{% trans %}Unread{% endtrans %}
{% endif %}
<!-- Filters -->
<div id="filters" class="side-nav fixed right-aligned">
- <form>
+ <form action="{{ path('all') }}">
<h4 class="center">{% trans %}Filters{% endtrans %}</h1>
<div class="row">
+
+ <div class="col s12">
+ <label>{% trans %}Status{% endtrans %}</label>
+ </div>
+ <div class="input-field col s6">
+ {{ form_widget(form.isArchived) }}
+ <label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label>
+ </div>
+
+ <div class="input-field col s6">
+ {{ form_widget(form.isStarred) }}
+ <label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label>
+ </div>
+
<div class="col s12">
<label>{% trans %}Reading time in minutes{% endtrans %}</label>
</div>
<label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
</div>
-
<div class="input-field col s6">
{{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
<label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label>
<li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}"><a class="waves-effect" href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
<li class="bold {% if currentRoute == 'starred' %}active{% endif %}"><a class="waves-effect" href="{{ path('starred') }}">{% trans %}starred{% endtrans %}</a></li>
<li class="bold {% if currentRoute == 'archive' %}active{% endif %}"><a class="waves-effect" href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li>
+ <li class="bold {% if currentRoute == 'all' %}active{% endif %}"><a class="waves-effect" href="{{ path('all') }}">{% trans %}all{% endtrans %}</a></li>
<li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"><a class="waves-effect" href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li>
<li class="bold {% if currentRoute == 'config' %}active{% endif %}"><a class="waves-effect" href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
<li class="bold {% if currentRoute == 'howto' %}active{% endif %}"><a class="waves-effect" href="{{ path('howto') }}">{% trans %}howto{% endtrans %}</a></li>
$('.button-collapse-right').sideNav({ edge: 'right' });
$('#clear_form_filters').on('click', function(){
$('#filters input').val('');
+ $('#filters :checked').removeAttr('checked');
return false;
});
}
$crawler = $client->submit($form, $data);
- $this->assertCount(4, $crawler->filter('div[class=entry]'));
+ $this->assertCount(5, $crawler->filter('div[class=entry]'));
$data = array(
'entry_filter[createdAt][left_date]' => '01/01/1970',
$crawler = $client->request('GET', 'unread/list'.$parameters);
$this->assertContains($parameters, $client->getResponse()->getContent());
+
+ // reset pagination
+ $crawler = $client->request('GET', '/config');
+ $form = $crawler->filter('button[id=config_save]')->form();
+ $data = array(
+ 'config[items_per_page]' => '12',
+ );
+ $client->submit($form, $data);
}
public function testFilterOnDomainName()
$crawler = $client->submit($form, $data);
$this->assertCount(0, $crawler->filter('div[class=entry]'));
}
+
+ public function testFilterOnStatus()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $crawler = $client->request('GET', '/unread/list');
+ $form = $crawler->filter('button[id=submit-filter]')->form();
+ $form['entry_filter[isArchived]']->tick();
+ $form['entry_filter[isStarred]']->untick();
+
+ $crawler = $client->submit($form);
+ $this->assertCount(1, $crawler->filter('div[class=entry]'));
+
+ $form = $crawler->filter('button[id=submit-filter]')->form();
+ $form['entry_filter[isArchived]']->untick();
+ $form['entry_filter[isStarred]']->tick();
+
+ $crawler = $client->submit($form);
+ $this->assertCount(1, $crawler->filter('div[class=entry]'));
+ }
}