From e8c7dd4798232e9872d621d6dfb7e42b09eb49e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petar=20=C5=A0panja?= Date: Wed, 12 Nov 2014 16:02:19 +0100 Subject: [PATCH] EZP-23513: pass converted link parameters to Legacy Stack --- .../Core/MVC/Legacy/View/Provider/Content.php | 90 ++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/eZ/Publish/Core/MVC/Legacy/View/Provider/Content.php b/eZ/Publish/Core/MVC/Legacy/View/Provider/Content.php index 3f72ef9399c..2523fd532e8 100644 --- a/eZ/Publish/Core/MVC/Legacy/View/Provider/Content.php +++ b/eZ/Publish/Core/MVC/Legacy/View/Provider/Content.php @@ -9,6 +9,7 @@ namespace eZ\Publish\Core\MVC\Legacy\View\Provider; +use eZ\Publish\Core\FieldType\XmlText\Converter\EmbedToHtml5; use eZ\Publish\Core\MVC\Legacy\View\Provider; use eZ\Publish\Core\MVC\Symfony\View\Provider\Content as ContentViewProviderInterface; use eZ\Publish\API\Repository\Values\Content\ContentInfo; @@ -50,12 +51,34 @@ function () use ( $contentInfo, $viewType, $params ) // Used by XmlText field type if ( isset( $params['objectParameters'] ) ) { + if ( isset( $params['linkParameters'] ) && $params['linkParameters'] !== null ) + { + $linkParameters = $params['linkParameters']; + } $tpl->setVariable( 'object_parameters', $params["objectParameters"], 'ContentView' ); } // Used by RichText field type else if ( isset( $params['embedParams'] ) ) { - $tpl->setVariable( 'object_parameters', $params["embedParams"], 'ContentView' ); + if ( isset( $params['embedParams']['link'] ) ) + { + $linkParameters = $params['embedParams']['link']; + } + + if ( isset( $params['embedParams']['config'] ) ) + { + $tpl->setVariable( 'object_parameters', $params['embedParams']['config'], 'ContentView' ); + } + } + + // Convert link parameters to Legacy Stack format + if ( isset( $linkParameters ) ) + { + $tpl->setVariable( + 'link_parameters', + $this->legalizeLinkParameters( $linkParameters ), + 'ContentView' + ); } $children = array(); @@ -100,6 +123,71 @@ function () use ( $contentInfo, $viewType, $params ) return $this->decorator; } + /** + * Converts link parameters to Legacy Stack format + * + * @param array $linkParameters + * + * @return array + */ + protected function legalizeLinkParameters( array $linkParameters ) + { + $parameters = array(); + + if ( isset( $linkParameters["href"] ) ) + { + $parameters["href"] = $linkParameters["href"]; + } + + if ( isset( $linkParameters["resourceFragmentIdentifier"] ) ) + { + $parameters["anchor_name"] = $linkParameters["resourceFragmentIdentifier"]; + } + + if ( isset( $linkParameters["class"] ) ) + { + $parameters["class"] = $linkParameters["class"]; + } + + if ( isset( $linkParameters["id"] ) ) + { + $parameters["xhtml:id"] = $linkParameters["id"]; + } + + if ( isset( $linkParameters["target"] ) ) + { + $parameters["target"] = $linkParameters["target"]; + } + + if ( isset( $linkParameters["title"] ) ) + { + $parameters["xhtml:title"] = $linkParameters["title"]; + } + + if ( $linkParameters["resourceType"] !== null ) + { + switch ( $linkParameters["resourceType"] ) + { + case EmbedToHtml5::LINK_RESOURCE_CONTENT: + $parameters["object_id"] = $linkParameters["resourceId"]; + break; + + case EmbedToHtml5::LINK_RESOURCE_LOCATION: + $parameters["node_id"] = $linkParameters["resourceId"]; + break; + + case EmbedToHtml5::LINK_RESOURCE_URL: + $parameters["url_id"] = $linkParameters["resourceId"]; + break; + + default: + // Don't set anything by default + } + } + + return $parameters; + } + /** * Checks if $valueObject matches the $matcher's rules. *