0

そこで私は最近、EPi サーバーのファイル管理システムにアップロードされた各ファイルのメタデータを定義するフィールドを、ファイルを編集するだけで変更できることを知りましたFileSummary.config

このFileSummary.configファイルでは、XForms 定義を使用してフィールドを静的に定義できますが、ページや定義済みのサイト カテゴリからのデータなどをフィールドに動的に入力することは可能ですか?

編集) そこに JavaScript を定義することが可能であるため、代替手段になる可能性があります。

4

1 に答える 1

0

1 つのアプローチは、コントロール アダプターを使用して、いくつかのコントロールをファイル サマリー編集/追加コントロールに追加することです。

次のように、アダプターを AdapterMappings.browser ファイルに登録します。

<browsers>
  <browser refID="Default">
    <controlAdapters>
      ...
      <adapter controlType="EPiServer.UI.Hosting.EditCustomFileSummary"
               adapterType="MyLibrary.Adapters.FileSummaryAdapter, MyLibrary" />
    </controlAdapters>
  </browser>
</browsers>

次に、ControlAdapter から派生するコントロール クラスを作成する必要があります。

public class FileSummaryAdapter : ControlAdapter 
{
}

ここで、独自のコントロールを作成して、「ラップされた」EditCustomFileSummary に追加できます。これは、以前にタグ コントロールをファイル サマリー ダイアログに追加するために使用した例です。

// Override the OnInit method to ensure our controls are added to the edit control
protected override void OnInit(EventArgs e)
{
    // Some code omitted for clarity
    ...

    // Reference our edit controls
    EditControl = Control as EditCustomFileSummary;
    UnifiedFile selectedFile = EditControl.SelectedFile;
    SaveButton = EditControl.FindControl("SaveButton") as ToolButton;

    // Hook into the save event so we can save the input from our custom controls
    SaveButton.Click += OnSaveButtonClick;

    ...
    _tagsControl.Text = selectedFile.Summary.Dictionary["Tags"].ToString();

    ...
    EditControl.Controls.Add(_tagsControl);
}

次に、カスタム フィールドをファイル サマリー プロパティのディクショナリ アイテムとして保存するために、サマリー ダイアログの「保存」コントロールによってトリガーされる保存イベントにフックすることができます。

public void OnSaveButtonClick(object sender, EventArgs e)
{
    // Get a reference to the current file and the summary data
    UnifiedFile selectedFile = EditControl.SelectedFile;

    // Get the tags added
    selectedFile.Summary.Dictionary["Tags"]  = _tagsControl.Text;
}

どのように、どのようなコントロールを追加するかは、もちろん、シナリオに適した方法で導出できます。

于 2014-05-22T12:44:50.460 に答える