モバイル アダプターを作成する
最終更新日: 2011年4月1日
適用対象: SharePoint Foundation 2010
このウォークスルーでは、Microsoft SharePoint Foundation に付属する UserTasksWebPart のモバイル アダプターを作成する方法を説明します。モバイル Web パーツ アダプターの作成プロセスの詳細については、「[方法] モバイル アダプターを作成する」を参照してください。
前提条件
トピック「SharePoint Foundation 開発ツール」とその子トピックを確認し、開発環境を設定するための推奨タスクを実行します。このウォークスルーでは、特に「モバイル デバイス エミュレーターをセットアップする」、「[方法] アセンブリの公開キーを取得するツールを作成する」および「 [方法] ツールの場所を PATH 環境変数に追加する」の推奨タスクを実行していることを想定しています。
アダプターを開発する
以下の手順は、モバイル アダプターの作成方法について説明しています。
モバイル アダプター プロジェクトを設定する
Visual Studio で、[ファイル] メニューの [新規作成]、[プロジェクト] を順に選択します。
[新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] ボックスで [Visual C#] を選択し、[テンプレート] ボックスで [クラス ライブラリ] を選択します。[名前] ボックスに「MobileAdapters」と入力して [OK] をクリックします。
[ソリューション エクスプローラー] で [参照設定] ノードを右クリックし、[参照の追加] をクリックします。[参照の追加] ダイアログ ボックスの [.NET] で、Ctrl キーを押しながら [System.Web]、[System.Web.Mobile]、[Microsoft.SharePoint] を選択します。[OK] をクリックします。
[ソリューション エクスプローラー] でプロジェクト名を右クリックし、[プロパティ] を選択します。
[プロパティ] ダイアログの [ アプリケーション] タブで、[アセンブリ名] に「自分の会社.SharePoint.WebPartPages.MobileAdapters」、[既定の空間名] に「自分の会社.SharePoint.WebPartPages」と入力します。自分の会社を所属する会社名と置き換えます。このウォークスルーを通じて、自分の会社を、所属する会社名と置き換えます。
[アセンブリ情報] をクリックし、[アセンブリ情報] ダイアログの設定を必要に応じて変更します。このウォークスルーでは、アセンブリとファイルのバージョンを 1.0.0.0 のままにし、GUID を変更しないと想定します。
[署名] タブを開き、[アセンブリの署名] を選択します。
[厳密な名前のキー ファイルを選択してください] ドロップダウン リスト ボックスから [<新規作成...>] を選択します。
[厳密な名前キーの作成] ダイアログの [キー ファイル名] ボックスに「MobileAdapters.snk」と入力し、[プロジェクト ...] チェック ボックスがオフになっていることを確認します。[OK] をクリックします。
[ビルド イベント] タブを開き、[ビルド後に実行するコマンド ライン] ボックスに以下のコードを入力します。このコードにより、後の手順で作成するバッチ ファイルが実行されます。
cd "$(ProjectDir)" MobileAdapterPostBuild
ツールバーの [すべてを保存] ボタンをクリックします。
[ソリューション エクスプローラー] で、ファイルの名前を Class1.cs から UserTasksWebPartMobileAdapter.cs に変更します。
アダプター コントロールを作成する
プロジェクトの UserTasksWebPartMobileAdapter.cs ファイルがまだ表示されていない場合は表示し、以下の using ステートメントを追加します。
using System.Web.UI.MobileControls; using Microsoft.SharePoint; using Microsoft.SharePoint.WebPartPages; using Microsoft.SharePoint.Utilities;
Imports System.Web.UI.MobileControls Imports Microsoft.SharePoint Imports Microsoft.SharePoint.WebPartPages Imports Microsoft.SharePoint.Utilities
名前空間を自分の会社.SharePoint.WebPartPages.MobileAdapters に変更します。
Class1 の宣言全体を以下のコードに置き換えます。
public class UserTasksWebPartMobileAdapter : WebPartMobileAdapter { }// end UserTasksWebPartMobileAdapter class
Public Class UserTasksWebPartMobileAdapter Inherits WebPartMobileAdapter End Class ' end UserTasksWebPartMobileAdapter class
新しいクラスは、WebPartMobileAdapter を継承することに留意してください。
CreateControlsForDetailView() メソッドの次のオーバーライドの宣言を追加します。
protected override void CreateControlsForDetailView() { } // end CreateControlsForDetailView
Protected Overrides Sub CreateControlsForDetailView() End Sub ' end CreateControlsForDetailView
以下の行で、CreateControlsForDetailView() の実装を開始します。このコードによって、Web パーツ タイトルの左側に下向き矢印が作成されます。LinkToSummaryView をヘルパー メソッド CreateWebPartIcon(WebPartMobileAdapter.WebPartIconLink) に渡すと、ブラウザーが CSS および ECMAScript 1.0 以降をサポートするデバイスで、この矢印が切り替えスイッチになります。ユーザーが切り替えスイッチをクリックすると、Web パーツが概要ビューに折りたたまれます (ブラウザーが CSS と ECMAScript 1.0 以降の両方をサポートしていない場合は、別のアイコンがレンダリングされ、そのアイコンをクリックすると Web パーツの概要ビューを持つページが表示されます。
Image iconImage = this.CreateWebPartIcon(WebPartIconLink.LinkToSummaryView); iconImage.BreakAfter = false; this.Controls.Add(iconImage);
Dim iconImage As Image = Me.CreateWebPartIcon(WebPartIconLink.LinkToSummaryView) iconImage.BreakAfter = False Me.Controls.Add(iconImage)
ユーザー タスク Web パーツの既定のタイトル (太字の "ユーザー タスク" ) をレンダリングするために、以下の行を追加します。
Label titleLabel = this.CreateWebPartLabel(); this.Controls.Add(titleLabel);
Dim titleLabel As Label = Me.CreateWebPartLabel() Me.Controls.Add(titleLabel)
レンダリング ロジック内でコードが参照するオブジェクトに対する参照情報を収集するために、以下の行を追加します。カスタムサイトを、モバイル デバイスからアクセスする Web サイトの名前に置き換えます。この Web サイトは、標準 SharePoint Foundation タスク リストを含むサイトになります。
SPSite siteCollection = SPContext.Current.Site; SPUser currentUser = SPContext.Current.Web.CurrentUser; SPList taskList = siteCollection.AllWebs["CustomSite"].Lists["Tasks"]; SPListItemCollection allTasks = taskList.GetItems(taskList.DefaultView);
Dim siteCollection As SPSite = SPContext.Current.Site Dim currentUser As SPUser = SPContext.Current.Web.CurrentUser Dim taskList As SPList = siteCollection.AllWebs("CustomSite").Lists("Tasks") Dim allTasks As SPListItemCollection = taskList.GetItems(taskList.DefaultView)
以下の LINK クエリを追加します。where 句により、現ユーザーのタスクのみがモバイル ビューに追加されるようになります。select 句により、2 つのプロパティのみを含む新しい匿名型が提示されます。アダプターがレンダリングしないフィールドは必要ありません。
注意
このコードは、LINQ to Objects を使用し、既にメモリに格納されているデータ (allTasks オブジェクト) をフィルタリングします。コンテンツ データベースから回線を通じて不要なリスト アイテムとフィールドが送信されるのを実際に防ぐには、LINQ to SharePoint プロバイダーを使用する必要がありますが、このプロバイダーの使用方法を示すと、このチュートリアルが長くなり、主要な目的から逸脱することになります。
// Use LINQ to filter out other users ... var lightweightTasksOfUser = from SPListItem task in allTasks where task["AssignedTo"].ToString().EndsWith(currentUser.Name) select new {task.Title, Priority=task["Priority"]}; // ... and unneeded columns.
' Use LINQ to filter out other users ... Dim lightweightTasksOfUser = From task As SPListItem In allTasks Where task("AssignedTo").ToString().EndsWith(currentUser.Name) Select New With {Key task.Title, Key .Priority=task("Priority")} '... and unneeded columns.
foreach ループを追加します。このループは、完了後に、現ユーザーのタスク リストに各アイテムを 3 つまでレンダリングします。
foreach (var lightweightTask in lightweightTasksOfUser) { } // end "for each lightweight task of the current user"
For Each lightweightTask In lightweightTasksOfUser Next lightweightTask ' end "for each lightweight task of the current user"
ループ内に、標準 SharePoint Foundation モバイル リスト アイテムの黒丸をレンダリングするために、以下のコードを追加します。コードでは、プロパティの初期化に C# 3.0 を必要とするオブジェクト初期化子構文が使用されます。もちろん、別のプロパティ割当ステートメントを使用することもできます。
Image taskIcon = new Image() { ImageUrl = this.ItemBulletIconUrl, BreakAfter = false}; this.Controls.Add(taskIcon);
Dim taskIcon As New Image() With {.ImageUrl = Me.ItemBulletIconUrl, .BreakAfter = False} Me.Controls.Add(taskIcon)
タスク名をレンダリングするために、以下のコードを追加します。Font() プロパティは、書き込み可能なサブプロパティ (Bold、Size など) を持つ読み取り専用プロパティであることに留意してください。このサブプロパティは、オブジェクト初期化構文では設定できません。
Label taskTitle = new Label { Text = lightweightTask.Title, BreakAfter = false}; taskTitle.Font.Bold = BooleanOption.True; this.Controls.Add(taskTitle);
Dim taskTitle As Label = New Label With {.Text = lightweightTask.Title, .BreakAfter = False} taskTitle.Font.Bold = BooleanOption.True Me.Controls.Add(taskTitle)
タスク タイトルの後にタスクの優先度が小さいフォントで追加されるように、以下のコードを追加します。ここで参照される Priority プロパティは、特別な目的のために、LINQ クエリで宣言された匿名型で作成されました。C# では、この値を "task["Priority"]" で参照する必要があります。task は、タスク リストの SPListItem オブジェクトへの参照です。
Label priority = new Label() { Text = " " + lightweightTask.Priority }; priority.Font.Size = FontSize.Small; this.Controls.Add(priority);
Dim priority As New Label() With {.Text = " " & lightweightTask.Priority} priority.Font.Size = FontSize.Small Me.Controls.Add(priority)
各タスクの後に空白行を追加するために、以下のコードを追加します。
this.Controls.Add(new LiteralText());
Me.Controls.Add(New LiteralText())
最後に以下の if 構造を追加して、レンダリングされるタスクの数を 3 つに制限し、4 つ以上のタスクが存在する場合は、ユーザーの完全なタスク リストへのリンクをレンダリングします。再度、オブジェクト初期化子構文の使用に注意してください。
// Render no more than 3 tasks, but provide link to others. if (itemCount++ >= 3) { Link moreItemLink = new Link { Text = "All my tasks", href = SPMobileUtility.GetViewUrl(taskList, taskList.Views["My Tasks"]) }; this.Controls.Add(moreItemLink); break; } // end "if limit has been reached"
' Render no more than 3 tasks, but provide link to others. If itemCount >= 3 Then itemCount += 1 Dim moreItemLink As Link = New Link With {.Text = "All my tasks", .href = SPMobileUtility.GetViewUrl(taskList, taskList.Views("My Tasks"))} Me.Controls.Add(moreItemLink) Exit For End If ' end "if limit has been reached" itemCount += 1
次のステートメントを foreach ループが始まる直前に追加し、itemCount 変数を初期化します。
Int16 itemCount = 1;
Dim itemCount As Int16 = 1
宣言全体が、このコード サンプルと同じようになっている必要があります。
protected override void CreateControlsForDetailView() { Image iconImage = this.CreateWebPartIcon(WebPartIconLink.LinkToSummaryView); iconImage.BreakAfter = false; this.Controls.Add(iconImage); Label titleLabel = this.CreateWebPartLabel(); this.Controls.Add(titleLabel); SPSite siteCollection = SPContext.Current.Site; SPUser currentUser = SPContext.Current.Web.CurrentUser; SPList taskList = siteCollection.AllWebs["MyGPSite"].Lists["Tasks"]; SPListItemCollection allTasks = taskList.GetItems(taskList.DefaultView); // Use LINQ to filter out other users ... var lightweightTasksOfUser = from SPListItem task in allTasks where task["AssignedTo"].ToString().EndsWith(currentUser.Name) select new {task.Title, Priority=task["Priority"]}; // ... and unneeded columns. Int16 itemCount = 1; foreach (var lightweightTask in lightweightTasksOfUser) { Image taskIcon = new Image() { ImageUrl = this.ItemBulletIconUrl, BreakAfter = false}; this.Controls.Add(taskIcon); Label taskTitle = new Label { Text = lightweightTask.Title, BreakAfter = false}; taskTitle.Font.Bold = BooleanOption.True; this.Controls.Add(taskTitle); Label priority = new Label() { Text = " " + lightweightTask.Priority }; priority.Font.Size = FontSize.Small; this.Controls.Add(priority); this.Controls.Add(new LiteralText()); // Render no more than 3 tasks, but provide link to others. if (itemCount++ >= 3) { Link moreItemLink = new Link { Text = "All my tasks", href = SPMobileUtility.GetViewUrl(taskList, taskList.Views["My Tasks"]) }; this.Controls.Add(moreItemLink); break; } // end "if limit has been reached" } // end "for each lightweight task of the current user" } // end CreateControlsForDetailView
Protected Overrides Sub CreateControlsForDetailView() Dim iconImage As Image = Me.CreateWebPartIcon(WebPartIconLink.LinkToSummaryView) iconImage.BreakAfter = False Me.Controls.Add(iconImage) Dim titleLabel As Label = Me.CreateWebPartLabel() Me.Controls.Add(titleLabel) Dim siteCollection As SPSite = SPContext.Current.Site Dim currentUser As SPUser = SPContext.Current.Web.CurrentUser Dim taskList As SPList = siteCollection.AllWebs("MyGPSite").Lists("Tasks") Dim allTasks As SPListItemCollection = taskList.GetItems(taskList.DefaultView) ' Use LINQ to filter out other users ... Dim lightweightTasksOfUser = From task As SPListItem In allTasks Where task("AssignedTo").ToString().EndsWith(currentUser.Name) Select New With {Key task.Title, Key .Priority = task("Priority")} '... and unneeded columns. Dim itemCount As Int16 = 1 For Each lightweightTask In lightweightTasksOfUser Dim taskIcon As New Image() With {.ImageUrl = Me.ItemBulletIconUrl, .BreakAfter = False} Me.Controls.Add(taskIcon) Dim taskTitle As Label = New Label With {.Text = lightweightTask.Title, .BreakAfter = False} taskTitle.Font.Bold = BooleanOption.True Me.Controls.Add(taskTitle) Dim priority As New Label() With {.Text = " " & lightweightTask.Priority} priority.Font.Size = FontSize.Small Me.Controls.Add(priority) Me.Controls.Add(New LiteralText()) ' Render no more than 3 tasks, but provide link to others. If itemCount >= 3 Then itemCount += 1 Dim moreItemLink As Link = New Link With {.Text = "All my tasks", .href = SPMobileUtility.GetViewUrl(taskList, taskList.Views("My Tasks"))} Me.Controls.Add(moreItemLink) Exit For End If ' end "if limit has been reached" itemCount += 1 Next lightweightTask ' end "for each lightweight task of the current user" End Sub ' end CreateControlsForDetailView
[ビルド] メニューの [ビルド ソリューション] を選択します。これで終わりではありません。ここでアセンブリをコンパイルする必要があります。これにより公開キー トークンを生成できます。
compat.browser ファイルにモバイル アダプターを登録する
テキスト エディターまたは Visual Studio で \\Inetpub\wwwroot\wss\VirtualDirectories\80\App_Browsers\compat.browser ファイルを開き、refID 属性値 "default" を含む <browser> 要素までスクロールします (必要に応じて、URL の "80" を、対象とする Web アプリケーションのポートに置き換えます)。
<controlAdapters> 要素内部に、以下を子要素として追加します。
<adapter controlType="Microsoft.SharePoint.WebPartPages.UserTasksWebPart, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" adapterType="MyCompany.SharePoint.WebPartPages.MobileAdapters.UserTasksWebPartMobileAdapter, MyCompany.SharePoint.WebPartPages.MobileAdapters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=yourAssemblyPublicToken" />
2 か所にある自分の会社を、所属する会社名に置き換えます。アセンブリ公開キー トークンを、使用しているアセンブリの公開キー トークンに置き換えます。このトークンは、Visual Studio の [ツール] メニューから [アセンブリの公開キーを取得] アイテムをクリックすることによって取得します。キーは [出力] ウィンドウに表示されます (アイテムがない場合は、「[方法] アセンブリの公開キーを取得するツールを作成する」を参照してください)。
注意
開発環境がマルチサーバー ファームの場合は、すべてのサーバーの compat.browser ファイルを編集する必要があります。これをプログラムによって行う方法については、「[方法] すべての Web サーバーでコードを実行する」を参照してください。
アダプターを開発コンピューターに安全なコントロールとして登録する
[ソリューション エクスプローラー] のプロジェクト名を右クリックし、[追加]、[新しいアイテム] の順に選択します。
注意
複数のフロントエンド Web サーバー持つサーバー ファーム上で開発している場合、この手順は使用しないでください。代わりに、SharePoint Foundation ソリューションでアダプターを展開し、<SafeControl> 要素をソリューションの manifest.xml ファイルに追加します。SharePoint Foundation ソリューションの詳細については、「ソリューションの使用」とその子トピックを参照してください。
[新しいアイテムの追加] ダイアログで、webconfig.自分の会社.xml という名前の XML ファイルを [追加] をクリックして追加します。自分の会社は所属する会社名です。
以下のマークアップをファイルに追加します。
<action> <remove path="configuration/SharePoint/SafeControls/SafeControl[@Assembly=MyCompany.SharePoint.WebPartPages.MobileAdapters3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=yourAssemblyPublicKeyToken']" /> <add path="configuration/SharePoint/SafeControls"> <SafeControl Assembly="MyCompany.SharePoint.WebPartPages.MobileAdapters3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=yourAssemblyPublicKeyToken" Namespace="MyCompany.SharePoint.WebPartPages.MobileAdapters3" TypeName="*" Safe="True" AllowRemoteDesigner="True" /> </add> </action>
3 か所すべての自分の会社を、所属する会社名に置き換えます。2 か所にあるアセンブリ公開キー トークンを、compat.browser ファイル マークアップで使用したものと同じ公開キー トークンに置き換えます。
ファイルを保存します。次の手順で作成するバッチ ファイルでは、リビルドするたびに 2 つのアクションが実行されます。<add> アクションでは、開発コンピューターのすべての Web アプリケーションのルートにあるすべての web.config ファイルに、指定された <SafeControl> 要素を追加することにより、アダプターを安全なコントロールとして登録します。<remove> アクションでは、初めてバッチ ファイルが実行されるときは何も行いません。後続のすべての実行時に、前回の実行時に追加された <SafeControl> 要素を削除します。<SafeControl> 要素が重複していると SharePoint Foundation 内の Web パーツが破棄される可能性があるため、削除する必要があります。
ビルド後バッチ ファイルを作成する
[ソリューション エクスプローラー] でプロジェクト名を右クリックし、[追加]、[新しいアイテム] の順に選択します。
[新しいアイテムの追加] ダイアログで [テキスト ファイル] を選択し、「MobileAdapterPostBuild.bat」という名前を入力して、[追加] をクリックします。
ファイルを開いて、次の行を追加します。
注意
このコードは、「[方法] ツールの場所を PATH 環境変数に追加する」の推奨事項に従っていることを前提としています。
gacutil if bin\debug\MyCompany.SharePoint.WebPartPages.MobileAdapters.dll xcopy /y webconfig.MyCompany.xml "C:\Program Files\Common Files\Microsoft Shared\web server extensions\14\CONFIG" stsadm –o copyappbincontent iisreset
[ファイル] メニューで、[名前を付けて MobileAdapterPostBuild.bat を保存] をクリックします。
[保存するファイル名] ダイアログで、[保存] ボタンの横にある下矢印をクリックして [エンコードで保存] を選択します。
[詳細保存オプション] ダイアログの [エンコード] ドロップダウン リストで、[西ヨーロッパ言語 (Windows) – コードページ 1252] を選択し、[OK] をクリックします。
このファイルにより、プロジェクトをリビルドするたびに最新バージョンのプロジェクト ファイルが適切な場所にコピーされ、アダプター クラスが安全なコントロールとして登録されます。また SharePoint Foundation が再起動し、アセンブリの最新バージョンがロードされます。
ソリューションを再構築する
- Visual Studio の [ビルド] メニューの [ソリューションのリビルド ] を選択します。
アダプターをテストする
以下の手順では、アダプターのテスト方法を説明します。
ユーザー タスク Web パーツのあるカスタム Web パーツ ページを作成する
コンピューター ブラウザーで、モバイル デバイスからアクセスする Web サイトに移動します。これは、CreateControlsForDetailView() のオーバーライドのコード内で、カスタムサイトの置換に使用したものと同じ名前のサイトです。
SharePoint Foundation UI で、Web パーツ ページを作成し、ユーザー タスク Web パーツをそのページに追加します。手順は次のとおりです。
[サイトの操作] メニューで、[その他の作成オプション] を選択します。
[作成] ページで、[Web パーツ ページ] をクリックします。
[新しい Web パーツ ページ] ページで、新しいページに「MyWPpage」という名前を付けて、使用するレイアウト テンプレートを選択します。
Web サイトで、[共有ドキュメント] などのドキュメント ライブラリを選択し、[作成] をクリックします。新しいページが編集モードで開きます。
ページで、[右列] などの Web パーツ ゾーンを選択し、編集リボンの上の [挿入] をクリックします。
開いたページの [カテゴリ] 領域で、[ユーザー] をクリックします。
[Web パーツ] 領域で [ユーザー タスク] を選択し、[追加] をクリックします。
[編集の終了] をクリックし、ユーザー タスク Web パーツのあるページがどのように表示されるかどうかを確認します。その後直ちに次の手順を続行します。
Web サイトのタスク リストに追加する
Web サイトの標準サイト ページで、左ナビゲーション バーの [タスク] をクリックします。
[Tasks] ページで、[アイテム] タブを開きます。
リボンで [新しいアイテム] をクリックして、[新しいアイテム] フォームを開きます。フォームに入力して新しいタスクを作成し、[保存] をクリックします。複数のユーザーに対して複数のタスクを作成するには、この手順を繰り返します。4 つ以上のタスクを、少なくとも 1 人のユーザーに割り当ててください。
[参照] タブを選択して、入力されたリストがどのように表示されるかどうかを確認します
モバイル デバイス エミュレーターをインストール、設定、使用する
モバイル デバイス エミュレーターのインストールと設定をまだ行っていない場合は、「モバイル デバイス エミュレーターをセットアップする」に説明されているように、開発サーバーまたはサーバー ファームへのネットワーク接続があるコンピューター上でモバイル デバイス エミュレーターをインストールして設定しください。
タスクを割り当てたユーザーの 1 人としてコンピューターにログインし、「モバイル デバイス エミュレーターをセットアップする」の「エミュレーターの起動」の手順で説明されているようにエミュレーター上でブラウザーを起動します。
カスタム Web パーツ ページに移動します。Web サイトの種類によって手順が異なります。通常、ホームページには [すべてのサイト コンテンツの表示] へのリンクがあります。同様に、[共有ドキュメント] などのサイトのドキュメント ライブラリへのリンクがあります。ドキュメント ライブラリの [すべてのドキュメント] リストには、カスタム Web パーツ ページへのリンクが含まれます。
モバイル版のページは、モバイル対応のすべての Web パーツが折りたたまれた状態 (閉じられてはいない) で開きます。モバイル アダプターが存在しない Web パーツ、または標準版 (モバイルでない) の Web パーツ ページで閉じられた Web パーツは、まったく表示されません。SharePoint Foundation では、Web パーツを閉じることは非表示にすることを意味しています (ページ上の Web パーツがモバイル表示に必要な条件を満たしていない場合は、ページは開きません。代わりにモバイル版の [すべてのサイト コンテンツ] ページが開きます)。図 1 は、閉じられていない、かつモバイル アダプターを保持している唯一の Web パーツがユーザー タスク Web パーツである Web パーツ ページを示します。この画像は、Windows Mobile 5.0 Pocket PC エミュレーターで作成されました。
図 1 モバイル デバイス上で折りたたまれた状態のユーザー タスク Web パーツ
[ユーザー タスク] 横の矢印アイコンをクリックして、Web パーツを展開します。図 2 は、このトピックで説明されているように状況に応じて変化し、割り当てたタスクが 3 つ以下のユーザーのために展開された Web パーツを示しています。リストの最後には、[All my tasks] リンクがないことに注意してください。一覧表示されるのは現ユーザーのタスクのみです。
図 2 モバイル デバイス上で展開された状態のユーザー タスク Web パーツ
図 3 は、割り当てられたタスクが 4 つ以上あるユーザーのために展開された Web パーツを示しています。3 つのタスクのみが一覧表示され、その後に [All my tasks] リンクが表示されることに注目してください。これによって、[Tasks] リストの [My Tasks] ビューが開きます。再度確認しますが、現ユーザーのタスクのみが一覧表示されます。
図 3 4 つ以上のタスクが割り当てられたユーザーのために展開された状態のユーザー タスク Web パーツ