次の方法で共有


PWA のリボンを変更する

適用対象: Office 2010 | Project 2010 | Project Server 2010 | SharePoint Server 2010

この記事の内容
プロジェクト詳細ページに [プロジェクトを閉じる] ボタンを追加する
Windows PowerShell を使用してフィーチャーをインストールまたは削除する
[タイムシート] リボンを変更するためのフィーチャーを開発する

Microsoft Project Server 2010 の Project Web App は、Microsoft SharePoint Server 2010 のリボン インフラストラクチャを使用する SharePoint アプリケーションです。Microsoft Visual Studio 2010 を使用すると、SharePoint のフィーチャーを作成できます。各フィーチャーには、リボン インターフェイスを変更する 1 つ以上のカスタム アクションを含めることができます。この記事では、[プロジェクトの詳細] ページおよび [タイムシート] ページに関してリボンのボタンとその他のコントロールを追加する方法および変更する方法を説明します (この記事のコードは、Microsoft Corporation の Adrian Jenkins および Maria Kouvlaki によるコード サンプルに基づいています)。

この記事は以下のセクションで構成されます。

  • プロジェクト詳細ページに [プロジェクトを閉じる] ボタンを追加する

  • Windows PowerShell を使用してフィーチャーをインストールまたは削除する

  • [タイムシート] リボンを変更するためのフィーチャーを開発する

ソリューションのダウンロード:   Visual Studio の完全な RibbonCustomization ソリューションについては、Project 2010 SDK のダウンロードを参照してください。

詳細については、「SharePoint 2010 Server リボンのカスタマイズと展開」および「User Interface Customization Resource Center | SharePoint 2010 (英語)」を参照してください。

注意

Internet Explorer のバージョンによって ECMAScript (JavaScript、JScript) の実装が異なっており、それによって一部のリボン コントロールを非表示にするカスタマイズ機能の動作に影響することがあります。たとえば、[プロジェクト センター] リボンの [表示/非表示] グループでのコントロールの非表示は、最終リリース版の Internet Explorer 9 では機能しますが、プレリリース版の Internet Explorer 8 では機能しません。詳細については、ブログ投稿「Trials and Tribulations in Customizing the Project Center Ribbon (英語)」を参照してください。

SharePoint アプリケーションのリボンを変更するときは、複数の変更を一度に行わずに、それぞれの変更ごとにテストすることをお勧めします。Visual Studio 内でテストを行うのは簡単です。変更のたびに F5 キーを押して、結果を確認してください。

プロジェクト詳細ページに [プロジェクトを閉じる] ボタンを追加する

Project Web App 内のリボンの定義ファイルは [Program Files]\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\PWARibbon\listtemplates\pwaribbon.xml です。Project Web App のリボンの定義は、~\TEMPLATE\GLOBAL\XML\CMDUI.XML ファイル内の SharePoint リボン テンプレート定義に基づいて構築されます。Project Web App のリボンを変更するには、リボンのコントロール、グループ、およびタブを追加、変更、無効化、または削除する CustomAction 要素を定義した Elements.xml ファイルが含まれている SharePoint フィーチャーを展開します。

注意

リボン定義ファイルは変更しないでください。更新プログラムおよびサービス パックによって、これらのファイルが置き換えられ、ユーザーによる変更が上書きされることがあります。ユーザーが pwaribbon.xml ファイルまたは CMDUI.xml ファイルに行った変更はサポートされません。

RibbonCustomization ソリューションには、プロジェクト詳細 Web パーツが含まれるページのリボンに [プロジェクトを閉じる] ボタンを追加する SharePoint フィーチャーが含まれています。Project Web App でこのページを表示するには、サイド リンク バーで [プロジェクト センター] をクリックし、[プロジェクト センター] ページのグリッドでプロジェクト名をクリックします。

図 1. [スケジュール ツール] リボンの [タスク] タブのグループとコントロール

[スケジュール ツール] リボンのグループとコントロール

