Beispiel #1
0
        private void Document_Update_After(object sender, DocumentEventArgs e)
        {
            if (e.Node.ClassName.Equals("PbcLinear.Product"))
            {
                TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);
                var          relatedProductCategories = tree.SelectNodes(SiteContext.CurrentSiteName, "/Products/%",
                                                                         e.Node.DocumentCulture,
                                                                         false, "PbcLinear.ProductSubCategory", string.Empty, "NodeOrder", -1, true, e.Node.NodeGUID,
                                                                         ProductCategoryRelationshipName,
                                                                         true).ToList();

                DocumentAliasInfoProvider.DeleteNodeAliases(e.Node.NodeID);
                foreach (var category in relatedProductCategories)
                {
                    DocumentAliasInfoProvider.SetDocumentAliasInfo(new DocumentAliasInfo
                    {
                        AliasNodeID     = e.Node.NodeID,
                        AliasURLPath    = TreePathUtils.GetSafeNodeAliasPath(string.Format("{0}/{1}", category.NodeAliasPath, e.Node.DocumentName), "PbcLinear"),
                        AliasSiteID     = SiteContext.CurrentSiteID,
                        AliasCulture    = "",
                        AliasExtensions = ""
                    }, SiteContext.CurrentSiteName);
                }
            }
        }
Beispiel #2
0
    /// <summary>
    /// Gets and updates document alias. Called when the "Get and update alias" button is pressed.
    /// Expects the CreateDocumentAlias method to be run first.
    /// </summary>
    private bool GetAndUpdateDocumentAlias()
    {
        // Prepare the parameters
        string orderBy = "";

        string where = "AliasURLPath = N'/MyNewAlias'";

        // Get the data
        DataSet aliases = DocumentAliasInfoProvider.GetDocumentAliases(where, orderBy);

        if (!DataHelper.DataSourceIsEmpty(aliases))
        {
            DocumentAliasInfo updateAlias = new DocumentAliasInfo(aliases.Tables[0].Rows[0]);

            // Update the properties
            updateAlias.AliasURLPath = updateAlias.AliasURLPath.ToLower();

            // Save the changes
            DocumentAliasInfoProvider.SetDocumentAliasInfo(updateAlias, CMSContext.CurrentSiteName);

            return(true);
        }

        return(false);
    }
Beispiel #3
0
    /// <summary>
    /// Gets and bulk updates document aliases. Called when the "Get and bulk update aliases" button is pressed.
    /// Expects the CreateDocumentAlias method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateDocumentAliases()
    {
        // Prepare the parameters
        string orderBy = "";

        string where = "AliasURLPath = N'/MyNewAlias'";

        // Get the data
        DataSet aliases = DocumentAliasInfoProvider.GetDocumentAliases(where, orderBy);

        if (!DataHelper.DataSourceIsEmpty(aliases))
        {
            // Loop through the individual items
            foreach (DataRow aliasDr in aliases.Tables[0].Rows)
            {
                // Create object from DataRow
                DocumentAliasInfo modifyAlias = new DocumentAliasInfo(aliasDr);

                // Update the properties
                modifyAlias.AliasURLPath = modifyAlias.AliasURLPath.ToUpper();

                // Save the changes
                DocumentAliasInfoProvider.SetDocumentAliasInfo(modifyAlias, CMSContext.CurrentSiteName);
            }

            return(true);
        }

        return(false);
    }
