private void SaveSettings2()
        {
            MessageDisplay msgDisplay = CreateMessageDisplay();

            if (PointActionType == null)
            {
                msgDisplay.AddError(new InvalidParamError("type").Message);
                return;
            }

            if (_Request.Get("inheritType", Method.Post, "False").ToLower() == "true")
            {
                PointActionSettings tempSetting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

                PointActionCollection tempPointActions = new PointActionCollection();

                for (int i = 0; i < tempSetting.PointActions.Count; i++)
                {
                    if (string.Compare(tempSetting.PointActions[i].Type, PointActionType.Type, true) == 0 && tempSetting.PointActions[i].NodeID == NodeID)
                    {
                    }
                    else
                    {
                        tempPointActions.Add(tempSetting.PointActions[i]);
                    }
                }

                tempSetting.PointActions = tempPointActions;
                try
                {
                    if (!SettingManager.SaveSettings(tempSetting))
                    {
                        CatchError <ErrorInfo>(delegate(ErrorInfo error)
                        {
                            msgDisplay.AddError(error);
                        });
                    }
                    else
                    {
                        BbsRouter.JumpToUrl(Request.RawUrl, "success=true");
                    }
                    //Response.Redirect(Request.RawUrl);
                }
                catch (Exception ex)
                {
                    msgDisplay.AddError(ex.Message);
                }
                return;
            }

            msgDisplay = null;

            PointAction tempPointAction = new PointAction();

            tempPointAction.Type = PointActionType.Type;

            if (PointActionType.ActionAttributes != null)
            {
                int errorNamesCount = PointActionType.ActionAttributes.Count * 2;
                if (PointActionType.NeedValueActionAttributes != null)
                {
                    errorNamesCount += PointActionType.NeedValueActionAttributes.Count * 2;
                }

                string[] errorNames = new string[errorNamesCount];


                int i = 0;
                foreach (string action in PointActionType.ActionAttributes.Keys)
                {
                    errorNames[i] = action;
                    i++;
                    errorNames[i] = "new." + action;
                    i++;
                }
                if (PointActionType.NeedValueActionAttributes != null)
                {
                    foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                    {
                        errorNames[i] = "pointtype." + action;
                        i++;
                        errorNames[i] = "pointtype.new." + action;
                        i++;
                    }
                }


                msgDisplay = CreateMessageDisplay(errorNames);



                foreach (string action in PointActionType.ActionAttributes.Keys)
                {
                    int[] tempIds = StringUtil.Split <int>(_Request.Get("id." + action, Method.Post, string.Empty));

                    List <int>      sortOrdes = new List <int>();
                    PointActionItem item;

                    foreach (int id in tempIds)
                    {
                        item = GetPointActionItem(action, id, false, msgDisplay);
                        if (item != null)
                        {
                            if (id != 0 && sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                            {
                                msgDisplay.AddError(action, id, Lang_Error.User_UserPointActionDubleSortOrderError);
                            }
                            else
                            {
                                if (id != 0)
                                {
                                    sortOrdes.Add(item.RoleSortOrder);
                                }
                                tempPointAction.PointActionItems.Add(item);
                            }
                        }
                    }

                    item = GetPointActionItem(action, 0, true, msgDisplay);
                    if (item != null)
                    {
                        if (sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                        {
                            msgDisplay.AddError("new." + action, Lang_Error.User_UserPointActionDubleSortOrderError);
                        }
                        tempPointAction.PointActionItems.Add(item);
                    }
                }
            }

            if (PointActionType.NeedValueActionAttributes != null)
            {
                if (msgDisplay == null)
                {
                    string[] errorNames = new string[PointActionType.NeedValueActionAttributes.Count * 2];

                    int i = 0;
                    foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                    {
                        errorNames[i] = "pointtype." + action;
                        i++;
                        errorNames[i] = "pointtype.new." + action;
                        i++;
                    }

                    msgDisplay = CreateMessageDisplay(errorNames);
                }

                foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                {
                    int[] tempIds = StringUtil.Split <int>(_Request.Get("pointtype.id." + action, Method.Post, string.Empty));

                    List <int> sortOrdes = new List <int>();

                    PointActionItem item;

                    foreach (int id in tempIds)
                    {
                        item = GetNeedValuePointActionItem(action, id, false, msgDisplay);
                        if (item != null)
                        {
                            //msgDisplay.HasAnyError == false 是为避免  有两个SortOrder 不为数字出错了(这时都为0)  而这里又提示重复
                            if (id != 0 && sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                            {
                                msgDisplay.AddError("pointtype." + action, id, Lang_Error.User_UserPointActionDubleSortOrderError);
                            }
                            else
                            {
                                if (id != 0)
                                {
                                    sortOrdes.Add(item.RoleSortOrder);
                                }
                                tempPointAction.PointActionItems.Add(item);
                            }
                        }
                    }

                    item = GetNeedValuePointActionItem(action, 0, true, msgDisplay);
                    if (item != null)
                    {
                        if (sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                        {
                            msgDisplay.AddError("pointtype.new." + action, Lang_Error.User_UserPointActionDubleSortOrderError);
                        }
                        tempPointAction.PointActionItems.Add(item);
                    }
                }
            }


            if (msgDisplay.HasAnyError())
            {
                return;
            }

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            tempPointAction.NodeID = NodeID;

            bool haveAdd = false;

            for (int i = 0; i < setting.PointActions.Count; i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && setting.PointActions[i].NodeID == NodeID)
                {
                    pointActions.Add(tempPointAction);
                    haveAdd = true;
                }
                else
                {
                    pointActions.Add(setting.PointActions[i]);
                }
            }
            if (!haveAdd)
            {
                pointActions.Add(tempPointAction);
            }

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError <ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                {
                    BbsRouter.JumpToUrl(Request.RawUrl, "success=true");
                }
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }
        }
        private void Delete()
        {
            m_Success = false;
            MessageDisplay msgDisplay = CreateMessageDisplay();

            if (PointAction.NodeID != NodeID)
            {
                msgDisplay.AddError("当前积分继承至上级,不能进行删除操作,如要修改请修改上级积分或者把积分设为自定义");
                return;
            }

            string action    = _Request.Get("actiontype", Method.Get, string.Empty);
            int    sortOrder = _Request.Get <int>("sortorder", Method.Get, 0);

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            PointAction oldPointAction = setting.PointActions.GetPointAction(PointActionType.Type, NodeID);

            if (oldPointAction == null)
            {
                msgDisplay.AddError(new InvalidParamError("nodeID"));
                return;
            }


            for (int i = 0; i < setting.PointActions.Count; i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && oldPointAction.NodeID == setting.PointActions[i].NodeID)
                {
                    PointAction tempPointAction = new PointAction();
                    tempPointAction.Type = PointActionType.Type;

                    foreach (PointActionItem item in setting.PointActions[i].PointActionItems)
                    {
                        if (string.Compare(item.Action, action, true) == 0 && sortOrder == item.RoleSortOrder && item.RoleID != Guid.Empty)
                        {
                        }
                        else
                        {
                            tempPointAction.PointActionItems.Add(item);
                        }
                    }
                    tempPointAction.NodeID = NodeID;

                    if (setting.PointActions[i].NodeID == NodeID)//原来就有的的设置
                    {
                        pointActions.Add(tempPointAction);
                    }
                    else//原来没有  复制父节点设置
                    {
                        pointActions.Add(tempPointAction);//复制父节点设置
                        pointActions.Add(setting.PointActions[i]);//父节点保留
                    }
                }
                else
                {
                    pointActions.Add(setting.PointActions[i]);
                }
            }

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError <ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                {
                    string urlRef = Request.UrlReferrer.ToString();
                    string query;
                    int    index = urlRef.IndexOf('?');
                    if (index > 0)
                    {
                        query = urlRef.Substring(index + 1);
                    }
                    else
                    {
                        query = string.Empty;
                    }

                    string url = Request.RawUrl;
                    if (url.IndexOf('?') > -1)
                    {
                        url = url.Substring(0, url.IndexOf('?'));
                    }

                    url = url + "?" + query;

                    BbsRouter.JumpToUrl(url, "success=true");
                }
                //else
                //    _Request.Clear(Method.Post);
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }
        }