たとえば、プロジェクト詳細ページの [スケジュール ツール] リボンの [タスク] タブ (図 1) にコントロールを追加するには、pwaribbon.xml ファイル内から <!-- REGION Project Drilldown Ribbon--> というコメントを探します。[タスク] タブ で [プロジェクト] グループを探します。これはグループの Sequence="20" 属性で指定されように、2 番目のグループです。次の XML スニペットでは、[プロジェクト] グループと、このグループの最初の 2 つのコントロールを定義しています。

<Group Id="Ribbon.ContextualTabs.ProjectDrilldown.Tasks.Update" 
    Command="cxtGroupUpdate" 
    Sequence="20"  
    Title="$Resources:pwafeatures,WEBPARTS_GENERAL_PROJECT_TAB_TITLE" 
    <!-- Remainder of group attributes ... --> >
  <Controls Id="Ribbon.ContextualTabs.ProjectDrilldown.Tasks.Update.Controls">
    <SplitButton 
        Id="Ribbon.ContextualTabs.ProjectDrilldown.Tasks.Update.EditPWAProject" 
        Command="EditPWAProject" 
        Sequence="10" 
        MenuCommand="EditMenu" 
        <!-- Remainder of the Edit menu attributes and child menu items ... -->
    <Button 
        Id="Ribbon.ContextualTabs.ProjectDrilldown.Tasks.Update.SaveProject"  
        Command="SaveProject" 
        Sequence="20"
        <!-- Remainder of the Save button attributes ... -->

SplitButton コントロール (図 1 の [編集] ドロップダウン メニュー) の Sequence="10" 属性は、それが [プロジェクト] グループの最初のコントロールであることを指定しています。pwaribbon.xml ファイル内のSplitButton メニュー項目の後の 2 番目のコントロールは [保存] ボタンで、これは Sequence="20" 属性で指定されています。

手順 1 では、[編集] メニューと [保存] ボタンの間に [プロジェクトを閉じる] ボタンを追加する方法を示します。[プロジェクトを閉じる] ボタンの定義は、pwaribbon.xml ファイル内の別のボタンからコピーします。

