2008年1月

2008年1月24日 (木)

これで一連の記事の最後です。まずは前回の続きからです。

条件によってアイテムを表示する

データビューに変換するとブラウザからのビューのカスタマイズは行えなくなります。表示列の追加、並び替え、フィルタ、グループ化などは XSLT を編集する必要がでてきます。今回はシンプルに指定した日時になったらアイテムを表示するよう編集してみます。

あらかじめテスト用のドキュメントライブラリに "PublishDate" という名前のカスタム列を追加しておきます。この列の種類は「日付と時刻」、表示は「日付」のみとします。AllItems.aspx を上記手順で紹介したようにデータビューに変更しておきます。

AllItems.aspx 内の以下の部分が、各アイテム行の表示を行っている部分です。

<xsl:template name="dvt_1.rowview">

<tr>

</tr> 
</xsl:template>

この中の<tr>タグ内に列ごとの表示情報が書かれています。では、せっかくなのでこのタグの中を調査してみましょう。たとえば "<!-- DocIcon-->" タグ以下に "ドキュメントの種類" の列が記述されています。ここでは、次のようなコードがあります。

<xsl:when test="@FSObjType='1'">
      <xsl:choose>
       <xsl:when test="ddwrt:GetVar('RecursiveView')='1'"><IMG BORDER="0" alt="フォルダ: {@FileLeafRef}" SRC="/_layouts/images/folder.gif" /></xsl:when>
       <xsl:otherwise>
        <xsl:variable name="SetVarIDA3UIMC"><xsl:value-of select="$PagePath" />?RootFolder=<xsl:value-of select="@FileRef" />&amp;FolderCTID=<xsl:value-of select="@ContentTypeId" /></xsl:variable>
        <xsl:value-of select="ddwrt:SetVar('UnencodedFilterLink', string($SetVarIDA3UIMC))" />
        <A TABINDEX="-1" HREF="{ddwrt:GetVar('UnencodedFilterLink')}" onclick="javascript:EnterFolder('{ddwrt:GetVar('UnencodedFilterLink')}');javascript:return false;"><IMG BORDER="0" alt="フォルダ: {@FileLeafRef}" title="Folder: {@FileLeafRef}" SRC="/_layouts/images/folder.gif" /></A>
       </xsl:otherwise>
      </xsl:choose>
     </xsl:when>

" <xsl:when test="@FSObjType='1'"> " の "@FSObjType='1' はフォルダであることをチェックしています。ということで、ここはフォルダ表記に関する部分です。また、直後に次のコードが続いています。


<xsl:otherwise>
<A TABINDEX="-1" HREF="{@FileRef}" onclick="return DispEx(this,event,'','','','','{ddwrt:ListProperty(&quot;DefaultItemOpen&quot;)}','{ddwrt:MapToControl(&quot;&quot;, string())}','{@HTML_x0020_File_x0020_Type}','',
'{ddwrt:GetUserID('CheckoutUser')}','{$Userid}',
'{ddwrt:ListProperty(&quot;ForceCheckout&quot;)}',
'{$FieldIDAKZJMC}','{ddwrt:CurrentRights()}')">
      <xsl:choose>
       <xsl:when test="@CheckoutUser=''"><IMG BORDER="0" ALT="{@FileLeafRef}" title="{@FileLeafRef}" SRC="/_layouts/images/{ddwrt:MapToIcon(string(@HTML_x0020_File_x0020_Type),string(@File_x0020_Type))}" /></xsl:when>
       <xsl:otherwise><IMG BORDER="0" ALT="{@FileLeafRef}
