チュートリアル: MediaWebPart とビデオ サイト機能を追加する
最終更新日: 2010年4月19日
適用対象: SharePoint Server 2010
この記事の内容
メディア プレーヤー
埋め込みテキスト
ブックマーク
メディア プロパティと評価コントロール
コメントとメモ掲示板 Web パーツ
関連するビデオ
このトピックは、ビデオ共有サイトの作成とカスタマイズ方法について説明する 5 部構成のチュートリアルの 2 番目です。
前提条件
「チュートリアル: ビデオ サイトを作成する」トピックの手順を完了してください。
メディア プレーヤー
メディア プレーヤーを表示するページで参照を作成し、メディア プレーヤー オブジェクト モデルへの参照をそのページに追加して、指定した <div> タグ内のメディア プレーヤーを作成します。次に、インラインの ECMAScript (JavaScript、JScript) コードをメディア プレーヤーを表示するページに追加します。
メディア プレーヤーを、[アイテムを表示するフォーム] ページに追加するには
Microsoft SharePoint Designer 2010 を開始し、「チュートリアル: ビデオ サイトを作成する」で作成した [アイテムを表示するフォーム] を [分割] ビューで開きます。
MediaWebPart オブジェクトを表示するページで、<div> 参照を作成します。
ヒント たとえば、MediaPlayerHost の ID で <div> タグを作成するには、<div id="MediaPlayerHost"></div> をページに追加します。
mediaplayer.jsJavaScript オブジェクト モデルへの参照をページに追加し、メディア プレーヤーを操作する関数をインポートします。例: <script type="text/javascript" src="/_layouts/mediaplayer.js"/>。
インラインの JavaScript コードを、MediaWebPart オブジェクトを表示するページに追加します。
//Get relevant parameters from the Data Form Web Part. var mediaTitleValue = (document.getElementsByName('TitleFieldValue'))[0].innerText; var mediaUrlValue = (document.getElementsByName('UrlFieldValue'))[0].innerText; var previewImageUrlValue = (document.getElementsByName('PreviewImageUrlFieldValue'))[0].innerText; //Create the media player. mediaPlayer.createMediaPlayer( document.getElementById('MediaPlayerHost'), //The <div> tag into which to insert the Silverlight object. 'MediaPlayerHost', // The ID attribute to assign to the "Object" element that will be inserted on the page and used to access the media player later. '600px', // The width of the media player. '450px', // The height of the media player. { // Parameters passed to the media player. displayMode:'Inline', //Display mode for the media player. For this scenario, we want "inline". mediaTitle:mediaTitleValue, //Title to set for the media player. Note reference to the mediaTitleValue variable created above. mediaSource:mediaUrlValue, //URL of the video. Note reference to the mediaUrlValue variable created above. previewImageSource:previewImageUrlValue, //URL for the preview image. Note reference to the previewImageUrlValue variable created above. autoPlay:true, //Whether the media player should start playing as soon as it is created. loop:false, //Whether the video should "loop" when it reaches the end. mediaFileExtensions:'wmv;wma;avi;mpg;mp3;', //File extensions that the media player supports. Set these as they are shown here. silverlightMediaExtensions:'wmv;wma;mp3;' //Set these as shown here. }, '', //Set to ''. false, //Set to "false". '' //The function to call when the player is finished loading. '' means "do not call any function". );
埋め込みテキスト
ここで、メディア プレーヤー オブジェクトは既に作成されています。そのメディア プレーヤー オブジェクトにアクセスするには、JavaScript オブジェクト モデルを使用できます。これを行うには、EmbedText プロパティの値を取得します。その値を使用して、メディア プレーヤー オブジェクトをターゲット ページまたはドキュメントに挿入できます。メディア プレーヤーをページに表示できる方法はいくつかありますが、Input テキスト ボックスはその 1 つのオプションです。
createMediaPlayer メソッドの呼び出し元は、メディア プレーヤーの作成が完了した後に呼び出すことのできる関数のポインターを、そのメソッドに渡すことができます。これは、メディア プレーヤーを使用するコードをページで実行する場合に役立ちます。この方法では、メディア プレーヤーが完全に読み込まれてからコードを呼び出すことができます。
メディア プレーヤーを JavaScript オブジェクトとして取得するには、メディア プレーヤーを作成するときに指定した MediaPlayerHost ID パラメーターに基づく関数を使用します。
Function getMediaPlayer() { var p=document.getElementById("MediaPlayerHost") var obj=p.getElementsByTagName("object"); return obj[0].Content.MediaPlayer; }
ページで EmbedText プロパティを設定し、そのプロパティを、メディア プレーヤー オブジェクトが作成されたときに自動で呼び出します。
function getEmbedText(example) { var player = getMediaPlayer(); return player.EmbedText; }
createMediaPlayer を呼び出して、メディア プレーヤーが読み込まれたときに呼び出される関数名を含めます。getEmbedText 関数を使用して埋め込みテキストをページに表示するように、関数をセットアップします。
ブックマーク
実行時間の長いビデオ、多くの不連続セクションを持つビデオ、複雑性の高いビデオ、またはメタデータを含むビデオの場合、ブックマークを含めると便利です。ブックマークがクリックされると、メディア プレーヤーは、ページ上のビデオ内の定義された時間まで移動します。これは、DVD のチャプター間の移動に似ています。ブックマークをページに追加するには、Bookmarks フィールド ( 「チュートリアル: ビデオ サイトを作成する」トピックで説明されている DataFormWebPart オブジェクトの実装に既に含まれている) を使用できます。このチュートリアルでは、以下の形式のデータ値を持つ Bookmarks フィールドを使用します。
注意
中かっこに注意します。
注意
次のコードは、複数テキスト フィールド内のコードです。JavaScript ではありません。
{Bookmark1Time},{Bookmark1Title};
{Bookmark2Time},{Bookmark2Title};
たとえば、ブックマーク時間をそれぞれ 10 秒と 20 秒に設定する場合は、次のように記述します。
0:10,This bookmark will seek to ten seconds in the video;
0:20, This bookmark will seek to 20 seconds in the video.
ブックマーク リンクがクリックされたときに呼び出す関数を定義した後で、Bookmarks フィールドの値を抽出するためにページで実行する JavaScript コードを追加し、その値を使用して、JavaScript 関数を呼び出すリンクをレンダリングします。
[アイテムを表示するフォーム] へのブックマークを追加するには
SharePoint Designer 2010 でページを開きます。
ブックマークを表示する場所で、id 属性が bookmarkList に設定された <ul> タグ (<ul id="bookmarkList">) をページに追加します。
指定された位置までメディア プレーヤーをシークする JavaScript 関数を、ページに追加します。
ヒント 個々のブックマーク リンクのために、この関数を後で使用します。
function seekPlayer(posInSeconds) { var p = getMediaPlayer(); // The PositionMilliseconds parameter is a media player ECMAScript function found in mediaplayer.js. p.PositionMilliseconds = posInSeconds * 1000; }
ブックマークのリンク テキストをレンダリングするコードを JavaScript ページに追加します。
//Get the bookmarks from the BookmarksFieldValue anchor tag. var bookmarks = (document.getElementsByName('BookmarksFieldValue'))[0].innerText; //Strip out any <br> tags. bookmarks = bookmarks.replace(/<br>/gi,""); //While loop: Loops through bookmarks and processes as long as there are more bookmarks. //Temporary variables for the next position and title. var nextPositionSeconds; var nextTitle; var bookmarksList = document.getElementById('bookmarksList'); //As long as there are more semi-colons, there are more bookmarks to process. while(bookmarks.indexOf(";") != -1) { //Start building the position. Grab the substrings for the first minutes and seconds, and convert to seconds. nextPositionSeconds = ( parseInt(bookmarks.substr(0,bookmarks.indexOf(':'))) * 60) + parseInt(bookmarks.substr(bookmarks.indexOf(':') + 1,bookmarks.indexOf(','))); //Now trim the bookmarks string to remove the position. bookmarks = bookmarks.substr(bookmarks.indexOf(',') + 1); //Get the next title. var nextTitle = bookmarks.substr(0,bookmarks.indexOf(';')); //Trim the bookmarks string to remove the title to prepare the code to loop again. bookmarks = bookmarks.substr(bookmarks.indexOf(';') + 1); //Add a link to the bookmarks list that seeks the player to the correct place. bookmarksList.innerHTML = bookmarksList.innerHTML + '<li><a href=\"\" onclick=\"javascript:seekPlayer('+nextPositionSeconds+'); return false\">'+nextTitle+'</a></li>'; }
メディア プロパティと評価コントロール
メディア プロパティ セクションをページに追加するには、「チュートリアル: ビデオ サイトを作成する」トピックで説明されている手順を使用して、別の DataFormWebPart を追加します。ただし、これを非表示にしません。Web パーツをページの適切な場所に配置し、ユーザーに表示するフィールドを表示します。
ページに追加した元の DataFormWebPart オブジェクトを非表示にすることができます。「チュートリアル: ビデオ サイトを作成する」トピックでは、DataFormWebPart コントロールを削除するのではなく、非表示にしました。したがって、そのコントロールを抽出し、ページ上の目立つ場所 (ビデオの真下など) に移動できます。
評価コントロールを追加するには
評価コントロールを表示するページ上の適切な場所に <div> 要素を追加します。ratingsDiv など、認識可能な ID を使用します。
コントロールを抽出する JavaScript コードを追加し、そのコードを開始と終了の <div> タグの間に配置します。
var ratingsControl = document.getElementById(‘SPFieldAverageRating’).innerHTML; var ratingsDiv = document.getElementById(‘ratingsDiv’); ratingsDiv.innerHTML+=ratingsControl; ratingsDiv.innerHTML+=ratingsControl;
コメントとメモ掲示板 Web パーツ
メモ掲示板 Web パーツをページに追加して、ビデオについてのコメントを残す機能をユーザーに提供できます。[挿入] メニューから [Web パーツ] を選択します。[メモ掲示板] Web パーツが、[Web パーツ] のリストに表示されます。[メモ掲示板] Web パーツがリストに含まれない場合は、[メモ掲示板] Web パーツを [Web パーツ ギャラリー] にインポートしてください。
メモ掲示板 Web パーツをインポートするには
Windows エクスプローラーを開始し、チーム サイト、または [メモ掲示板] Web パーツを利用できる他のサイトに移動します。
[サイトの設定] に移動します。
[ギャラリー] セクションで [Web パーツ] をクリックします。
Windows エクスプローラーを使用して、[ライブラリ] メニューから [開く] を選択します。次に、[socialComment.dwp Web パーツ] を自分のコンピューターにコピーします。
手順 2. と 3. を繰り返します。
[socialComment.dwp Web パーツ] を [Web パーツ ギャラリー] にアップロードします。
メモ掲示板 Web パーツを追加するには
- [挿入] メニューから [Web パーツ] を選択し、ユーザーがコメントを追加できるようにする場所に [メモ掲示板] Web パーツを追加します。
注意
[メモ掲示板] Web パーツを使用するには、[ユーザー プロファイル サービス アプリケーション] を有効にして、それをサーバーで使用できるようにします。サイトのすべてのユーザーに UseSocialFeatures プロファイル権限が必要です。
関連するビデオ
現在のビデオに対して提供された管理キーワードに基づいて、選択された一連のビデオを表示するようにページを構成できます。
ビデオのキーワード プロパティをページの URL に強制的に挿入する JavaScript コードをページに追加します。このコードは、現在の URL に RelatedKeywords パラメーターがあるかどうかをチェックします。このパラメーターがない場合は、DataFormWebPart オブジェクトの Keywords() プロパティの値を使用して、ページを再度読み込みます。
//Check whether the RelatedKeywords parameter is found in the URL;if necessary, reload the page with the query string. var relatedKeywordsParam = "RelatedKeywords"; var urlParams = window.location.search; //Runs if the URL parameters do not include RelatedKeywords parameters. if(urlParams.indexOf(relatedKeywordsParam) == -1) { var keywordsValue = (document.getElementsByName('KeywordsFieldValue'))[0].innerText; var newUrl = window.location.toString(); newUrl+= '&'+relatedKeywordsParam+'=' + keywordsValue; window.location.replace(newUrl); }
SharePoint Designer 2010 の [挿入] メニューから [Web パーツ] を選択し、ContentByQueryWebPart オブジェクトのインスタンスをページに追加して、queryString クエリを含めます。Web パーツでは、RelatedKeywords パラメーターの値が使用されます。
URL の queryStringparameters パラメーターを使用するように、クエリを構成します。コンテンツ クエリ Web パーツの新しい機能の 1 つは、URL 内のクエリ文字列パラメーターに基づいて、query パラメーターを動的に受け入れられることです。この機能を使用して、関連するビデオを管理できます。URL の RelatedKeywords プロパティ (JavaScript で設定するプロパティ) には、フィルターの対象となる管理キーワードが含まれるためです。
[以下のリストからアイテムを表示する] の値を /Videos に設定します。
[追加フィルター] セクションの [エンタープライズ キーワード] を [PageQueryString:RelatedKeywords] に設定します。
次の手順
チュートリアル: ビデオをアップロードするエクスペリエンスのカスタマイズ
関連項目
タスク
[方法] ECMAScript を使用して MediaWebPart オブジェクトを設定する