Beispiel #4
0
 /// <summary>
 /// Gets the TreeNode for the corresponding path, can be either the NodeAliasPath or a URL Alias
 /// </summary>
 /// <param name="Path"></param>
 /// <returns></returns>
 public static TreeNode GetNodeByAliasPath(string Path, string ClassName = null, string CultureCode = null)
 {
     return(CacheHelper.Cache <TreeNode>(cs =>
     {
         List <string> CacheDependencies = new List <string>();
         TreeNode FoundNode = DocumentQueryHelper.RepeaterQuery(Path: Path, ClassNames: ClassName, CultureCode: CultureCode).GetTypedResult().Items.FirstOrDefault();
         if (FoundNode == null)
         {
             // Check Url Aliases
             var FoundNodeByAlias = DocumentAliasInfoProvider.GetDocumentAliasesWithNodesDataQuery().WhereEquals("AliasUrlPath", Path).Or().Where(string.Format("'{0}' like AliasWildCardRule", SqlHelper.EscapeQuotes(Path))).FirstOrDefault();
             if (FoundNodeByAlias != null && FoundNodeByAlias.AliasNodeID > 0)
             {
                 CacheDependencies.Add("cms.documentalias|all");
                 CacheDependencies.Add(string.Format("node|{0}|{1}", SiteContext.CurrentSiteName, Path));
                 FoundNode = DocumentQueryHelper.RepeaterQuery(NodeID: FoundNodeByAlias.AliasNodeID, ClassNames: ClassName, CultureCode: (!string.IsNullOrWhiteSpace(FoundNodeByAlias.AliasCulture) ? FoundNodeByAlias.AliasCulture : CultureCode)).GetTypedResult().Items.FirstOrDefault();
             }
         }
         if (FoundNode != null)
         {
             CacheDependencies.Add("documentid|" + FoundNode.DocumentID);
         }
         if (cs.Cached)
         {
             cs.CacheDependency = CacheHelper.GetCacheDependency(CacheDependencies.ToArray());
         }
         return FoundNode;
     }, new CacheSettings(CacheHelper.CacheMinutes(SiteContext.CurrentSiteName), Path, ClassName, CultureCode)));
 }
Beispiel #5
0
    private void UniGridAlias_OnAction(string actionName, object actionArgument)
    {
        if (Node != null)
        {
            // Check modify permissions
            if (MembershipContext.AuthenticatedUser.IsAuthorizedPerDocument(Node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Denied)
            {
                return;
            }

            string action = DataHelper.GetNotEmpty(actionName, String.Empty).ToLowerCSafe();

            switch (action)
            {
            case "edit":
                // Edit action
                URLHelper.Redirect(UrlResolver.ResolveUrl("Alias_Edit.aspx?nodeid=" + NodeID + "&aliasid=" + Convert.ToString(actionArgument)));
                break;

            case "delete":
                // Delete action
                int aliasId = ValidationHelper.GetInteger(actionArgument, 0);
                if (aliasId > 0)
                {
                    // Delete
                    DocumentAliasInfoProvider.DeleteDocumentAliasInfo(aliasId);

                    // Log synchronization
                    DocumentSynchronizationHelper.LogDocumentChange(Node, TaskTypeEnum.UpdateDocument, DocumentManager.Tree);
                }
                break;
            }
        }
    }
    private static ObjectQuery <DocumentAliasInfo> GetAliasesQuery(string completeWhere, string currentOrder, int currentTopN, string columns, int currentOffset, int currentPageSize)
    {
        var columnList = GetColumns(columns);

        var where = SqlHelper.AddWhereCondition(completeWhere, "AliasSiteID = " + SiteContext.CurrentSiteID);
        return(DocumentAliasInfoProvider.GetDocumentAliasesWithNodesDataQuery()
               .Where(where)
               .OrderBy(currentOrder)
               .TopN(currentTopN)
               .Page(currentOffset / currentPageSize, currentPageSize)
               .Columns(columnList));
    }
    private static ObjectQuery <DocumentAliasInfo> GetAliasesQuery(string completeWhere, string currentOrder, int currentTopN, string columns, int currentOffset, int currentPageSize)
    {
        var columnList = GetColumns(columns);

        var where = SqlHelper.AddWhereCondition(completeWhere, "AliasSiteID = " + SiteContext.CurrentSiteID);
        var query = DocumentAliasInfoProvider.GetDocumentAliasesWithNodesDataQuery()
                    .Source(s => s.InnerJoin <DataClassInfo>("NodeClassID", "ClassID"))
                    .Where(where)
                    .OrderBy(currentOrder)
                    .TopN(currentTopN)
                    .Columns(columnList);

        query.Offset     = currentOffset;
        query.MaxRecords = currentPageSize;

        return(query);
    }
    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(MembershipContext.AuthenticatedUser);
        DocumentAliasInfo dai     = DocumentAliasInfoProvider.GetDocumentAliasInfo(aliasID);

        if (dai != null)
        {
            // Find node
            TreeNode node = tree.SelectSingleNode(dai.AliasNodeID);

            if (node != null)
            {
                // Check modify permissions
                if (MembershipContext.AuthenticatedUser.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 + "&dialog=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);
                }
            }
        }
    }
