2006年04月14日

チームサイトの作成場所

 既定では、sites の下に作成されるチームサイトについてです。
何も設定の変更・追加を行っていない状態では、チームサイトを作成する際の URL は、http://server/sites/sitename/ という形になると思います。

・作成場所
サイト作成.png

この sites の部分は別の名前を追加することも出来ます。 また、sites はあくまでも仮想的な URL の一部なので、sites/it-dept のように階層を表現することも可能です。
具体的には、管理パスに「ワイルドカード インクルード」として任意の名前の「パス」を追加することで、作成場所を追加することが出来ます。
  1. SPSサーバー上で、「スタート」メニューから「管理ツール」の「SharePoint サーバーの管理」を選択します。
  2. 「サーバーの管理」ページにて、「仮想サーバーの構成」セクションの中の「仮想サーバー設定の構成」を選択します。
  3. 「仮想サーバーのリスト」ページにて、設定対象となるポータルサイトの仮想サーバー選択します。
  4. 「仮想サーバーの設定」ページにて、「仮想サーバーの管理」セクションの中の「管理パスの定義」を選択します。
  5. 「管理パスの定義」ページにて、「新しいパスの追加」の中の「パス」に、追加したい作成場所の名前を入力して、「種類」オプションボックスは「インクルード パス」を選択して、「種類」ドロップダウンリストボックスは「ワイルドカード インクルード」を選択して、「OK」ボタンを押します。
  6. 「インクルード パス」に入力した作成場所が追加されたことが確認出来たら、「キャンセル」ボタンを押します。
・作成場所追加例
作成場所追加例.png

これにより、チームサイトを論理的にグルーピングすることも可能になります。 また、sites を使わずに別の名前にしてしまうことも可能です。

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

2006年04月12日

IFilter のマルチスレッド対応の確認

 更にこれに (→ クロール時間の短縮、更にその後) 関連して。
IFilter のマルチスレッド対応はレジストリの設定でも確認出来るようです。

IFilter の実体となる dll のファイル名が判っていれば、レジストリエディタにてファイル名を検索します。
ThreadingModel に Both が設定されていればマルチスレッド対応です。 値が無い、Apartment、Single の場合はマルチスレッド非対応だと思って良いと思われます。

判っている IFilter の dll ファイル名は以下の通りです。

IFilter 名 DLL ファイル名 マルチスレッド対応
Visio 2003 IFilter VISFILT.DLL ×
一太郎用 IFilter JsJtdFlt.dll
PDF 用 IFilter PDFFILT.dll ×
DocuWorks 用 IFilter xdwsrch.dll ×

dll ファイル名が判らない場合は、ファイル拡張子に基づいて、こちらのホワイトペーパーの「フィルタDLL」のトピック (P.69) のアプローチで調べることが出来ます。

・Microsoft インデックスサービス設定ガイド
<http://download.microsoft.com/download/b/4/a/b4a506ee-4c1c-43f1-8006-5c5b7e4f2b64/IndexService.exe>

posted by kunitaka at 03:52| Comment(0) | TrackBack(0) | テクニック

2006年04月09日

新しい拡張子のアイコン追加

 PDF に連想して・・・ (→ クロール時間の短縮の検証)
新しいファイルの拡張子に対応したアイコンを追加する方法についてのメモです。

ファイル拡張子に対応するアイコンの設定は2箇所あります。 SPS での検索結果ページでのアイコンと、ドキュメントライブラリのビューページでのアイコンです。

○SPS での検索結果ページでのアイコン設定
  1. \Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\IMAGES に <拡張子名16.gif> のファイルをコピーします。 (PDFファイルの場合は、pdf16.gif になります。)
  2. IISを再起動します。
○ドキュメントライブラリのビューページでのアイコン設定
  1. \Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\XML\DOCICON.xml をメモ帳等で開きます。
  2. ノードの内側に、以下のような1行を追加します。
    <Mapping Key="pdf" Value="<拡張子名16.gif>" />
  3. IISを再起動します。
標準の設定では、SPS 検索用とドキュメントライブラリ用は個別に用意されていますが、ここでは同一のアイコンイメージファイルを流用するアプローチとしています。

参考情報は以下の通りです。

