vendredi 14 juin 2013

SharePoint Get Convivial URL for a specific Term by Label

You can use the following function in order to retrieve the convivial url associated for a specific term if you use the navigation thanks to the termstore in sharepoint 2010 and 2013


        /// Get convivial URL for a specific term using Label
        /// </summary>
        /// <param name="navigation_Group_Name">Navigation group name for the site collection</param>
        /// <param name="navigation_TermSet_Name">Termset name used for termstore navigation</param>
        /// <param name="navigation_Nom_Term">Name of the term you want to retrieve</param>
        /// <param name="navigation_default_url">Default url used if none term match the label filter</param>
        /// <param name="site"></param>
        /// <returns>site relative convival url   /</returns>
        public static string GetUrlConvivialForTerm(
            string navigation_Group_Name,
            string navigation_TermSet_Name, 
            string navigation_Nom_Term, 
            string navigation_default_url,
            SPSite site)
        {
            string url = string.Empty;
            //Utiliser SPContext SPContext.Current.Site
            TaxonomySession session = new TaxonomySession(site, false);
            TermStore store = session.TermStores[0];
            CacheManager cm = new CacheManager();
            TermSet tHE = TermManager.GetTermSet(navigation_Group_Name, navigation_TermSet_Name, site.RootWeb.Url);

            NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(tHE, site.RootWeb,
                           StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider);

            IEnumerable<NavigationTerm> terms = navTermSet.Terms.Where(t => t.GetTaxonomyTerm().Name.Equals(navigation_Nom_Term));
           
            if(terms != null)
            {
                NavigationTerm term = terms.FirstOrDefault();
                if (term != null)
                {
                    url = term.GetWebRelativeFriendlyUrl();
                }
            }

            if(url.Equals(string.Empty))
            {
                return navigation_default_url;
            }
            else
            {
                return url;
            }
        }

mardi 21 mai 2013

Ajouter l'icone PDF et la recherche dans les fichiers PDF sur SharePoint 2013 / Add pdf file icon and parse to SharePoint 2013


Tutoriel pour l'installation de iFilter ainsi que l'ajout de l'icone PDF:
  1. Télécharger l'icone depuis le site : http://www.adobe.com/misc/linking.html#pdficon
  2. Ajouter les icones au répertoire : C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\IMAGES
  3. Modifier le fichier DOCICON.XML situé dans le dossier C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\XML
  4. Ajouter l'entrée suivante au fichier : <Mapping Key="pdf" Value="pdficon_small.png"/>
  5. Effectuer un redémarrage du serveur web : IISRESET
Intrégration des fichiers PDF à la recherche:
Télécharger et installer:

Récupérer l'url convivial d'une page depuis le magasin des termesSharePoint 2013. / Get friendly url using cache and performanceoptimization

SharePoint permets de gérer la navigation d'un site via les friendly-url ou url convivial, lors de développement de webParts il est donc important de faire le lien entre une page physique (/Pages/article-1.aspx) et son url convivial ( /mon-Article)

Voici un exemple complet d'utilisation du cache serveur ainsi que la récupération de l'url convivial d'une page.

jeudi 16 mai 2013

Try and like it Win Acer and Xbox 360

Merci pour le coup de pouces et des cadeaux à gagner (Tablettes + 5 xbox) sur :
https://www.tryandlikeit.fr/faites-le-show/?d=08ba9b65-a437-43c1-b9fc-4f59421349dd

Et pour participer au concours voici le lien :
https://www.tryandlikeit.fr/inscrivez-vous/?d=7037c27d-465b-4299-8c39-bfd1e7107a3d

Sharepoint 2013 Online utilisation des états. create KPI in SharePoint for business intelligence

Dans ce tutoriel nous allons créer une liste d'état basé sur plusieurs listes SharePoint.

Rendez vous dans un premier dans la page du contenu de site de votre site.

Puis ajouter une nouvelle liste personnalisée. (add new custom list)


Et nommer la liste "Etats", rendez vous dans les paramètres de la liste.


Cliquez sur paramètres avancés
Et cliquez sur "Autoriser la gestion des types de contenu" (enable content types)

Ajoutez ensuite le type de contenu en cliquant sur "Ajouter à parti de types de contenu de site existants" (add existing content type)



Ajoutez le type de contenu "Indicateur basé sur les listes SharePoint" depuis la catégorie "Business Intelligence". Cliquez sur "Modifier l'ordre et le type de contenu par défaut sur le bouton Nouveau" en décocher le type de contenu élément de sorte à ne pouvoir stocker que les indicateurs dans cette liste.