Beispiel #9
0
        public static string GetUrl(DataRowView item)
        {
            var aliases = DocumentAliasInfoProvider.GetDocumentAliases(String.Format("AliasNodeID ='{0}'", item["NodeID"]), "").ToList();
            var alias   = aliases.FirstOrDefault(x => x.AliasURLPath.Contains(RequestContext.CurrentRelativePath));

            if (alias != null)
            {
                return(alias.AliasURLPath);
            }
            else if (aliases.FirstOrDefault() != null)
            {
                return(aliases.FirstOrDefault().AliasURLPath);
            }
            else
            {
                return(string.IsNullOrEmpty(item["DocumentUrlPath"].ToString())
                    ? item["NodeAliasPath"].ToString()
                    : item["DocumentUrlPath"].ToString());
            }
        }
Beispiel #10
0
    /// <summary>
    /// Deletes document alias. Called when the "Delete alias" button is pressed.
    /// Expects the CreateDocumentAlias method to be run first.
    /// </summary>
    private bool DeleteDocumentAlias()
    {
        // Prepare the parameters
        string orderBy = "";

        string where = "AliasURLPath = N'/MyNewAlias'";

        // Get the data
        DataSet aliases = DocumentAliasInfoProvider.GetDocumentAliases(where, orderBy);

        if (!DataHelper.DataSourceIsEmpty(aliases))
        {
            DocumentAliasInfo deleteAlias = new DocumentAliasInfo(aliases.Tables[0].Rows[0]);

            // Delete the document alias
            DocumentAliasInfoProvider.DeleteDocumentAliasInfo(deleteAlias);

            return(true);
        }

        return(false);
    }
