allowing csv rendering for custom fields

This commit is contained in:
Marc Ducobu 2015-02-17 15:01:12 +01:00
parent 77247de990
commit 47a9a29236
7 changed files with 27 additions and 9 deletions

View File

@ -187,7 +187,7 @@ class CustomFieldChoice implements CustomFieldInterface
* @param CustomField $customField * @param CustomField $customField
* @return string html representation * @return string html representation
*/ */
public function render($value, CustomField $customField) public function render($value, CustomField $customField, $documentType = 'html')
{ {
//extract the data. They are under a _choice key if they are stored with allow_other //extract the data. They are under a _choice key if they are stored with allow_other
$data = (isset($value['_choices'])) ? $value['_choices'] : $value; $data = (isset($value['_choices'])) ? $value['_choices'] : $value;
@ -198,8 +198,13 @@ class CustomFieldChoice implements CustomFieldInterface
$choices[] = array('name' => $value['_other'], 'slug' => '_other'); $choices[] = array('name' => $value['_other'], 'slug' => '_other');
} }
$template = 'ChillCustomFieldsBundle:CustomFieldsRendering:choice.html.twig';
if($documentType == 'csv') {
$template = 'ChillCustomFieldsBundle:CustomFieldsRendering:choice.csv.twig';
}
return $this->templating return $this->templating
->render('ChillCustomFieldsBundle:CustomFieldsRendering:choice.html.twig', ->render($template,
array( array(
'choices' => $choices, 'choices' => $choices,
'selected' => $selected, 'selected' => $selected,

View File

@ -43,7 +43,7 @@ interface CustomFieldInterface
* @param \Chill\CustomFieldsBundle\CustomField\CustomField $customField * @param \Chill\CustomFieldsBundle\CustomField\CustomField $customField
* @return string an html representation of the value * @return string an html representation of the value
*/ */
public function render($value, CustomField $customField); public function render($value, CustomField $customField, $documentType = 'html');
public function getName(); public function getName();

View File

@ -90,7 +90,7 @@ class CustomFieldText implements CustomFieldInterface
)); ));
} }
public function render($value, CustomField $customField) public function render($value, CustomField $customField, $documentType = 'html')
{ {
return $this->templating return $this->templating
->render('ChillCustomFieldsBundle:CustomFieldsRendering:text.html.twig', array('text' => $value)); ->render('ChillCustomFieldsBundle:CustomFieldsRendering:text.html.twig', array('text' => $value));

View File

@ -67,7 +67,7 @@ class CustomFieldTitle implements CustomFieldInterface
)); ));
} }
public function render($value, CustomField $customField) public function render($value, CustomField $customField, $documentType = 'html')
{ {
return $this->templating return $this->templating
->render('ChillCustomFieldsBundle:CustomFieldsRendering:title.html.twig', ->render('ChillCustomFieldsBundle:CustomFieldsRendering:title.html.twig',

View File

@ -0,0 +1,13 @@
{% if selected|length > 0 %}
{%- for choice in choices -%}
{% if choice['slug'] in selected %}
{%- if choice['slug'] is not same as('_other') -%}
{{ choice['name']|localize_translatable_string }}
{%- else -%}
{{ choice['name'] }}
{%- endif -%}
{% endif %}
{%- endfor -%}
{% else %}
{{ 'None'|trans }}
{% endif %}

View File

@ -113,14 +113,14 @@ class CustomFieldsHelper
* @param string $slug the slug you want to render. The html is be safe. * @param string $slug the slug you want to render. The html is be safe.
* @throws CustomFieldsHelperException if slug is missing * @throws CustomFieldsHelperException if slug is missing
*/ */
public function renderCustomField(array $fields, $classOrCustomField, $slug = null) public function renderCustomField(array $fields, $classOrCustomField, $type='html', $slug = null)
{ {
$customField = ($classOrCustomField instanceof CustomField) ? $classOrCustomField : $this->getCustomField($classOrCustomField, $slug); $customField = ($classOrCustomField instanceof CustomField) ? $classOrCustomField : $this->getCustomField($classOrCustomField, $slug);
$slug = $customField->getSlug(); $slug = $customField->getSlug();
$rawValue = (isset($fields[$slug])) ? $fields[$slug] : null; $rawValue = (isset($fields[$slug])) ? $fields[$slug] : null;
return $this->provider->getCustomFieldByType($customField->getType()) return $this->provider->getCustomFieldByType($customField->getType())
->render($rawValue, $customField); ->render($rawValue, $customField, $type);
} }
} }

View File

@ -100,10 +100,10 @@ class CustomFieldRenderingTwig extends \Twig_Extension implements ContainerAware
* @param string $slug only necessary if the first argument is NOT a CustomField instance * @param string $slug only necessary if the first argument is NOT a CustomField instance
* @return string HTML representation of the custom field, as described in the CustomFieldInterface. Is HTML safe * @return string HTML representation of the custom field, as described in the CustomFieldInterface. Is HTML safe
*/ */
public function renderWidget(array $fields, $customFieldOrClass, $slug = null) public function renderWidget(array $fields, $customFieldOrClass, $documentType='html', $slug = null)
{ {
return $this->container->get('chill.custom_field.helper') return $this->container->get('chill.custom_field.helper')
->renderCustomField($fields, $customFieldOrClass, $slug); ->renderCustomField($fields, $customFieldOrClass, $documentType, $slug);
} }