掲示板

Problema con herencia de estructuras de contenido web

13年前 に Berto Obarrio によって更新されました。

Problema con herencia de estructuras de contenido web

New Member 投稿: 4 参加年月日: 11/02/01 最新の投稿
Buenos días,
Llevo unas semanas en mi trabajo desarrollando en Liferay, encontrándome con algunos problemas, pero que consigo solucionar con la comunidad, salvo este, que por más que busco no encontré que le pase a más gente, así que expongo a continuación el problema.

He creado una estructura PADRE con una serie de campos:

<root>
<dynamic-element name='Autor' type='text' index-type='text' repeatable='false'></dynamic-element>
<dynamic-element name='Imagen' type='image_gallery' index-type='text' repeatable='true'>
<dynamic-element name='Alt' type='text' index-type='' repeatable='false'></dynamic-element>
</dynamic-element>
</root>


Como se puede apreciar, el campo IMAGEN es repetible, y le he anidado un campo para escribir el alt por cuestiones de accesibilidad.

Seguidamente creé una plantilla para probar la estructura PADRE y funciona correctamente.
Seguimos.
Ahora creé la estructura HIJA, que extiende los campos del padre con estos otros:

<root>
<dynamic-element name='Dimensiones' type='text' index-type='text' repeatable='false'></dynamic-element>
<dynamic-element name='Tecnica' type='text' index-type='text' repeatable='false'></dynamic-element>
</root>


Y la plantilla la hice de la siguiente manera:

<p class="autor"><span>Autor:</span>$Autor.getData()</p>
#if($Imagen)
<div id="galeria" class="yui-skin-sam">
<div id="tituloGaleria">
<h3>Más imágenes</h3>
</div>
<div id="container" class="gallery">
<ol id="carousel" class="clearfix">
#foreach($foto in $Imagen.getSiblings())
<li class="item">
<a href="$foto.getData()" rel="g" title="$foto.Alt.getData()">
<img src="$foto.getData()" alt="$foto.Alt.getData()"></img>
</a>
</li>
#end
</ol>
</div>
</div>
#end
<p class="titulo"><span>Titulo:</span>$reserved-article-title.getData()</p>
<p class="dimensiones"><span>Dimensiones:</span>$Dimensiones.getData()</p>
<p class="tecnica"><span>Técnica:</span>$Tecnica.getData()</p>


Pues me encuentro con los siguientes problemas:

El primero, que siendo repetible el campo IMAGEN de la estructura PADRE, cuando creo contenido de la estructura HIJA pierde esa propiedad, por lo que únicamente puedo subir una imagen.
El segundo, que cualquier cosa que escriba en el campo ALT anexo a la IMAGEN no me la almacena en la base de datos, como si ese campo no existiese, y claro cuando pruebo con contenido modifiqué de diversas maneras la plantilla para mostrar el ALT, incluso utilizando el getChildren para acceder a dicho campo, pero estando vacío sólo me devuelve el nombre de la variable, o directamente no me muestra ni la imagen.
¿Alguien más se ha encontrado con ese problema? Creo que la raíz del mismo se encuentra en la herencia de la estructura padre, el hecho de que no permita repetir el campo al crear contenido con la hija.
Un saludo.
thumbnail
13年前 に Julio Camarero によって更新されました。

RE: Problema con herencia de estructuras de contenido web

Liferay Legend 投稿: 1668 参加年月日: 08/07/15 最新の投稿
Hola Berto,

por lo que comentas, parece que pueda ser un fallo en la herencia de campos repetidos en estructuras. Si conseguis reproducir el comportamiento con otro ejemplo sencillo, por favor, abre un ticket aquí: JIRA

Incluye en el ticket toda la información que puedas para que la gente de QA pueda replicarlo y solucionarlo lo antes posible, y añade aquí un enlace para que si alguien más llega aquí lo pueda encontrar.

un saludo!
12年前 に Ruben Garcia によって更新されました。

RE: Problema con herencia de estructuras de contenido web

New Member 投稿: 2 参加年月日: 11/10/04 最新の投稿
Hola,

Yo tengo el mismo problema con la herencia de los campos repetidos que ha tenido Berto Obarrio.¿Sabes si se ha resuelto este bug?.

