/** * Get FQCN of specified entity * * @param object $object * @param bool $escape Set TRUE to escape the class name for insertion into a route, * replacing \ with _ characters * * @return string */ public function getClassName($object, $escape = false) { if (!is_object($object)) { return null; } $className = ClassUtils::getRealClass($object); return $escape ? $this->entityRoutingHelper->getUrlSafeClassName($className) : $className; }
/** * Gets definition for tag column. * * @param DatagridConfiguration $config * * @return array */ protected function getColumnDefinition(DatagridConfiguration $config) { $className = $this->getEntityClassName($config); $urlSafeClassName = $this->entityRoutingHelper->getUrlSafeClassName($className); $permissions = ['oro_tag_create' => $this->securityFacade->isGranted(TagManager::ACL_RESOURCE_CREATE_ID_KEY), 'oro_tag_unassign_global' => $this->securityFacade->isGranted(TagManager::ACL_RESOURCE_REMOVE_ID_KEY)]; return ['label' => 'oro.tag.tags_label', 'type' => 'callback', 'frontend_type' => 'tags', 'callable' => function (ResultRecordInterface $record) { return $record->getValue(self::COLUMN_NAME); }, 'editable' => false, 'translatable' => true, 'renderable' => $this->taggableHelper->isEnableGridColumn($className), 'inline_editing' => ['enable' => $this->securityFacade->isGranted(TagManager::ACL_RESOURCE_ASSIGN_ID_KEY), 'editor' => ['view' => 'orotag/js/app/views/editor/tags-editor-view', 'view_options' => ['permissions' => $permissions]], 'save_api_accessor' => ['route' => 'oro_api_post_taggable', 'http_method' => 'POST', 'default_route_parameters' => ['entity' => $urlSafeClassName], 'route_parameters_rename_map' => ['id' => 'entityId']], 'autocomplete_api_accessor' => ['class' => 'oroui/js/tools/search-api-accessor', 'search_handler_name' => 'tags', 'label_field_name' => 'name']]]; }
/** * @param object $entity * @return array */ public function getSupportedTargets($entity) { $targetEntities = $this->entityProvider->getEntities(); $entityTargets = []; if (!is_object($entity) || !method_exists($entity, 'supportActivityTarget')) { return $entityTargets; } $count = count($targetEntities); for ($i = 0; $i < $count; $i++) { $targetEntity = $targetEntities[$i]; $className = $targetEntity['name']; if (!empty($className) && $entity->supportActivityTarget($className)) { $entityTargets[] = ['label' => $targetEntity['label'], 'className' => $this->routingHelper->getUrlSafeClassName($targetEntity['name']), 'first' => !(bool) $i, 'gridName' => $this->getContextGridByEntity($className)]; $i++; } } return $entityTargets; }
/** * @param Config $config * * @return array */ public function getActivityListOption(Config $config) { $entityConfigProvider = $this->configManager->getProvider('entity'); $templates = []; foreach ($this->providers as $provider) { $hasComment = false; if ($provider instanceof CommentProviderInterface) { $hasComment = $provider->hasComments($this->configManager, $provider->getActivityClass()); } $template = $provider->getTemplate(); if ($provider instanceof ActivityListGroupProviderInterface && $config->get('oro_activity_list.grouping')) { $template = $provider->getGroupedTemplate(); } $entityConfig = $entityConfigProvider->getConfig($provider->getActivityClass()); $templates[$this->routingHelper->getUrlSafeClassName($provider->getActivityClass())] = ['icon' => $entityConfig->get('icon'), 'label' => $this->translator->trans($entityConfig->get('label')), 'template' => $template, 'routes' => $provider->getRoutes(), 'has_comments' => $hasComment]; } return $templates; }
/** * @dataProvider getUrlSafeClassNameProvider */ public function testGetUrlSafeClassName($src, $expected) { $this->assertEquals($expected, $this->entityRoutingHelper->getUrlSafeClassName($src)); }