手順 1 . [プロジェクトを閉じる] ボタンを追加する Visual Studio プロジェクトを作成するには

  1. Project Server を実行しているコンピューターで、Visual Studio を起動し、空の SharePoint プロジェクトを作成します ([新しいプロジェクト] ダイアログ ボックスの [インストールされたテンプレート] ウィンドウ内の [SharePoint 2010] ノードを展開します)。

  2. 上部のドロップダウン リストでターゲット フレームワークとして [.NET Framework 3.5] を選択します。プロジェクトに RibbonCustomization という名前を付け、プロジェクト ディレクトリの場所を選択し、[OK] をクリックします。

  3. [SharePoint カスタマイズ ウィザード] ダイアログ ボックスでは、既にローカル サイト アドレスが指定されています。[ファーム ソリューションとして配置する] をクリックし、[完了] をクリックします。

  4. ソリューション エクスプローラーで、[Features] ノードを右クリックし、[フィーチャーの追加] をクリックします。新しい [Feature1] ノードを右クリックし、[名前の変更] をクリックします。このフィーチャーに ProjectDetailsCustomization という名前を付けます。

  5. [ProjectDetailscustomization.feature] タブで、[タイトル] フィールドを「Project Details Customization - add Close button」に変更します。フィーチャーの説明を入力します。たとえば、「プロジェクト詳細ページで、[スケジュール ツール] リボンの [タスク] タブの [プロジェクト] グループに [閉じる] ボタンを追加」と入力します。

  6. フィーチャーのスコープを [Web] に設定します。

  7. ソリューション エクスプローラーで、RibbonCustomization プロジェクト (トップレベルのソリューション ノードではありません) を右クリックし、新しいフォルダーを追加します。このフォルダーに Elements という名前を付けます。

    注意

    Elements フォルダーは、単にソリューション内のファイルを整理するためのものです。将来の展開では、Elements フォルダーは Visual Studio で SharePoint のマップされたフォルダーとして使用されません。

  8. [Elements] フォルダーを右クリックし、新しい項目を追加します。[新しいアイテム] ダイアログ ボックスで、[空の要素] をクリックし、要素の名前を AddCloseButton とし、[追加] をクリックします。

    ProjectDetailsCustomization フィーチャー デザイナーを再び開くと、[フィーチャー内の項目] ウィンドウ内に AddCloseButton 要素が含まれていることを確認できます。

  9. AddCloseButton 要素の Elements.xml ファイルを開きます。XML コードをすべて選択し、以下のコードに置き換えます。

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
      <CustomAction Id="Ribbon.ContextualTabs.ProjectDrillDown.Tasks.Update" Location="CommandUI.Ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.ProjectDrilldown.Tasks.Update.Controls._children">
              <Button 
                Id="Ribbon.ContextualTabs.ProjectDrilldown.Tasks.Update.CloseProject" 
                Sequence="15" 
                Command="CloseProject" LabelText="Close Project" Alt="Close Project" 
                Image16by16="/_layouts/$Resources:core,Language;/images/ps16x16.png" 
                Image16by16Top="-64" Image16by16Left="0" 
                Image32by32="/_layouts/$Resources:core,Language;/images/ps32x32.png" 
                Image32by32Top="0" Image32by32Left="-96" 
                TemplateAlias="o1" />
            </CommandUIDefinition>
          </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    </Elements>
    

    以下は要素と属性の説明です。

    • CommandUIExtension 要素は、Id="Ribbon.ContextualTabs.ProjectDrillDown.Tasks.Update" で指定された CustomAction を拡張します。つまり、リボンの [プロジェクト] グループが拡大されます。

    • CommandUIDefinition 要素は、追加されるボタンが [プロジェクト] グループに含まれるコントロールのコレクションの子であることを、Location 属性で指定しています。

    • Button 要素は、追加するコントロールの種類を指定しています。定義は pwaribbon.xml ファイルの <!-- Regular PDP Ribbon --> セクションにある CloseProject ボタン コントロールからコピーされます。属性は少し変更されています。

    • Button 要素の Id 属性は、pwaribbon.xml ファイルおよび CMDUI.XML ファイルの中で、要素の Id 値ごとに異なるものにする必要があります。ただし、たとえば "Picasso" という Id 値を使用した場合、この要件は満たされるとしても、将来、そのコードを引き継いだ開発者は困惑するでしょう。

    • [プロジェクトを閉じる] ボタンを [編集] ボタン (Sequence="10") と [保存] ボタン (Sequence="20") の間に追加する場合、Sequence 属性には 10 と 20 の間の任意の整数を使用できます。

    • Command 属性は、通常の PDP リボンの他のボタンで使用される組み込み CloseProject コマンドを指定しています。

    • Image16x16 属性は、狭いリボンでボタンが縮小されたときに使用するイメージを指定しています。Project Server の英語版インストールでは、このイメージは ~\TEMPLATE\LAYOUTS\1033\IMAGES\ps16x16.png ファイルから抽出されます。このファイルには多数のアイコン イメージが含まれています。Image16by16Top="-64" Image16by16Left="0" という属性値は、16 x 16 ピクセルのアイコンの左上隅が、イメージ全体の上辺から 64 ピクセル、左辺から 0 ピクセルの位置になることを指定しています。

    • 同様に、Image32by32 属性は、広いリボンでボタンが拡大されたときに使用するイメージを指定しています。32 x 32 ピクセルのアイコンの左上隅は、ps32x32.png ファイルの上辺から 0 ピクセル、左辺から 96 ピクセルの位置になります。

    • TemplateAlias 属性は、リボン全体の構造と動作に使用する SharePoint リボン テンプレートを指定しています。たとえば、o1 テンプレートは CMDUI.XML ファイルで定義されています。このテンプレートは、ページのサイズが変更されたときにコントロールのサイズと位置をどのように調整するかを指定しています。[プロジェクト] グループの他のコントロールでも o1 テンプレートを使用しています。

  10. Visual Studio で、F5 キーを押して、RibbonCustomization ソリューションをビルドして展開します (まず、ローカル コンピューター上で Project Web App が実行されていないことを確認してください)。Project Web App が開いたら、[プロジェクト センター] ページに移動し、何かのプロジェクトをクリックして、プロジェクト詳細ページに変更後のリボンが表示されることを確認してください (図 2)。

