vendredi 24 juin 2011

Faire fonctionner SPListDisplaySetting sous SharePoint 2010 (Display Settings)

Pour ceux qui se sont déjà frottés à la customisation des formulaires d'affichage / édition / création des listes sous SharePoint, c'était clairement une belle galère.

C'est pour ça qu'il existait sous SharePoint 2007 une Feature très sympa de customisation des formulaires de listes SharePoint : SPListDisplaySetting  (CodePlex : http://splistdisplaysetting.codeplex.com - Powered by Laurent Cotton Aka Suchii - Bewise)

Ultra facile à prendre en main cette Feature permettait de designer en 3 clics les champs que l'on affiche dans les formulaires de création (NewForm.aspx), d'édition (EditForm.aspx) sans développement spécifique, sans SharePoint Designer et sans InfoPath ! Elle permet de décider quels champs sont affichés en fonction du contexte (new/edit/display) et en fonction du niveau de droits (lié à un groupe SharePoint).



Malheureusement, cette Feature n'est plus mise à jour sous CodePlex, donc voici comment la faire fonctionner sous SharePoint 2010 :

1 - Récupérer la Solution (wsp)
On oublie l'installeur qui beugue et on télécharge le code source de la solution (ici), puis on récupére la solution SharePoint : Bewise.SharePoint.SPListDisplaySetting.wsp
(située dans le dossier Bewise.SharePoint.Install)


2 - Installer / Déployer la Solution 
On installe la solution dans la ferme, via un petit script PowerShell  (SharePoint 2010 Management Shell) 
Add-SPSolution D:\Bewise.SharePoint.SPListDisplaySetting.wsp
(vous adaptez bien sûr le chemin d'emplacement du wsp)

Puis on la déploie sur les WebApplications sur lesquelles on souhaite utiliser ce module :



3 - Modifier le contrôle "DefaultTemplates.ascx"
Dans le (fameux) répertoire 14 de SharePoint (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\), faire un Backup du fichier14\TEMPLATE\CONTROLTEMPLATES\DefaultTemplates.ascx

[UPDATE 2011.11.10] : Important, ne pas laisser le Backup dans le dossier ControlTemplates ou alors changer l'extension (par exemple en .ascx.bak)

[UPDATE 2013.01.31] : Voici un exemple du fichier modifié ==> Télécharger le fichier DefaultTemplate.ascx <==

Puis le modifier de la façon suivante :

Ligne 7 : Ajouter :
<%@ Register TagPrefix="Bewise" Assembly="Bewise.SharePoint.SPListDisplaySetting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ff7b91f6a8ac16d4" namespace="Bewise.SharePoint.SPListDisplaySetting" %>
Ligne 127 : Remplacer <SharePoint:ListFieldIterator runat="server"/> par<Bewise:ListDisplaySettingIterator runat="server"/>



4 - Activer la Feature au niveau SiteCol 

Au niveau de votre collection de sites, activer la Feature "Display Settings (powered by Bewise)"
4 - Et c'est parti !

Dans les paramètres de votre liste, configurez l'affichage des champs "Display Settings (powered by Bewise)"

On configure par exemple la Colonne 2 pour n'être visible qu'aux Approbateurs (Groupe SharePoint) et uniquement en mode Edition


Et ça fonctionne et on est content.


Et hop enjoy.

Etienne









23 commentaires:

  1. Hello, I followed your procedure, everything seems fine, no errors have been recorded, but fields are not hidden. Do you have any fetures disabled...? My installation is pure SP 2010 Standard on pure W2008R2... I would appreciate for any help :)
    Regards,
    Artur (artur.jedynak@integral-tech.pl)

    RépondreSupprimer
  2. Hi Artur, it should work properly.
    You don't have to enable other features.
    If you configure a hidden column for example on new item form (display never), it should not be shown if you create a new item in your list

    RépondreSupprimer
  3. Same here, have the same env, not able to hide the fields that i am looking for.

    RépondreSupprimer
  4. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  5. Bonjour Etienne,
    j'ai suivi scrupuleusement les consignes : comme les autres, cela ne marche pas !?!?.

    Dans ton exemple, tu cache la colonne en mode création, et tu la laisse apparente pour teszigs en mode édition: et cela marche dans ce cas là (magique !) As-tu essayé avec d'autre configuration et/ou d'autres utilisateurs ?

    RépondreSupprimer
  6. It doesn't work...

    I install all correctly without problems, I active the feature, and change a column to 'Never', and fails...don't filter anything, the column is being displaying on the list.

    Maybe I have to create de list again?o a item?

    Somebody knows any free feature like this that works in moss2010?

    Thanks.

    RépondreSupprimer
  7. To somebody who have problems "the field is not hidding": Dont make a copy of the file "DefaultTemplates.ascx" or move it to another directory.

    RépondreSupprimer
  8. Thanks Ramon for your precision, i will update my post

    RépondreSupprimer
  9. Salut Etienne.
    j'ai suivi la procédure jusqu'a l'étape 4 sans soucis. l'activation s'est bien passée. Mais dans les parametres de mes listes, il n'y a pas afficher "Display Settings (powered by Bewise)"

    Alors je pige pas et je suis coincé.
    Aurais tu une solution.
    D'avance merci

    RépondreSupprimer
  10. LUCBFT, tu as bien activée la Feature ? Une fois active ce lien "Display Settings" doit apparaître dans les paramètres de chacune de tes listes du site ou la Feature a été activée.

    RépondreSupprimer
  11. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  12. It does work if you change ALLof the "<SharePoint:ListFieldIterator " references. The first time i changed only the ones that have solely the runat="server" attribute, and it wasn't working. So I managed to go with a brutal replace of all the SharePoint:ListFieldIterator reference with Bewise:ListDisplaySettingIterator, as i assumed that it inherits from it so it would accept the same parameters.

    I also moved in another folder the original aspx.

    Arturo Bardelli

    RépondreSupprimer
  13. also do iisreset,will not work without it

    RépondreSupprimer
  14. Bonsoir Etienne

    Merci pour votre post. J'ai bien appliqué votre méthode et je me retrouve debant un cas de figure non évoqué. après installation j'ai bien eu le menu Display setting. j'ai testé sans succés hélas... et après coup j'ai lu qu'un iireset pouvait régler le pb. dont acte. De retour sur mes sites, le bouton "paramètre de liste" n'était plus accessible sur aucune de mes listes..Les droits étaient Ok, redemarrage + divers tests sans succès. j'ai tout desinstallé et c'est redevenu normal. Auriez vous une idée de ce qui a pu se passer? et a quel moment / endroit j'aurais "fauté"?
    suis sur Sharepoint serveur 2010..
    Merci de votre réponse. Ou peut être avez vous trouvé une autre solution pour gérer les listes?
    Faut il suivre ce que préconise Bardo?

    François

    RépondreSupprimer
    Réponses
    1. Bonjour François.
      Il ne faut pas utiliser le programme d'installation .MSI
      Il faut récupérer le fichier .WSP à l'intérieur du code source :
      Lien Code source = http://splistdisplaysetting.codeplex.com/downloads/get/44593
      A l'intérieur du Bewise_SharePoint_SPListDisplaySetting.zip: dans le dossier "Bewise.SharePoint.Install"

      Supprimer
    2. Rebonjour François.
      Par ailleurs le bouton "Paramètre de liste" disparaît si on fait une mauvaise modif dans le fichier "\TEMPLATE\CONTROLTEMPLATES\DefaultTemplates.ascx"
      Revérifie bien les modifs

      Supprimer
    3. Bonsoir Etienne.

      Merci de votre réponse et de se pencher sur mon cas de pov'newbie!
      J'ai tout bien suivi vos recommandations et le pas a pas. la feature s'installe bien (il me semble en tout cas) et l'activation sur mon site est OK. et également dans mes listes. Tout semble Ok jusqu'au moment ou je fait un iireset.. Etonnament lors de la réactivation de la feature (et avant le iireset) SHP avait gardé les préférence de mes tests sur mes colonnes?!!
      Je pense effectivment que je me plante lors de la modif du fichier aspx, (c'est la première fois que je fais ça, et je fais ça avec le designer?) Je n'ai pas tout a fait les bons N° de lignes ?
      pour le 2eme changement faut il le faire une seule fois? ou remplacer toutes les lignes ?

      Bref j'avoue que je ne comprends pas ou je merde !! et après 10 relectures et tests!! je suis a sec...
      Une idée de génie a me donner ?
      merci de ton temps ..et des conseils.
      François.

      Supprimer
    4. Bonsoir FM
      Voici un fichier d'exemple :

      https://sites.google.com/a/istep.fr/downloads/DefaultTemplates.ascx

      Avec ça tu devrais être au top.
      ++

      Supprimer
    5. Bonsoir Etienne .....
      J'ai bêtement copié le fichier que tu as envoyé et hop ....
      Pff c'est trop de la balle .. ça marche Nickel, j'en suis comme 2 rond de flans..
      Je ne sais pas si le fait d'avori mis le fichier aspx tel quel a des incidences mais en tout cas ça marche pour l'instant..
      je vais bruler un cierge...
      Merci de ton aide précieuse qui va me faciliter la vie...
      c'est super sympa de ta part
      merci encore
      François..

      Supprimer
  15. in sp2010 it's work. thx

    i have other server with sharepoint 2013 and don't work.

    u can help me?

    RépondreSupprimer
  16. I followed all the steps mentioned by you including moving copy of default template from control template folder.
    Nothing is working for me.
    Can you please guide.. what i am doing wrong?

    RépondreSupprimer
  17. Bonsoir Etienne,

    J'ai un problème je suis avec du wss 3.0 et je viens de faire un restore backup, j'ai toujours ma feature avec SPListDisplaySetting, je vois bien le display settings, j'ai bien les champs a choisir mais rien ne ce passe même en mettant never.
    Je suis sur 2008 R2 merci

    RépondreSupprimer