Beispiel #11
0
    /// <summary>
    /// Creates document alias. Called when the "Create alias" button is pressed.
    /// </summary>
    private bool CreateDocumentAlias()
    {
        // Get "Home" document
        TreeNode document = TreeHelper.GetDocument(CMSContext.CurrentSiteName, "/Home", CultureHelper.GetPreferredCulture(), true, "CMS.MenuItem", false);

        if (document != null)
        {
            // Create new document alias object
            DocumentAliasInfo newAlias = new DocumentAliasInfo();

            // Set the properties
            newAlias.AliasURLPath = "/MyNewAlias";
            newAlias.AliasNodeID  = document.NodeID;
            newAlias.AliasSiteID  = CMSContext.CurrentSiteID;

            // Save the document alias
            DocumentAliasInfoProvider.SetDocumentAliasInfo(newAlias, CMSContext.CurrentSiteName);

            return(true);
        }

        return(false);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        ScriptHelper.RegisterDialogScript(Page);

        if (isManagement)
        {
            CurrentMaster.PanelFooter.CssClass = "FloatRight";

            CurrentMaster.Title.TitleText  = GetString("doc.urls.aliaslist");
            CurrentMaster.Title.TitleImage = GetImageUrl("CMSModules/CMS_Content/Menu/New.png");

            // Add close button
            CurrentMaster.PanelFooter.Controls.Add(new LocalizedButton
            {
                ID              = "btnCancel",
                ResourceString  = "general.close",
                EnableViewState = false,
                OnClientClick   = "return CloseDialog();",
                CssClass        = "SubmitButton"
            });
        }
        else
        {
            HeaderActions.AddAction(new HeaderAction()
            {
                ImageUrl    = GetImageUrl("CMSModules/CMS_Content/Properties/adddocumentalias.png"),
                Text        = GetString("doc.urls.addnewalias"),
                RedirectUrl = ResolveUrl("Alias_Edit.aspx?nodeid=" + NodeID),
            });

            rightHeaderActions.AddAction(new HeaderAction()
            {
                ImageUrl      = GetImageUrl("CMSModules/CMS_Content/Properties/documentaliases.png"),
                Text          = GetString("doc.urls.viewallalias"),
                OnClientClick = "modalDialog('" + ResolveUrl("~/CMSModules/Content/CMSDesk/Properties/Alias_AliasList.aspx") + "?nodeid=" + NodeID + "','AliasManagement','90%','85%');",
            });
        }

        if (Node != null)
        {
            lblUrlInfoText.Text = Node.NodeAliasPath;

            // Check modify permissions
            if (!CheckDocumentPermissions(Node, PermissionsEnum.Modify))
            {
                ShowInformation(String.Format(GetString("cmsdesk.notauthorizedtoeditdocument"), Node.NodeAliasPath));

                usSelectCampaign.Enabled = false;
                txtURLExtensions.Enabled = false;

                ctrlURL.Enabled = false;

                cultureSelector.Enabled = false;
            }

            if (!RequestHelper.IsPostBack() && QueryHelper.GetInteger("saved", 0) == 1)
            {
                ShowChangesSaved();
            }

            lblDocumentCulture.Text = GetString("general.culture") + ResHelper.Colon;
            lblTrackCampaign.Text   = GetString("doc.urls.trackcampaign") + ResHelper.Colon;
            lblURLExtensions.Text   = GetString("doc.urls.urlextensions") + ResHelper.Colon;

            // Show path of document alias only if management mode edit
            pnlUrlInfo.Visible = isManagement;

            // For management mode use DefaultNodeID
            defaultNodeID = (isManagement) ? QueryHelper.GetInteger("defaultNodeID", 0) : NodeID;

            // Initialize page title
            string urls            = GetString("Properties.Urls");
            string urlsUrl         = string.Format("~/CMSModules/Content/CMSDesk/Properties/Alias_List.aspx?nodeid={0}&compare=1", defaultNodeID.ToString());
            string addAlias        = GetString("doc.urls.addnewalias");
            string aliasManagement = GetString("doc.urls.aliaslist");
            string managementUrl   = "~/CMSModules/Content/CMSDesk/Properties/Alias_AliasList.aspx?nodeid=" + defaultNodeID.ToString();

            string[,] pageTitleTabs = null;

            pageTitleTabs = new string[2, 3];
            // Initializes page title
            pageTitleTabs[0, 0]             = isManagement ? aliasManagement : urls;
            pageTitleTabs[0, 1]             = ResolveUrl(isManagement ? managementUrl : urlsUrl);
            pageTitleTabs[0, 2]             = "";
            pageTitleTabs[1, 0]             = addAlias;
            pageTitleTabs[1, 1]             = "";
            pageTitleTabs[1, 2]             = "";
            CurrentMaster.Title.Breadcrumbs = pageTitleTabs;

            cultureSelector.AddDefaultRecord = false;
            cultureSelector.SpecialFields    = new string[, ] {
                { GetString("general.selectall"), "" }
            };
            cultureSelector.CssClass = "ContentMenuLangDrop";

            aliasId = ValidationHelper.GetInteger(Request.QueryString["aliasid"], 0);

            CurrentMaster.Title.HelpName      = "helpTopic";
            CurrentMaster.Title.HelpTopicName = "doc_documentalias_edit";

            if (!RequestHelper.IsPostBack())
            {
                cultureSelector.Value = Node.DocumentCulture;

                // Edit existing alias
                if (aliasId > 0)
                {
                    DocumentAliasInfo dai = DocumentAliasInfoProvider.GetDocumentAliasInfo(aliasId);

                    if (dai != null)
                    {
                        usSelectCampaign.Value = dai.AliasCampaign;

                        txtURLExtensions.Text = dai.AliasExtensions;
                        ctrlURL.URLPath       = dai.AliasURLPath;

                        cultureSelector.Value = dai.AliasCulture;
                        pageTitleTabs[1, 0]   = addAlias = TreePathUtils.GetURLPathDisplayName(dai.AliasURLPath);

                        drpAction.SelectedValue = DocumentAliasInfoProvider.AliasActionModeEnumString(dai.AliasActionMode);
                    }
                }
            }

            CurrentMaster.Title.Breadcrumbs = pageTitleTabs;

            // Register js synchronization script for split mode
            if (QueryHelper.GetBoolean("refresh", false) && CMSContext.DisplaySplitMode)
            {
                RegisterSplitModeSync(true, false, true);
            }
        }
    }
