none
Como esconder as opções de menu de um menu de edição de um item de uma biblioteca de imagens do sharepoint 2010? RRS feed

  • Pergunta

  • Olá,
    Tenho meu site sharepoint 2010.
    Este site possui uma biblioteca de imagens.

    Esta biblioteca de imagens possui uma visão que contém uma coluna Nome (vinculado ao documento com o menu de edição).

    Quando o usuário passa o mouse em cima do nome do item na visão uma setinha lhe aparece.
    Esta seta possui as seguintes opções de menu:

    Exibir Propriedades
    Editar Propriedades
    --
    Editar Documento
    --
    Fazer Check-out
    Histórico de Versões
    --
    Alertar-me
    Enviar para >
    Baixar Imagem
    --
    Gerenciar Permissões
    Excluir

    Como que faço para excluir algumas dessas opções?
    Na verdade preciso apenas deixar as duas primeiras.

    Obrigado

    k2rto4-Pb - Analista SharePoint

    terça-feira, 24 de julho de 2012 18:24

Respostas

  • Hum estranho,

    Fiz agora em 5 minutos, o que falhou?

    <script type="text/javascript">
    function Custom_AddDocLibMenuItems(m, ctx)
    {
     var strDisplayTextCustom = 'Exibir Propriedades';
    
     setDocType();
    
    //Se pretendes redirecionar para a pagina
    //strAction="window.location =ctx.HttpRoot+\"/[caminho que falta exemplo: /Teste]/Forms/DispForm.aspx?ID=\"+currentItemID";
    
    //Se pretendes redirecionar para a pagina em modal dialog
    strAction="var options= SP.UI.$create_DialogOptions();options.url = ctx.HttpRoot+\"/[caminho que falta exemplo: /Teste]/Forms/DispForm.aspx?ID=\"+currentItemID;options.height = 300;SP.UI.ModalDialog.showModalDialog(options);";
    
    //exemplo
     var strImagePath = "";
    
     CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
    var strDisplayTextCustom = 'Editar Propriedades';
    
     strAction="window.location =ctx.HttpRoot+\"[caminho que falta exemplo: /Teste]/Forms/EditForm.aspx?ID=\"+currentItemID";
    
    //exemplo
     var strImagePath = ctx.imagesPath+"EDITITEM.GIF";
    
    CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
     CAMSep(m);
     
     return true; 
    }
    </script>


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

    • Marcado como Resposta TI DEV segunda-feira, 30 de julho de 2012 14:55
    segunda-feira, 30 de julho de 2012 14:33
    Moderador
  • Olá André,

    Você é o cara do SharePoint.

    Consegui resolver meu problema aqui meu amigo.

    A única coisa que fiz diferente do seu código foi executar a tela do Editar Propriedades em Modal Dialog, além de aumentar a altura do mesmo.

    O meu código ficou da seguinte forma:

    	<script type="text/javascript">
    	
    	function Custom_AddDocLibMenuItems(m, ctx)
    	{
    	
    		var strDisplayTextCustom = 'Exibir Propriedades';
    
    		setDocType();
    		strAction="var options= SP.UI.$create_DialogOptions();options.url = ctx.HttpRoot+\"/MinhaBiblioteca/Forms/DispForm.aspx?ID=\"+currentItemID;options.height = 800;SP.UI.ModalDialog.showModalDialog(options);";
    
    		var strImagePath = "";
    
    		CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
    		var strDisplayTextCustom = 'Editar Propriedades';
    
    		strAction="var options= SP.UI.$create_DialogOptions();options.url = ctx.HttpRoot+\"/MinhaBiblioteca/Forms/EditForm.aspx?ID=\"+currentItemID;options.height = 800;SP.UI.ModalDialog.showModalDialog(options);";
    
    		var strImagePath = ctx.imagesPath+"EDITITEM.GIF";
    
    		CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
    		CAMSep(m);
     
    		return true; 
    	}
    	
    	</script>
    

    Grande Abraço
    

    k2rto4-Pb - Analista SharePoint

    • Marcado como Resposta TI DEV segunda-feira, 30 de julho de 2012 14:58
    segunda-feira, 30 de julho de 2012 14:55
  • Utilize o comando EditItem2, padrão do SharePoint:

    <script language="javascript" type="text/javascript" > 
     
    function Custom_AddDocLibMenuItems(m, ctx)
    {
    
    var strExibir = 'Exibir Propriedades';
    
    setDocType();
    
    var viewItemUrl = ctx.displayFormUrl+strSeperator + "ID=" + currentItemID;
    
    strAction= "EditItem2(event, '"+viewItemUrl+"')"; 
    
    var strImagePath = ctx.imagesPath + "edititem.gif";
    
    CAMOpt(m, strExibir, strAction, strImagePath);
    
    CAMSep(m);
    
     
    return true; 
    
    }
    
    
    </script>


    ROBERTOSLJUNIOR


    segunda-feira, 30 de julho de 2012 15:50