Résumons les différentes actions menées pour la création de la liste d'états:
- Ajout d'une liste personnalisée
- Activation de la gestion des types de contenu sur la liste
- Ajout du type de contenu "Indicateur basé sur les listes SharePoint" depuis la catégorie "Business Intelligence"

A cette étape du tutoriel nous disposons d'une liste permettant de stocker nos indicateurs (KPI).

Ajoutons maintenant une liste personnalisée que j'appelerai "Congés", ajouter une colonne de type choix nommée "Catégorie congés" contenant les choix :
- Congés payés
- Congés maladie
- Congés familial
- Congés sans solde
- Autres congés

Deux colonnes existantes "Date de début" et "Date de fin" depuis la catégorie "Colonne de bases", et enfin une colonne "Description".

Rendez les colonnes "Date de début", "Date de fin", "Catégorie congés" comme obligatoires.

















Ajoutez maintenant une colonne intitulé "Nombre" avec comme type "Valeur calculée"
Et pour formule :   "=[Date de fin]-[Date de début]"
Supprimez finalement la colonne "Titre" de l'affichage de la liste par défaut.


Ajoutez ensuite à la liste 3 éléments avec les valeurs suivantes :

A cette étape du tutoriel nous avons désormais la liste qui va nous servir de sources de données pour nos indicateurs.

Rendez vous maintenant dans la liste des états et ajouter un nouvel élément.
Avec :
Nom : Indicateurs de congés sans solde
Description : Indique le rapport entre les congés sans solde et les congés payés
Url de la liste : /sites/project/rh/Lists/Congs (url de votre liste)

Affichage : Tous les éléments
Calcul de la valeurPourcentage d'éléments de liste dans l'affichage où
Catégorie congés égale à Congés sans solde
Règles d'icône d'état : les meilleurs valeurs sont supérieurs à
Afficher OK lorsque la valeur est égale ou supérieure à l’objectif
: 35

Afficher Avertissement lorsque la valeur est égale ou supérieure à l’avertissement : 25

Afficher Problème autrement

SharePoint 2013 Managed Meta data .csv and Setting site navigation to use taxonomy using PowerShell and Custom Property

You can import .csv file using the following powershell function, you can after launch the function with the following parameters:

webApplication URL
CSV file path
Group Term Name

In order to set the managed metadata Navigation you have to set the option in "Navigation" menu.

Param(
 [Parameter(Mandatory=$True,Position=1)]
 [string]$WebAppUrl,
 [Parameter(Mandatory=$True,Position=2)]
 [string]$CSVFilePath,
 [Parameter(Mandatory=$True,Position=3)]
 [string]$TermGroupName
)

Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue

