2006年03月17日

サイトのページでエクスプローラビュー

 ライブラリのビュー画面でエクスプローラビューが利用可能ですが、ポータルサイトやチームサイトのページにライブラリの Web パーツを組み込んでエクスプローラビューを利用する際のテクニックです。
基本的には、WebDAV redirector が利用可能な条件 (→ <ライブラリのエクスプローラビュー>) が揃っていないと、サイトのページに組み込んでも「ページを表示できません」というエラーになります。 何じゃそりゃ・・・ エラーになるなよ〜

リストの詳細画面では、BODY タグの onload イベントにて navtoframe 関数を呼んでいますが、
<BODY onload="navtoframe()" marginwidth=0 marginheight=0 scroll="yes">
ポータルのエリア、チームサイトのページにはこれが組み込まれていない為、何も表示されません。
でもね、エクスプローラビューを組み込むと、サイトのページにも navtoframe 関数は定義されているのですよね。 つまり、ページロード時に navtoframe 関数を呼んであげれば使えるようになる訳です。

そこで、「ドキュメント ライブラリ」Webパーツより上に、以下のHTMLを組み込んだ「コンテンツ エディタ」Web パーツをサイトのページにも組み込むことが可能になります。
<STYLE>
<!--
.ms-httpFolder {behavior: url("#default#httpFolder");}
#MSOZoneCell_WebPart_WPQ_ { display: none; }
-->
</STYLE>
<SCRIPT FOR="window" EVENT="onload" LANGUAGE="JavaScript">
<!--
try { navtoframe (); } catch (e) {}
-->
</SCRIPT>
ちなみに、このアプローチの場合、隙間があいてしまいますのが、必要に応じて style ブロック内に以下の行を追加すると隙間を無くすことが出来ます。
#MSOZoneCell_WebPart_WPQ_ { display: none; }
但し、Web パーツを削除する場合や、レイアウトを変える場合には、一旦この行を消した方が良いかもしれません。

もちろん、Web パーツの組み込みではなく、FrontPage 2003 にてページの先頭の方に直接埋め込んでしまう方法もあります。

「コンテンツ エディタ」Web パーツをエクスポートした内容はこちら。

・サイトにエクスプローラビュー
サイトにエクスプローラビュー.zip

posted by kunitaka at 18:48| Comment(0) | TrackBack(0) | テクニック

ライブラリのエクスプローラビュー

エクスプローラビューを利用するには、IE 5.0以上が必要になりますが、機能の実装には以下の技術が使われています。
  • Windows XP + Internet Explorer + アクセス先のサイトが http アクセス可能でポート番号指定が無い場合 → WebDAV redirector を利用して、IFRAMEに組み込み
  • それ以外の場合 → Dynamic HTML Behaviors の httpFolder default behaviors を利用して組み込み
これらの違いは、フォルダを選択した時の挙動に現れます。
前者はエクスプローラビューの中で動き続けますが、後者はエクスプローラ画面に置き換わってしまいます。 つまり、前者の条件の方がリッチということでしょうか。
ちなみに、IE や OS のバージョン判定には、owsbrows.js が使われています。 実体は、ブラウザの userAgent を利用したライブラリ関数です。

なお、WebDAV redirector とは、Windows XP と Windows Server 2003 に組み込まれている機能で、WebDAV アクセスをファイル共有アクセスのように利用可能にするための機能です。 実体は、WebClient サービスだと思われます。
・WebDAV Redirector (IIS 6.0)
<http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/
a71e40bd-ecb0-4f87-8f6c-935fe6552565.mspx
>
・httpFolder Behavior
<http://msdn.microsoft.com/workshop/author/behaviors/reference/
behaviors/httpfolder.asp
>

posted by kunitaka at 08:39| Comment(0) | TrackBack(0) | メモ

トークン文字列

Web パーツを開発する際には、その Web パーツのリソースフォルダを知るため、そして、生成する HTML エレメントの ID やスクリプトの関数・変数名をユニークにするために、トークン文字列を利用する場合があります。
実際には、以下のような4つのトークンが利用可能で、
  • _WPR_
    ClassResourcePath プロパティ、Web パーツ実行時のリソースファイルのパスが展開されている。
  • _WPQ_
    Qualifier プロパティ、ページ内でユニークになるように採番されたID。
  • _LogonUser_
    Request.ServerVariables ("LOGON_USER")、いわゆるログオンしているユーザーのアカウント。
  • _WPID_
    ID プロパティ、Web パーツ識別子。
_WPID_ 以外は、使う頻度は比較的高いと思われます。
ちなみに、これらは、「コンテンツ エディタ」Web パーツ内に記述してもトークン置換が行われます。 この場合には、_WPQ_ と _LogonUser_ が使えると思います。
_LogonUser_ にはユーザーIDが展開されますが、ドメイン環境の場合には「ドメイン\ユーザー」のような形で展開されます。
ここからユーザーIDだけを取り出すためには、VBScript でスクリプトを記述する必要があります。
実際のコード例は以下のようなものになります。
<script language="VBScript">
<!--
Function getUserID ()

	Dim strUser
	Dim intPos

	strUser = "_LogonUser_"
	intPos = InStr (strUser, "\")
	strUser = Mid (strUser, intPos + 1)

	getUserID = strUser

End Function
-->
</script>
あまり、役に立たないか・・・

・ReplaceTokens(String) Method
<http://msdn.microsoft.com/library/en-us/spptsdk/html/
smpmWebPartReplaceTokens_SV01014969.asp
>

posted by kunitaka at 06:23| Comment(0) | TrackBack(0) | テクニック