・アイコンは、 SharePoint Portal Server 2003 でポータル サイトを検索すると、検索結果に表示される Adobe PDF ドキュメントに表示されていません。
<http://support.microsoft.com/kb/832809/ja>
・Adding a Document Template, File Type, and Editing Application to a Site Definition
<http://msdn.microsoft.com/library/en-us/spptsdk/html/tsptAddingDocumentTypeIcon_SV01068572.asp>
・DOCICON.XML
<http://msdn.microsoft.com/library/en-us/spptsdk/html/tscamlovDOCICON_SV01084508.asp>

posted by kunitaka at 22:32| Comment(0) | TrackBack(0) | テクニック

2006年04月04日

「リストに戻る」リンクの応用

 こちらの記事 (→ リストアイテムの「戻る」リンクの仕組み) をほんの少し応用するメモ。

とは言っても、非常に簡単なことです。
例えば、ポータルサイトのエリアやチームサイトにて、別のエリア・チームサイトのリストアイテムのリンクを組み込む際に、Source=現在のページのURL を追加しておくという小技です。
ちなみに、リストアイテムのURLは、右クリックメニューの中の「ショートカットのコピー」で、純粋にそのリストアイテムのURLが取得出来ます。

アイテムへの直リンクで、アクセス元のページに戻らせたい場合に使える「かも」知れないアプローチです。

posted by kunitaka at 04:57| Comment(0) | TrackBack(0) | テクニック

リッチテキストエディタのハイパーリンクボタンの有効化

 個人的にはかなり衝撃的な事実だったり・・・ とは言うものの、傍から見れば大したことではありません。 多分。
というのも、「Blogparts の活用」シリーズ (→ その1その2その3) を書くにあたって、Blogparts を改めて触っていて気がついたことがあります。

ブログの記事を書くときのリッチテキストエディタのツールバー上に「ハイパーリンクの挿入」ボタンがある!ということでした。

・通常のリッチテキストエディタのツールバー
リッチテキスト ツールバー1.png

・Blogparts の「ブログ」リストのリッチテキストエディタのツールバー
リッチテキスト ツールバー2.png

リストやライブラリの列の情報の種類として、「複数行テキスト」を選択すると、「リッチ HTML テキスト (太字や斜体など) を使用できるようにする」を「はい」にすると、テキストボックスがリッチテキストエディタ化されます。 理由は判りませんが、UI上から普通に作成すると「ハイパーリンクの挿入」ボタンはありません。
Blogparts では有効になっているので、機能上はそれを有効化することが出来るに違いないと調べてみると・・・ 案の定ありました。

・SPFieldMultiLineText クラスの AllowHyperlink プロパティ
<http://msdn.microsoft.com/library/en-us/spptsdk/html/tspSPFieldMultiLineTextAllowHyperlink_SV01074246.asp>

Blogparts のリスト群は、Web パーツにて最初のプログラムによって作成されるので、恐らくこのプロパティを True にしているのだと思います。
こんなことが出来るのだったら、UI上にもオプションとして設定出来るようになれば良いのにと思ってしまいました。

ちなみに、ポータルサイトの「ポータルの一覧」のコンテンツの「テキストエディタ」では、既定で「ハイパーリンクの挿入」や「イメージの挿入」などが備わっています。 (→ リッチテキストエディタの謎)

posted by kunitaka at 03:43| Comment(0) | TrackBack(0) | テクニック

2006年03月22日

スタイルシート研究所: HTMLエレメント/クラス定義追加 HTML コンポーネント

 ということで、こちらの記事で紹介したアプローチ (→ スタイルシート研究所: サイトスタイル カスタマイズ) の実践編です。
まずは基本的な機能を実装した、HTMLエレメント/クラス定義追加 HTML コンポーネントのサンプルを作成しました。
最初のバージョン (0.10) は、以下のような機能を持ちます。
  • 指定した数だけ親エレメントを辿ってクラスを追加
  • 指定した数だけ最初の子エレメントを辿ってクラスを追加
  • 指定した数だけ最後の子エレメントを辿ってクラスを追加
