Pergunta

eu quero esconder lista do sharepoint 2010/biblioteca menu de contexto baseado em usuários.

eu estou usando javascript

  $(document).ready(function(){      
        $('.ms-MenuUIPopupBody').live('blur', function() {       
           var elm = $("div.ms-MenuUIULItem a:contains('View in Browser')"); 
           elm.remove();     
           $("div.ms-MenuUIULItem a:contains('Edit in Browser')").remove();  
         });
  });

É ocultar o menu apenas no foco ou borrão ou passar o mouse no menu de contexto.

o menu de contexto é gerar dinamicamente pelo core.js arquivo

eu preciso adicionar o script quando o menu de contexto é criado.

por isso preciso de localizar o evento para o menu de contexto

enter image description here

como encontrar o evento de clique e adicione o meu código personalizado.

com "Andrew" eu achei uma boa solução para lidar com o menu de contexto do evento

var _MenuHtc_show;  

function OverrideMenuHtc_show()
{
   _MenuHtc_show = window.MenuHtc_show;
   window.MenuHtc_show= function (m,r,fr,ft,yoff) {
      _MenuHtc_show(m,r,fr,ft,yoff); 
      var elm = $(".ms-MenuUIULItem[text='Alert Me']");
      elm.remove();       
   };
}

ExecuteOrDelayUntilScriptLoaded(OverrideMenuHtc_show, "core.js")

seu trabalho bem, mas a sua ocultar o menu de contexto para todas as webparts.eu preciso encontrar o menu de contexto selecionado webpart de identificação para verificação é de direito webpart para ocultar o menu de contexto.

eu sou capaz de encontrar a peça web de identificação depois de uma vez que eu selecionar webpart com este código.

 var listId = SP.ListOperation.Selection.getSelectedList();  

ou

var ctxCur = GetCurrentCtx();
var SPGridViewGuid = ctxCur.listName;

mas se eu clicar em "v" e o símbolo com o limite de selecionar o webparts seu retorno nulo.

existe alguma maneira para encontrar o menu de contexto selecionado webpart de identificação.então, seus resolve o meu problema.

Foi útil?

Solução

O que sobre isso?

 $('.s4-ctx').css('display','none');

Ele irá esconder os botões que mostram menu de contexto.


Se você precisa ocultar o menu de contexto apenas de parte da web com o id especificado que você precisa para usar:

$("div[webpartid='85c13a33-57a3-456b-a19b-c68c97756184'] .s4-ctx").css('display','none');

Se você deseja remover o item do menu, por ex."Alerta-Me" adicionar esse script que substitui padrão core.js função "MenuHtc_show" e oculta o item de menu a partir do menu de contexto especificado webpart:

var _MenuHtc_show;  

function OverrideMenuHtc_show()
{
   _MenuHtc_show = window.MenuHtc_show;
   window.MenuHtc_show= function (m,r,fr,ft,yoff) {
      _MenuHtc_show(m,r,fr,ft,yoff); 
      var items = $("div[webpartid='85c13a33-57a3-456b-a19b-c68c97756184'] .ms-MenuUIULItem[text='Alert Me']");
      $(items).css('display','none');       
   };
}

ExecuteOrDelayUntilScriptLoaded(OverrideMenuHtc_show, "core.js")

Outras dicas

Qualquer razão você não estiver usando um HideCustomAction?

Aqui é o MSDN para isso.

E aqui é um recurso para encontrar os grupos corretos

finalmente, resolver o meu problema

eu avançado "Andrew" script completo e funcional.

ExecuteOrDelayUntilScriptLoaded(OverrideMenuHtc_show, "core.js");

var _MenuHtc_show;

function OverrideMenuHtc_show() {

    _MenuHtc_show = window.MenuHtc_show;
    window.MenuHtc_show = function (m, r, fr, ft, yoff) {
        _MenuHtc_show(m, r, fr, ft, yoff);

        var ctxCur = listcontext;
    //list or library GUID
        var listid = ctxCur.listName;

    if(listid =='your list\library GUID')
    {

                var elm = $(".ms-MenuUIULItem[text='Alert Me']");
                elm.remove();

    }

    };
}

Eu queria implementar o mesmo no SharePoint 2013.O CSS solução só funciona para uma página específica.Se cada um cria uma nova vista isso não vai funcionar.

@kavalirakesh e @Andrew resposta funcionou parcialmente para mim.o var ctxCur = listcontext;estava jogando exceção no listcontext é indefinido.Em vez disso, eu usei GetCurrentCtx() para obter ClientContext.

Mas eu estava recebendo o seguinte erro javascript quando eu estava clicando sobre a Configuração de roda dentada, no canto superior direito da página."Ocorreu um erro com os dados de busca.Por favor, atualize a página e tente novamente."

Meu código javascript adicionado através de um Delegado de Controlo na página principal cabeça.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Control Id="AdditionalPageHead"
           Sequence="90"
           ControlSrc="~/_CONTROLTEMPLATES/15/MyCustomFolder/ECBDelegateControl.ascx" />
</Elements>

O controlo de utilizador "ECBDelegateControl.ascx" tinha o alforje abaixo

<script type="text/javascript"  src="../../../_layouts/15/MyScripts/Script/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
        ExecuteOrDelayUntilScriptLoaded(OverrideMenuHtc_show, "core.js");
    });

    function OverrideMenuHtc_show() {
        var ctx = GetCurrentCtx();
        var listName = ctx.ListTitle;

        if (listName == 'My First List' ||
            listName == 'My Second List') {
            var _MenuHtc_show;
            _MenuHtc_show = window.MenuHtc_show;
            window.MenuHtc_show = function (m, r, fr, ft, yoff) {
                _MenuHtc_show(m, r, fr, ft, yoff);
                var elm = $("li.ms-core-menu-item[text='Delete Item']");
                elm.remove();
            }
        };
    }
</script>

O ClientContext foi nulo, e eu tinha que carregar o sp.js antes que eu possa chamar de GetCurrentCtx().O erro de javascript eu costumava ter também está desaparecido.Isso é muito melhor solução do que mudar core.js arquivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top