Extendiendo la búsqueda avanzada de Alfresco Share

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

  1. <!-- Search form -->
  2. <form id="search">
  3. <field-visibility>
  4. <show id="cm:name" />
  5. <show id="cm:title" force="true" />
  6. <show id="cm:description" force="true" />
  7. <show id="cm:categories" force="true" />
  8. <show id="cm:<span data-scayt_word="taggable" data-scaytid="383">taggable</span>" force="true" />
  9. <show id="<span data-scayt_word="mimetype" data-scaytid="386">mimetype</span>" />
  10. <show id="cm:modified" />
  11. <show id="cm:modifier" />
  12. </field-visibility>
  13. <appearance>
  14. <field id="cm:categories">
  15. <control>
  16. <<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>>
  17. </control>
  18. </field>
  19. <field id="cm:<span data-scayt_word="taggable" data-scaytid="384">taggable</span>">
  20. <control>
  21. <<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>>
  22. <<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>>
  23. <<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>>
  24. <<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>>
  25. </control>
  26. </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:

  1. <#-- <span data-scayt_word="carpeta" data-scaytid="436">carpeta</span> entry box -->
  2. <div class="<span data-scayt_word="carpeta-box" data-scaytid="440">carpeta-box</span>">
  3. <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>
  4. <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" />
  5. <#-- <span data-scayt_word="subcarpetas" data-scaytid="447">subcarpetas</span> check box -->
  6. <div>
  7. <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>
  8. </div>
  9. <#-- folder button -->
  10. <div class="<span data-scayt_word="yui-u" data-scaytid="452">yui-u</span> align-right">
  11. <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">
  12. <span class="first-child">
  13. <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>
  14. </span>
  15. </span>
  16. </div>
  17. </div>

Y modificamos la hoja de estilos para conservar la misma apariencia, en C:\Alfresco\tomcat\webapps\share\components\search\search.css añadimos:

  1. .search <span data-scayt_word=".carpeta-box" data-scaytid="466">.carpeta-box</span>
  2. {
  3. background-color: #<span data-scayt_word="F5FFF2" data-scaytid="468">F5FFF2</span>;
  4. margin-left: <span data-scayt_word="1.5em" data-scaytid="469">1.5em</span>;
  5. border: <span data-scayt_word="1px" data-scaytid="470">1px</span> solid #<span data-scayt_word="C2C2C2" data-scaytid="471">C2C2C2</span>;
  6. padding: <span data-scayt_word="1em" data-scaytid="472">1em</span>;
  7. width: <span data-scayt_word="800px" data-scaytid="473">800px</span>;
  8. }
  9.  
  10. .search <span data-scayt_word=".carpeta-box" data-scaytid="467">.carpeta-box</span> .terms
  11. {
  12. width: <span data-scayt_word="60em" data-scaytid="474">60em</span>;
  13. }

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

  1. <@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>
  2. <@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

  1. /**
  2. * Alfresco Slingshot aliases
  3. */
  4. <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>,
  5. $<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

  1. // search <span data-scayt_word="YUI" data-scaytid="589">YUI</span> button and menus
  2. <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>);
  3. <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>);
  4. <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í

  1. /**
  2. * Event handler that gets fired when user clicks the Search button.
  3. *
  4. * @method <span data-scayt_word="onSearchClick" data-scaytid="600">onSearchClick</span>
  5. * <span data-scayt_word="@param" data-scaytid="631">@param</span> e {object} <span data-scayt_word="DomEvent" data-scaytid="633">DomEvent</span>
  6. * <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
  7. */
  8. <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>)
  9. {
  10. // retrieve form data structure directly from the runtime
  11. <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>();
  12.  
  13. // add DD type to form data structure
  14. <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>;
  15.  
  16.  
  17. <span data-scayt_word="var" data-scaytid="603">var</span> valor="<span data-scayt_word="inicial" data-scaytid="640">inicial</span>";
  18.  
  19. //<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>
  20. 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;
  21.  
  22. //<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>
  23.  
  24. <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;
  25.  
  26. if(check==true){
  27.  
  28. valor+="/";
  29. }
  30.  
  31.  
  32.  
  33. // build and execute <span data-scayt_word="url" data-scaytid="644">url</span> for search page
  34. <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>);
  35.  
  36. //le <span data-scayt_word="quitamos" data-scaytid="648">quitamos</span> la } del final
  37. <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>);
  38.  
  39. //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 }
  40. <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+"\"}";
  41.  
  42.  
  43. <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}",
  44. {
  45. 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> + "/") : ""),
  46. 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),
  47. query: <span data-scayt_word="encodeURIComponent" data-scaytid="657">encodeURIComponent</span>(<span data-scayt_word="cadena2" data-scaytid="652">cadena2</span>)
  48. });
  49.  
  50. <span data-scayt_word="window.location.href" data-scaytid="630">window.location.href</span> = <span data-scayt_word="url" data-scaytid="646">url</span>;
  51. },

