none
Custom Action com Code-Behind - SHP`2013 RRS feed

  • Pergunta

  • Srs, bom dia.

    Estou tentando criar um custom action que execute um código vb.

    Segui varios tutoriais porém nenhum funcionou.

    Eu criei um projeto sharepoint 2013 vazio, adicionei uma Feature, criei um projeto de class library (Favoritos) e criei a classe (Favorito) com o código vb, gerei a dll, adicionei a referencia da dll no package na aba advanced, adicionei um Empty Element com o código abaixo:

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <CustomAction Id="addFavoritos"
                    Title="Adicionar aos Favoritos"
                    Location="CommandUI.Ribbon.DisplayForm"
                    RegistrationType="List"
                    RegistrationId="100"
                    ControlAssembly="Favoritos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=773818638150b4d2"
                    ControlClass="Favoritos.Favorito"
        >
        <CommandUIExtension xmlns="http://schemas.microsoft.com/sharepoint/">
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ListForm.Display.Manage.Controls._children">
              <Button Id="btnAddFavoritos"
                      LabelText="Adicionar Item aos Favoritos"
                      Sequence="0"
                      TemplateAlias="o1"
                />
            </CommandUIDefinition>
            </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    </Elements>
    

    No código VB eu herdei da classe SPRibbonButton.

    Meu código VB é esse:

    Imports Microsoft.SharePoint
    Imports Microsoft.SharePoint.WebControls
    Imports Microsoft.SharePoint.Utilities
    Imports System.Web
    
    Public Class Favorito
        Inherits SPRibbonButton
    
        Protected Overrides Sub OnClick(e As EventArgs)
            MyBase.OnClick(e)
            SPUtility.Redirect("http://egito/", SPRedirectFlags.Default, HttpContext.Current)
        End Sub
    End Class
    

    quarta-feira, 11 de setembro de 2013 13:46

Respostas

Todas as Respostas

  • Mas o que acontece?

    Erro no deploy?

    Não executa o codigo?


    Atenciosamente, Rafael Fausto

    quarta-feira, 11 de setembro de 2013 14:31
  • Eu clico no botao e não faz nada.

    Não da erro, mas tb não faz nada

    quarta-feira, 11 de setembro de 2013 17:32
  • Faça um teste, pare de utilizar o SPRibbonButton e Utilize o SPLinkButton e também faça a instância do método OnLoad.


    Atenciosamente, Rafael Fausto

    quarta-feira, 11 de setembro de 2013 18:01
  • Também não funcionou.
    quarta-feira, 11 de setembro de 2013 18:56
  • Ola felipe,

    Nao percas tempo com dev, faz directamente por javascript

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <CustomAction Id="ea70d294-2562-49ba-b9a9-97f8afc86b92.Exemplo1"
                    RegistrationType="List"
                    RegistrationId="100"
                    Location="CommandUI.Ribbon"
                    Sequence="10001"
                    Title="Invoke &apos;Exemplo1&apos; action">
        <CommandUIExtension>
          <!-- 
          Update the UI definitions below with the controls and the command actions
          that you want to enable for the custom action.
          -->
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ListItem.Actions.Controls._children">
              <Button Id="Ribbon.ListItem.Actions.Exemplo1Button"
                      Alt="Adicionar Item aos Favoritos"
                      Sequence="100"
                      Command="Invoke_Exemplo1ButtonRequest"
                      LabelText="Adicionar Item aos Favoritos"
                      TemplateAlias="o1"
                      Image32by32="_layouts/15/images/placeholder32x32.png"
                      Image16by16="_layouts/15/images/placeholder16x16.png" />
            </CommandUIDefinition>
          </CommandUIDefinitions>
          <CommandUIHandlers>
            <CommandUIHandler Command="Invoke_Exemplo1ButtonRequest"
                              CommandAction="javasript:
                              window.location = "http://[site]"
    ;                          "/>
          </CommandUIHandlers>
        </CommandUIExtension >
      </CustomAction>
    </Elements>

    Nao te esqueças de adicionar a Feature se necessario:



    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/


    quinta-feira, 12 de setembro de 2013 09:43
    Moderador
  • André, bom dia.

    É exatamente isso que eu não quero, executar com Javascript.

    Eu estou tentando fazer via .Net mesmo.

    quinta-feira, 12 de setembro de 2013 14:33
  • nao tem logica, consegues fazer a maior parte das operacoes atraves de client object model a nao ser que tenhas que integrar com alguma dll fora do SharePoint.

    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/

    quinta-feira, 12 de setembro de 2013 14:35
    Moderador
  • André, exatamente.

    Essa de adicionar um item a uma lista de favoritos é uma das necessidades que tenho para usar com Custom Action.

    A Outra é pegar o documento pdf de uma biblioteca, adicionar uma marca d'agua com a usando a dll do iTextSharp e então fazer o download desse documento.

    quinta-feira, 12 de setembro de 2013 14:49
  • Acho que estas a fazer confusao entre Menu Custom Action e Ribbon Custom Action

    Menu Custom Action podes fazer chamadas a Class de VB (DLL), Ribbon Custom action nao podes.

    A regra sera um redirect para a pagina que ira realizar a conversao "onde vai estar o teu codigo" atraves de parametro essa pagina ira fazer a conversao em PDF.

    CommandAction="~site/Pages/ConvertoPDF.aspx?amp;SPListItemId={ItemId}&amp;SPListId={ListId}"/>

    Depois de realizada essa operacao podes fechar a pagina,

    Como e obvio podes meter um Arco Iris ou unicornios quando faz a operacao, para isso posso recomendar o uso do seguinte codigo para chamar a pagina atraves de modal dialog:

    <CommandUIHandler Command="Invoke_TilesColumnsButtonRequest" 
                              CommandAction="javascript: 
         var options = { 
            url: '../../Pages/ConvertPDF.aspx?SPLisItem={ItemId}&SPList={ListId}', 
            allowMaximize: true, 
            title: 'Manage Columns', 
            dialogReturnValueCallback: scallback 
        }; 
        SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);    
     
    function scallback(dialogResult, returnValue) { 
        if (dialogResult == SP.UI.DialogResult.OK) { 
            //SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK); 
        } 
    } 
                              " /> 

    Na pagina de ira executar o codigo "ConvertPDF.aspx", adiciona a tua class onde deriva a class Favoritos.Favorito :Page

    no Evento Load() Captura o Parametro do url "SPLisItem" e SPList e mete o codigo de conversao.

    entretanto podes meter SP.UI.ModalDialog.ShowWaitScreenWithNoClose(.....) enquanto o codigo realiza a operacao, depois sera uma questao de fechar a pagina, podes por exemplo usar o metodo "SP.UI.ModalDialog.close(dialogResult)"


    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/


    quinta-feira, 12 de setembro de 2013 15:12
    Moderador
  • André, na verdade o redirect que esta na classe Favorito foi só um teste para ver se redirecionava e não funcionou.

    Hoje a adição da marca d'agua no pdf eu fiz da forma que você falou, redirecionando para uma pagina passando os parametros por query string.

    Porém eu queria uma forma de só chamar a DLL ao inves de criar esse redirect

    quinta-feira, 12 de setembro de 2013 15:40
  • entao a minha resposta fica pela, 

    "Menu Custom Action podes fazer chamadas a Class de VB (DLL), Ribbon Custom action nao podes."


    André Lage Microsoft SharePoint, CRM Consultant
    Blog:http://aaclage.blogspot.com
    Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/

    quinta-feira, 12 de setembro de 2013 16:18
    Moderador
  • Você tem um exemplo de criação de Menu Custom Action?
    quinta-feira, 12 de setembro de 2013 20:44
  • Olá Felipe, tudo bem?

    Eu fiz um artigo, para SP2010 mas acho que se aplica ao seu caso, que fala detalhado como fazer o que você procura:

    http://rodrigoromano.net/2012/11/12/boto-da-ribbon-chamar-um-cdigo-server-sidesharepoint-2010/

    Por favor, veja se atende a sua necessidade.

    Abraços!


    Rodrigo A. Romano - SharePoint Specialist Microsoft MCP, MCTS e MCITP - http://rodrigoromano.net - http://usersync.codeplex.com/

    segunda-feira, 28 de outubro de 2013 17:24
    Moderador