Friday, February 8, 2013

SharePoint 2010 - Nascondere bottoni del Ribbon con jquery (javascript)

Il Ribbon, questo ormai nostro compagno di viaggio nel mondo Microsoft.
Se lo conosci, scopri ogni volta quanto sia effettivamente utile a contestualizzare le tue azioni su documenti, item, ...
Una novità, introdotta ormai da MS, anche in altri ambienti, dopo Office, SharePoint, anche il nuovo CRM e persino ora Windows8...

Ma ad alcuni nostri clienti ancora può non piacere. Ebbene sì.
Così "perché non mi rimuovete quel tastino lì?", "perché non mi mostrate solo quello, ma solo per questa library, non per quella, ecc?"...



Tramite Object Model, possiamo "tranquillamente", con almeno un tre etti di righe di XML, riuscire a nascondere, disabilitare, modificare le funzioni, i bottoni, l'aspetto, gli eventi per la maggior parte dei pulsanti.

Ma ogni tanto, non è necessario intervenire così a fondo, magari non si ha sempre a disposizione una risorsa di sviluppo da utilizzare (o l'ambiente di sviluppo).

Così, l'ormai mitico jquery, è qui per noi, al solito!

Ho inserito nella pagina il codice sottostante. Potete farlo nel modo che più vi piace: in una content editor web part, modificando la pagina della vista con SP Designer 2010, modificando la master page, ecc...

Creiamo la funzione js

function HideButton(id)
{
    $('[id*="'+id+'"]').hide();   
}

Riceve l'id del bottone. Normalmente il bottone è un SPAN, ma se volessimo ad esempio nascondere tutto un gruppo, che è un LI, possiamo utilizzare sempre questa funzione.


Creiamo una seconda funzione js con l'elenco dei bottoni da nascondere:

function HideRibbonButton()
{
    //nasconde il bottone New Document
    HidButton("Ribbon.Documents.New.NewDocument");

    //nasconde il gruppo Edit & CheckOut
    HideButton("Ribbon.Documents.EditCheckout");

    //facciamo ripartire la funzione
    setTimeout(HideRibbonButton, 10);     
}

Richiamiamo nel $(document).ready, la funzione HideRibbonButton, così che all'avvio della pagina, parte il tutto.

Meglio ancora: scriviamo le istruzioni per eseguire il tutto, dopo che è stato caricato tutto il js della nostra pagina di SharePoint:

ExecuteOrDelayUntilScriptLoaded(InitEditForm, 'sp.ui.dialog.js');

function InitEditForm(){
    HideRibbonButton();
}

La pagina si carica e .. i comando spariscono, con buona pace per il cliente.

E nostra.