図 2. [スケジュール ツール] リボンの [タスク] タブの [プロジェクト] グループに [閉じる] ボタンが含まれている

[プロジェクトを閉じる] ボタンがあるリボン

Visual Studio を使用してフィーチャーを展開すると、そのフィーチャーを Web サイト (フィーチャーのスコープを Site に設定した場合は、サイト コレクション) にインストールし、IIS を再利用し、そのフィーチャーをアクティブ化し、Internet Explorer ページ キャッシュを削除し、Web サイトを開くという作業がすべて行われます。Web サイトを閉じると、Visual Studio によってそのフィーチャーが非アクティブ化され、取り消されます。Project Web App が実行されているときに、[サイトの操作] メニューの [サイトの設定] をクリックし、[サイト機能の管理] をクリックします。図 3 は、"Project Details Customization - add Close button" フィーチャーがアクティブ化されていることを示す機能ページです。このフィーチャーのタイトルと説明は、ProjectDetailsCustomization フィーチャー デザイナーで追加した値に基づいています。

図 3. Project Web App のサイトの設定の機能ページで新しいフィーチャーがアクティブ化されたことが示されている

新しい機能がアクティブになっている [機能] ページ

SharePoint のマップされたフォルダー Features (~\TEMPLATE\FEATURES) を開くと、このフィーチャーが Visual Studio によってサブディレクトリ RibbonCustomization_ProjectDetailsCustomization にインストールされたことを確認できます。これは展開時に作成したプロジェクト名とフィーチャー名に一致します。

[プロジェクトを閉じる] ボタンでは、組み込みアイコンと組み込み関数を使用しています。カスタム アイコンとカスタム ECMAScript (JavaScript、JScript) 関数を使用する Project Web App のリボンにボタンを追加するには、「チュートリアル : PWA リボンのカスタマイズと JS グリッドのアクセス」を参照してください。

Windows PowerShell を使用してフィーチャーをインストールまたは削除する

手順 2 では、Windows PowerShell コマンドを使用して、RibbonCustomization ソリューションを展開し、他の Project Web App インスタンス上で ProjectDetailsCustomization フィーチャーをアクティブ化する方法を示します。手順 3 では、このフィーチャーを非アクティブ化し、このソリューションをアンインストールする方法を示します。パッケージ ファイルの作成とインストールの詳細については、「チュートリアル : PWA リボンのカスタマイズと JS グリッドのアクセス」の「プロジェクト センター拡張機能を配置する」を参照してください。

