/// <summary>
 /// Loads the user control.
 /// </summary>
 protected void LoadUserControl()
 {
     if (!string.IsNullOrEmpty(UserControlPath))
     {
         try
         {
             Control ctrl = Page.LoadUserControl(UserControlPath);
             ctrl.ID = "userControlElem";
             Controls.Add(ctrl);
         }
         catch (Exception ex)
         {
             lblError.Text    = "[" + ID + "] " + GetString("WebPartUserControl.ErrorLoad") + ": " + ex.Message;
             lblError.ToolTip = EventLogProvider.GetExceptionLogMessage(ex);
             lblError.Visible = true;
         }
     }
 }
    private void DisplayError(Exception ex)
    {
        pnlProgress.Visible = false;
        pnlDetails.Visible  = false;
        btnOk.Enabled       = false;
        pnlContent.Visible  = true;

        string displayName = null;

        if (exportObj != null)
        {
            displayName = exportObj.ObjectDisplayName;
        }
        lblResult.Text     = string.Format(GetString("ExportObject.Error"), ResHelper.LocalizeString(HTMLHelper.HTMLEncode(displayName)), ex.Message);
        lblResult.ToolTip  = EventLogProvider.GetExceptionLogMessage(ex);
        lblResult.CssClass = "ErrorLabel";

        EventLogProvider.LogException("Export", "ExportObject", ex);
    }
예제 #3
0
    protected void btnExport_Click(object sender, EventArgs e)
    {
        try
        {
            string selectedSite = ValidationHelper.GetString(siteSelector.Value, String.Empty);

            string   targetPath    = Server.MapPath("~/App_Data/Templates/" + selectedSite);
            string[] excludedNames = txtExcluded.Text.Trim().Split(';');

            ExportProvider.ExportWebTemplate(selectedSite, null, targetPath, excludedNames, CMSContext.CurrentUser);

            lblInfo.Text = "Template has been exported to " + targetPath;
        }
        catch (Exception ex)
        {
            lblError.Text    = ex.Message;
            lblError.ToolTip = EventLogProvider.GetExceptionLogMessage(ex);
        }
    }
예제 #4
0
    private void DisplayError(Exception ex)
    {
        pnlProgress.Visible = false;
        btnOk.Enabled       = false;
        pnlDetails.Visible  = false;

        string displayName = null;

        if (exportObj != null)
        {
            displayName = exportObj.ObjectDisplayName;
        }
        lblResult.Text     = string.Format(GetString("RestoreObject.Error"), HTMLHelper.HTMLEncode(displayName), ex.Message);
        lblResult.ToolTip  = EventLogProvider.GetExceptionLogMessage(ex);
        lblResult.CssClass = "ErrorLabel";

        // Log to the event log
        EventLogProvider ev = new EventLogProvider();

        ev.LogEvent("Export", "RestoreObject", ex);
    }
예제 #5
0
    private void btnDelete_Click(object sender, EventArgs e)
    {
        // Only community manager can delete group
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.Groups", CMSAdminControl.PERMISSION_MANAGE))
        {
            RedirectToCMSDeskAccessDenied("CMS.Groups", CMSAdminControl.PERMISSION_MANAGE);
        }

        if (gi != null)
        {
            try
            {
                GroupInfoProvider.DeleteGroupInfo(gi, chkDeleteAll.Checked);
            }
            catch (Exception ex)
            {
                ShowError(ex.Message, EventLogProvider.GetExceptionLogMessage(ex), null);
                return;
            }
        }
        URLHelper.Redirect(mGroupListUrl);
    }
    /// <summary>
    /// Handles email sending.
    /// </summary>
    protected void Send()
    {
        txtFrom.Text = txtFrom.Text.Trim();
        txtTo.Text   = txtTo.Text.Trim();
        txtCc.Text   = txtCc.Text.Trim();
        txtBcc.Text  = txtBcc.Text.Trim();

        // Validate no required emails fields are empty
        string result = new Validator()
                        .NotEmpty(txtFrom.Text, GetString("System_Email.EmptyEmail"))
                        .NotEmpty(txtTo.Text, GetString("System_Email.EmptyEmail"))
                        .Result;

        if (result != string.Empty)
        {
            ShowError(result);
            return;
        }

        // Validate e-mail addresses
        if (!AreEmailsValid())
        {
            ShowError(GetString("System_Email.ErrorEmail"));
            return;
        }

        // Send the e-mail
        try
        {
            SendEmail();
            ShowConfirmation(GetString("System_Email.EmailSent"));
        }
        catch (Exception ex)
        {
            string message = EventLogProvider.GetExceptionLogMessage(ex);
            ShowError(ex.Message, message, null);
        }
    }
예제 #7
0
    /// <summary>
    /// Handles the Click event of the btnSend control.
    /// </summary>
    /// <param name="sender">The source of the event</param>
    /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data</param>
    protected void btnSend_Click(object sender, EventArgs e)
    {
        txtFrom.Text   = txtFrom.Text.Trim();
        txtTo.Text     = txtTo.Text.Trim();
        txtServer.Text = txtServer.Text.Trim();

        string result = new Validator()
                        .NotEmpty(txtServer.Text, GetString("System_Email.ErrorServer"))
                        .NotEmpty(txtFrom.Text, GetString("System_Email.EmptyEmail"))
                        .NotEmpty(txtTo.Text, GetString("System_Email.EmptyEmail"))
                        .Result;

        if (!string.IsNullOrEmpty(result))
        {
            ShowError(result);
            return;
        }

        // Validate e-mail addresses
        if (!(txtFrom.IsValid() && txtTo.IsValid()))
        {
            ShowError(GetString("System_Email.ErrorEmail"));
            return;
        }

        // Send the testing e-mail
        try
        {
            SendEmail();
            ShowInformation(GetString("System_Email.EmailSent"));
        }
        catch (Exception ex)
        {
            string message = EventLogProvider.GetExceptionLogMessage(ex);
            ShowError(ex.Message, message, null);
        }
    }
예제 #8
0
    void gridElem_OnAction(string actionName, object actionArgument)
    {
        switch (actionName.ToLower())
        {
        case "edit":
            this.SelectedItemID = ValidationHelper.GetInteger(actionArgument, 0);
            this.RaiseOnEdit();
            break;

        case "delete":
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(ValidationHelper.GetInteger(actionArgument, 0));
            // Check 'Manage' permission
            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, CMSAdminControl.PERMISSION_MANAGE))
            {
                this.lblError.Text    = MediaLibraryHelper.GetAccessDeniedMessage(CMSAdminControl.PERMISSION_MANAGE);
                this.lblError.Visible = true;
                return;
            }
            try
            {
                MediaLibraryInfoProvider.DeleteMediaLibraryInfo(ValidationHelper.GetInteger(actionArgument, 0));
            }
            catch (Exception ex)
            {
                EventLogProvider eventLog = new EventLogProvider();
                eventLog.LogEvent("Media library", "DELETEOBJ", ex, CMSContext.CurrentSiteID);

                this.lblError.Text    = ex.Message;
                this.lblError.ToolTip = EventLogProvider.GetExceptionLogMessage(ex);
                this.lblError.Visible = true;
            }
            break;
        }

        this.RaiseOnAction(actionName, actionArgument);
    }