Beispiel #13
0
    protected void Page_Load(object sender, EventArgs e)
    {
        nodeId = ValidationHelper.GetInteger(Request.QueryString["nodeid"], 0);

        if (nodeId > 0)
        {
            // Get the node
            tree = new TreeProvider(CMSContext.CurrentUser);
            node = tree.SelectSingleNode(nodeId);

            // Set edited document
            EditedDocument = node;

            if (node != null)
            {
                // Check read permissions
                if (CMSContext.CurrentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Read) == AuthorizationResultEnum.Denied)
                {
                    RedirectToAccessDenied(String.Format(GetString("cmsdesk.notauthorizedtoreaddocument"), node.NodeAliasPath));
                }
                // Check modify permissions
                else if (CMSContext.CurrentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Denied)
                {
                    this.lblInfo.Text = String.Format(GetString("cmsdesk.notauthorizedtoeditdocument"), node.NodeAliasPath);

                    usSelectCampaign.Enabled = false;
                    txtURLExtensions.Enabled = false;

                    ctrlURL.Enabled = false;

                    cultureSelector.Enabled = false;
                }

                if (QueryHelper.GetInteger("saved", 0) == 1)
                {
                    lblInfo.Text = GetString("general.changessaved");
                }

                lblDocumentCulture.Text = GetString("general.culture") + ResHelper.Colon;
                lblTrackCampaign.Text   = GetString("doc.urls.trackcampaign") + ResHelper.Colon;
                lblURLExtensions.Text   = GetString("doc.urls.urlextensions") + ResHelper.Colon;

                btnOk.Text = GetString("general.ok");

                // Initialiaze page title
                string urls     = GetString("Properties.Urls");
                string urlsUrl  = "~/CMSModules/Content/CMSDesk/Properties/Alias_List.aspx?nodeid=" + nodeId.ToString();
                string addAlias = GetString("doc.urls.addnewalias");

                // Initializes page title
                string[,] pageTitleTabs = new string[2, 3];
                pageTitleTabs[0, 0]     = urls;
                pageTitleTabs[0, 1]     = urlsUrl;
                pageTitleTabs[0, 2]     = "";
                pageTitleTabs[1, 0]     = addAlias;
                pageTitleTabs[1, 1]     = "";
                pageTitleTabs[1, 2]     = "";
                pageAlias.Breadcrumbs   = pageTitleTabs;

                this.cultureSelector.AddDefaultRecord = false;
                this.cultureSelector.SpecialFields    = new string[, ] {
                    { GetString("general.selectall"), "" }
                };
                this.cultureSelector.CssClass = "ContentMenuLangDrop";

                aliasId = ValidationHelper.GetInteger(Request.QueryString["aliasid"], 0);

                pageAlias.HelpName      = "helpTopic";
                pageAlias.HelpTopicName = "doc_documentalias_edit";

                if (!RequestHelper.IsPostBack())
                {
                    this.cultureSelector.Value = node.DocumentCulture;

                    // Edit existing alias
                    if (aliasId > 0)
                    {
                        DocumentAliasInfo dai = DocumentAliasInfoProvider.GetDocumentAliasInfo(aliasId);

                        if (dai != null)
                        {
                            usSelectCampaign.Value = dai.AliasCampaign;

                            txtURLExtensions.Text = dai.AliasExtensions;
                            ctrlURL.URLPath       = dai.AliasURLPath;

                            cultureSelector.Value = dai.AliasCulture;
                            pageTitleTabs[1, 0]   = addAlias = dai.AliasURLPath;
                        }
                    }
                }

                pageAlias.Breadcrumbs = pageTitleTabs;

                // Register js synchronization script for split mode
                if (QueryHelper.GetBoolean("refresh", false) && CMSContext.DisplaySplitMode)
                {
                    RegisterSplitModeSync(true, false, true);
                }
            }
        }
    }