Creamos la función que se debe ejecutar cuando se produzca el evento del botón “Seleccionar carpeta” , tenemos que añadir

  1. /**
  2. * Event handler that gets fired when user clicks the Folder button.
  3. *
  4. * @method <span data-scayt_word="onFolderClick" data-scaytid="690">onFolderClick</span>
  5. * <span data-scayt_word="@param" data-scaytid="672">@param</span> e {object} <span data-scayt_word="DomEvent" data-scaytid="674">DomEvent</span>
  6. * <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
  7. */
  8. <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>)
  9. {
  10.  
  11. if (!<span data-scayt_word="this.widgets.destinationDialog" data-scaytid="678">this.widgets.destinationDialog</span>)
  12. {
  13. <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>");
  14. <span data-scayt_word="this.widgets.destinationDialog.setOptions" data-scaytid="682">this.widgets.destinationDialog.setOptions</span>(
  15. {
  16. 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>")
  17. });
  18.  
  19. }
  20.  
  21.  
  22.  
  23. <span data-scayt_word="var" data-scaytid="687">var</span> <span data-scayt_word="pathNodeRef" data-scaytid="695">pathNodeRef</span> ;
  24. <span data-scayt_word="this.widgets.destinationDialog.setOptions" data-scaytid="683">this.widgets.destinationDialog.setOptions</span>(
  25. {
  26. <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
  27. });
  28.  
  29. <span data-scayt_word="this.widgets.destinationDialog.showDialog" data-scaytid="689">this.widgets.destinationDialog.showDialog</span>();
  30.  
  31. },

Y por último recoger el directorio seleccionado por el usuario

  1. /**
  2. * Folder selected in destination dialog
  3. *
  4. * @method <span data-scayt_word="onDestinationSelected" data-scaytid="742">onDestinationSelected</span>
  5. * <span data-scayt_word="@param" data-scaytid="706">@param</span> layer
  6. * {object} Event fired
  7. * <span data-scayt_word="@param" data-scaytid="707">@param</span> <span data-scayt_word="args" data-scaytid="744">args</span>
  8. * {array} Event parameters (depends on event type)
  9. */
  10. <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>)
  11. {
  12. // Check the event is directed towards this instance
  13. 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>))
  14. {
  15. <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>;
  16. if (<span data-scayt_word="selectedFolder" data-scaytid="750">selectedFolder</span> !== null)
  17. {
  18. <span data-scayt_word="var" data-scaytid="711">var</span> path=<span data-scayt_word="selectedFolder.path" data-scaytid="712">selectedFolder.path</span>;
  19.  
  20. if(<span data-scayt_word="path.charAt" data-scaytid="713">path.charAt</span>(0)=='/'){
  21.  
  22. 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>);
  23. }
  24. <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;
  25. }
  26. }
  27. },

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

  1. 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){
  2. <span data-scayt_word="nombre_carpeta" data-scaytid="773">nombre_carpeta</span> = <span data-scayt_word="propValue" data-scaytid="774">propValue</span>;
  3.  
  4. }

 