function ImportTermSet([Microsoft.SharePoint.Taxonomy.TermStore]$store, [string]$groupName, [PSCustomObject]$termSet) { 
   function ImportTerm([Microsoft.SharePoint.Taxonomy.Group]$group,
                       [Microsoft.SharePoint.Taxonomy.TermSet]$set,
                       [Microsoft.SharePoint.Taxonomy.Term]$parent,
                       [string[]]$path) {       
     if ($path.Length -eq 0) {
       return
     }
      elseif ($group -eq $null)
       {
       $group = $store.Groups | where { $_.Name -eq $path[0] }
       if ($group -eq $null)
       {
         $group = $store.CreateGroup($path[0])
       }
      }
      elseif ($set -eq $null)
       {
       $set = $group.TermSets | where { $_.Name -eq $path[0] }
       if ($set -eq $null)
        {
         $set = $group.CreateTermSet($path[0])
        }
        $set.SetCustomProperty("_Sys_Nav_IsNavigationTermSet", "True")
     }
      else
       {
       $node = if ($parent -eq $null) { $set } else { $parent }
       $parent = $node.Terms | where { $_.Name -eq $path[0] }      
       if ($parent -eq $null -and $path -ne $null -and $path[0] -ne $null) {
         $parent = $node.CreateTerm($path[0], 1036)
        #Debut Menu
        if($_.MenuID -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Menu ID", $_.MenuID)
        }
        if($_.Menu_Particulier -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Menu Particulier", $_.Menu_Particulier)
        }
        if($_.Menu_Professionnel -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Menu Professionnel", $_.Menu_Professionnel)
        }
        if($_.SousTitre -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Sous Titre", $_.SousTitre)
        }
        if($_.TitreAccueil -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Titre accueil", $_.TitreAccueil)
        }
        if($_.SousTitreAccueil -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Sous titre accueil", $_.SousTitreAccueil)
        }
        if($_.Picto -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Picto", $_.Picto)
        }
        #Fin Menu
        #Debut colonne
        if($_.ColonneID -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Colonne ID", $_.ColonneID)
        }
        if($_.ClasseTitreColonne -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Classe titre colonne", $_.ClasseTitreColonne)
        }
        if($_.TitreColonne -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Titre colonne", $_.TitreColonne)
        }
        #Fin colonne
        #Debut lien
        if($_.LienID -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Lien ID", $_.LienID)
        }
        if($_.SousTitreLien -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Sous titre lien", $_.SousTitreLien)
        }
        #Fin lien
        #Debut rubrique
        if($_.RubriqueID -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Rubrique ID", $_.RubriqueID)
        }
        if($_.BaliseRubriqueIcon -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Balise rubrique icone", $_.BaliseRubriqueIcon)
        }
        if($_.ClasseIconRubrique -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Classe icone rubrique", $_.ClasseIconRubrique)
        }
        if($_.TitreIcon -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Titre icone", $_.TitreIcon)
        }
        if($_.SousTitreIcon -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Sous titre icone", $_.SousTitreIcon)
        }
        if($_.ClasseLien -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Classe lien", $_.ClasseLien)
        }
        if($_.TitreLien -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Titre lien", $_.TitreLien)
        }
        if($_.EmphaseTitre -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Emphase titre", $_.EmphaseTitre)
        }
        if($_.ParentRubriqueID -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Parent rubrique ID", $_.ParentRubriqueID)
        }
        if($_.ClasseSousTitre -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Classe sous titre", $_.ClasseSousTitre)
        }
        if($_.ClasseParagrapheEnglobantLien -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Classe paragraphe englobant lien", $_.ClasseParagrapheEnglobantLien)
        }
        #Fin rubrique
        if($_.Ordre -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Ordre", $_.Ordre)
        }
        if($_.ClasseCSS -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Classe CSS", $_.ClasseCSS)
        }
        if($_.Visible -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Visible", $_.Visible)
        }
        if($_.Type -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("Type", $_.Type)
        }
        if($_.PlanSite -ne "" -and $parent  -ne $null )
        {
            $parent.SetLocalCustomProperty("PlanSite", $_.PlanSite)
        }
       }
     }

     ImportTerm $group $set $parent $path[1..($path.Length)]
         Commit $store 2>&1 | out-null
   }

   function RemoveTermGroup([Microsoft.SharePoint.Taxonomy.TermStore]$store, [string]$groupName) {
     $group = $store.Groups | where { $_.Name -eq $groupName }
     if ($group -ne $null) {
       $group.TermSets | foreach { $_.Delete() }
       $group.Delete()
       $store.CommitAll()
     }
   }
   function Commit($store) {
     $store.CommitAll()
   }

   $termSetName = $termSet[0]."Term Set Name"
   $termSet | where { $_."Level 1 Term" -ne "" } | foreach {
     $path = @($groupName, $termSetName) + @(for ($i = 1; $i -le 5; $i++) {
       $term = $_."Level $i Term"
         if ($term -eq "") {
           break
         } else {
           $term
         }
       }
     )
     ImportTerm -path $path
     $ErrorActionPreference = "Continue";
   }
   }

$session = [Microsoft.SharePoint.Publishing.Navigation.TaxonomyNavigation]::CreateTaxonomySessionForEdit($web)
$store = $session.TermStores[0]
$termSet = Import-csv $CSVFilePath
ImportTermSet $store $TermGroupName $termSet

$store.CommitAll()

lundi 13 mai 2013

Change SPWeb Properties, CreateFriendlyUrlsForNewPages and CreateFriendlyUrlsForNewPages for SharePoint 2013 Navigation

Use the following Powershell in order to change the behavior of the managed navigation when you create a new page. Replace whether by true or false in order to fit the needs.


Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
$site = Get-SPSite $siteUrl;

$site.AllWebs | foreach {

$webNav = $_.Properties["_webnavigationsettings"];
$webNav ;

#Replace  AddNewPagesToNavigation="True"  and  CreateFriendlyUrlsForNewPages="True" 


$webNav = $webNav.Replace('AddNewPagesToNavigation="True"','AddNewPagesToNavigation="False"');
$webNav = $webNav.Replace('CreateFriendlyUrlsForNewPages="True"','CreateFriendlyUrlsForNewPages="False"');
$_.Properties["_webnavigationsettings"] = $webNav;
$_.Properties.Update();
$_.Update();
}