Catégories: SharePoint, Admin, API

02/09/2009

Permalink 08:29:00, Catégories: Récapitulatif .NET, Récapitulatif, Récapitulatif Office, SharePoint, 703 mots   French (FR) , Philippe Vialatte

[.NET][Office] Créer un fournisseur de menu personnalisé

Suite a une petite discussion sur le forum Sharepoint, je me disais que ca ferait du bien de soumettre ce petit développement a l'appréciation de tous.

Sharepoint dispose, par défaut, d'un certain nombre de fournisseurs de menus (avec WSS, par exemple, SPNavigationProvider, SPSiteMapProvider, ou SPContentMapProvider)

Il peut arriver que, pour des raisons diverses et variées, on ait besoin d'avoir un comportement différent (menus différents selon les utilisateurs, ou autres)

Une bonne façon de faire est d'étendre le Provider, pour pouvoir éventuellement ajouter des éléments. Dans le cas présent, on va aller piocher dans une liste des éléments supplémentaires, de façon a générer un menu déroulant dans WSS v3 (et oui, pas de gestion native des sous-menus).

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

09/06/2009

Permalink 08:00:00, Catégories: Récapitulatif, Récapitulatif Office, Admin, 134 mots   French (FR) , Philippe Vialatte

[Office] Une référence de STSADM interactive en Silverlight

Pour tous ceux qui se sont un jour gratté désespérément la tête en cherchant LA ligne de commande STSADM a utiliser pour faire juste ce qu'ils voulaient, Microsoft a sorti (récemment ?) une page montrant les différentes options de l'utilitaire, groupées par aires fonctionnelles.

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

05/06/2009

Permalink 08:17:00, Catégories: Récapitulatif .NET, Récapitulatif, Récapitulatif Office, API, 139 mots   French (FR) , Philippe Vialatte

[.NET][Office] [Sharepoint] Gérer les formules d'une liste

Que se passe-t'il quand, alors que 150 sites ont été déployés a partir d'un Template, on se rends compte qu'une formule ne fonctionne pas correctement ?

(Ne pas répondre: t'avais qu'a utiliser des types de contenu, pour un ensemble de raisons, c'était exclus... ;) )

Parce grosso modo, c'était mon petit truc rigolo de la semaine...

Donc, comme d'habitude, je passe une petite heure dans la msdn, jusqu'a trouver *the* solution, dans les champs de la classe SPFieldCalculated.

Pour ceux qui seraient intéressés par ce genre de manip, cela se fait simplement comme cela :

    SPList list = web.Lists["Liste1"];
   
SPFieldCalculated calc = list.Fields["Column3"] as SPFieldCalculated;
   
calc.Formula = "=IF(Column1=Column2, \"OK\", \"Not OK\")";
   
calc.Update();

Il faut convertir le champ en SPFieldCalculated, car Fields renvoie une collection de SPField, lesquels n'ont pas la colonne Formula.

Vous devez être identifié pour poster un commentaire.

20/05/2009

Permalink 16:37:00, Catégories: Récapitulatif, Récapitulatif Office, SharePoint, 614 mots   French (FR) , Philippe Vialatte

[Office] La base de contenu de WSS, 2/n : Groups, GroupMembership, SchedSubscriptions et ImmedSubscriptions

Voila, un peu plus d'un mois après le premier post sur le sujet, un un second petit post sur la base de contenu de WSS.

Apres avoir vu la structure des Sites, des Webs et des Utilisateurs, on va jeter un oeil sur les groupes de nos utilisateurs, ainsi que sur leurs alertes.

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

19/05/2009

Permalink 09:41:00, Catégories: Récapitulatif .NET, Récapitulatif, Récapitulatif Office, .Net, SharePoint, API, 554 mots   French (FR) , Philippe Vialatte

[.NET][Office] Créer des sites et des collections de sites avec l'API Sharepoint

(Si une personne suit, oui, je suis en train de me taper un petit outil pour automatiser la création de mes sites...et ca commence a bien marcher)

Dans mes aventures avec l'API, encore un gros arrachage de cheveux en vue ;)

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

18/05/2009

Permalink 10:10:00, Catégories: Récapitulatif .NET, Récapitulatif, SharePoint, API, 324 mots   French (FR) , Philippe Vialatte

[.NET] Petites finesses de l'API Sharepoint

Ca faisait un moment que je n'avais plus fait de développement avec Sharepoint, et en m'y remettant, j'avais oublie deux petites finesses, qui peuvent éventuellement provoquer l'apparition spontanée de cheveux blancs, alors...pour ne plus les oublier

1. BreakRoleInheritance et AllowUnsafeUpdates

Lorsque l'on appelle BreakRoleInheritance, la référence au SPWeb courant est invalidée, ce qui provoque un reset de AllowUnsafeUpdates a false. Ce sera aussi le cas lorsque l'on changera le nom ou l'URL du site (après avoir appelé Update), ou lorsque l'on appellera BreakInheritance(),ResetRoleInheritance(). Par conséquent, a chaque appel a BreakRoleInheritance, il faut penser a sauvegarder préalablement la valeur de dans un booléen, et le remettre a sa valeur d'origine après.

 bool updateRights = _web.AllowUnsafeUpdates;
 
_web.BreakRoleInheritance(false);
 
_web.AllowUnsafeUpdates = updateRights;

2. RunWithElevatedPrivileges et le site courant

RunWithElevatedPrivileges est super utile comme fonction lorsque l'on doit exécuter une portion de code avec des privilèges admin. Le seul petit piège de cette fonction, qui va exécuter une portion de code comme si elle tournait avec l'identifiant du pool d'application, est que, si on essaye de manipuler une référence a un site, a un web ou a une liste récupérée depuis l'extérieur de la zone de privilèges élevés, cette référence aura toujours les droits qu'avaient l'utilisateur AVANT RunWithElevatedPrivileges.

Donc, pour que cela fonctionne correctement, il faudra recharger les sites, web, listes et compagnie depuis l'intérieur de la zone impersonnée...

SPSecurity.RunWithElevatedPrivileges(delegate {  
   using (SPSite site = new SPSite(siteUrl)) {
     
using (SPWeb tmpWeb = site.OpenWeb("/")) {
        
SPList MaListe = tmpWeb.Lists["MaListe"]);
      }
   }
});

