Skip to content
David Kittell
David Kittell

Application & System: Development / Integration / Orchestration

  • Services
    • Application Development
    • Online Application Integration
  • Code
  • Online Tools
  • Tech Support
David Kittell

Application & System: Development / Integration / Orchestration

Ektron DMS File List

Posted on February 3, 2015October 26, 2015 By David Kittell

Following my code on Ektron – DMS Content List I created this Ektron Widget

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DMSFileList.aspx.cs" Inherits="widgets_DMSFileList" Debug="true" %>

<asp:MultiView ID="ViewSet" runat="server" ActiveViewIndex="0">

	<asp:View ID="View" runat="server">
		<asp:Label runat="server" ID="lblDMSList">DMS Files</asp:Label>
		<asp:ListView ID="lvDMSList" runat="server" ItemPlaceholderID="aspItemPlaceholder" Visible="false">
			<EmptyDataTemplate>
				<asp:Literal ID="litEmptyDataBasic" runat="server" Text="text" OnInit="litEmptyData_Init" />
			</EmptyDataTemplate>
			<LayoutTemplate>
				<div class="form" style="max-width: 650px;">
					<asp:PlaceHolder ID="aspItemPlaceholder" runat="server"></asp:PlaceHolder>
				</div>
			</LayoutTemplate>
			<ItemTemplate>
				<div style="vertical-align: text-top;">
					<a href="<%# Eval("QuickLink")%>"><%# sGetFileDetails(Eval("id").ToString(), 2)%> <%# Eval("Title")%></a>
				</div>
				<div class="clear"></div>
			</ItemTemplate>
			<AlternatingItemTemplate>
				<div style="vertical-align: text-top; background-color: lightgray;">
					<a href="<%# Eval("QuickLink")%>"><%# sGetFileDetails(Eval("id").ToString(), 2)%> <%# Eval("Title")%></a>
				</div>
				<div class="clear"></div>
			</AlternatingItemTemplate>
		</asp:ListView>
		<asp:ListView ID="lvDMSListDetailed" runat="server" ItemPlaceholderID="aspItemPlaceholder" Visible="false">
			<EmptyDataTemplate>
				<asp:Literal ID="litEmptyDataDetailed" runat="server" Text="text" OnInit="litEmptyData_Init" />
			</EmptyDataTemplate>
			<LayoutTemplate>
				<div class="form" style="max-width: 650px;">
					<asp:PlaceHolder ID="aspItemPlaceholder" runat="server"></asp:PlaceHolder>
				</div>
			</LayoutTemplate>
			<ItemTemplate>
				<div class="form_2Col floatLeft" style="vertical-align: text-top;">
					<a href="<%# Eval("QuickLink")%>"><%# sGetFileDetails(Eval("id").ToString(), 2)%> <%# Eval("Title")%></a>
					<br />
					<%# Eval("teaser")%>
				</div>
				<div class="form_2Col floatLeft" style="vertical-align: text-top;">
					<strong>Last Modified:</strong> <%# Eval("DateModified")%><br />
					<strong>File Size:</strong> <%# sGetFileSize(Eval("id").ToString()) %>
				</div>
				<div class="clear"></div>
			</ItemTemplate>
			<AlternatingItemTemplate>
				<div class="form_2Col floatLeft" style="vertical-align: text-top; background-color: lightgray;">
					<a href="<%# Eval("QuickLink")%>"><%# sGetFileDetails(Eval("id").ToString(), 2)%> <%# Eval("Title")%></a>
					<br />
					<%# Eval("teaser")%>
				</div>
				<div class="form_2Col floatLeft" style="vertical-align: text-top; background-color: lightgray;">
					<strong>Last Modified:</strong> <%# Eval("DateModified")%><br />
					<strong>File Size:</strong> <%# sGetFileSize(Eval("id").ToString()) %>
				</div>
				<div class="clear"></div>
			</AlternatingItemTemplate>
		</asp:ListView>
	</asp:View>
	<asp:View ID="Unauthorized" runat="server">
		<div id="UnauthorizedMessage" runat="server"></div>
	</asp:View>
	<asp:View ID="Edit" runat="server">
		<div id="<%=ClientID%>_edit">
			<asp:Label ID="EditDebug" runat="server" Visible="false" />

			Title For List:<br />
			<asp:TextBox ID="txtTitle" runat="server" Style="width: 95%" /><br />

			List Files From Folder:
            <br />
			<asp:DropDownList ID="ddlFolder" runat="server" Style="width: 95%" ToolTip="Select the folder to get files from">
				<asp:ListItem Text="-- Select One --" Value="" />
			</asp:DropDownList><br />

			Show Empty Widget:<br />
			<asp:DropDownList ID="ddlShowEmpty" runat="server" Style="width: 95%">
				<asp:ListItem Text="No" Value="No" />
				<asp:ListItem Text="Yes" Value="Yes" />
			</asp:DropDownList><br />

			Empty List Message:<br />
			<asp:TextBox ID="txtShowEmptyMessage" runat="server" TextMode="MultiLine" Style="height: 70px; width: 95%" /><br />

			Sort List By:<br />
			<asp:DropDownList ID="ddlSortList" runat="server" Style="width: 95%">
				<asp:ListItem Text="Title" Value="Title" />
				<asp:ListItem Text="Last Modified" Value="DateModified" />
			</asp:DropDownList><br />

			Sort Direction:<br />
			<asp:DropDownList ID="ddlSortDirection" runat="server" Style="width: 95%">
				<asp:ListItem Text="Ascending" Value="Ascending" />
				<asp:ListItem Text="Descending" Value="Descending" />
			</asp:DropDownList><br />

			Show File Details:<br />
			<asp:DropDownList ID="ddlDetails" runat="server" Style="width: 95%">
				<asp:ListItem Text="Yes" Value="Yes" />
				<asp:ListItem Text="No" Value="No" />
			</asp:DropDownList><br />

			<asp:Button ID="CancelButton" runat="server" Text="Cancel" OnClick="CancelButton_Click" />
			&nbsp;&nbsp;
                <asp:Button ID="SaveButton" runat="server" Text="Save" OnClick="SaveButton_Click" />
		</div>
	</asp:View>

