2

私が現在取り組んでいるプロジェクトは、テナント サイトの活用です。各サイトで、その設定を変更することにより、テナント サイト全体でロゴを変更する機能が必要です (管理ページで、設定 > 一般)。

この十分に文書化されたチュートリアルに従って、サイト設定に 2 つのテキスト フィールドを追加しました。ただし、ユーザーがパスを入力する代わりに、メディア ピッカーを使用してロゴを選択できるようにしたいと考えています。

現在、レコード、ドライバー、およびハンドラーを含む LogoBarSettings パーツがあります。メディア ピッカーを LogoBarSettings に追加する方法がわかりません。追加した場合でも、別のハンドラー、ドライバー、およびレコードを作成する必要がありますか? 想像できませんが、この時点でかなり行き詰まっています。

誰かがこれについて何らかの方向性を提供できますか?

ここに私のLogoBarSettingsがあります

public class LogoBarSettings : ContentPart<LogoBarSettingsPartRecord>
{
    public string ImageUrl
    {
        get { return Record.ImageUrl; }
        set { Record.ImageUrl = value; }
    }

    public string ImageAltText
    {
        get { return Record.ImageAltText; }
        set { Record.ImageAltText = value; }
    }
}
4

1 に答える 1

0

MediaPicker は Javascript を介して呼び出されるため、モデル クラスを変更する必要はありません。ページの MediaPicker が読み込まれると、ページ上のすべてのフォーム要素に対して jQuery イベント ハンドラーがセットアップされます。イベントをトリガーするorchard-admin-pickimage-openと、MediaPicker が開きます。選択したメディアをキャプチャするコールバック関数を提供します。

ページ エディターなど、MediaPicker が読み込まれたページから Firebug または Chrome 開発者ツールで実行できる簡単な例を次に示します。

$('form').trigger("orchard-admin-pickimage-open", { 
    callback: function(data) { 
        console.log(data); 
}})

これにより、次のようなものが出力されます。

Object {img: Object}
    img: Object
        align: ""
        alt: ""
        class: ""
        height: "64"
        html: "<img src="/Media/Default/images/test.jpg" alt="" width="64" height="64"/>"
        src: "/Media/Default/images/test.jpg"
        style: ""
        width: "64"
    __proto__: Object
__proto__: Object

エディターはBodyPartOrchard の MediaPicker を TinyMce と統合しているため、そのモジュールを見て、より完全な例、具体的にはModules\TinyMce\Scripts\plugins\mediapicker\editor_plugin_src.js.

于 2013-04-03T15:29:32.557 に答える