O SharePoint é uma ferramenta bastante dinâmica mas a sua riqueza de recursos e opções leva a alguma complexidade na configuração dos comandos existentes nos sites de SharePoint.
As diversas versões do SharePoint o utilizador tem vindo a aumentar o numero de comandos que se podem realizar de forma a realizar as mais diversas acções em documentos, items ou site de SharePoint.
Com a introdução de Ribbons em SharePoint 2010 a sua complexidade aumentou de forma que este capitulo seja tratado em outro artigo, para este artigo foram criados exemplos de como podemos criar comando personalizados.
A capacidade de configurar os comandos através de expressões de XML leva a flexibilidade de transportar a solução para os mais diversos sites de SharePoint tornando bastante útil e reutilizável.
Para Configuração destas comandos personalizados o SharePoint permite a capacidade de através de Visual Studio e soluções de SharePoint (Farm e Sandbox).
Criar uma nova Solução de SharePoint, para criar comandos personalizados podemos escolher entre SharePoint Farm Solutions ou sandbox Solutions.
Se os comados personalizados forem criados para SharePoint Online "Office 365" recomendo criar uma Sanbox Solution para SharePoint.
No primeiro exemplo foi criado os script para 2 botões que ira abrir as paginas correspondentes. O script ira criar uma nova tab chamada "Comando Personalizados" e adicionar os botões criados.
<
CustomAction
Id
=
"UserInterfaceCustomActions.DocLibNewToolbar"
RegistrationType
"List"
RegistrationId
"101"
GroupId
"NewMenu"
Rights
"ManagePermissions"
Location
"Microsoft.SharePoint.StandardMenu"
Sequence
"1000"
Title
"Botao 1"
>
UrlAction
Url
"javascript:SP.UI.ModalDialog.ShowPopupDialog('/_layouts/ Botao1.aspx');"
/>
</
<!-- Novo Botao 2 em Comando Personalidado-->
"UserInterfaceCustomActions.DocLibUploadToolbar"
"UploadMenu"
"Botao 2"
"javascript:SP.UI.ModalDialog.ShowPopupDialog('/_layouts/Botao2.aspx');"
Ao instalar a solução e activar a feature, terá que aceder a uma lista e a nova opção "Comandos Personalizados" irá aparecer.
Este novo comando personalizado tem como função adicionar um ficheiro de Javascript no Site de SharePoint e automaticamente associar o JS na pagina mestra (MasterPage) para realizar uma acção, neste case uma alerta de Javascript. Para o comando realizado realizei o download da ultima versão do ficheiro em Jquery e adicionei da minha solução de SharePoint. No ficheiro elements.xml adicionei a instrução para adicionar no Site um novo script Location="ScriptLink" e adicionar o ficheiro “jquery-1.7.1.min.js” na biblioteca de documentos “Libraria de estilos”.
Elements
xmlns
"http://schemas.microsoft.com/sharepoint/"
<!-- Adiciona o Javascript -->
ScriptSrc
"~SiteCollection/Style Library/JS/JQuery1/jquery-1.7.1.min.js"
"ScriptLink"
"10"
<!-- executa em todas as paginas-->
ScriptBlock="$(document).ready(function()
{alert('Alerta, tem Mensagem nova!!!'); });"
<!—-adiciona o ficheiro JS no Site-->
Module
Name
"JS"
"Style Library/JS/JQuery1"
RootWebOnly
"TRUE"
File
Path
"JQuery1\jquery-1.7.1.min.js"
"jquery-1.7.1.min.js"
Type
"GhostableInLibrary"
Depois de realizar a alteração no ficheiro Elements.xml foi realizado a instalação da Solução de SharePoint e quando acedemos a pagina de SharePoint aparece um alerta em cada pagina.
Para visualizar a alteração no site deveremos visualizar o código de html da pagina de SharePoint, pode ser realizado através do botão direito e opção "View Source" do Internet Explorer.
Por defeito estes são os comandos disponibilizados pelo SharePoint;
Para este exemplo irei criar comando personalizado utilizando o ID associado ao Menu de item, que pode ser encontrado no seguinte link. Nesta solução foi definida uma permissão de forma que todos os utilizadores com permissões de edição possam aceder a esta novo comando, para mais informação podem aceder ao seguinte link. Para o exemplo foi utilizado os comandos Edit Control Block (ECB) para definir a nova opção no menu dos items.
"UserInterfaceCustomActions.ECBItemToolbar"
"EditListItems"
"ContentType"
"0x0101"
"EditControlBlock"
"250"
"Editar Documento"
"javascript:editDocumentWithProgID2('{ItemUrl}', '', 'SharePoint.OpenDocuments', '1', '{SiteUrl}', '0');return false;"
Apos instalada a Solução de SharePoint a nova opção irá ser visível aos utilizadores com permissões e pronta para funcionar.
O Segundo comando personalizador ira criar uma nova opção no menu "Ações do Site" que ira redireccionar para as opções de administrador do site numa janela de dialogo.
"UserInterfaceCustomActions.SiteActionsToolbar"
"SiteActions"
"Nova Opção em Ações do Site"
"javascript:SP.UI.ModalDialog.ShowPopupDialog('/_layouts/Settings.aspx');"
Apos instalar a soluçao, quando aceder-mos a opção "Ações do Site" ira aparecer ums nova Ação chamada "Nova Opção em Ações do Site".
Os Comandos personalizados em SharePoint são muito flexíveis, mas é necessário entender o que se pode realizar no SharePoint On-Premise e SharePoint Online. A limitação deste tipo de soluções é a definição dos seu escopo. Por defeito podemos escolher os seguintes escopo.
Farm (Todos as Aplicações)
SharePoint On-Premise
(Farm/Sandbox)
WebApplication (Todas as Colecções de Sites)
Site (Colecção de Sites)
SharePoint Online (365)
(Sandbox)
Web (Sites)
Para cada tipo de ambiente de SharePoint sera preciso definir o seu escopo escolhendo a solução de SharePoint ideal para responder ao requisitos do utilizador.
Na construção das comandos podemos definir acções e instruções em script. Algumas destas operações estão ligadas Sites, Listas ou items que são geradas dinamicamente.
O SharePoint disponibiliza símbolos que representa atributos gerais que simplificam a construção dos nosso script de forma a poder responder capturar URL/ID do Site, Listas, items onde se encontra o nosso comando personalizado. Os símbolos seguintes são reconhecidos na construção dos nossos scripts:
No próximo link encontras todas os atributos que podem ser utilizados na construção “CommandUIHandler Element” http://msdn.microsoft.com/en-us/library/ff458385.aspx
Uma das opções que podemos utilizar quando estamos a configurar o comando personalizado são as permissões de forma a limitar o acesso aos diversos comandos, esses permissões são as roles que se encontram definidas nos Sites de SharePoint e são bastantes uteis para controlar associar os grupos de SharePoint com as permissões associadas.
Exemplo:
<CustomAction
Id="UserInterfaceCustomActions.ECBItemToolbar"
Rights="EditListItems"
RegistrationType="ContentType"
SharePoint é constituído por Content Types, estes Content Types ajudam a definir a Metadata associada a cada Tipo de Listas, seleccionado a propriedade e a sua interdependência entre os diversos Content Types que estão constituídos na lista. Este “Custom action” tem como função definir uma acção que seja visível em qualquer tipo de Lista para isso foi definido o Content Type “Item” onde todos os Content Types para listas derivam. Por exemplo se pretendemos criar um comando personalizado que seja visível em todas as listas e não nas Libraria de documentos, podemos definir o Content Type que podemos usar.
<!—Comando personalizado alterado para usar o Content Type
"0x01"
Link de apoio: Base Content Type Hierarchy http://msdn.microsoft.com/en-us/library/ms452896.aspx
Com utilização dos controlos personalizados e a introdução de Ribbons em SharePoint 2010 levou a uma maior complexidades no desenho e configuração dos controlos no ficheiros elements.xml onde se encontram associados as features, ira requerer uma maior atenção em toda a sua elaboração mas também uma maior riqueza de recursos nos sites de SharePoint.
Links de suporte: CustomAction Element http://msdn.microsoft.com/en-us/library/ms460194.aspx Custom Action Definition Schema http://msdn.microsoft.com/en-us/library/ms465980.aspx Default Custom Action Locations and IDs http://msdn.microsoft.com/en-us/library/bb802730.aspx How to: Modify the User Interface Using Custom Actions http://msdn.microsoft.com/en-us/library/ms473643(v=office.14).aspx HideCustomAction Element http://msdn.microsoft.com/en-us/library/ms414790.aspx
Artigo criado por, André Lage http://aaclage.blogspot.com/ para a revista CanalTechshare