예제 #9
0
    public void RaisePostBackEvent(string eventArgument)
    {
        if (eventArgument == "move")
        {
            // Keep current user object
            var cu = MembershipContext.AuthenticatedUser;

            // Parse input value
            string[] values = hdnMoveId.Value.Split(';');

            // Create tree provider
            TreeProvider tree = new TreeProvider(cu);

            // Get tree node object
            int      nodeId = ValidationHelper.GetInteger(values[1], 0);
            TreeNode node   = tree.SelectSingleNode(nodeId);

            // Check whether node exists
            if (node == null)
            {
                ShowError(GetString("ContentRequest.ErrorMissingSource"));
                return;
            }

            try
            {
                // Check permissions
                if (cu.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Allowed)
                {
                    // Switch by action
                    switch (values[0])
                    {
                    case "up":
                        tree.MoveNodeUp(node);
                        break;

                    case "down":
                        tree.MoveNodeDown(node);
                        break;

                    case "top":
                        tree.SetNodeOrder(node, DocumentOrderEnum.First);
                        break;

                    case "bottom":
                        tree.SetNodeOrder(node, DocumentOrderEnum.Last);
                        break;
                    }

                    if (!RequiresDialog)
                    {
                        ScriptHelper.RegisterStartupScript(this, typeof(string), "refreshAfterMove", ScriptHelper.GetScript("parent.RefreshTree(" + node.NodeParentID + ", " + node.NodeParentID + ");"));
                    }

                    // Log the synchronization tasks for the entire tree level
                    DocumentSynchronizationHelper.LogDocumentChangeOrder(node.NodeSiteName, node.NodeAliasPath, tree);
                }
                else
                {
                    ShowError(GetString("ContentRequest.MoveDenied"));
                }
            }
            catch (Exception ex)
            {
                var logData = new EventLogData(EventTypeEnum.Error, "Content", "MOVE")
                {
                    EventDescription = EventLogProvider.GetExceptionLogMessage(ex),
                    EventUrl         = RequestContext.RawURL,
                    UserID           = cu.UserID,
                    UserName         = cu.UserName,
                    NodeID           = nodeId,
                    DocumentName     = node.DocumentName,
                    IPAddress        = RequestContext.UserHostAddress,
                    SiteID           = SiteContext.CurrentSite.SiteID
                };

                Service.Resolve <IEventLogService>().LogEvent(logData);

                ShowError(GetString("ContentRequest.MoveFailed") + " : " + ex.Message);
            }
        }
        else if (eventArgument == "refresh")
        {
            // Register the refresh script after the 'move' action is performed
            Hashtable parameters = WindowHelper.GetItem(Identifier) as Hashtable;
            if ((parameters == null) || (parameters.Count <= 0))
            {
                return;
            }

            int    refreshNodeId = ValidationHelper.GetInteger(parameters["refreshnodeid"], 0);
            string refreshScript = "parent.RefreshTree(" + refreshNodeId + ", " + refreshNodeId + ")";
            ScriptHelper.RegisterStartupScript(this, typeof(string), "refreshAfterMove", refreshScript, true);
        }
    }
예제 #10
0
    /// <summary>
    /// When exception occurs, log it to event log.
    /// </summary>
    /// <param name="ex">Exception to log</param>
    private void LogExceptionToEventLog(Exception ex)
    {
        EventLogProvider.LogEvent(EventType.ERROR, "Content", "DELETEDOC", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, currentUser.UserID, currentUser.UserName, 0, null, RequestContext.UserHostAddress, currentSite.SiteID);

        AddError(ResHelper.GetString("ContentRequest.DeleteFailed", currentCulture) + ": " + ex.Message);
    }
