Enlazar a otro espacio

cancel
Showing results for 
Search instead for 
Did you mean: 
txakin
Member II

Enlazar a otro espacio

Hola a todos,

He creado una nueva jsp, que me muestra varios metadatos de un espacio, y enlaces a otros espacios.
Mi idea es que cuando pinchen en uno de esos enlaces, la navegación vaya directamente a ese espacio, y ver los documentos asociados a dicho espacio.

Cuál es la manera de obtener ese link?

Para ello me he creado una jsp, respaldada por un bean que extiende de SpaceDetailsBean (bean original)

Esta jsp tiene una tabla, con los espacios asociados, y por cada espacio un icono. Quiero que cuando se pinche en el icono, me habra dicho espacio.

Creo que se me ha entendido…o eso espero.

Muchas gracias de antemano.
1 Reply
ajv
Member II

Re: Enlazar a otro espacio

Hola de nuevo,

Llevaba 10 minutos escribiendo una respuesta y se me ha colgado el ordenata  :cry:
Bueno, intentaré sintetizar un poco y recordar los detalles  :lol:

Yo tomaría como referencia el jsp que realiza la navegación entre nodos (browse.jsp). La parte que creo que más interesa para este caso, te la pongo aquí:
<%– Spaces List –%>
<a:richList id="spacesList" binding="#{BrowseBean.spacesRichList}" viewMode="#{BrowseBean.browseViewMode}" pageSize="#{BrowseBean.pageSizeSpaces}"
styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow" altRowStyleClass="recordSetRowAlt" width="100%"
value="#{BrowseBean.nodes}" var="r">



<%– Primary column for details view mode –%>
<a:column id="col1" primary="true" width="200" style="padding:2px;text-align:left" rendered="#{BrowseBean.browseViewMode == 'details'}">
<f:facet name="header">
<a:sortLink id="col1-sort" label="#{msg.name}" value="name" mode="case-insensitive" styleClass="header"/>
</f:facet>
<f:facet name="small-icon">
<a:actionLink id="col1-act1" value="#{r.name}" image="/images/icons/#{r.smallIcon}.gif" actionListener="#{BrowseBean.clickSpace}" showLink="false">
<f:param name="id" value="#{r.id}" />
</a:actionLink>
</f:facet>
<a:actionLink id="col1-act2" value="#{r.name}" actionListener="#{BrowseBean.clickSpace}">
<f:param name="id" value="#{r.id}" />
</a:actionLink>
<r:nodeInfo id="col1-info" value="#{r.id}">
<h:graphicImage id="col1-img" url="/images/icons/popup.gif" styleClass="popupImage" width="16" height="16" />
</r:nodeInfo>
</a:column>



<%– Description column for all view modes –%>
<a:column id="col4" style="text-align:left">
<f:facet name="header">
<a:sortLink id="col4-sort" label="#{msg.description}" value="description" styleClass="header"/>
</f:facet>
<h:outputText id="col4-txt" value="#{r.description}" />
</a:column>

<%– Path column for search mode in details view mode –%>
<a:column id="col5" style="text-align:left" rendered="#{NavigationBean.searchContext != null && BrowseBean.browseViewMode == 'details'}">
<f:facet name="header">
<a:sortLink id="col5-sort" label="#{msg.path}" value="displayPath" styleClass="header"/>
</f:facet>
<r:nodePath id="col5-path" value="#{r.path}" actionListener="#{BrowseBean.clickSpacePath}" />
</a:column>

<%– Created Date column for details view mode –%>
<a:column id="col6" style="text-align:left" rendered="#{BrowseBean.browseViewMode == 'details'}">
<f:facet name="header">
<a:sortLink id="col6-sort" label="#{msg.created}" value="created" styleClass="header"/>
</f:facet>
<h:outputText id="col6-txt" value="#{r.created}">
<a:convertXMLDate type="both" pattern="#{msg.date_time_pattern}" />
</h:outputText>
</a:column>

<%– Modified Date column for details/icons view modes –%>
<a:column id="col7" style="text-align:left" rendered="#{BrowseBean.browseViewMode == 'details' || BrowseBean.browseViewMode == 'icons'}">
<f:facet name="header">
<a:sortLink id="col7-sort" label="#{msg.modified}" value="modified" styleClass="header"/>
</f:facet>
<h:outputText id="col7-txt" value="#{r.modified}">
<a:convertXMLDate type="both" pattern="#{msg.date_time_pattern}" />
</h:outputText>
</a:column>
Si nos fijamos, lo más importante en este caso es el compontente richList que contendrá la lista de nodos que se visualizará en la pantalla. Dicha lista la alimenta del atributo value, el cual hace una llamada al método getNodes del BrowseBean a través de value="#{BrowseBean.nodes}". A partir de aquí para cada nodo (resumido bajo la variable "r") va creando columnas.
El tema de "moverse" entre espacios lo consigue incorporando un actionLink (realmente tiene varios…pero observando uno nos basta) con el id del nodo como parámetro:
<a:actionLink id="col1-act2" value="#{r.name}" actionListener="#{BrowseBean.clickSpace}">
<f:param name="id" value="#{r.id}" />
</a:actionLink>
Por tanto, es importante que tu método "getNodes" devuelva también el id de nodo pues se utilizará ahora para "navegar".
Al clicar en el enlace (en el nodo) se llama al método clickSpace del BrowseBean.
Si le echas un vistazo a dicho método (en org.alfresco.web.bean.BrowseBean) y exploras un poco verás que básicamente acaba haciendo algo así como esto:
this.navigator.setCurrentNodeId(ref.getId());
Entonces, en tu caso necesitarás que tu bean tenga además un NavigationBean para realizar esta actualización, para indicar cuál es el nodo actual. Esto en principio hace que te muevas de una referencia a otra.

En fin, espero que te sirva como comienzo Smiley Very Happy
Hasta luego!!