1

実行時にドキュメントライブラリ内のドキュメントアイコンを変更したいと思います。アイコンは、コードにあるいくつかの条件に基づいて変更する必要があります。ファイルの拡張子(txt、doc、pdfなど)は違いはありません。現在、私はHTTPモジュールを使用してサーバーの応答を解析し、実行時にアイコンを変更します。ただし、ページHTMLマークアップが変更される可能性があるため、このソリューションは信頼できません。異なるビューは異なる動作をし、SharePoint 2010の登録HTTPモジュールに問題があります。 実行時にドキュメントアイコンを変更するAPIまたはその他の信頼できる方法はありますか?SharePoint。ドキュメントライブラリのドキュメントアイコンを変更しますか?

私は助けていただきありがとうございます。 おかげで、事前に、ここで -Petro

答えて

1

は、SharePoint 2010の標準DocIconフィールド(そのかなり巨大な)のスキーマです:

<Field ID="{081c6e4c-5c14-4f20-b23e-1a71ceb6a67c}" Type="Computed" ReadOnly="TRUE" Name="DocIcon" DisplayName="Тип" TextOnly="TRUE" ClassInfo="Icon" AuthoringInfo="(значок связи с документом)" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="DocIcon" FromBaseType="TRUE"> 
    <FieldRefs> 
    <FieldRef Name="File_x0020_Type" /> 
    <FieldRef Name="FSObjType" /> 
    <FieldRef Name="FileRef" /> 
    <FieldRef Name="FileLeafRef" /> 
    <FieldRef Name="HTML_x0020_File_x0020_Type" /> 
    <FieldRef Name="PermMask" /> 
    <FieldRef Name="CheckoutUser" ShowField="Title" /> 
    <FieldRef Name="IsCheckedoutToLocal" /> 
    <FieldRef Name="ServerUrl" /> 
    <FieldRef Name="IconOverlay" /> 
    </FieldRefs> 
    <DisplayPattern> 
    <SetVar Name="DocIconImg"> 
     <SetVar Name="DocIconAltText"> 
     <IfEqual> 
      <Expr1> 
      <LookupColumn Name="FSObjType" /> 
      </Expr1> 
      <Expr2>1</Expr2> 
      <Then> 
      <IfSubString> 
       <Expr1>0x0120D5</Expr1> 
       <Expr2> 
       <Column Name="ContentTypeId" /> 
       </Expr2> 
       <Then> 
       <HTML>Коллекция документов: </HTML> 
       <LookupColumn Name="FileLeafRef" HTMLEncode="TRUE" /> 
       </Then> 
       <Else> 
       <HTML>Папка: </HTML> 
       <LookupColumn Name="FileLeafRef" HTMLEncode="TRUE" /> 
       </Else> 
      </IfSubString> 
      </Then> 
      <Else> 
      <LookupColumn Name="FileLeafRef" HTMLEncode="TRUE" /> 
      </Else> 
     </IfEqual> 
     </SetVar> 
     <SetVar Name="DocIconFileName"> 
     <IfEqual> 
      <Expr1> 
      <Column Name="IconOverlay" /> 
      </Expr1> 
      <Expr2 /> 
      <Then> 
      <IfEqual> 
       <Expr1> 
       <LookupColumn Name="FSObjType" /> 
       </Expr1> 
       <Expr2>1</Expr2> 
       <Then> 
       <IfEqual> 
        <Expr1> 
        <Column Name="HTML_x0020_File_x0020_Type" /> 
        <HTML>|</HTML> 
        <Column Name="File_x0020_Type" /> 
        </Expr1> 
        <Expr2> 
        <HTML>|</HTML> 
        </Expr2> 
        <Then> 
        <HTML>folder.gif</HTML> 
        </Then> 
        <Else> 
        <SetVar Name="FolderIconFromMap"> 
         <MapToIcon> 
         <Column Name="HTML_x0020_File_x0020_Type" /> 
         <HTML>|</HTML> 
         <Column Name="File_x0020_Type" /> 
         </MapToIcon> 
        </SetVar> 
        <IfEqual> 
         <Expr1> 
         <GetVar Name="FolderIconFromMap" /> 
         </Expr1> 
         <Expr2> 
         <MapToIcon /> 
         </Expr2> 
         <Then> 
         <HTML>folder.gif</HTML> 
         </Then> 
         <Else> 
         <GetVar Name="FolderIconFromMap" /> 
         </Else> 
        </IfEqual> 
        </Else> 
       </IfEqual> 
       </Then> 
       <Else> 
       <MapToIcon> 
        <Column Name="HTML_x0020_File_x0020_Type" /> 
        <HTML>|</HTML> 
        <Column Name="File_x0020_Type" /> 
       </MapToIcon> 
       </Else> 
      </IfEqual> 
      </Then> 
      <Else> 
      <MapToIcon> 
       <Column Name="IconOverlay" /> 
      </MapToIcon> 
      </Else> 
     </IfEqual> 
     </SetVar> 
     <HTML><![CDATA[<img border="0" alt="]]></HTML> 
     <GetVar Name="DocIconAltText" /> 
     <HTML><![CDATA[" title="]]></HTML> 
     <GetVar Name="DocIconAltText" /> 
     <HTML><![CDATA[" src="/_layouts/images/]]></HTML> 
     <GetVar Name="DocIconFileName" /> 
     <HTML><![CDATA[" />]]></HTML> 
    </SetVar> 
    <SetVar Name="DocIconOverlayImg"> 
     <IfEqual> 
     <Expr1> 
      <Column Name="IconOverlay" /> 
     </Expr1> 
     <Expr2 /> 
     <Then> 
      <IfEqual> 
      <Expr1> 
       <Column Name="CheckoutUser" /> 
      </Expr1> 
      <Expr2 /> 
      <Else> 
       <SetVar Name="DocIconOverlayAltText"> 
       <LookupColumn Name="FileLeafRef" HTMLEncode="TRUE" /> 
       <HTML><![CDATA[&#10;Кем извлечено: ]]></HTML> 
       <LookupColumn Name="CheckoutUser" ShowField="Title" HTMLEncode="TRUE" /> 
       </SetVar> 
       <HTML><![CDATA[<img class="ms-vb-icon-overlay" alt="]]></HTML> 
       <GetVar Name="DocIconOverlayAltText" /> 
       <HTML><![CDATA[" title="]]></HTML> 
       <GetVar Name="DocIconOverlayAltText" /> 
       <HTML><![CDATA[" src="/_layouts/images/checkoutoverlay.gif" />]]></HTML> 
      </Else> 
      </IfEqual> 
     </Then> 
     <Else> 
      <HTML><![CDATA[<img class="ms-vb-icon-overlay" alt="*" src="/_layouts/images/]]></HTML> 
      <MapToOverlay> 
      <Column Name="IconOverlay" /> 
      </MapToOverlay> 
      <HTML><![CDATA[" />]]></HTML> 
     </Else> 
     </IfEqual> 
    </SetVar> 
    <IfEqual> 
     <Expr1> 
     <LookupColumn Name="FSObjType" /> 
     </Expr1> 
     <Expr2>1</Expr2> 
     <Then> 
     <FieldSwitch> 
      <Expr> 
      <GetVar Name="RecursiveView" /> 
      </Expr> 
      <Case Value="1"> 
      <GetVar Name="DocIconImg" /> 
      <GetVar Name="DocIconOverlayImg" /> 
      </Case> 
      <Default> 
      <SetVar Name="UnencodedFilterLink"> 
       <SetVar Name="RootFolder"> 
       <HTML>/</HTML> 
       <LookupColumn Name="FileRef" /> 
       </SetVar> 
       <SetVar Name="SkipHost">1</SetVar> 
       <SetVar Name="FolderCTID"> 
       <FieldSwitch> 
        <Expr> 
        <ListProperty Select="EnableContentTypes" /> 
        </Expr> 
        <Case Value="1"> 
        <Column Name="ContentTypeId" /> 
        </Case> 
       </FieldSwitch> 
       </SetVar> 
       <FilterLink Default="" Paged="FALSE" /> 
      </SetVar> 
      <FieldSwitch> 
       <Expr> 
       <GetVar Name="FileDialog" /> 
       </Expr> 
       <Case Value="1"> 
       <GetVar Name="DocIconImg" /> 
       <GetVar Name="DocIconOverlayImg" /> 
       </Case> 
       <Default> 
       <HTML><![CDATA[<a href="]]></HTML> 
       <GetVar Name="UnencodedFilterLink" HTMLEncode="TRUE" /> 
       <HTML><![CDATA[" onmousedown="javascript:VerifyFolderHref(this,event, ']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <GetVar Name="UnencodedFilterLink" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ServerProperty Select="HtmlTrProgId"> 
        <Column Name="File_x0020_Type" /> 
        </ServerProperty> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ListProperty Select="DefaultItemOpen" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <MapToControl> 
        <Column Name="HTML_x0020_File_x0020_Type" /> 
        <HTML>|</HTML> 
        <Column Name="File_x0020_Type" /> 
        </MapToControl> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <Column Name="HTML_x0020_File_x0020_Type" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ServerProperty Select="GetServerFileRedirect"> 
        <Field Name="ServerUrl" /> 
        <HTML>|</HTML> 
        <Column Name="HTML_x0020_File_x0020_Type" /> 
        </ServerProperty> 
       </ScriptQuote> 
       <HTML><![CDATA[')"]]></HTML> 
       <HTML><![CDATA[" onclick="return HandleFolder(this,event, ']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <GetVar Name="UnencodedFilterLink" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ServerProperty Select="HtmlTransform" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ServerProperty Select="HtmlTrAcceptType"> 
        <Column Name="File_x0020_Type" /> 
        </ServerProperty> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ServerProperty Select="HtmlTrHandleUrl"> 
        <Column Name="File_x0020_Type" /> 
        </ServerProperty> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ServerProperty Select="HtmlTrProgId"> 
        <Column Name="File_x0020_Type" /> 
        </ServerProperty> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ListProperty Select="DefaultItemOpen" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <MapToControl> 
        <Column Name="HTML_x0020_File_x0020_Type" /> 
        <HTML>|</HTML> 
        <Column Name="File_x0020_Type" /> 
        </MapToControl> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <Column Name="HTML_x0020_File_x0020_Type" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ServerProperty Select="GetServerFileRedirect"> 
        <Field Name="ServerUrl" /> 
        <HTML>|</HTML> 
        <Column Name="HTML_x0020_File_x0020_Type" /> 
        </ServerProperty> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <Column Name="CheckoutUser" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <UserID AllowAnonymous="TRUE" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <ListProperty Select="ForceCheckout" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <Field Name="IsCheckedoutToLocal" /> 
       </ScriptQuote> 
       <HTML><![CDATA[',']]></HTML> 
       <ScriptQuote NotAddingQuote="TRUE"> 
        <Field Name="PermMask" /> 
       </ScriptQuote> 
       <HTML><![CDATA[');">]]></HTML> 
       <GetVar Name="DocIconImg" /> 
       <GetVar Name="DocIconOverlayImg" /> 
       <HTML><![CDATA[</a>]]></HTML> 
       </Default> 
      </FieldSwitch> 
      </Default> 
     </FieldSwitch> 
     </Then> 
     <Else> 
     <HTML><![CDATA[<a href="]]></HTML> 
     <Field Name="ServerUrl" URLEncodeAsURL="TRUE" /> 
     <HTML><![CDATA[" onclick="return DispEx(this,event,']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <ServerProperty Select="HtmlTransform" /> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <ServerProperty Select="HtmlTrAcceptType"> 
      <Column Name="File_x0020_Type" /> 
      </ServerProperty> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <ServerProperty Select="HtmlTrHandleUrl"> 
      <Column Name="File_x0020_Type" /> 
      </ServerProperty> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <ServerProperty Select="HtmlTrProgId"> 
      <Column Name="File_x0020_Type" /> 
      </ServerProperty> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <ListProperty Select="DefaultItemOpen" /> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <MapToControl> 
      <Column Name="HTML_x0020_File_x0020_Type" /> 
      <HTML>|</HTML> 
      <Column Name="File_x0020_Type" /> 
      </MapToControl> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <Column Name="HTML_x0020_File_x0020_Type" /> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <ServerProperty Select="GetServerFileRedirect"> 
      <Field Name="ServerUrl" /> 
      <HTML>|</HTML> 
      <Column Name="HTML_x0020_File_x0020_Type" /> 
      </ServerProperty> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <Column Name="CheckoutUser" /> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <UserID AllowAnonymous="TRUE" /> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <ListProperty Select="ForceCheckout" /> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <Field Name="IsCheckedoutToLocal" /> 
     </ScriptQuote> 
     <HTML><![CDATA[',']]></HTML> 
     <ScriptQuote NotAddingQuote="TRUE"> 
      <Field Name="PermMask" /> 
     </ScriptQuote> 
     <HTML><![CDATA[')">]]></HTML> 
     <GetVar Name="DocIconImg" /> 
     <GetVar Name="DocIconOverlayImg" /> 
     <HTML><![CDATA[</a>]]></HTML> 
     </Else> 
    </IfEqual> 
    </DisplayPattern> 
</Field> 

あなたは(スルーのアイコンを変更したいライブラリのDocIconフィールドを取得することができますコード)を作成し、そのスキーマを変更します。ご覧のとおり、XSLTがたくさんありますが、非常にシンプルで、大きな問題なく新しいパターンを追加できます(古いものは削除できます)。もう1つの方法は、独自のカスタムフィールドタイプを作成し、標準のフィールドタイプを使用してアイコンを表示する方法です。