チェックアウト先: {@CheckoutUser}" title="{@FileLeafRef}
チェックアウト先: {@CheckoutUser}" SRC="/_layouts/images/{ddwrt:MapToIcon(string(@HTML_x0020_File_x0020_Type),string(@File_x0020_Type))}" /><img src="/_layouts/images/checkoutoverlay.gif" class="ms-vb-icon-overlay" alt="&lt;xsl:value-of select=&quot;@FileLeafRef&quot; /&gt;
チェックアウト先: ddwrt:UserLookup(string(@DocIcon), &quot;Title&quot;)&lt;" title="&lt;xsl:value-of select=&quot;@FileLeafRef&quot; /&gt;
チェックアウト先: ddwrt:UserLookup(string(@DocIcon), &quot;Title&quot;)" /></xsl:otherwise></xsl:choose>
      </A></xsl:otherwise>

先頭に "<xsl:otherwise>" とありますから、フォルダ以外の場合(ここではファイルとなる)に適用される部分です。このうち次の

<xsl:when test="@CheckoutUser=''"><IMG BORDER="0" ALT="{@FileLeafRef}" title="{@FileLeafRef}" SRC="/_layouts/images/{ddwrt:MapToIcon(string(@HTML_x0020_File_x0020_Type),string(@File_x0020_Type))}" /></xsl:when>
/p>

の部分は、ファイルがチェックアウトされていない場合は、チェックアウトされていない方のアイコンファイルを表示するよう "<IMG>" タグが記述されています。ここでも ddwrt:MapToIcon拡張関数が使用されています。拡張子に応じて動的に表示するアイコンを取得しています。

では本筋に話を戻しましょう。つまり今回の場合、条件によってこの<tr>タグを非表示にできればよいわけです。そこで、<tr>( 開始タグ) の直前に次の条件式を追加します。

<xsl:if test="number(translate(ddwrt:FormatDate(string(@PublishDate), number(1041), 1),'/',''))&lt;number(translate(ddwrt:FormatDate(string(ddwrt:Today()),number(1041),1),'/',''))">

そして、</tr>(終了タグ) の後に次の終了タグを追加します。

</xsl:if>

完成したソースの概略は次の通りです。

<xsl:template name="dvt_1.rowview">

<xsl:if test="number(translate(ddwrt:FormatDate(string(@PublishDate), number(1041), 1),'/',''))&lt;number(translate(ddwrt:FormatDate(string(ddwrt:Today()),number(1041),1),'/',''))">
<tr>

</tr>
</xsl:if>
</xsl:template>

以上で指定したアイテムが希望した日時に表示されるようになります。なお、希望した日時に満たない期間に再度アイテムを編集する必要がある場合は、エクスプローラビューを利用するなど編集専用にビューを作る必要があります。

データビューのソースを眺めてみると、まだ他にも さまざまな ddwrt の拡張関数は存在します。ですが、今回取り上げる内容はここまでとしたいと思います。このようにXSLT を編集するといろいろとカスタマイズが可能であることを、ご理解いただけましたでしょうか。

データビューを利用するにあたっての注意事項

最後にデータビューを利用するにあたっての注意事項をご紹介しておきます。

  • データビューに変換する前に、オリジナルのファイルをバックアップしておく

これは単純にコピーを作成しておくだけでよいと思います。オリジナルのXSLデータビューに変換すると、私の環境ではもとのリストビューに戻せなくなってしまうトラブルが発生しました。また XST を編集しているうちに動作が不安定になることもありました。こうした経験から、いつでも元のファイルに戻せるよう必ず、バックアップを取っておくようにした方がよいと思います。

  • アイテムのドロップダウンメニューに「権限の管理」メニューが表示されなくなる

データビューに変換するとドロップダウンメニューから「権限の管理」メニューが表示されなくなります(解決方法があるのかは調査中です)。とはいえ、ドロップダウンメニューからは表示されなくはなりますが、ドロップダウンメニューにある[プロパティの表示]をクリックすれば、コマンドバーには「権限の管理」メニューは表示されますので、運用ルールを決めることで対応できるかと思います。

またデータビューに関して Tips が見つかったら、このブログを通じてご紹介することにします。

2008年1月23日 (水)