Esempio n. 3
0
        private void Delete()
        {
            MessageDisplay msgDisplay = CreateMessageDisplay();

            string action    = _Request.Get("actiontype", Method.Get, string.Empty);
            int    sortOrder = _Request.Get <int>("sortorder", Method.Get, 0);

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            PointAction oldPointAction = setting.PointActions.GetPointAction(PointActionType.Type, NodeID);

            if (oldPointAction == null)
            {
                msgDisplay.AddError(new InvalidParamError("nodeID"));
                return;
            }


            for (int i = 0; i < setting.PointActions.Count; i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && oldPointAction.NodeID == setting.PointActions[i].NodeID)
                {
                    PointAction tempPointAction = new PointAction();
                    tempPointAction.Type = PointActionType.Type;

                    foreach (PointActionItem item in setting.PointActions[i].PointActionItems)
                    {
                        if (string.Compare(item.Action, action, true) == 0 && sortOrder == item.RoleSortOrder && item.RoleID != Guid.Empty)
                        {
                        }
                        else
                        {
                            tempPointAction.PointActionItems.Add(item);
                        }
                    }
                    tempPointAction.NodeID = NodeID;

                    if (setting.PointActions[i].NodeID == NodeID)//原来就有的的设置
                    {
                        pointActions.Add(tempPointAction);
                    }
                    else//原来没有  复制父节点设置
                    {
                        pointActions.Add(tempPointAction);//复制父节点设置
                        pointActions.Add(setting.PointActions[i]);//父节点保留
                    }
                }
                else
                {
                    pointActions.Add(setting.PointActions[i]);
                }
            }

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError <ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                {
                    _Request.Clear(Method.Post);
                }
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }
        }