カスタム コンバータ構成設定ページ
最終更新日: 2010年3月8日
適用対象: SharePoint Server 2010
カスタム ドキュメント コンバーターがカスタム構成インターフェイスを必要とする場合は、その目的のためのカスタム .aspx ページを作成して指定することができます。このページは、Microsoft SharePoint Server 2010 に含まれている既定のドキュメント構成設定ページを置き換えます。
注意
構成中に管理者からのみ追加情報を収集する必要がある場合は、SharePoint Server 2010 に含まれている既定のドキュメント構成設定ページ上に、ホストするカスタム .ascx コントロールを指定することができます。この方法では、代替フォームを開発する必要がなく、既定のドキュメント コンバーター構成設定ページを使用できます。詳細については、「コンバータの設定の追加コントロール」を参照してください。
管理者は、カスタム ページを使用して、コンバーターを使用する各コンテンツ タイプの構成設定を指定できます。これらのコンテンツ タイプ固有のコンバーター設定は、ユーザーがそのコンテンツ タイプのドキュメントを変換するように選択したときに、ドキュメント コンバーターに渡されます。SharePoint Server 2010 に含まれている既定のコンバーター構成設定ページには、コンテンツ タイプ固有のコンバーター設定を渡すコードが含まれています。
カスタム コンバータ構成設定ページを指定するには、ドキュメント コンバータ定義の ConverterSettingsForContentType 要素を、使用する .aspx ページの名前に設定します。これは任意の要素で、コンバータ定義に含めない場合、そのコンバーターではコンバータ構成ページを使用できません。
ドキュメント コンバータ定義の詳細については、「ドキュメント コンバータ定義スキーマ」を参照してください。
SharePoint Server 2010 は、ユーザーがコンバーター構成設定ページに移動したときに、次の情報をそのページに渡します。
ctype ユーザーがこのコンバーターを構成するコンテンツ タイプのコンテンツ タイプ識別子 (ID) を表します。
Converter ユーザーが構成するコンバータの GUID を表します。
OriginalSource ユーザーの移動元のページの URL を表します。このパラメータは、このコンテキストでは使用されないため、無視することができます。
次に例を示します。
http://example-ts/_layouts/ConverterSettings.aspx?ctype=0x0101&Converter=6dfdc5b4%2D2a28%2D4a06%2Db0c6%2Dad3901e3a807&OriginalSource=http%3A%2F%2Fexample%2Dts%2FDocuments%2FForms%2FAllItems%2Easpx
指定するページには、次の処理を行うコードが含まれる必要があります。
ページによって XML ドキュメントに収集される構成設定を書式設定します。
コンバータがドキュメント変換の変換後処理に必要な構成情報を提供するためには、次のスキーマに従って、指定されたコンテンツ タイプに構成設定を格納する必要があります。
<rca:RCAuthoringProperties xmlns:rca="urn:sharePointPublishingRcaProperties"> <rca:Converter rca:guid="6dfdc5b4-2a28-4a06-b0c6-ad3901e3a807"> <rca:property rca:type="InheritParentSettings">True</rca:property> <rca:property rca:type="SelectedPageLayout">30</rca:property> <rca:property rca:type="SelectedPageField">f55c4d88-1f2e-4ad9- aaa8-819af4ee7ee8</rca:property> <rca:property rca:type="SelectedStylesField">a932ec3f-94c1-48b1- b6dc-41aaa6eb7e54</rca:property> <rca:property rca:type="CreatePageWithSourceDocument">True</rca:property> <rca:property rca:type="AllowChangeLocationConfig">True</rca:property> <rca:property rca:type="ConfiguredPageLocation"></rca:property> <rca:property rca:type="CreateSynchronously">True</rca:property> <rca:property rca:type="AllowChangeProcessingConfig">True</rca:property> <rca:property rca:type="ConverterSpecificSettings"></rca:property> </rca:Converter> </rca:RCAuthoringProperties>
上記の例では、要素は、既定のコンバーター構成設定ページで使用可能なさまざまなオプションを表します。ConverterSpecificSettings 要素は、コンバーター固有の .ascx コントロールがある場合にそのコントロールによって書き出される構成設定を表します。詳細については、「コンバータの設定の追加コントロール」を参照してください。また、ConfiguredPageLocation 要素は空で、SharePoint Server 2010 が現在のサイトを使用することを指定しています。
その構成 XML を、該当するコンテンツ タイプの定義に XMLDocument ノードとして書き込みます。
たとえば、次のコードは、上記のように、目的の XML ドキュメントを構築した後で、サイト コンテンツ タイプの定義を更新します。
// Delete the previous instance of this document if it already exists. myContentType.XmlDocuments.Delete(RcaPropertiesNamespaceUri); myContentType.XmlDocuments.Add(this.myXmlDocument); myContentType.Update();
' Delete the previous instance of this document if it already exists. myContentType.XmlDocuments.Delete(RcaPropertiesNamespaceUri) myContentType.XmlDocuments.Add(Me.myXmlDocument) myContentType.Update()
構成設定データは、ドキュメント コンバーターが解析できる任意の整形式の XML にすることができます。SharePoint Server 2010 は、情報自体を解析するのではなく、後でドキュメント コンバーターに渡すことができるように、単にこの XML をコンテンツ タイプの定義内に格納できるようにします。
コンバータ構成設定ページを指定する場合は、このドキュメント コンバータを起動するためのユーザー インターフェイス用のカスタム .aspx ページも指定する必要があることに注意してください。ドキュメント変換を呼び出すための既定のページは、選択されたコンバータに構成設定を渡しません。詳細については、「カスタム変換設定ページ」を参照してください。
カスタム コンバータ設定コントロールをホストする
カスタム コンバータ設定コントロールを有効にするには、そのためのコードがドキュメント コンバータを呼び出すページに含まれる必要があります。
たとえば、そのページの OnLoad 関数に配置される次のコードは、カスタム コントロールが指定されている場合に、カスタム コンバータ設定コントロールをそのページに追加します。
次の例は、分離コード ファイルに 2 つのメンバを必要とします。
System.Web.UI.Control 型の customControl という名前のメンバ
System.Web.UI.WebControls.PlaceHolder 型の customConverterControl という名前のメンバー、および .aspx ページ上の対応するプレースホルダー
if (!String.IsNullOrEmpty(myTransformer.ConverterSpecificSettingsUI)) { this.customControl = LoadControl(myTransformer.ConverterSpecificSettingsUI); this.customConverterControl = this.customControl as IDocumentConverterControl; if (this.customConverterControl != null) { this.converterSpecificControl.Controls.Add(this.customControl); } }
If Not String.IsNullOrEmpty(myTransformer.ConverterSpecificSettingsUI) Then Me.customControl = LoadControl(myTransformer.ConverterSpecificSettingsUI) Me.customConverterControl = TryCast(Me.customControl, IDocumentConverterControl) If Me.customConverterControl IsNot Nothing Then Me.converterSpecificControl.Controls.Add(Me.customControl) End If End If
次に、コードはカスタム コンバータ設定コントロールの既存の設定を適用します。
// Set up the converter-specific control and retrieve the settings. if (this.customConverterControl != null) { this.customConverterControl.ContentType = this.CurrentContentType; this.customConverterControl.ConverterSettings = this.effectiveRcaProperties.ConverterSpecificSettings; }
' Set up the converter-specific control and retrieve the settings. If Me.customConverterControl IsNot Nothing Then Me.customConverterControl.ContentType = Me.CurrentContentType Me.customConverterControl.ConverterSettings = Me.effectiveRcaProperties.ConverterSpecificSettings End If
最後に、そのページの OnOK 関数に配置される次のコード例は、カスタム コンバータ設定をサイト コンテンツ タイプの定義に戻して保存します。コードは、より多くのコンテキスト情報をコントロールに提供するようにコンテンツ タイプを設定します。
// Persist the converter-specific settings. if (this.converterSpecificControl.Controls.Count > 0) { if (this.customConverterControl != null) { this.customConverterControl.ContentType = this.CurrentContentType; this.myRcaProperties.ConverterSpecificSettings = this.customConverterControl.ConverterSettings; // Store this string in the content type properties as converter specific settings. } }
' Persist the converter-specific settings. If Me.converterSpecificControl.Controls.Count > 0 Then If Me.customConverterControl IsNot Nothing Then Me.customConverterControl.ContentType = Me.CurrentContentType Me.myRcaProperties.ConverterSpecificSettings = Me.customConverterControl.ConverterSettings ' Store this string in the content type properties as converter specific settings. End If End If