none
Menu do portal Sharepoint em forma de Treeview RRS feed

  • Pergunta

  • Olá Pessoas

    Sou novo no desenvolvimento com o sharepoint e estou com uma dúvida no sharepoint
    talvez você possa me ajudar

    estou querendo criar um menu no formato de tree com as páginas do portal sharepoint

    eu queria utilizar como icone da treeview o logotipo de cada página, automaticamente

    sabe se isso é possivel

    desde já agradeço a atenção

    sexta-feira, 25 de janeiro de 2008 12:30

Respostas

  •  

    Bruno,

     

    Sobre seu comentário, de que "a resposta dita foi pelo MOSS", infelizmente preciso dizer que você está enganado, o único item que aplica-se exclusivamente ao MOSS é o namespace Microsoft.SharePoint.Publishing.Navigation, que foi mencionado rapidamente e destacado como tal. O restante tudo se aplica tanto ao WSS, quanto ao MOSS.

     

    Sobre os web-services, desculpe-me, mas você está retirando minha resposta de contexto, web-services são ótimos. Temos aplicações na dot-insight que processam mais de 40 milhões de transações por dia, usando web-services.

     

    Porém é bom destacar, que são ótimos para a finalidade para qual foram criados. Perfeitos para endereçar o tipo de problema de negócios para o qual se propõem. Não é o caso aqui.

     

    Uma comparação de desempenho e utilização de recursos entre chamadas a uma class library ou a um web-service, com o mesmo fim e partindo do principio de que ambos foram igualmente bem construídos e mais do que isto, numa chamada local (aplicação cliente e servidora no mesmo servidor - ex. este menu de um site sharepoint), sem qualquer dúvida, o web-service deixa a desejar em comparação com a class library.

    Se você puder escolher (como é o caso), escolha a class library.

     

    Inúmeras aplicações da própria Microsoft, por exemplo, que possuem uma camada de serviços, exposta através de uma API de Web-Services, incluindo o WSS, MOSS, Microsoft Dynamics CRM, etc. , utilizam internamente as chamadas às suas class libraries nativas em lugar dos seus próprios web-services.

     

    É uma opção de arquitetura de software, que tem impacto direto e imediato.

     

    Existe impacto, isto é um fato. A avaliação o tamanho deste impacto em tempo e em escalabilidade é que pode variar em função do hardware, cenário de utilização, forma de implementação, etc.

    Se por outro lado, fosse uma aplicação em outro servidor, necessitando acessar recursos do servidor sharepoint, ou mesmo uma extensão criado no mesmo servidor, mas numa linguagem que não permitisse o uso das class libraries em .net, com toda certeza, recomendaria os web-services.

    Quanto a questão do suporte às chamadas diretas ao banco, sejam feitas diretamente no seu código, ou acrescentando uma camada extra para fazê-lo, são políticas públicas da Microsoft:
    http://support.microsoft.com/kb/841057/en-us

     

    Sou proprietário de uma empresa que é Microsoft Gold Certified Partner, em diversas áreas de competência, incluindo Information Worker, com especialização em Portals and Enterprise Content Management, e posso te informar sobre as práticas de suporte adotadas pela Microsoft em relação ao SharePoint, com maior nível de profundidade do que um operador do atendimento a clientes da Microsoft. Anyway, siga o link e veja o posicionamento oficial da empresa.

     

    Especificamente sobre acrescentar uma camada extra e a degradação de desempenho que mencionei, não é algo vinculado à utilização de web-service e sim sobre acrescentarmos mais uma camada de código desnecessariamente em nosso software. Sem sombra de dúvida, se esta camada não agregar valor significativo o único resultado que temos é degradação de desempenho, mais recursos consumidos e mais tempo gasto para codificação e futuras manutenções.

    Se sua opção for acrescentar esta camada como um web-service, para resolver chamadas locais (que poderiam ser resolvidas na pilha do próprio processo ao invés de comunicação remota entre processos, cujo custo naturalmente é muito mais alto), então o cenário ficaria pior ainda.

     

    A melhor solução varia sempre de acordo com o cenário apresentado.

    Neste cenário, definiivamente, web-service não é a melhor solução.

     

    Espero ter esclarecido e que minha resposta venha acrescentar seu conhecimento sobre o assunto, servindo de ajuda e que não seja motivo de uma discussão filosófica, blz?

    Estou tentando ajudar e não encontrar defeitos nas suas respostas, mas sim orientar você e os demais quando algo não estiver coerente, passando um pouco de minha experiência.

    São toques legais que estou dando, normalmente recebo muito bem para dar consultoria sobre arquitetura, procure aproveitar e principalmente: permita que outros aproveitem, caso você prefira não se beneficiar. ;-)


     

    Um abraço,

     

     

    Sérgio Pinheiro, Lead Software Architect
    MCSD Charter Member (since 1995), MCSE+I, MCDBA, MCP+SB, MCT
    MCTS: Microsoft Office SharePoint Server 2007 Charter Member (since 2006)
    MCTS: Microsoft SharePoint Portal Server 2003
    MCTS: SQL Server 2005
    MCTS: Windows Mobile 5.0 Application Development
    Microsoft Certified Business Management Solutions Professional
    Microsoft Certified Business Management Solutions Specialist: Microsoft Dynamics CRM


    dot-insight technologies

    São Paulo: (11) 3522-4966 | RJ: (21) 4063-9970 | Brasília: (61) 4063-9686 | BH: (31) 4063-8283

    Microsoft Gold Certified Partner: Information Worker / Portals and Enterprise Content Management
    SharePoint - http://www.dot-insight.net/microsoft/sharepoint

    Especialistas Microsoft - http://www.dot-insight.net/microsoft/especialistas

     

    Visite:
    Blog SharePoint - http://sharepoint-brasil.spaces.live.com

    segunda-feira, 18 de fevereiro de 2008 17:23

