Meilleur auteur de réponses
Customisation document library : colonne name

Question
-
Bonjour,
Je voudrais désactiver le lien de la colonne Name dans la biblio de doc.
Par défaut le lien est actif.
Dans le fichier ONET.xml se situe une référence au lien du document (la colonne name) sur onet s'est LINFILENAME mais malgrès le fait que je modifie la propriété AUTOHYPERLINK à FALSE le lien reste toujours actif...
A priori le fichier à modifier semblerai être sur
../12/templates/feautures/legacydocumentlibrary/doclib/schema.xmlou sur
../12/templates/feautures/documentlibrary/doclib/schema.xml
mais je ne trouve pas..la ligne à modifierHelp..
Merci
Réponses
-
Bonjour,
Plusieurs choses :
Modifier le fichier Onet.xml après coup n'est jamais une bonne idée. imaginer ce fichier comme une sorte ... d'empreinte de site qu'utilise SharePoint pour créer le site en question.
Si vous voulez le modifier, alors il faudra utiliser des concepts comme le Feature Stapling, vous pourrez trouver plus d'infos sur le sujet à cette url si ca vous interesse : http://del.icio.us/philippesentenac/stapling
Mais ce n'est pas le sujet
Pour moi, la solution n'est pas forcément dans le schéma de la bibliothèque :
Le fait que le champ Title soit un lien HREF n'est pas du à la bibliothèque mais à la définition du champ en lui même, la bibliothèque ne fait que le référencer :
fichier : /12/templates/feautures/documentlibrary/doclib/schema.xml
<ViewFields>
<FieldRef Name="DocIcon">
</FieldRef>
<FieldRef Name="LinkFilename">
</FieldRef>
<FieldRef Name="Modified">
</FieldRef>
<FieldRef Name="Editor">
</FieldRef>
</ViewFields>
En partant de là, allons dans un autre fichier qui définit les champs :
fichier : /12/templates/feautures/fields/wssfields.xml
<Field ID="{5cc6dc79-3710-4374-b433-61cb4a686c12}"
Name="LinkFilename"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
StaticName="LinkFilename"
......
La partie interessante étant :
<Default><Field Name="_EditMenuTableStart"/>
<Field Name="LinkFilenameNoMenu"/>
<Field Name="_EditMenuTableEnd"/>
</Default>
On comprend qu'il ne fait que prendre un autre field LinkFilenameNoMenu et lui rajoute un menu.
Hors c'est ce field là qui génère un HTML avec un lien HREF.
Maintenant si on regarde ce field en question dans le même fichier :
<Field ID="{9d30f126-ba48-446b-b8f9-83745f322ebe}"
Name="LinkFilenameNoMenu"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
StaticName="LinkFilenameNoMenu"
Group="$Resources:Base_Columns"
ReadOnly="TRUE"
.....
Il ne vous reste plus qu'à modifier cette partie :
<HTML><![CDATA[<A onfocus="OnLink(this)" HREF="]]></HTML><GetVar Name="UnencodedFilterLink" HTMLEncode="TRUE"/>
<HTML><![CDATA[" onclick="BLOCKED SCRIPTEnterFolder(']]></HTML>
<ScriptQuote NotAddingQuote="TRUE"><GetVar Name="UnencodedFilterLink"/></ScriptQuote>
<HTML><![CDATA[');BLOCKED SCRIPTreturn false;">]]></HTML>
<LookupColumn Name="FileLeafRef" HTMLEncode="TRUE"/>
<HTML><![CDATA[</A>]]></HTML>
et cette partie :
<HTML><![CDATA[<A onfocus="OnLink(this)" HREF="]]></HTML>
<Field Name="EncodedAbsUrl"/>
<HTML><![CDATA[" onclick="DispDocItemEx(this,']]></HTML>
<ServerProperty Select="HtmlTransform"/>
<HTML><![CDATA[',']]></HTML>
<ServerProperty Select="HtmlTrAcceptType"><Column Name="File_x0020_Type"/></ServerProperty>
<HTML><![CDATA[',']]></HTML>
<ServerProperty Select="HtmlTrHandleUrl"><Column Name="File_x0020_Type"/></ServerProperty>
<HTML><![CDATA[',']]></HTML>
<ServerProperty Select="HtmlTrProgId"><Column Name="File_x0020_Type"/></ServerProperty>
<HTML><![CDATA[')">]]></HTML>
<UrlBaseName HTMLEncode="TRUE"><LookupColumn Name="FileLeafRef"/></UrlBaseName>
<HTML><![CDATA[</A>]]></HTML>
selon vos besoins.
Attention il ne faut pas modifier directement le fichier wssfields.xml !
Vous devez crée une nouvelle nouvelle feature qui va déployer vos nouveau Fields
Si , vous souhaitez avoir un template de liste de document custom, il va falloir creer un nouveau template de liste et dans la vue il faudra référencer vos nouveaux field.
Pour du step by step, voici un très bon article d'Andrew
http://www.andrewconnell.com/blog/articles/SharepointLinksListOpenInNewWindow.aspx
En espérant que ca répond à votre question
Toutes les réponses
-
Bonjour,
Plusieurs choses :
Modifier le fichier Onet.xml après coup n'est jamais une bonne idée. imaginer ce fichier comme une sorte ... d'empreinte de site qu'utilise SharePoint pour créer le site en question.
Si vous voulez le modifier, alors il faudra utiliser des concepts comme le Feature Stapling, vous pourrez trouver plus d'infos sur le sujet à cette url si ca vous interesse : http://del.icio.us/philippesentenac/stapling
Mais ce n'est pas le sujet
Pour moi, la solution n'est pas forcément dans le schéma de la bibliothèque :
Le fait que le champ Title soit un lien HREF n'est pas du à la bibliothèque mais à la définition du champ en lui même, la bibliothèque ne fait que le référencer :
fichier : /12/templates/feautures/documentlibrary/doclib/schema.xml
<ViewFields>
<FieldRef Name="DocIcon">
</FieldRef>
<FieldRef Name="LinkFilename">
</FieldRef>
<FieldRef Name="Modified">
</FieldRef>
<FieldRef Name="Editor">
</FieldRef>
</ViewFields>
En partant de là, allons dans un autre fichier qui définit les champs :
fichier : /12/templates/feautures/fields/wssfields.xml
<Field ID="{5cc6dc79-3710-4374-b433-61cb4a686c12}"
Name="LinkFilename"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
StaticName="LinkFilename"
......
La partie interessante étant :
<Default><Field Name="_EditMenuTableStart"/>
<Field Name="LinkFilenameNoMenu"/>
<Field Name="_EditMenuTableEnd"/>
</Default>
On comprend qu'il ne fait que prendre un autre field LinkFilenameNoMenu et lui rajoute un menu.
Hors c'est ce field là qui génère un HTML avec un lien HREF.
Maintenant si on regarde ce field en question dans le même fichier :
<Field ID="{9d30f126-ba48-446b-b8f9-83745f322ebe}"
Name="LinkFilenameNoMenu"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
StaticName="LinkFilenameNoMenu"
Group="$Resources:Base_Columns"
ReadOnly="TRUE"
.....
Il ne vous reste plus qu'à modifier cette partie :
<HTML><![CDATA[<A onfocus="OnLink(this)" HREF="]]></HTML><GetVar Name="UnencodedFilterLink" HTMLEncode="TRUE"/>
<HTML><![CDATA[" onclick="BLOCKED SCRIPTEnterFolder(']]></HTML>
<ScriptQuote NotAddingQuote="TRUE"><GetVar Name="UnencodedFilterLink"/></ScriptQuote>
<HTML><![CDATA[');BLOCKED SCRIPTreturn false;">]]></HTML>
<LookupColumn Name="FileLeafRef" HTMLEncode="TRUE"/>
<HTML><![CDATA[</A>]]></HTML>
et cette partie :
<HTML><![CDATA[<A onfocus="OnLink(this)" HREF="]]></HTML>
<Field Name="EncodedAbsUrl"/>
<HTML><![CDATA[" onclick="DispDocItemEx(this,']]></HTML>
<ServerProperty Select="HtmlTransform"/>
<HTML><![CDATA[',']]></HTML>
<ServerProperty Select="HtmlTrAcceptType"><Column Name="File_x0020_Type"/></ServerProperty>
<HTML><![CDATA[',']]></HTML>
<ServerProperty Select="HtmlTrHandleUrl"><Column Name="File_x0020_Type"/></ServerProperty>
<HTML><![CDATA[',']]></HTML>
<ServerProperty Select="HtmlTrProgId"><Column Name="File_x0020_Type"/></ServerProperty>
<HTML><![CDATA[')">]]></HTML>
<UrlBaseName HTMLEncode="TRUE"><LookupColumn Name="FileLeafRef"/></UrlBaseName>
<HTML><![CDATA[</A>]]></HTML>
selon vos besoins.
Attention il ne faut pas modifier directement le fichier wssfields.xml !
Vous devez crée une nouvelle nouvelle feature qui va déployer vos nouveau Fields
Si , vous souhaitez avoir un template de liste de document custom, il va falloir creer un nouveau template de liste et dans la vue il faudra référencer vos nouveaux field.
Pour du step by step, voici un très bon article d'Andrew
http://www.andrewconnell.com/blog/articles/SharepointLinksListOpenInNewWindow.aspx
En espérant que ca répond à votre question -