Rodrigo Romano – MVP SharePoint Server

Registros de um Especialista SharePoint :)

Posts Tagged ‘Apps

SharePoint Apps: Como utilizar o People Picker?

leave a comment »


Olá SharePointers,

Hoje vou falar sobre como utilizar o People Picker quando estamos desenvolvendo uma app para SharePoint.

O primeiro passo, é carregar os scripts que serão utilizados (ver imagem abaixo) e colocar a div quer será utilizada para criação do controle dinamicamente.

image

 

Após a criação dos controles acima, basta colocar o código abaixo em um arquivo .js e adicioná-lo a página como referência que o People Picker funcionará perfeitamente.

 

// Run your custom code when the DOM is ready. $(document).ready(function () { // Specify the unique ID of the DOM element where the // picker will render. initializePeoplePicker('peoplePickerDiv'); }); // Render and initialize the client-side People Picker. function initializePeoplePicker(peoplePickerElementId) { // Create a schema to store picker properties, and set the properties. var schema = {}; schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup'; schema['SearchPrincipalSource'] = 15; schema['ResolvePrincipalSource'] = 15; schema['AllowMultipleValues'] = true; schema['MaximumEntitySuggestions'] = 50; schema['Width'] = '280px'; // Render and initialize the picker. // Pass the ID of the DOM element that contains the picker, an array of initial // PickerEntity objects to set the picker value, and a schema that defines // picker properties. this.SPClientPeoplePicker_InitStandaloneControlWrapper(peoplePickerElementId, null, schema); } // Query the picker for user information. function getUserInfo() { // Get the people picker object from the page. var peoplePicker = this.SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan; // Get information about all users. var users = peoplePicker.GetAllUserInfo(); var userInfo = ''; for (var i = 0; i < users.length; i++) { var user = users[i]; for (var userProperty in user) { userInfo += userProperty + ': ' + user[userProperty] + '<br>'; } } $('#resolvedUsers').html(userInfo); // Get user keys. var keys = peoplePicker.GetAllUserKeys(); $('#userKeys').html(keys); // Get the first user's ID by using the login name. getUserId(users[0].Key); } // Get the user ID. function getUserId(loginName) { var context = new SP.ClientContext.get_current(); this.user = context.get_web().ensureUser(loginName); context.load(this.user); context.executeQueryAsync( Function.createDelegate(null, ensureUserSuccess), Function.createDelegate(null, onFail) ); } function ensureUserSuccess() { $('#userId').html(this.user.get_id()); } function onFail(sender, args) { alert('Query failed. Error: ' + args.get_message()); }

Bem simples, não acharam?

 

Abraços! 😀

 

Referência

http://msdn.microsoft.com/en-us/library/jj713593.aspx

Advertisements

Written by Rodrigo Romano

August 11, 2014 at 9:47 am

Troubleshooting SharePoint/Office365: Sideloading of apps is not enabled on this site

leave a comment »


Olá SharePointers,
Estava desenvolvendo uma SharePoint Hosted app para o Office 365 e, para minha surpresa, apareceu o erro abaixo.
Esse erro acontecia quando quando tentava fazer o deploy via Visual Studio.

 

Para resolver esse erro, basta rodar o script que está disponível nesse link: http://1drv.ms/1qDs0oy

 

Referência:

http://blogs.msdn.com/b/officeapps/archive/2013/12/10/enable-app-sideloading-in-your-non-developer-site-collection.aspx

Abraços! 😀

Written by Rodrigo Romano

August 2, 2014 at 12:28 pm

SharePoint 2013: Licenciamento de uma App

with 2 comments


Olá SharePointers,

Quando a versão nova do SharePoint 2013 foi lançada, muito se especulou sobre o modelo de licenciamento para Apps e como isso funcionaria, entreanto, após tanto tempo (estamos quase no SP1 do SharePoint 2013) pouco vejo falar sobre o assunto.

