Pages

Wednesday, December 14, 2011

Create Custom content type with Custom fields supporting creation of multiple types of documents (.doc, .xls, .ppt) in MOSS

At times, we may have a requirement where in we need to create different type of documents (Word - .doc/.docx , Excel - .xls/.xlsx, Powerpoint - .ppt/.pptx) in a single document library.

So we need to follow the below mentioned steps:

1. Create the required custom fields.

<Field ID="{2B333B0C-05E6-4576-A49E-8713CD6F3FA6}" Name="Field1"      DisplayName="Field1" Type="User" Required="FALSE" Indexed="TRUE"  ShowInNewForm="TRUE" ShowInEditForm="TRUE" ShowInDisplayForm="TRUE"
Group="Other Columns" >
    <Formula>=Author</Formula>
    <FieldRefs>
      <FieldRef Name="Author"/>
    </FieldRefs>
</Field>

<Field ID="{B8DEEF8E-54AA-4ad9-9AC7-115AC936228E}" Name="Field2"
 DisplayName="Field2" Type="Choice" Required="FALSE" Indexed="TRUE"   ShowInNewForm="TRUE"  ShowInEditForm="TRUE" ShowInDisplayForm="TRUE"
Group="Other Columns" >
    <CHOICES>
      <CHOICE>void</CHOICE>
    </CHOICES>
</Field>
and so on......

2. Create custom content types with the required custom fields.

<!--Generic content type inherited from document content type containing all the fields-->
<ContentType  ID="0x01010D" Name="CustomDocLibWrkspcCT" Group="Document Content Types" Description="Create a document for the document library" Version="0">
  <FieldRefs>
    <FieldRef ID="{2B333B0C-05E6-4576-A49E-8713CD6F3FA6}"  Name="Owner" Required="FALSE" ShowInNewForm="TRUE" ShowInEditForm="TRUE" ShowInDisplayForm="TRUE"/>
    <FieldRef ID="{B8DEEF8E-54AA-4ad9-9AC7-115AC936228E}" Name="Entity" Required="FALSE"   ShowInNewForm="TRUE" ShowInEditForm="TRUE" ShowInDisplayForm="TRUE"/>
  </FieldRefs>

  <XmlDocuments>
     <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
        <FormTemplates xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
          <Display>DocumentLibraryForm</Display>
          <Edit>DocumentLibraryForm</Edit>
          <New>DocumentLibraryForm</New>
        </FormTemplates>
      </XmlDocument>
    </XmlDocuments>

</ContentType>

<!--Content types inherited from above created document content type-->
<ContentType  ID="0x01010D0089A4ED8153C04980A6CC1DB53EFA85A9"
       Name="Word Document" Group="Document Content Types"
       Description="Create a word document for the document library"
       Version="0">
    <FieldRefs></FieldRefs>
  </ContentType>

<!--Content type for Excel document-->
<ContentType DocumentTemplate="122"  ID="0x01010D00A09D2732961C4ffe822B33F30117D24F" Name="Excel Document" Group="Document Content Types" Description="Create an excel document for the document library" Version="0">
    <DocumentTemplate TargetName="/_cts/Excel Document/MyTemplate.XLSX" />
    <FieldRefs></FieldRefs>   
</ContentType>

<!--Provision the document template in system content types virtual folder-->
<Module Name="XLSTemplates" Url="_cts/Excel Document" RootWebOnly="TRUE" Path="XLSTemplates" >
    <File Url="MyTemplate.XLSX" Type="Ghostable" />
</Module>

<!--Content type for PowerPoint document-->
<ContentType DocumentTemplate="123" ID="0x01010D0036A1687A93B8415fAE51C38676BACD9F" Name="PowerPoint Document" Group="Document Content Types" Description="Create a powerpoint document for the document library" Version="0" >
<DocumentTemplate TargetName="/_cts/PowerPoint Document/MyPptTemplate.PPTX" />
    <FieldRefs></FieldRefs>  
</ContentType>

<!--Provision the document template in system content types virtual folder-->
<Module Name="PPTTemplates" Url="_cts/PowerPoint Document" RootWebOnly="TRUE" Path="PPTTemplates" >
    <File Url="MyPptTemplate.PPTX" Type="Ghostable" />
</Module>

Note: The templates for these files are uploaded at the location http://minus.com/mtomNJw23

3. Attach these content types to the document library.
In the schema.xml file of the custom document library, within the <ContentTypes> tag, attach the content types created above

<ContentTypes>                 
      <ContentTypeRef ID="0x01010D0089A4ED8153C04980A6CC1DB53EFA85A9">
        <Folder TargetName="Forms/Document"/>
      </ContentTypeRef>
      <ContentTypeRef  ID="0x01010D00A09D2732961C4ffe822B33F30117D24F">
        <Folder TargetName="_cts/Excel Document"/>
      </ContentTypeRef>
      <ContentTypeRef ID="0x01010D0036A1687A93B8415fAE51C38676BACD9F">
        <Folder TargetName="_cts/PowerPoint Document"/>
      </ContentTypeRef>
      <ContentTypeRef ID="0x0120" />
</ContentTypes>

No comments:

Post a Comment