Exemplo n.º 1
0
        private bool UpdateMessage(string id, string updateAction)
        {
            var msg = CmoMessage.GetMessage(id);

            if (msg != null)
            {
                CmoMessage.MessageAction action = null;
                switch (updateAction)
                {
                case ActionName_Archive:
                    action = msg.Archive;
                    break;

                case ActionName_Unarchive:
                    action = msg.Unarchive;
                    break;

                case ActionName_Flag:
                    action = msg.SetFlag;
                    break;

                case ActionName_ClearFlag:
                    action = msg.ClearFlag;
                    break;
                }
                return(action != null && action((User.Identity.Name)));
            }
            return(false);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets a delegate reference to a method for a Campaign Messages Online message.
        /// </summary>
        /// <param name="commandName">A command name value representing the type of method delegate to get.</param>
        /// <param name="message">The targeted <see cref="CmoMessage"/> object.</param>
        /// <returns>A <see cref="CmoMessage.MessageAction"/> delegate reference if a matching method is found.</returns>
        public static CmoMessage.MessageAction GetAction(string commandName, CmoMessage message)
        {
            CmoMessage.MessageAction ma = null;
            if (message != null)
            {
                switch (commandName)
                {
                case ArchiveCommandName:
                    ma = message.Archive;
                    break;

                case UnarchiveCommandName:
                    ma = message.Unarchive;
                    break;

                case FlagCommandName:
                    ma = message.SetFlag;
                    break;

                case ClearFlagCommandName:
                    ma = message.ClearFlag;
                    break;
                }
            }
            return(ma);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Handles the event that occurs when an action button that affects selected messages is clicked.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">A <see cref="CommandEventArgs"/> object that contains the event data.</param>
        protected void MultipleMessageAction(object sender, CommandEventArgs e)
        {
            string selectionRaw = Request.Form[CmoMailboxMessageList.MessageCheckboxName];

            // check for selected messages
            if (string.IsNullOrEmpty(selectionRaw))
            {
                this.PageError = NoSelectionText;
            }
            else
            {
                string[] selection = selectionRaw.Split(MessageIdDelimiters, StringSplitOptions.RemoveEmptyEntries);
                if (selection.Count() == 0)
                {
                    this.PageError = NoSelectionText;
                }
                else
                {
                    // determine action
                    string action = null;
                    switch (e.CommandName)
                    {
                    case Messages.ArchiveCommandName:
                        action = "archived";
                        break;

                    case Messages.UnarchiveCommandName:
                        action = "unarchived";
                        break;

                    case Messages.FlagCommandName:
                        action = "flagged";
                        break;

                    case Messages.ClearFlagCommandName:
                        action = "unflagged";
                        break;

                    default:
                        this.PageError = "You have requested an unsupported action. Please try again.";
                        break;
                    }
                    if (!string.IsNullOrEmpty(action))
                    {
                        // iterate through messages and monitor failures
                        bool error        = false;
                        uint successCount = 0;
                        foreach (string messageId in selection)
                        {
                            CmoMessage m = CmoMessage.GetMessage(messageId);
                            if (m == null)
                            {
                                error = true;
                            }
                            else
                            {
                                CmoMessage.MessageAction ma = Messages.GetAction(e.CommandName, m);
                                if (ma != null)
                                {
                                    if (ma(this.DataSource.Username))
                                    {
                                        successCount++;
                                    }
                                    else
                                    {
                                        error = true;
                                    }
                                }
                            }
                        }
                        this.PageResult = string.Format("{0} message{1} {2} successfully{3}.", successCount, successCount == 1 ? string.Empty : "s", action, error ? ", with exceptions" : string.Empty);
                    }
                }
            }
            this.DataBind();
        }
Exemplo n.º 4
0
        /// <summary>
        /// Handles the event that occurs when an action button that affects the current message is clicked.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">A <see cref="CommandEventArgs"/> object that contains the event data.</param>
        protected void DoMessageAction(object sender, CommandEventArgs e)
        {
            string action = null;

            switch (e.CommandName)
            {
            case Messages.ArchiveCommandName:
                action = "archived";
                break;

            case Messages.UnarchiveCommandName:
                action = "unarchived";
                break;

            case Messages.FlagCommandName:
                action = "flagged";
                break;

            case Messages.ClearFlagCommandName:
                action = "unflagged";
                break;

            default:
                this.PageError = "You have requested an unsupported action. Please try again.";
                break;
            }
            if (!string.IsNullOrEmpty(action))
            {
                _datasource = GetMessage(Request.QueryString[CmoMailboxMessageList.MessageIdParameterName]);
                if (_datasource != null)
                {
                    // perform requested action
                    CmoMessage.MessageAction ma = Messages.GetAction(e.CommandName, _datasource);
                    if (ma != null)
                    {
                        if (ma(_mailbox.Username))
                        {
                            // success
                            this.PageResult = string.Format("Message {0} {1} successfully.", _datasource.UniqueID, action);
                            if ((_mailbox.View == CmoMailboxView.Archived || _mailbox.View == CmoMailboxView.Current) && (e.CommandName == Messages.ArchiveCommandName || e.CommandName == Messages.UnarchiveCommandName))
                            {
                                // re-get archived messages to determine if still valid for current view
                                _datasource = GetMessage(_datasource.UniqueID);
                                if (_messageIndex == -1)
                                {
                                    // message no longer valid for this view, return to mailbox
                                    Response.Redirect("/Messages/", _mailbox.GetQueryString());
                                }
                            }
                        }
                        else
                        {
                            // failure
                            this.PageError = "There was an error processing your request. Please try again.";
                        }
                        this.DataBind();
                    }
                }
                else
                {
                    ShowMessageNotFound();
                }
                MessageHeaderUpdatePanel.Update();
            }
        }