Pregunta

Quiero ocultar el menú contextual de la Lista / Lista de la Biblioteca de SharePoint 2010 basada en usuarios.

Estoy usando abajo 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();  
         });
  });

Está ocultando el menú solo en foco o desenfoque o ratón en el menú contextual.

El menú contextual está generando dinámicamente por el archivo Core.js

Necesito agregar el script cuando se crea el menú contextual.

Por lo tanto, necesito encontrar el evento para el menú contextual

ingrese la descripción de la imagen aquí

Cómo encontrar el evento de clic y agregar mi código personalizado.

con "Andrew" encontré una buena solución y para manejar el evento del menú contextual

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")

está funcionando bien, pero su menú de contexto de escondite para todas las webpartes. Necesito encontrar el menú contextual que se seleccionó WEBPART ID para verificar que es el webpart correcto para ocultar el menú contextual.

Soy capaz de encontrar la ID de WebPart después de una vez que seleccione WebPart con este código.

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

o

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

Pero si hago clic en "V" símbolo sin seleccionar los webparts su retorno nulo.

¿Hay alguna forma de encontrar el menú contextual que seleccionó WebPart ID? Así que resuelve mi problema.

¿Fue útil?

Solución

¿Qué hay de eso?

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

ocultará los botones que muestren el menú contextual.


Si necesita ocultar el menú contextual solo desde la parte web con la ID específica, debe usar:

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


Si desea eliminar el elemento del menú, para ex."Avisarme" Agregue este script que anula la función Standard Core.js "MenuHTC_Show" y oculta el elemento del menú del menú de contexto en la Página web especificada:

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")

Otros consejos

¿Alguna razón por la que no estás usando una hidecustomaction?

aquí es el MSDN para eso.

y aquí es un recurso para encontrar los grupos correctos

Finalmente esto resuelve mi problema

Script Mejoré "Andrew" para hacer funcional completo.

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();

    }

    };
}

Quería implementar lo mismo en SharePoint 2013. La solución CSS solo funciona para una página en particular.Si uno crea una nueva vista, esto no funcionará.

@kavalirakesh y @andrew Respuesta trabajó parcialmente para mí. el var ctxcur= listcontext;estaba lanzando una excepción en ListContext no está definido. En su lugar, usé GetCurrentctx () para obtener ClientContext.

Pero estaba obteniendo el siguiente error de JavaScript cuando hacía clic en la configuración de configuración en el lado superior derecho de la página. "Se ha producido un error con la búsqueda de datos. Refresque la página y vuelva a intentarlo".

Mi código JavaScript agregado a través de un control delegado en la página principal.

<?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>

El control de usuario "ecbdelegatecontrol.ascx" tuvo el scripto a continuación

<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>

El ClienteContext fue nulo y tuve que cargar el SP.JS antes de que pueda llamar a GetCurrentctx (). El error de JavaScript que solía obtener también se ha ido. Esta es una solución mucho mejor que cambiar el archivo core.js.

Licenciado bajo: CC-BY-SA con atribución
scroll top