예제 #11
0
    private void LoadSettingsControl()
    {
        try
        {
            if (Settings != null)
            {
                plcControl.Controls.Clear();
                plcControl.Visible = false;
                settingsControl    = null;

                if (!string.IsNullOrEmpty(SelectedNodeValue))
                {
                    string virtualPath = SiteNode ? ImportSettingsControlsRegister.GetSiteSettingsControl(SelectedNodeValue) : ImportSettingsControlsRegister.GetSettingsControl(SelectedNodeValue);

                    if (virtualPath != null)
                    {
                        // Load control
                        settingsControl = (ImportExportControl)Page.LoadUserControl(virtualPath);
                        settingsControl.EnableViewState = true;
                        settingsControl.ID       = "settingControl";
                        settingsControl.Settings = Settings;

                        if (settingsControl.Visible)
                        {
                            plcControl.Controls.Add(settingsControl);
                            plcControl.Visible = true;
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            ShowError("[ImportPanel.LoadSettingsControl]: Error loading settings control for object type '" + SelectedNodeValue + "'. " + EventLogProvider.GetExceptionLogMessage(ex));
        }
    }
 /// <summary>
 /// When exception occurs, log it to event log.
 /// </summary>
 /// <param name="eventCode">Code of event</param>
 /// <param name="errorTitle">Message to log to asynchronous log</param>
 /// <param name="ex">Exception to log</param>
 /// <param name="siteId">ID of site</param>
 private void LogExceptionToEventLog(string eventCode, string errorTitle, Exception ex, int siteId)
 {
     AddError(GetString(errorTitle, mCurrentCulture) + ": " + ex.Message);
     LogContext.LogEventToCurrent(EventType.ERROR, "Content", eventCode, EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, mCurrentUser.UserID, mCurrentUser.UserName, 0, null, RequestContext.UserHostAddress, siteId, SystemContext.MachineName, RequestContext.URLReferrer, RequestContext.UserAgent, DateTime.Now);
 }
예제 #13
0
 /// <summary>
 /// When exception occurs, log it to event log.
 /// </summary>
 private void LogExceptionToEventLog(Exception ex)
 {
     EventLogProvider.LogEvent(EventType.ERROR, "System deployment", "DEPLOYMENT", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, CurrentUser.UserID, CurrentUser.UserName, 0, null, RequestContext.UserHostAddress, SiteContext.CurrentSiteID);
     AddError(GetString("Deployment.DeploymentFailed") + ": " + ex.Message);
 }
예제 #14
0
    /// <summary>
    /// Reload data.
    /// </summary>
    public override void ReloadData()
    {
        try
        {
            treeElem.Nodes.Clear();

            // Get root files
            string rootDir = RootFolderPath;
            if (rootDir != null)
            {
                rootDir = rootDir.TrimEnd('\\');
            }
            if (!String.IsNullOrEmpty(MediaLibraryPath))
            {
                rootDir = DirectoryHelper.CombinePath(rootDir, MediaLibraryPath);
            }
            else if (!String.IsNullOrEmpty(MediaLibraryFolder))
            {
                rootDir = DirectoryHelper.CombinePath(rootDir, MediaLibraryFolder);
            }

            // Get the file and directories count
            int dirCount = 0;

            string[] directories = null;
            if (rootDir != null)
            {
                if (!Directory.Exists(rootDir))
                {
                    DirectoryHelper.EnsureDiskPath(Path.EnsureEndBackslash(rootDir), Server.MapPath("~"));
                }
                directories = Directory.GetDirectories(rootDir);
            }

            if (directories != null)
            {
                // Each directory contains directory for thumbnails
                dirCount = directories.Length - 1;
            }

            // Create root tree node
            TreeNode root;
            if (DisplayFilesCount)
            {
                int fileCount = 0;

                string[] files = Directory.GetFiles(rootDir);
                if (files != null)
                {
                    fileCount = files.Length;
                }

                root = CreateNode("<span class=\"Name\">" + MediaLibraryFolder + " (" + fileCount + ")</span>", MediaLibraryFolder, null, dirCount, 0);
            }
            else
            {
                root = CreateNode("<span class=\"Name\">" + MediaLibraryFolder + "</span>", MediaLibraryFolder, null, dirCount, 0);
            }

            // Keep root expanded
            root.Expand();

            // Add root node
            treeElem.Nodes.Add(root);

            if (!StopProcessing)
            {
                // Bind tree nodes
                if (String.IsNullOrEmpty(MediaLibraryPath))
                {
                    BindTreeView(RootFolderPath + MediaLibraryFolder, root, true);
                }
                else
                {
                    BindTreeView(DirectoryHelper.CombinePath(RootFolderPath, MediaLibraryPath), root, true);
                }
            }

            ScriptHelper.RegisterStartupScript(Page, typeof(Page), "RemoveMultipleNodes_" + ClientID, ScriptHelper.GetScript("if (typeof(ResolveDuplicateNodes) != 'undefined') { ResolveDuplicateNodes('" + treeElem.ClientID + "') }"));
        }
        catch (Exception ex)
        {
            // Set error message
            lblError.Text    = GetString("FolderTree.FailedLoad") + ": " + ex.Message;
            lblError.ToolTip = EventLogProvider.GetExceptionLogMessage(ex);
        }
        finally
        {
            // Check for root node
            RootNodeLoaded = (treeElem.Nodes.Count > 0);
        }
    }
예제 #15
0
    private void LoadSettingsControl()
    {
        try
        {
            if (Settings != null)
            {
                plcControl.Controls.Clear();
                plcControl.Visible = false;
                settingsControl    = null;

                if (!string.IsNullOrEmpty(SelectedNodeValue))
                {
                    string virtualPath = "~/CMSModules/ImportExport/Controls/Import/" + (SiteNode ? "Site/" : "") + ImportExportHelper.GetSafeObjectTypeName(SelectedNodeValue) + ".ascx";
                    string filePath    = Server.MapPath(virtualPath);

                    if (File.Exists(filePath))
                    {
                        // Load control
                        settingsControl = (ImportExportControl)Page.LoadUserControl(virtualPath);
                        settingsControl.EnableViewState = true;
                        settingsControl.ID       = "settingControl";
                        settingsControl.Settings = Settings;

                        if (settingsControl.Visible)
                        {
                            plcControl.Controls.Add(settingsControl);
                            plcControl.Visible = true;
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            lblError.Text = "[ImportPanel.LoadSettingsControl]: Error loading settings control for object type '" + SelectedNodeValue + "'. " + EventLogProvider.GetExceptionLogMessage(ex);
        }
    }
예제 #16
0
    private void wzdExport_NextButtonClick(object sender, WizardNavigationEventArgs e)
    {
        switch (e.CurrentStepIndex)
        {
        case 0:
            // Apply settings
            if (!configExport.ApplySettings())
            {
                e.Cancel = true;
                return;
            }

            // Update settings
            ExportSettings = configExport.Settings;

            if (!configExport.ExportHistory)
            {
                ltlScriptAfter.Text = ScriptHelper.GetScript(
                    "var actDiv = document.getElementById('actDiv'); \n" +
                    "if (actDiv != null) { actDiv.style.display='block'; } \n" +
                    "var buttonsDiv = document.getElementById('buttonsDiv'); if (buttonsDiv != null) { buttonsDiv.disabled=true; } \n" +
                    "BTN_Disable('" + NextButton.ClientID + "'); \n" +
                    "StartSelectionTimer();"
                    );

                // Select objects asynchronously
                ctrlAsync.RunAsync(SelectObjects, WindowsIdentity.GetCurrent());
                e.Cancel = true;
            }
            else
            {
                pnlExport.Settings = ExportSettings;
                pnlExport.ReloadData();
            }
            break;

        case 1:
            // Apply settings
            if (!pnlExport.ApplySettings())
            {
                e.Cancel = true;
                return;
            }
            ExportSettings = pnlExport.Settings;

            // Delete temporary files
            try
            {
                ExportProvider.DeleteTemporaryFiles(ExportSettings, true);
            }
            catch (Exception ex)
            {
                SetErrorLabel(ex.Message);
                e.Cancel = true;
                return;
            }

            try
            {
                // Save export history
                ExportHistoryInfo history = new ExportHistoryInfo();
                history.ExportDateTime = DateTime.Now;
                history.ExportFileName = ExportSettings.TargetFileName;
                history.ExportSettings = ExportSettings.GetXML();
                history.ExportSiteID   = ExportSettings.SiteId;
                history.ExportUserID   = MembershipContext.AuthenticatedUser.UserID;

                ExportHistoryInfoProvider.SetExportHistoryInfo(history);
            }
            catch (Exception ex)
            {
                SetErrorLabel(ex.Message);
                pnlError.ToolTip = EventLogProvider.GetExceptionLogMessage(ex);
                e.Cancel         = true;
                return;
            }


            // Init the Mimetype helper (required for the export)
            MimeTypeHelper.LoadMimeTypes();

            if (ExportSettings.SiteId > 0)
            {
                ExportSettings.EventLogSource = string.Format(ExportSettings.GetAPIString("ExportSite.EventLogSiteSource", "Export '{0}' site"), ResHelper.LocalizeString(ExportSettings.SiteInfo.DisplayName));
            }

            // Start asynchronnous export
            ExportManager.Settings = ExportSettings;

            AsyncWorker worker = new AsyncWorker();
            worker.OnFinished += worker_OnFinished;
            worker.OnError    += worker_OnError;
            worker.RunAsync(ExportManager.Export, WindowsIdentity.GetCurrent());

            lblProgress.Text = GetString("SiteExport.PreparingExport");
            break;
        }

        ReloadSteps();
        wzdExport.ActiveStepIndex = e.NextStepIndex;
    }
예제 #17
0
    public void RaisePostBackEvent(string eventArgument)
    {
        CurrentUserInfo currentUser = CMSContext.CurrentUser;

        // Current Node ID
        int nodeId = ValidationHelper.GetInteger(Param1, 0);

        TreeProvider     tree = new TreeProvider(currentUser);
        EventLogProvider log  = new EventLogProvider();

        string documentName = "";
        string action       = Action.ToLower();

        // Process the request
        switch (action)
        {
        case "moveup":
        case "movedown":
            // Move the document up (document order)
            try
            {
                if (nodeId == 0)
                {
                    AddAlert(GetString("ContentRequest.ErrorMissingSource"));
                    return;
                }

                // Get document to move
                TreeNode node = tree.SelectSingleNode(nodeId);

                // Check the permissions for document
                if (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Allowed)
                {
                    switch (action)
                    {
                    case "moveup":
                        node = tree.MoveNodeUp(nodeId);
                        break;

                    case "movedown":
                        node = tree.MoveNodeDown(nodeId);
                        break;
                    }

                    string siteName = CMSContext.CurrentSiteName;
                    if (SettingsKeyProvider.GetBoolValue(siteName + ".CMSStagingLogChanges"))
                    {
                        // Load all nodes under parent node
                        if (node != null)
                        {
                            string parentPath = TreePathUtils.GetParentPath(node.NodeAliasPath);

                            DataSet ds = tree.SelectNodes(siteName, parentPath.TrimEnd('/') + "/%", TreeProvider.ALL_CULTURES, true, null, null, null, 1);

                            // Check if data source is not empty
                            if (!DataHelper.DataSourceIsEmpty(ds))
                            {
                                // Go through all nodes
                                foreach (DataRow dr in ds.Tables[0].Rows)
                                {
                                    // Update child nodes
                                    int    logNodeId = ValidationHelper.GetInteger(dr["NodeID"], 0);
                                    string culture   = ValidationHelper.GetString(dr["DocumentCulture"], "");
                                    string className = ValidationHelper.GetString(dr["ClassName"], "");

                                    TreeNode tn = tree.SelectSingleNode(logNodeId, culture, className);
                                    DocumentSynchronizationHelper.LogDocumentChange(tn, TaskTypeEnum.UpdateDocument, tree);
                                }
                            }
                        }
                    }

                    // Move the node
                    if (node != null)
                    {
                        documentName = node.DocumentName;

                        treeContent.ExpandNodeID = node.NodeParentID;
                        treeContent.NodeID       = node.NodeID;
                    }
                    else
                    {
                        AddAlert(GetString("ContentRequest.MoveFailed"));
                    }
                }
                else
                {
                    AddAlert(GetString("ContentRequest.MoveDenied"));
                }
            }
            catch (Exception ex)
            {
                log.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "Content", "MOVE", currentUser.UserID, currentUser.UserName, nodeId, documentName, HTTPHelper.UserHostAddress, EventLogProvider.GetExceptionLogMessage(ex), CMSContext.CurrentSite.SiteID, HTTPHelper.GetAbsoluteUri());
                AddAlert(GetString("ContentRequest.MoveFailed") + " : " + ex.Message);
            }
            break;

        case "delete":
            // Delete the document
            try
            {
                if (nodeId == 0)
                {
                    AddAlert(GetString("DefineSiteStructure.ErrorMissingSource"));
                    return;
                }

                // Get the node
                TreeNode node = tree.SelectSingleNode(nodeId);

                // Delete the node
                if (node != null)
                {
                    treeContent.NodeID = node.NodeParentID;

                    node.Delete();

                    // Delete search index for given node
                    if (SearchIndexInfoProvider.SearchEnabled)
                    {
                        SearchTaskInfoProvider.CreateTask(SearchTaskTypeEnum.Delete, PredefinedObjectType.DOCUMENT, SearchHelper.ID_FIELD, node.GetSearchID());
                    }

                    if (node.NodeAliasPath == "/")
                    {
                        // Refresh root document
                        treeContent.NodeID = node.NodeID;
                        AddScript("SelectNode(" + node.NodeID + "); \n");
                    }
                    else
                    {
                        AddScript("SelectNode(" + node.NodeParentID + "); \n");
                    }
                }
            }
            catch (Exception ex)
            {
                AddAlert(GetString("DefineSiteStructure.DeleteFailed") + " : " + ex.Message);
            }
            break;
        }
    }
예제 #18
0
    /// <summary>
    /// Reload data.
    /// </summary>
    public override void ReloadData()
    {
        try
        {
            treeElem.Nodes.Clear();

            // Get root files
            string rootDir = RootFolderPath;
            rootDir = DirectoryHelper.CombinePath(rootDir, !String.IsNullOrEmpty(MediaLibraryPath) ? MediaLibraryPath : MediaLibraryFolder);

            // Get the file and directories count
            int dirCount  = 0;
            int fileCount = 0;

            string[] files       = null;
            string[] directories = null;
            if ((rootDir != null) && (Directory.Exists(rootDir)))
            {
                files       = Directory.GetFiles(rootDir);
                directories = Directory.GetDirectories(rootDir);
            }

            if (files != null)
            {
                fileCount = files.Length;
            }

            if (directories != null)
            {
                // Each directory contains directory for thumbnails
                dirCount = directories.Length - 1;
            }

            // Create root tree node
            TreeNode root;
            if (DisplayFilesCount)
            {
                root = CreateNode("<span class=\"Name\">" + MediaLibraryFolder + " (" + fileCount + ")</span>", MediaLibraryFolder, null, dirCount, 0);
            }
            else
            {
                root = CreateNode("<span class=\"Name\">" + MediaLibraryFolder + "</span>", MediaLibraryFolder, null, dirCount, 0);
            }

            // Keep root expanded
            root.Expand();
            // Add root node
            treeElem.Nodes.Add(root);

            // Bind tree nodes
            if (String.IsNullOrEmpty(MediaLibraryPath))
            {
                BindTreeView(RootFolderPath + MediaLibraryFolder, root, true);
            }
            else
            {
                BindTreeView(DirectoryHelper.CombinePath(RootFolderPath, MediaLibraryPath), root, true);
            }
        }
        catch (Exception ex)
        {
            if (!IgnoreAccessDenied)
            {
                lblError.Text    = GetString("FolderTree.FailedLoad") + ": " + ex.Message;
                lblError.ToolTip = EventLogProvider.GetExceptionLogMessage(ex);
            }
        }
    }
예제 #19
0
    /// <summary>
    /// When exception occures, log it to event log.
    /// </summary>
    /// <param name="ex">Exception to log</param>
    private void LogExceptionToEventLog(Exception ex)
    {
        EventLogProvider log = new EventLogProvider();

        log.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "System deployment", "DEPLOYMENT", CurrentUser.UserID, CurrentUser.UserName, 0, null, HTTPHelper.UserHostAddress, EventLogProvider.GetExceptionLogMessage(ex), CMSContext.CurrentSiteID, HTTPHelper.GetAbsoluteUri());

        AddError(ResHelper.GetString("Deployment.DeploymentFailed") + ": " + ex.Message);
    }
    private void wzdExport_NextButtonClick(object sender, WizardNavigationEventArgs e)
    {
        switch (e.CurrentStepIndex)
        {
        case 0:
            // Apply settings
            if (!configExport.ApplySettings())
            {
                e.Cancel = true;
                return;
            }

            // Update settings
            ExportSettings = configExport.Settings;

            if (!configExport.ExportHistory)
            {
                ltlScriptAfter.Text = ScriptHelper.GetScript(
                    @"var actDiv = document.getElementById('actDiv');
if (actDiv != null) { actDiv.style.display='block'; }
var buttonsDiv = document.getElementById('buttonsDiv');
if (buttonsDiv != null) { buttonsDiv.disabled=true; }
BTN_Disable('" + NextButton.ClientID + @"');
StartSelectionTimer();");

                // Select objects asynchronously
                ctrlAsyncSelection.RunAsync(SelectObjects, WindowsIdentity.GetCurrent());
                e.Cancel = true;
            }
            else
            {
                pnlExport.Settings = ExportSettings;
                pnlExport.ReloadData();

                wzdExport.ActiveStepIndex = e.NextStepIndex;
            }
            break;

        case 1:
            // Apply settings
            if (!pnlExport.ApplySettings())
            {
                e.Cancel = true;
                return;
            }
            ExportSettings = pnlExport.Settings;

            // Delete temporary files
            try
            {
                ExportProvider.DeleteTemporaryFiles(ExportSettings, true);
            }
            catch (Exception ex)
            {
                SetErrorLabel(ex.Message);
                e.Cancel = true;
                return;
            }

            try
            {
                // Save export history
                ExportHistoryInfo history = new ExportHistoryInfo
                {
                    ExportDateTime = DateTime.Now,
                    ExportFileName = ExportSettings.TargetFileName,
                    ExportSettings = ExportSettings.GetXML(),
                    ExportSiteID   = ExportSettings.SiteId,
                    ExportUserID   = MembershipContext.AuthenticatedUser.UserID
                };

                ExportHistoryInfoProvider.SetExportHistoryInfo(history);
            }
            catch (Exception ex)
            {
                SetErrorLabel(ex.Message);
                pnlError.ToolTip = EventLogProvider.GetExceptionLogMessage(ex);
                e.Cancel         = true;
                return;
            }

            if (ExportSettings.SiteId > 0)
            {
                ExportSettings.EventLogSource = String.Format(ExportSettings.GetAPIString("ExportSite.EventLogSiteSource", "Export '{0}' site"), ResHelper.LocalizeString(ExportSettings.SiteInfo.DisplayName));
            }

            // Start asynchronous export
            var manager = ExportManager;

            ExportSettings.LogContext = ctlAsyncExport.CurrentLog;
            manager.Settings          = ExportSettings;

            ctlAsyncExport.RunAsync(manager.Export, WindowsIdentity.GetCurrent());

            wzdExport.ActiveStepIndex = e.NextStepIndex;

            break;
        }
    }
    public void RaisePostBackEvent(string eventArgument)
    {
        var currentUser = MembershipContext.AuthenticatedUser;

        // Current Node ID
        int nodeId = ValidationHelper.GetInteger(Param1, 0);

        TreeProvider tree = new TreeProvider(currentUser);

        string documentName = string.Empty;
        string action = Action.ToLowerCSafe();
        string siteName = SiteContext.CurrentSiteName;

        // Process the request
        switch (action)
        {
            case "refresh":
                treeElem.SelectedNodeID = nodeId;
                AddScript("currentNodeId = " + nodeId + ";");
                break;

            case "moveup":
            case "movedown":
            case "movetop":
            case "movebottom":
                // Move the document up (document order)
                try
                {
                    if (nodeId == 0)
                    {
                        AddAlert(GetString("ContentRequest.ErrorMissingSource"));
                        return;
                    }

                    // Get document to move
                    TreeNode node = tree.SelectSingleNode(nodeId);

                    // Check whether node exists
                    if (node == null)
                    {
                        ShowError(GetString("ContentRequest.ErrorMissingSource"));
                        return;
                    }

                    // Check the permissions for document
                    if (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Allowed)
                    {
                        // Root of products tree can not be moved
                        if (!IsProductTree || (node.NodeAliasPath.CompareToCSafe(StartingAliasPath, true) != 0))
                        {
                            switch (action)
                            {
                                case "moveup":
                                    tree.MoveNodeUp(node);
                                    break;

                                case "movedown":
                                    tree.MoveNodeDown(node);
                                    break;

                                case "movetop":
                                    tree.SetNodeOrder(node, DocumentOrderEnum.First);
                                    break;

                                case "movebottom":
                                    tree.SetNodeOrder(node, DocumentOrderEnum.Last);
                                    break;
                            }

                            // Log the synchronization tasks for the entire tree level
                            DocumentSynchronizationHelper.LogDocumentChangeOrder(siteName, node.NodeAliasPath, tree);

                            // Select the document in the tree
                            documentName = node.GetDocumentName();

                            treeElem.ExpandNodeID = node.NodeParentID;
                            treeElem.SelectedNodeID = node.NodeID;
                            AddScript("currentNodeId = " + node.NodeID + ";");
                        }
                    }
                    else
                    {
                        // Select the document in the tree
                        treeElem.SelectedNodeID = nodeId;

                        AddAlert(GetString("ContentRequest.MoveDenied"));
                    }
                }
                catch (Exception ex)
                {
                    EventLogProvider.LogEvent(EventType.ERROR, "Content", "MOVE", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, currentUser.UserID, currentUser.UserName, nodeId, documentName, RequestContext.UserHostAddress, SiteContext.CurrentSite.SiteID);
                    AddAlert(GetString("ContentRequest.MoveFailed") + " : " + ex.Message);
                }
                break;

            case "setculture":
                // Set the preferred culture code
                try
                {
                    // Set the culture code
                    string language = ValidationHelper.GetString(Param2, string.Empty);
                    if (!string.IsNullOrEmpty(language))
                    {
                        LocalizationContext.PreferredCultureCode = language;
                        treeElem.Culture = language;
                    }
                    // Refresh the document
                    if (nodeId > 0)
                    {
                        treeElem.SelectedNodeID = nodeId;

                        AddScript("SelectNode(" + nodeId + ");");
                    }
                }
                catch (Exception ex)
                {
                    EventLogProvider.LogEvent(EventType.ERROR, "Content", "SETCULTURE", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, currentUser.UserID, currentUser.UserName, nodeId, documentName, RequestContext.UserHostAddress, SiteContext.CurrentSite.SiteID);
                    AddAlert(GetString("ContentRequest.ErrorChangeLanguage"));
                }
                break;

            case "setdevice":
                // Set the device profile
                try
                {
                    // Set the device name
                    string deviceName = ValidationHelper.GetString(Param2, string.Empty);
                    DeviceContext.CurrentDeviceProfileName = deviceName;

                    // Refresh the document
                    if (nodeId > 0)
                    {
                        treeElem.SelectedNodeID = nodeId;

                        AddScript("SelectNode(" + nodeId + ");");
                    }
                }
                catch (Exception ex)
                {
                    EventLogProvider.LogEvent(EventType.ERROR, "Content", "SETDEVICE", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, currentUser.UserID, currentUser.UserName, nodeId, documentName, RequestContext.UserHostAddress, SiteContext.CurrentSite.SiteID);
                    AddAlert(GetString("ContentRequest.ErrorChangeLanguage"));
                }
                break;

            // Sorting
            case "sortalphaasc":
            case "sortalphadesc":
            case "sortdateasc":
            case "sortdatedesc":

                int siteId = SiteContext.CurrentSite.SiteID;

                try
                {
                    // Get document to sort
                    TreeNode node = tree.SelectSingleNode(nodeId);

                    // Check the permissions for document
                    if ((node != null) && (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Allowed)
                        && (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.ExploreTree) == AuthorizationResultEnum.Allowed))
                    {
                        siteId = node.NodeSiteID;

                        switch (action)
                        {
                            case "sortalphaasc":
                                tree.SortNodesAlphabetically(nodeId, siteId, true);
                                break;

                            case "sortalphadesc":
                                tree.SortNodesAlphabetically(nodeId, siteId, false);
                                break;

                            case "sortdateasc":
                                tree.SortNodesByDate(nodeId, siteId, true);
                                break;

                            case "sortdatedesc":
                                tree.SortNodesByDate(nodeId, siteId, false);
                                break;
                        }

                        // Log the synchronization tasks for the entire tree level
                        string fakeAlias = node.NodeAliasPath.TrimEnd('/') + "/child";
                        DocumentSynchronizationHelper.LogDocumentChangeOrder(siteName, fakeAlias, tree);
                    }
                    else
                    {
                        AddAlert(GetString("ContentRequest.SortDenied"));
                    }

                    // Refresh the tree
                    if (nodeId > 0)
                    {
                        treeElem.ExpandNodeID = nodeId;
                        treeElem.SelectedNodeID = nodeId;
                        if (IsProductTree)
                        {
                            AddScript("window.frames['contentview'].location.replace(window.frames['contentview'].location);");
                        }
                        else
                        {
                            AddScript("SelectNode(" + nodeId + ");");
                        }
                    }
                }
                catch (Exception ex)
                {
                    EventLogProvider.LogEvent(EventType.ERROR, "Content", "SORT", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, currentUser.UserID, currentUser.UserName, nodeId, documentName, RequestContext.UserHostAddress, siteId);
                    AddAlert(GetString("ContentRequest.ErrorSort"));
                }

                break;
        }

        // Maintain scrollbar position
        string script =
@"
SetSelectedNodeId(currentNodeId);
MaintainScroll('" + nodeId + @"','" + pnlTreeArea.ClientID + @"', " + ScrollPosition + @");
HideAllContextMenus();
";

        ScriptHelper.RegisterStartupScript(Page, typeof(string), "MaintainScrollbar", script, true);
    }
    /// <summary>
    /// When exception occures, log it to event log.
    /// </summary>
    /// <param name="ex">Exception to log</param>
    private void LogExceptionToEventLog(Exception ex)
    {
        EventLogProvider log = new EventLogProvider();

        log.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "Content", "TRANSLATEDOC", currentUser.UserID, currentUser.UserName, 0, null, HTTPHelper.UserHostAddress, EventLogProvider.GetExceptionLogMessage(ex), currentSite.SiteID, HTTPHelper.GetAbsoluteUri());

        AddError(ResHelper.GetString("ContentRequest.TranslationFailed", currentCulture) + ": " + ex.Message);
    }
예제 #23
0
    public void RaisePostBackEvent(string eventArgument)
    {
        CurrentUserInfo currentUser = CMSContext.CurrentUser;

        // Current Node ID
        int nodeId = ValidationHelper.GetInteger(Param1, 0);

        TreeProvider     tree = new TreeProvider(currentUser);
        EventLogProvider log  = new EventLogProvider();

        string documentName = string.Empty;
        string action       = Action.ToLower();
        string siteName     = CMSContext.CurrentSiteName;

        // Process the request
        switch (action)
        {
        case "refresh":
            treeContent.NodeID = nodeId;
            AddScript("currentNodeId = " + nodeId + ";\n");

            break;

        case "moveup":
        case "movedown":
        case "movetop":
        case "movebottom":
            // Move the document up (document order)
            try
            {
                if (nodeId == 0)
                {
                    AddAlert(GetString("ContentRequest.ErrorMissingSource"));
                    return;
                }

                // Get document to move
                TreeNode node = tree.SelectSingleNode(nodeId);

                // Check the permissions for document
                if (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Allowed)
                {
                    switch (action)
                    {
                    case "moveup":
                        node = tree.MoveNodeUp(nodeId);
                        break;

                    case "movedown":
                        node = tree.MoveNodeDown(nodeId);
                        break;

                    case "movetop":
                        node = tree.SelectSingleNode(nodeId);
                        tree.SetNodeOrder(nodeId, DocumentOrderEnum.First);
                        break;

                    case "movebottom":
                        node = tree.SelectSingleNode(nodeId);
                        tree.SetNodeOrder(nodeId, DocumentOrderEnum.Last);
                        break;
                    }

                    if (node != null)
                    {
                        // Log the synchronization tasks for the entire tree level
                        if (SettingsKeyProvider.GetBoolValue(siteName + ".CMSStagingLogChanges"))
                        {
                            // Log the synchronization tasks for the entire tree level
                            DocumentSynchronizationHelper.LogDocumentChangeOrder(siteName, node.NodeAliasPath, tree);
                        }

                        // Select the document in the tree
                        documentName = node.DocumentName;

                        treeContent.ExpandNodeID = node.NodeParentID;
                        treeContent.NodeID       = node.NodeID;
                        AddScript("currentNodeId = " + node.NodeID + ";\n");
                    }
                    else
                    {
                        AddAlert(GetString("ContentRequest.MoveFailed"));
                    }
                }
                else
                {
                    // Select the document in the tree
                    treeContent.NodeID = nodeId;

                    AddAlert(GetString("ContentRequest.MoveDenied"));
                }
            }
            catch (Exception ex)
            {
                log.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "Content", "MOVE", currentUser.UserID, currentUser.UserName, nodeId, documentName, HTTPHelper.UserHostAddress, EventLogProvider.GetExceptionLogMessage(ex), CMSContext.CurrentSite.SiteID, HTTPHelper.GetAbsoluteUri());
                AddAlert(GetString("ContentRequest.MoveFailed") + " : " + ex.Message);
            }
            break;

        case "setculture":
            // Set the preferred culture code
            try
            {
                // Set the culture code
                string language = ValidationHelper.GetString(Param2, "");
                if (!string.IsNullOrEmpty(language))
                {
                    CMSContext.PreferredCultureCode = language;
                }

                // Refresh the document
                if (nodeId > 0)
                {
                    treeContent.NodeID = nodeId;

                    AddScript("SelectNode(" + nodeId + "); \n");
                }
            }
            catch (Exception ex)
            {
                log.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "Content", "SETCULTURE", currentUser.UserID, currentUser.UserName, nodeId, documentName, HTTPHelper.UserHostAddress, EventLogProvider.GetExceptionLogMessage(ex), CMSContext.CurrentSite.SiteID, HTTPHelper.GetAbsoluteUri());
                AddAlert(GetString("ContentRequest.ErrorChangeLanguage"));
            }
            break;

        // Sorting
        case "sortalphaasc":
        case "sortalphadesc":
        case "sortdateasc":
        case "sortdatedesc":
            // Set the preferred culture code
            try
            {
                // Get document to sort
                TreeNode node = tree.SelectSingleNode(nodeId);

                // Check the permissions for document
                if ((currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Allowed) &&
                    (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.ExploreTree) == AuthorizationResultEnum.Allowed))
                {
                    switch (action)
                    {
                    case "sortalphaasc":
                        tree.OrderNodesAlphabetically(nodeId, true);
                        break;

                    case "sortalphadesc":
                        tree.OrderNodesAlphabetically(nodeId, false);
                        break;

                    case "sortdateasc":
                        tree.OrderNodesByDate(nodeId, true);
                        break;

                    case "sortdatedesc":
                        tree.OrderNodesByDate(nodeId, false);
                        break;
                    }

                    // Log the synchronization tasks for the entire tree level
                    if (SettingsKeyProvider.GetBoolValue(siteName + ".CMSStagingLogChanges"))
                    {
                        // Log the synchronization tasks for the entire tree level
                        string fakeAlias = node.NodeAliasPath.TrimEnd('/') + "/child";
                        DocumentSynchronizationHelper.LogDocumentChangeOrder(siteName, fakeAlias, tree);
                    }
                }
                else
                {
                    AddAlert(GetString("ContentRequest.SortDenied"));
                }

                // Refresh the tree
                if (nodeId > 0)
                {
                    treeContent.ExpandNodeID = nodeId;
                    treeContent.NodeID       = nodeId;
                    AddScript("SelectNode(" + nodeId + "); \n");
                }
            }
            catch (Exception ex)
            {
                log.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "Content", "SORT", currentUser.UserID, currentUser.UserName, nodeId, documentName, HTTPHelper.UserHostAddress, EventLogProvider.GetExceptionLogMessage(ex), CMSContext.CurrentSite.SiteID, HTTPHelper.GetAbsoluteUri());
                AddAlert(GetString("ContentRequest.ErrorSort"));
            }
            break;
        }

        // Maintain scrollbar position
        string script =
            @"var elm = jQuery('#handle_" + nodeId + @"');
  var pnl = jQuery('#" + pnlTreeArea.ClientID + @"');
  var origScroll = " + ScrollPosition + @";
  var elmOff = elm.offset();
  var elmPos = (elmOff == null) ? 0 : elmOff.top;
  var scroll = ((elmPos < origScroll) || (elmPos > (origScroll + pnl.height())));
  pnl.scrollTop(origScroll);
  if(scroll){pnl.animate({ scrollTop: elmPos - 20 }, 300);};";

        ScriptHelper.RegisterStartupScript(Page, typeof(string), "MaintainScrollbar", script, true);
    }
예제 #24
0
    /// <summary>
    /// Get the transformation to interpret task related object data.
    /// </summary>
    /// <param name="row">Grid row</param>
    /// <returns>Transformation that displays object identified by object type and ID.</returns>
    private object RenderRelatedObject(DataRowView row)
    {
        if (row == null)
        {
            return(String.Empty);
        }

        int    objectId    = ValidationHelper.GetInteger(row.Row["SearchTaskRelatedObjectID"], 0);
        string taskTypeRaw = ValidationHelper.GetString(row.Row["SearchTaskType"], "");

        SearchTaskTypeEnum taskType;
        string             objectType = null;


        // try to get search task type. Type doesn't have a default value.
        try
        {
            taskType = ValidationHelper.GetString(taskTypeRaw, "").ToEnum <SearchTaskTypeEnum>();
        }
        catch (Exception ex)
        {
            EventLogProvider.LogEvent(
                EventType.ERROR,
                "Smart search",
                "LISTSEARCHTASKS",
                "Unknown search task type: " + taskTypeRaw + ". Original exception:" + Environment.NewLine + EventLogProvider.GetExceptionLogMessage(ex)
                );

            return(String.Empty);
        }

        // Object type
        objectType = SearchTaskInfoProvider.GetSearchTaskRelatedObjectType(ValidationHelper.GetString(row.Row["SearchTaskObjectType"], ""), taskType);

        // Object cannot be interpreted
        if (String.IsNullOrEmpty(objectType) || (objectId == 0))
        {
            return(String.Empty);
        }

        // create transformation
        ObjectTransformation transformation = new ObjectTransformation(objectType, objectId);

        transformation.Transformation = String.Format("{{% Object.GetFullObjectName(false, true) %}}");

        ObjectTypeInfo typeInfo = ObjectTypeManager.GetTypeInfo(objectType);

        if (typeInfo != null)
        {
            transformation.NoDataTransformation = LocalizationHelper.GetStringFormat("smartsearch.searchtaskrelatedobjectnotexist", typeInfo.GetNiceObjectTypeName(), objectId);
        }

        return(transformation);
    }
예제 #25
0
    /// <summary>
    /// Yes button click event handler.
    /// </summary>
    protected void btnYes_Click(object sender, EventArgs e)
    {
        if (IsBannedIP())
        {
            return;
        }

        // Prepare the where condition
        string where = "NodeID = " + NodeID;

        // Get the documents
        DataSet ds = null;

        if (chkAllCultures.Checked)
        {
            ds = TreeProvider.SelectNodes(SiteName, "/%", TreeProvider.ALL_CULTURES, true, null, where, null, -1, false);
        }
        else
        {
            ds = TreeProvider.SelectNodes(SiteName, "/%", CultureCode, false, null, where, null, -1, false);
        }

        if (!DataHelper.DataSourceIsEmpty(ds))
        {
            // Get node alias
            string nodeAlias = ValidationHelper.GetString(DataHelper.GetDataRowValue(ds.Tables[0].Rows[0], "NodeAlias"), string.Empty);
            // Get parent alias path
            string parentAliasPath = TreePathUtils.GetParentPath(ValidationHelper.GetString(DataHelper.GetDataRowValue(ds.Tables[0].Rows[0], "NodeAliasPath"), string.Empty));

            string   aliasPath = null;
            string   culture   = null;
            string   className = null;
            bool     hasUserDeletePermission = false;
            TreeNode treeNode = null;

            // Delete the documents
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                aliasPath = ValidationHelper.GetString(dr["NodeAliasPath"], string.Empty);
                culture   = ValidationHelper.GetString(dr["DocumentCulture"], string.Empty);
                className = ValidationHelper.GetString(dr["ClassName"], string.Empty);

                // Get the node
                treeNode = TreeProvider.SelectSingleNode(SiteName, aliasPath, culture, false, className, false);

                if (treeNode != null)
                {
                    // Check delete permissions
                    hasUserDeletePermission = !CheckPermissions || IsUserAuthorizedToDeleteDocument(treeNode, chkDestroy.Checked);

                    if (hasUserDeletePermission)
                    {
                        // Delete the document
                        try
                        {
                            LogDeleteActivity(treeNode);
                            DocumentHelper.DeleteDocument(treeNode, TreeProvider, chkAllCultures.Checked, chkDestroy.Checked, true);
                        }
                        catch (Exception ex)
                        {
                            EventLogProvider.LogEvent(EventType.ERROR, "Content", "DELETEDOC", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, MembershipContext.AuthenticatedUser.UserID, MembershipContext.AuthenticatedUser.UserName, treeNode.NodeID, treeNode.GetDocumentName(), RequestContext.UserHostAddress, SiteContext.CurrentSiteID);
                            AddAlert(GetString("ContentRequest.DeleteFailed") + ": " + ex.Message);
                            return;
                        }
                    }
                    // Access denied - not authorized to delete the document
                    else
                    {
                        AddAlert(String.Format(GetString("cmsdesk.notauthorizedtodeletedocument"), treeNode.NodeAliasPath));
                        return;
                    }
                }
                else
                {
                    AddAlert(GetString("ContentRequest.ErrorMissingSource"));
                    return;
                }
            }

            RaiseOnAfterDelete();

            string rawUrl = RequestContext.RawURL.TrimEnd(new char[] { '/' });
            if ((!string.IsNullOrEmpty(nodeAlias)) && (rawUrl.Substring(rawUrl.LastIndexOfCSafe('/')).Contains(nodeAlias)))
            {
                // Redirect to the parent url when current url belongs to deleted document
                URLHelper.Redirect(DocumentURLProvider.GetUrl(parentAliasPath));
            }
            else
            {
                // Redirect to current url
                URLHelper.Redirect(rawUrl);
            }
        }
        else
        {
            AddAlert(GetString("DeleteDocument.CultureNotExists"));
            return;
        }
    }
