WrapPanel em Silverlight

Olá.

De uns tempos pra cá eu me iniciei no mundo do Silverlight. Está sendo bem legal pelo desafio, diferenças na hora de pensar na solução, estudo, etc.

Uma necessidade recente que tive que sanar envolvia usar um painel em que eu pudesse colocar os itens fossem preenchendo e criando novas linhas, conforme uma linha acabava.

Por padrão o Silverlight não possui este painel. Pesquisando eu achei um que resolve inteiramente o problema.

Segue o arquivo em anexo:

WrapPanel.cs

Abs.,

Deixe um comentário

Criar Site em um modelo WSP

Recentement eu precisei criar um site baseado em um modelo no Sharepoint 2010. No Sharepoint 2007, basta referenciar o nome do modelo, um arquivo gravado com extensão .stp.

Na nova versão quando gravamos um modelo de site, ele gravada um solução sandbox. Com isso precisei pesquisar como fazer essa criação e achei o seguinte código:

using(SPWeb web = properties.Web){
    string sUrl = properties.ListItem.Title.ToLower().Replace(" ", "_");

    string template = (from x in web.GetAvailableWebTemplates(1033).OfType<SPWebTemplate>()
                       where x.Title == "Componente"
                       select x.Name).FirstOrDefault<string>();

    web.Webs.Add(
        sUrl,
        properties.ListItem.Title,
        (string)properties.ListItem["Description"],
        1033,
        template,
        false,
        false);

    properties.ListItem["Site"] = "/" + sUrl;
    properties.ListItem.Update();
}

 

Problema resolvido! Com esse código é possível criar um site dinamicamente no Sharepoint 2010.

Abraços e até a próxima,

,

2 Comentários

Sharepoint: Diferença em 2007 x 2010

Eu encontrei esta listagem de diferenças entre as versões 2007 e 2010 do Sharepoint. Não é uma listagem oficial da Microsoft, mas tenho certeza de que irá ajudar muita gente.

Microsoft Office Sharepoint Server 2007 Sharepoint Server 2010
Client do Office é necessário para visualizar e editar os documentos OWA permite abrir os documentos na Web usando Silverlight e Javascript
Sem capacidade de co-authoring Co-authoring para Word e Powerpoint via client e Excel tambem via web
Muitos postback Maior uso do Ajax
Sem suporte inerente a Ajax e Silverlight Totalmente suportados
Temas estáticos e sem preview na aplicação Você pode selecionar um tema, customizá-lo e visualizá-lo antes de aplicar no site
Sem bookmarking, tagging ou rating Totalmente aplicados
Escopo de Content Type para Site Collection Hub de Content Types que podem ser compartilhados entre as aplicações web
BDC usado para guardar informações no Sharepoint BCS lê os dados em tempo real
Suporte a 5 milhões de itens nas bibliotecas Suporte a 10 milhões
Views geradas por CAML Views geradas por Xslt
Uso de CAML para buscar em listas Busca em lista por LINQ, Javascript e API do Silverlight
Sem restrições para instalação Capacidade de prevenir pessoas de instalar o Sharepoint (via AD)
Escopo de Shared Services por Farm Arquitetura do Shared Services alterada para ser mais fácil e compartilhada através da Farm
Sincronia do profile pode ser feita por qualquer pessoa Checagem adicional de permissões para sicnronia de profile
Web Analytics básico Web Analytics melhorado
Resultado de busca estático Clicar em um resultado de busca afeta o resultado de buscas com a mesma palavra-chave
Para prevenir códigos que podem danificar o sistema, CAS Policies deveriam ser definidas para cada aplicação Sandbox é utilizado para retringir o escopo do código.
Pessoas com permissão de contribuição podem subir páginas aspx Pessoas com permissão de contribuição não podem subir páginas aspx
Contribuidores podem editar parâmetros do tool pane Não editável pelos contribuidores
Explorer view no browser Abre no Windows Explorer com Web DAV
Exibição simples em mobiles com recursos OOTB Possibilidade de criação de páginas mobile mais ricas
Uso do Outlook para acesso off-line Uso do Sharepoitn Workspace
Não é possível ter um único ID de documento indepente dele ter sido movido para outras listas Um ID pode ser associado ao documento independente de onde esteja localizado
Para subir um arquivo, o usuário deve acessar, o site/subsite e a lista apropriada O organizador de conteúdo move o documento para a biblioteca apropriada baseado em regras de metadados
Quando um arquivo com o mesmo nome é gravado numa lista, é gerado uma nova versão Opção de criar uma versão nova ou atribuir um novo ID ao documento
Layout fixo com webpart zones definidas UI mais fluído, permitindo subir webparts sem webpart zones
Políticas de retenção só permitem deletar ou invocar workflow por padrão Diversas outras opções
EBS – para guardar documentos fora do Sharepoint, possível mas difícel de configurar RBS – gerenciado pelo SQL
Precisa de sistema operacional Server para rodar Pode ser instalado no Windows 7 (x64) e no Windows Server 2008 (x64)
Sem validações de campo Validações de campo disponíveis
Não é possível mover um workflow criado no SPD para o Visual Studio Workflows podem ser definidos no Visio, com regras adicionadas no SPD e importado para o Visual Studio
Layouts baseados em tabelas Layouts baseados em DIV

 

