modifié:         core/lib/Thelia/Controller/Admin/ImportExportController.php
	modifié:         core/lib/Thelia/Core/FileFormat/Archive/ArchiveBuilderManager.php
	modifié:         core/lib/Thelia/Core/FileFormat/Formatting/FormatterManager.php
	modifié:         core/lib/Thelia/Form/ExportForm.php
	modifié:         templates/backOffice/default/ajax/export-modal.html
	modifié:         templates/backOffice/default/export-page.html
This commit is contained in:
Benjamin Perche
2014-07-15 10:02:47 +02:00
parent 8d93a3c7ab
commit 44de50c805
6 changed files with 64 additions and 68 deletions

View File

@@ -96,9 +96,14 @@ class ImportExportController extends BaseAdminController
/** /**
* Define and validate the form * Define and validate the form
*/ */
$form = new ExportForm($this->getRequest()); $form = new ExportForm(
$form->setArchiveBuilderNames($archiveBuilders); $this->getRequest(),
$form->setFormatters($formatters); "form",
array(),
array(),
$archiveBuilders,
$formatters
);
$errorMessage = null; $errorMessage = null;
try { try {
@@ -118,7 +123,9 @@ class ImportExportController extends BaseAdminController
200, 200,
[ [
"Content-Type" => $formatter->getMimeType(), "Content-Type" => $formatter->getMimeType(),
"Content-Disposition" => $formatter::FILENAME . "." . $formatter->getExtension(), "Content-Disposition" =>
"attachment; filename=\"".$formatter::FILENAME .
"." . $formatter->getExtension() ."\"",
] ]
); );
} else { } else {

View File

@@ -96,7 +96,7 @@ class ArchiveBuilderManager
{ {
throw new \OutOfBoundsException( throw new \OutOfBoundsException(
Translator::getInstance()->trans( Translator::getInstance()->trans(
"The archive creator %name doesn't exist", "The archive builder \"%name\" doesn't exist",
[ [
"%name" => $name "%name" => $name
] ]

View File

@@ -92,7 +92,7 @@ class FormatterManager
{ {
throw new \OutOfBoundsException( throw new \OutOfBoundsException(
Translator::getInstance()->trans( Translator::getInstance()->trans(
"The formatter %name doesn't exist", "The formatter \"%name\" doesn't exist",
[ [
"%name" => $name "%name" => $name
] ]

View File

@@ -22,16 +22,9 @@ use Thelia\Form\BaseForm;
*/ */
class ExportForm extends BaseForm class ExportForm extends BaseForm
{ {
protected $archiveBuilderManager = array();
protected $formattersNames = array();
protected $exportTypes = array();
protected $translator; protected $translator;
public function __construct(Request $request, $type= "form", $data = array(), $options = array()) public function __construct(Request $request, $type= "form", $data = array(), $options = array()) {
{
$this->translator = Translator::getInstance(); $this->translator = Translator::getInstance();
parent::__construct($request, $type, $data, $options); parent::__construct($request, $type, $data, $options);
@@ -40,24 +33,20 @@ class ExportForm extends BaseForm
protected function buildForm() protected function buildForm()
{ {
$this->formBuilder $this->formBuilder
->add("formatter", "choice", array( ->add("formatter", "text", array(
"label" => $this->translator->trans("File format"), "label" => $this->translator->trans("File format"),
"label_attr" => ["for" => "formatter"], "label_attr" => ["for" => "formatter"],
"required" => true, "required" => true,
"multiple" => false,
"choices" => $this->formattersNames,
)) ))
->add("do_compress", "checkbox", array( ->add("do_compress", "checkbox", array(
"label" => $this->translator->trans("Do compress"), "label" => $this->translator->trans("Do compress"),
"label_attr" => ["for" => "do_compress"], "label_attr" => ["for" => "do_compress"],
"required" => false, "required" => false,
)) ))
->add("archive_builder", "choice", array( ->add("archive_builder", "text", array(
"label" => $this->translator->trans("Archive Format"), "label" => $this->translator->trans("Archive Format"),
"label_attr" => ["for" => "archive_builder"], "label_attr" => ["for" => "archive_builder"],
"required" => true, "required" => false,
"multiple" => false,
"choices" => $this->archiveBuilderManager,
)) ))
->add("images", "checkbox", array( ->add("images", "checkbox", array(
"label" => $this->translator->trans("Include images"), "label" => $this->translator->trans("Include images"),
@@ -69,34 +58,9 @@ class ExportForm extends BaseForm
"label_attr" => ["for" => "with_documents"], "label_attr" => ["for" => "with_documents"],
"required" => false, "required" => false,
)) ))
->add("export_type", "choice", array(
"required" => true,
"choices" => $this->exportTypes,
))
; ;
} }
public function setFormatters(array $formattersNames) {
$this->formattersNames = $formattersNames;
return $this;
}
public function setArchiveBuilderNames(array $archiveBuildersNames)
{
$this->archiveBuilderManager += $archiveBuildersNames;
return $this;
}
public function setExportTypes(array $exportType)
{
$this->exportTypes = $exportType;
return $this;
}
public function getName() public function getName()
{ {
return "thelia_export"; return "thelia_export";

View File

@@ -14,15 +14,23 @@
{ifloop rel="export-formatters"} {ifloop rel="export-formatters"}
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
{custom_render_form_field form=$form field="formatter"} {form_field form=$form field="formatter"}
<select> <div class="form-group {if $error}has-error{/if}">
{loop name="export-formatters" type="formatter" export=$ID} <label for="{$label_attr.for}">
<option value="{$NAME}" {if $value == $NAME}selected{/if}> {$label}
{$NAME} (.{$EXTENSION}) </label>
</option> <select name="{$name}" id="{$label_attr.for}">
{/loop} {loop name="export-formatters" type="formatter" export=$ID}
</select> <option value="{$NAME}" {if $value == $NAME}selected{/if}>
{/custom_render_form_field} {$NAME} (.{$EXTENSION})
</option>
{/loop}
</select>
{if $error}
<div class="error-field">{$message}</div>
{/if}
</div>
{/form_field}
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
{form_field form=$form field="do_compress"} {form_field form=$form field="do_compress"}
@@ -38,7 +46,7 @@
<div class="row export-compression-selection-row"> <div class="row export-compression-selection-row">
<div class="col-md-4"> <div class="col-md-4">
{custom_render_form_field form=$form field="archive_builder"} {custom_render_form_field form=$form field="archive_builder"}
<select name="{$name}"> <select name="{$name}" id="{$label_attr.for}">
{loop name="export-archive-builder" type="archive-builder"} {loop name="export-archive-builder" type="archive-builder"}
<option value="{$NAME}" {if $value == $NAME}selected{/if}> <option value="{$NAME}" {if $value == $NAME}selected{/if}>
{$NAME} (.{$EXTENSION}) {$NAME} (.{$EXTENSION})

View File

@@ -47,15 +47,23 @@
{ifloop rel="export-formatters"} {ifloop rel="export-formatters"}
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
{custom_render_form_field form=$form field="formatter"} {form_field form=$form field="formatter"}
<select> <div class="form-group {if $error}has-error{/if}">
<label for="{$label_attr.for}">
{$label}
</label>
<select name="{$name}" id="{$label_attr.for}">
{loop name="export-formatters" type="formatter" export=$ID} {loop name="export-formatters" type="formatter" export=$ID}
<option value="{$NAME}" {if $value == $NAME}selected{/if}> <option value="{$NAME}" {if $value == $NAME}selected{/if}>
{$NAME} (.{$EXTENSION}) {$NAME} (.{$EXTENSION})
</option> </option>
{/loop} {/loop}
</select> </select>
{/custom_render_form_field} {if $error}
<div class="error-field">{$message}</div>
{/if}
</div>
{/form_field}
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
{form_field form=$form field="do_compress"} {form_field form=$form field="do_compress"}
@@ -70,15 +78,24 @@
</div> </div>
<div class="row export-compression-selection-row"> <div class="row export-compression-selection-row">
<div class="col-md-4"> <div class="col-md-4">
{custom_render_form_field form=$form field="archive_builder"} {form_field form=$form field="archive_builder"}
<select name="{$name}"> <div class="form-group {if $error}has-error{/if}">
{loop name="export-archive-builder" type="archive-builder"} <label for="{$label_attr.for}">
<option value="{$NAME}" {if $value == $NAME}selected{/if}> {$label}
{$NAME} (.{$EXTENSION}) </label>
</option> <select name="{$name}" id="{$label_attr.for}">
{/loop} {loop name="export-archive-builder" type="archive-builder"}
</select> <option value="{$NAME}" {if $value == $NAME}selected{/if}>
{/custom_render_form_field} {$NAME} (.{$EXTENSION})
</option>
{/loop}
</select>
{if $error}
<div class="error-field">{$message}</div>
{/if}
</div>
{/form_field}
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{form_field form=$form field="images"} {form_field form=$form field="images"}