mo.notono.us

Wednesday, July 18, 2007

MOSS: Site Column: LinkedTitleDocNoMenu

MOSS 2007 (and I believe SharePoint 2003 as well) has a number of built-in site columns for linking to the item or document in a list/document library, while displaying either the Name or the Title, with or without the Edit context menu.

Unfortunately, the exact combination that I needed is not provided: Display the Title field of a DocumentLibrary item, with a link to the document (not item property page), and do not display the context menu.

The CAML I came up with is listed below for future reference - it borrows heavily from LinkedFileNameNoMenu:

<Field ID="{4EB765CD-0750-46fc-9058-CFBAC553F82F}"
    Name="LinkTitleDocNoMenu"
    SourceID="http://schemas.microsoft.com/sharepoint/v3"
    StaticName="LinkTitleDocNoMenu"
    Group="AIS"
    ReadOnly="TRUE"
    Type="Computed"
    DisplayName="$Resources:core,Title;"
    DisplayNameSrcField="Title"
    Filterable="FALSE"
    AuthoringInfo="$Resources:core,linked_to_document;">
  <FieldRefs>
    <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title"/>
    <FieldRef ID="{687c7f94-686a-42d3-9b67-2782eac4b4f8}" Name="FileLeafRef"/>
    <FieldRef ID="{30bb605f-5bae-48fe-b4e3-1f81d9772af9}" Name="FSObjType"/>
    <FieldRef ID="{94f89715-e097-4e8b-ba79-ea02aa8b7adb}" Name="FileRef"/>
    <FieldRef ID="{39360f11-34cf-4356-9945-25c44e68dade}" Name="File_x0020_Type"/>
    <FieldRef ID="{03e45e84-1992-4d42-9116-26f756012634}" Name="ContentTypeId"/>
  </FieldRefs>
  <DisplayPattern>
    <IfEqual>
      <Expr1>
        <LookupColumn Name="FSObjType"/>
      </Expr1>
      <Expr2>1</Expr2>
      <Then>
        <FieldSwitch>
          <Expr>
            <GetVar Name="RecursiveView"/>
          </Expr>
          <Case Value="1">
            <LookupColumn Name="FileLeafRef" HTMLEncode="TRUE"/>
          </Case>
          <Default>
            <SetVar Name="UnencodedFilterLink">
              <SetVar Name="RootFolder">
                <HTML>/</HTML>
                <LookupColumn Name="FileRef"/>
              </SetVar>
              <SetVar Name="FolderCTID">
                <FieldSwitch>
                  <Expr>
                    <ListProperty Select="EnableContentTypes"/>
                  </Expr>
                  <Case Value="1">
                    <Column Name="ContentTypeId"/>
                  </Case>
                </FieldSwitch>
              </SetVar>
              <FilterLink Default="" Paged="FALSE"/>
            </SetVar>
            <HTML><![CDATA[<A onfocus="OnLink(this)"  HREF="]]></HTML>
            <GetVar Name="UnencodedFilterLink" HTMLEncode="TRUE"/>
            <HTML><![CDATA[" onclick="javascript:EnterFolder(']]></HTML>
            <ScriptQuote NotAddingQuote="TRUE">
              <GetVar Name="UnencodedFilterLink"/>
            </ScriptQuote>
            <HTML><![CDATA[');javascript:return false;">]]></HTML>
            <Column Name="Title" HTMLEncode="TRUE"/>
            <HTML><![CDATA[</A>]]></HTML>
          </Default>
        </FieldSwitch>
      </Then>
      <Else>
        <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>
        <Column Name="Title" HTMLEncode="TRUE"/>
        <HTML><![CDATA[</A>]]></HTML>
        <IfNew>
          <HTML><![CDATA[<IMG SRC="/_layouts/[%=System.Threading.Thread.CurrentThread.CurrentUICulture.LCID%]/images/new.gif" alt="]]></HTML>
          <HTML>$Resources:core,new_gif_alttext</HTML>
          <HTML><![CDATA[">]]></HTML>
        </IfNew>
      </Else>
    </IfEqual>
  </DisplayPattern>
</Field>

YMMV, no support is offered...

Labels: , , ,

0 Comments:

Post a Comment

<< Home