Open sitecore media library programmatically from asp.net button click

前端 未结 1 734
伪装坚强ぢ
伪装坚强ぢ 2020-12-21 04:15

I have been trying to figure out if it is possible to open the Sitecore media library browser programmatically from ASP.NET code-behind on a server-side button click. By sea

相关标签:
1条回答
  • 2020-12-21 05:02

    I found a solution. Steps as follows:

    a. Created config file "MediaBrowser.config" and added into folder App_Config/Include (configuration xml below):

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

    b. In my ascx control markup added the following to open the media browser:

    <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. Created a MediaBrowser class that inherits the sitecore Command class with the following main methods used:

    public override void Execute(CommandContext context) {

            Item item = context.Items.Length == 0 ? Context.Item : context.Items[0];
            contextItem = item;
    
            var parameters = new NameValueCollection();
    
            wizardPipeline = Context.ClientPage.Start(this, "Run", parameters);
        }
    

    protected virtual 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 );     
            }
        }
    
    0 讨论(0)
提交回复
热议问题