</asp:MultiView>
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

using Ektron.Cms;
using Ektron.Cms.API;
using Ektron.Cms.Common;
using Ektron.Cms.Content;
using Ektron.Cms.Framework.Content;
using Ektron.Cms.Framework.Organization;
using Ektron.Cms.Framework;
using Ektron.Cms.Organization;
using Ektron.Cms.PageBuilder;
using Ektron.Cms.Widget;

public partial class widgets_DMSFileList : System.Web.UI.UserControl, IWidget
{
	#region properties
	private Ektron.Cms.Framework.Organization.FolderManager EkFolderManager = new Ektron.Cms.Framework.Organization.FolderManager(ApiAccessMode.Admin);
	private Ektron.Cms.API.User.User user = new Ektron.Cms.API.User.User();

	public string sUsername = "";

	#region List Title Config
	private string _sTitle;
	[WidgetDataMember("DMSFileList_Title")]
	public string sTitle { get { return _sTitle; } set { _sTitle = value; } }
	#endregion List Title Config

	#region Folder List Config
	private string _sFolder;
	[WidgetDataMember("DMSFileList_Folder")]
	public string sFolder { get { return _sFolder; } set { _sFolder = value; } }
	#endregion Folder List Config

	#region Empty List Config
	private string _ShowEmpty;
	[WidgetDataMember("DMSFileList_ShowEmpty")]
	public string sShowEmpty { get { return _ShowEmpty; } set { _ShowEmpty = value; } }

	private string _ShowEmptyMessage;
	[WidgetDataMember("DMSFileList_ShowEmptyMessage")]
	public string sShowEmptyMessage { get { return _ShowEmptyMessage; } set { _ShowEmptyMessage = value; } }
	#endregion Empty List Config

	#region List Sort Config
	private string _sSortList;
	[WidgetDataMember("DMSFileList_SortList")]
	public string sSortList { get { return _sSortList; } set { _sSortList = value; } }
	#endregion List Sort Config

	#region List Sort Direction Config
	private string _sSortDirection;
	[WidgetDataMember("DMSFileList_SortDirection")]
	public string sSortDirection { get { return _sSortDirection; } set { _sSortDirection = value; } }
	#endregion List Sort Direction Config

	#region List File Details Config
	private string _sShowDetails;
	[WidgetDataMember("DMSFileList_Details")]
	public string sShowDetails { get { return _sShowDetails; } set { _sShowDetails = value; } }
	#endregion List File Details Config

	#endregion

	IWidgetHost _host;
	protected ContentAPI m_refContentApi = new ContentAPI();
	protected EkMessageHelper m_refMsg;