Beispiel #14
0
    protected void btnOK_Click(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(this.ctrlURL.PlainURLPath))
        {
            lblError.Text = GetString("doc.urls.requiresurlpath");
            return;
        }

        if (!usSelectCampaign.IsValid())
        {
            lblError.Visible = true;
            lblError.Text    = GetString("campaign.validcodename");
            return;
        }

        // Get the document
        TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);

        node = tree.SelectSingleNode(nodeId, CMSContext.PreferredCultureCode);
        if (node != null)
        {
            // Check modify permissions
            if (CMSContext.CurrentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Denied)
            {
                lblInfo.Text  = string.Empty;
                lblError.Text = String.Format(GetString("cmsdesk.notauthorizedtoreaddocument"), node.NodeAliasPath);
                return;
            }

            DocumentAliasInfo dai = null;

            // Edit existing alias
            if (aliasId > 0)
            {
                dai = DocumentAliasInfoProvider.GetDocumentAliasInfo(aliasId);
            }

            if (dai == null)
            {
                dai = new DocumentAliasInfo();
            }

            // Set object properties
            dai.AliasURLPath = ctrlURL.URLPath;

            dai.AliasCampaign   = ValidationHelper.GetString(usSelectCampaign.Value, String.Empty).Trim();
            dai.AliasExtensions = txtURLExtensions.Text.Trim();
            dai.AliasCulture    = ValidationHelper.GetString(cultureSelector.Value, "");
            dai.AliasSiteID     = CMSContext.CurrentSite.SiteID;

            if (nodeId > 0)
            {
                dai.AliasNodeID = nodeId;
            }

            // Insert into database
            DocumentAliasInfoProvider.SetDocumentAliasInfo(dai, node.NodeSiteName);

            // Log synchronization
            DocumentSynchronizationHelper.LogDocumentChange(node, TaskTypeEnum.UpdateDocument, tree);

            nodeId  = dai.AliasNodeID;
            aliasId = dai.AliasID;

            string url = "Alias_Edit.aspx?saved=1&nodeid=" + nodeId.ToString() + "&aliasid=" + aliasId.ToString();

            // Refresh the second frame in split mode
            if (CMSContext.DisplaySplitMode)
            {
                if (string.Compare(CMSContext.PreferredCultureCode, CMSContext.SplitModeCultureCode, StringComparison.InvariantCultureIgnoreCase) == 0)
                {
                    url += "&refresh=1";
                }
            }

            URLHelper.Redirect(url);
        }
    }
    protected void btnOK_Click(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(ctrlURL.PlainURLPath))
        {
            ShowError(GetString("doc.urls.requiresurlpath"));
            return;
        }

        if (!usSelectCampaign.IsValid())
        {
            ShowError(GetString("campaign.validcodename"));
            return;
        }

        // Validate URL path
        if (!ctrlURL.IsValid())
        {
            ShowError(ctrlURL.ValidationError);
            return;
        }

        if (Node != null)
        {
            // Check modify permissions
            if (!DocumentUIHelper.CheckDocumentPermissions(Node, PermissionsEnum.Modify))
            {
                ShowError(String.Format(GetString("cmsdesk.notauthorizedtoreaddocument"), Node.NodeAliasPath));
                return;
            }

            // Check whether
            if (!DocumentAliasInfoProvider.IsUnique(ctrlURL.URLPath, DocumentAlias.AliasID, Convert.ToString(cultureSelector.Value), txtURLExtensions.Text.Trim(), SiteContext.CurrentSiteName, true, NodeID))
            {
                ShowError(GetString("doc.urls.doacaliasnotunique"));
                return;
            }

            // Set object properties
            DocumentAlias.AliasURLPath = ctrlURL.URLPath;

            DocumentAlias.AliasCampaign   = ValidationHelper.GetString(usSelectCampaign.Value, String.Empty).Trim();
            DocumentAlias.AliasExtensions = txtURLExtensions.Text.Trim();
            DocumentAlias.AliasCulture    = ValidationHelper.GetString(cultureSelector.Value, "");
            DocumentAlias.AliasSiteID     = SiteContext.CurrentSite.SiteID;
            DocumentAlias.AliasActionMode = drpAction.SelectedValue.ToEnum <AliasActionModeEnum>();
            DocumentAlias.AliasNodeID     = NodeID;

            // Insert into database
            DocumentAliasInfoProvider.SetDocumentAliasInfo(DocumentAlias, Node.NodeSiteName);

            // Log synchronization
            DocumentSynchronizationHelper.LogDocumentChange(Node, TaskTypeEnum.UpdateDocument, Tree);

            aliasId = DocumentAlias.AliasID;

            string url = "Alias_Edit.aspx?saved=1&nodeid=" + NodeID + "&aliasid=" + aliasId + "&dialog=" + IsDialog;
            if (IsDialog)
            {
                url += "&defaultNodeID=" + defaultNodeID;
            }

            // Refresh the second frame in split mode
            if (UIContext.DisplaySplitMode)
            {
                url += "&refresh=1";
            }
            URLHelper.Redirect(url);
        }
    }
