Extendiendo la búsqueda avanzada de Alfresco Share
Publicado por jesus.gutierrez el Mié, 19/10/2011 - 14:04.
La aplicación Share de Alfresco nos permite la recuperación de archivos mediante una interfaz de búsqueda avanzada que en ocasiones puede resultar insuficiente. Por ejemplo, no nos permite buscar archivos por “Categorías” o “Etiquetas” o limitar la búsqueda en un determinado directorio, tarea que si podemos realizar con la herramienta “Explorer”.
A continuación explicamos las modificaciones necesarias en nuestro Alfresco que nos permitirán esta funcionalidad en Share.
Por un lado, para incluir los filtros de “Categorías” y “Etiquetas” no hay que programar nada, ya que son características de los archivos que ya vienen implementadas en Alfresco Share y lo único que tenemos que hacer es mostrarlas en la Búsqueda. Para ello modificamos el archivo
C:\Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\share-form-config.xml y añadimos el siguiente código:
En la línea 322 deberá quedar
<!-- Search form --> <form id="search"> <field-visibility> <show id="cm:name" /> <show id="cm:title" force="true" /> <show id="cm:description" force="true" /> <show id="cm:categories" force="true" /> <show id="cm:<span data-scayt_word="taggable" data-scaytid="383">taggable</span>" force="true" /> <show id="<span data-scayt_word="mimetype" data-scaytid="386">mimetype</span>" /> <show id="cm:modified" /> <show id="cm:modifier" /> </field-visibility> <appearance> <field id="cm:categories"> <control> <<span data-scayt_word="control-param" data-scaytid="387">control-param</span> name="<span data-scayt_word="compactMode" data-scaytid="397">compactMode</span>">true</<span data-scayt_word="control-param" data-scaytid="388">control-param</span>> </control> </field> <field id="cm:<span data-scayt_word="taggable" data-scaytid="384">taggable</span>"> <control> <<span data-scayt_word="control-param" data-scaytid="389">control-param</span> name="<span data-scayt_word="compactMode" data-scaytid="398">compactMode</span>">true</<span data-scayt_word="control-param" data-scaytid="390">control-param</span>> <<span data-scayt_word="control-param" data-scaytid="391">control-param</span> name="<span data-scayt_word="params" data-scaytid="399">params</span>">aspect=cm:<span data-scayt_word="taggable" data-scaytid="385">taggable</span></<span data-scayt_word="control-param" data-scaytid="392">control-param</span>> <<span data-scayt_word="control-param" data-scaytid="393">control-param</span> name="<span data-scayt_word="createNewItemUri" data-scaytid="400">createNewItemUri</span>">/<span data-scayt_word="api" data-scaytid="401">api</span>/tag/workspace/<span data-scayt_word="SpacesStore" data-scaytid="402">SpacesStore</span></<span data-scayt_word="control-param" data-scaytid="394">control-param</span>> <<span data-scayt_word="control-param" data-scaytid="395">control-param</span> name="<span data-scayt_word="createNewItemIcon" data-scaytid="403">createNewItemIcon</span>">tag</<span data-scayt_word="control-param" data-scaytid="396">control-param</span>> </control> </field>
Ahora bien, para incluir la búsqueda limitada en un directorio es muy distinto, al no tratarse de una característica propia de los archivos de Alfresco.
Lo primero que hacemos es modificar el formulario de búsqueda avanzada para incluir los campos necesarios. En C:\Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\search\advsearch.get.html.ftl añadimos:
<#-- <span data-scayt_word="carpeta" data-scaytid="436">carpeta</span> entry box --> <div class="<span data-scayt_word="carpeta-box" data-scaytid="440">carpeta-box</span>"> <div>${<span data-scayt_word="msg" data-scaytid="441">msg</span>("<span data-scayt_word="Buscar" data-scaytid="443">Buscar</span> en <span data-scayt_word="carpeta" data-scaytid="437">carpeta</span>")}:</div> <input type="text" class="terms" name="${el}-search-text" id="${el}<span data-scayt_word="carpeta" data-scaytid="438">carpeta</span>" value="${(<span data-scayt_word="page.url.args" data-scaytid="444">page.url.args</span>["<span data-scayt_word="st" data-scaytid="445">st</span>"]!"")?html}" <span data-scayt_word="maxlength" data-scaytid="446">maxlength</span>="1024" /> <#-- <span data-scayt_word="subcarpetas" data-scaytid="447">subcarpetas</span> check box --> <div> <INPUT TYPE=CHECKBOX name="${el}<span data-scayt_word="-subcarpetas" data-scaytid="450">-subcarpetas</span>" id="${el}<span data-scayt_word="subcarpetas" data-scaytid="448">subcarpetas</span>"> <span data-scayt_word="Incluir" data-scaytid="451">Incluir</span> <span data-scayt_word="subcarpetas" data-scaytid="449">subcarpetas</span><P> </div> <#-- folder button --> <div class="<span data-scayt_word="yui-u" data-scaytid="452">yui-u</span> align-right"> <span id="${el}-folder-button-1" class="<span data-scayt_word="yui-button" data-scaytid="453">yui-button</span> <span data-scayt_word="yui-push-button" data-scaytid="454">yui-push-button</span> search-icon"> <span class="first-child"> <button type="button">${<span data-scayt_word="msg" data-scaytid="442">msg</span>('<span data-scayt_word="Seleccionar" data-scaytid="455">Seleccionar</span> <span data-scayt_word="carpeta" data-scaytid="439">carpeta</span>')}</button> </span> </span> </div> </div>
Y modificamos la hoja de estilos para conservar la misma apariencia, en C:\Alfresco\tomcat\webapps\share\components\search\search.css añadimos:
.search <span data-scayt_word=".carpeta-box" data-scaytid="466">.carpeta-box</span> { background-color: #<span data-scayt_word="F5FFF2" data-scaytid="468">F5FFF2</span>; margin-left: <span data-scayt_word="1.5em" data-scaytid="469">1.5em</span>; border: <span data-scayt_word="1px" data-scaytid="470">1px</span> solid #<span data-scayt_word="C2C2C2" data-scaytid="471">C2C2C2</span>; padding: <span data-scayt_word="1em" data-scaytid="472">1em</span>; width: <span data-scayt_word="800px" data-scaytid="473">800px</span>; } .search <span data-scayt_word=".carpeta-box" data-scaytid="467">.carpeta-box</span> .terms { width: <span data-scayt_word="60em" data-scaytid="474">60em</span>; }
Para elegir el directorio en el que vamos a realizar la búsqueda vamos a usar un “Picker” o “Selector” que ya está implementado en el Share y que realiza la misma funcionalidad que estamos buscando. Para poder utilizarlo y modificarlo a nuestro antojo lo que hacemos es copiarnos los archivos que implementan el “Selector” en los directorios de búsqueda avanzada.
Copiamos los archivos global-folder.js, global-folder-min.js y global-folder.css de C:\Alfresco\tomcat\webapps\share\modules\documentlibrary a
C:\Alfresco\tomcat\webapps\share\components\search
Y todos los global-folder.get* de C:\Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\modules\documentlibrary a
C:\Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\search
Por último para poder usar el “Selector” añadimos en C:\Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\search\advsearch.get.head.ftl el siguiente código
<@script type="text/<span data-scayt_word="javascript" data-scaytid="538">javascript</span>" <span data-scayt_word="src" data-scaytid="539">src</span>="${<span data-scayt_word="page.url.context" data-scaytid="540">page.url.context</span>}/res/components/search/<span data-scayt_word="global-folder.js" data-scaytid="542">global-folder.js</span>"></@script> <@link <span data-scayt_word="rel" data-scaytid="543">rel</span>="<span data-scayt_word="stylesheet" data-scaytid="544">stylesheet</span>" type="text/<span data-scayt_word="css" data-scaytid="545">css</span>" <span data-scayt_word="href" data-scaytid="546">href</span>="${<span data-scayt_word="page.url.context" data-scaytid="541">page.url.context</span>}/res/components/search/<span data-scayt_word="global-folder.css" data-scaytid="547">global-folder.css</span>" />
Ahora nos queda implementar la funcionalidad que buscamos en los correspondientes “Javascripts”. Comenzamos por el script C:\Alfresco\tomcat\webapps\share\components\search\advsearch.js
En la línea 38 hacemos la declaración
/** * Alfresco Slingshot aliases */ <span data-scayt_word="var" data-scaytid="563">var</span> $html = <span data-scayt_word="Alfresco.util.encodeHTML" data-scaytid="564">Alfresco.util.encodeHTML</span>, $<span data-scayt_word="hasEventInterest" data-scaytid="565">hasEventInterest</span> = <span data-scayt_word="Alfresco.util.hasEventInterest" data-scaytid="566">Alfresco.util.hasEventInterest</span>;
Registramos el nuevo botón que hemos añadido, en la línea 135 ha de aparecer
// search <span data-scayt_word="YUI" data-scaytid="589">YUI</span> button and menus <span data-scayt_word="this.widgets.searchButton1" data-scaytid="575">this.widgets.searchButton1</span> = <span data-scayt_word="Alfresco.util.createYUIButton" data-scaytid="576">Alfresco.util.createYUIButton</span>(this, "search-button-1", <span data-scayt_word="this.onSearchClick" data-scaytid="579">this.onSearchClick</span>); <span data-scayt_word="this.widgets.searchButton2" data-scaytid="581">this.widgets.searchButton2</span> = <span data-scayt_word="Alfresco.util.createYUIButton" data-scaytid="577">Alfresco.util.createYUIButton</span>(this, "search-button-2", <span data-scayt_word="this.onSearchClick" data-scaytid="580">this.onSearchClick</span>); <span data-scayt_word="this.widgets.folderButton1" data-scaytid="582">this.widgets.folderButton1</span> = <span data-scayt_word="Alfresco.util.createYUIButton" data-scaytid="578">Alfresco.util.createYUIButton</span>(this, "folder-button-1", <span data-scayt_word="this.onFolderClick" data-scaytid="583">this.onFolderClick</span>);
Debemos modificar la función onSearchClick para la inclusión de los nuevos parámetros en la consulta de búsqueda, para ello la función quedará así
/** * Event handler that gets fired when user clicks the Search button. * * @method <span data-scayt_word="onSearchClick" data-scaytid="600">onSearchClick</span> * <span data-scayt_word="@param" data-scaytid="631">@param</span> e {object} <span data-scayt_word="DomEvent" data-scaytid="633">DomEvent</span> * <span data-scayt_word="@param" data-scaytid="632">@param</span> <span data-scayt_word="obj" data-scaytid="634">obj</span> {object} Object passed back from <span data-scayt_word="addListener" data-scaytid="636">addListener</span> method */ <span data-scayt_word="onSearchClick" data-scaytid="601">onSearchClick</span>: function <span data-scayt_word="ADVSearch_onSearchClick" data-scaytid="637">ADVSearch_onSearchClick</span>(e, <span data-scayt_word="obj" data-scaytid="635">obj</span>) { // retrieve form data structure directly from the runtime <span data-scayt_word="var" data-scaytid="602">var</span> <span data-scayt_word="formData" data-scaytid="638">formData</span> = <span data-scayt_word="this.currentForm.runtime.getFormData" data-scaytid="608">this.currentForm.runtime.getFormData</span>(); // add DD type to form data structure <span data-scayt_word="formData.datatype" data-scaytid="609">formData.datatype</span> = <span data-scayt_word="this.currentForm.type" data-scaytid="610">this.currentForm.type</span>; <span data-scayt_word="var" data-scaytid="603">var</span> valor="<span data-scayt_word="inicial" data-scaytid="640">inicial</span>"; //<span data-scayt_word="cogemos" data-scaytid="641">cogemos</span> el <span data-scayt_word="nombre" data-scaytid="642">nombre</span> de la <span data-scayt_word="carpeta" data-scaytid="611">carpeta</span> valor = <span data-scayt_word="Dom.get" data-scaytid="614">Dom.get</span>(<span data-scayt_word="this.id" data-scaytid="617">this.id</span> + "<span data-scayt_word="carpeta" data-scaytid="612">carpeta</span>").value; //<span data-scayt_word="miramos" data-scaytid="643">miramos</span> el checkbox de <span data-scayt_word="las" data-scaytid="620">las</span> <span data-scayt_word="subcarpetas" data-scaytid="621">subcarpetas</span> <span data-scayt_word="var" data-scaytid="604">var</span> check=<span data-scayt_word="Dom.get" data-scaytid="615">Dom.get</span>(<span data-scayt_word="this.id" data-scaytid="618">this.id</span> + "<span data-scayt_word="subcarpetas" data-scaytid="622">subcarpetas</span>").checked; if(check==true){ valor+="/"; } // build and execute <span data-scayt_word="url" data-scaytid="644">url</span> for search page <span data-scayt_word="var" data-scaytid="605">var</span> <span data-scayt_word="cadena" data-scaytid="647">cadena</span>=<span data-scayt_word="YAHOO.lang.JSON.stringify" data-scaytid="623">YAHOO.lang.JSON.stringify</span>(<span data-scayt_word="formData" data-scaytid="639">formData</span>); //le <span data-scayt_word="quitamos" data-scaytid="648">quitamos</span> la } del final <span data-scayt_word="var" data-scaytid="606">var</span> <span data-scayt_word="cadena2" data-scaytid="649">cadena2</span>=<span data-scayt_word="cadena.substring" data-scaytid="624">cadena.substring</span>(0,<span data-scayt_word="cadena.length-1" data-scaytid="625">cadena.length-1</span>); //le <span data-scayt_word="metemos" data-scaytid="653">metemos</span> el <span data-scayt_word="campo" data-scaytid="654">campo</span> <span data-scayt_word="carpeta" data-scaytid="613">carpeta</span> y la } <span data-scayt_word="cadena2" data-scaytid="650">cadena2</span>=<span data-scayt_word="cadena2" data-scaytid="651">cadena2</span>+",\"<span data-scayt_word="carpeta_" data-scaytid="655">carpeta_</span>\":\""+valor+"\"}"; <span data-scayt_word="var" data-scaytid="607">var</span> <span data-scayt_word="url" data-scaytid="645">url</span> = <span data-scayt_word="YAHOO.lang.substitute" data-scaytid="626">YAHOO.lang.substitute</span>(<span data-scayt_word="Alfresco.constants.URL_PAGECONTEXT" data-scaytid="627">Alfresco.constants.URL_PAGECONTEXT</span> + "{site}search?t={terms}&q={query}", { site: (<span data-scayt_word="this.options.siteId.length" data-scaytid="628">this.options.siteId.length</span> !== 0 ? ("site/" + <span data-scayt_word="this.options.siteId" data-scaytid="629">this.options.siteId</span> + "/") : ""), terms: <span data-scayt_word="encodeURIComponent" data-scaytid="656">encodeURIComponent</span>(<span data-scayt_word="Dom.get" data-scaytid="616">Dom.get</span>(<span data-scayt_word="this.id" data-scaytid="619">this.id</span> + "-search-text").value), query: <span data-scayt_word="encodeURIComponent" data-scaytid="657">encodeURIComponent</span>(<span data-scayt_word="cadena2" data-scaytid="652">cadena2</span>) }); <span data-scayt_word="window.location.href" data-scaytid="630">window.location.href</span> = <span data-scayt_word="url" data-scaytid="646">url</span>; },
Creamos la función que se debe ejecutar cuando se produzca el evento del botón “Seleccionar carpeta” , tenemos que añadir
/** * Event handler that gets fired when user clicks the Folder button. * * @method <span data-scayt_word="onFolderClick" data-scaytid="690">onFolderClick</span> * <span data-scayt_word="@param" data-scaytid="672">@param</span> e {object} <span data-scayt_word="DomEvent" data-scaytid="674">DomEvent</span> * <span data-scayt_word="@param" data-scaytid="673">@param</span> <span data-scayt_word="obj" data-scaytid="675">obj</span> {object} Object passed back from <span data-scayt_word="addListener" data-scaytid="677">addListener</span> method */ <span data-scayt_word="onFolderClick" data-scaytid="691">onFolderClick</span>: function <span data-scayt_word="ADVSearch_onFolderClick" data-scaytid="692">ADVSearch_onFolderClick</span>(e, <span data-scayt_word="obj" data-scaytid="676">obj</span>) { if (!<span data-scayt_word="this.widgets.destinationDialog" data-scaytid="678">this.widgets.destinationDialog</span>) { <span data-scayt_word="this.widgets.destinationDialog" data-scaytid="679">this.widgets.destinationDialog</span> = new <span data-scayt_word="Alfresco.module.DoclibGlobalFolder" data-scaytid="680">Alfresco.module.DoclibGlobalFolder</span>(<span data-scayt_word="this.id" data-scaytid="681">this.id</span> + "<span data-scayt_word="-destinationDialog" data-scaytid="693">-destinationDialog</span>"); <span data-scayt_word="this.widgets.destinationDialog.setOptions" data-scaytid="682">this.widgets.destinationDialog.setOptions</span>( { title: <span data-scayt_word="this.msg" data-scaytid="684">this.msg</span>("<span data-scayt_word="Seleccione" data-scaytid="694">Seleccione</span> <span data-scayt_word="una" data-scaytid="685">una</span> <span data-scayt_word="carpeta" data-scaytid="686">carpeta</span>") }); } <span data-scayt_word="var" data-scaytid="687">var</span> <span data-scayt_word="pathNodeRef" data-scaytid="695">pathNodeRef</span> ; <span data-scayt_word="this.widgets.destinationDialog.setOptions" data-scaytid="683">this.widgets.destinationDialog.setOptions</span>( { <span data-scayt_word="pathNodeRef" data-scaytid="696">pathNodeRef</span>: <span data-scayt_word="pathNodeRef" data-scaytid="697">pathNodeRef</span> ? new <span data-scayt_word="Alfresco.util.NodeRef" data-scaytid="688">Alfresco.util.NodeRef</span>(<span data-scayt_word="pathNodeRef" data-scaytid="698">pathNodeRef</span>) : null }); <span data-scayt_word="this.widgets.destinationDialog.showDialog" data-scaytid="689">this.widgets.destinationDialog.showDialog</span>(); },
Y por último recoger el directorio seleccionado por el usuario
/** * Folder selected in destination dialog * * @method <span data-scayt_word="onDestinationSelected" data-scaytid="742">onDestinationSelected</span> * <span data-scayt_word="@param" data-scaytid="706">@param</span> layer * {object} Event fired * <span data-scayt_word="@param" data-scaytid="707">@param</span> <span data-scayt_word="args" data-scaytid="744">args</span> * {array} Event parameters (depends on event type) */ <span data-scayt_word="onDestinationSelected" data-scaytid="743">onDestinationSelected</span>: function <span data-scayt_word="ACJC_onDestinationSelected" data-scaytid="748">ACJC_onDestinationSelected</span>(layer, <span data-scayt_word="args" data-scaytid="745">args</span>) { // Check the event is directed towards this instance if ($<span data-scayt_word="hasEventInterest" data-scaytid="708">hasEventInterest</span>(<span data-scayt_word="this.widgets.destinationDialog" data-scaytid="709">this.widgets.destinationDialog</span>, <span data-scayt_word="args" data-scaytid="746">args</span>)) { <span data-scayt_word="var" data-scaytid="710">var</span> <span data-scayt_word="selectedFolder" data-scaytid="749">selectedFolder</span> = <span data-scayt_word="args" data-scaytid="747">args</span>[1]<span data-scayt_word=".selectedFolder" data-scaytid="751">.selectedFolder</span>; if (<span data-scayt_word="selectedFolder" data-scaytid="750">selectedFolder</span> !== null) { <span data-scayt_word="var" data-scaytid="711">var</span> path=<span data-scayt_word="selectedFolder.path" data-scaytid="712">selectedFolder.path</span>; if(<span data-scayt_word="path.charAt" data-scaytid="713">path.charAt</span>(0)=='/'){ path=<span data-scayt_word="path.substring" data-scaytid="714">path.substring</span>(1,<span data-scayt_word="path.lenght" data-scaytid="715">path.lenght</span>); } <span data-scayt_word="Dom.get" data-scaytid="716">Dom.get</span>(<span data-scayt_word="this.id" data-scaytid="717">this.id</span> + "<span data-scayt_word="carpeta" data-scaytid="718">carpeta</span>").value=path; } } },
Una vez hemos terminado de editar el script advseacrh.js tenemos que comprimirlo usando algún compressor de Javascript y de esta forma obtener el advseacrh-min.js que es el que realmente se ejecuta en el cliente.
Por ultimo sólo nos queda modificar la consulta que se envía a “Lucene” para incorporarle los nuevos parámetros. Para ello modificamos el script C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\templates\webscripts\org\alfresco\slingshot\search\search.lib.js de la siguiente forma:
En la línea 718 añadimos
else if (<span data-scayt_word="p.indexOf" data-scaytid="771">p.indexOf</span>("<span data-scayt_word="carpeta_" data-scaytid="772">carpeta_</span>") === 0){ <span data-scayt_word="nombre_carpeta" data-scaytid="773">nombre_carpeta</span> = <span data-scayt_word="propValue" data-scaytid="774">propValue</span>; }
En la línea 759 realizamos el procesamiento de los nuevos parámetros
if(<span data-scayt_word="nombre_carpeta" data-scaytid="780">nombre_carpeta</span>!=""){ /*************<span data-scayt_word="tratamiento" data-scaytid="837">tratamiento</span> del path*********************/ //<span data-scayt_word="comprobamos" data-scaytid="838">comprobamos</span> <span data-scayt_word="si" data-scaytid="790">si</span> <span data-scayt_word="quremos" data-scaytid="839">quremos</span> <span data-scayt_word="buscar" data-scaytid="791">buscar</span> en <span data-scayt_word="subcarpetas" data-scaytid="792">subcarpetas</span> <span data-scayt_word="var" data-scaytid="793">var</span> sub=0; if(<span data-scayt_word="nombre_carpeta.charAt" data-scaytid="802">nombre_carpeta.charAt</span>(<span data-scayt_word="nombre_carpeta.length-1" data-scaytid="804">nombre_carpeta.length-1</span>)=="/"){ sub=1; <span data-scayt_word="nombre_carpeta" data-scaytid="781">nombre_carpeta</span>=<span data-scayt_word="nombre_carpeta.substring" data-scaytid="806">nombre_carpeta.substring</span>(0,<span data-scayt_word="nombre_carpeta.length-1" data-scaytid="805">nombre_carpeta.length-1</span>); } <span data-scayt_word="var" data-scaytid="794">var</span> array=<span data-scayt_word="nombre_carpeta.split" data-scaytid="809">nombre_carpeta.split</span>("/"); <span data-scayt_word="var" data-scaytid="795">var</span> <span data-scayt_word="ncarpetas" data-scaytid="840">ncarpetas</span>=<span data-scayt_word="array.length" data-scaytid="810">array.length</span>; <span data-scayt_word="var" data-scaytid="796">var</span> <span data-scayt_word="path2" data-scaytid="843">path2</span>=""; if(<span data-scayt_word="ncarpetas" data-scaytid="841">ncarpetas</span>==1){ if(<span data-scayt_word="nombre_carpeta" data-scaytid="782">nombre_carpeta</span>=="<span data-scayt_word="Sitios" data-scaytid="850">Sitios</span>"||<span data-scayt_word="nombre_carpeta" data-scaytid="783">nombre_carpeta</span>=="<span data-scayt_word="sitios" data-scaytid="852">sitios</span>") <span data-scayt_word="path2" data-scaytid="844">path2</span>="app:company_home//<span data-scayt_word="st" data-scaytid="811">st</span>:sites"; else if(<span data-scayt_word="nombre_carpeta" data-scaytid="784">nombre_carpeta</span>=="<span data-scayt_word="Espacios" data-scaytid="854">Espacios</span> <span data-scayt_word="personales" data-scaytid="856">personales</span> de <span data-scayt_word="usuario" data-scaytid="813">usuario</span>") <span data-scayt_word="path2" data-scaytid="845">path2</span>="app:company_home//app:user_homes"; else if(<span data-scayt_word="nombre_carpeta" data-scaytid="785">nombre_carpeta</span>=="<span data-scayt_word="Diccionario" data-scaytid="858">Diccionario</span> de <span data-scayt_word="datos" data-scaytid="860">datos</span>") <span data-scayt_word="path2" data-scaytid="846">path2</span>="app:company_home//app:dictionary"; else if(<span data-scayt_word="nombre_carpeta" data-scaytid="786">nombre_carpeta</span>=="<span data-scayt_word="Espacio" data-scaytid="862">Espacio</span> de <span data-scayt_word="invitado" data-scaytid="864">invitado</span>") <span data-scayt_word="path2" data-scaytid="847">path2</span>="app:company_home//app:guest_home"; else { //<span data-scayt_word="quitamos" data-scaytid="815">quitamos</span> los <span data-scayt_word="espacios" data-scaytid="866">espacios</span> y los <span data-scayt_word="sustituimos" data-scaytid="868">sustituimos</span> <span data-scayt_word="por" data-scaytid="817">por</span> <span data-scayt_word="_x0020_" data-scaytid="870">_x0020_</span> <span data-scayt_word="var" data-scaytid="797">var</span> tam=<span data-scayt_word="nombre_carpeta.length" data-scaytid="819">nombre_carpeta.length</span>; for(i=0;i<tam;i++){ if(<span data-scayt_word="nombre_carpeta.charAt" data-scaytid="803">nombre_carpeta.charAt</span>(i)==" "){ <span data-scayt_word="var" data-scaytid="798">var</span> aux=<span data-scayt_word="nombre_carpeta.substring" data-scaytid="807">nombre_carpeta.substring</span>(0,i); aux+="<span data-scayt_word="_x0020_" data-scaytid="871">_x0020_</span>"; aux+=<span data-scayt_word="nombre_carpeta.substring" data-scaytid="808">nombre_carpeta.substring</span>(i+1,tam); <span data-scayt_word="nombre_carpeta" data-scaytid="787">nombre_carpeta</span>=aux; tam=<span data-scayt_word="nombre_carpeta.length" data-scaytid="820">nombre_carpeta.length</span>; } } //<span data-scayt_word="document.write" data-scaytid="821">document.write</span>(<span data-scayt_word="nombre_carpeta" data-scaytid="788">nombre_carpeta</span>); <span data-scayt_word="path2" data-scaytid="848">path2</span>="app:company_home//cm:"+<span data-scayt_word="nombre_carpeta" data-scaytid="789">nombre_carpeta</span>; } path=<span data-scayt_word="path2" data-scaytid="849">path2</span>; } else{ <span data-scayt_word="var" data-scaytid="799">var</span> aux=""; for(i=0;i<<span data-scayt_word="ncarpetas" data-scaytid="842">ncarpetas</span>;i=i+1){ if(array[i]=="<span data-scayt_word="Sitios" data-scaytid="851">Sitios</span>" || array[i]=="<span data-scayt_word="sitios" data-scaytid="853">sitios</span>"){ aux+="/<span data-scayt_word="st" data-scaytid="812">st</span>:sites"; } else if(array[i]=="<span data-scayt_word="Espacios" data-scaytid="855">Espacios</span> <span data-scayt_word="personales" data-scaytid="857">personales</span> de <span data-scayt_word="usuario" data-scaytid="814">usuario</span>"){ aux+="/app:user_homes"; } else if(array[i]=="<span data-scayt_word="Diccionario" data-scaytid="859">Diccionario</span> de <span data-scayt_word="datos" data-scaytid="861">datos</span>"){ aux+="/app:dictionary"; } else if(array[i]=="<span data-scayt_word="Espacio" data-scaytid="863">Espacio</span> de <span data-scayt_word="invitado" data-scaytid="865">invitado</span>"){ aux+="/app:guest_home"; } else{ //<span data-scayt_word="quitamos" data-scaytid="816">quitamos</span> los <span data-scayt_word="espacios" data-scaytid="867">espacios</span> y los <span data-scayt_word="sustituimos" data-scaytid="869">sustituimos</span> <span data-scayt_word="por" data-scaytid="818">por</span> <span data-scayt_word="_x0020_" data-scaytid="872">_x0020_</span> <span data-scayt_word="var" data-scaytid="800">var</span> tam=array[i].length; for(j=0;j<tam;j++){ if(array[i]<span data-scayt_word=".charAt" data-scaytid="874">.charAt</span>(j)==" "){ <span data-scayt_word="var" data-scaytid="801">var</span> <span data-scayt_word="aux2" data-scaytid="875">aux2</span>=array[i]<span data-scayt_word=".substring" data-scaytid="879">.substring</span>(0,j); <span data-scayt_word="aux2" data-scaytid="876">aux2</span>+="<span data-scayt_word="_x0020_" data-scaytid="873">_x0020_</span>"; <span data-scayt_word="aux2" data-scaytid="877">aux2</span>+=array[i]<span data-scayt_word=".substring" data-scaytid="880">.substring</span>(j+1,tam); array[i]=<span data-scayt_word="aux2" data-scaytid="878">aux2</span>; tam=array[i].length; } } aux+="/cm:"+array[i]; } } path="app:company_home"+aux; } if(sub==1){ path+="/"; } }
Si guardamos todos los cambios, reiniciamos el servicio y borramos las caches de nuestro navegador la Búsqueda avanzada nos habrá quedado con este aspecto:.


Comentarios
Version Alfresco ?
por Jean-Joseph THIBAULT - 19/10/2011 - 16:43
Gracias por esta información. Pero la versión de Alfresco que effecuté estos cambios? una comunidad 3.4.x ó 4.0
Versión Alfresco: 3.4
por jesus.gutierrez - 31/10/2011 - 10:37
Hola Jean-Joseph,
La versión sobre la que está implementado es la 3.4 Community. En otras versiones no hemos probado.
De todas formas, como siempre, recomendamos hacer un backup del código antes de realizar cualquier cambio en producción.
Un saludo!
Proyecto
por acurs - 05/01/2012 - 18:52
Hola Jesus, segui el tutorial al pie de la letra, sin embargo cuando reinicio el servidor me tira un error de parseo en el archivo share-form-config.xml, diciendo que no puede ir un caracter '<' en el id. Es decir no puede tener porque al parsearlo me lo invalida, de hecho hasta lo intente validar con el esquema fdk desde eclipse y me tiraba el mismo error.
Por cierto no tienes el codigo fuente de esta modificacion empaquetada??
Muchas gracias por todo,
Saludos
Alberto
Enviar un comentario nuevo