手順 2. RibbonCustomization ソリューションを展開し、フィーチャーをアクティブ化するには

  1. Visual Studio で、[ビルド] メニューの [パッケージ] をクリックします。ソリューションの \bin\debug サブディレクトリに RibbonCustomization.wsp ファイルが作成されます。

  2. ソリューションのインストール先にする Project Server コンピューターに RibbonCustomization.wsp ファイルをコピーします。たとえば、C:\PWASamples ディレクトリにコピーします。

  3. SharePoint 2010 管理シェルを管理者として実行します ([スタート] メニューの [Microsoft SharePoint 2010 製品] をクリックし、[SharePoint 2010 管理シェル] を右クリックし、[管理者として実行] をクリックします)。

  4. 以下のコマンドを一度に 1 つずつ順に実行します。これらのコマンドによって、ソリューションが SharePoint に追加され、グローバル アセンブリ キャッシュにインストールされ、フィーチャーがアクティブ化されます。

    add-spsolution -literalpath C:\PWASamples\RibbonCustomization.wsp
    
    install-spsolution -identity RibbonCustomization.wsp -force -gacdeployment
    
    enable-spfeature –identity RibbonCustomization_ProjectDetailsCustomization -url https://ServerName/ProjectServerName
    

    注意

    enable-spfeature コマンドの identity パラメーターでは、フィーチャーのサブディレクトリの名前を指定する必要があります。

  5. 次のセクションで説明する TimesheetRibbonCustomization フィーチャーを実装してある場合は、次のコマンドでそのフィーチャーをアクティブ化します。

    enable-spfeature -identity RibbonCustomization_TimesheetRibbonCustomization -urlhttps://ServerName/ProjectServerName
    
  6. インストールされたソリューションを確認するには、SharePoint 2010 サーバーの全体管理のホーム ページのサイド リンク バーで [システム設定] をクリックし、[システム設定] ページの [ファーム管理] の [ファーム ソリューションの管理] をクリックします。[ソリューション管理] ページに、ribboncustomization.wsp ソリューションがグローバルに展開されたことが示されます。

  7. [ribboncustomization.wsp] をクリックして [ソリューションのプロパティ] ページに移動します。ここでソリューション展開プロパティを確認できます。[ソリューションの取り消し] をクリックしてソリューションを削除することも、手順 3 のコマンドを使用することもできます。ソリューションを削除するときは、その前にアクティブなフィーチャーを非アクティブ化してください。

手順 3. フィーチャーを非アクティブ化し、RibbonCustomization ソリューションを削除するには

  1. たとえば、単に Project Web App で ProjectDetailsCustomization フィーチャーを非アクティブ化するには、次のコマンドを実行します (または機能ページで、このフィーチャーの [非アクティブ化] をクリックします)。

    disable-spfeature -identity RibbonCustomization_ProjectDetailsCustomization -url https://ServerName/ProjectServerName
    
  2. TimesheetRibbonCustomization フィーチャーを実装してある場合は、次のコマンドでそのフィーチャーを非アクティブ化します。

    disable-spfeature -identity RibbonCustomization_TimesheetRibbonCustomization -url https://ServerName/ProjectServerName
    
  3. ソリューション内のすべてのフィーチャーを非アクティブ化した後、次のコマンドで RibbonCustomization ソリューションを削除します。

    uninstall-spsolution -identity RibbonCustomization.wsp
    remove-spsolution -identity RibbonCustomization.wsp
    

ヒント

これまでに使用したコマンドがすべて組み込まれていて、しかもインストール コマンドおよびアンインストール コマンドが完了するのを待ってから処理を続行する、そしてフィーチャーを更新するためのオプションを備えている Windows PowerShell スクリプトを作成するには、記事「[方法] Project Server ワークフローを展開する」のワークフロー ソリューションを管理するための完全なスクリプト例に変更を加えます。

[タイムシート] リボンを変更するためのフィーチャーを開発する

Project Web App の [タイムシート] ページに対しては、タイムシートが単一入力モード (タスクの状態のエントリがタイムシート内のエントリにもなる) であるかどうかに応じて異なる複数のリボン定義があります。図 4 では、[グループ化] ドロップダウン メニューに既定の [グループなし] メニュー項目と既定のツールヒントが表示されています。タスクが選択されていないので、[タスクの削除] ボタンは無効になっています。

図 4. [タイムシート] ページの既定のリボン、単一入力モード

[既定のタイムシート] リボン、単一入力モード

