using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Text; using CMS.UIControls; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.DocumentEngine; using CMS.WorkflowEngine; using CMS.SiteProvider; using TreeNode = CMS.DocumentEngine.TreeNode; public partial class CMSModules_Content_CMSDesk_Properties_Alias_AliasList : CMSModalPage { protected override void OnInit(EventArgs e) { // Check site availability if (!ResourceSiteInfoProvider.IsResourceOnSite("CMS.Content", CMSContext.CurrentSiteName)) { RedirectToResourceNotAvailableOnSite("CMS.Content"); } // Check security for content and properties tab CMSPropertiesPage.CheckPropertiesSecurity(); CMSContentPage.CheckSecurity(); base.OnInit(e); } protected void Page_Load(object sender, EventArgs e) { // Init unigrid ugAlias.WhereCondition = SqlHelperClass.AddWhereCondition(ugAlias.WhereCondition, "AliasSiteID =" + CMSContext.CurrentSiteID); ugAlias.Columns = "AliasID,NodeName,SiteName,AliasCulture AS DocumentCulture,AliasUrlPath,ClassName,AliasExtensions,NodeACLID,NodeSiteID,NodeOwner,NodeAliasPath,CampaignDisplayName"; ugAlias.Query = "CMS.DocumentAlias.SelectAllNodes"; ugAlias.OnAction += UniGridAlias_OnAction; ugAlias.OnExternalDataBound += UniGridAlias_OnExternalDataBound; ugAlias.OnAfterRetrieveData += ugAlias_OnAfterRetrieveData; // Initialize page title string urlsTitle = GetString("Properties.Urls"); string urlsUrl = "~/CMSModules/Content/CMSDesk/Properties/Alias_List.aspx?nodeid=" + NodeID; string managementTitle = GetString("doc.urls.aliaslist"); CurrentMaster.Title.TitleText = GetString("doc.urls.aliaslist"); CurrentMaster.Title.TitleImage = GetImageUrl("CMSModules/CMS_Content/Menu/New.png"); // Set help topic name CurrentMaster.Title.HelpName = "helpTopic"; CurrentMaster.Title.HelpTopicName = "alias_management"; btnClose.Text = GetString("general.close"); // Register tooltip script ScriptHelper.RegisterTooltip(Page); } DataSet ugAlias_OnAfterRetrieveData(DataSet ds) { // Filter dataset - show only aliases of documents that are visible for current user ds = TreeSecurityProvider.FilterDataSetByPermissions(ds, NodePermissionsEnum.Read, CMSContext.CurrentUser); return ds; } private void UniGridAlias_OnAction(string actionName, object actionArgument) { // Manage edit and delete int aliasID = ValidationHelper.GetInteger(actionArgument, 0); string action = DataHelper.GetNotEmpty(actionName, String.Empty).ToLowerCSafe(); TreeProvider tree = new TreeProvider(CMSContext.CurrentUser); DocumentAliasInfo dai = DocumentAliasInfoProvider.GetDocumentAliasInfo(aliasID); if (dai != null) { // Find node TreeNode node = tree.SelectSingleNode(dai.AliasNodeID); if (node != null) { // Check modify permissions if (CMSContext.CurrentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Denied) { return; } // Edit only if node exists if (action == "edit") { URLHelper.Redirect("Alias_Edit.aspx?nodeid=" + node.NodeID + "&aliasid=" + aliasID + "&defaultNodeID=" + NodeID + "&management=1"); } } // Delete even if node does not exist if (action == "delete") { if (aliasID > 0) { // Delete DocumentAliasInfoProvider.DeleteDocumentAliasInfo(aliasID); // Log synchronization DocumentSynchronizationHelper.LogDocumentChange(node, TaskTypeEnum.UpdateDocument, tree); } } } } protected object UniGridAlias_OnExternalDataBound(object sender, string sourceName, object parameter) { sourceName = sourceName.ToLowerCSafe(); switch (sourceName) { case "culture": return UniGridFunctions.CultureDisplayName(parameter); case "documentname": { DataRowView data = (DataRowView)parameter; // Use class name for icon string className = ValidationHelper.GetString(data["ClassName"], string.Empty); // Document name string name = ValidationHelper.GetString(data["NodeName"], string.Empty); // Document alias path string aliasPath = ValidationHelper.GetString(DataHelper.GetDataRowViewValue(data, "NodeAliasPath"), String.Empty); // Create tooltip string String tooltip = "" + HTMLHelper.HTMLEncode(name) + "" + (String.IsNullOrEmpty(aliasPath) ? "" : "
" + ResHelper.GetString("general.path") + ": " + HTMLHelper.HTMLEncode(aliasPath)); String imageUrl = ResolveUrl(GetDocumentTypeIconUrl(className)); StringBuilder sb = new StringBuilder(); sb.Append( "", HTMLHelper.HTMLEncode(TextHelper.LimitLength(name, 50)), "" ); return sb.ToString(); } } return parameter; } public string DataHelperClass { get; set; } }