Em 2012, fiz uma apresentação para um evento no Senac São José dos Campos com vários profissionais renomados no mercado (http://pt.slideshare.net/rodrigoromano/mudanas-no-desenvolvimento-com-sharepoint-2013) e falei um pouco sobre o assunto.

Pensando na falta de conteúdo sobre o assunto, pensei em escrever um post.

 

Aquisição de Licenças

Ao comprar um App, a licença é enviada para o SharePoint em forma de um token. Esse token contém as informações básicas sobre a licença, tais como: data/hora da aquisição, quantas licenças foram adquiridas e etc.

Essas licenças podem ser por usuário ou por aplicativo.

 

image

OBS: O mais importante é entender que é necessário garantir a aplicação da licença via CÓDIGO customizado.

Sendo assim, o SharePoint fornece as APIs para buscar o Token de licenciamento na Store, validá-lo e tomar alguma ação no aplicativo baseado no resultado dessa validação. Dessa forma, o SharePoint provê uma funcionalidade extensível que atenda qualquer caso mais específico de uma App customizada.

 

image

 

 

 

Resumindo…

O SharePoint fornece toda a infraestrutura da App Store, permitindo a venda (gratuita ou paga) das Apps. Além disso, fornece o mecanismo para aquisição e gerenciamento das licenças, bem como WebService para validação de uma licença.

O único trabalho do desenvolvedor, nesse caso, é fazer a chamada ao Web Service, validar a licença obtida e tomar alguma ação baseada em seu resultado.

Simples, não?

SharePoint sempre pensando em nossa produtividade Smiley de boca aberta

 

Referências

(As imagens foram retiradas do link abaixo).

http://blogs.msdn.com/b/officeapps/archive/2012/11/09/licensing-your-apps-for-sharepoint.aspx

http://msdn.microsoft.com/en-us/library/office/jj163257.aspx

Written by Rodrigo Romano

January 14, 2014 at 8:04 pm

SharePoint 2013 : Farm Solution x Apps

with one comment


Olá SharePointers,

Com a introdução da versão 2013 do SharePoint no mercado, vários conceitos novos foram adicionados à nossa lista de termos técnicos. Um deles é a nova forma de desenvolver soluções usando a plataforma SharePoint 2013: os Apps.

Vemos pessoas comentarem sobre o assunto, discutirem, sites falando diversas coisas sobre o assunto (inclusive o quanto o recurso é interessante, principalmente do ponto de vista de administradores do ambiente) mas ainda não tinha visto alguém falar quando efetivamente eu devo usar um ou outro.

Então, para ajudá-los a decidir qual das tecnologias utilizar, vamos analisá-las com mais detalhe:

 

1. Hosting

A primeira preocupação é decidir onde o meu código será executado. Se for Apps, o código nunca rodará no ambiente do SharePoint. Toda a comunicação será feita através de chamadas via WebServices, REST, etc.

Caso seja Farm Solutions, o código será executado no processo do IIS w3wp ou no do SandBox SPUCWorkerProccess.

Mas, na prática, o que isso influencia?

  • Nenhum código é instalado na farm, aumentando sua estabilidade e segurança
  • O deploy de uma Farm Solution depende de um administrador de TI, gerando períodos de “downtime” por ter que reiniciar o IIS, embora que com Sandbox solutions isso não acontecia.

Basicamente, no caso dos Apps, existem 3 tipos de hosting:

Provider-Hosted: Os apps que implementam esse tipo de arquitetura podem ter uma interface com o SharePoint, mas a maior parte de sua lógica está em outra tecnologia, como um servidor na nuvem. Utilizado para integrar sistemas legados com o SharePoint.

Auto-Hosted: Esse tipo é similar ao anterior (Provider-Hosted), mas a diferença é que o SharePoint (e Azure Alegre) faz o trabalho sujo de provisionar o site e o database necessário para o seu funcionamento.

SharePoint-Hosted: Esse tipo de App roda no SharePoint sem dependências externas, toda a sua lógica roda no contexto de um browser cliente. Sua lógica de negócios é implementada utilizando JavaScript, mas pode fazer deploys de Listas e Bibliotecas.

 

2. Escopos

Solutions

Soluções Full Trusted podem ser instaladas em qualquer escopo (Farm, Web App, Site Collection, Site).

Soluções Sandboxed somente em Site Collections.

Apps

Apps possuem 2 tipos de escopo:

  • Site: Mesmo escopo do site SharePoint
  • Tenancy: Nesse caso, é obrigatório a utilização do App Catalog.
      3. Integração
      Solutions
      As únicas opções disponíveis eram:  BCS ou WebServices, fazendo com que fosse uma experiência limitada no que diz respeito a integração com aplicações externas.
      Apps
      Como o desenvolvimento é feito através de técnicas bastante conhecidas de Web, é possível construir aplicações com quase nenhum conhecimento de SharePoint. Além disso, o Visual Studio 2012 contém os templates necessários para ajudar nessa tarefa.
      Como as aplicações baseiam-se em HTML e JavaScript, elas tornaram-se “Device Free”, podendo rodar em quase todos os dispositivos existentes.

       

       

      Conclusão

      Sempre que possível, considere a utilização de Apps ao invés de  utilizar o método “tradicional”. Além de compatibilidade extendida com dispositivos mobile e maior possibilidade de integrações, esse modelo ajuda todo um ecossistema de desenvolvedores de outras plataformas a conseguirem implantar/integrar suas aplicações com o SharePoint.

       

      Referências

      Apps for SharePoint compared with SharePoint solutions

      http://msdn.microsoft.com/en-us/library/jj164060.aspx#Factors

      http://msdn.microsoft.com/en-us/library/jj162979.aspx

      http://msdn.microsoft.com/en-us/library/office/fp179887.aspx

      http://blogs.msdn.com/b/uksharepoint/archive/2013/03/25/sharepoint-2013-development-apps-versus-solutions.aspx

      Written by Rodrigo Romano

      December 2, 2013 at 10:48 am