Project Server のタイムシートを使用している組織での一般的な要求の 1 つとして、[タイムシート] リボンに変更を加える (たとえば、[タスクの削除] ボタンを削除する) ことがあります。手順 4 では、TimesheetRibbonCustomization というフィーチャーを RibbonCustomization ソリューションに追加する方法を示します。これは以下のことを行うためのものです。

  • [提出] グループの [状態の送信] ドロップダウン コントロールを削除する。

  • [タスク] グループの

    • [行の挿入] ドロップダウン コントロールを削除する。

    • [再割り当て] ボタンを削除する。

    • [タスクの削除] ボタンを削除する。

  • [表示/非表示] グループの

    • [予定作業時間] チェック ボックスを削除する。

    • [単位] ドロップダウン コントロールを削除する。

    • [提出のコメント] チェック ボックスを削除する。

  • [データ] グループの [グループ化] ドロップダウン コントロールを次のように変更する。

    • [グループ化] ドロップダウン コントロールのヒント テキストを変更する。

    • メニューの [グループなし] 項目を削除する。

    • [プロジェクト] 項目のコマンドの動作を変更する。

    • [状態] 項目を無効にする。

TimesheetRibbonCustomization フィーチャーを展開するときは、Elements.xml ファイル内の使用しないセクションをコメントアウトすることができます。また、他のリボン コントロールに変更を加える XML コードを追加することもできます。RibbonCustomization ソリューション (ProjectDetailsCustomization フィーチャーと TimesheetRibbonCustomization フィーチャーが含まれる) を展開するときは、どちらのフィーチャーも選択的に有効または無効にすることができます。

