Domanda

Voglio nascondere il menu di contesto di SharePoint 2010 Elenco / Libreria in base agli utenti.

Sto usando sotto 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();  
         });
  });
.

Si sta nascondendo il menu solo su messa a fuoco o sfocatura o mouse-over nel menu di scelta rapida.

Il menu di scelta rapida sta generando dinamicamente da Core.js File

Devo aggiungere lo script quando viene creato il menu di scelta rapida.

Quindi ho bisogno di trovare l'evento per il menu di scelta rapida

Inserisci Descrizione dell'immagine qui

Come trovare l'evento Click e aggiungi il mio codice personalizzato.

Con "Andrew" ho trovato una buona soluzione e gestire l'evento del menu di scelta rapida

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

Il suo funzionamento fine ma il suo menu di scelta rapida per tutti i WebParts. Ho bisogno di trovare il menu di scelta rapida selezionato ID WebPart per controllare è giusto WebPart per nascondere il menu di scelta rapida.

Sono in grado di trovare l'ID WebPart dopo una volta selezionato WebPart con questo codice.

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

o

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

Ma se clicco su simbolo "V" con la selezione dei WebParts il suo ritorno null.

C'è un modo per trovare il menu di scelta rapida ID WebPart selezionato. Quindi risolve il mio problema.

È stato utile?

Soluzione

Che dire di quello?

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

Nascondi i pulsanti che mostrano il menu di scelta rapida.


.

Se è necessario nascondere il menu di scelta rapida solo dalla web part con ID specificato è necessario utilizzare:

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


.

Se si desidera rimuovere la voce di menu, per es."Avviso" Aggiungi questo script che sostituisce la funzione Core.js standard "MENUHTC_SHOW" e nasconde la voce di menu dal menu di scelta rapida in WebPart specificato:

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

Altri suggerimenti

Qualsiasi motivo per cui non stai usando un hidecustomust?

qui è l'MSDN per quello.

e qui è una risorsa per trovare i gruppi corretti

.

Alla fine questo risolve il mio problema

Ho migliorato lo script "Andrew" per rendere Full funzionale.

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

    }

    };
}
.

Volevo implementare lo stesso su SharePoint 2013. La soluzione CSS funziona solo per una particolare pagina.Se uno crea una nuova vista questo non funzionerà.

@Kavalirakesh e @ Endrew Risposta funzionava parzialmente per me. il var ctxcur= listcontext;Stava lanciando eccezione su listcontext non è definito. Invece ho usato getcurrentctx () per ottenere il clienteContext.

Ma stava ottenendo il seguente errore JavaScript quando stavo facendo clic sull'impostazione del dente in alto a destra della pagina. "Si è verificato un errore con il recupero dei dati. Aggiorna la pagina e riprovare."

Il mio codice JavaScript aggiunto tramite un controllo delegato sulla testa della pagina principale.

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

Il controllo dell'utente "ECBDELEGATECONTROL.ASCX" ha avuto la scritta inferiore

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

Il clientcontext era nullo e ho dovuto caricare lo sp.js prima di poter chiamare getcurrentctx (). L'errore JavaScript che ho usato per ottenere è andato anche via. Questa è una soluzione molto migliore del modo di cambiare file Core.js.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top