Fonte:http://jacksonc.wordpress.com/2010/02/20/moss-2007-vs-sharepoint-2010/

Deixe um comentário

Adicionar WP na criação de MySite

Olá Pessoal!

Vamos ao problema da vez. Minha necessidade era colocar uma WP no MySite toda vez que ele fosse criado. Comecei a pesquisar como resolver o problema.

Alterar o modelo direto nos arquivos de sistema não é uma opção, pois ele deixa o Sharepoint em modo não suportado, além do risco de perder a modificação no caso de uma atualização. Dada a premissa vi que a minha única saída era usar o Feature Stapling.

De modo resumido o Feature Stapling permite que eu associe uma feature a um determinado modelo de site. Com isso pensei no seguinte: crio uma feature que abre a página e adiciona uma nova WP onde eu quero e depois crio uma Feature Stapling e jogo isso no modelo do MySite. Então vamos lá. Primeiro criei a feature:

<Feature
    Id="CCFCF585-E187-4b81-87F6-028F0F1D2753"
  Title="Feature"
  Scope="Web"
    Hidden="FALSE"
  ReceiverAssembly="MeuAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0301ba6f5945c5ab"
  ReceiverClass="Minha Classe"
  xmlns="http://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
    <ElementFile Location="MinhaWP.webpart"/>
    <ElementManifest Location="elements.xml"/>
  </ElementManifests>
</Feature>

Nela Atribui um ReceiverAssembly e um ReceiverClass onde eu programei o comportamento para adicionar a minha WP na página, no momento da ativação:

SPWeb oWeb = properties.Feature.Parent as SPWeb;
SPFile file = oWeb.GetFile("default.aspx");
if (file.Exists) {
    oWeb.Title = "The File Exists!";
    SPLimitedWebPartManager oWPManager = oWeb.GetLimitedWebPartManager("http://meusite.bancotiopatinhas.com.br/personal/asdrubal/default.aspx", System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared); MyColleagues oWP = new MyColleagues();
    oWPManager.AddWebPart(oWP, "Middle Right Zone", 0);
}
oWeb.Update(); 

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