Un saludo
12年前 に Ruben Garcia によって更新されました。

RE: Problema con herencia de estructuras de contenido web

New Member 投稿: 2 参加年月日: 11/10/04 最新の投稿
Hola,

Al final he encontrado el problema. Hay un bug en el fichero main.js que se encuentra en ROOT/html/portlet/journal/js.

Para que funcione correctamente la herencia de campos repetidos se tiene que comentar lo siguiente:

if (repeatableFieldImage) {
repeatableFieldImage.remove();
}

Si se comenta este código funcionará correctamente.

Espero que sirva de ayuda.

Un saludo.
8年前 に Daniel Agoiz によって更新されました。

RE: Problema con herencia de estructuras de contenido web

New Member 投稿: 4 参加年月日: 15/05/13 最新の投稿
Hola,
yo tengo un problema similar, estoy trabajando con la versión 6.2 GA2 y he creado una estructura en la que tengo una elemento repetible i dentro de este tengo una imagen.

mi problema es que cuando subo una imagen para cada elemento repetible todos cogen la imagen del primero.

He probado hacer lo de comentar la parte de código del main.j pero no funciona. Adjunto mi estructura:

<root available-locales="en_US" default-locale="en_US">
	<dynamic-element datatype="string" indextype="keyword" name="animation-speed" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
		<meta-data locale="en_US">
			<entry name="label">
				Animation Speed
			</entry>
			<entry name="predefinedValue">
				600
			</entry>
			<entry name="tip">
				In ms, the duration between each slide transition defaule value is 3000
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="string" indextype="keyword" name="slideshow-speed" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
		<meta-data locale="en_US">
			<entry name="label">
				Slideshow Speed
			</entry>
			<entry name="predefinedValue">
				500
			</entry>
			<entry name="tip">
				In ms, duration of time slide transitions will occupy defaule value is 500
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="boolean" indextype="keyword" name="auto-slideshow" readonly="false" repeatable="false" required="false" showlabel="true" type="checkbox" width="">
		<meta-data locale="en_US">
			<entry name="label">
				Auto Show
			</entry>
			<entry name="predefinedValue">
				false
			</entry>
			<entry name="tip">
				Auto Show Loading
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="string" indextype="keyword" name="item-width" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
		<meta-data locale="en_US">
			<entry name="label">
				Item Width
			</entry>
			<entry name="predefinedValue">
				0
			</entry>
			<entry name="tip">
				Integer: Box-model width of individual carousel items, including horizontal borders and padding.
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="string" indextype="keyword" name="max-items" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
		<meta-data locale="en_US">
			<entry name="label">
				Max Items
			</entry>
			<entry name="predefinedValue">
				0
			</entry>
			<entry name="tip">
				Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="string" indextype="keyword" name="moved-items" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
		<meta-data locale="en_US">
			<entry name="label">
				Move
			</entry>
			<entry name="predefinedValue">
				0
			</entry>
			<entry name="tip">
				Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="boolean" indextype="keyword" name="direction-nav" readonly="false" repeatable="false" required="false" showlabel="true" type="checkbox" width="">
		<meta-data locale="en_US">
			<entry name="label">
				Next Prev controls
			</entry>
			<entry name="predefinedValue">
				false
			</entry>
			<entry name="tip">
				Boolean: Create navigation for previous next navigation
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="boolean" indextype="keyword" name="control-nav" readonly="false" repeatable="false" required="false" showlabel="true" type="checkbox" width="">
		<meta-data locale="en_US">
			<entry name="label">
				Pagination
			</entry>
			<entry name="predefinedValue">
				false
			</entry>
			<entry name="tip">
				Boolean: Pagination Note: Leave true for manualControls usage
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="boolean" indextype="keyword" name="animation-loop" readonly="false" repeatable="false" required="false" showlabel="true" type="checkbox" width="">
		<meta-data locale="en_US">
			<entry name="label">
				Loop
			</entry>
			<entry name="predefinedValue">
				false
			</entry>
			<entry name="tip">
				Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="boolean" indextype="keyword" name="pause-on-hover" readonly="false" repeatable="false" required="false" showlabel="true" type="checkbox" width="">
		<meta-data locale="en_US">
			<entry name="label">
				Pause On Hover
			</entry>
			<entry name="predefinedValue">
				false
			</entry>
			<entry name="tip">
				Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="string" indextype="keyword" multiple="false" name="animation-type" readonly="false" repeatable="false" required="false" showlabel="true" type="select" width="">
		<dynamic-element name="slide" type="option" value="slide">
			<meta-data locale="en_US">
				<entry name="label">
					Slide
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element name="fade" type="option" value="fade">
			<meta-data locale="en_US">
				<entry name="label">
					Fade
				</entry>
			</meta-data>
		</dynamic-element>
		<meta-data locale="en_US">
			<entry name="label">
				Animation Type
			</entry>
			<entry name="predefinedValue">
				[]
			</entry>
			<entry name="tip">
				Select your animation type, "fade" or "slide"
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="string" indextype="keyword" multiple="false" name="sliding-direction" readonly="false" repeatable="false" required="false" showlabel="true" type="select" width="">
		<dynamic-element name="horizontal" type="option" value="horizontal">
			<meta-data locale="en_US">
				<entry name="label">
					Horizontal
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element name="vertical" type="option" value="vertical">
			<meta-data locale="en_US">
				<entry name="label">
					Vertical
				</entry>
			</meta-data>
		</dynamic-element>
		<meta-data locale="en_US">
			<entry name="label">
				Animation Type
			</entry>
			<entry name="predefinedValue">
				[]
			</entry>
			<entry name="tip">
				Select the sliding direction, "horizontal" or "vertical"
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="string" indextype="keyword" name="manual-controls" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
		<meta-data locale="en_US">
			<entry name="label">
				Manual Controls Selector
			</entry>
			<entry name="predefinedValue">
				
			</entry>
			<entry name="tip">
				Selector: Declare custom control navigation. Examples would be ".flex-control-nav li" or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides or tabs.
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="string" indextype="keyword" name="slides" readonly="false" repeatable="true" required="false" showlabel="true" type="text" width="small">
		<dynamic-element datatype="html" fieldnamespace="ddm" indextype="keyword" name="description" readonly="false" repeatable="false" required="false" showlabel="true" type="ddm-text-html" width="small">
			<meta-data locale="en_US">
				<entry name="label">
					Text
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element datatype="image" fieldnamespace="wcm" indextype="keyword" name="image" readonly="false" repeatable="true" required="false" showlabel="true" type="wcm-image" width="">
			<dynamic-element datatype="string" indextype="keyword" name="image-width" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
				<meta-data locale="en_US">
					<entry name="label">
						Image Width
					</entry>
					<entry name="predefinedValue">
						
					</entry>
					<entry name="tip">
						Integer: Image width en pixel (don't put px)
					</entry>
				</meta-data>
			</dynamic-element>
			<dynamic-element datatype="string" indextype="keyword" name="image-height" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
				<meta-data locale="en_US">
					<entry name="label">
						Image Height
					</entry>
					<entry name="predefinedValue">
						
					</entry>
					<entry name="tip">
						Integer: Image Height en pixel (don't put px)
					</entry>
				</meta-data>
			</dynamic-element>
			<meta-data locale="en_US">
				<entry name="label">
					Image
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element datatype="string" indextype="keyword" name="image-link" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
			<meta-data locale="en_US">
				<entry name="label">
					Image Link
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					Page opened on clicking the image for external links add // before your link
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element datatype="string" indextype="keyword" name="button-link" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
			<meta-data locale="en_US">
				<entry name="label">
					Button Link
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					for external links add // before your link
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element datatype="string" indextype="keyword" name="button-caption" readonly="false" repeatable="false" required="false" showlabel="true" type="text" width="small">
			<meta-data locale="en_US">
				<entry name="label">
					Button Caption
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					
				</entry>
			</meta-data>
		</dynamic-element>
		<meta-data locale="en_US">
			<entry name="label">
				slides
			</entry>
			<entry name="predefinedValue">
				
			</entry>
			<entry name="tip">
				
			</entry>
		</meta-data>
	</dynamic-element>
</root>



Gracias