Beispiel #16
0
    /// <summary>
    /// Processes the specified document node.
    /// </summary>
    /// <param name="currentAliasPath">Alias path</param>
    /// <param name="currentFileName">File name</param>
    protected void ProcessNode(string currentAliasPath, string currentFileName)
    {
        // Load the document node
        if (node == null)
        {
            // Try to get data from cache
            using (CachedSection <TreeNode> cs = new CachedSection <TreeNode>(ref node, CacheMinutes, !allowLatestVersion, null, "getfilenodebyaliaspath|", CurrentSiteName, CacheHelper.GetBaseCacheKey(false, true), currentAliasPath))
            {
                if (cs.LoadData)
                {
                    // Get the document
                    string className = null;
                    bool   combineWithDefaultCulture = SettingsKeyProvider.GetBoolValue(CurrentSiteName + ".CMSCombineImagesWithDefaultCulture");
                    string culture = CultureCode;

                    // Get the document
                    if (currentFileName == null)
                    {
                        // CMS.File
                        className = "CMS.File";
                    }

                    // Get the document data
                    if (!IsLiveSite)
                    {
                        node = DocumentHelper.GetDocument(CurrentSiteName, currentAliasPath, culture, combineWithDefaultCulture, className, null, null, -1, false, null, TreeProvider);
                    }
                    else
                    {
                        node = TreeProvider.SelectSingleNode(CurrentSiteName, currentAliasPath, culture, combineWithDefaultCulture, className, null, null, -1, false, null);
                    }

                    // Try to find node using the document aliases
                    if (node == null)
                    {
                        DataSet ds = DocumentAliasInfoProvider.GetDocumentAliases("AliasURLPath='" + SqlHelperClass.GetSafeQueryString(currentAliasPath, false) + "'", "AliasCulture DESC", 1, "AliasNodeID, AliasCulture");
                        if (!DataHelper.DataSourceIsEmpty(ds))
                        {
                            DataRow dr          = ds.Tables[0].Rows[0];
                            int     nodeId      = (int)dr["AliasNodeID"];
                            string  nodeCulture = ValidationHelper.GetString(DataHelper.GetDataRowValue(dr, "AliasCulture"), null);
                            if (!IsLiveSite)
                            {
                                node = DocumentHelper.GetDocument(nodeId, nodeCulture, combineWithDefaultCulture, TreeProvider);
                            }
                            else
                            {
                                node = TreeProvider.SelectSingleNode(nodeId, nodeCulture, combineWithDefaultCulture);
                            }
                        }
                    }

                    // Cache the document
                    CacheNode(cs, node);
                }
            }
        }

        // Process the document
        ProcessNode(node, null, currentFileName);
    }
Beispiel #17
0
    /// <summary>
    /// Creates document.
    /// </summary>
    public int Save()
    {
        // Validate input data
        string message = new Validator().NotEmpty(txtDocumentName.Text.Trim(), GetString("om.enterdocumentname")).Result;

        if (message != String.Empty)
        {
            ShowError(message);
            return(0);
        }

        if (mNode == null)
        {
            ShowError(GetString("general.invalidparameters"));
            return(0);
        }

        // Select parent node
        TreeNode parent = mTree.SelectSingleNode(SiteContext.CurrentSiteName, ucPath.Value.ToString(), TreeProvider.ALL_CULTURES, false, null, false);

        if (parent == null)
        {
            ShowError(GetString("om.pathdoesnotexists"));
            return(0);
        }

        // Check security
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedToCreateNewDocument(parent.NodeID, mNode.NodeClassName))
        {
            RedirectToAccessDenied(GetString("cmsdesk.notauthorizedtocreatedocument"));
            return(0);
        }

        var newDocument = ProcessAction(mNode, parent, "copynode", false, true, true);

        if (newDocument == null)
        {
            ShowError(string.Format(GetString("om.invalidchildtype"), parent.ClassName));
            return(0);
        }

        // Get all language translations
        var documents = DocumentHelper.GetDocuments()
                        .All()
                        .OnCurrentSite()
                        .AllCultures()
                        .WhereEquals("NodeID", newDocument.NodeID);

        // Limit length to 100 characters
        string documentName = TextHelper.LimitLength(txtDocumentName.Text.Trim(), 100, String.Empty);

        // Update all documents and delete all aliases
        foreach (var document in documents)
        {
            UpdateDocument(document, documentName);
            DocumentAliasInfoProvider.DeleteNodeAliases(document.NodeID);

            // Set new node to any updated document to have updated info
            newDocument = document;
        }

        // Create new AB variant if AB test defined
        if (!CreateABVariant(newDocument))
        {
            return(0);
        }

        // Get the page mode
        if (PortalContext.ViewMode != ViewModeEnum.EditLive)
        {
            PortalContext.ViewMode = ViewModeEnum.EditForm;
        }
        txtDocumentName.Text = String.Empty;

        return(newDocument.NodeID);
    }