Wednesday, April 8, 2015

SharePoint - Errore javascript nel file WebResource.axd

Non so dire perché, né spiegarlo o trovare traccia del motivo per cui si presenta, ma ogni tanto, non su tutti i browser, non a tutti gli utenti, e neppure allo stesso utente nella stessa sessione di navigazione, però in pagine particolarmente personalizzate lato client (tramite jquery e javascript di varia forma), viene fuori un errore javascript

'Event' is undefined

normalmente in una delle righe del file WebResource.axd.
In alcune circostanze, non è neppure bloccante, in altre invece blocca l'esecuzione di altri javascript (soprattutto per browser datati, ad es IE7-8)

Proviamo a risolvere o aggirare il problema.

Eseguendo il debug di IE l'errore non si presenta.
Il che dà conferma alla teoria che l'osservazione modifica lo stato (fisica in background), ma non ci aiuta.

Entrando però in debug al momento dell'errore, ecco che abbiamo un'eccezione in questa funzione, dentro il WebResource.axd (riga 184 circa):

function Menu_HideItems(items) {
    if (document.body.__oldOnClick) {
        document.body.onclick = document.body.__oldOnClick;
        document.body.__oldOnClick = null;
    }
    Menu_ClearInterval();
   
if (!items || ((typeof(items.tagName) == "undefined") && (items instanceof Event))) {        items = __rootMenuItem;
    }

...


Mi sono fermato dal capirne i motivi: la funzione viene chiamata dall'evento document.body.onclick, il che fa pensare che sia per chiudere eventuali menu aperti, tramite il click, o roba del genere.
Va bene.
Nella mia pagina, serve un evento del genere? Se la risposta è NO, allora aggiriamo con questo codice, che ho messo nel $(document).ready.

//to prevent error on webresource.axd
var oldMenu_HideItems = Menu_HideItems;  
if(oldMenu_HideItems)
{
    Menu_HideItems = function(items)
    {
        try
          {
            return oldMenu_HideItems(items);
          }
        catch(err)
          {

          }
    }
}
//


Di fatto, ridefinisce la funzione, per recuperarla quando viene chiamata e poterla inserire in un try/catch.
Se la funzione non ha eccezioni, va, altrimenti, non fa nulla e non ho più errori javascript nella mia pagina.

E via.

Friday, January 30, 2015

SharePoint 2013 - Issue su Document Set

Abbiamo sperimentato un paio di Issue sulla gestione dei Document Set su SharePoint 2013 (testati e riprodotti su SP Online).
Ecco qui due promemoria per le prossime volte.

Singolo Apice nel Nome del Document Set

A differenza della gestione dei caratteri speciali NON permessi sui nomi dei file, per il Document Set abbiamo la restrizione solo per i seguenti caratteri:

" # % * : < > ? / \ |.

Quindi, apice singolo e & sono permessi nel nome del file.
MA, utilizzando l'apice singolo, in creazione del Document Set non abbiamo problemi: visualizziamo la Welcome Page correttamente.
Se usciamo dal Document Set, e proviamo a rientrarci, invece, abbiamo il comportamento della Cartella: nessuna welcome page...
Se togliamo l'apice dal nome, in Modifica Proprietà, tutto torna alla normalità.

Conclusione: controllate manualmente che NON sia presente l'apice singolo nel Nome del Document Set.


Errore in Welcome Page per Lookup errate

Creiamo un Content Type Document Set con una colonna di tipo Lookup.
Utilizziamo la colonna in visualizzazione nella Welcome Page.
Tutto fila liscio.
Ora, eliminiamo la Lista cui fa riferimento la Lookup, così da renderla "orfana".
[Già in teoria mi aspetterei un messaggio di errore del tipo "questa lista è utilizzata in una lookup, non puoi eliminarla", ma fa lo stesso]

Il nostro content type continua ad avere la lookup, anche se orfana di lista.
Poco male, non possiamo selezionare nessun valore.

Ma, se apriamo la Welcome Page abbiamo un errore, segnalato sulla web part DocumentSetProperties.

Conclusione: Nelle impostazioni del Content Type Document Set, togliamo dalla visualizzazione in Welcome Page la colonna: tutto va a posto.
Meglio ancora, togliamo la Lookup orfana ;-)


(segue)