venerdì 24 agosto 2012

SharePoint 2010 - Cascade Drop Down List con JQuery

Ho già affrontato in un precedente post il problema dei menu a cascata, componente non disponibile OOB sulla piattaforma SharePoint 2010, proponendo una soluzione che fa uso di InfoPath. Il difetto di tale soluzione è che si applica solamente alla versione Enterprise di SharePoint, dal momento che le versioni Foundation e Server sono prive degli InfoPath Services.
Con questa prossima soluzione, che fa uso di JQuery, si potranno creare menù a cascata con qualsiasi versione di SharePoint, anche in assenza di InfoPath.
Riprendiamo quindi l’esempio precedente, con le due liste “Marche” e “Modelli”, creiamo una nuova lista che chiamiamo “Automobili”, e la popoliamo con due controlli a discesa “Marca” e “Modello”.


Ora è necessario rendere disponibile le librerie JQuery  e JQ uery Library for Sharepoint . Nel mio caso ho creato una cartella sotto “SiteAssets” chiamata “Javascript” in cui ho inserito i componenti. I due file saranno quindi raggiungibili tramite http://<WEBSITE>/siteassets/javascript/<SCRIPT.JS>, ma è sufficiente caricare i file in una qualsiasi raccolta su cui gli utenti hanno diritto di lettura.



Torniamo ora alla nostra lista “Automobili” ed apriamo il modulo “NewForm.aspx” in modalità di modifica avanzata. Lo stesso procedimento sarà poi da applicare al modulo “EditForm.aspx”. Nel caso invece si applichi questa soluzione ad una raccolta documentale, sarà sufficiente modificare solamente il modulo “EditForm.aspx” per avere il menù a cascata sia sul nuovo elemento che sulla modifica.



Impostiamo la visualizzazione codice, ci posizioniamo sotto la riga

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">

ed incolliamo il seguente script:

<script type="text/javascript" src="/siteassets/javascript/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="/siteassets/javascript/jquery.SPServices-0.7.1a.min.js"></script>
<script type="text/javascript">
 $(document).ready(function() {
  $().SPServices.SPCascadeDropdowns({
   relationshipList: " Modelli ",
   relationshipListParentColumn: " Marca ",
   relationshipListChildColumn: " Title ",
   parentColumn: " Marca ",
   childColumn: " Modello ",
   debug: true
  });
 });
</script>
Salviamo, avviamo il form, e osserviamo (con non poca soddisfazione) i risultati:
   

Il componente funziona alla grande, e non presenta l’effetto collaterale visto per il caso di InfoPath.

Vediamo ora i principali parametri utilizzati nella funzione:

  • relationshipList : è la lista in cui è inserita la relazione tra I due campi, nel nostro caso la lista “Modelli”
  • relationshipListParentColumn : è, nella lista di relazione, il campo padre, nel nostro caso il campo “Marca”     
  • relationshipListChildColumn : è, nella lista I relazione, il campo figlio, nel nostro caso il modello di vettura. In questo particolare caso, però, dobbiamo inserire come il valore “Title”, dal momento che, nella lista “Modelli”, abbiamo rinominato questo campo (ma che SharePoint, by design, mantiene con il suo nome di default).
  • parentColumn : fa rifermento alla lista su cui stiamo operando, nel nostro caso “Automobili” e fa riferimento al campo padre, per noi “Marca”
  • childColumn : fa rifermento alla lista su cui stiamo operando, nel nostro caso “Automobili” e fa riferimento al campo figlio, per noi “Modello”
E, come nel migliore dei casi, poca spesa tanta resa!

Tip&Trick: anziché inserire il codice direttamente nella pagina, è possibile salvarlo in un file di testo e richiamarlo tramite una Content Editor Web Part. In questo modo si aumenta la manutenibilità, il riuso, ed il controllo del codice.

giovedì 23 agosto 2012

SharePoint 2010 - Cascade Drop Down List con InfoPath

Scenario
Supponiamo di voler realizzare una lista per gestire delle automobili, e di voler inserire un controllo che permetta, una volta selezionata (da un menù a tendina) la marca, di poter scegliere (da un altro menù) il modello.

Realizzare una cosa di questo tipo, con i controlli OOB, è impossibile, infatti SharePoint 2010 non offre, in nessuna delle sue versioni, un componente di tipo Cascade Drop Down List.

