/// <summary> /// Raises the callback event. /// </summary> public void RaiseCallbackEvent(string eventArgument) { string[] argumentParts = eventArgument.Split(';'); if (argumentParts.Length > 0) { string action = argumentParts[0]; switch (action) { // Get edit page url (also consider custom document type urls) case "editurl": { int nodeId = ValidationHelper.GetInteger(argumentParts[1], 0); // Prepare url retriever settings UIPageURLSettings settings = new UIPageURLSettings(); settings.AllowSplitview = false; settings.NodeID = nodeId; settings.AdditionalQuery = "dialog=1"; settings.Mode = "editform"; settings.Action = null; settings.Culture = preferredCultureCode; // Get edit page url callbackResult = DocumentUIHelper.GetDocumentPageUrl(settings); } break; } } }
protected void Page_Load(object sender, EventArgs e) { string url = QueryHelper.GetString("splitUrl", null); if (!string.IsNullOrEmpty(url) && UIContext.DisplaySplitMode) { // Register script files ltlScript.Text += ScriptHelper.GetScriptTag("~/CMSModules/Content/CMSDesk/SplitView.js"); // Decode URL url = HttpUtility.UrlDecode(url); docSplitView.NodeID = ValidationHelper.GetInteger(URLHelper.GetQueryValue(url, "nodeid"), 0); docSplitView.Culture = ValidationHelper.GetString(URLHelper.GetQueryValue(url, "culture"), null); // Update view mode (e.g. to remember edit tabs) PortalContext.UpdateViewMode(PortalContext.ViewMode); // Set frame1 URL docSplitView.Frame1Url = url; // Get the URL of the compare frame UIPageURLSettings settings = new UIPageURLSettings { Mode = Mode, NodeID = NodeID, Culture = UIContext.SplitModeCultureCode, SplitViewSourceURL = url, TransformToCompareUrl = true }; // Get URL docSplitView.Frame2Url = DocumentUIHelper.GetDocumentPageUrl(settings); StringBuilder script = new StringBuilder(); script.Append( @" function InitSplitViewSyncScroll(frameElement, body, refreshSameCulture, unbind) { if (InitSyncScroll) { InitSyncScroll(frameElement, body, refreshSameCulture, unbind); } } function SplitModeRefreshFrame() { if (FSP_SplitModeRefreshFrame) { FSP_SplitModeRefreshFrame(); } } var FSP_appPref = '", URLHelper.GetFullApplicationUrl(), @"'; var FSP_cntPref = '", ScriptPrefix, @"'; "); ScriptHelper.RegisterStartupScript(Page, typeof(string), "splitViewSync_" + Page.ClientID, script.ToString(), true); } }
/// <summary> /// Callback event handler. /// </summary> /// <param name="argument">Callback argument</param> public void RaiseCallbackEvent(string eventArgument) { if (String.IsNullOrEmpty(eventArgument)) { return; } var parts = eventArgument.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length == 2) { mNodePreviewUrl = DocumentUIHelper.GetDocumentPageUrl(new UIPageURLSettings { NodeID = ValidationHelper.GetInteger(parts[0], 0), Culture = parts[1], Mode = ViewModeEnum.Preview.ToString(), AllowViewValidate = false, }); } mNodePreviewUrl = mNodePreviewUrl ?? DocumentUIHelper.GetPageNotAvailableUrl(); }
/// <summary> /// Returns URL of modal dialog for creating new page. /// </summary> private string GetCreateNewPageDialogUrl() { var path = SettingsKeyInfoProvider.GetValue("CMSCampaignNewPageLocation", SiteContext.CurrentSiteName); var tree = new TreeProvider(MembershipContext.AuthenticatedUser); var node = tree.SelectSingleNode(SiteContext.CurrentSiteName, path, SiteContext.CurrentSite.DefaultVisitorCulture, true); if (node == null) { node = tree.SelectSingleNode(SiteContext.CurrentSiteName, "/", SiteContext.CurrentSite.DefaultVisitorCulture, true); } // General url settings var settings = new UIPageURLSettings { AllowSplitview = false, NodeID = node.NodeID, Culture = node.DocumentCulture, Action = "new", AdditionalQuery = "dialog=1&action=new&hidecontentonly=true" }; return(DocumentUIHelper.GetDocumentPageUrl(settings)); }
/// <summary> /// Fires when a tab is created /// </summary> private void OnTabCreated(object sender, TabCreatedEventArgs e) { if (e.Tab == null) { return; } string mode = null; var element = e.UIElement; // Hides UI element if it is not relevant for edited node if (DocumentUIHelper.IsElementHiddenForNode(element, Node)) { e.Tab = null; return; } switch (element.ElementName.ToLowerInvariant()) { case "page": case "pagemvc": { mode = "edit"; } break; case "design": { if (!showDesign) { e.Tab = null; return; } mode = "design"; } break; case "editform": // Keep edit form { mode = "editform"; } break; case "product": { if (!showProductTab) { e.Tab = null; return; } mode = "product"; } break; case "masterpage": { if (!showMasterPage) { e.Tab = null; return; } mode = "masterpage"; } break; case "properties": { // Document properties mode = "properties"; } break; case "analytics": { mode = "analytics"; } break; } if (Node != null) { var tab = e.Tab; var settings = new UIPageURLSettings { Mode = mode, Node = Node, NodeID = Node.NodeID, Culture = Node.DocumentCulture, PreferredURL = tab.RedirectUrl }; tab.RedirectUrl = DocumentUIHelper.GetDocumentPageUrl(settings); tab.Text = DocumentUIHelper.GetUIElementDisplayName(element, Node); } }
/// <summary> /// Registers script files for on-site editing /// </summary> /// <param name="pi">Current page info</param> private void RegisterEditScripts(PageInfo pi) { ScriptHelper.RegisterJQueryCookie(Page); StringBuilder script = new StringBuilder(); // Edit toolbar scripts if (ViewMode.IsEditLive()) { // Dialog scripts ScriptHelper.RegisterDialogScript(Page); // General url settings UIPageURLSettings settings = new UIPageURLSettings(); settings.AllowSplitview = false; settings.NodeID = pi.NodeID; settings.Culture = pi.DocumentCulture; settings.AdditionalQuery = "dialog=1"; // Edit document settings.Mode = "editform"; settings.Action = null; string editUrl = DocumentUIHelper.GetDocumentPageUrl(settings); settings.Mode = string.Empty; // Toolbar - Edit button script editUrl = URLHelper.RemoveParameterFromUrl(editUrl, "mode"); string scriptEdit = GetModalDialogScript(editUrl, "editpage"); // Delete document settings.Action = "delete"; string deleteUrl = DocumentUIHelper.GetDocumentPageUrl(settings); // Toolbar - Delete button script string scriptDelete = GetModalDialogScript(deleteUrl, "deletepage"); // User contributions - Delete item script string scriptDeleteItem = GetModalDialogScript(AddItemUrlParameters(deleteUrl), "deletepage"); // New document settings.Action = "new"; settings.AdditionalQuery += "&reloadnewpage=1"; string newUrl = DocumentUIHelper.GetDocumentPageUrl(settings); newUrl = AddNewItemUrlParameters(newUrl); // Include culture code newUrl = URLHelper.AddParameterToUrl(newUrl, "parentculture", preferredCultureCode); // Toolbar - New button script string scriptNew = GetModalDialogScript(newUrl, "newpage"); // Toolbar - Properties button script string scriptProperties = GetModalDialogScript(ResolveUrl("~/CMSModules/Content/CMSDesk/Properties/Properties_Frameset.aspx?mode=editlive&documentid=" + pi.DocumentID), "propertiespage"); // Display items from current level by default int nodeId = pi.NodeParentID; // If current level is root display first level if (nodeId == 0) { isRootDocument = true; nodeId = pi.NodeID; } // In page not found mode display first level if (nodeId == 0) { TreeProvider tp = new TreeProvider(cui); TreeNode tn = tp.SelectSingleNode(SiteContext.CurrentSiteName, "/", TreeProvider.ALL_CULTURES); if (tn != null) { nodeId = tn.NodeID; } } // Listing string listItemUrl = ResolveUrl("~/CMSModules/Content/CMSDesk/View/listing.aspx?dialog=1&wopenernodeid=" + pi.NodeID + "&nodeid=##id##"); string scriptListItem = GetModalDialogScript(listItemUrl.Replace("##id##", nodeId.ToString()), "listingpage"); // New culture string newCultureUrl = ResolveUrl("~/CMSModules/Content/CMSDesk/New/NewCultureVersion.aspx?nodeid=##id##&culture=##cult##&dialog=1"); script.Append(@" var OEIsRTL = ", (isRTL ? "true" : "false"), @"; var OECurrentNodeId = ", (DocumentContext.CurrentPageInfo != null) ? DocumentContext.CurrentPageInfo.NodeID : 0, @"; var OEIsMobile = ", (DeviceContext.CurrentDevice.IsMobile ? "true" : "false"), @"; var OEHdnPostbackValue = null; function NewDocument(parentId, classId, targetWindow) { OEClearZIndex(OEActiveWebPart); if (targetWindow == null) { ", scriptNew, @"; } else { targetWindow.location.href = '", newUrl, @"'; } } function EditDocument(nodeId, targetWindow) { OEClearZIndex(OEActiveWebPart); // Edit item button in repeaters and datalists var arg = 'editurl;' + nodeId; ", Page.ClientScript.GetCallbackEventReference(this, "arg", "OECallbackHandler", null), @"; } function SaveDocumentWidgets() { if (!CMSContentManager.contentModified()) { return false; } if (window.CMSContentManager) { CMSContentManager.allowSubmit = true; } ", ControlsHelper.GetPostBackEventReference(this, "savedocument"), @"; } function OECallbackHandler(arg, context) { ", GetModalDialogScript("arg", "editpage", false), @" } function DeleteDocument(nodeId) { OEClearZIndex(OEActiveWebPart); ", scriptDeleteItem, @" } function OnSiteToolbarAction(name) { ", checkChanges, @" switch(name) { case 'edit': ", scriptEdit, @" break; case 'properties': ", scriptProperties, @" break; case 'new': var parentId = OECurrentNodeId; var classId = 0; ", scriptNew, @" break; case 'delete': ", scriptDelete, @" break; case 'list': ", scriptListItem, @" break; default: alert('Required action is not implemented.'); } } function SelectNode(nodeId, parentNodeId) { var liu = '", listItemUrl, @"'; return liu.replace(/##id##/g, nodeId); } function NewDocumentCulture(nodeId, culture) { ", checkChanges, @" var liu = '", newCultureUrl, @"'; liu = liu.replace(/##id##/g, nodeId); liu = liu.replace(/##cult##/g, culture); ", GetModalDialogScript("liu", "newculture", false), @" } function OEEnsureHdnPostbackValue() { if (OEHdnPostbackValue == null) { OEHdnPostbackValue = document.getElementById('", hdnPostbackValue.ClientID, @"'); } } // Changes the device profile function ChangeDevice(device) { ", checkChanges, @" OEEnsureHdnPostbackValue(); OEHdnPostbackValue.value = device; ", ControlsHelper.GetPostBackEventReference(this, "changedeviceprofile"), @" } "); // Register jQuery ScriptHelper.RegisterJQueryDialog(Page); // Register OnSiteEdit script file ScriptHelper.RegisterScriptFile(Page, "DesignMode/OnSiteEdit.js"); ScriptHelper.RegisterScriptFile(Page, "~/CMSScripts/jquery/jquery-url.js"); } // Slider buttons scripts else if (ViewMode.IsLiveSite()) { script.Append(@" function OESlideSideToolbar() { // Hide the slider button in CMSDesk if (parent != this) { return; } var toolbarEl = document.getElementById('", pnlSlider.ClientID, @"'); toolbarEl.style.display = ""block""; // Show slider button toolbarEl.style.top = ""0px""; } // Display slider button jQuery(document).ready(function() { OESlideSideToolbar(); }); "); } script.Append(" function OnSiteEdit_ChangeEditMode(){", ControlsHelper.GetPostBackEventReference(this, "changeviewmode"), "} "); ControlsHelper.RegisterClientScriptBlock(this, Page, typeof(string), "OnSiteEditActions", ScriptHelper.GetScript(script.ToString())); }
/// <summary> /// Fires when a tab is created /// </summary> private void OnTabCreated(object sender, TabCreatedEventArgs e) { if (e.Tab == null) { return; } string mode = null; var element = e.UIElement; string elem = element.ElementName.ToLowerCSafe(); // Hide other tabs for wireframe if (isWireframe && ((elem != "wireframe") && (elem != "editform"))) { e.Tab = null; return; } switch (elem) { case "page": { mode = "edit"; } break; case "design": { // Check if the design mode is enabled if (!designEnabled) { e.Tab = null; return; } mode = "design"; } break; case "wireframe": { // Check if the wireframe mode is enabled if (!hasWireframe) { e.Tab = null; return; } mode = "wireframe"; } break; case "editform": // Keep edit form { mode = "editform"; } break; case "product": { // Check if the product tab is enabled if (!showProductTab) { e.Tab = null; return; } mode = "product"; } break; case "masterpage": { // Check if master page tab is enabled if (!isMasterPage) { e.Tab = null; return; } mode = "masterpage"; } break; case "properties": { // Document properties mode = "properties"; } break; case "analytics": { // Analytics if (isWireframe) { e.Tab = null; return; } mode = "analytics"; } break; } if (Node != null) { var tab = e.Tab; var settings = new UIPageURLSettings { Mode = mode, Node = Node, NodeID = Node.NodeID, Culture = Node.DocumentCulture, PreferredURL = tab.RedirectUrl }; // Ensure correct URL tab.RedirectUrl = DocumentUIHelper.GetDocumentPageUrl(settings); } }