Skip to content

Commit f22055a

Browse files
authored
Merge pull request #41 from netgen/Export_all_implementation
Export all implementation
2 parents d834095 + cb9610a commit f22055a

5 files changed

Lines changed: 85 additions & 1 deletion

File tree

bundle/Controller/Admin/ExportController.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,35 @@ public function exportAction($contentId, Request $request)
8181
]
8282
);
8383
}
84+
85+
/**
86+
* Handles export
87+
*
88+
* @param int $contentId
89+
*
90+
* @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
91+
*/
92+
public function exportAllAction($contentId)
93+
{
94+
$content = $this->contentService->loadContent($contentId);
95+
96+
$exportCriteria = new ExportCriteria(
97+
[
98+
'content' => $content,
99+
]
100+
);
101+
102+
$export = $this->exporter->exportAll($exportCriteria);
103+
104+
$writer = Writer::createFromFileObject(new SplTempFileObject());
105+
$writer->setDelimiter(",");
106+
$writer->setNewline("\r\n"); //use windows line endings for compatibility with some csv libraries
107+
$writer->setOutputBOM(Writer::BOM_UTF8); //adding the BOM sequence on output
108+
$writer->insertOne($export->header);
109+
$writer->insertAll($export->contents);
110+
111+
$writer->output('export.csv');
112+
return new Response('');
113+
114+
}
84115
}

bundle/Core/Service/ExporterService.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,50 @@ public function export(ExportCriteria $criteria)
9999
);
100100
}
101101

102+
/**
103+
* @inheritdoc
104+
*/
105+
public function exportAll(ExportCriteria $criteria)
106+
{
107+
$fields = $this->contentTypeUtils->getInfoCollectorFields($criteria->content->id);
108+
$fields['created'] = $this->translator->trans('netgen_information_collection_admin_export_created', [], 'netgen_information_collection_admin');
109+
110+
$collections = $this->ezInfoCollectionRepository->findBy(['contentObjectId' => $criteria->content->id]);
111+
112+
$rows = [];
113+
114+
/** @var EzInfoCollection $collection */
115+
foreach ($collections as $collection) {
116+
117+
$row = [];
118+
$attributes = $this->ezInfoCollectionAttributeRepository->findBy(['informationCollectionId' => $collection->getId()]);
119+
120+
foreach ($fields as $fieldId => $fieldName) {
121+
122+
if ($fieldId === 'created') {
123+
124+
$row[] = $this->getCreatedDate($collection);
125+
continue;
126+
}
127+
128+
$row[] = $this->getAttributeValue($fieldId, $attributes);
129+
130+
}
131+
132+
$rows[] = $row;
133+
134+
}
135+
136+
$header = array_values($fields);
137+
138+
return new Export(
139+
[
140+
'header' => $header,
141+
'contents' => $rows,
142+
]
143+
);
144+
}
145+
102146
/**
103147
* Get create date from EzInfoCollection as string
104148
*

bundle/Resources/config/routing.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,8 @@ netgen_information_collection.route.admin.export:
4444
path: /netgen/informationcollection/export/menu/{contentId}
4545
defaults: { _controller: netgen_information_collection.controller.export:exportAction }
4646
methods: [GET, POST]
47+
48+
netgen_information_collection.route.admin.export_all:
49+
path: /netgen/informationcollection/export-all/{contentId}
50+
defaults: { _controller: netgen_information_collection.controller.export:exportAllAction }
51+
methods: [GET, POST]

bundle/Resources/translations/netgen_information_collection_admin.en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ netgen_information_collection_admin_back: 'Back'
3838

3939
netgen_information_collection_admin_export_created: 'Created'
4040
netgen_information_collection_admin_export_export: 'Export'
41+
netgen_information_collection_admin_export_export_all: 'Export All'
4142
netgen_information_collection_admin_export_cancel: 'Cancel'
4243
netgen_information_collection_admin_export_from: 'From'
4344
netgen_information_collection_admin_export_to: 'To'

bundle/Resources/views/admin/collection_list.html.twig

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,12 @@
1515

1616
{% set search_text = app.request.query.get('searchText', '') %}
1717

18-
<form name="ic_search" method="get" action="{{ path('netgen_information_collection.route.admin.export', {'contentId':content.id}) }}">
18+
<form name="ic_export" method="get" action="{{ path('netgen_information_collection.route.admin.export', {'contentId':content.id}) }}">
1919
<div class="ng-ui-input">
2020
<input type="submit" value="{{ 'netgen_information_collection_admin_collection_export'|trans }}" class="ng-ui-btn">
21+
<a href="{{ path('netgen_information_collection.route.admin.export_all', {'contentId':content.id}) }}" class="ng-ui-btn">
22+
{{ 'netgen_information_collection_admin_export_export_all'|trans }}
23+
</a>
2124
</div>
2225
</form>
2326

0 commit comments

Comments
 (0)