Todas as Respostas

  •  

    Tudo bem Gholias!!

    Assim vocë tem algumas formas de fazer isto.

     

    Alias acho que respondi para aguem por email !? pois teve alguem que me questionow exatamente isto.

    Bem deixa ver. Bha nao achei.. hehehe mas

     

    1 - Existe um banco de dados chamado WSContent + <guid> se tiver

    Tem uma tabela chamada  Sites no qual tem algumas informações como.

    --> Nome do Site

    --> URL do site

    --> LOGO etç

    E também se quiser buscar os sites e outros links em

     

    SharePoint_AdminConten + <guid>

    Tem uma tabela chamada  SiteMap.

     

    Vc pode conectar neste site e fazer um procedimento em asp.net para buscar estas informações e popular esta treeview.

     

    Em melhores práticas não é aconselhavel acessar diretamente o BD na sua aplicação sharepoint, sendo que muitos fazem isto.

     

    Existe WebServices padrão do Sharepoint que disponibilizam estas informações para vc.

    Caso nao exista.. vc pode tb criar um WebService espéfico seguindo as melhores práticas e depois usa-lo normalmente.

     

    WSS Web Services:

    Administration Service  w

    Alerts Service  http://<server-url>/_vti_bin/alerts.asmx

    Document Workspace Service  http://<server-url>/_vti_bin/dws.asmx

    Forms Service  http://<server-url>/_vti_bin/forms.asmx

    Imaging Service  http://<server-url>/_vti_bin/imaging.asmx

    List Data Retrieval Service  http://<server-url>/_vti_bin/dspsts.asmx

    Lists Service  http://<server-url>/_vti_bin/lists.asmx

    Meetings Service  http://<server-url>/_vti_bin/meetings.asmx

    Permissions Service  http://<server-url>/_vti_bin/permissions.asmx

    Site Data Service  http://<server-url>/_vti_bin/sitedata.asmx

    Site Service  http://<server-url>/_vti_bin/sites.asmx

    Users and Groups Service  http://<server-url>/_vti_bin/usergroup.asmx

    Versions Service  http://<server-url>/_vti_bin/versions.asmx

    Views Service  http://<server-url>/_vti_bin/views.asmx

    Web Part Pages Service  http://<server-url>/_vti_bin/webpartpages.asmx

    Webs Service  http://<server-url>/_vti_bin/webs.asmx

     

     

    SPS 2003 Web Services:

    Area Service  http://<server-url>/_vti_bin/areaservice.asmx

    Query Service  http://<server-url>/_vti_bin/search.asmx

    User Profile Service  http://<server-url>/_vti_bin/userprofileservice.asmx

    SPS Crawl Service  http://<server-url>/_vti_bin/spscrawl.asmx

    Outlook Adapter Service  http://<server-url>/_vti_bin/outlookadapter.asmxd

     

    Exemplo no webs.asmx

     

    tem o método GetAllSubWebCollection talvez pode ajudar.. beleza?

     

    Espero ter ajudado.

    Beleuza???

     

     

    quarta-feira, 13 de fevereiro de 2008 19:40
  • Olá Gholias,

     

    Bom, o Bruno tem razão na postagem dele porém , como ele mesmo disse, não é recomendável usar o banco de dados e eu mesmo já senti na pele este problema quando migrei um portal do SharePoint 2003 para o 2007.

     

    Complementando a resposta do Bruno, tenho uma opção que acredito ser mais simples utilizando o namespace Microsoft.SharePoint.Navigation da API do SharePoint.

     

    Você pode desenvolver uma WebPart, WebControl ou até mesmo UserControl para desenvolver o TreeView fazendo uma recursividade em cada nó filho da SiteMapNodeCollection retornado pelo método 

    PortalSiteMapProvider.GetChildNodes(nóInicial).

     

    Fiz dessa forma e achei bem simples... :-)

     

     

     

     GUSTAVO NALIN |MCAD|MCSD|MCTS|

     

     

     

     

    sábado, 16 de fevereiro de 2008 02:19
  • Como o Gustavo bem mencionou, o Bruno tem razão ao dizer que não é uma boa prática acessar diretamente a base de dados do SharePoint. Mais do que isto, é uma prática não suportada.

    Isto quer dizer que qualquer tipo de problema neste ambiente, incluindo (mas não se limitando a) um futuro upgrade, não tem suporte técnico da Microsoft, mesmo que seja uma grande empresa com contrato de suporte corporativo com a Microsoft.

     

    Porém, infelizmente, apesar da boa intenção do Bruno em ajudá-lo, de nada adiantaria criar um web-service seu, para fazer a mesma coisa e posteriormente chamá-lo, conforme a orientação copiada do post:

    "Caso nao exista.. vc pode tb criar um WebService espéfico seguindo as melhores práticas e depois usa-lo normalmente."

     

    Isto não está correto: Em algum ponto você continuaria a realizar a mesma prática não recomendada e não suportada. Ou seja, só está adicionando mais código, consumindo mais recursos, piorando o desempenho e por fim... caindo na mesma.

     

    Tem um outro fator importante: partindo do principio que seu menu roda junto com o SharePoint, utilizar um web-service para recuperar o seu menu é um caminho inapropriado para solução deste problema. Para tanto, a melhor solução é programar em cima da class library em .net do SharePoint.

     

    Ao não utilizar web-service neste caso, você ganha muito em desempenho, alocação de memória e outros recursos do seu servidor, incluindo handles de rede abertos desnecessariamente.

     

    Acerta novamente o nosso amigo Gustavo, ao te recomendar o namespace Microsoft.SharePoint.Navigation, pois é o lugar exato para você ir para obter a maioria dos elementos relacionados à navegação, incluindo todos os menus e breadcrumbs.

    http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.navigation.aspx

     

    O que não encontrar neste namespace, deve encontrar no arquivo onet.xml ou no caso do MOSS, no namespace Microsoft.SharePoint.Publishing.Navigation.

    http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.publishing.navigation.aspx

     

    A dica do Gustavo, sobre o objeto e a chamada recursiva sobre o PortalSiteMapProvider, é igualmente pertinente.

     

    Porém, como você é novo em desenvolvimento sobre o SharePoint, talvez precise de algo mais "palpável", por isso resolvi te auxiliar com estes prós e contras das respostas anteriores e uma lista de links e artigos que vão te ajudar bastante.

     

    O caminho é editar as suas master-pages e abusar dos controles: SiteMapPath, Menu and TreeView do ASP.NET

     

    Como um passo a passo e um pouco de código são sempre bons para um desenvolvedor ajudar o outro ;-) aqui vão uns links bem legais (o segundo é baseado no primeiro, num exemplo de navegação parecida com a do outlook)...

    http://www.sharepoint-tips.com/2006/07/modifying-wss3-tree-navigation-control.html

    http://www.codeplex.com/sharepointtemplates/Release/ProjectReleases.aspx?ReleaseId=5548

     

    Artigos retirados do MSDN que podem te ajudar...

     

    Custom Navigation and New User Interface Elements

    http://msdn2.microsoft.com/en-us/library/ms475096.aspx

     

    How to: Customize Navigation

    http://msdn2.microsoft.com/en-us/library/ms558975.aspx

     

    How to: Customize the Display of Quick Launch

    Customizing Quick Launch and the Top Link Bar Through the User Interface
    How to: Share the Top Link Bar Between Sites
    Adding Links through the Object Model
    Using a Custom Data Source for Navigation

     

    Se precisar de dicas de como utilizar as class libraries do SharePoint, por favor, crie um novo tópico com a dúvida (ou as dúvidas) específicas sobre o que deseja.

     

    Bom proveito e até a próxima...

     

    Sérgio Pinheiro, Lead Software Architect
    MCSD Charter Member (since 1995), MCSE+I, MCDBA, MCP+SB, MCT
    MCTS: Microsoft Office SharePoint Server 2007 Charter Member (since 2006)
    MCTS: Microsoft SharePoint Portal Server 2003
    MCTS: SQL Server 2005
    MCTS: Windows Mobile 5.0 Application Development
    Microsoft Certified Business Management Solutions Professional
    Microsoft Certified Business Management Solutions Specialist: Microsoft Dynamics CRM


    dot-insight technologies

    São Paulo: (11) 3522-4966 | RJ: (21) 4063-9970 | Brasília: (61) 4063-9686 | BH: (31) 4063-8283

    Microsoft Gold Certified Partner: Information Worker / Portals and Enterprise Content Management
    SharePoint - http://www.dot-insight.net/microsoft/sharepoint

    Especialistas Microsoft - http://www.dot-insight.net/microsoft/especialistas

     

    Visite:
    Blog SharePoint - http://sharepoint-brasil.spaces.live.com

    sábado, 16 de fevereiro de 2008 15:01
  •  

    Complementando a resposta doSérgio.

     

    A resposta dita foi pelo MOOS (instalado), portanto se quiseres fazer uma customização referente ao WSS(se tiver só WS instalado) vc pode adotar tb outra técnica para seu Web site Criado que é configurar atravez do WebTemp.xml o menu.

     

    Veja neste link.

    http://msdn2.microsoft.com/en-us/library/ms447717.aspx

     

    No qual a configuração se ve neste template..

    <Templates 
      xmlnsSurprisews="Microsoft SharePoint">
      <Template 
        Name="STS" 
        ID="1">
        <Configuration 
          ID="0" 
          Title="Team Site" 
          Hidden="FALSE" 
          ImageUrl="/_layouts/images/stsprev.png" 
          Description="A site for teams to quickly organize, author, and share information. It provides a document library, and lists for managing announcements, calendar items, tasks, and discussions." 
          DisplayCategory="Collaboration" />
        ...
        <Configuration 
          ID="2" 
          Title="Document Workspace" 
          Hidden="FALSE" 
          ImageUrl="/_layouts/images/dwsprev.png" 
          Description="A site for colleagues to work together on a document. It provides a document library for storing the primary document and supporting files, a tasks list for assigning to-do items, and a links list for resources related to the document." 
          DisplayCategory="Collaboration" />
      </Template>
      <Template 
        Name="MPS" 
        ID="2">
        <Configuration 
          ID="0" 
          Title="Basic Meeting Workspace" 
          Hidden="FALSE" 
          ImageUrl="/_layouts/images/mwsprev.png" 
          Description="All the basics to plan, organize and track your 
             meeting. This Meeting Workspace contains the following lists: 
             Objectives, Attendees, Agenda, and Document Library." 
          DisplayCategory="Meetings" />
        ...
      </Template>
    </Templates>
    
    Passo a Passo - http://msdn2.microsoft.com/en-us/library/ms454677.aspx
    Detalhe, estas configurações eles não são automaticas caso criar um novo link, terá que modificar, posteriormente. Nestes links e tópicos como este tb Using a Custom Data Source for Navigation.
    Sobre a dica do Gustavo, é bem boa, pois caso vc implemente via WebPart vc poderá colocar tb restrições sobre visualização de informações atraves da propria arquitetura de segurança do Sharepoint.
    Sobre a afirmativa de cair ou prejudicar performance em usar WebService já pré-estabelecidos pelo sharepoint, ou criar outros, creio teria que analisar a mesma afirmativa. Pois já trabalhamos com este tipo de implementação recomendada pela suporte da microsoft inclusive em outras situações e não tivemos problemas.
    Por isto, quando for implementar algo nesta linha então recomendo que entre em contato com a Microsoft se idendificando juntamente com a sua empresa, para verificar realmente sobre isto.
    Digo isto pq que trabalhos com integrações usando Biztalk, BI e Sharepoint numa aplicação gigante no qual o volume é imenso de dados e está distribuida em 3 paises, com vários FARMs e etç e está tudo tranquilo.
    Novamente, digo, cada caso ou cenário deve ser analisado, por isto pode se realmente por causa até da sua infraestrutura o causador desta problema de "performance".
    Por isto quando tiver este tipo de problema, poste no Technet no qual lá é direcionado para perguntas mais a nível de desenvolvimento e também pode ser que tenha mais informações detalhadas lá.
    http://forums.microsoft.com/Technet-BR/default.aspx?ForumGroupID=196&SiteID=29
    t+ 
    segunda-feira, 18 de fevereiro de 2008 15:12
  •  

    Bruno,

     

    Sobre seu comentário, de que "a resposta dita foi pelo MOSS", infelizmente preciso dizer que você está enganado, o único item que aplica-se exclusivamente ao MOSS é o namespace Microsoft.SharePoint.Publishing.Navigation, que foi mencionado rapidamente e destacado como tal. O restante tudo se aplica tanto ao WSS, quanto ao MOSS.

     

    Sobre os web-services, desculpe-me, mas você está retirando minha resposta de contexto, web-services são ótimos. Temos aplicações na dot-insight que processam mais de 40 milhões de transações por dia, usando web-services.

     

    Porém é bom destacar, que são ótimos para a finalidade para qual foram criados. Perfeitos para endereçar o tipo de problema de negócios para o qual se propõem. Não é o caso aqui.

     

    Uma comparação de desempenho e utilização de recursos entre chamadas a uma class library ou a um web-service, com o mesmo fim e partindo do principio de que ambos foram igualmente bem construídos e mais do que isto, numa chamada local (aplicação cliente e servidora no mesmo servidor - ex. este menu de um site sharepoint), sem qualquer dúvida, o web-service deixa a desejar em comparação com a class library.

    Se você puder escolher (como é o caso), escolha a class library.

     

    Inúmeras aplicações da própria Microsoft, por exemplo, que possuem uma camada de serviços, exposta através de uma API de Web-Services, incluindo o WSS, MOSS, Microsoft Dynamics CRM, etc. , utilizam internamente as chamadas às suas class libraries nativas em lugar dos seus próprios web-services.

     

    É uma opção de arquitetura de software, que tem impacto direto e imediato.

     

    Existe impacto, isto é um fato. A avaliação o tamanho deste impacto em tempo e em escalabilidade é que pode variar em função do hardware, cenário de utilização, forma de implementação, etc.

    Se por outro lado, fosse uma aplicação em outro servidor, necessitando acessar recursos do servidor sharepoint, ou mesmo uma extensão criado no mesmo servidor, mas numa linguagem que não permitisse o uso das class libraries em .net, com toda certeza, recomendaria os web-services.

    Quanto a questão do suporte às chamadas diretas ao banco, sejam feitas diretamente no seu código, ou acrescentando uma camada extra para fazê-lo, são políticas públicas da Microsoft:
    http://support.microsoft.com/kb/841057/en-us

     

    Sou proprietário de uma empresa que é Microsoft Gold Certified Partner, em diversas áreas de competência, incluindo Information Worker, com especialização em Portals and Enterprise Content Management, e posso te informar sobre as práticas de suporte adotadas pela Microsoft em relação ao SharePoint, com maior nível de profundidade do que um operador do atendimento a clientes da Microsoft. Anyway, siga o link e veja o posicionamento oficial da empresa.

     

    Especificamente sobre acrescentar uma camada extra e a degradação de desempenho que mencionei, não é algo vinculado à utilização de web-service e sim sobre acrescentarmos mais uma camada de código desnecessariamente em nosso software. Sem sombra de dúvida, se esta camada não agregar valor significativo o único resultado que temos é degradação de desempenho, mais recursos consumidos e mais tempo gasto para codificação e futuras manutenções.

    Se sua opção for acrescentar esta camada como um web-service, para resolver chamadas locais (que poderiam ser resolvidas na pilha do próprio processo ao invés de comunicação remota entre processos, cujo custo naturalmente é muito mais alto), então o cenário ficaria pior ainda.

     

    A melhor solução varia sempre de acordo com o cenário apresentado.

    Neste cenário, definiivamente, web-service não é a melhor solução.

     

    Espero ter esclarecido e que minha resposta venha acrescentar seu conhecimento sobre o assunto, servindo de ajuda e que não seja motivo de uma discussão filosófica, blz?

    Estou tentando ajudar e não encontrar defeitos nas suas respostas, mas sim orientar você e os demais quando algo não estiver coerente, passando um pouco de minha experiência.

    São toques legais que estou dando, normalmente recebo muito bem para dar consultoria sobre arquitetura, procure aproveitar e principalmente: permita que outros aproveitem, caso você prefira não se beneficiar. ;-)


     

    Um abraço,

     

     

    Sérgio Pinheiro, Lead Software Architect
    MCSD Charter Member (since 1995), MCSE+I, MCDBA, MCP+SB, MCT
    MCTS: Microsoft Office SharePoint Server 2007 Charter Member (since 2006)
    MCTS: Microsoft SharePoint Portal Server 2003
    MCTS: SQL Server 2005
    MCTS: Windows Mobile 5.0 Application Development
    Microsoft Certified Business Management Solutions Professional
    Microsoft Certified Business Management Solutions Specialist: Microsoft Dynamics CRM


    dot-insight technologies

    São Paulo: (11) 3522-4966 | RJ: (21) 4063-9970 | Brasília: (61) 4063-9686 | BH: (31) 4063-8283

    Microsoft Gold Certified Partner: Information Worker / Portals and Enterprise Content Management
    SharePoint - http://www.dot-insight.net/microsoft/sharepoint

    Especialistas Microsoft - http://www.dot-insight.net/microsoft/especialistas

     

    Visite:
    Blog SharePoint - http://sharepoint-brasil.spaces.live.com

    segunda-feira, 18 de fevereiro de 2008 17:23
  •  

    Concerteza!

    Nenhuma opsição foi feita Sérgio, mas sim complementações, lembre-se disto, mas enfim.

    Pode me explicar uma coisa, se souber ficaria agradecido!!

     

    Estive atualmente com um problema em relação ao Menu.

     

    CENÁRIO.

    Instalado somente WSS3 somente sem MOSS.

    Quando instalado o WSS3 com o MOSS ele tem a opção em definições do site, o item de NAVEGACAO correto?

    Onde vc pode definir o publico alvo daquele link ou pasta.

     

    Mas quando instalado o WSS3 somente não tem esta opção, pq?

     

    Agradeço t+

    segunda-feira, 18 de fevereiro de 2008 19:58