En la línea 759 realizamos el procesamiento de los nuevos parámetros

 

  1. if(<span data-scayt_word="nombre_carpeta" data-scaytid="780">nombre_carpeta</span>!=""){
  2. /*************<span data-scayt_word="tratamiento" data-scaytid="837">tratamiento</span> del path*********************/
  3.  
  4. //<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>
  5. <span data-scayt_word="var" data-scaytid="793">var</span> sub=0;
  6. 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>)=="/"){
  7. sub=1;
  8. <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>);
  9. }
  10.  
  11. <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>("/");
  12. <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>;
  13.  
  14. <span data-scayt_word="var" data-scaytid="796">var</span> <span data-scayt_word="path2" data-scaytid="843">path2</span>="";
  15. if(<span data-scayt_word="ncarpetas" data-scaytid="841">ncarpetas</span>==1){
  16. 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>")
  17. <span data-scayt_word="path2" data-scaytid="844">path2</span>="app:company_home//<span data-scayt_word="st" data-scaytid="811">st</span>:sites";
  18. 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>")
  19. <span data-scayt_word="path2" data-scaytid="845">path2</span>="app:company_home//app:user_homes";
  20. 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>")
  21. <span data-scayt_word="path2" data-scaytid="846">path2</span>="app:company_home//app:dictionary";
  22. 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>")
  23. <span data-scayt_word="path2" data-scaytid="847">path2</span>="app:company_home//app:guest_home";
  24. else {
  25. //<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>
  26.  
  27. <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>;
  28.  
  29. for(i=0;i<tam;i++){
  30.  
  31. if(<span data-scayt_word="nombre_carpeta.charAt" data-scaytid="803">nombre_carpeta.charAt</span>(i)==" "){
  32.  
  33. <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);
  34. aux+="<span data-scayt_word="_x0020_" data-scaytid="871">_x0020_</span>";
  35. aux+=<span data-scayt_word="nombre_carpeta.substring" data-scaytid="808">nombre_carpeta.substring</span>(i+1,tam);
  36. <span data-scayt_word="nombre_carpeta" data-scaytid="787">nombre_carpeta</span>=aux;
  37. tam=<span data-scayt_word="nombre_carpeta.length" data-scaytid="820">nombre_carpeta.length</span>;
  38. }
  39. }
  40. //<span data-scayt_word="document.write" data-scaytid="821">document.write</span>(<span data-scayt_word="nombre_carpeta" data-scaytid="788">nombre_carpeta</span>);
  41.  
  42. <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>;
  43. }
  44. path=<span data-scayt_word="path2" data-scaytid="849">path2</span>;
  45.  
  46. }
  47.  
  48. else{
  49. <span data-scayt_word="var" data-scaytid="799">var</span> aux="";
  50. for(i=0;i<<span data-scayt_word="ncarpetas" data-scaytid="842">ncarpetas</span>;i=i+1){
  51.  
  52. 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>"){
  53.  
  54. aux+="/<span data-scayt_word="st" data-scaytid="812">st</span>:sites";
  55. }
  56. 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>"){
  57. aux+="/app:user_homes";
  58. }
  59. 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>"){
  60. aux+="/app:dictionary";
  61.  
  62. }
  63. 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>"){
  64. aux+="/app:guest_home";
  65.  
  66. }
  67. else{
  68.  
  69. //<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>
  70.  
  71. <span data-scayt_word="var" data-scaytid="800">var</span> tam=array[i].length;
  72.  
  73. for(j=0;j<tam;j++){
  74.  
  75. if(array[i]<span data-scayt_word=".charAt" data-scaytid="874">.charAt</span>(j)==" "){
  76.  
  77. <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);
  78. <span data-scayt_word="aux2" data-scaytid="876">aux2</span>+="<span data-scayt_word="_x0020_" data-scaytid="873">_x0020_</span>";
  79. <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);
  80. array[i]=<span data-scayt_word="aux2" data-scaytid="878">aux2</span>;
  81. tam=array[i].length;
  82. }
  83. }
  84. aux+="/cm:"+array[i];
  85. }
  86.  
  87.  
  88. }
  89.  
  90.  
  91. path="app:company_home"+aux;
  92. }
  93.  
  94. if(sub==1){
  95. path+="/";
  96. }
  97.  
  98. }

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:.