手順 4. [タイムシート] リボンを変更するフィーチャーを開発するには

  1. タイムシートが単一入力モードになっていることを確認します。詳細については、「Project 2010 の開発者のための新機能」の「タイムシートの単一入力モード」を参照してください。

  2. Visual Studio のソリューション エクスプローラーで、RibbonCustomization プロジェクトの [Elements] フォルダーを右クリックし、新しい項目を追加します。[新しい項目の追加] ダイアログ ボックスで、[空の要素] をクリックし、要素の名前を ModifyTimesheetRibbon とし、[追加] をクリックします。

  3. ProjectDetailsCustomization フィーチャーをダブルクリックして、フィーチャー デザイナーを開きます。[フィーチャー内の項目] ウィンドウで ModifyTimesheetRibbon (RibbonCustomization) 要素をクリックし、左矢印 (<) ボタンを使用して、この要素を [ソリューション内の項目] ウィンドウに移動します。[ProjectDetailsCustomization] フィーチャー ウィンドウを閉じます。

  4. ソリューション エクスプローラーで、[Features] フォルダーを右クリックし、[フィーチャーの追加] をクリックします。新しい [Feature1] を右クリックし、名前を TimesheetRibbonCustomization に変更します。

  5. [TimesheetRibbonCustomization] フィーチャー デザイナー ウィンドウで、[タイトル] フィールドを「Timesheet Ribbon Customization - modify multiple controls」に変更します。[説明] フィールドに「タイムシート ページで、単一入力モードのときに [タイムシート] リボンのいくつかのコントロールを削除、変更、または無効化」と入力します。

  6. [スコープ] を [Web] に設定し、ModifyTimesheetRibbon 要素を [フィーチャー内の項目] ウィンドウに移動します。

  7. ModifyTimesheetRibbon 要素内の Elements.xml ファイルを開き、ファイル内のすべてのコードを次の XML に置き換えます。

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
    
      <!--This Elements.xml file contains custom action examples that remove, modify, or disable
           buttons and other controls on the Timesheet tab of the ribbon on the Timesheet page in 
           Project Web App (https://ServerName/ProjectServerName/timesheet.aspx). 
           The following custom actions work when the timesheet is in single entry mode.
      -->
    
      <!-- Remove the Send Status drop-down control in the Submit group. -->
      <CustomAction
              Id="Ribbon.ContextualTabs.TiedMode.Home.Sheet.SubmitMenu"
              Location="CommandUI.Ribbon"
              Title="Hides the Send Status drop-down control in the Timesheet ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.TiedMode.Home.Sheet.SubmitMenu"/>
          </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    
    
      <!-- Remove the Insert Row drop-down control in the Tasks group. -->
      <CustomAction
            Id="Ribbon.ContextualTabs.TiedMode.Home.Tasks.AddLine"
            Location="CommandUI.Ribbon"
            Title="Hides the Insert Row drop-down control in the Timesheet ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.TiedMode.Home.Tasks.AddLine"/>
          </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    
      <!-- Remove the Reassign button in the Tasks group. -->
      <CustomAction
            Id="Ribbon.ContextualTabs.TiedMode.Home.Tasks.Reassign"
            Location="CommandUI.Ribbon"
            Title="Hides the Reassign button in the Timesheet ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.TiedMode.Home.Tasks.Reassign"/>
          </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    
      <!-- Remove the Remove Task button in the Tasks group. -->
      <CustomAction
             Id="Ribbon.ContextualTabs.TiedMode.Home.Tasks.RemoveTask"
             Location="CommandUI.Ribbon"
             Title="Hides the Remove Task button in the Timesheet ribbon.">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.TiedMode.Home.Tasks.RemoveTask"/>
          </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    
      <!-- Remove the Planned check box for planned work in the Show/Hide group. -->
      <
    
              Id="Ribbon.ContextualTabs.TiedMode.Home.ShowHide.PlannedWork"
              Location="CommandUI.Ribbon"
              Title="Hides the Planned check box in the Timesheet ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.TiedMode.Home.ShowHide.PlannedWork"/>
          </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    
      <!-- Remove the Units drop-down control in the Show/Hide group. -->
      <CustomAction
            Id="Ribbon.ContextualTabs.TiedMode.Home.ShowHide.PlannedWork"
            Location="CommandUI.Ribbon"
            Title="Hides the Units drop-down control from the Timesheet ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.TiedMode.Home.ShowHide.DataOptions"/>
          </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    
      <!--Remove the Comment On Sumbit check box in the Show/Hide group. -->
      <CustomAction
          Id="Ribbon.ContextualTabs.TiedMode.Home.ShowHide.CommentOnSubmit"
          Location="CommandUI.Ribbon"
          Title="Hides the Comment On Submit check box from the Timesheet ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.TiedMode.Home.ShowHide.CommentOnSubmit"/>
          </CommandUIDefinitions>
        </CommandUIExtension>
      </CustomAction>
    
      <!-- Modify the Group By drop-down control in the Data group. 
             - Change the tooltip text of the drop-down control. 
             - Remove the No Group item in the menu. 
             - Change the command action of the Project item.
             - Disable the Status item. -->
      <CustomAction
        Id="Ribbon.ContextualTabs.TiedMode.Home.Data.Replace"
        Location="CommandUI.Ribbon"
        Title="Ribbon.ContextualTabs.TiedMode.Home.Data.GroupsDropDown">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition Location="Ribbon.ContextualTabs.TiedMode.Home.Data.GroupsDropDown">
    
              <DropDown Id="Ribbon.ContextualTabs.TiedMode.Home.Data.Replace"  Command="ShowProject" 
                  Sequence="60" InitialItem="InboxGroups.Project" Width="100px" TemplateAlias="c7" 
                  ToolTipTitle="$Resources:pwafeatures,WEBPARTS_GENERAL_GROUP_LABEL" 
                  ToolTipDescription="The Group By menu functionality has been replaced.">
                <Menu Id="Ribbon.ContextualTabs.TiedMode.Home.Data.Replace.Menu">
                  <MenuSection Id="Ribbon.ContextualTabs.TiedMode.Home.Data.Replace.Menu.InboxGroups" 
                      Sequence="10" DisplayMode="Menu16">
                    <Controls 
                        Id="Ribbon.ContextualTabs.TiedMode.Home.Data.Replace.Menu.InboxGroups.Controls">
                      <Button 
                          Id="Ribbon.ContextualTabs.TiedMode.Home.Data.Replace.Menu.InboxGroups.Project" 
                          Command="ProjGroup" Sequence="20" MenuItemId="InboxGroups.Project" 
                          Alt="$Resources:pwafeatures,WEBPARTS_TIEDMODE_CM_PROJECT" 
                          LabelText="$Resources:pwafeatures,WEBPARTS_TIEDMODE_CM_PROJECT"/>
                      <Button 
                          Id="Ribbon.ContextualTabs.TiedMode.Home.Data.Replace.Menu.InboxGroups.Status" 
                          Command="StatusGroup" Sequence="30" MenuItemId="InboxGroups.Status" 
                          Alt="$Resources:pwafeatures,WEBPARTS_TIEDMODE_CM_STATUS" 
                          LabelText="$Resources:pwafeatures,WEBPARTS_TIEDMODE_CM_STATUS"/>
                    </Controls>
                  </MenuSection>
                </Menu>
              </DropDown>
            </CommandUIDefinition>
          </CommandUIDefinitions>
    
          <CommandUIHandlers>
            <!-- Comment-out the following line to disable the Group By drop-down menu. -->
            <CommandUIHandler Command="ShowProject" 
                CommandAction="javascript:alert('The ShowProject button has been replaced.');" />
            <CommandUIHandler Command="ProjGroup" 
                CommandAction="javascript:alert('The Project item (ProjGroup button) has been replaced.');" />
    
            <!-- Uncomment the following line to enable the Status item in the menu. -->
            <!-- <CommandUIHandler Command="StatusGroup" 
                CommandAction="javascript:alert('The Status item (StatusGroup button) has been replaced.');" /> 
            -->
    
          </CommandUIHandlers>
        </CommandUIExtension>
      </CustomAction>
    </Elements>
    

    ModifyTimesheetRibbon 要素内のカスタム アクションの拡張によって、pwaribbon.xml ファイルの <!-- REGION Tied Mode Ribbon--> セクションにある既定のコントロール定義のいくつかが置き換えられます。

    ヒント

    タイムシートが Tied Mode でないときに [タイムシート] リボンを変更するには、pwaribbon.xml ファイルの <!-- REGION Timesheet Ribbon--> セクションにあるカスタム アクションを拡張します。

  8. F5 キーを押して、RibbonCustomization ソリューションをビルドして展開し、フィーチャーをテストします。

  9. RibbonCustomization ソリューションを展開用にパッケージ化します。

Project Web App の [タイムシート] ページのリボンが上述のように変更されます。[グループ化] ドロップダウン メニュー コントロールの [プロジェクト] 項目をクリックすると、図 5 のように、ボタン コマンドの動作が JavaScript の通知に置き換えられます。

図 5. [タイムシート] リボンの一部のコントロールが非表示化または変更されている

非表示または修正された、リボンのいくつかのコントロール

Project Web App の [機能の管理] ページを開くと、"Project Details Customization - add Close button" フィーチャーと "Timesheet Ribbon Customization - modify multiple controls" フィーチャーの両方がアクティブになります。~\TEMPLATE\FEATURES ディレクトリには、RibbonCustomization_ProjectDetailsCustomization サブディレクトリと RibbonCustomization_TimesheetRibbonCustomization サブディレクトリが含まれています。

RibbonCustomization ソリューションのフィーチャーの一方または両方を展開する方法については、「Windows PowerShell を使用してフィーチャーをインストールまたは削除する」を参照してください。

関連項目

タスク

チュートリアル : PWA リボンのカスタマイズと JS グリッドのアクセス

[方法] Project Server ワークフローを展開する

概念

Project 2010 の開発者のための新機能

その他のリソース

SharePoint 2010 Server リボンのカスタマイズと展開

User Interface Customization Resource Center | SharePoint 2010 (英語)

SharePoint スキーマの参照

機能とソリューションのコマンドレット (SharePoint Server 2010)

[チュートリアル] Server リボンからボタンを削除する

Chris O'Brien: Adding ribbon items into existing tabs/groups (ribbon customization part 2) (英語)