Exemple #1
0
    /// <summary>
    /// Returns Javascript used for invoking 'add related document' dialog.
    /// </summary>
    public string GetAddRelatedDocumentScript()
    {
        string postbackArgument;

        if (!AllowSwitchSides && !string.IsNullOrEmpty(RelationshipName))
        {
            postbackArgument = "insertfromselectdocument";

            // Register javascript 'postback' function
            string script = "function RefreshRelatedPanel(elementId) { if (elementId != null) { __doPostBack(elementId, '" + postbackArgument + "'); } } \n";
            ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshRelatedPanel", ScriptHelper.GetScript(script));

            // Dialog 'Select document'
            Config.EditorClientID = pnlUpdate.ClientID + ";" + hdnSelectedNodeId.ClientID;

            // Set dialog starting path
            if (!string.IsNullOrEmpty(StartingPath))
            {
                Config.ContentStartingPath = StartingPath;
            }

            string url = CMSDialogHelper.GetDialogUrl(Config, false, null, false);

            return(string.Format("modalDialog('{0}', 'contentselectnode', '90%', '85%');", url));
        }
        else
        {
            postbackArgument = "insert";

            // Register javascript 'postback' function
            ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshUpdatePanel_" + ClientID, ScriptHelper.GetScript(
                                                       "function RefreshUpdatePanel_" + ClientID + "(){ " + Page.ClientScript.GetPostBackEventReference(pnlUpdate, postbackArgument) + "; } \n"));

            // Dialog 'Add related document'
            string query = "?nodeid=" + TreeNode.NodeID;
            query = URLHelper.AddUrlParameter(query, "defaultside", DefaultSide.ToString());
            query = URLHelper.AddUrlParameter(query, "allowswitchsides", AllowSwitchSides.ToString());
            query = URLHelper.AddUrlParameter(query, "relationshipname", RelationshipName);
            query = URLHelper.AddUrlParameter(query, "externalControlID", ClientID);
            query = URLHelper.AddUrlParameter(query, "startingpath", StartingPath ?? "");

            query = query.Replace("%", "%25").Replace("/", "%2F");

            query = URLHelper.AddUrlParameter(query, "hash", QueryHelper.GetHash(query));

            string url;
            if (IsLiveSite)
            {
                url = ResolveUrl("~/CMSFormControls/LiveSelectors/RelatedDocuments.aspx" + query);
            }
            else
            {
                url = ResolveUrl("~/CMSFormControls/Selectors/RelatedDocuments.aspx" + query);
            }

            return(string.Format("modalDialog('{0}', 'AddRelatedDocument', '900', '315');", url));
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (StopProcessing)
        {
            UniGridRelationship.StopProcessing = StopProcessing;
        }
        else
        {
            // Set tree node from Form object
            if ((TreeNode == null) && (Form != null) && (Form.EditedObject != null))
            {
                TreeNode node = Form.EditedObject as TreeNode;
                if ((node != null) && (Form.Mode == FormModeEnum.Update))
                {
                    TreeNode = node;
                }
                else
                {
                    lblError.Text = GetString("relationship.editdocumenterror");
                }
            }

            if (TreeNode != null)
            {
                // Settings
                RelationshipName = ValidationHelper.GetString(GetValue("RelationshipName"), RelationshipName);
                AllowSwitchSides = ValidationHelper.GetBoolean(GetValue("AllowSwitchSides"), AllowSwitchSides);
                DefaultSide      = ValidationHelper.GetBoolean(GetValue("DefaultSide"), DefaultSide);

                // Set unigrid
                UniGridRelationship.Columns              = "LeftNodeID, RightNodeID, RelationshipNameID, LeftNodeName, RightNodeName, RelationshipDisplayName";
                UniGridRelationship.OnExternalDataBound += UniGridRelationship_OnExternalDataBound;
                UniGridRelationship.OnBeforeDataReload  += UniGridRelationship_OnBeforeDataReload;
                UniGridRelationship.OnAction            += UniGridRelationship_OnAction;
                UniGridRelationship.ZeroRowsText         = GetString("general.nodatafound");

                int  nodeId = TreeNode.NodeID;
                bool oneRelationshipName = !string.IsNullOrEmpty(RelationshipName);
                string where = null;
                if (oneRelationshipName)
                {
                    where = SqlHelperClass.AddWhereCondition(where, "RelationshipName = N'" + SqlHelperClass.GetSafeQueryString(RelationshipName, false) + "'");
                }

                // Switch sides is disabled
                if (!AllowSwitchSides)
                {
                    if (DefaultSide)
                    {
                        where = SqlHelperClass.AddWhereCondition(where, "RightNodeID = " + nodeId);
                    }
                    else
                    {
                        where = SqlHelperClass.AddWhereCondition(where, "LeftNodeID = " + nodeId);
                    }
                }
                else
                {
                    where = SqlHelperClass.AddWhereCondition(where, "(LeftNodeID = " + nodeId + ") OR (RightNodeID = " + nodeId + ")");
                }

                UniGridRelationship.WhereCondition = where;

                if (ShowAddRelation)
                {
                    string postbackArgument = null;
                    if (!AllowSwitchSides && !string.IsNullOrEmpty(RelationshipName))
                    {
                        postbackArgument = "insertfromselectdocument";

                        // Register javascript 'postback' function
                        string script = "function RefreshRelatedPanel(elementId) { if (elementId != null) { __doPostBack(elementId, '" + postbackArgument + "'); } } \n";
                        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshRelatedPanel", ScriptHelper.GetScript(script));

                        // Dialog 'Select document'
                        Config.EditorClientID = pnlUpdate.ClientID + ";" + hdnSelectedNodeId.ClientID;
                        string url = CMSDialogHelper.GetDialogUrl(Config, IsLiveSite, false, null, false);
                        lnkNewRelationship.Style.Add("cursor", "pointer");
                        lnkNewRelationship.Style.Add("text-decoration", "underline");
                        lnkNewRelationship.Attributes.Add("onclick", "modalDialog('" + url + "', 'contentselectnode', '90%', '85%');");
                    }
                    else
                    {
                        postbackArgument = "insert";

                        // Register javascript 'postback' function
                        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshUpdatePanel_" + ClientID, ScriptHelper.GetScript(
                                                                   "function RefreshUpdatePanel_" + ClientID + "(){ " + Page.ClientScript.GetPostBackEventReference(pnlUpdate, postbackArgument) + "; } \n"));

                        // Dialog 'Add related document'
                        string query = "?nodeid=" + nodeId.ToString();
                        query = URLHelper.AddUrlParameter(query, "defaultside", DefaultSide.ToString());
                        query = URLHelper.AddUrlParameter(query, "allowswitchsides", AllowSwitchSides.ToString());
                        query = URLHelper.AddUrlParameter(query, "relationshipname", RelationshipName);
                        query = URLHelper.AddUrlParameter(query, "externalControlID", ClientID);
                        query = URLHelper.AddUrlParameter(query, "hash", QueryHelper.GetHash(query));

                        string url = null;
                        if (IsLiveSite)
                        {
                            url = ResolveUrl("~/CMSFormControls/LiveSelectors/RelatedDocuments.aspx" + query);
                        }
                        else
                        {
                            url = ResolveUrl("~/CMSFormControls/Selectors/RelatedDocuments.aspx" + query);
                        }

                        // Initialize controls
                        lnkNewRelationship.NavigateUrl = url;
                        lnkNewRelationship.Attributes.Add("onclick", "modalDialog('" + url + "', 'AddRelatedDocument', '900', '300'); return false;");
                    }


                    imgNewRelationship.ImageUrl         = GetImageUrl("CMSModules/CMS_Content/Properties/addrelationship.png");
                    imgNewRelationship.DisabledImageUrl = GetImageUrl("CMSModules/CMS_Content/Properties/addrelationshipdisabled.png");
                }
                else
                {
                    pnlNewLink.Visible = false;
                }
            }
            else
            {
                UniGridRelationship.StopProcessing = true;
                UniGridRelationship.Visible        = false;
                pnlNewLink.Visible = false;
            }

            if (RequestHelper.IsPostBack())
            {
                string target = Request["__EVENTTARGET"];
                if ((target == pnlUpdate.ClientID) || (target == pnlUpdate.UniqueID))
                {
                    string action = Request["__EVENTARGUMENT"];

                    if (!string.IsNullOrEmpty(action))
                    {
                        switch (action.ToLower())
                        {
                        // Insert from 'Add related document' dialog
                        case "insert":
                            lblInfo.Text = GetString("relationship.wasadded");
                            break;

                        // Insert from 'Select document' dialog
                        case "insertfromselectdocument":
                            SaveRelationship();
                            break;

                        // Nothing
                        default:
                            break;
                        }
                    }
                }
            }

            bool inserted = QueryHelper.GetBoolean("inserted", false);
            if (inserted)
            {
                lblInfo.Text = GetString("relationship.wasadded");
            }
        }
    }