Per ovviare a questo problema, però, è possibile sfruttare InfoPath 2010 e realizzare il controllo che ci serve; attenzione però: questa soluzione che fa uso degli InfoPath Services è percorribile solo se si dispone della versione Enterprise di SharePoint , dal momento che è l’unica che rende disponibile questi servizi.

Creiamo in SharePoint (tramite web o Designer) due liste, una per le marche ed una per i modelli. La lista “Marche” è formata per semplicità da un solo campo di testo, mentre la lista “Modelli” contiene un campo di testo per il modello, ed un campo di lookup sulla lista “Marche”.


Per creare la nostra lista di autovetture avviamo InfoPath Designer 2010, e dal menù Nuovo scegliamo di creare un Elenco SharePoint.


La procedura ci guida fino al completamento dell’operazione:

  • scegliamo il server SharePoint di destinazione

  • diamo un nome all’elenco (in questo caso ho scelto di procedere alla creazione da zero di un elenco, ma è possibile personalizzare un elenco già esistente, scegliendo l’opportuna opzione)



  • e scegliamo il nome della connessione appena creata. Possiamo lasciare il nome di default, oppure cambiarlo. Questa è la connessione che permette di leggere e scrivere i dati direttamente nella lista SharePoint.

Terminata la creazione della lista, viene visualizzato il modulo di creazione degli elementi, pronto per essere personalizzato. Scegliamo di inserire due controlli di tipo “Casella di riepilogo a discesa”, che recuperano le informazioni rispettivamente dalle lista “Marche” e “Modelli”. Questi controlli sono equivalenti ai controlli di tipo “Lookup” disponibili in SharePoint.

Nota: in aggiunta ai campi personalizzati appena descritti, trattandosi di un componente SharePoint vengono inseriti di default i suoi classici campi, come ID, Title, Autore, Data Creazione, etc…

 

A questo punto il nostro modulo di inserimento contiene i due elenchi di modelli e marche, senza alcuna correlazione tra loro; risulta possibile quindi inserire nell’elenco creato una vettura di marca “BMW” e di modello “Punto”, che è quello che vogliamo evitare. Costruiamo quindi il legame tra i due elenchi.

Clicchiamo con il tasto destro sul il controllo dei modelli, selezioniamo la voce “Proprietà”, e, nel Tab “Dati”, sezione “Opzioni casella di riepilogo”, clicchiamo sul pulsante Aggiungi evidenziato nell’immagine.


Un Wizard ci permette di creare una nuova connessione, in questo caso per la ricezione dati:

  • settiamo come origine dati un elenco SharePoint


   

  • e ne configuriamo la fonte: i dati verranno presi dalla lista “Marche” creata in precedenza, prendendone sia il campo “Marca” che il campo “Modello”
   

  • Salviamo infine la connessione appena creata.


A questo punto nella casella di riepilogo delle proprietà vediamo che la connessione è ora impostata su quella appena creata.

Dobbiamo ora fare in modo che, al cambiamento di valore dell’elenco “Marche”, vengano caricati solo i valori effettivamente validi.

Clicchiamo quindi sul pulsante evidenziato nell’immagine (che fa riferimento alle voci visualizzate), e settiamo il filtro: vogliamo che le voci dell’elenco siano filtrate in base al valore selezionato nel campo “Marche”.


Le seguenti immagini illustrano il processo, più semplice da fare che da spiegare.

       


Ora, per permettere una corretta gestione del controllo, impostiamo la voce “Valore” sul campo “ID” e la voce “Valore visualizzato” sul campo “Title”.



Una volta terminate queste modifiche possiamo pubblicare il modulo.

Vediamo ora i risultati del nostro lavoro.

Apriamo il browser, navighiamo fino alla lista “Vetture”, ed inseriamo un nuovo elemento; come possiamo vedere, alla diversa selezione della marca corrisponde, nel controllo dei modelli, la presentazione delle sole opzioni valide.

     

Si verifica, però, un piccolo bug: se selezioniamo un’altra marca, tra i modelli disponibili rimane quello in precedenza.
Nulla di problematico, si tratta solo di un problema di aggiornamento dei dati del menù, ma è comunque fastidioso.

