/** * {@inheritdoc} */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { if (null === $fieldDescription->getTemplate()) { $fieldDescription->setTemplate('YnloAdminBundle::CRUD/list__details.html.twig'); } if (null === $fieldDescription->getType()) { $fieldDescription->setType('_details'); } if (null === $fieldDescription->getOption('name')) { $fieldDescription->setOption('name', 'Details'); } if (null === $fieldDescription->getOption('header_style')) { $fieldDescription->setOption('header_style', 'width:20px'); } if (null === $fieldDescription->getOption('details_template')) { throw new \LogicException('The option "details_template" is required'); } //encode the template $template = base64_encode($fieldDescription->getOption('details_template')); $fieldDescription->setOption('details_template_encoded', $template); if (null === $fieldDescription->getOption('ajax')) { $fieldDescription->setOption('ajax', false); } if (null === $fieldDescription->getOption('code')) { $fieldDescription->setOption('code', '_details'); } //hide default label if ($fieldDescription->getOption('label') == '_details' || $fieldDescription->getOption('label') == 'Details') { $fieldDescription->setOption('label', ' '); } }
/** * {@inheritdoc} */ public function buildActionFieldDescription(FieldDescriptionInterface $fieldDescription) { if (null === $fieldDescription->getTemplate()) { $fieldDescription->setTemplate('NetworkingInitCmsBundle:CRUD:list__action.html.twig'); } if (null === $fieldDescription->getType()) { $fieldDescription->setType('action'); } if (null === $fieldDescription->getOption('name')) { $fieldDescription->setOption('name', 'Action'); } if (null === $fieldDescription->getOption('code')) { $fieldDescription->setOption('code', 'Action'); } if (null !== $fieldDescription->getOption('actions')) { $actions = $fieldDescription->getOption('actions'); foreach ($actions as $k => $action) { if (!isset($action['template'])) { $actions[$k]['template'] = sprintf('NetworkingInitCmsBundle:CRUD:list__action_%s.html.twig', $k); } } $fieldDescription->setOption('actions', $actions); } return $fieldDescription; }
/** * The method defines the correct default settings for the provided FieldDescription * * @param \Sonata\AdminBundle\Admin\AdminInterface $admin * @param \Sonata\AdminBundle\Admin\FieldDescriptionInterface $fieldDescription * @return void */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { $fieldDescription->setAdmin($admin); if ($admin->getModelManager()->hasMetadata($admin->getClass())) { $metadata = $admin->getModelManager()->getMetadata($admin->getClass()); // set the default field mapping if (isset($metadata->fieldMappings[$fieldDescription->getName()])) { $fieldDescription->setFieldMapping($metadata->fieldMappings[$fieldDescription->getName()]); } // set the default association mapping if (isset($metadata->associationMappings[$fieldDescription->getName()])) { $fieldDescription->setAssociationMapping($metadata->associationMappings[$fieldDescription->getName()]); } } if (!$fieldDescription->getType()) { throw new \RuntimeException(sprintf('Please define a type for field `%s` in `%s`', $fieldDescription->getName(), get_class($admin))); } $fieldDescription->setOption('code', $fieldDescription->getOption('code', $fieldDescription->getName())); $fieldDescription->setOption('label', $fieldDescription->getOption('label', $fieldDescription->getName())); if (!$fieldDescription->getTemplate()) { $fieldDescription->setTemplate(sprintf('SonataAdminBundle:CRUD:show_%s.html.twig', $fieldDescription->getType())); if ($fieldDescription->getMappingType() == ClassMetadata::MANY_TO_ONE) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:show_orm_many_to_one.html.twig'); } if ($fieldDescription->getMappingType() == ClassMetadata::ONE_TO_ONE) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:show_orm_one_to_one.html.twig'); } if ($fieldDescription->getMappingType() == ClassMetadata::ONE_TO_MANY) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:show_orm_one_to_many.html.twig'); } if ($fieldDescription->getMappingType() == ClassMetadata::MANY_TO_MANY) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:show_orm_many_to_many.html.twig'); } } if ($fieldDescription->getMappingType() == ClassMetadata::MANY_TO_ONE) { $admin->attachAdminClass($fieldDescription); } if ($fieldDescription->getMappingType() == ClassMetadata::ONE_TO_ONE) { $admin->attachAdminClass($fieldDescription); } if ($fieldDescription->getMappingType() == ClassMetadata::ONE_TO_MANY) { $admin->attachAdminClass($fieldDescription); } if ($fieldDescription->getMappingType() == ClassMetadata::MANY_TO_MANY) { $admin->attachAdminClass($fieldDescription); } }
/** * {@inheritdoc} */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { if (null === $fieldDescription->getTemplate()) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:list__action.html.twig'); } if (null === $fieldDescription->getType()) { $fieldDescription->setType('action'); } if (null === $fieldDescription->getOption('name')) { $fieldDescription->setOption('name', 'Action'); } if (null === $fieldDescription->getOption('code')) { $fieldDescription->setOption('code', 'Action'); } if (null === $fieldDescription->getOption('header_style') && $fieldDescription->getOption('dropdown')) { $fieldDescription->setOption('header_style', 'width:40px'); } if (null !== $fieldDescription->getOption('actions')) { $actions = $fieldDescription->getOption('actions'); foreach ($actions as $k => &$action) { //only set the template if really exists //set to default any template that not exists if (!isset($action['template'])) { if ($fieldDescription->getOption('dropdown')) { $template = sprintf('SonataAdminBundle:CRUD:list__action_dropdown_%s.html.twig', $k); } else { $template = sprintf('SonataAdminBundle:CRUD:list__action_%s.html.twig', $k); } try { $this->twig->loadTemplate($template); } catch (\Twig_Error_Loader $e) { if ($fieldDescription->getOption('dropdown')) { $template = 'YnloAdminBundle::CRUD/list__action_dropdown_default.html.twig'; } else { $template = 'YnloAdminBundle::CRUD/list__action_default.html.twig'; } } $action['template'] = $template; } //set default role if (!isset($action['role'])) { $role = strtoupper($k); $action['role'] = $role === 'SHOW' ? 'VIEW' : $role; } //set default visibility if (!isset($action['visible'])) { $action['visible'] = true; } } $fieldDescription->setOption('actions', $actions); } //hide default label if (in_array($fieldDescription->getOption('label'), ['_action', 'Action'])) { $fieldDescription->setOption('label', ' '); } return $fieldDescription; }
/** * {@inheritdoc} */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { $fieldDescription->setTemplate('YnloAdminBundle::CRUD/list_enum.html.twig'); /** @var ModelManager $modelManager */ $modelManager = $admin->getModelManager(); if (null === $fieldDescription->getOption('enum_type') && $modelManager->hasMetadata($admin->getClass())) { $mapping = $modelManager->getMetadata($admin->getClass())->getFieldMapping($fieldDescription->getName()); $fieldDescription->setOption('enum_type', $mapping['type']); } }
/** * @throws \RuntimeException * @param \Sonata\AdminBundle\Admin\AdminInterface $admin * @param \Sonata\AdminBundle\Admin\FieldDescription $fieldDescription * @return void */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { // set default values $fieldDescription->setAdmin($admin); if ($admin->getModelManager()->hasMetadata($admin->getClass())) { $metadata = $admin->getModelManager()->getMetadata($admin->getClass()); // set the default field mapping if (isset($metadata->fieldMappings[$fieldDescription->getName()])) { $fieldDescription->setFieldMapping($metadata->fieldMappings[$fieldDescription->getName()]); } // set the default association mapping if (isset($metadata->associationMappings[$fieldDescription->getName()])) { $fieldDescription->setAssociationMapping($metadata->associationMappings[$fieldDescription->getName()]); } } if (!$fieldDescription->getType()) { throw new \RuntimeException(sprintf('Please define a type for field `%s` in `%s`', $fieldDescription->getName(), get_class($admin))); } $fieldDescription->setOption('code', $fieldDescription->getOption('code', $fieldDescription->getName())); $fieldDescription->setOption('label', $fieldDescription->getOption('label', $fieldDescription->getName())); $fieldDescription->setOption('filter_value', $fieldDescription->getOption('filter_value', null)); $fieldDescription->setOption('filter_options', $fieldDescription->getOption('filter_options', null)); $fieldDescription->setOption('filter_field_options', $fieldDescription->getOption('filter_field_options', null)); $fieldDescription->setOption('name', $fieldDescription->getOption('name', $fieldDescription->getName())); // set the default type if none is set if (!$fieldDescription->getType()) { $fieldDescription->setType('string'); } if (!$fieldDescription->getTemplate()) { $fieldDescription->setTemplate(sprintf('SonataAdminBundle:CRUD:filter_%s.html.twig', $fieldDescription->getType())); if ($fieldDescription->getType() == ClassMetadataInfo::MANY_TO_ONE) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:filter_many_to_one.html.twig'); } if ($fieldDescription->getType() == ClassMetadataInfo::MANY_TO_MANY) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:filter_many_to_many.html.twig'); } } }
/** * @param \Sonata\AdminBundle\Admin\AdminInterface $admin * @param \Sonata\AdminBundle\Admin\FieldDescriptionInterface $fieldDescription */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { $fieldDescription->setAdmin($admin); if (!$fieldDescription->getType()) { throw new \RuntimeException(sprintf('Please define a type for field `%s` in `%s`', $fieldDescription->getName(), get_class($admin))); } // define the template to use if (!$fieldDescription->getTemplate()) { $fieldDescription->setTemplate($this->getTemplate($fieldDescription->getType())); } // define code and label $fieldDescription->setOption('code', $fieldDescription->getOption('code', $fieldDescription->getName())); $fieldDescription->setOption('label', $fieldDescription->getOption('label', $fieldDescription->getName())); }
/** * The method defines the correct default settings for the provided FieldDescription * * @param \Sonata\AdminBundle\Admin\AdminInterface $admin * @param \Sonata\AdminBundle\Admin\FieldDescriptionInterface $fieldDescription * * @return void */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { $fieldDescription->setAdmin($admin); if ($admin->getModelManager()->hasMetadata($admin->getClass())) { list($metadata, $lastPropertyName, $parentAssociationMappings) = $admin->getModelManager()->getParentMetadataForProperty($admin->getClass(), $fieldDescription->getName()); $fieldDescription->setParentAssociationMappings($parentAssociationMappings); // set the default field mapping if (isset($metadata->fieldMappings[$lastPropertyName])) { $fieldDescription->setFieldMapping($metadata->fieldMappings[$lastPropertyName]); } // set the default association mapping if (isset($metadata->associationMappings[$lastPropertyName])) { $fieldDescription->setAssociationMapping($metadata->associationMappings[$lastPropertyName]); } } if (!$fieldDescription->getType()) { throw new \RuntimeException(sprintf('Please define a type for field `%s` in `%s`', $fieldDescription->getName(), get_class($admin))); } $fieldDescription->setOption('code', $fieldDescription->getOption('code', $fieldDescription->getName())); $fieldDescription->setOption('label', $fieldDescription->getOption('label', $fieldDescription->getName())); if (!$fieldDescription->getTemplate()) { $fieldDescription->setTemplate($this->getTemplate($fieldDescription->getType())); if (!$fieldDescription->getTemplate()) { switch ($fieldDescription->getMappingType()) { case ClassMetadataInfo::MANY_TO_ONE: $fieldDescription->setTemplate('SonataDoctrineORMAdminBundle:CRUD:show_orm_many_to_one.html.twig'); break; case ClassMetadataInfo::ONE_TO_ONE: $fieldDescription->setTemplate('SonataDoctrineORMAdminBundle:CRUD:show_orm_one_to_one.html.twig'); break; case ClassMetadataInfo::ONE_TO_MANY: $fieldDescription->setTemplate('SonataDoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig'); break; case ClassMetadataInfo::MANY_TO_MANY: $fieldDescription->setTemplate('SonataDoctrineORMAdminBundle:CRUD:show_orm_many_to_many.html.twig'); break; } } } switch ($fieldDescription->getMappingType()) { case ClassMetadataInfo::MANY_TO_ONE: case ClassMetadataInfo::ONE_TO_ONE: case ClassMetadataInfo::ONE_TO_MANY: case ClassMetadataInfo::MANY_TO_MANY: $admin->attachAdminClass($fieldDescription); break; } }
/** * The method defines the correct default settings for the provided FieldDescription * * @param \Sonata\AdminBundle\Admin\AdminInterface $admin * @param \Sonata\AdminBundle\Admin\FieldDescriptionInterface $fieldDescription * * @return void */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { $fieldDescription->setAdmin($admin); if ($admin->getModelManager()->hasMetadata($admin->getClass())) { list($metadata, $lastPropertyName, $parentAssociationMappings) = $admin->getModelManager()->getParentMetadataForProperty($admin->getClass(), $fieldDescription->getName()); $fieldDescription->setParentAssociationMappings($parentAssociationMappings); // set the default field mapping if (isset($metadata->fieldMappings[$lastPropertyName])) { $fieldDescription->setFieldMapping($metadata->fieldMappings[$lastPropertyName]); } // set the default association mapping if (isset($metadata->associationMappings[$lastPropertyName])) { $fieldDescription->setAssociationMapping($metadata->associationMappings[$lastPropertyName]); } } if (!$fieldDescription->getType()) { throw new \RuntimeException(sprintf('Please define a type for field `%s` in `%s`', $fieldDescription->getName(), get_class($admin))); } $fieldDescription->setOption('code', $fieldDescription->getOption('code', $fieldDescription->getName())); $fieldDescription->setOption('label', $fieldDescription->getOption('label', $fieldDescription->getName())); if (!$fieldDescription->getTemplate()) { if ($fieldDescription->getType() == 'id') { $fieldDescription->setType('string'); } if ($fieldDescription->getType() == 'int') { $fieldDescription->setType('integer'); } $template = $this->getTemplate($fieldDescription->getType()); if ($template === null) { if ($fieldDescription->getMappingType() == ClassMetadataInfo::ONE) { $template = 'SonataDoctrineMongoDBAdminBundle:CRUD:show_mongo_one.html.twig'; } elseif ($fieldDescription->getMappingType() == ClassMetadataInfo::MANY) { $template = 'SonataDoctrineMongoDBAdminBundle:CRUD:show_mongo_many.html.twig'; } } $fieldDescription->setTemplate($template); } if (in_array($fieldDescription->getMappingType(), array(ClassMetadataInfo::ONE, ClassMetadataInfo::MANY))) { $admin->attachAdminClass($fieldDescription); } }
/** * {@inheritdoc} */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription) { $fieldDescription->setTemplate('YnloAdminBundle::CRUD/list_collection.html.twig'); }
/** * The method defines the correct default settings for the provided FieldDescription * * @param \Sonata\AdminBundle\Admin\AdminInterface $admin * @param \Sonata\AdminBundle\Admin\FieldDescriptionInterface $fieldDescription * @param array $options * @return void */ public function fixFieldDescription(AdminInterface $admin, FieldDescriptionInterface $fieldDescription, array $options = array()) { $fieldDescription->mergeOptions($options); if ($admin->getModelManager()->hasMetadata($admin->getClass())) { $metadata = $admin->getModelManager()->getMetadata($admin->getClass()); // set the default field mapping if (isset($metadata->fieldMappings[$fieldDescription->getName()])) { $fieldDescription->setFieldMapping($metadata->fieldMappings[$fieldDescription->getName()]); } // set the default association mapping if (isset($metadata->associationMappings[$fieldDescription->getName()])) { $fieldDescription->setAssociationMapping($metadata->associationMappings[$fieldDescription->getName()]); } } if (!$fieldDescription->getType()) { throw new \RuntimeException(sprintf('Please define a type for field `%s` in `%s`', $fieldDescription->getName(), get_class($admin))); } $fieldDescription->setAdmin($admin); $fieldDescription->setOption('edit', $fieldDescription->getOption('edit', 'standard')); // fix template value for doctrine association fields if (!$fieldDescription->getTemplate()) { $fieldDescription->setTemplate(sprintf('SonataAdminBundle:CRUD:edit_%s.html.twig', $fieldDescription->getType())); } if ($fieldDescription->getType() == ClassMetadataInfo::ONE_TO_ONE) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:edit_orm_one_to_one.html.twig'); $admin->attachAdminClass($fieldDescription); } if ($fieldDescription->getType() == ClassMetadataInfo::MANY_TO_ONE) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:edit_orm_many_to_one.html.twig'); $admin->attachAdminClass($fieldDescription); } if ($fieldDescription->getType() == ClassMetadataInfo::MANY_TO_MANY) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:edit_orm_many_to_many.html.twig'); $admin->attachAdminClass($fieldDescription); } if ($fieldDescription->getType() == ClassMetadataInfo::ONE_TO_MANY) { $fieldDescription->setTemplate('SonataAdminBundle:CRUD:edit_orm_one_to_many.html.twig'); if ($fieldDescription->getOption('edit') == 'inline' && !$fieldDescription->getOption('widget_form_field')) { $fieldDescription->setOption('widget_form_field', 'Bundle\\Sonata\\AdminBundle\\Form\\EditableFieldGroup'); } $admin->attachAdminClass($fieldDescription); } // set correct default value if ($fieldDescription->getType() == 'datetime') { $options = $fieldDescription->getOption('form_field_options', array()); if (!isset($options['years'])) { $options['years'] = range(1900, 2100); } $fieldDescription->setOption('form_field', $options); } }