具体的な組み込み方法です。 まずは、スタイルシート内にて、基準となる HTML エレメントのクラスに対して behavior プロパティを追加します。
behavior: url ('/siteresources/htc/addHtmlClass.htc');
利用可能なパラメータ指定は以下の通りです。
spf-custom-parent-name 基準となるHTMLエレメントの親エレメントにクラスを追加します。 spf-custom-parent-count が設定されている場合は、その数だけ階層を辿ります。
spf-custom-parent-count 親エレメントを辿る階層を指定します。 指定しない場合は 1 となります。
spf-custom-firstchild-name 基準となるHTMLエレメントの最初の子エレメントにクラスを追加します。 spf-custom-firstchild-count が設定されている場合は、その数だけ階層を辿ります。
spf-custom-firstchild-count 最初の子エレメントを辿る階層を指定します。 指定しない場合は 1 となります。
spf-custom-lastchild-name 基準となるHTMLエレメントの最後の子エレメントにクラスを追加します。 spf-custom-lastchild-count が設定されている場合は、その数だけ階層を辿ります。
spf-custom-lastchild-count 最後の子エレメントを辿る階層を指定します。 指定しない場合は 1 となります。

この HTML コンポーネントを使った具体的な例です。 と言いつつ、なかなかうまい具体例が見つからず、とりあえず、サイトとエリアのタイトル部分にワンポイント加えるというカスタマイズでお茶を濁してしまいました。
以前に作成しているスタイルシート (→ スタイルシートのカラーバリエーション) の緑バージョンをスタイルシートをベースに、設定を加えています。
実際の設定方法などは、こちらを参考にして下さい。

・スタイルシート設定例
.ms-titlearea
{
	behavior: url ('/siteresources/htc/addHtmlClass.htc');
	spf-custom-parent-name: spf-custom-titleframe;
	spf-custom-parent-count: 3;
}
.spf-custom-titleframe
{
	height: 100%;
	padding: 0px 100px 0px 20px;
	filter: progid:DXImageTransform.Microsoft.gradient (GradientType=1, 
	startColorstr=#8833ff66, endColorstr=#0033ff66);
}

.ms-titlearea
{
	vertical-align: bottom;
}
.ms-pagetitle
{
	vertical-align: top;
}

.ms-titlearealine
{
	behavior: url ('/siteresources/htc/addHtmlClass.htc');
	spf-custom-parent-name: spf-custom-titlearealine;
	spf-custom-parent-count: 3;
}
.spf-custom-titlearealine TR TD
{
	height: 0px !important;
	background-color: #66cc80;
}
・設定結果
カスタマイズ例1.png

如何でしょうか?
応用すると、いろいろなデザイン適用が出来ると思います。 次回は、HTML コンポーネントにもう少し機能を加えて、もう少し凝ったカスタマイズにチャレンジします。

・addHtmlClass.htc (0.10)
addHtmlClass-0.10.zip

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

2006年03月21日

スタイルシート研究所: サイトスタイル カスタマイズ

 ポータルサイトやチームサイトにて、サイトのデザインをカスタマイズする際のアプローチを研究してみる。
デザイン (見た目) をカスタマイズするには幾つかアプローチがあります。
  • FrontPage 2003
  • サイトテンプレート (aspx ページ、CAML定義)
  • スタイルシート
最初の2つは、物理的な変更を伴うカスタマイズ、最後の1つはある意味間接的なカスタマイズと言えます。
FrontPage 2003 は、見た目に沿ってカスタマイズが出来るので、最も敷居が低いかもしれません。 また、サイトテンプレートはCAMLのカスタマイズで最も敷居が高いと思われます。
それに対して、スタイルシートによる見た目のカスタマイズはほどほどの難易度ですが、基本的には物理的なページに直接紐付いていないので、簡単に移行が出来るというメリットがあります。

ということで、普段、デザインをカスタマイズする時は、ほとんどスタイルシートによるアプローチを使っています。
スタイルシートによるカスタマイズで重要なのは HTML エレメントに設定されているクラス名でしょう。

・SharePoint サイトと SharePoint Portal のカスタマイズ : 第 3 部 スタイルシート クラス リファレンス表
<http://www.microsoft.com/japan/msdn/sharepoint/general/
ODC_SPSCustomizingSharePointSites3.asp
>

通常は、予め定義されているクラス名を頼りに各種スタイルシートの設定を施します。 時には、特定の HTML エレメントに設定されている固定 ID を使ったりします。
また、クラスが定義されていない場合は、セレクタの機能を利用してある程度補うことが出来ますが、IE6 までのセレクタはサポートが不十分 (IE7 では改善されるらしい) なので、きめ細かい指定が出来ません。
これらだけでも、ちょっとした工夫でそれなりのことは出来ます。 (→ スタイルシートのカラーバリエーション)
でも、凝ったデザインを適用するためには、この辺りが重要になります。

そこで、どうするのか・・・
クラスが設定されてなければ、クラスを動的に設定すれば良い!という発想です。
IE の場合、Dynamic HTML ビヘイビアという機能を使うことで、スタイルシートへの組み込みにて、スクリプトによる Dynamic HTML による動的な HTML DOM 操作が可能です。
これを利用して、クラスが設定されていなければ追加する、又、デザインを適用するために必要な HTML エレメントが足らなければ追加してしまおうというアプローチです。

実は、このアイデアは、GroupBoard ワークスペースのサイトデザインで使っているアプローチをパクリました。

・GroupBoard ワークスペース
<http://www.microsoft.com/japan/sharepoint/groupboard/default.mspx>

posted by kunitaka at 04:30| Comment(0) | TrackBack(0) | テクニック

2006年03月18日

ドメイン移行

 リリースした直後の SPS では異なるドメインからの移行の際には設定していたセキュリティ設定等が失われる問題がありました。 でも、現在は SP1 以後の修正モジュールとユーティリティを利用することで対応することが出来るようになっているようです。 これは全くノーチェックでした。

・別の Active Directory ドメインからユーザーに移行した後に、 Windows SharePoint Services にユーザーはアクセスできません。
<http://support.microsoft.com/kb/896593/>

これは、以下の修正モジュール (又は、SP2) を適用することで追加される機能によりサポートされます。

・Windows SharePoint Services post-service パック 1 修正パッケージの説明:2005年3月29日
<http://support.microsoft.com/default.aspx/kb/896349>

実際に SP2 以後に公開されている SDK にも、ドメイン移行をサポートする API に関する説明が追加されています。

・MigrateUserAccount Method
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/tsamSPGlobalAdminMigrateUserAccount_SV01234066.asp>
・PortalAccountMigrationManager Class
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/tsamSPGlobalAdminMigrateUserAccount_SV01234066.asp>

単一のユーザーなら、stsadm に追加された migrateuser オプションで移行させることが出来ますが、ドメイン移行の場合は <SharePoint Utility Suite v2> を利用することで対応可能なようです。

・Office Assistance: Command-Line Operations - migrateuser
<http://office.microsoft.com/en-us/assistance/HA011608431033.aspx?mode=print#migrateuser>

posted by kunitaka at 22:36| Comment(0) | TrackBack(0) | テクニック

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) | テクニック

