Tag

, , ,

Come ho già fatto notare nel post Come nascondere il controllo “PopoutMenu” per l’accesso anonimo, l’ingombro del Ribbon e la visibilità del controllo PopuoutMenu sono previsti anche per l’accesso anonimo.

Come possiamo dunque affrontare la questione? Beh, una strategia potrebbe essere quella di educare i grafici a disegnare dei layout che li prevedano; tuttavia sappiamo come questa strada sia spesso lontana dalla realtà, sia perché probabilmente si imbriglierebbe la fantasia dei creativi, sia perché così facendo il layout rimarrebbe troppo Mossly (chissà come si dirà ora che l’acronimo Moss non vale più per la versione 2010…ShalrePontly?).

Scherzi a parte, analizziamo un attimo il Ribbon; in particolare abbiamo:

<div id=”s4-ribbonrow” class=”s4-pr s4-ribbonrowhidetitle”>
    <div id=”s4-ribboncont”>
        <SharePoint:SPRibbon  runat=”server”
            PlaceholderElementId=”RibbonContainer”
            CssFile=””>….

Un div s4-ribbonrow che contiene un altro div s4-ribboncont che a sua volta contiene il controllo SharePoint:SPRibbon che a sua volta contiene i vari comandi di gestione (e che ora non vado ad elencare), compreso il Popoutmenu.

In particolare il controllo SharePoint:SPRibbon permette di elencare le seguenti proprietà:

  • AuthenticationRestrictions=”AllUsers/AnonymousUsersOnly/
    AuthenticatedUsersOnly
  • PermissionMode=”All/Any
  • Permissions=”(ad es:ViewFormPages)” PermissionsString=”(ad es:ViewFormPages)

ma, una volta impostate, non sembrano sortire alcun effetto (per chi se lo chiedesse, le stesse proprietà non sono esposte dal controllo PopOutMenu). Sarà un baco della versione non ancora definitiva? Se così fosse, o sarà, ricordiamoci che poi sarà anche necessario cambiare le proprietà css #s4-ribbonrow che prevede un’altezza minima di 43px.

Ma se così non fosse?

Interessante la soluzione proposta da Randy Disgill in questo thread, ovvero sfruttare un controllo asp per caricare uno stille appositamente per l’anonimo (ovvero nascondere la riga del ribbon):

    <asp:LoginView id=”LoginView” runat=”server”>
     <AnonymousTemplate>
     <style type=”text/css”>
       body #s4-ribbonrow {
        display: none;
       }
      </style>
     </AnonymousTemplate>
    </asp:LoginView>

Un’alternativa, sempre no code, è l’utilizzo del SPSecurityTrimmedControl come avevo suggerito nel precedente post; un’obiezione che era stata sollevata da Daniele, tuttavia, era la sintassi scorretta che questo controllo sputava, ovvero un tag <span> che a sua volta conteneva un tag <div>.

Ebbene, la cosa assurda in cui mi sono imbattuta (presumo un bug nel rendering della pagina ma comunque funzionale) è che mettendo sia il SPSecurityTrimmedControl, sia settando le proprietà sopra elencate del SharePoint:SPRibbon (di fatto le proprietà PermissionMode, Permissions e PermissionsString vanno settate uguali in entrambi i controlli), non viene caricato nessun Ribbon neanche per l’anonimo e l’html rimane pulito.

Attenzione però alla ScrollBar: nel layout OOTB la scrollbar del body è impostata a “no”, e a gestire lo scrolling dei contenuti è la proprietà overflow-y:scroll del div s4-workspace più una serie di script che vengono caricati al caricamento del ribbon.
Se non vogliamo che l’anonimo si ritrovi senza scrollbar dobbiamo cambiare alcune proprietà:

  • nell’html: <body scroll=”auto”>
  • nel nostro css:

body.v4master{

overflow:auto!important;

}

body #s4-workspace{

overflow-y:auto;

}

Spero il post vi sia di aiuto e di gradimento,
ci vediamo alla SharePoint Conference la settimana prossima,

Barbara