ou sinon, si on préfère :

Guid currentWebId = web.ID;
Guid currentSiteId = web.Site.ID;

SPSecurity.RunWithElevatedPrivileges(delegate {   
   using (SPSite site = new SPSite(currentSiteId)) {
      using (SPWeb tmpWeb = site.OpenWeb(currentWebId)) {
         SPList MaListe = tmpWeb.Lists["MaListe"]);
      }
   }
});

Voila, avec un peu de chance, j'y penserais tout de suite la prochaine fois (mais bien sur...)

Vous devez être identifié pour poster un commentaire.

04/05/2009

Permalink 12:29:00, Catégories: Récapitulatif .NET, Récapitulatif Office, SharePoint, API, 269 mots   French (FR) , Philippe Vialatte

[.NET][Office] [Sharepoint]Gérer les pièces jointes d'un SPListItem

Comme la question avait été posée sur le forum, une petite fonction pour gérer les pièces jointes a un Item.

Avec Sharepoint, les objets de type SPListItem ont une propriété en lecture seule Attachments, qui retourne un objet de type SPAttachmentCollection

public SPAttachmentCollection Attachments { get; }

Ajouter ou supprimer une nouvelle pièce jointe se fait assez simplement, du moment que l'on a un tableau de byte, soit :

    SPListItem item;
   
byte[] content;
   
string name;

   
item.Attachments.AddNow(name, content);
   
// utiliser AddNow permets de ne pas avoir à appeler item.Update(); 
    item.Attachments.DeleteNow(name);
   
// utiliser DeleteNow permets de ne pas avoir à appeler item.Update();

Attacher le contenu d'un fichier venant du site Sharepoint se fait aussi assez simplement :

   SPFile file = myWeb.Folders("monDossier").Files("Monfichier");
   string fileName = file.Name;
   byte[] fileContent = file.OpenBinary();

La ou cela devient beaucoup plus rigolo, c'est lorsque l'on veut lister les attachments...

En effet, si on fais un foreach sur les attachements, on ne vas pas retourner des objets SPAttachment (par exemple), ni même SPFile, mais...le nom du fichier :-\

Apres un peu de recherche, ces items sont stockés dans un sous-répertoire de la liste, nommé Attachments, les fichiers étant exactement stockes dans un répertoire identifié par l'ID de l'item de la liste concerné. On peut donc y accéder ainsi :

    SPFolder folder = site.Folders("Lists").
        SubFolders(listItem.ParentList.Title).
        SubFolders("Attachments").
        SubFolders(listItem.ID.ToString());

   
foreach (SPFile file in folder.Files) {
       
// manipulations diverses et variées sur les fichiers
    }