`

Depois disso criei o pacote normalmente e fiz o deploy. Teste a ativação e funcionou perfeitamente. O próximo passo foi criar o Feature Stapling:

Arquivo feature.xml:

<Feature
    Id="{96520B84-3287-46e5-AD4A-768DD4691D23}"
  Title="Stapler de criação do My Site"
  Scope="Farm"
  xmlns="http://schemas.microsoft.com/sharepoint/" >
  <ElementManifests>
    <ElementManifest Location="elements.xml" />
  </ElementManifests>
</Feature>

Arquivo Elements.xml:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/" >
  <FeatureSiteTemplateAssociation Id="CCFCF585-E187-4b81-87F6-028F0F1D2753" TemplateName="SPSPERS#0"/>
</Elements>

Note que o Id do arquivo Elements.xml do Feature Stapling é o mesmo Id da Feature que eu criei acima. Achando que tinha me livrado fácil eu fiz o deploy, criei um novo MySite e… nada! Deu erro!

Debugando o problema (horas a mais e cabelos a menos) descobri que no momento da ativação da Feature a página default.aspx não havia sido criada ainda, então eu não tinha como alterar. Pesquisando no Google descobri que várias pessoas estavam com o mesmo problema.

Mais horas e menos cabelos depois fiz o seguinte. Peguei uma página completa com a minha WP configurada, copiei para o meu projeto, e provisionei para jogar na raiz do site na ativação da feature. Segue a modificação:

<Feature
    Id="CCFCF585-E187-4b81-87F6-028F0F1D2753"
  Title="Feature"
  Scope="Web"
    Hidden="FALSE"
  ReceiverAssembly="MeuAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0301ba6f5945c5ab"
  ReceiverClass="Minha Classe"
  xmlns="http://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
    <ElementFile Location="MinhaWP.webpart"/>
    <ElementFile Location="default.aspx"/>
    <ElementManifest Location="elements.xml"/>
  </ElementManifests>
</Feature>

e no elements:

<Elements Id="37411303-55FF-456b-84DA-C3D64A86A8F8" xmlns="http://schemas.microsoft.com/sharepoint/" >
  <Module Name="WebParts" List="113" Url="_catalogs/wp">
    <File Path="MinhaWP.webpart" Url="MinhaWP.webpart" Type="GhostableInLibrary">
      <Property Name="Group" Value="Minhas WPs"/>
    </File>
  </Module>
  <Module Name="DefaultWeb">
    <File Url="default.aspx"></File>
  </Module>
</Elements>

Funcionou em partes. Eu notei que dessa forma ele duplicou todas as WPs da página, exceto a minha.

Solução: criei a página com toda a estrutura e sem nenhuma WP exceto a minha (mas com todo o resto, WPs zones e etc.). E voilá! Funcionou! Está é uma saída boa para este problema!

 

Até,

Deixe um comentário

Erro ao modificar o Xsl de um resultado de busca

Olá pessoal!

A dica de agora veio de um problema que eu encontrei ao modificar o Xsl de um resultado de busca. Após fazer uma mudança insignificante no Xsl veio o seguinte erro:

System.ArgumentException: An item with the same key has already been added. at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at Microsoft.Office.Server.Search.WebControls.PeopleCoreResultsWebPart.SetSortedRefinementDataOnHiddenObject() at Microsoft.Office.Server.Search.WebControls.PeopleCoreResultsWebPart.GetXPathNavigator(String viewPath)

Voltei o Xsl ao estado original e o erro persistiu. Na verdade eu não tenho exatamente a solução pra ele, mas quando publiquei novamente a página o erro sumiu e os dados foram exibidos corretamente.

De qualquer forma eu recomendo gravar uma versão da página inteira antes de alterar esse item. Mas, se esse problema acontecer com você e antes de arrancar os cabelos, publique a página!

Espero que essa dica ajude como me ajudou!

Abs.,

Danilo

Deixe um comentário

Administrador da Farm não consegue abrir o site dentro do próprio servidor

Falae galera! Já faz algum tempo que não escreve, mas resolvi passar aqui e deixar essa dica.

Cenário: Estava acessando um site Sharepoint de dentro da minha VM de desenvolvimento. Essa VM roda com um Windows 2003 Enterprise e MOSS 2007. Quando acessei o site (que estava configurado para login no AD – padrão) ele me pediu usuário e senha. Isso seria normal se eu já não estivesse logado na máquina como administrador, que também é o administrador da Farm desse site Sharepoint. Mesmo criando outro usuário e dando os mesmo poderes ainda assim não consegui entrar no site.

Solução: Falando com o meu amigo Hélio Sá, ele me passou o seguinte. O problema ocorre quando o site usa a autenticação integrada e tem um nome mapeado para o endereço de loopback local. Basta alterar uma chave no registro, reiniciar a máquina e voilá! o site volta a funcionar. A chave é a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck. Caso ela não exista é só criar e atribuir o valor 1.

O passo a passo está neste kb http://support.microsoft.com/kb/896861/.

See ya!

Deixe um comentário

Project Natal

Eae pessoal? Passei para dar uma postada rápida sobre o project Natal do Xbox. Achei o video de demo fantástico! Se for 50% disso, o negócio vai ser revolucionário.

Segue o vídeo abaixo:

Deixe um comentário

Recursos de teste de performance pra Sharepoint

Pessoal, segue abaixo link para várias ferramentas, artigos, white papers e outros recursos para medir e testar a performance da implementação do Sharepoinit. Por Sanjay Narang: http://blogs.msdn.com/sanjaynarang/archive/2009/04/18/sharepoint-performance-stress-load-testing.aspx

,

Deixe um comentário

Access Denied on Search

Sessão troubleshooting. Fiz uma instalação e configuração de MOSS com Search. Tudo funcionando bonitinho. Ou quase. Fui checar o crawl da busca e vi que ele não indexou nenhum item. além disso no log estava constando vários erros de access denied (Access is denied. Check that the Default Content Access Account has access to this content, or add a crawl rule to crawl this content, para ser mais exato).

Pois bem. Comecei a procurar e fui olhar nos lugares óbvios. Conta de acesso do serviço de indexação. Conta padrão de acesso ao conteúdo. Como estava na VM de desenvolvimento, coloquei o administrador, para que não houvesse dúvidas. O problema persistiu.

Foi quando eu descobri um KB relatando esse problema. Isso acontece em ambientes Windows 2003 com SP1, e quando se usa diversos host headers para webapplications diferentes.

O fix para esse problema é a inclusão de uma chave no registro. A chave é HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa. Dentro adicionar uma DWORD com o nome DisableLoopbackCheck. Depois setar o valor para 1.

Reinicie a maquina e voilá! Agora o indexador funciona perfeitamente!

Para mais detalhes do fix: http://support.microsoft.com/default.aspx/kb/896861

;) Danilo

, ,

Deixe um comentário

Sharepoint Designer Free!

O Dênis me mandou essa mensagem há algum tempo, mas eu não acreditei, porque lá dizia que a data em que iria começar era 1o. de abril. Bom, mas eu vi agora e é verdade. Vou divulgado no blog do time de produto do Sharepoint que o Sharepoint Designer passar a ser grátis.

Isso vem para somar e ajudar com os deploys, especialmente de pacotes menores.

Quem quizer saber mais sobre o assunto, veja o post do time de produto.

;) Danilo

Deixe um comentário

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.