	protected void Page_Init(object sender, EventArgs e)
	{
		//string sitepath = new CommonApi().SitePath;
		//JS.RegisterJSInclude(this, JS.ManagedScript.EktronJS);
		//JS.RegisterJSInclude(this, JS.ManagedScript.EktronModalJS);
		//Css.RegisterCss(this, Css.ManagedStyleSheet.EktronModalCss);
		_host = Ektron.Cms.Widget.WidgetHost.GetHost(this);
		m_refMsg = m_refContentApi.EkMsgRef;
		_host.Title = "DMS File List";
		_host.Edit += new EditDelegate(EditEvent);
		_host.Maximize += new MaximizeDelegate(delegate() { Visible = true; });
		_host.Minimize += new MinimizeDelegate(delegate() { Visible = false; });
		_host.Create += new CreateDelegate(delegate() { EditEvent(""); });
		CancelButton.Text = m_refMsg.GetMessage("btn cancel");
		SaveButton.Text = m_refMsg.GetMessage("btn save");

		PreRender += new EventHandler(delegate(object PreRenderSender, EventArgs Evt) { SetOutput(); });
		ViewSet.SetActiveView(View);

		long nFolderInt;
		try
		{
			nFolderInt = Convert.ToInt64(sFolder);
		}
		catch
		{
			nFolderInt = 0;
		}

		if (nFolderInt > 0)
		{
			lblDMSList.Text = "<h2>" + sTitle + "</h2>";
			LoadDMSList(nFolderInt);
		}
		else
		{
			//  ViewSet.SetActiveView(Unauthorized);
		}

	}

	void EditEvent(string settings)
	{
		FolderList(0);

		//EditDebug.Text = "sFolder: " + sFolder + "<br/>";
		//EditDebug.Visible = true;

		txtTitle.Text = sTitle;

		if (sFolder != "DMSFileList_Folder")
		{
			ddlFolder.SelectedValue = sFolder;
		}

		if (sShowEmpty != "DMSFileList_ShowEmpty")
		{
			ddlShowEmpty.SelectedValue = sShowEmpty;
		}

		txtShowEmptyMessage.Text = sShowEmptyMessage;

		if (sSortList != "DMSFileList_SortList")
		{
			ddlSortList.SelectedValue = sSortList;
		}

		if (sSortDirection != "DMSFileList_SortDirection")
		{
			ddlSortDirection.SelectedValue = sSortDirection;
		}

		if (sShowDetails != "DMSFileList_Details")

		{
			ddlDetails.SelectedValue = sShowDetails;
		}

		ViewSet.SetActiveView(Edit);
	}

	protected void SaveButton_Click(object sender, EventArgs e)
	{
		sTitle = txtTitle.Text;
		sFolder = ddlFolder.SelectedValue;

		sShowEmpty = ddlShowEmpty.SelectedValue;

		sShowEmptyMessage = txtShowEmptyMessage.Text;

		sShowDetails = ddlDetails.SelectedValue;
		sSortList = ddlSortList.SelectedValue;
		sSortDirection = ddlSortDirection.SelectedValue;

		_host.SaveWidgetDataMembers();
		ViewSet.SetActiveView(View);
	}

	protected void SetOutput()
	{

	}

	protected void CancelButton_Click(object sender, EventArgs e)
	{
		ViewSet.SetActiveView(View);
	}

	protected void LoadDMSList(long folderID)
	{
		try
		{
			AssetManager assetManager = new AssetManager();
			AssetCriteria criteria = new AssetCriteria();

			criteria.AddFilter(AssetProperty.FolderId, CriteriaFilterOperator.EqualTo, folderID);

			switch (sSortList)
			{
				case "Title":
				default:
					criteria.OrderByField = AssetProperty.Title;
					break;
				case "DateModified":
					criteria.OrderByField = AssetProperty.DateModified;
					break;
			}

			//criteria.OrderByField = AssetProperty.Title;
			//criteria.OrderByField = AssetProperty.Title;

			switch (sSortDirection)
			{
				case "Ascending":
					criteria.OrderByDirection = EkEnumeration.OrderByDirection.Ascending;
					break;
				case "Descending":
					criteria.OrderByDirection = EkEnumeration.OrderByDirection.Descending;
					break;
				default:
					criteria.OrderByDirection = EkEnumeration.OrderByDirection.Ascending;
					break;
			}

			// Only Show Published documents
			criteria.AddFilter(AssetProperty.Status, CriteriaFilterOperator.EqualTo, "A");

			List<ContentAssetData> contentAssetDataList = assetManager.GetList(criteria);

			// If documents exist display the header and list the files
			if (sShowDetails == "Yes")
			{
				lvDMSListDetailed.DataSource = contentAssetDataList;
				lvDMSListDetailed.DataBind();

				if (sShowEmpty == "No" && lvDMSListDetailed.Items.Count.ToString() == "0")
				{
					lblDMSList.Visible = false;
				}
				else
				{
					// If details are desired render the details list
					lvDMSList.Visible = false;
					lvDMSListDetailed.Visible = true;
				}
			}
			else
			{
				lvDMSList.DataSource = contentAssetDataList;
				lvDMSList.DataBind();

				if (sShowEmpty == "No" && lvDMSList.Items.Count.ToString() == "0")
				{
					lblDMSList.Visible = false;
				}
				else
				{
					// If details are not desired render the basic list
					lvDMSListDetailed.Visible = false;
					lvDMSList.Visible = true;
				}
			}
			ViewSet.SetActiveView(View);
		}
		catch (Exception ex)
		{
			UnauthorizedMessage.InnerHtml = ex.Message;
			ViewSet.SetActiveView(Unauthorized);
		}

		#region Available Options
		/*
         * id
         * Title
         * FolderId
         * ContType
         * Type
         * SubType
         * DateCreated
         * DateModified
         * QuickLink
         * Status
         * teaser
         */
		#endregion Available Options
	}


