Durante l’upgrade della mia master page (Migrare una master page da SharePoint 2007 a SharePoint 2010), una volta abilitato l’accesso anonimo (grazie al post di Randy Drisgill, MVP da seguire per le varie dritte sul branding sia 2007 che 2010, sul come farlo) mi sono resa conto che il rendering non era proprio quello che volevo. In particolare, per quanto sia un funzionamento OOTB, rimaneva nell’alto della pagina la nuova briciola di pane inclusa nel ribbon e prevista per le master page sia di SharePoint Server che di Foundation, ovvero il controllo PopoutMenu:
<SharePoint:PopoutMenu
runat=”server”
ID=”GlobalBreadCrumbNavPopout”
IconUrl=”/_layouts/images/fgimg.png”
IconAlt=”<$Resources:wss,master_breadcrumbIconAlt%>”
IconOffsetX=0
IconOffsetY=112
IconWidth=16
IconHeight=16
AnchorCss=”s4-breadcrumb-anchor”
AnchorOpenCss=”s4-breadcrumb-anchor-open”
MenuCss=”s4-breadcrumb-menu”><div class=”s4-breadcrumb-top”>
<asp:Label runat=”server” CssClass=”s4-breadcrumb-header” Text=”<%$Resources:wss,master_breadcrumbHeader%>” /></div></SharePoint:PopoutMenu>
Graficamente, questa la resa:
Come nasconderlo?
Con il mitico SPSecurityTrimmedControl (vedi su Msdn i possibili valori che può assumere), che di fatto ci consente, in base al permesso associato agli utenti (gestire le liste, aggiungere elementi alle liste, visualizzare gli elementi, etc) di decidere chi può vedere cosa sulla pagina.
Ho dunque inglobato il controllo di navigazione all’interno di quello di trimming:
<SharePoint:SPSecurityTrimmedControl runat=”server” PermissionsString=”ViewFormPages” PermissionMode=”Any” ID=”NavigateUpHidden”>
<SharePoint:PopoutMenu
runat=”server”
ID=”GlobalBreadCrumbNavPopout”
IconUrl=”/_layouts/images/fgimg.png”
IconAlt=”<$Resources:wss,master_breadcrumbIconAlt%>”
IconOffsetX=0
IconOffsetY=112
IconWidth=16
IconHeight=16
AnchorCss=”s4-breadcrumb-anchor”
AnchorOpenCss=”s4-breadcrumb-anchor-open”
MenuCss=”s4-breadcrumb-menu”><div class=”s4-breadcrumb-top”>
<asp:Label runat=”server” CssClass=”s4-breadcrumb-header” Text=”<%$Resources:wss,master_breadcrumbHeader%>” /></div></SharePoint:PopoutMenu>
</SharePoint:SPSecurityTrimmedControl>
Questo però il risultato ottenuto:
ovvero il controllo è nascosto, ma rimane l’ingombro del ribbon
.
La soluzione?
Ampliare il raggio d’azione del security trimmed control, facendo in modo che inglobasse tutto il ribbon:
<SharePoint:SPSecurityTrimmedControl runat=”server” PermissionsString=”ViewFormPages” PermissionMode=”Any” ID=”RibbonHidden”>
<div id=”s4-ribbonrow” class=”s4-pr s4-ribbonrowhidetitle”>
<div id=”s4-ribboncont”>
…..
</div>
</div>
</SharePoint:SPSecurityTrimmedControl>
Una domanda Barbara: usando il controllo SPSecurityTrimmedControl in un precedente progetto “:-)” mi sono accorto che questi genera lato rendering un tag SPAN, comportamento molto fastidioso se cerco di scrivere codice xhtml dove, per esempio, un panel viene renderizzato come DIV (ovvero avrei uno SPAN che mi racchiude un DIV, sintatticamente scorretto). Questo succede con SharePoint 2007, come viene renderizzato ora con SP 2010?
Ciao
Ciao Daniele. La verità?
.
Purtroppo nulla è cambiato su questo fronte, abbiamo ancora una sintassi scorretta, ovvero uno span che contiene il div
Confidiamo nel fatto che sia una beta e che altre dichiarazioni sulla conformità all’xhtml strict non sembrino essere rispettate?
Ciao
Pingback: Nascondere il Ribbon all’Anonimo e governare la ScrollBar « NonsoloSharePoint – Baxy's Blog