La structure interne ainsi que le design d'AreaProg ont récemment été modifiés.
Suite à cela, le format de certains articles a été perturbé. Le problème est connu et en cours de résolution. Merci de votre compréhension.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
namespace MySTSADMCommand
{
public class ModifyListProperties : Microsoft.SharePoint.StsAdmin.ISPStsadmCommand
{
#region ISPStsadmCommand Members
public string GetHelpMessage(string command)
{
}
public int Run(string command, System.Collections.Specialized.StringDictionary keyValues, out string output)
{
}
#endregion
}
}
Vous voyez donc que notre classe doit implémenter deux méthodes : GetHelp et Run
Méthode GetHelp:
Elle permet, comme son nom l'indique, de fournir une aide à l'utilisateur lorsque qu'il exécutera la commande.
STSADM.exe -o -help NomCommande
Le paramètre command passé à la méthode nous donne le nom de la commande exécutée.
Ici nous renverrons un simple message décrivant la syntaxe de la commande.
Méthode Run:
C'est cette méthode qui sera appelée lorsque la commande STSADM sera exécutée.
Cette méthode prends trois paramètres d'entées:
- command : Nom de la commande exécutée.
- keyValues : Les paramètres qui sont passés lors de l'exécution de la commande.
- output : Si nécessaire, permet de renvoyer une chaine de caractère qui apparaîtra dans la console.
Valeur de retour :
0 si tout se passe bien.
-1 pour tout erreur autre que syntaxe.
-2 pour une erreur de syntaxe.
Dans notre exemple, la commande permettra de modifier la propriété AllowDeletion d'une liste.
Tout d'abord, il faut vérifier si les paramètres nécessaires à l'exécution de la commande ont été fournis lors de l'appel à celle-ci. Si ce n'est pas le cas, nous renvoyons un message d'erreur ainsi que -2 en paramètre de retour car c'est une erreur de syntaxe.
Si tous les paramètres sont correctement fourni, alors nous mettons à jour la propriétés de la liste.
Voici le code de la méthode Run
int Microsoft.SharePoint.StsAdmin.ISPStsadmCommand.Run(string command, System.Collections.Specialized.StringDictionary keyValues, out string output)
{
string _Url = String.Empty;
string _ListName = String.Empty;
Boolean _ContainsParameters = false;
output = null;
try
{
if (keyValues.ContainsKey("Url"))
_Url = keyValues["url"];
else
throw new Exception(" Command line error - url missing
Usage : stsadm.exe -o ModifyListProperties {-url <url>} {-List <list>} {-AllowDeletion | -DoesNotAllowDeletion}");
if (keyValues.ContainsKey("List"))
_ListName = keyValues["List"];
else
throw new Exception(" Command line error - List missing
Usage : stsadm.exe -o ModifyListProperties {-url <url>} {-List <list>} {-AllowDeletion | -DoesNotAllowDeletion}");
using (SPSite site = new SPSite(_Url))
{
using (SPWeb web = site.OpenWeb())
{
SPList _List = web.Lists[_ListName];
#region AllowDeletion
if (keyValues.ContainsKey("AllowDeletion"))
{
_List.AllowDeletion = true;
_ContainsParameters = true;
}
if (keyValues.ContainsKey("DoesNotAllowDeletion"))
{
_List.AllowDeletion = false;
_ContainsParameters = true;
}
#endregion
if (_ContainsParameters)
{
_List.Update();
output += string.Format("List {0} - Allow Deletion - {1}", _ListName, _List.AllowDeletion.ToString());
}
else
{
throw new Exception(" Command line error - Parameter missing
Usage : stsadm.exe -o ModifyListProperties {-url <url>} {-List <list>} {-AllowDeletion | -DoesNotAllowDeletion}");
}
}
}
return 0;
}
catch (Exception ex )
{
output = ex.Message;
return -2;
}
}
Voila, notre classe est maintenant complète. Il va falloir maintenant créer une architecture similaire au dossier 12 de SharePoint.
Créons donc un dossier nommé CONFIG dans le dossier 12 de notre solution ainsi qu'un fichier de type xml qui permettra de définir la commande STSADM. Nommez ce fichier stsadmcommands.ModifyListProperties.xml. Nous l'appelons ainsi pour avoir la même nomenclature que les commandes STSADM basiques de SharePoint (cfr le dossier 12/CONFIG de SP).
La structure de ce fichier xml ressemble à ceci :
<?xml version="1.0" encoding="utf-8" ?> <commands> <command name="ModifyListProperties" class="MySTSADMCommand.ModifyListProperties,MySTSADMCommand, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9cc65896e107053" /> </commands>Nous retrouvons donc dans ce fichier un tag de type command qui comprend deux éléments : -name : Nom de la commande. -class : Signature de la classe. Maintenant que notre solution est complète, compilons-la et déployons la grâce à WSPBuilder (Merci SSO ;) ). Vous verrez maintenant que le fichier xml est bien présent dans le dossier 12/CONFIG de SharePoint et que la dll est bien présente dans la GAC. Il ne reste plus qu'à tester la commande. Vous pouvez télécharger la solution ici : Télécharger
Veuillez vous identifier ou vous inscrire pour donner une note à cet article.
Aucun commentaire.
Veuillez vous identifier ou vous inscrire pour réagir à cet article.