	protected void litEmptyData_Init(object sender, EventArgs e)
	{
		(sender as Literal).Text = sShowEmptyMessage;
	}

	protected string sGetFileDetails(string sAssetID, int nOption)
	{
		//Get the Asset data for given Content ID
		var AssetCRUD = new AssetManager(Ektron.Cms.Framework.ApiAccessMode.Admin);
		var asset = AssetCRUD.GetItem(Convert.ToInt64(sAssetID), false);

		switch (nOption)
		{
			default:
			case 1:
				return asset.AssetData.FileName;
				break;
			case 2:
				return asset.AssetData.Icon;
				break;
		}
	}

	public string sGetFileSize(string assetid)
	{
		string sFileSize = "";
		Ektron.Cms.ContentAPI content_api = new Ektron.Cms.ContentAPI();

		long lCallerId = content_api.RequestInformationRef.CallerId;
		content_api.RequestInformationRef.CallerId = (long)Ektron.Cms.Common.EkEnumeration.UserGroups.InternalAdmin;

		Ektron.Cms.ContentData content_data = null;
		content_data = content_api.GetContentById(Convert.ToInt64(assetid), 0);
		content_data = content_api.ShowContentById(Convert.ToInt64(assetid), content_api.CmsPreview, System.Convert.ToBoolean(!content_api.CmsPreview));
		string filepath;
		AssetData _assetData = new AssetData();


		filepath = Page.Server.MapPath((string)(content_api.EkContentRef.GetViewUrl(Convert.ToInt32(content_data.Type), content_data.AssetData.Id).Replace(Page.Request.Url.Scheme + "://" + Page.Request.Url.Authority, "").Replace(":443", "").Replace(":80", "")));

		try
		{
			FileInfo fi = new FileInfo(filepath);

			sFileSize = FormatBytes(fi.Length);
		}
		catch
		{ }

		content_api.RequestInformationRef.CallerId = lCallerId;

		return sFileSize;


	}

	public string FormatBytes(long bytes)
	{
		const int scale = 1024;
		string[] orders = new string[] { "GB", "MB", "KB", "Bytes" };
		long max = (long)Math.Pow(scale, orders.Length - 1);

		foreach (string order in orders)
		{
			if (bytes > max)
				return string.Format("{0:##.##} {1}", decimal.Divide(bytes, max), order);

			max /= scale;
		}
		return "0 Bytes";
	}

	private void FolderList(long folderId)
	{
		try
		{
			//Get a list of child folders
			List<long> FolderIdList = GetChildFolderIDs(folderId, true);

			//Get a list of folder objects
			Ektron.Cms.FolderCriteria fcriteria = new FolderCriteria();
			fcriteria.AddFilter(FolderProperty.Id, CriteriaFilterOperator.In, FolderIdList);
			fcriteria.PagingInfo = new PagingInfo(2000, 1);
			fcriteria.OrderByField = FolderProperty.FolderPath;
			//fcriteria.OrderByField = FolderProperty.Id;
			fcriteria.OrderByDirection = EkEnumeration.OrderByDirection.Ascending;

			List<FolderData> folderList = EkFolderManager.GetList(fcriteria);

			//Loop over the folder list, and generate the menus. Build dictionary list of folder to menu ids
			foreach (FolderData folder in folderList)
			{
				ddlFolder.Items.Add(new ListItem(folder.NameWithPath, folder.Id.ToString()));
			}
			ddlFolder.DataBind();

		}
		catch (Exception ex)
		{
		}
	}