예제 #26
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Get order id
        orderId = ValidationHelper.GetInteger(Request.Form["invoice"], 0);

        // Get transaction id
        transactionId = ValidationHelper.GetString(Request.Form["txn_id"], "");

        // Get payment status
        paymentStatus = ValidationHelper.GetString(Request.Form["payment_status"], "");

        // Get notification culture stored in custom field
        orderCulture = ValidationHelper.GetString(Request.Form["custom"], "");

        CMSPayPalProvider payPalProvider = null;
        string            errorMessage   = "";

        // Get paypal provider
        OrderInfo oi = OrderInfoProvider.GetOrderInfo(orderId);

        if (oi != null)
        {
            try
            {
                payPalProvider         = (CMSPayPalProvider)CMSPaymentGatewayProvider.GetPaymentGatewayProvider(oi.OrderPaymentOptionID);
                payPalProvider.OrderId = orderId;
            }
            catch (Exception ex)
            {
                // Log exception
                errorMessage = EventLogProvider.GetExceptionLogMessage(ex);
                LogEvent(errorMessage, "Payment_Provider_Not_Found");
                return;
            }
        }
        else
        {
            // Order not found
            errorMessage = string.Format(GetString("PaymentGatewayProvider.ordernotfound"), orderId);
            LogEvent(errorMessage, "Order_Not_Found");
            return;
        }

        PayPalPaymentResultInfo paypalResult = (PayPalPaymentResultInfo)(payPalProvider.PaymentResult);

        // Confirm payment and get PayPal payment gateway response
        string response = payPalProvider.ConfirmPayment(Request.Form);

        // Set payment as verified / not verified
        paypalResult.PayPalPaymentVerified = (response.ToLowerCSafe() == "verified");

        // Set transaction ID
        paypalResult.PaymentTransactionID = transactionId;

        // Set payment status (take received status seriously only if payment was verified)
        paypalResult.PayPalPaymentStatus = PayPalPaymentResultInfo.GetPayPalPaymentStatus(paypalResult.PayPalPaymentVerified ? paymentStatus : "failed");

        // Set payment as completed / not completed
        switch (paypalResult.PayPalPaymentStatus)
        {
        case PayPalPaymentStatusEnum.CanceledReversal:
        case PayPalPaymentStatusEnum.Completed:
        case PayPalPaymentStatusEnum.Processed:
            paypalResult.PaymentIsCompleted = true;
            break;

        default:
            paypalResult.PaymentIsCompleted = false;
            break;
        }

        // Compare payment data to order data
        string error = payPalProvider.ComparePaymentDataToOrderData(Request.Form);

        if (error != "")
        {
            paypalResult.PaymentIsCompleted    = false;
            paypalResult.PayPalPaymentVerified = false;
            paypalResult.PaymentDescription    = error;
        }

        // Order culture
        payPalProvider.ShoppingCartInfoObj.ShoppingCartCulture = orderCulture;

        // Update order payment result in database
        errorMessage = payPalProvider.UpdateOrderPaymentResult();
        if (errorMessage != "")
        {
            // Log the event
            errorMessage += error;
            LogEvent(errorMessage, "Order_Payment_Result_Update");
        }
    }
