mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-27 03:21:01 +00:00
Merge pull request #6680 from wallabag/fix-export-same-domain
Fix export for same domain entries
This commit is contained in:
commit
5b1230a909
3 changed files with 40 additions and 9 deletions
|
@ -61,13 +61,21 @@ class ExportController extends AbstractController
|
||||||
*
|
*
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
public function downloadEntriesAction(Request $request, EntryRepository $entryRepository, TagRepository $tagRepository, EntriesExport $entriesExport, string $format, string $category)
|
public function downloadEntriesAction(Request $request, EntryRepository $entryRepository, TagRepository $tagRepository, EntriesExport $entriesExport, string $format, string $category, int $entry = 0)
|
||||||
{
|
{
|
||||||
$method = ucfirst($category);
|
$method = ucfirst($category);
|
||||||
$methodBuilder = 'getBuilderFor' . $method . 'ByUser';
|
$methodBuilder = 'getBuilderFor' . $method . 'ByUser';
|
||||||
$title = $method;
|
$title = $method;
|
||||||
|
|
||||||
if ('tag_entries' === $category) {
|
if ('same_domain' === $category) {
|
||||||
|
$entries = $entryRepository->getBuilderForSameDomainByUser(
|
||||||
|
$this->getUser()->getId(),
|
||||||
|
$request->get('entry')
|
||||||
|
)->getQuery()
|
||||||
|
->getResult();
|
||||||
|
|
||||||
|
$title = 'Same domain';
|
||||||
|
} elseif ('tag_entries' === $category) {
|
||||||
$tag = $tagRepository->findOneBySlug($request->query->get('tag'));
|
$tag = $tagRepository->findOneBySlug($request->query->get('tag'));
|
||||||
|
|
||||||
$entries = $entryRepository->findAllByTagId(
|
$entries = $entryRepository->findAllByTagId(
|
||||||
|
|
|
@ -96,16 +96,17 @@
|
||||||
{% if searchTerm is defined %}
|
{% if searchTerm is defined %}
|
||||||
{% set export_search_term = searchTerm %}
|
{% set export_search_term = searchTerm %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% set entry = app.request.attributes.get('id') %}
|
||||||
{% set previous_route = app.request.attributes.get('currentRoute') %}
|
{% set previous_route = app.request.attributes.get('currentRoute') %}
|
||||||
<h4 class="center">{{ 'entry.list.export_title'|trans }}</h4>
|
<h4 class="center">{{ 'entry.list.export_title'|trans }}</h4>
|
||||||
<ul>
|
<ul>
|
||||||
{% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'epub', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">EPUB</a></li>{% endif %}
|
{% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'epub', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">EPUB</a></li>{% endif %}
|
||||||
{% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'mobi', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">MOBI (deprecated)</a></li>{% endif %}
|
{% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'mobi', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">MOBI (deprecated)</a></li>{% endif %}
|
||||||
{% if craue_setting('export_pdf') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'pdf', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">PDF</a></li>{% endif %}
|
{% if craue_setting('export_pdf') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'pdf', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">PDF</a></li>{% endif %}
|
||||||
{% if craue_setting('export_json') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'json', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">JSON</a></li>{% endif %}
|
{% if craue_setting('export_json') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'json', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">JSON</a></li>{% endif %}
|
||||||
{% if craue_setting('export_csv') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'csv', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">CSV</a></li>{% endif %}
|
{% if craue_setting('export_csv') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'csv', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">CSV</a></li>{% endif %}
|
||||||
{% if craue_setting('export_txt') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'txt', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">TXT</a></li>{% endif %}
|
{% if craue_setting('export_txt') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'txt', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">TXT</a></li>{% endif %}
|
||||||
{% if craue_setting('export_xml') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'xml', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route}) }}">XML</a></li>{% endif %}
|
{% if craue_setting('export_xml') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', {'category': current_route, 'format': 'xml', 'tag': current_tag, 'search_entry[term]': export_search_term, 'currentRoute': previous_route, 'entry': entry}) }}">XML</a></li>{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@ class ExportControllerTest extends WallabagCoreTestCase
|
||||||
{
|
{
|
||||||
private $adminEntry;
|
private $adminEntry;
|
||||||
private $bobEntry;
|
private $bobEntry;
|
||||||
|
private $sameDomainEntry;
|
||||||
|
private $sameDomainEntry2;
|
||||||
|
|
||||||
public function testLogin()
|
public function testLogin()
|
||||||
{
|
{
|
||||||
|
@ -326,6 +328,26 @@ class ExportControllerTest extends WallabagCoreTestCase
|
||||||
$this->assertNotEmpty('updated_at', (string) $content->entry[0]->updated_at);
|
$this->assertNotEmpty('updated_at', (string) $content->entry[0]->updated_at);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testJsonExportFromSameDomain()
|
||||||
|
{
|
||||||
|
$this->logInAs('admin');
|
||||||
|
$client = $this->getTestClient();
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
$crawler = $client->request('GET', '/export/same_domain.json?entry=1');
|
||||||
|
ob_end_clean();
|
||||||
|
|
||||||
|
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||||
|
|
||||||
|
$headers = $client->getResponse()->headers;
|
||||||
|
$this->assertSame('application/json', $headers->get('content-type'));
|
||||||
|
$this->assertSame('attachment; filename="Same domain articles.json"', $headers->get('content-disposition'));
|
||||||
|
$this->assertSame('UTF-8', $headers->get('content-transfer-encoding'));
|
||||||
|
|
||||||
|
$content = json_decode($client->getResponse()->getContent(), true);
|
||||||
|
$this->assertCount(4, $content);
|
||||||
|
}
|
||||||
|
|
||||||
private function setUpForJsonExportFromSearch()
|
private function setUpForJsonExportFromSearch()
|
||||||
{
|
{
|
||||||
$client = $this->getTestClient();
|
$client = $this->getTestClient();
|
||||||
|
|
Loading…
Reference in a new issue