Exemplo n.º 1
0
 public function getChildren()
 {
     if (!$this->initialized) {
         foreach ($this->getChildPages() as $page) {
             $this->initializeChildPage($page);
         }
         $this->initialized = true;
     }
     return parent::getChildren();
 }
Exemplo n.º 2
0
 public function register(Application $app)
 {
     if (!isset($app['cms.url_fragment'])) {
         $app['cms.url_fragment'] = 'cms';
     }
     $app['cms.helper'] = $app->share(function () use($app) {
         return new CmsHelper($app['url_generator']);
     });
     $app['cms.node_registry'] = $app->share(function () use($app) {
         return new CmsNodeRegistry();
     });
     $app['metadata.queries.getCmsEntity'] = $app->share(function () use($app) {
         return new GetCmsEntityQuery($app['annotations.reader']);
     });
     $app['metadata.queries.getCmsEntitySlug'] = $app->share(function () use($app) {
         return new GetCmsEntitySlugQuery($app['annotations.reader'], $app['metadata.queries.getEntityName']);
     });
     $app['metadata.queries.getCmsNodePath'] = $app->share(function () use($app) {
         return new GetCmsNodePathQuery($app['annotations.reader']);
     });
     $app['metadata.queries.getCmsNode'] = $app->share(function () use($app) {
         return new GetCmsNodeQuery($app['orm.manager_registry'], $app['cms.node_registry']);
     });
     $app['metadata.queries.hasCmsNode'] = $app->share(function () use($app) {
         return new HasCmsNodeQuery($app['orm.manager_registry'], $app['cms.node_registry']);
     });
     $app['metadata.queries.getRootCmsNode'] = $app->share(function () use($app) {
         return new GetRootCmsNodeQuery($app['orm.manager_registry'], $app['cms.node_registry']);
     });
     $app['metadata.queries'] = $app->share($app->extend('metadata.queries', function (QueryCollection $collection) use($app) {
         $collection->registerQuery($app['metadata.queries.getCmsEntity'])->registerQuery($app['metadata.queries.getCmsEntitySlug'])->registerQuery($app['metadata.queries.getCmsNodePath'])->registerQuery($app['metadata.queries.getCmsNode'])->registerQuery($app['metadata.queries.hasCmsNode'])->registerQuery($app['metadata.queries.getRootCmsNode']);
         return $collection;
     }));
     $app['paginator.decorators.cmsTable'] = $app->share(function () use($app) {
         return new ChainedTableDataDecorator([new StringifierDecorator(), new HtmlStripperDecorator($app['orm.rm']), new TruncatorDecorator($app['string_helper']), new EscaperDecorator()]);
     });
     $app['paginator.decorators.cmsIndex'] = $app->share(function () use($app) {
         return new ChainedTableDataDecorator([$app['paginator.decorators.cmsTable'], new LinkerDecorator($app['orm.rm'], $app['url_generator'])]);
     });
     $app['cms.actions'] = $app->share(function () use($app) {
         return [new IndexAction($app['property_accessor'], $app['paginator.decorators.cmsIndex']), new AddAction($app['form.factory'], $app['url_generator']), new EditAction($app['form.factory'], $app['url_generator'])];
     });
     $app['cms.repository_node_factory'] = $app->share(function () use($app) {
         return new RepositoryCmsNodeFactory($app['cms.root_node'], $app['cms.actions']);
     });
     $app['cms.login_action'] = $app->share(function () use($app) {
         return new ReskinnedAction($app['users.login_action'], '@cms/view/login');
     });
     $app['cms.content_node'] = $app->share(function () use($app) {
         return new ControllerNode(null, null, 'content', 'Content', null, true, false);
     });
     $app['cms.root_node'] = $app->share(function () use($app) {
         $node = new ControllerNode();
         $node->wrapChild($app['cms.content_node']);
         return $node;
     });
     $app['cms.controllers'] = $app->share(function () use($app) {
         return $app['nodes.controllers_factory']($app['cms.root_node'], 'cms', 'node', false);
     });
     $app['cms.navigation_list'] = $app->share(function () use($app) {
         $node = new CmsNavigationNode($app['cms.root_node'], 'cms', $app['url_generator']);
         return $node;
     });
     $app['dispatcher'] = $app->share($app->extend('dispatcher', function (EventDispatcherInterface $dispatcher) use($app) {
         $dispatcher->addListener(ManagedRepositoryEvent::REGISTER, function (ManagedRepositoryEvent $event) use($app) {
             $repository = $event->getRepository();
             $nodes = $app['cms.repository_node_factory']->createNodes($repository);
             $isRootNode = true;
             foreach ($nodes as $node) {
                 $app['cms.node_registry']->register($repository, $node, $isRootNode);
                 $isRootNode = false;
             }
         });
         return $dispatcher;
     }));
     if (!isset($app['cms.access_rule'])) {
         $app['cms.access_rule'] = ['^/' . $app['cms.url_fragment'] . '/.*$', 'ROLE_ADMIN'];
     }
     $app['images.filters.cms_thumbnail'] = $app->share(function () use($app) {
         $filter = new ImageTransformer('cms-thumbnail');
         $filter->getTransformation()->thumbnail(new Box(60, 60), ImageInterface::THUMBNAIL_OUTBOUND);
         return $filter;
     });
 }