Posts

Showing posts from 2013

Office365 / SharePoint 2013 - Modificare l'ordine dei link del menu contestuale (ECB)

Image
Se vi è capitato di utilizzare, da SharePoint Designer 2013, una Custom Action per aggiungere nel menu contestuale di un item un nuovo link (ad esempio verso una funzionalità custom o una form personalizzata), vi sarete accorti anche voi della difficoltà di inserire questo nuovo link in una posizione definita. Al contrario dei bottoni sul Ribbon, non possiamo utilizzare schemi per la posizione e il sequence numerico sembra non avere nessun effetto. Utilizzando la stessa funzione del mio post Office365 / SharePoint 2013 - Nascondere link del menu contestuale (ECB) , ho inserito un comando aggiuntivo per invertire ad esempio il link per Eliminare un Articolo, posizionandolo al terzo posto dell'item La funzione per la sostituzione è la seguente: function ExchangePositionWith(firstselector, secondselector) {     var other = $(secondselector);     var first = $(firstselector).after(other.clone());     other.after(first).remove(); } In cui richiamo il primo elemento (firstse

Office365 / SharePoint 2013 - Nascondere link del menu contestuale (ECB)

Image
Utilizzando jQuery ho inserito in un javascript un comando per sostituire le funzioni richiamate dal clic sul Menu dell'item (i "..."). $("div.ms-list-itemLink").click(function(){   CoreInvoke('ShowECBMenuForTr', this, event);GestioneMenuItem(); return false;  });  $("a.ms-lstItmLinkAnchor").click(function(){   CoreInvoke('ShowECBMenuForTr', this, event);GestioneMenuItem(); return false;  }); Questi comandi aggiungono una funzione al metodo standard richiamato dal clic e che genera il menu contestuale dell'item. La funzione "iniettata" esegue un secondo comando dopo qualche ms, attendendo la creazione del menu. function GestioneMenuItem(){  setTimeout("DoGestioneMenuItem()",300); } La funzione responsabile della modifica del menu è la seguente e cerca gli elementi da nascondere tramite il titolo del link: function DoGestioneMenuItem(){  $("a[title='Elimina elemento']").parent().hide

SharePoint 2010 - Convalida Colonna per caratteri speciali

Image
Eccovi una bella formula per validare il testo inserito in una List Column. La colonna non deve contenere caratteri speciali, ad esempio se questa viene usata per creare, tramite una procedura, un file o un Document Set. Modificare la colonna di lista e, espandere la sezione Convalida Colonna. Inserire il testo seguente nella formula: =AND(IF(ISERROR(FIND(",";Titolo));TRUE);IF(ISERROR(FIND("&";Titolo));TRUE);IF(ISERROR(FIND("!";Titolo));TRUE);IF(ISERROR(FIND("@";Titolo));TRUE);IF(ISERROR(FIND("~";Titolo));TRUE);IF(ISERROR(FIND("#";Titolo));TRUE);IF(ISERROR(FIND("$";Titolo));TRUE);IF(ISERROR(FIND("%";Titolo));TRUE);IF(ISERROR(FIND("^";Titolo));TRUE);IF(ISERROR(FIND("*";Titolo));TRUE);IF(ISERROR(FIND("(";Titolo));TRUE);IF(ISERROR(FIND(")";Titolo));TRUE);IF(ISERROR(FIND("-";Titolo));TRUE);IF(ISERROR(FIND("=";Titolo));TRUE);IF(ISERROR(FIN

SharePoint 2010 - Simple Cascading Lookup with SPServices

Image
A new post on that excellent tool that is SPServices, the jQuery framework / EcmaScript for SharePoint! A simple scenario: we have two lists of data, for example, Countries and Companies for Countries, and a list which has two columns Lookup, Country and Company. We want to be able to use the first Lookup, Country, to filter second, Company, showing Companies for the selected Country. We create the list Nations, with only the Title field. Now let's create Companies with Title (Company Name) and Country (lookup list to the Nations). Now, let's create a list CustomList1 that has the two columns Country and Company, respectively lookup of Nations and Companies. We modify the NewForm.aspx and EditForm.aspx form by entering the following code, making sure to load the SiteAssets. Js file we need: jquery.SPServices-0.7.2.min.js ( download here ) jquery-1.8.2.min.js (tested with this version) Here's the code to insert in both forms (new and edit): <sc

SharePoint 2010 - Semplice Cascading Lookup con SPServices

Image
Ancora un post su quell'ottimo strumento che è SPServices, il framework jQuery/Ecmascript per SharePoint! Uno scenario semplice: abbiamo due liste di anagrafiche, ad esempio, Nazioni e Aziende per Nazioni, e una lista che ha le due colonne Lookup, Nazione e Azienda. Vogliamo poter utilizzare la prima Lookup, Nazione, per filtrare la seconda, Azienda, per le sole Aziende per il Paese selezionato. Creiamo la lista Nazioni, con il solo campo Title. Ora creiamo la lista Aziende con Title (Nome Azienda) e Nazione (lookup verso la lista Nazioni). Ora, creiamo una lista CustomList1 che abbia le due colonne Nazione e Azienda, rispettivamente lookup di Nazioni e Aziende. Modifichiamo i form NewForm.aspx e EditForm.aspx, inserendo il codice che segue, avendo cura di caricare in SiteAssets i file .js di cui abbiamo bisogno: jquery.SPServices-0.7.2.min.js ( download qui ) jquery-1.8.2.min.js (testato con questa versione) Ecco il codice da inserire in entrambi i form (n

SharePoint 2010 - Cambiare immagini e layout del Search Box

Image
Abbiamo avuto qualche difficoltà nel dover cambiare il layout, le immagini o il css del box di Ricerca in un Sito SharePoint. Il problema principale è nella modifica delle immagini: ad esempio, del bottone di ricerca, la lente di ingrandimento. In SharePoint, viene recuperata tramite il posizionamento di una immagine unica (fgpng.png), contenente tutte le icone, utilizzando le proprietà di Top, Left sull'immagine. Modificare questo png con tutte le icone non è consigliabile, perché cambierebbe su tutti i Siti della farm. Inoltre, la lente è proprio una immagine, definitia senza classe css, per cui non è possibile intervenire solo con il foglio di stile. Abbiamo trovato questa soluzione, un piccolo trucco, che ha funzionato egregiamente! Sovrascriviamo le classi che definiscono l'immagine del bottone di ricerca e definiamo la nuova immagine per il link del bottone: .ms-sbgo a  {    background-image:url("/_layouts/images/myboxsearch/lente.png");    backgr

SharePoint Designer 2010 - Issue with globally reusable Workflow Initiation Form on Foundation

Image
In September 2012, I've opened a thread in SharePoint Dev Center Forum about an issue on globally reusable Workflow in SharePoint Foundation 2010. You can find thread here:  http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomizationprevious/thread/66cf91e8-9d38-4573-948c-071e66763ba3/ Today, I received an answer from Microsoft! Yes: there's an issue and they give KB to solve!  http://support.microsoft.com/kb/2846543/en-gb :-)

SharePoint 2007/10 - Filtrare gli Item di una Lista per Workflow (Approval) Status

Image
Per poter filtrare i documenti o gli item di una lista in base allo stato del workflow, possiamo creare una nuova vista e configurare il filtro utilizzando la colonna [Stato flusso di lavoro] . Ma se proviamo ad inserire come filtro, ad es., "Approved" o "Rejected", non otteniamo risultati. Lo Stato del Workflow, infatti, viene memorizzato come un valore numerico! I valori sono i seguenti: Not Started - 0 Failed on Start - 1 In Progress - 2 Error Occurred - 3 Canceled - 4 (manualmente) Completed - 5 Failed on Start (retrying) - 6 Error Occurred (retrying) - 7 Canceled - 15 (da workflow) Approved - 16 Rejected - 17 L'impostazione corretta del filtro sarà quindi come l'immagine seguente: Fare attenzione ai valori per Canceled!  Sono diventato matto, ma se la Cancellazione è stata eseguita automaticamente dal Workflow, usare il valore 15, se invece il Workflow è stato interrotto manualmente dall'amministratore (ad es perché in err

SharePoint 2007/10 - How to Filter List Items by Workflow (Approval) Status

Image
In order to filter documents or items in a list by status of the workflow, we can create a new view and set the filter using the column [Workflow Status]. But if we try to insert as a filter "Approved" or "Rejected", we do not get results. The Workflow Status is stored as a numerical value! The values ​​are as follows: Not Started - 0 Failed on Start - 1 In Progress - 2 Error Occurred - 3 Canceled - 4 (manually) Completed - 5 Failed on Start (retrying) - 6 Error Occurred (retrying) - 7 Canceled - 15 (from workflow) Approved - 16 Rejected - 17 The correct setting of the filter will then be like the following image: Pay attention to the values ​​for Canceled! If the cancellation is done automatically by the Workflow, use the value 15, but if the Workflow is stopped manually by the administrator (eg because of error), then you need to use a value of 4!

SharePoint 2010: An update conflict has occurred, and you must re-try this action

Ogni volta che provo a fare il Backup della Farm, ricevo questo errore: "An unhandled exception occurred in the user interface.Exception Information: An update conflict has occurred, and you must re-try this action. The object SessionStateService Parent=SPFarm Name=SharePoint_Config is being updated by DOMAIN\username, in the w3wp process, on machine XXXXXX.  View the tracing log for more information about the conflict." Per risolvere il problema, ripulire la cahce del file system su tutti i server della farm in cui gira Windows SharePoint Services Timer service. Per farlo seguire questi passi: 1. Fermare il Timer service, in questo modo: Click Start, vai su Administrative Tools, e cliccare su Services. Tasto destro su Windows SharePoint Services Timer, e clic su Stop. 2. Eliminare o spostare il contenuto della cartella seguente : %ALLUSERSPROFILE%\Application Data\Microsoft\SharePoint\Config\[GUID] 3. Riavviare il Timer service, in questo modo: Click Sta

SharePoint 2010: An update conflict has occurred, and you must re-try this action (Eng)

I started to get this message everytime I try to Backup Farm. "An unhandled exception occurred in the user interface.Exception Information: An update conflict has occurred, and you must re-try this action. The object SessionStateService Parent=SPFarm Name=SharePoint_Config is being updated by DOMAIN\username, in the w3wp process, on machine XXXXXX.  View the tracing log for more information about the conflict." To resolve this issue, clear the file system cache on all servers in the server farm on which the Windows SharePoint Services Timer service is running. To do this, follow these steps: 1. Stop the Timer service. To do this, follow these steps: Click Start, point to Administrative Tools, and then click Services. Right-click Windows SharePoint Services Timer, and then click Stop. 2. Delete or move the contents of the following folder: %ALLUSERSPROFILE%\Application Data\Microsoft\SharePoint\Config\[GUID] 3. Start the Timer service. To do this, follow t

Schedulare la pubblicazione dei tuoi post su Google+ con DoShare e Chrome

Image
Si chiama DoShare ed è una piccola estensione di Chrome per pubblicare post su Google+. Cosa fa di interessante? Gestire la pubblicazione dei post, con la formattazione è basica, come quella di G+. Si inserire foto, ink e creare sondaggi. Ma la caratteristica più importante è la possibilità di gestire la schedulazione per la pubblicazione dei post! Altra ottima funzione è quella di poter decidere a nome di quale delle vostre pagine di Google+ pubblicare il Post! E ancora: l'integrazione con Chrome inserisce il bottone per "condividere su DoShare" sotto i post di Google+. Il click sul post apre la pagina di condivisione del post tramite DoShare, quindi con la sua eventuale schedulazione! Ottima estensione, prontamente installata e provata :-)

SharePoint 2010 - List View Lookup Threshold

Image
By modifying a view to show all the columns of Worfklow associated Status (many), I get this message: "This view can not be displayed Because The number of lookup and workflow status columns it contains Exceeds the threshold (8) enforced by the administrator." Do not worry, you can change this threshold, but it is not recommended for performance problems. Read this post to learn more (in English): The SharePoint 2010 "List View Lookup Threshold" and Why We Do not Change It

SharePoint 2010 - List View Lookup Threshold

Image
Modificando una vista, in modo da visualizzare tutte le colonne di stato dei Worfklow associati (molti, in effetti), al salvataggio ricevo questo messaggio: "This view cannot be displayed because the number of lookup and workflow status columns it contains exceeds the threshold (8) enforced by the administrator." Niente paura, si può modificare questa soglia, ma non è consigliato farlo per problemi di performance. Leggi questo post per saperne di più (in inglese): The SharePoint 2010 “List View Lookup Threshold” and Why We Don’t Change It

SharePoint 2010 - Open Quick Launch link in a new window

Image
The need is to open a link from the Quick Launch in a new window. When Publishing Features are not activated, we can only edit URL, name of the link and its position. But, we can use the javascript functions! Then I tried this:   Saving and clicking on the new link, the URL opens successfully in a new window BUT current page becomes white with the word [Object] ... So, I tried this trick .. and it works: The URL will open in a new window and the current page is reloaded onto itself.

SharePoint 2010 - Aprire link in una nuova finestra da Quick Launch

Image
L'esigenza è quella di aprire un link da Avvio Veloce (Quick Launch) in una nuova finestra. Quando non sono attive le Publishing Features, il link non è modificabile se non nell'URL, nel nome del link e nella sua posizione. Possiamo utilizzare le funzioni javascript. Allora ho provato con questo:  Ma salvando e cliccando sul nuovo link, l'URL si apre correttamente in una nuova finestra MA la pagina corrente diventa bianca con la scritta [Object]... Allora, ho provato questo trucco e .. funziona: L'URL si apre in una nuova finestra e la pagina corrente si ricarica su se stessa.

SharePoint 2010 - Gestione delle traduzioni con .Resx, .Docx grazie ad un piccolo tool

Image
Oggi scrivo un lungo post con la descrizione delle attività da eseguire per la gestione di traduzioni di Sharepoint 2010 tramite i file .resx esportati dai siti Sharepoint. Viene, inoltre, descritta la procedura di creazione di file .docx per le traduzioni, da fornire a personale traduttore un po' meno tecnico. Prerequisiti Devono essere installati i Language Pack delle lingue da utilizzare sui siti Sharepoint 2010. Il sito deve essere configurato per l’utilizzo di almeno due lingue. Si consiglia la lettura della documentazione Microsoft a riguardo:  http://technet.microsoft.com/en-us/library/ff805062.aspx Configurare un Sito SharePoint per il Multilingua Descriviamo brevemente la procedura per l’impostazione del multilingua e per la traduzione di label.  Per un maggior dettaglio, seguire la documentazione Microsoft: http://technet.microsoft.com/en-us/library/ff805062.aspx Per la corretta visualizzazione del multilingua, un sito di Sharepoint deve

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

Image
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

SharePoint 2010 - Inserire come Title il Name del documento caricato con javascript!

Quante volte mi sono trovato in difficoltà a .. giustificare il perché SharePoint non mette come Title del Documento caricato il Name dello stesso..!? Lo fa, certo, se si tratta di un documento Office correttamente compilato (ad es. un file Word con la proprietà Title, o un PDF..) Ma non lo fa sempre, o non sempre i documenti sono correttamente compilati. Una strada è l'Event Receiver, ma occorre compilare del codice, non sempre possibile, su tutti gli ambienti dei nostri clienti. Così, la strada del javascript (o con più facilità, con jquery). Nota : questa strada è possibile SE tutti i nuovi documenti sono caricati tramite la form di upload o modificando le proprietà da browser! Per upload massivi o creazione di nuovi documenti da template, questo discorso non è valido ed è necessario intervenire con l'Event Receiver! Modifichiamo la master page, con il richiamo alle librerie jquery e con l'inseriemto del codice sottostante: function SetFieldTitleFromNameAut

SharePoint 2010 - Impostare ListId di un FormField da codebehind

Con Visual Studio, si è rivelato molto comodo poter utilizzare i FormField per form di inserimento o modifica degli item di una lista. Purtroppo, sembrava inutile ogni nostro tentativo di impostare via codice il parametro ListId, così per un paio di volte abbiamo dovuto fare l'inserimento del GUID della lista manualmente.... Con tutti i problemi del caso, per i deploy in altre macchine, ad esempio. Poi, finalmente, il post giusto ci dà l'imbeccata per il metodo che segue e che è stato risolutivo! Utilizzare il FormField come segue, inserendo una funzione OnInit e non impostando ListId. <SharePoint:FormField ID="FormField1" OnInit="setFormFieldListId_OnInit" ControlMode="Edit" FieldName="ColumnName" runat="server" /> A codice, definire la funzione indicata qui sotto, in cui viene impostato il ListId alla creazione del controllo: protected void setFormFieldListId_OnInit(object sender, EventArgs e)

Due interessanti articoli per SharePoint Developer!

Segnalo un paio di interessantissimi articoli sullo Sviluppatore SharePoint! What is a Sharepoint Developer Cosa è lo Sviluppatore SharePoint? Una interessante analisi sui livelli dello sviluppatore e i requisiti per diventarlo! 10 things developers should know about SharePoint 10 cose che uno Sviluppatore SharePoint dovrebbe sapere. Utilissima guida base sulle nozioni utili per approciare il mondo di SharePoint (definito, giustamente, nell'articolo come "enormous"!) Buona Lettura!

SharePoint 2007/2010 - Implementare un Select All Checkbox su tutta la Site Collection

Grazie al lavoro di un collega, effettuato su una form di una lista, al Cliente è venuta l'idea di implementare lo stesso controllo per selezionare/deselezionare tutti i check di una colonna di tipo Choice, su tutti i form che utilizzano la Site Column, su SharePoint 2007.. Se il lavoro fosse stato quello di implementare il controllo solo su una lista, lo avrei fatto comodamente sulle pagine di Edit e New Item per quella lista, tramite SharePoint Designer. Ma purtroppo, la colonna in oggetto è presente su diverse liste o library della site collection (sub site compresi!). L'idea è stata quella di utilizzare la master page (comune a tutti i siti e sottositi), un po' di jquery e una modifica sulla Site Column in questione. Abbiamo una colonna di sito, di tipo Choice, con nome MyCheck, visualizzata con i checkbox. Inseriamo in testa ai valori di scelta della colonna il valore "Select All MyCheck" (uso il nome della colonna così da poter replicare il concetto

SharePoint 2010 - Group By Content Type

Image
Sembra che non esista la possibilità di creare una vista con un raggruppamento degli item per Content Type. E, in effetti, se provate a visualizzare le colonne con cui è possibile effettuare il raggruppamento, non è visualizzata la colonna Content Type. Niente paura (quasi), perché il raggruppamento è possibile! Necessita però di SharePoint Designer... Apriamo il sito e la pagina con la vista da raggruppare e selezioniamo la web part, visualizzandone il codice. Identifichiamo il tag <Query> e in quella posizione aggiungiamo il seguente codice Riporto il codice qui, per la copia <GroupBy Collapse="TRUE" GroupLimit="100">     <FieldRef Name="ContentType"/> </GroupBy> Salviamo la pagina e ricarichiamo il browser e ... voilà! Miglior visibilità si ottiene modificando il link "Content Type" e inserirlo sul nome del Content Type. Questo è "in progress".. Sembra mol