(NB. : Ca a l'air trivial comme ca, mais à l'époque, ca m'a couté pas mal de cheveux ;) )

Vous devez être identifié pour poster un commentaire.

16/04/2009

Permalink 08:58:00, Catégories: Récapitulatif, Récapitulatif Office, SharePoint, 108 mots   French (FR) , Philippe Vialatte

[Office] Office 2010 officiellement annoncé pour mi-2010

L'annonce du jour concerne toute la suite Office 2010 (et pas seulement Sharepoint, pour changer ;) ).

En effet, Microsoft a publié hier, sur PressPass, un entretien avec le "senior vice president of Microsoft's Information Worker Product Management Group" (ouf !), au cours du quel il annonce une roadmap (une version française, quelqu'un ?) des sorties des différents produits de la suite 2010.

On aura donc, dés la fin 2009, Exchange 2010 (qui est d'ors et déjà disponible en beta), tandis que la suite Office 2010 sera disponible en CTP des le troisième quart de 2009, pour une livraison finale en début 2010.

http://www.microsoft.com/presspass/features/2009/Apr09/04-15Office2010.mspx

Vous devez être identifié pour poster un commentaire.

06/04/2009

Permalink 15:53:00, Catégories: Récapitulatif .NET, Récapitulatif, Récapitulatif Office, SharePoint, 815 mots   French (FR) , Philippe Vialatte

[.NET][Office] [Sharepoint] La base de contenu de WSS, 1/n : Sites, Webs et UserInfo

Ayant pas mal patouillé dans la base de contenu récemment, je me suis dit que cela pourrait toujours servir a quelqu'un d'autre un jour ou l'autre. En conséquence de quoi, voila le premier article dans une liste de je ne sais pas pas encore combien, qui concernera la base de contenu de Sharepoint V3.

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

02/04/2009

Permalink 19:31:00, Catégories: Récapitulatif .NET, Récapitulatif, Récapitulatif Business Intelligence, SharePoint, 45 mots   French (FR) , Philippe Vialatte

[.NET][BI] [SharePoint]Ca y'est, SharePoint Designer est disponible gratuitement

Je l'avais déjà mentionné dans un précédent post, mais SharePoint Designer est désormais gratuit...

image

Vous le trouverez a cette adresse : http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42

Vous devez être identifié pour poster un commentaire.

30/03/2009

Permalink 10:22:00, Catégories: Récapitulatif .NET, Récapitulatif, SharePoint, API, 146 mots   French (FR) , Philippe Vialatte

[.NET] [Sharepoint] Enumérer les répertoires d'une liste documentaire

Je me suis récemment un peu pris la tête sur un problème, en apparence simple, mais pour lequel l'API m'a enduit d'erreur.

Mon problème  de base était simple, je voulais juste lister les répertoires d'une liste de documents (pour supprimer des droits, si vous voulez tout savoir ;) ).

Pour cela, je jettes un oeil a l'API, je vois un joli list.Folders...sauf que List.Folders renvoie une liste...d'items :-\.

Après quelques essais, la bonne propriété est donc la propriété SubFolders du RootFolder de notre liste, pour un résultat final ressemblant a cela:

foreach (SPList list in SPContext.Current.Web.Lists) {
   
if (list.BaseType == SPBaseType.DocumentLibrary) {
       
if (list.Title == reportsLib || list.Title == importLib) {
           
foreach (SPFolder folder in list.RootFolder.SubFolders) {
               
try
                   
RemoveFolderPermissionsForGroup(siteAddress, folder, groupName);
                }
catch (Exception ex) {
                   
LogFactory.LogError("Could not remove " + groupName + " from folder", ex);
                }
            }
        }
    }
}

Vous devez être identifié pour poster un commentaire.

26/03/2009

Permalink 17:05:00, Catégories: Récapitulatif .NET, Récapitulatif, SharePoint, Admin, 173 mots   French (FR) , Philippe Vialatte

[.NET] [info ou intox ?] [Sharepoint] Sharepoint designer Gratuit le 1er avril ?

J'avais vu passer la rumeur a un moment, mais jusqu'a il y'a peu, je n'y croyais pas trop, malgré la relative fiabilité des sources (quelle idée dans le choix de la date aussi...), mais il semblerait qu'a partir du premier Avril 2009, Sharepoint Designer 2007 serait gratuit.

Les licences déjà achetées pouvant être ultérieurement converties en licences pour Expression

Niveau sources, voir ici:

http://weblogs.asp.net/bsimser/archive/2009/03/13/sharepoint-designer-free-as-in-beer.aspx

http://edonoffice.blogspot.com/2009/03/sharepoint-designer-will-be-free.html

Ce qui m'a le plus convaincu étant ce post:

http://www.sadev.co.za/node/346

...et surtout sa version d'avant le "désolé, je me suis fait taper sur les doigts", dont on voit encore un bout sur le blog :

"Microsoft will offer SharePoint Designer 2007 free of charge, as a download, starting April 1, 2009. This change is being made in order to help customers get the most value out of their investments in SharePoint products and technologies.  Microsoft will remove SharePoint Designer 2007 from the April 2009 Volume Licensing price list. "

Plus qu'a attendre le premier Avril

Vous devez être identifié pour poster un commentaire.

« Page Précédente 1 2 Page suivante »

Liste des blogs

Blog de Philippe Vialatte

Ce blog contient:
- des bouts de code
- quelques news
- des états d'âme

....et des fois, quelque chose d'intéressant ;)

Blog roll

Profil MVP

Réseaux sociaux



Catégories


Rechercher

<  Mai 2012  >
Lun Mar Mer Jeu Ven Sam Dim
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web