using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClientDependency.Core;
using umbraco.BasePages;
using umbraco.BusinessLogic;
using umbraco.IO;
using umbraco.cms.businesslogic.media;
namespace Umbraco.Web.UI.Controls
{
[ClientDependency(ClientDependencyType.Css, "ContextMenu/Css/jquery.contextMenu.css", "UmbracoClient")]
[ClientDependency(ClientDependencyType.Css, "FolderBrowser/Css/folderbrowser.css", "UmbracoClient")]
[ClientDependency(ClientDependencyType.Javascript, "ui/jquery.js", "UmbracoClient", Priority = 1)]
[ClientDependency(ClientDependencyType.Javascript, "ui/base2.js", "UmbracoClient", Priority = 1)]
[ClientDependency(ClientDependencyType.Javascript, "ui/knockout.js", "UmbracoClient", Priority = 2)]
[ClientDependency(ClientDependencyType.Javascript, "ui/knockout.mapping.js", "UmbracoClient", Priority = 3)]
[ClientDependency(ClientDependencyType.Javascript, "ContextMenu/Js/jquery.contextMenu.js", "UmbracoClient", Priority = 3)]
[ClientDependency(ClientDependencyType.Javascript, "FileUploader/js/jquery.fileUploader.js", "UmbracoClient", Priority = 4)]
[ClientDependency(ClientDependencyType.Javascript, "FolderBrowser/js/folderbrowser.js", "UmbracoClient", Priority = 10)]
[ToolboxData("<{0}:FolderBrowser runat=server>{0}:FolderBrowser>")]
public class FolderBrowser : WebControl
{
protected Panel panel;
protected int ParentId
{
get
{
// Try and parse from querystring
if(!string.IsNullOrEmpty(Context.Request.QueryString["id"]))
{
int id;
if(Int32.TryParse(Context.Request.QueryString["id"], out id))
return id;
}
// Get users root media folder id
var currentUser = UmbracoEnsuredPage.CurrentUser;
if (currentUser != null)
return currentUser.StartMediaId;
// Nothing else to check so just return -1
return -1;
}
}
protected global::umbraco.cms.businesslogic.media.Media ParentNode
{
get
{
return new global::umbraco.cms.businesslogic.media.Media(ParentId);
}
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
EnsureChildControls();
//disable view state for this control
this.EnableViewState = false;
}
///
/// Create the native .net child controls for this control
///
protected override void CreateChildControls()
{
// Create the panel surround
panel = new Panel
{
ID = "FolderBrowser",
CssClass = "umbFolderBrowser"
};
panel.Attributes.Add("data-parentid", ParentId.ToString());
var sb = new StringBuilder();
// Create the breadcrumb
var breadCrumb = new List();
breadCrumb.Add(ParentNode);
var parent = ParentNode;
while(parent.Id != -1)
{
parent = new global::umbraco.cms.businesslogic.media.Media(parent.ParentId);
breadCrumb.Add(parent);
}
breadCrumb.Reverse();
sb.Append("
You are here:
");
foreach (var media in breadCrumb)
{
if(media.Id == ParentId)
if (media.Id == -1)
sb.AppendFormat("
Media
");
else
sb.AppendFormat("
{0}
", media.Text);
else
if (media.Id == -1)
sb.AppendFormat("