	public static List<long> GetChildFolderIDs(long FolderID, bool Recursive)
	{
		Ektron.Cms.Framework.Organization.FolderManager EkFolderManager = new Ektron.Cms.Framework.Organization.FolderManager(ApiAccessMode.Admin);
		List<long> folderIDs = new List<long>();
		Ektron.Cms.FolderCriteria criteria = new FolderCriteria();
		criteria.AddFilter(Ektron.Cms.Common.FolderProperty.ParentId, Ektron.Cms.Common.CriteriaFilterOperator.EqualTo, FolderID);
		criteria.PagingInfo.RecordsPerPage = 500;
		List<Ektron.Cms.FolderData> childFolders = EkFolderManager.GetList(criteria);

		if (childFolders != null)
		{
			foreach (var childFolder in childFolders)
			{
				if (childFolder.Id > 0)
				{
					if (!folderIDs.Contains(childFolder.Id))
					{
						folderIDs.Add(childFolder.Id);
					}

					if (Recursive && childFolder.HasChildren)
					{
						folderIDs = folderIDs.Union(GetChildFolderIDs(childFolder.Id, Recursive)).ToList();
					}
				}
			}
		}

		return (from ids in folderIDs orderby ids select ids).ToList();
	}

}
Originally Posted on February 3, 2015
Last Updated on October 26, 2015
All information on this site is shared with the intention to help. Before any source code or program is ran on a production (non-development) system it is suggested you test it and fully understand what it is doing not just what it appears it is doing. I accept no responsibility for any damage you may do with this code.

Related

C# Ektron Code

Post navigation

Previous post
Next post

Related Posts

Count/Limit characters in a textbox using Javascript

Posted on July 15, 2013October 26, 2015

<html> <head> <script type="text/javascript" src="/js/jquery-1.9.1.js"></script> <script type="text/javascript" src="/js/jquery.limit2.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#text").limita({ limit: 100, id_result: "counter", alertClass: "alert" }); }); </script> </head> <body> <form id="input_form" method="POST" action="?"> <textarea id="text" rows="4" cols="49"></textarea> <input type="submit" value="submit"> </form> <div id="counter"></div> </body> </html> (function($){ $.fn.limita = function(options) { var defaults = { limit:…

Read More

WordPress – Ninja Forms – Disable Form Saves

Posted on December 18, 2015December 21, 2015

If you have a concern about PHI or other concerns of saving data on your SQL database of the Ninja Forms follow the step on their site http://docs.ninjaforms.com/customer/en/portal/articles/2045697-faq#faq_save on the save-sub.php file. The save-sub.php location may vary based on your operating system but if you are on a UNIX based…

Read More

Pageview – Quick Report

Posted on October 14, 2013October 26, 2015

SELECT ( SELECT [projectname] FROM [tblRIMicroSite_Forms] WHERE CHARINDEX([tblRIMicroSite_Forms].[url], pv.[url]) > 0 ) AS Project ,dbo.fnFormatDate([datetime], ‘MM-DD-YYYY HH:NN AMPM’, NULL) AS [DateTime] ,[ipaddress] AS ‘IP Address’ ,[ipint] AS ‘IP Int’ ,[IPLocation] AS ‘IP Location’ ,[mobile] AS ‘Mobile’ ,( CASE WHEN ( SELECT url FROM [tblRIMicroSite_Forms] WHERE CHARINDEX([tblRIMicroSite_Forms].[url], pv.[url]) > 0 )…

Read More

Code

Top Posts & Pages

  • PowerShell - Rename Pictures to Image Taken
  • Front Page
  • C# - Start/Stop/Restart Services
  • MacPorts / HomeBrew - Rip CD tracks from terminal
  • PowerShell - Show File Extensions

Recent Posts

  • Javascript – Digital Clock with Style
  • BASH – Web Ping Log
  • BASH – Picture / Video File Name Manipulation
  • Mac OSX Terminal – Create SSH Key
  • Bash – Rename Picture

Top Posts

  • PowerShell - Rename Pictures to Image Taken
  • C# - Start/Stop/Restart Services
  • MacPorts / HomeBrew - Rip CD tracks from terminal
  • PowerShell - Show File Extensions
  • Open On Screen Keyboard (OSK)
  • SQLite - Auto-Increment / Auto Generate GUID
©2025 David Kittell | WordPress Theme by SuperbThemes