Per risolverlo dobbiamo intervenire nuovamente con InfoPath. Apriamo il modulo, selezioniamo il controllo delle marche, ed impostiamo una regola:


se il campo “Marca” viene modificato settiamo il campo “Modello” a vuoto



A questo punto pubblichiamo il modulo aggiornato; il problema è risolto, ed è possibile procedere all’inserimento degli elementi nella lista.

lunedì 6 agosto 2012

SharePoint 2010 - Richiesta continua delle credenziali

Mi è capitato, apparentemente senza motivo, che utilizzando un qualsiasi programma della suite di Office mi venissero chieste in continuazione le credenziali di accesso ad un portale SharePoint 2010, su cui avevo lavorato in precedenza.



La causa, ho poi scoperto, è dovuta all’utilizzo delle opzioni della sezione “Connect & Export” disponibile nel Ribbon di SharePoint; l’utilizzo di queste funzionalità provoca la scrittura, nel file di registro, di alcune chiavi per la richiesta dell’autenticazione.



Il problema di per sé non è grave, ma fastidioso: anche se non si stanno utilizzando programmi Office, la richiesta di credenziali passa in primo piano interrompendo ciò che si sta facendo.
La soluzione al problema è semplice: è sufficiente avviare l’editor del registro di sistema ed effettuare una ricerca utilizzando l’URL del portale incriminato (cerchiato in rosso).



Nota: nel mio caso venivano richieste più volte le credenziali ad ogni “apparizione”, dal momento che l’opzione di collegamento era stata utilizzata da due Web Application differenti, seppur all’interno dello stesso dominio. Ho quindi provveduto a fare una ricerca non con l’URL esatto, ma con il nome di dominio del portale.
Ad esempio se la richiesta di credenziali avviene per i siti portale.miosito.it  e mysite.miosito.it  è necessario cercare nel registro miosito.it  per trovare tutte le chiavi incriminate.



Una volta cancellata l’ultima chiave si potrà tornare a lavorare senza interruzioni.

venerdì 3 agosto 2012

SharePoint 2013 Preview - Installazione

  1. Prerequisiti

Requisiti necessari per poter installare SharePoint Foundation 2013 sono Windows Server 2008 R2 SP1 e SQL Server 2008 SP1.
Sulla macchina utilizzata per il test non erano stati installati i SP1 né del sistema operativo, né del SQL Server; tra download ed installazione sono passate un paio d’ore.

A differenza di SharePoint 2010, i prerequisiti (almeno in questa Preview) sono da installare tramite un eseguibile a parte.
Nota: il programma dei prerequisiti NON installa, se assenti, i Service Pack.


  1. SharePoint 2013

Terminato il download e l’installazione dei prerequisiti, è il momento di SharePoint 2013; l’installazione è semplice e lineare, non viene richiesto di interagire, se non con un paio di click obbligati.

  1. Configuration Wizard

Come per le precedenti versioni, anche per SharePoint 2013 al termine dell’installazione occorre configurare la piattaforma attraverso il wizard.
Partendo da zero, ho creato una nuova farm…
…impostato i dati per la connessione al database SQL…
…scelto una passprhase per il join di altri server…
…ed impostato i parametri per la creazione della prima Web Application: Central Administration.
Raccolti i parametridi configurazione, è partito il tool di configurazione: non resta altro da fare che attendere il messaggio di configurazione terminata con successo (si spera!).
  1. Central Administration

Terminato il Configuration Wizard si avvia “Central Administration”, con cui si procede alla configurazione della farm.
Per questa prima installazione ho scelto di utilizzare il wizard.
Le uniche opzioni che vengono richieste in questo caso riguardano i servizi da rendere disponibili alla farm e l’utente da utilizzare per il loro funzionamento.
Effettuate le scelte, SharePoint 2013 macina le informazioni, scusandosi per l’attesa.
Il passo successivo è la creazione della prima site collection; la procedura è lineare: titolo, modello e descrizione della collection.
  1. SharePoint Designer 2013

Non poteva certamente mancare lo strumento di personalizzazione per eccellenza aggiornato alla versione 2013. Disponibile in versione a 32 e 64 bit, richiede pochi click per essere installato.

Al termine, un altro paio di click di configurazione, ed anche SharePoint Designer 2013 è pronto per essere utilizzato.