using System; using System.Data; using System.Configuration; using System.Collections; using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using ScrewTurn.Wiki.PluginFramework; namespace ScrewTurn.Wiki { public partial class AttachmentViewer : System.Web.UI.UserControl { private PageInfo pageInfo; protected void Page_Load(object sender, EventArgs e) { if(!Page.IsPostBack) { rptItems.DataBind(); } } /// /// Gets or sets the PageInfo object. /// /// This property must be set at page load. public PageInfo PageInfo { get { return pageInfo; } set { pageInfo = value; } } protected void rptItems_DataBinding(object sender, EventArgs e) { if(pageInfo == null) return; // Build a DataTable containing the proper information DataTable table = new DataTable("Items"); table.Columns.Add("Name"); table.Columns.Add("Size"); table.Columns.Add("Link"); foreach(IFilesStorageProviderV30 provider in Collectors.FilesProviderCollector.AllProviders) { string[] attachments = provider.ListPageAttachments(pageInfo); foreach(string s in attachments) { DataRow row = table.NewRow(); row["Name"] = s; row["Size"] = Tools.BytesToString(provider.GetPageAttachmentDetails(pageInfo, s).Size); row["Link"] = "GetFile.aspx?File=" + Tools.UrlEncode(s).Replace("'", "'") + "&AsStreamAttachment=1&Provider=" + provider.GetType().FullName + "&IsPageAttachment=1&Page=" + Tools.UrlEncode(pageInfo.FullName); table.Rows.Add(row); } } rptItems.DataSource = table; } } }