データビュー("DataView"WebPart") 内で拡張関数が利用できることは、前回ご紹介しました。今回はその他の関数をいくつかご紹介します。

  • ddwrt:Today() …現在の日付を返す
  • ddwrt:TodayIso()…現在の時刻をISO形式(yyyy-MM-ddThh:mm:ssZ)で返す
  • ddwrt:IfNew(日付)…指定した日付から2日(既定)以内の場合trueを返す。日付はISO形式である必要がある
  • ddwrt:Random(最小値,最大値) …最小値から最大値の範囲内でランダムな値を生成
  • ddwrt:FormatDateTime(日付,ロケールID、書式) … 指定した書式で日付を取得する(例. yyyy年MM月dd日)
  • ddwrt:IfHasRights(permissionMask)…現在のユーザーがpermissionMaskに指定されている権限または権限の組み合わせを持つ場合はtrueを返す

ddwrt:IfHasRights(permissionMask) に指定する値はSPBasePermissions列挙体です。この列挙体について説明するURLはあるのですが、肝心の値が掲載されていません。全部は確認できていませんが、どうも以前のWSS 2.0 のころの使用されていた SPRights 列挙体の方の情報とだいたい同じであるようですので、両方を参考にするとよいと思います。(※ Tatsuki Yamamoto さんからの情報を頂きましたので、訂正しました。) SPBasePermissions 列挙体は以前は SPRights 列挙体でした。メンバー値など一部変更されているようですので、以下に値を記述しておきます。

メンバー説明
AddAndCustomizePages 262144 HTML ページまたは Web パーツ ページを追加、変更、または削除し、Windows SharePoint Services 互換エディタを使用して Web サイトを編集します。
AddDelPrivateWebParts 268435456 Web パーツ ページ上で個人用 Web パーツを追加または削除します。
AddListItems 2 リストにアイテムを追加し、ドキュメント ライブラリにドキュメントを追加して、Web ディスカッション コメントを追加します。
ApplyStyleSheets 1048576 Web サイトにスタイル シート (.css ファイル) を適用します。
ApplyThemeAndBorder 524288 Web サイト全体にテーマまたは枠線を適用します。
ApproveItems 16 リスト アイテムまたはドキュメントのマイナー バージョンを承認します。
BrowseDirectories 67108864

Microsoft Office SharePoint Designer 2007 および WebDAV インターフェイスを使用して、Web サイト内のファイルおよびフォルダを列挙します。
BrowseUserInfo 134217728 Web サイトのユーザーに関する情報を表示します。
CancelCheckout 256 別のユーザーに対してチェックアウトされたドキュメントを破棄またはチェックインします。
CreateAlerts 549755813888 電子メール通知を作成します。
CreateGroups 16777216 サイト コレクション全体で使用できるユーザーのグループを作成します。
CreateSSCSite 4194304 Self-Service Site Creation を使用して Web サイトを作成します。
DeleteListItems 8 リストからのアイテムの削除、ドキュメント ライブラリからのドキュメントの削除、およびドキュメント内の Web ディスカッション コメントの削除を行います。
DeleteVersions 128 リスト アイテムまたはドキュメントの古いバージョンを削除します。
EditListItems 4 リスト内のアイテム、ドキュメント ライブラリ内のドキュメント、およびドキュメント内の Web ディスカッション コメントの編集、およびドキュメント ライブラリ内の Web パーツ ページのカスタマイズ。
EditMyUserInfo 1099511627776 ユーザーに対して、各自の情報の変更 (画像の追加など) を許可します。
EmptyMask 0 Web サイト上でのアクセス許可は持っていません。ユーザー インターフェイスによって使用することはできません。
EnumeratePermissions 4611686018427387904 Web サイト、リスト、フォルダ、ドキュメント、またはリスト アイテム上でのアクセス許可を列挙します。
FullMask 9223372036854775807 Web サイト上ですべてのアクセス許可を持っています。ユーザー インターフェイスによって使用することはできません。
ManageAlerts 274877906944 Web サイトのすべてのユーザーに対する通知を管理します。
ManageLists 2048 リストを作成および削除し、リスト内の列を追加または削除して、リストのパブリック ビューを追加または削除します。
ManagePermissions 33554432 Web サイト上でのアクセス許可レベルを作成および変更し、ユーザーおよびグループにアクセス許可を割り当てます。
ManagePersonalViews 512 リストの個人用ビューを作成、変更、および削除します。
ManageSubwebs 8388608 チーム サイト、会議ワークスペースのサイト、ドキュメント ワークスペースのサイトなどのサブサイトを作成します。サイト コレクションを対象範囲とするフィーチャーのプロパティをアクティブ化、非アクティブ化、または編集します。[サイト コレクションの機能] ページを参照し、サイト コレクションを対象範囲とするフィーチャーをユーザー インターフェイスを介してアクティブ化または非アクティブ化するには、サイト コレクションの管理者である必要があります。
ManageWeb 1073741824 Web サイトのすべての管理タスクを実行し、コンテンツを管理するための権限を付与します。
Open 65536 ユーザーに対して、Web サイト、リスト、またはフォルダを開いて、そのコンテナ内のアイテムにアクセスすることを許可します。
OpenItems 32 サーバー側のファイル ハンドラでドキュメントのソースを表示します。
UpdatePersonalWebParts 536870912 Web パーツを更新して、個人用設定情報を表示します。
UseClientIntegration 68719476736 クライアント アプリケーションを起動する機能を使用します。そうしなければ、ユーザーはドキュメントに対してローカルで作業を行い、変更内容をアップロードする必要があります。
UseRemoteAPIs 137438953472 SOAP、WebDAV、または Microsoft Office SharePoint Designer 2007 インターフェイスを使用して Web サイトにアクセスします。
ViewFormPages 4096 フォーム、ビュー、およびアプリケーション ページを表示し、リストを列挙します。
ViewListItems 1 リスト内のアイテム、ドキュメント ライブラリ内のドキュメントを表示し、Web ディスカッション コメントを表示します。
ViewPages 131072 Web サイトのページを表示します。
ViewUsageData 2097152 Web サイトのページを表示します。
ViewVersions 64 リスト アイテムまたはドキュメントの古いバージョンを表示します。

※ SPRighs 列挙体と SPBasePermissions 列挙体の違いは Yamamoto さんがこの記事のコメントに記載してくださっています

【SPRights列挙体】
http://msdn2.microsoft.com/ja-jp/library/microsoft.sharepoint.sprights.aspx
【SPBasePermissions列挙体】
http://msdn2.microsoft.com/ja-jp/library/microsoft.sharepoint.spbasepermissions.aspx

たとえば、ViewListItems 権限をもったユーザーかどうかを確認する場合は、値を '1' とします。また ViewListItems とAddListItemsの両方の権限を持っているかを確認する場合はそれぞれの値の合計値、つまり '3' (1+2) を指定します。

ちなみに、IfNew関数でチェックする日数の既定値は2日となっているのですが、これはSharePoint サイドで変更可能です(詳細は以前の記事を参照のこと:「新規アイテムを投稿したときに表示される "New!" のアイコンはどれくらいの期間表示されるのですか?」)

では、上記の関数の基本的な使い方を学習するために以下の例をとりあげます。

  • 今日の日付から1週間以内に作成されたアイテムに対してNew! アイコンを表示する
  • 条件によってアイテムを表示する

なお、2つ目の内容は次回の記事で説明します。

今日の日付から1週間以内に作成されたアイテムに対してNew! アイコンを表示する

※ 2008.2.2  Hachi さんからご指摘いただきまして、一部修正いたしました。Hachi さん、ご指摘をありがとうございました。

この例も実は、以前、受講者の方からご質問いただいたものです。SharePoint 以外のツールを使用していてこれから SharePoint に移行したいという方で、以前使用していたツールがこうした仕様であったため同じように表示できないか、ということでした。

ここでは拡張関数としてIfNew関数とToday関数 が登場します。

前回同様、テスト用の任意のドキュメントライブラリのAllItems.aspx を編集します。最初に、前回同様、ListViewWebParts 部分をXSLTデータビューに変換します。次に"New.gif" を検索すると前後含め、次のようなコードが見つかります。

<xsl:if test="ddwrt:IfNew(string(@Created))">
<IMG SRC="/_layouts/1041/images/new.gif" alt="新規" />
</xsl:if>

<xsl:if > は条件文を意味し、"test=" の部分が条件判定の式です。また"@" で始まるのは、列です。つまり、作成日時(@Created) が2日以内であれば、New.gif アイコンを表示するという式です。これを7日以内に作成されたアイテムに対して New! アイコンを表示するようにカスタマイズしようと思います。が、XSLT 内での日付計算は簡単ではないため、今回はライブラリに New! アイコンを表示する期限を保持する列を追加して利用したいと思います。

New! アイコン表示期間用の列の追加

以下の内容の列を追加します。

  • 列名 : "displayDuration"
    ※XSLT 内で利用しやすいように英語表記で列を作成しますが、列作成後に"Newアイコンの表示期日" といった日本語表記に変更しておくとよいです
  • この列の情報の種類: 日付と時刻
  • この列への情報の入力を必須にする: はい
  • 日付と時刻の形式 : 日付のみ
  • 既定値を計算値として、式に "=Today+7" と入力

以上の内容で列を作成すると、既定値として今日から7日後の日付が表示されるようになります。あとはこの列情報を利用して、7日間アイコンを表示するよう 以下のように記述します。

<xsl:if test="number(translate(substring-before(@displayDuration,'T'),'-',''))&lt;=number(translate(ddwrt:Today(),'/',''))">
<IMG SRC="/_layouts/1041/images/new.gif" alt="新規" />
</xsl:if>

以上で、7日以内のアイテムには New! のアイコンが表示されるようになります。

これを応用すれば、テーブル内に列を追加して特定の列の値に応じてアイコンを表示するようにことも可能です。たとえば、「お知らせ」リストに重要度を示す列を追加し、重要な場合はアイコンを表示する、といった具合です。

[図.データビューを用いたお知らせリスト]
Customannouncement

[追加したコード]
<xsl:if test="@_x91cd__x8981_=1">
<img src="/_layouts/images/urgent.gif" alt="重要" border="0"/>    
</xsl:if>   

<Tip : SharePoint Designer 2007 の入力支援機能>

条件を指定する場合には、XPath式を編集する入力支援機能を使用するようにすると便利です。
[図.入力支援機能]
Xpathbuilder

Xpathbuilder2

<Tip : 列情報を確認する>

[データソースの詳細] に現在列情報と現在格納されているアイテムの持つ値が表示されます(値ごとに右クリックするとXPath式のコピーメニューなどが表示されます)。[データソースの詳細]が表示されない場合は、ツールバーの[作業ウィンドウ]メニューから表示します。

[図.データソースの詳細]

Datasourcedetail

2008年1月22日 (火)

前回に引き続き、いよいよ今回は本題に入ります。お題は「日付の表示形式の変更」です。

作成日や更新日列に表示される既定の日付の表示形式は "2008/1/18 22:30" です。データビューの XSLT を一部編集するだけで、これをいろいろなパターンの表示形式に手軽に変更できます。

今回はチーム サイトのドキュメントライブラリを使用して検証しています。

XSLTデータビューに変換する

  1. SharePoint Designer 2007 でチーム サイトを開き、Shared Document(共有ドキュメント)フォルダ内のFormsフォルダを展開する。
  2. Allitems.aspx (すべてのアイテムビュー) を開き、分割ビューにしておく
  3. アイテムが表示されている部分(ListViewWebParts)を右クリックし、「XSLTデータビューに変換」をクリックする。

    Xsldataview

XSLT データビューに変換したら、ソースコード内で "ddwrt:FormatDate" を探します。この"ddwrt:"で始まるものがデータビューのXSTL内で使用できる拡張関数です。詳細についてはFrontpage 2003 の頃のものですが、次の資料が参考になります(が、残念ながら日本語ではありません)。
SharePoint Data View Web Part Extension Functions in the ddwrt Namespace

この関数は次のように記述されている筈です。

"ddwrt:FormatDate(string(@Modified), number($Language), 5)"

最後の引数である "5" を別の値に変更すると表示形式を変えられます。ではこの関数の詳細を解説しましょう。まずは関数の定義からです。

ddwrt:FormatDate関数の定義

  • ddwrt:FormatDate(date, lcid, formatflag)
    date … 表示形式を変換する日付データ
    lcid … ロケール (日本語だと 1041)
    formatflag … 表示形式を示すフラグ。1,3,4,5,7,12,13,15 のうちいずれかの数値

以上から、先の記述内容は最初に "@Modified" とあることから 更新日時列のデータを変換しようとしていることがわかります。次が "number($Language)" でロケールを取得しています。最後の"5"は表示形式です。

  • 1 に変更した場合→ 2008/1/22
  • 3 に変更した場合→ 2008年1月22日
  • 4 に変更した場合→ 0:03
  • 5 に変更した場合→ 2008/1/22 0:03
  • 7 に変更した場合→ 2008年1月22日 0:03
  • 12 に変更した場合→ 0:03:00
  • 13 に変更した場合→ 2008/1/22 0:03:00
  • 15 に変更した場合→ 2008年1月22日0:03:00

こういった関数があるということを知っておくと、何かと便利です。次回はその他の関数をご紹介します。

2008年1月21日 (月)

SharePoint Designer 2007 のデータビューは、ちょっとしたカスタマイズにはなかなかの優れものです(なお、データビュー自体は、FrontPage 2003 のころからあります)。データビューを使用すると、既定のWeb パーツの見た目をXSLTで比較的手軽に編集できるようになるためです。また、そもそも SharePoint Designer 2007 には XML や XSLT を記述するための入力支援機能があるため、XSLT の編集にはもってこいのツールだといえます。

データビューは主に次のように使います。

  1. 任意のSharePoint 上のページにデータビューを追加して利用する
  2. ページに配置されているWebパーツを XSTL データビューに変換する

1. はデータベースやSharePoint リストなどの情報をSharePoint 上のページ(*.aspx)に表示させる時に使用します。うまく応用してやると複数サイトから情報を取得するのにも利用できます。
(参考: この内容は次の研修で扱っています:
Microsoft Office SharePoint Server 2007 ソリューション構築のためのカスタマイズ手法 )

さて、今回から数回に分けて 2. の内容を中心にしたデータビューを使用した カスタマイズ Tips をご紹介します。これを知っておくとデータビューを使用したカスタマイズのコツがつかめるのではないかと思います。

早速、どのようなカスタマイズができるのかを紹介したいところですが、せっかくなので初回は XML と関連技術についての基礎知識を確認するところから始めたいと思います。SharePoint のカスタマイズを行う上でXMLの知識は必須です。

そうはいっても、XML 関連の内容を扱っているサイトは山ほどありますから、詳細な内容はそちらにゆだねます。ここではXML 初心者の方に向けてあくまでも簡潔に説明するにとどめ、どのあたりを勉強するとよいのかの足がかりとしていただければと思います。

XML

平たくいうと XML は HTML の兄弟のようなものです。

  • HTMLの例
    <H1> MOSS に関するTips </H1>
    <p>このブログでは MOSS に関する Tips を紹介します</p>
  • XMLの例
    <ブログ>
    <ブログのタイトル>MOSS に関する Tips</ブログのタイトル>
    <著者>山崎愛</著者>
    </ブログ>

両方ともタグを使って、表現したい内容(データ構造)を書いていきます。大きく異なるのは、HTML では使用できるタグ名が決まっているのに対し、XMLは使用するタグを利用者が自由に定義して利用できるところです。

HTML で記述された文書はWeb ブラウザ上ではタグは表示されないようかつ人間にわかりやすいように整えてくれます。ですが、本質的にHTML は文書の構造を定義するもので、見た目については CSS (カスケーディング スタイル シート) で定義するものです。

このことは XML にも言えます。XML で記述された文書もデータ構造を書いていくもので、見栄えは別の技術を使います。最初に紹介すするXML の関連技術がXSLT です。XSLT は XML をベースとしている言語であり、元となるXML文書内の情報を切り張りして別のデータ構造に変換することもできます。たとえば XMLのデータをHTML の構造に変換して、さらに CSS を適用するといったことが可能です。このようにして、XSLT や CSS を併用してブラウザ上に表示される際の見栄えを定義できるのです。また、XSLT の他にも XPath という XML の関連技術もよくつかわれます。XPath を使用して XML データ内のタグの位置を、MS-DOS のディレクトリ指定のように指定できます。またXPathには 関数や式があります。XSLT はこの XPath を一緒に利用しデータ構造変換を行います。

SharePoint Designer 2007 のデータビュー

SharePoint Designer 2007 のデータビューは SharePoint 上のデータを XML として扱い、XSLT を使ってHTMLに変換し見栄えを定義しています。ただし、SharePoint のデータビューでは 一般的なXPath 関数では実現できない拡張関数が使用できるようになっています。次回からはこの拡張関数を中心に、いくつかの調査結果(Tips) をご紹介していきます。

2008年1月17日 (木)

皆さんは、探し物をしていてどんどん脇道にそれていってしまうという経験はないですか? 私はしょっ中でして、今回も全く別のことを調べていて偶然見つけた SharePoint Designer 2007 の Tips です。

確か以前「エンドユーザーに対しては極力不要なメニューは非表示にしたい」ということから同様のご質問いただいたことがあったのですが、その時はこの Tips のようなスマートな回答ではなかったように思います。反省の意味を込め、ご紹介します。

サイドリンクバーに常に表示される [すべてのサイトコンテンツの表示] リンクを管理者以外に非表示にできます。

  1. SharePoint Designer 2007 を使用し、目的のサイトの default.master を開く
  2. 分割ビューまたコードビューに切り替える
  3. サイドリンクバーの" [すべてのサイトコンテンツの表示] リンク" 部分に該当する "SharePoint:SPSecurityTrimmedControl" タグを見つける

    Spsecuritytrimmedcontrol

  4. "SharePoint:SPSecurityTrimmedControl" タグ内の "PermissionString" 属性の値を "ViewFormPages" から "FullMask" に変更する
  5. default.master を保存する

以上です。FullMask はフルコントロールのアクセス許可レベルのことです。つまりサイトに対してフルコントロールを持つユーザーにだけ[すべてのサイトコンテンツの表示] リンクが表示されるようになります。

PermissionString 属性に指定できる他の値には "BrowseDirectories"などがあります。BrowseDirectories はSharePoint サイトのアクセス権限でいう "ディレクトリ参照" にあたります。このアクセス権限はサイトの「メンバ」および「所有者」グループに共通で含まれているため、これらのグループに所属するユーザーにだけ表示されるようになります。

主なSharePoint グループと割り当てられるアクセス許可レベル

  • サイトの所有者グループ→フルコントロール
  • サイトのメンバ→投稿
  • サイトの閲覧者→閲覧

設定可能な値は SPBasePermissions 列挙体です。詳細は次の URL を参照してください。
http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spbasepermissions.aspx

なお、この列挙体は SharePoint サイトのアクセス許可レベルの詳細な権限と見比べると理解しやすいです。

SharePoint サイトのアクセス許可レベルの詳細の確認

  1. [サイトの設定] ページを表示する
  2. [ユーザーと権限]セクションから[権限の設定(詳細)] をクリックする
  3. 任意のアクセス許可レベルをクリックする
    (※権限が表示されます。この内容とSPBasePermissions とが対応します)


参考: Medhat Elmasry さんのブログ(英語)


そういえば、今日またひとつ年をとりました。。。