Exemplo n.º 1
0
    /// <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;
            }
        }
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
    /// <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();
    }
Exemplo n.º 4
0
    /// <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));
    }
Exemplo n.º 5
0
    /// <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);
        }
    }
Exemplo n.º 6
0
    /// <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);
        }
    }