Откройте медиатеку sitecore программно, нажав кнопку asp.net - PullRequest
4 голосов
/ 06 февраля 2012

Я пытался выяснить, можно ли программно открыть браузер библиотеки мультимедиа Sitecore из кода ASP.NET, нажав кнопку на стороне сервера.В поиске в сети я нашел пример, в котором объясняется, как открыть браузер медиатеки с помощью миниатюры Sitecore.Я попробовал этот подход при нажатии кнопки на стороне сервера ASP.NET, но он не сработал при object reference not set to an instance of an object.

Может кто-нибудь помочь мне, если вы знаете, как открыть браузер мультимедиа Sitecore в модальном диалоговом окне нажатием кнопки на стороне сервера?

Мой код:

protected void btnShowMediaPopup_Click(object sender, EventArgs e)
{
    Database masterDb = Factory.GetDatabase("master");
    UrlString url = new UrlString(UIUtil.GetUri("control:Sitecore.Shell.Applications.Media.MediaBrowser"));

    Item folderItem = masterDb.GetItem("/sitecore/media library/Images");
    url["ro"] = folderItem.Uri.ToString();

    SheerResponse.ShowModalDialog(url.ToString(), true);   
}

1 Ответ

1 голос
/ 07 февраля 2012

Я нашел решение.Шаги следующим образом:

a.Создан файл конфигурации "MediaBrowser.config" и добавлен в папку App_Config / Include (ниже приведен XML-файл конфигурации):

<configuration xmlns:patch= "http://www.sitecore.net/xmlconfig/">
  <sitecore>
      <commands>
          <command name="example:MediaBrowser" type="SitecoreTraining.HelperClasses.MediaBrowser,SitecoreTraining" />
      </commands>
  </sitecore>
</configuration>

b.В мою разметку элемента управления ascx добавлено следующее, чтобы открыть медиабраузер:

<A class="scChromeCommand" title="Open Media Browser" onclick="javascript:Sitecore.PageModes.ChromeManager.postRequest('example:MediaBrowser(id=<%# Sitecore.Context.Item.ID.ToString() %>)',null,false)" href="#"><IMG alt="Open Media Browser" src="http://localhost:2438/temp/IconCache/applications/16x16/photo_scenery.png" width="16" height="16" /></A>

c.Создан класс MediaBrowser, который наследует класс команд sitecore со следующими основными методами:

public override void Execute (контекст CommandContext) {

        Item item = context.Items.Length == 0 ? Context.Item : context.Items[0];
        contextItem = item;

        var parameters = new NameValueCollection();

        wizardPipeline = Context.ClientPage.Start(this, "Run", parameters);
    }

защищенный виртуальный void Run (ClientPipelineArgs)args) {

        Database  masterDb = Factory .GetDatabase("master");      
        if  (args.IsPostBack)     
        {         
            var itemID = args.Result;   
        }     
        else      
        {         
            UrlString  url = new  UrlString (UIUtil .GetUri("control:Sitecore.Shell.Applications.Media.MediaBrowser" ));  

            Item  folderItem = masterDb.GetItem("/sitecore/media library/Images" );         
            url["ro" ] = folderItem.Uri.ToString();                  
            SheerResponse.ShowModalDialog(url.ToString(), true );         
            args.WaitForPostBack(true );     
        }
    }
...