Todas as Respostas

  • k2rto4-Pb,

    Você pode criar um novo nível de permissão com os recursos que necessita. Já pensou nisso?

    Com relação ao check-out, você pode desabilitar na propria biblioteca.


    Atenciosamente, Rafael Fausto


    terça-feira, 24 de julho de 2012 23:29
  • A única maneira de fazer isso é utilizando javascript.

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


    ROBERTOSLJUNIOR

    quarta-feira, 25 de julho de 2012 00:05
  • Rafael bom dia,

    Vou fazer alguns testes aqui com níveis de permissões.

    Abs


    k2rto4-Pb - Analista SharePoint

    quarta-feira, 25 de julho de 2012 12:19
  • Roberto Bom dia,

    Você ja fez algo parecido com isso?

    Dei uma olhada neste link passado e vi que o processo é um pouco complexo.

    É preciso modificar o arquivo core.js.

    Este arquivo é enorme....

    Abs

    
    

    k2rto4-Pb - Analista SharePoint

    quarta-feira, 25 de julho de 2012 12:21
  • Customize utilizando Jquery.

    Insira uma Web Part de Editor de Conteúdo oculta em sua lista e crie uma ligação com o código:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script language="javascript" type="text/javascript"> $(document).ready(function(){ $("tr[text='Editar Documento']").remove();
    $("tr[text='Fazer Check-out']").remove();

    //CONTINUA

    });

    </script>

    Obs: Todos sabem que isso não é a melhor prática, mais ocultar items de ECB é um problema conhecido do SharePoint.


    ROBERTOSLJUNIOR

    quarta-feira, 25 de julho de 2012 13:11
  • Unico problema é que desse jeito você estaria somente escondendo.

    Um usuário com permissão pode utilizar o recurso de SharePoint Client Object atraves do Javascript para realizar as ações.

    O ideal é customizar o nivel de permissão.


    Atenciosamente, Rafael Fausto

    quarta-feira, 25 de julho de 2012 16:59
  • Boa tarde Rafael,

    Customizando o nível de permissão eu consigo deixar apenas o Exibir e Editar?

    Abs


    k2rto4-Pb - Analista SharePoint

    quarta-feira, 25 de julho de 2012 17:29
  • Unico problema é que desse jeito você estaria somente escondendo.

    Um usuário com permissão pode utilizar o recurso de SharePoint Client Object atraves do Javascript para realizar as ações.

    O ideal é customizar o nivel de permissão.


    Atenciosamente, Rafael Fausto

    Por isso eu apresentei uma solução ideal em minha primeira resposta.

    Boa tarde Rafael,

    Customizando o nível de permissão eu consigo deixar apenas o Exibir e Editar?

    Abs

    NÃO. Você não vai conseguir esse tipo de customização utilizando permissão.


    ROBERTOSLJUNIOR

    quarta-feira, 25 de julho de 2012 20:02
  • Roberto,

    Concordo com você. Não resolve todo o problema, mas reduz bastante o problema.


    Atenciosamente, Rafael Fausto

    quinta-feira, 26 de julho de 2012 01:43
  • Existe outra alternativa utilizando o javascript e a API core.js descrita pelo roberto que é fazer overwrite do metodos na propia pagina e atraves de web part de html.

    Na lista adiciona web part para adicionar o javascript que pretendes e faz o overwrite do metodo "function Custom_AddDocLibMenuItems(m, ctx)"

    exemplo de como recriar todo o menu:

    function Custom_AddDocLibMenuItems(m, ctx)
    {
     var strDisplayTextCustom = 'nova opcao do menu';
    
     setDocType();
    
     //lança um alerta
     strAction="alert(ctx.HttpRoot+unescapeProperly(currentItemFileUrl))";
    
     var strImagePath = ctx.imagesPath+"XLS16.GIF";
    
     // adiciona nova opcao no menu
     CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
     // adiciona um separador
     CAMSep(m);
     
     //se retorna true entao remove todas as opcoes que vem por defeito e adiciona a novas que crias-te no javascritp
     return true; 
    }



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


    sexta-feira, 27 de julho de 2012 11:30
    Moderador
  • Olá Roberto,

    Não precisei adicionar uma wsp de conteúdo para utilizar javascript na página da visão da biblioteca.

    Para usar o javascript eu o adicionei em asp:ContentPlaceHolderID=PlaceHolderBodyAreaClass.

    O meu código na página esta da seguinte forma:

    <asp:Content ContentPlaceHolderId="PlaceHolderBodyAreaClass" runat="server">
    
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    
    <script language="javascript" type="text/javascript"> 
     
    $(document).ready(function(){
    $("tr[text='Editar Documento']").remove();
    $("tr[text='Fazer Check-out']").remove();//CONTINUA});
    
    </script>
    
    </asp:Content>
    


    Fiz o teste aqui e não deu certo.

    Seria isso mesmo?

    Analisando o código vejo que ele procura por uma tr com texto "Editar Documento".

    Acho que não existe esta tr no meu código.

    Esta tabela de opções do menu é montada via javascript.

    Abs

    k2rto4-Pb - Analista SharePoint

    sexta-feira, 27 de julho de 2012 13:40
  • Olá André,

    Basta adicionar o seu código na página, certo?

    E onde que faço o overwrite?

    Abs


    k2rto4-Pb - Analista SharePoint

    sexta-feira, 27 de julho de 2012 13:57
  • Ola k2rto4,

    Sim adiciona o JS onde esta a Listview com os dados da lista, ou seja adiciona html form webpart e adiciona o javascript "tags de <script> tambem" ai reconstrois o menu dos items.

    Adiciona a web Part depois da listview, nao antes senao o js nao executa e faz o overwrite do metodo. 


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

    segunda-feira, 30 de julho de 2012 07:12
    Moderador
  • Bom dia meu amigo André,

    Consegui agora esconder todos os menus.

    Para que eu possa adicionar o Exibir e Editar propriedades basta procurar no arquivo core.js, certo?

    Abs

    

    k2rto4-Pb - Analista SharePoint

    segunda-feira, 30 de julho de 2012 11:57
  • basicamente sim,

    Da uma olhada nas propiedades e usa as que precisas ou cria por ti propio atraves das propiedades do Javascript. assim fica tudo nessa pagina.

    Mas isto e so uma hipotese a alternativa do Roberto tambem é valida.


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

    segunda-feira, 30 de julho de 2012 11:58
    Moderador
  • Olá,

    Eu não consegui ter nenhum resultado fazendo da forma como o Roberto passou.

    Vou tentar fazer da forma como você me disse.

    Assim que eu conseguir eu postarei a resposta aqui.

    Obrigado.

    Abs


    k2rto4-Pb - Analista SharePoint

    segunda-feira, 30 de julho de 2012 12:10
  • Olá André,

    Existe alguma forma para que meu javascript deixa apenas as opções Exibir e Editar propriedades?

    Assim eu não preciso recriá-las.

    Estou tendo certa dificuldade em recriá-las.

    Abs

    

    k2rto4-Pb - Analista SharePoint

    segunda-feira, 30 de julho de 2012 13:57
  • Hum estranho,

    Fiz agora em 5 minutos, o que falhou?

    <script type="text/javascript">
    function Custom_AddDocLibMenuItems(m, ctx)
    {
     var strDisplayTextCustom = 'Exibir Propriedades';
    
     setDocType();
    
    //Se pretendes redirecionar para a pagina
    //strAction="window.location =ctx.HttpRoot+\"/[caminho que falta exemplo: /Teste]/Forms/DispForm.aspx?ID=\"+currentItemID";
    
    //Se pretendes redirecionar para a pagina em modal dialog
    strAction="var options= SP.UI.$create_DialogOptions();options.url = ctx.HttpRoot+\"/[caminho que falta exemplo: /Teste]/Forms/DispForm.aspx?ID=\"+currentItemID;options.height = 300;SP.UI.ModalDialog.showModalDialog(options);";
    
    //exemplo
     var strImagePath = "";
    
     CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
    var strDisplayTextCustom = 'Editar Propriedades';
    
     strAction="window.location =ctx.HttpRoot+\"[caminho que falta exemplo: /Teste]/Forms/EditForm.aspx?ID=\"+currentItemID";
    
    //exemplo
     var strImagePath = ctx.imagesPath+"EDITITEM.GIF";
    
    CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
     CAMSep(m);
     
     return true; 
    }
    </script>


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

    • Marcado como Resposta TI DEV segunda-feira, 30 de julho de 2012 14:55
    segunda-feira, 30 de julho de 2012 14:33
    Moderador
  • Olá André,

    Você é o cara do SharePoint.

    Consegui resolver meu problema aqui meu amigo.

    A única coisa que fiz diferente do seu código foi executar a tela do Editar Propriedades em Modal Dialog, além de aumentar a altura do mesmo.

    O meu código ficou da seguinte forma:

    	<script type="text/javascript">
    	
    	function Custom_AddDocLibMenuItems(m, ctx)
    	{
    	
    		var strDisplayTextCustom = 'Exibir Propriedades';
    
    		setDocType();
    		strAction="var options= SP.UI.$create_DialogOptions();options.url = ctx.HttpRoot+\"/MinhaBiblioteca/Forms/DispForm.aspx?ID=\"+currentItemID;options.height = 800;SP.UI.ModalDialog.showModalDialog(options);";
    
    		var strImagePath = "";
    
    		CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
    		var strDisplayTextCustom = 'Editar Propriedades';
    
    		strAction="var options= SP.UI.$create_DialogOptions();options.url = ctx.HttpRoot+\"/MinhaBiblioteca/Forms/EditForm.aspx?ID=\"+currentItemID;options.height = 800;SP.UI.ModalDialog.showModalDialog(options);";
    
    		var strImagePath = ctx.imagesPath+"EDITITEM.GIF";
    
    		CAMOpt(m, strDisplayTextCustom, strAction, strImagePath);
    
    		CAMSep(m);
     
    		return true; 
    	}
    	
    	</script>
    

    Grande Abraço
    

    k2rto4-Pb - Analista SharePoint

    • Marcado como Resposta TI DEV segunda-feira, 30 de julho de 2012 14:58
    segunda-feira, 30 de julho de 2012 14:55
  • Utilize o comando EditItem2, padrão do SharePoint:

    <script language="javascript" type="text/javascript" > 
     
    function Custom_AddDocLibMenuItems(m, ctx)
    {
    
    var strExibir = 'Exibir Propriedades';
    
    setDocType();
    
    var viewItemUrl = ctx.displayFormUrl+strSeperator + "ID=" + currentItemID;
    
    strAction= "EditItem2(event, '"+viewItemUrl+"')"; 
    
    var strImagePath = ctx.imagesPath + "edititem.gif";
    
    CAMOpt(m, strExibir, strAction, strImagePath);
    
    CAMSep(m);
    
     
    return true; 
    
    }
    
    
    </script>


    ROBERTOSLJUNIOR


    segunda-feira, 30 de julho de 2012 15:50
  • Olá amigos,

    Consegui exibir apenas os dois menus mencionados, mas agora estou com um novo problema.

    Depois que salvo alguma alteração em algum item da biblioteca a visão não é atualizada com a alteração.

    Ex:

    Acesso a página.

    Clico no menu Editar do item.

    Um modal aparece e eu altero algum valor.

    Depois que salvo o modal fecha e volta para a visão.

    A visão não mostra a atualização.

    Olhando uma visão padrão percebo que após o Salvar a visão sofre um Refresh.

    Alguém ja passou por isso anteriormente?

    Obrigado 

    
    
    

    k2rto4-Pb - Analista SharePoint

    quarta-feira, 1 de agosto de 2012 14:42