예제 #27
0
    private void LogExceptionToEventLog(Exception ex, string uiCulture)
    {
        EventLogProvider.LogEvent(EventType.ERROR, "Content", "TRANSLATEDOC", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, currentUser.UserID, currentUser.UserName, 0, null, RequestContext.UserHostAddress, SiteInfoProvider.GetSiteID(CurrentSiteName));

        AddError(ResHelper.GetString("ContentRequest.TranslationFailed", uiCulture) + ex.Message);
    }
예제 #28
0
    /// <summary>
    /// Yes button click event handler.
    /// </summary>
    protected void btnYes_Click(object sender, EventArgs e)
    {
        // Prepare the where condition
        string where = "NodeID = " + NodeID;

        // Get the documents
        DataSet ds = null;

        if (chkAllCultures.Checked)
        {
            ds = TreeProvider.SelectNodes(SiteName, "/%", TreeProvider.ALL_CULTURES, true, null, where, null, -1, false);
        }
        else
        {
            ds = TreeProvider.SelectNodes(SiteName, "/%", CultureCode, false, null, where, null, -1, false);
        }

        if (!DataHelper.DataSourceIsEmpty(ds))
        {
            // Get node alias
            var nodeAlias = DataHelper.GetStringValue(ds.Tables[0].Rows[0], "NodeAlias", string.Empty);
            // Get parent alias path

            var parentAliasPath = TreePathUtils.GetParentPath(DataHelper.GetStringValue(ds.Tables[0].Rows[0], "NodeAliasPath", string.Empty));

            // Delete the documents
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                var aliasPath = ValidationHelper.GetString(dr["NodeAliasPath"], string.Empty);
                var culture   = ValidationHelper.GetString(dr["DocumentCulture"], string.Empty);
                var className = ValidationHelper.GetString(dr["ClassName"], string.Empty);

                // Get the node
                var treeNode = TreeProvider.SelectSingleNode(SiteName, aliasPath, culture, false, className, false);

                if (treeNode != null)
                {
                    // Check delete permissions
                    var hasUserDeletePermission = !CheckPermissions || IsUserAuthorizedToDeleteDocument(treeNode, chkDestroy.Checked);

                    if (hasUserDeletePermission)
                    {
                        // Delete the document
                        try
                        {
                            DocumentHelper.DeleteDocument(treeNode, TreeProvider, chkAllCultures.Checked, chkDestroy.Checked);
                        }
                        catch (Exception ex)
                        {
                            var logData = new EventLogData(EventTypeEnum.Error, "Content", "DELETEDOC")
                            {
                                EventDescription = EventLogProvider.GetExceptionLogMessage(ex),
                                EventUrl         = RequestContext.RawURL,
                                UserID           = MembershipContext.AuthenticatedUser.UserID,
                                UserName         = MembershipContext.AuthenticatedUser.UserName,
                                NodeID           = treeNode.NodeID,
                                DocumentName     = treeNode.GetDocumentName(),
                                IPAddress        = RequestContext.UserHostAddress,
                                SiteID           = SiteContext.CurrentSiteID
                            };

                            Service.Resolve <IEventLogService>().LogEvent(logData);
                            AddAlert(GetString("ContentRequest.DeleteFailed") + ": " + ex.Message);
                            return;
                        }
                    }
                    // Access denied - not authorized to delete the document
                    else
                    {
                        AddAlert(String.Format(GetString("cmsdesk.notauthorizedtodeletedocument"), HTMLHelper.HTMLEncode(treeNode.GetDocumentName())));
                        return;
                    }
                }
                else
                {
                    AddAlert(GetString("ContentRequest.ErrorMissingSource"));
                    return;
                }
            }

            RaiseOnAfterDelete();
        }
        else
        {
            AddAlert(GetString("DeleteDocument.CultureNotExists"));
        }
    }
    /// <summary>
    /// When exception occurs, log it to event log.
    /// </summary>
    /// <param name="ex">Exception to log</param>
    private void LogExceptionToEventLog(Exception ex)
    {
        EventLogProvider log = new EventLogProvider();

        log.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "Content", "IMPORTFILE", CMSContext.CurrentUser.UserID, CMSContext.CurrentUser.UserName, 0, null, HTTPHelper.UserHostAddress, EventLogProvider.GetExceptionLogMessage(ex), CMSContext.CurrentSiteID, HTTPHelper.GetAbsoluteUri());

        AddError(GetString("tools.fileimport.failed") + " (" + ex.Message + ")");
    }
        /// <summary>
        /// Runs the Generation on the given Slug Generation Queue, runs regardless of whether or not any other queues are running.
        /// </summary>
        /// <param name="SlugGenerationQueueID"></param>
        public static void RunSlugGenerationQueueItem(int SlugGenerationQueueID)
        {
            SlugGenerationQueueInfo ItemToRun = SlugGenerationQueueInfoProvider.GetSlugGenerationQueues()
                                                .WhereEquals("SlugGenerationQueueID", SlugGenerationQueueID)
                                                .FirstOrDefault();

            if (ItemToRun == null)
            {
                return;
            }

            // Update item with thread and times
            ItemToRun.SlugGenerationQueueThreadID      = Thread.CurrentThread.ManagedThreadId;
            ItemToRun.SlugGenerationQueueStarted       = DateTime.Now;
            ItemToRun.SlugGenerationQueueRunning       = true;
            ItemToRun.SlugGenerationQueueApplicationID = SystemHelper.ApplicationIdentifier;
            ItemToRun.SetValue("SlugGenerationQueueErrors", null);
            ItemToRun.SetValue("SlugGenerationQueueEnded", null);
            SlugGenerationQueueInfoProvider.SetSlugGenerationQueueInfo(ItemToRun);

            // Get the NodeItem from the SlugGenerationQueueItem
            var      serializer = new XmlSerializer(typeof(NodeItem));
            NodeItem QueueItem;

            using (TextReader reader = new StringReader(ItemToRun.SlugGenerationQueueNodeItem))
            {
                QueueItem = (NodeItem)serializer.Deserialize(reader);
            }

            // Build and Save Items
            try
            {
                QueueItem.BuildChildren();
                if (ErrorOnConflict() && QueueItem.ConflictsExist())
                {
                    ItemToRun.SlugGenerationQueueErrors = $"The Following Conflicts were found:\n\r{string.Join("\n\r", QueueItem.GetConflictItems())}\n\rPlease Correct and re-run queue item.";
                    ItemToRun.SlugGenerationQueueEnded  = DateTime.Now;
                    ItemToRun.SetValue("SlugGenerationQueueThreadID", null);
                    ItemToRun.SetValue("SlugGenerationQueueApplicationID", null);
                    ItemToRun.SlugGenerationQueueRunning = false;
                    SlugGenerationQueueInfoProvider.SetSlugGenerationQueueInfo(ItemToRun);
                    return;
                }
                else
                {
                    QueueItem.SaveChanges();
                    // If completed successfully, delete the item
                    ItemToRun.Delete();
                }
            }
            catch (Exception ex)
            {
                ItemToRun.SlugGenerationQueueErrors  = EventLogProvider.GetExceptionLogMessage(ex);
                ItemToRun.SlugGenerationQueueRunning = false;
                ItemToRun.SlugGenerationQueueEnded   = DateTime.Now;
                SlugGenerationQueueInfoProvider.SetSlugGenerationQueueInfo(ItemToRun);
            }

            // Now that we are 'finished' call the Check again to processes next item.
            CheckUrlSlugGenerationQueue();
        }