2008年7月 7日 (月)

ドキュメント ライブラリで拡張子を表示するには

ドキュメントライブラリにはファイルの名前は表示できても、既定では拡張子が表示されません。その代りに拡張子にひもづいたアイコンが表示されるようになっています。しかし、拡張子を表示するようにしたいというニーズも時々耳にします。

そこで色々と調査してみましたが、どうやら今のところ、これを手軽に実現するには SharePoint Designer 2007 を利用するしかなさそうです。つまり、既定のビューをXSLTデータビューに変換して XSLT を編集する方法です。

カスタマイズの結果

Doclibwithext

カスタマイズ方法は次の通りです。なお、XSLT ビューに変換するカスタマイズ方法は既にいくつか取り上げていますので今回は詳細は割愛します。

  1. SharePoint Designer 2007 でカスタマイズしたいドキュメントライブラリを開く。
  2. 拡張子を表示したいビューファイルとして、たとえば"すべてのドキュメント"ビューであるAllItems.aspxをコピーし、同じフォルダ内に AllItemsWithExt.aspx という名前で保存する。(既定のビューは念のためバックアップとして残しておきます)
  3. AllItems.aspx を開き、リストWebパーツ部分を右クリックし、「XSLTデータビューに変換」をクリックする。
  4. 拡張子を表示したい部分に次のコードを追加する。

    "<xsl:value-of select="concat('.',@File_x0020_Type)"/>"

    ※たとえば、今回の場合はファイル名の後に拡張子を表示したかったので526行目に次のようにコードを追加しています。

    Doclibwithextedit

  5. 上書き保存する

以上です。

トラックバック

このページのトラックバックURL: http://bb.lekumo.jp/t/trackback/718613/34255733

ドキュメント ライブラリで拡張子を表示するにはを参照しているブログ:

コメント

この要望はたくさんあり、社内で試してみました。
やはり拡張子が表示される方がわかりやすいですね。

ただ一点問題がありまして、なぜかコンテキストメニューの表示(リスト)が変わってしまい、バージョン履歴が表示されなくなりました。

変更していない他のビューでは問題ないので、切り替えて利用していますが、
拡張子表示した画面から、バージョン履歴などコンテキストメニューが正しく表示されるようにはできるのでしょうか?
ご存じでしたら教えてください。

Kawaneさん、お世話になっております。

ご質問の件ですが、私も解決方法を探さなければと思ったまま保留になっており、ちょうどご連絡いただいてよかったです。ようやく解決策を見つけられました。結局原因は、XSLT ビューに変換した際のバグですね。変換後に自動生成されるXSLTコードにバグがあり、JavaScriptを適切に呼べ出せないことが原因です。そのため手動で直す必要があります。

まだ非表示になるのはバージョン履歴だけではないのでまだ調査中の部分もあり、後ほどきちんと整理したら新規にブログ記事として書く予定ですが、とりあえずバージョン履歴の表示方法を記載しておきます。

1.XSLTに変換したコードを表示して以下の部分を変更します。

(修正前)ddwrt:ListProperty('EnableMinorVersions')='1'

(修正後)
boolean(ddwrt:ListProperty('EnableMinorVersions'))=boolean(true)

なお、上記の記載箇所は複数ありますので、全て直すと良いです。ほかの非表示になるメニューの多くは同様の修正ルールで直せます。具体的には "ddwrt:xxxx = '1'" となっている部分をすべてboolean値のtrueで比較されるようにすることです。
ただし、アクセス権限の設定メニューなどはこれだけでは修正できないため、もう少し検証してから記事にまとめますので、少々お待ちくださいませ。

ちなみに、こういうバグも SharePoint 2010 だと既定で XSLTビューになるのでかなり改善されそうです。