using System; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.DocumentEngine; using CMS.UIControls; using CMS.ExtendedControls; using TreeNode = CMS.DocumentEngine.TreeNode; [Title("CMSModules/CMS_Content/Menu/Listing.png", "Content.ListingTitle", "list_tab")] public partial class CMSModules_Content_CMSDesk_View_Listing : CMSContentPage { #region "Variables" protected string editToolTip = null; protected string deleteToolTip = null; protected bool isAdvancedMode = false; #endregion #region "Page events" protected override void OnPreInit(EventArgs e) { // Disable permissions check CheckDocPermissions = false; base.OnPreInit(e); } protected override void OnInit(EventArgs e) { // Do not check changes DocumentManager.RegisterSaveChangesScript = false; base.OnInit(e); docList.Grid.GridName = "Listing.xml"; // Ensure dialog parameters string dialogParameter = String.Empty; if (RequiresDialog) { dialogParameter = "&dialog=1"; docList.Grid.GridName = "ListingDialog.xml"; } docList.NodeID = NodeID; docList.SelectItemJSFunction = "SelectItem"; docList.DeleteReturnUrl = "~/CMSModules/Content/CMSDesk/Delete.aspx?multiple=true" + dialogParameter; docList.PublishReturnUrl = "~/CMSModules/Content/CMSDesk/PublishArchive.aspx?multiple=true" + dialogParameter; docList.ArchiveReturnUrl = "~/CMSModules/Content/CMSDesk/PublishArchive.aspx?multiple=true" + dialogParameter; docList.TranslateReturnUrl = "~/CMSModules/Translations/Pages/TranslateDocuments.aspx" + dialogParameter.Replace("&", "?"); docList.RequiresDialog = RequiresDialog; } /// /// Page load. /// protected void Page_Load(object sender, EventArgs e) { CurrentUserInfo currentUserInfo = CMSContext.CurrentUser; string[,] actions = new string[1, 6]; if (!RequiresDialog) { ScriptHelper.RegisterScriptFile(this, @"~/CMSModules/Content/CMSDesk/View/Listing.js"); } if (docList.NodeID > 0) { TreeNode node = docList.Node; // Set edited document EditedDocument = node; if (node != null) { if (currentUserInfo.IsAuthorizedPerDocument(node, NodePermissionsEnum.ExploreTree) != AuthorizationResultEnum.Allowed) { RedirectToCMSDeskAccessDenied("CMS.Content", "exploretree"); } if (RequiresDialog) { ScriptHelper.RegisterScriptFile(this, @"~/CMSModules/Content/CMSDesk/View/ListingDialog.js"); // Set JavaScript for new button actions[0, 3] = "javascript:AddItem(" + node.NodeID + ");"; actions[0, 0] = HeaderActions.TYPE_HYPERLINK; actions[0, 1] = GetString("content.newtitle"); actions[0, 5] = GetImageUrl("CMSModules/CMS_Content/Listing/16/New.png"); CurrentMaster.Title.HelpTopicName = "ose_documents"; // Ensure breadcrumbs EnsureBreadcrumbs(node); } else { // Setup the link to the parent document if ((node.NodeClassName.ToLowerCSafe() != "cms.root") && (currentUserInfo.UserStartingAliasPath.ToLowerCSafe() != node.NodeAliasPath.ToLowerCSafe())) { actions[0, 0] = HeaderActions.TYPE_HYPERLINK; actions[0, 1] = GetString("Listing.ParentDirectory"); actions[0, 5] = GetImageUrl("CMSModules/CMS_Content/Listing/parent.png"); actions[0, 3] = "javascript:SelectItem(" + node.NodeParentID + ");"; } else { CurrentMaster.HeaderActions.Visible = false; CurrentMaster.PanelBody.FindControl("pnlActions").Visible = false; } } // Define target window for modal dialogs (used for mobile Android browser which cannot open more than one modal dialog window at a time). // If set: The target window will be used for opening the new dialog in the following way: targetWindow.location.href = '...new dialog url...'; // If not set: New modal dialog window will be opened string actionTargetWindow = "var targetWindow = " + (CMSContext.CurrentDevice.IsMobile ? "this" : "null"); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "listingScript", actionTargetWindow, true); } } CurrentMaster.HeaderActions.Actions = actions; } #endregion #region "Methods" /// /// Ensures dialog breadcrumbs /// /// Current node private void EnsureBreadcrumbs(TreeNode node) { if (node != null) { // Loop thru all levels and generate breadcrumbs string[,] breadcrumbs = new String[node.NodeLevel + 1, 4]; int parentNodeId = 0; for (int i = node.NodeLevel; i >= 0; i--) { if (node == null) { // Document is not translated in the current culture -> get parent node from the default culture TreeProvider treeProvider = new TreeProvider(); TreeNode parentNode = treeProvider.SelectSingleNode(parentNodeId, CultureCode, true); node = parentNode; } if (node != null) { breadcrumbs[i, 0] = DataHelper.GetNotEmpty(node.NodeName, CurrentSiteName); breadcrumbs[i, 1] = "#"; breadcrumbs[i, 3] = "SelectItem(" + node.NodeID + "); return false;"; parentNodeId = node.NodeParentID; node = node.Parent; } } // Set breadcrumb CurrentMaster.Title.Breadcrumbs = breadcrumbs; // Add additional css class for correct design CurrentMaster.PanelHeader.CssClass += " SimpleHeader"; } } #endregion }