トークン文字列

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) | テクニック

2006年03月09日

SMTPサーバーを自分自身のSMTPサービス経由にする方法

 以前の記事 (→ 通知メールの送信先SMTPサーバーのセキュリティ) を実現するための具体的な手順です。

○IIS側の設定
予めIISのサブコンポーネントであるSMTPサービスをインストールしておく必要があります。
  • SMTPサービスの設定参照
    • 「スタート」メニューから「管理ツール」-「インターネット インフォメーション サービス (IIS) マネージャ」を起動します。
    • 「"サーバー名" (ローカル コンピュータ」をダブルクリックして、ツリーを展開します。
    • 「既定の SMTP 仮想サーバー」を選択して、右クリックのメニューから「プロパティ」を選択します。
  • SMTPサービスの中継設定
    • 「アクセス」タブを選択して、「中継の制限」の中の「中継」ボタンを選択します。
    • 「追加」ボタンを選択して、SPSサーバーのIPアドレスを直接入力するか、「DNSの参照」ボタンを選択して、「サーバー名」を入力して「OK」ボタンを選択します。
    • 「OK」ボタンを選択します。 更に続けて「OK」ボタンを選択します。
  • 送信先の設定
    • 「配信」タブを選択して、「詳細設定」ボタンを選択します。
    • 「スマートホスト」に、送信先のSMTPサーバーのサーバー名を設定して、「OK」ボタンを選択します。
  • 認証の設定
    • 「配信」タブを選択して、「送信セキュリティ」ボタンを選択します。
    • 「基本認証」を選択して、「ユーザー名」と「パスワード」に、接続先のSMTPサーバーに接続する際に、必要なアカウントのユーザー名とパスワードを指定して下さい。
    • 「OK」ボタンを選択します。
○SPS側の設定
最後にSPSのSMTPサーバーの設定変更を行います。
  • 「スタート」メニューから「すべてのプログラム」-「SharePoint Portal Server」-「サーバーの管理」を起動します。
  • 「サーバーの構成」セクションの中の「電子メール サーバー設定の構成」を選択します。
  • 「送信 SMTP サーバー」に自分自身のサーバー名を設定します。
  • 「差出人の電子メール アドレス」「返信先の電子メール アドレス」に適切なアドレスを設定して、「OK」ボタンを選択します。
posted by kunitaka at 14:15| Comment(3) | TrackBack(0) | テクニック

2006年03月04日

フォーム Web パーツのドロップダウンリストボックス化

 既定では、テキストボックスと移動ボタンで構成されている、フォーム Web パーツをアレンジする方法です。
フォーム Web パーツは、Web パーツ間接続によって、別の Web パーツの一覧内容をフィルタリングする際に利用可能ですが、いちいちテキストボックスに入力して、移動ボタンを押すのは面倒くさいということで、ドロップダウンリストボックスから選択肢を選んで実行させるための、ちょっとした Tips です。

といっても、非常に簡単なことです。
フォーム Web パーツにて「共有 Web パーツの変更」から「フォーム コンテンツ エディタ」プロパティの「ソース エディタ」ボタンを選択して、「Web ページ ダイアログ」に、以下のような内容を入力します。
<select name="T1" OnChange="javascript:_SFSUBMIT_">
<option value="">選択して下さい
<option value="<値1>">表示する値1
<option value="<値2>">表示する値2
<option value="<値3>">表示する値3
</select>
<値1> と 表示する値1 の部分は適宜書き換えて下さい。
これにより、選択肢を選択すると、接続先の Web パーツ内の表示が変わります。

こちらにも、説明が少々載っています。

・Form Web Part custom properties
<http://office.microsoft.com/en-us/assistance/HA011609211033.aspx>

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

2006年03月03日

ライブラリのパス

 URLネタをもう1つ。 ライブラリのフォルダのパスについてです。
ドキュメントライブラリ、画像ライブラリ、フォームライブラリなどはフォルダが作成出来ますが、フォルダ階層を開いてアクセスした先の URL は凄く長くなっています。 これは、フォルダ階層部分をクエリーストリングのパラメータに展開されていることと、2バイト文字が含まれていると正規化 UTF-8 でエンコードされているからです。
2バイト文字1文字は正規化 UTF-8 でエンコードされると9文字になります。 (うげげ・・・)

・SharePoint Portal Server 2001 で、2 バイト文字コードを使用する場合の注意事項について
<http://www.microsoft.com/japan/sharepoint/server/support/dbcs.asp>
以前のバージョンに関する情報ですが、最初の方に、正規化 UTF-8 に関する説明があります。

ちょっと判り易い名前のフォルダ名階層を作ってしまうと簡単に URL が長くなります。 こんな時に、困るのはリストの「ハイパーリンクまたは画像」の列の文字列長制限です。
これを回避するアプローチとして、以下のようなものが考えられます。
  • URL内のパラメータの削除
    後ろの方に &View= が含まれている場合は、& 以降を削除する。 ビューを指定する必要が無い場合は削除しても問題無いです。
  • ドキュメントライブラリのフォルダ名を1バイト文字化
    単に2バイト文字の利用を止めるということです。 ちょっと安易ですが、確実な方法です。
  • 物理パスでアクセス
    ライブラリのフォルダは、実際には http://サーバー名/sites/サイトID/Shared%20Documents/フォルダ/サブフォルダ/ のような URL でもアクセス可能です。 この場合、クエリーストリングのパラメータではないので、漢字のままでも大丈夫です。
最後のアプローチが最も有効でしょうか・・・ 但し、URL を自分で展開しなくてはならないので、それがちょっと面倒です。

posted by kunitaka at 03:30| Comment(2) | TrackBack(0) | テクニック

2006年03月01日

ゴーストページ

 SPS 2003 と WSS 2.0 では、サイトテンプレートから作成されたサイトの aspx ページはゴーストページという仕組みで構成されています。
通常、サイト内のデータは、aspx ページを含めて、全てコンテンツデータベースに格納されています。 しかしながら、サイトのページである default.aspx や、リストやライブラリのビューやフォームページである aspx ページについては、Web パーツ ページとして構成されている関係で、実際にはどれも同じ内容になります。
そこで、パフォーマンスとデータストアの観点で、コンテンツデータベースにはファイルのエントリだけでファイル内容の実体は格納されずに、ファイルサーバー上のテンプレートフォルダ内のファイルを読み込んで、メモリ上に展開されるアーキテクチャとなっています。 これにより、ゴーストページの状態でのテンプレートの aspx ページの変更結果は、作成済みのサイトに即時に反映されます。
この状態で FrontPage 2003 や Web フォルダアクセスにて編集操作を行うと、この時初めてファイル内容がデータベース内に格納される形になります。 なお、ブラウザを通しての設定変更はあくまでも Web パーツの設定の変更なので、aspx ページに対する操作にはなりません。

SharePoint の SDK 内にも簡単な説明が記載されています。

・Guidelines for Templates and Definitions
<http://msdn.microsoft.com/library/en-us/spptsdk/html/tsovGuidelinesCustomTemplates_SV01018815.asp>
・Introduction to Templates and Definitions
<http://msdn.microsoft.com/library/en-us/spptsdk/html/tsovIntroTemplates_SV01015722.asp>
→ Ghosting のトピック

プログラムにて、ゴーストページの状態を確認することも出来るようです。 こちらに、サンプルコードが紹介されています。

・Finding Ghosts: Programmatically Determining Ghosted/Unghosted State
<http://blogs.msdn.com/ryanrogers/archive/2005/03/22/400661.aspx>

posted by kunitaka at 00:24| Comment(0) | TrackBack(0) | テクニック

2006年02月27日

ビルド後のイベント設定

 普段、Web パーツの開発については、SPS 2003とVS 2003をインストールしたノートPC上で行っています。
この環境で各種実験、開発、テスト、配布用インストールパッケージの作成を行っています。 開発中は、ビルド後はすぐにGACにコピーしてテストしたいのですが、パッケージの作成時には Wppackager を起動したい。
今までは、その都度、いちいち設定を変えていましたが、ふと、デバッグとリリース構成をうまく切り替えられないかなと思っていろいろ試みました。

残念ながら、デバッグとリリース構成で、「ビルド後のイベント コマンドライン」に異なる設定を行うことが出来ません。 また、PostBuildEvent.bat の内容はビルドの度に作成し直されるようなので、予めカスタマイズしておくこと出来ません。 但し、出力パスは変えることが出来るので、置いてあるファイルの違いを見て、実行するコマンドを切り替える方法で対応出来ることが判りました。

プロジェクトのプロパティの中の「共通プロパティ」-「ビルドイベント」の「ビルド後のイベント コマンドライン」に、以下の行ブロックを設定します。

ビルド後のイベント コマンドライン:
if not exist wppackager.xml goto CopyGAC 
"C:\Program Files\WPPackager\wppackager" wppackager.xml
goto EventEnd
:CopyGAC
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\gacutil /i $(TargetPath)
:EventEnd
これで、構成を変えてビルドを行うだけで、開発環境での最新ビルドの反映とパッケージングが行えるようになります。

・Using Wppackager to Package and Deploy Web Parts for Microsoft SharePoint Products and Technologies
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_sp2003_ta/html/sharepoint_deployingwebparts_msi.asp>

posted by kunitaka at 07:51| Comment(0) | TrackBack(0) | テクニック

2006年02月23日

リストやライブラリのビューページのカスタマイズ

 リストやライブラリのビューのページには、「リストビュー」Webパーツが貼り付いています。 通常はこのWebパーツの設定は操作出来ませんが、変更する方法があります。

【FrontPage 2003 が使える場合】
該当ビューのページを FrontPage 2003 で開いて、リストビュー Web パーツを選択して、右クリックメニューの Web パーツのプロパティを選択。

【FrontPage 2003 が使えない場合】
該当ビューのページのURLの後ろに、「?PageView=Shared&ToolPaneView=2」を追加してリクエストを行うと、右側にWebパーツ追加のペインが表示され、同時にWebパーツのタイトルバーに「▽」メニューが表示されるので、それを選択して表示されるメニューから「共有 Web パーツの変更」を選択。

このアプローチを応用すると、ビューのページに他のWebパーツを追加することも可能です。

posted by kunitaka at 02:19| Comment(0) | TrackBack(0) | テクニック

スタイルシートのカラーバリエーション

 kunitaka-template.css をベースに、9色 (赤、オレンジ、黄、黄緑、緑、シアン、青、紫、ピンク)のカラーバリエーションを作ってみました。
メリハリをつけるために、比較的明るめの設定です。
ちなみに私は緑好きなので、緑のパターンを作って、それから他のカラバリに展開しています。

kunitaka-template.css と同じフォルダに置いて利用する形になります。
kunitaka-template.css については、こちらを参照して下さい。 (→ SPS 2003 スタイルシートのカスタマイズ)

○設定結果サンプル
kunitaka-style1-red.css kunitaka-style1-red.png
kunitaka-style1-orange.css オレンジ kunitaka-style1-orange.png
kunitaka-style1-yellow.css kunitaka-style1-yellow.png
kunitaka-style1-yellowgreen.css 黄緑 kunitaka-style1-yellowgreen.png
kunitaka-style1-green.css kunitaka-style1-green.png
kunitaka-style1-cyan.css シアン kunitaka-style1-cyan.png
kunitaka-style1-blue.css kunitaka-style1-blue.png
kunitaka-style1-purple.css kunitaka-style1-purple.png
kunitaka-style1-pink.css ピンク kunitaka-style1-pink.png

○リソース
・スタイルシート カラーバリエーション版
<kunitaka-style1-stylesheet.zip>

posted by kunitaka at 01:43| Comment(0) | TrackBack(0) | テクニック

2006年02月22日

Microsoft Search は止めましょう

WSS だけを使っている場合を除いて、SPS 用の SQL Server の Search サービス (Microsoft Search) は無効化しておきましょう。
ついでに、「Windows SharePoint Services - サーバーの管理」ページの「全文検索の構成」の中の「全文検索とインデックス作成を有効にする」のチェックを外しておくのが良いかも知れません。

セットアップ後の既定の状態では有効のままです。 いろいろ使いだして、ドキュメントファイルをいろいろ放り込み始めると、このサービスが良い感じでCPUリソース使い切ってくれます。

SPS 環境下で、検索機能を使える場合には、インデックス作成と検索は SPS に任せるのが一番です。 
でも、今度はチームサイト内の検索に困ります。 上述の全文検索の構成を無効化すると、チームサイトの右上の検索ボックスが表示されなくなります。
SPS ポータルサイトにて検索は可能ですが、チームサイト内だけに絞り込んだ検索はちょっと面倒です。

そこで利用出来るのが、MSDN で公開されている「Site Context Search Box」Web コントロールです。 こちらを標準のチームサイトの検索ボックスの代わりに組み込むことで、
チームサイトを検索スコープとした形で SPS の検索ページへ飛んでくれるようになります。

○設定方法
  • プロジェクトフォルダに格納されている Install SiteContextSearchBox.bat の実行
    実行先のサーバーの全ての仮想サーバーにインストールされます。 (-globalinstall モード)
  • FrontPage 2003で該当チームサイトを開いて、default.aspx を編集します。
  • ページの最初に、以下のディレクティブを追加します。
    <%@ Register TagPrefix="Contoso" Namespace="Contoso.SharePoint.WebControls" Assembly="Contoso.SharePoint, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b8ea74a908ff3588" %>
  • ViewSearchForm Webパーツ部分を差し替えます。
    以下のHTMLを、
     <SharePoint:ViewSearchForm ID="L_SearchView" Prompt="このサイトを検索" Go="検索" Action="searchresults.aspx" runat="server"/>
    以下のHTMLに書き換えます。
     <Contoso:SiteContextSearchBox runat="server" />
  • 検索先となるポータル サイトへの接続の構成の設定を追加
    チームサイトの「サイトの設定」を選択して、「管理」セクション内の「サイト管理へ移動」を選択します。
    「サイト コレクションの管理」セクション内の「ポータル サイトへの接続の構成」を選択します。
    「ポータル サイトに接続する」を選択して、「ポータル Web アドレス」に検索先のポータルサイトのURLを入力し、
    「ポータル名」にポータルサイトのタイトルを入力して、「OK」ボタンを選択します。

・Creating a Site Context Search Box that Uses SharePoint Portal Server Search Results
<http://msdn.microsoft.com/office/understanding/sharepoint/default.aspx?pull=/library/en-us/odc_sp2003_ta/html/odc_spssearchboxwithportalsearchresults.asp>

posted by kunitaka at 01:58| Comment(0) | TrackBack(0) | テクニック

2006年02月20日

SPS 2003 スタイルシートのカスタマイズ

SPS 2003 の既定のスタイルシートは sps.css となっていますが、このスタイルシートでのグラデーションを含む色合いには背景イメージが使われています。
これは、恐らく、ブラウザの機能による表現力に依存しない為だと思いますが、しかしながら、ちょっとした色合いを変えたい時に、その度に背景イメージをいちいち作り直すのは面倒です。

そこで、IE 5.5 以上で使えるようになった、Gradient フィルタを使ってお手軽に色合いを変える方法です。

○設定方法
  • siteresources.zip ファイルを解凍して、SPSサーバー上の任意のフォルダにコピーします。
  • SPSサーバー上で、管理ツールの中の「IISマネージャ」を起動して、Webサイトの中から、設定先のポータルサイトのWebサイトを選択して、右クリックで、「仮想ディレクトリ」を選択します。
  • 「エイリアス」に「siteresources」を指定して、「パス」にコピーしたフォルダを指定して、作成を完了します。
  • SPSサーバー上で、管理ツールの「SharePoint サーバーの管理」を起動して、「サーバーの管理」ページにて、「仮想サーバーの構成」の中の「仮想サーバー設定の構成」を選択します。
  • 「仮想サーバーのリスト」ページにて、設定対象のポータルサイトを選択します。
  • 「仮想サーバーの設定」ページにて、「仮想サーバーの管理」の中の「管理パスの定義」を選択します。
  • 「管理パスの定義」ページにて、「新しいパスの追加」で、「パス」に、「siteresources」を入力して、「種類」に「エクスクルードパス」を選択して、「OK」ボタンを押します。
  • 「エクスクルードパス」に追加されたことが確認出来ましたら、「キャンセル」ボタンを押します。
  • 設定対象のポータルサイトにアクセスして、右上の「サイトの設定」を選択します。
  • 「サイトの設定」ページにて、「全般設定」の中の「ポータル サイト プロパティと SharePoint サイト作成設定の変更」を選択します。
  • 「ポータル サイト プロパティと SharePoint サイト作成設定の変更」ページにて、「カスタムのポータル サイト ロゴ」の「ロゴ ファイルの場所」に、「/siteresources/images/sps2003_h.gif」を入力します。
  • 同じく、「ポータル サイト プロパティと SharePoint サイト作成設定の変更」ページにて、「カスタムのカスケード スタイル シート」の「カスケード スタイル シート ファイルの場所」に、「/siteresources/styles/kunitaka-template.css」を入力して、「OK」ボタンを押します。
  • 「ポータルに戻る」を選択します。

なお、仮想フォルダのパスを変える場合は、kunitaka-template.css 内に指定している、背景イメージの URL も変更する必要があります。

○ポイント
  • 背景イメージでグラデーションを指定していた部分を全て、Gradient フィルタに差し替え。
  • 検索ボックスの背景イメージの色の塗りつぶし部分を透過色に変更。

kunitaka-template.css では、グレーベースとなっています。
後は、こちらをベースに、border、background-color、Gradient フィルタの色を変更することで、お好みの色合いにすることが出来ます。

○設定結果
こんな画面イメージになります。
kunitaka-template.png

○リソース
・カスタム スタイルシート一式
<siteresources.zip>
posted by kunitaka at 00:33| Comment(0) | TrackBack(0) | テクニック

2006年02月18日

通知メールの送信先SMTPサーバーのセキュリティ

SharePoint Portal Server 2003 (SPS 2003) と Windows SharePoint Services 2.0 (WSS 2.0) の送信先SMTPサーバーには、サーバー名しか設定することが出来ません。

最近は社内インフラのセキュリティも厳しくなっているので、社内のSMTPサーバーに認証が必要な場合、このままでは送ることが出来ません。
そんな時は、IIS の SMTPサービスをセットアップして、SMTPサービス経由で送信することで解決出来ます。

SPS 2003 又は WSS 2.0 での「電子メール サーバー設定の構成」にて、直接SMTPサーバーを設定せずに、自分自身のサーバー名を設定します。
SMTPサービスの設定にて、実際の送信先のSMTPサーバーと共に、必要な認証の設定を行います。

SMTPサービス経由でのメール送信は何かといろいろ応用出来るアプローチです。
posted by kunitaka at 23:00| Comment(0) | TrackBack(1) | テクニック