Thursday, October 01, 2009

Customizar Pesquisa

Autor:André Lage
Publicação:__________
Download:Documento
(EN)TranslateLink

Parametrizar e Alterar Controlo de Pesquisa MOSS 2007

Hoje vou falar que tem tanto de útil como de dor de cabeça.

O control de Sharepoint para pesquisa é bastante util para realizar as filtragens das nossas pesquisas

Cenário:

O control de pesquisa é bastante util mas difícil de trabalhar obrigando alguma imaginação e funcionalidades de Features com alteração de CSS para resolver um conjunto de problemas associado a Layout e opções do Controlo.

Por isso fazo um pequeno artigo de como alterar o controlo, que não e possivel através do OOB "Out of the Box" de Sharepoint, ora digam lá quem é amigo. 

J

 

Adicionar a opção de Pesquisa no Site de SharePoint

Para adicionar o nosso controlo de Pesquisa no site de SharePoint, podemos abrir a MasterPage Principal e adicionar a seguinte Tag, normalmente dentro da ContentPlaceHolder "PlaceHolderSearchArea".


<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
    <SharePoint:DelegateControl runat="server" ControlId="SmallSearchInputBox" />
</asp:ContentPlaceHolder>


Definir "This Site" como Scope por Defeito

Quanto temos grande quantidade de Scopes a pesquisar a opção "This Site" não se consegue definir por defeito na pesquisa. 
Para realizar a gestão do controlo de Search é necessário aceder a Feature OSearchEnhacedFeature.
A feature tem um conjunto de parâmetros que podemos parametrizar.
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\OSearchEnhancedFeature
Ficheiro a Parametrizar:
SearchArea.xml


Propiedade a Alterar para definir a opção de pesquisa "This Site" por defeito
 <Property Name="DropDownMode">ShowDD_DefaultContextual</Property>

XML Final:

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="
http://schemas.microsoft.com/sharepoint/">
    <Control 
        Id="SmallSearchInputBox" 
        Sequence="15"
        ControlClass="Microsoft.SharePoint.Portal.WebControls.SearchBoxEx" ControlAssembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
 <Property Name="GoImageUrl">/_layouts/images/gosearch.gif</Property>
 <Property Name="GoImageUrlRTL">/_layouts/images/goRTL.gif</Property>
 <Property Name="GoImageActiveUrl">/_layouts/images/gosearch.gif</Property>
 <Property Name="GoImageActiveUrlRTL">/_layouts/images/goRTL.gif</Property>
        <Property Name="UseSiteDefaults">true</Property>
 <Property Name="FrameType">None</Property>
        <Property Name="ShowAdvancedSearch">true</Property>
 
<Property Name="DropDownMode">ShowDD_DefaultContextual</Property>
    </Control>    
</Elements>



Definir Opção Pesquisa avançada


Para adicionar a opção "Pesquisa Avançada" é necessário adicionar a seguinte opção.

<Property Name="ShowAdvancedSearch">true</Property>



Alterar imagem de pesquisa 



A tag GoImageUrl tem a função onde se encontra imagem por defeito.
 <Property Name="GoImageUrl">/_layouts/images/gosearch.gif</Property>

Esconder Lista de Scopes a Pesquisa

Para esconder a Lista de Scope de pesquisa podemos utilizar o nosso *.Css personalizado e adicionar a seguinte tag:
select.ms-searchbox { display:none; }

Ou podemos alterar a feature "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\OSearchEnhancedFeature
Tag para esconder Lista de Scopes de pesquisa. 
<Property Name="DropDownMode">HideScopeDD</Property>


Documento de apoio:

Remover a opção "This Site" Lista a Pesquisar



Tag para remover a opção "This Site" da Lista da Scopes a pesquisar.
<Property Name="DropDownMode">ShowDD_NoContextual</Property>

Tambem podemos utilizar Javascript para remover "This Site" da Lista de Scopes a pesquisar.

Podemos definir na Masterpage de Sharepoint, um pedaço de codigo Javascript para esconder a opção "This Site".

Na tag Body adicionamos propiedade "onload" a regra em javascript para esconder na Lista das Scopes a pesquisa a opção "This Site" utilizando o ControlID associado ao Control de Pesquisa,
exemplo:
"ctl00_PlaceHolderSearchArea_ctl01_SBScopesDDL"

<script type="text/javascript">
        function removeOption(checkChar) {
            var x = document.getElementById("ctl00_PlaceHolderSearchArea_ctl01_SBScopesDDL");
            for (i = 0 ; i < x.length; i++) { if (x.options[i].text.indexOf(checkChar) != -1) { x.remove(i); i--; } } }
</script>


<BODY scroll="yes" onload="javascript:if (typeof(_spBodyOnLoadWrapper) != 'undefined') { _spBodyOnLoadWrapper(); removeOption(':'); }">



Importante: Sempre que alterar-mos a Feature  "OSearchEnhancedFeature" de pesquisa é necessário realizar IISRESET para actualizar o Control.


Feito, alteramos a parametrizamos o control para nosso melhor controlo.

Espero que tenham gostado, um grande abraço. J


Post a Comment