Добавьте MediaPicker в общие настройки сайта

Текущий проект, над которым я работаю, использует сайты арендаторов. Для каждого сайта нам нужна возможность изменять логотип на сайте арендатора, изменяя его настройки (на странице администратора, настройки > общие).

Я добавил два текстовых поля в настройки сайта, следуя этому хорошо документированному руководству . Тем не менее, я бы хотел, чтобы пользователь мог выбирать логотипы с помощью средства выбора мультимедиа, а не вводить путь.

В настоящее время у меня есть часть 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; }
    }
}

person Justin Self    schedule 26.03.2013    source источник
comment
есть новости здесь? :) Я пытался добавить MediaLibraryPickerField в свои пользовательские настройки сайта, но шаблон поля вообще не отображается.   -  person teran    schedule 23.01.2015
comment
@teran Извините, но я не помню. К сожалению, это было несколько несколько проектов назад.   -  person Justin Self    schedule 23.01.2015
comment
да, это было почти 2 года назад :) все равно спасибо! :) я разместил новый вопрос, потому что эти настройки были переработаны в v1.8. Если вы вспомните это позже, пожалуйста, дайте мне знать :)   -  person teran    schedule 23.01.2015


Ответы (1)


MediaPicker вызывается через Javascript, поэтому вам не нужно изменять какие-либо классы вашей модели. Когда MediaPicker загружается для страницы, он устанавливает обработчик событий jQuery для всех элементов формы на странице. Запуск события orchard-admin-pickimage-open откроет MediaPicker. Предоставьте функцию обратного вызова для захвата выбранного носителя.

Вот краткий пример, который вы можете запустить в Firebug или Chrome Developer Tools со страницы, на которой загружен MediaPicker, например, из редактора страниц:

$('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

Редактор BodyPart интегрирует MediaPicker Orchard с TinyMce, так что вы можете начать изучать этот модуль для получения более полного примера, в частности Modules\TinyMce\Scripts\plugins\mediapicker\editor_plugin_src.js.

person mdm    schedule 03.04.2013