예제 #1
0
        /// <summary>
        /// 获取管理员以及所在组在指定页面的权限表达式,返回null则表示没权限
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="groupId"></param>
        /// <param name="pageId"></param>
        /// <returns></returns>
        private static string GetAdminRightExpByPage(int adminId, int groupId, int pageId)
        {
            Dictionary <int, MR_PageInfo> ar;
            Dictionary <int, MR_PageInfo> gr;

            GetAdminRights(adminId, groupId, out ar, out gr);

            string rightExp = null;

            if (ar != null)
            {
                MR_PageInfo pageInfo = null;
                if (ar.TryGetValue(pageId, out pageInfo) && pageInfo != null)
                {
                    rightExp = pageInfo.BtnRightExp.MergePageRightExp(rightExp);
                }
            }

            if (gr != null)
            {
                MR_PageInfo pageInfo = null;
                if (gr.TryGetValue(pageId, out pageInfo) && pageInfo != null)
                {
                    rightExp = pageInfo.BtnRightExp.MergePageRightExp(rightExp);
                }
            }


            return(rightExp);
        }
예제 #2
0
        /// <summary>
        /// 添加一个菜单节点,返回节点ID
        /// </summary>
        /// <param name="text">节点文字</param>
        /// <param name="url">节点链接</param>
        /// <param name="parentId">父节点ID,根目录ID为0</param>
        public bool AddNode(string text, string url, int parentId, int queue)
        {
            if (text == string.Empty)
            {
                return(false);
            }
            MR_PageInfo model = new MR_PageInfo();

            model.PName    = text;
            model.ParentID = parentId;
            model.Queue    = queue;
            if (url.Length > 0)
            {
                model.PUrl  = url;
                model.IsUrl = true;
            }
            else
            {
                model.PUrl  = string.Empty;
                model.IsUrl = false;
            }
            int result = new DR_PageInfo().Add(model);

            if (result > 0)
            {
                StaticFunctions.ClearServerCache();
                StaticFunctions.ClearClientPageCache();
                return(true);
            }
            return(false);
        }
예제 #3
0
        private void InitPageInfo()
        {
            IRoleManage irm = GetInterface.GetIRoleManage();

            MR_PageInfo pinfo = irm.GetNode(this.NodeId);

            if (pinfo.PID != this.NodeId || pinfo.PID <= 0)
            {
                return;
            }

            this.NodeName = pinfo.PName;
            this.NodeURL  = pinfo.PUrl;

            IList <MR_PageInfo> pageinfos = irm.GetHidePage(this.NodeId);

            this.dl_InChild.DataSource = pageinfos;
            this.dl_InChild.DataBind();
            this.NowInListId = new List <int>();
            if (pageinfos != null)
            {
                foreach (MR_PageInfo apage in pageinfos)
                {
                    this.NowInListId.Add(apage.PID);
                }
            }
            IList <MR_PageInfo> waitpageinfos = irm.GetListToList(-1, false);

            this.dl_MenuList.DataSource = waitpageinfos;
            this.dl_MenuList.DataBind();
        }
예제 #4
0
        /// <summary>
        /// 增加节点, 返回新增加的标识列
        /// 增加失败返回0
        /// </summary>
        public int Add(MR_PageInfo model)
        {
            string cmdText = @"
if not exists (select top 1 1 from R_PageInfo where PUrl=@Purl and PName=@PName and ParentID=@ParentID) begin
    insert into R_PageInfo(PName,PUrl,IsUrl,Queue,ParentID,DefShowChild) values (@PName,@PUrl,@IsUrl,@Queue,@ParentID,@DefShowChild);
    select SCOPE_IDENTITY();
end else begin
    select 0
end
";

            SqlParameter[] parameters =
            {
                new SqlParameter("@PName",        model.PName),
                new SqlParameter("@PUrl",         model.PUrl),
                new SqlParameter("@IsUrl",        model.IsUrl),
                new SqlParameter("@Queue",        model.Queue),
                new SqlParameter("@ParentID",     model.ParentID),
                new SqlParameter("@DefShowChild", model.DefShowChild)
            };
            object obj = SQLHelpers.TcAdmin().ExecuteScalar(cmdText, parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToInt32(obj));
            }
        }
예제 #5
0
 /// <summary>
 /// 添加节点,返回是否成功,成功时,PID值>0
 /// </summary>
 public bool Add(MR_PageInfo model, out string exStr)
 {
     exStr = string.Empty;
     try {
         model.PID = _dal.Add(model);
         return(model.PID > 0);
     } catch (Exception ex) {
         exStr = ex.ToString();
         return(false);
     }
 }
예제 #6
0
        /// <summary>
        /// 判断要改变的父级ID是否在自己的子集里
        /// </summary>
        /// <param name="oldPID"></param>
        /// <param name="changePID"></param>
        /// <returns></returns>
        private bool CheckPIDInChilds(int oldPID, int changePID)
        {
            //自己也算
            if (oldPID == changePID)
            {
                return(true);
            }

            var         allPages = pageBLL.GetAllPages();
            MR_PageInfo oldPInfo = null;
            bool        isEnd;

            return(CheckPIDInChildsByPages(oldPID, ref oldPInfo, changePID, allPages, out isEnd));
        }
예제 #7
0
        /// <summary>
        /// 更新页面
        /// </summary>
        public bool Update(MR_PageInfo model)
        {
            string cmdtext = "update R_PageInfo set PName=@PName,Queue=@Queue,PUrl=@PUrl,DefShowChild=@DefShowChild,ParentID=@ParentID where PID=@PID ";

            SqlParameter[] parameters =
            {
                new SqlParameter("@PID",          model.PID),
                new SqlParameter("@PName",        model.PName),
                new SqlParameter("@Queue",        model.Queue),
                new SqlParameter("@PUrl",         model.PUrl),
                new SqlParameter("@DefShowChild", model.DefShowChild),
                new SqlParameter("@ParentID",     model.ParentID)
            };
            return(SQLHelpers.TcAdmin().ExecuteNonQuery(cmdtext, parameters) > 0);
        }
예제 #8
0
 /// <summary>
 /// 判断要改变的父级ID是否在自己的子集里---递归处理方法
 /// </summary>
 /// <param name="oldPID"></param>
 /// <param name="oldPInfo"></param>
 /// <param name="changePID"></param>
 /// <param name="pages"></param>
 /// <returns></returns>
 private bool CheckPIDInChildsByPages(int oldPID, ref MR_PageInfo oldPInfo, int changePID, List <MR_PageInfo> pages, out bool isEnd)
 {
     foreach (var page in pages)
     {
         if (page.PID == oldPID)
         {
             //找到自己,那么只从自己的子集找起,结果直接返回最外层
             isEnd    = true;
             oldPInfo = page;
             if (page.Childs == null && page.Childs.Count <= 0)
             {
                 return(false);
             }
             return(CheckPIDInChildsByPages(oldPID, ref oldPInfo, changePID, page.Childs, out isEnd));
         }
         if (page.PID == changePID)
         {
             //找到目标,如果自己还没找到算通过,否则
             isEnd = true;
             if (oldPInfo == null)
             {
                 return(false);
             }
             else
             {
                 return(true);
             }
         }
         //递归,先序遍历,如果里面找到,那么就有,没找到,继续遍历其他的
         if (page.Childs != null && page.Childs.Count <= 0)
         {
             var re = CheckPIDInChildsByPages(oldPID, ref oldPInfo, changePID, page.Childs, out isEnd);
             //里面说不用找了,直接返回结果
             if (isEnd)
             {
                 return(re);
             }
             //里面找到了,直接返回结果
             if (re)
             {
                 isEnd = true; return(true);
             }
         }
     }
     //如果都没找到,则返回不在里面
     isEnd = false;
     return(false);
 }
예제 #9
0
        protected void rep_Nav_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            Repeater    repNav   = (Repeater)sender;
            MR_PageInfo pageInfo = (MR_PageInfo)e.Item.DataItem;

            if (pageInfo == null)
            {
                return;
            }
            HtmlGenericControl childPanel = (HtmlGenericControl)e.Item.FindControl("childItem");

            if (pageInfo != null && childPanel != null)
            {
                if (pageInfo.Childs != null && pageInfo.Childs.Count > 0)
                {
                    Repeater childNav = new Repeater();
                    childNav.HeaderTemplate = repNav.HeaderTemplate;
                    childNav.ItemTemplate   = repNav.ItemTemplate;
                    childNav.FooterTemplate = repNav.FooterTemplate;
                    childNav.ItemDataBound += new RepeaterItemEventHandler(rep_Nav_ItemDataBound);
                    childPanel.Controls.Add(childNav);
                    childNav.DataSource = pageInfo.Childs;
                    childNav.DataBind();
                    if (pageInfo.DefShowChild)
                    {
                        childPanel.Style.Add("display", "block");
                    }
                    else
                    {
                        childPanel.Style.Add("display", "none");
                    }
                }
                else
                {
                    childPanel.Visible = false;
                }
            }
        }
예제 #10
0
        /// <summary>
        /// 添加菜单项到当前选中的对象中
        /// </summary>
        /// <param name="pid"></param>
        /// <param name="defautExp"></param>
        private void AddPageRight(int pid, string defautExp)
        {
            int    rootid   = this.ddl_Root.SelectedValue.GetInt(0);
            string idlist   = this.ddl_For.SelectedValue;
            bool   isidlist = !idlist.IsNumber(false);

            IRightsSetting irs = GetInterface.GetIRightsSetting(this.NowSettingType);
            IRoleManage    irm = GetInterface.GetIRoleManage();

            //如果权限没有设置,手动设为000000
            if (string.IsNullOrEmpty(defautExp))
            {
                defautExp = "0000000";
            }

            //将这个权限赋给对象
            irs.AddRole(pid, idlist.ToIntList(','), defautExp, false);

            if (isidlist)  //如果对象是一组ID列表,需要将当前的表单缓存起来
            {
                if (this.NowAddToIdList.Count(t => t.PID == pid) == 0)
                {
                    MR_PageInfo info = irm.GetNode(pid);
                    info.BtnRightExp = defautExp;
                    this.NowAddToIdList.Add(info);
                }
                else
                {
                    MR_PageInfo info = this.NowAddToIdList.First(t => t.PID == pid);
                    info.BtnRightExp = defautExp;
                }
            }

            BindChildRight();

            SiteRuleCheck.FlushPageAndRightCache();
        }
예제 #11
0
        /// <summary>
        /// 处理AJAX-添加子节点
        /// </summary>
        private void ProcAjaxAddChildPage(out int code, out string errMsg, out AjaxHTMLData ajaxHTMLData)
        {
            code         = 101;
            errMsg       = "";
            ajaxHTMLData = new AjaxHTMLData {
                PageTreeListHTML   = "",
                PageTreeDrListHTML = "",
                HidePagesListHTML  = "",
            };
            string exStr = "";

            var parentID     = Request.GetF("ParentID").GetInt(0, false);
            var pageType     = Request.GetF("PageType");
            var pName        = Request.GetF("PName");
            var pUrl         = Request.GetF("PUrl");
            var queue        = Request.GetF("Queue").GetInt(0, false);
            var defShowChild = Request.GetF("DefShowChild").GetBoolean(false);

            var isURL  = false;
            var isHide = (pageType == "HidePage");

            if (pName.IsEmpty())
            {
                code   = 201;
                errMsg = "请输入页面名称";
                return;
            }
            if (pUrl.IsNotEmpty())
            {
                isURL = true;
            }
            if (pUrl.IsNotEmpty())
            {
                if (pageBLL.ExistURL(pUrl, 0))
                {
                    code   = 201;
                    errMsg = "已存在相同URL的页面";
                    return;
                }
            }

            var model = new MR_PageInfo {
                ParentID     = parentID,
                PName        = pName,
                PUrl         = pUrl,
                Queue        = queue,
                DefShowChild = defShowChild,
                IsUrl        = isURL,
            };

            if (isHide)
            {
                model.ParentID = -1;
            }

            if (pageBLL.Add(model, out exStr))
            {
                code   = 200;
                errMsg = "";
            }
            else
            {
                if (exStr.IsEmpty())
                {
                    code   = 202;
                    errMsg = "添加失败,可能已添加";
                    return;
                }
                else
                {
                    code   = 202;
                    errMsg = "添加失败,ex:" + exStr;
                    return;
                }
            }

            if (code == 200)
            {
                if (isHide && model.PID > 0)
                {
                    pageParentBLL.Add(model.PID, parentID, out exStr);
                }

                List <MR_PageInfo> allPagesTree;
                ajaxHTMLData.PageTreeListHTML    = BindPageTree(out allPagesTree).RenderControl();
                ajaxHTMLData.ChkNewPagesListHTML = this.LoadControl("~/Role/UserControl/ChkNewPages.ascx").RenderControl();
                switch (pageType)
                {
                case "Dir":
                case "ShowPage":
                    ajaxHTMLData.PageTreeDrListHTML = BindPageTreeDrList(allPagesTree).RenderControl();
                    break;

                case "HidePage":
                    ajaxHTMLData.HidePagesListHTML = BindHidePages().RenderControl();
                    break;
                }
            }
        }
예제 #12
0
        /// <summary>
        /// 添加导入的页面配置-单个,如果存在相同url则,使用更新
        /// </summary>
        /// <param name="pId"></param>
        /// <param name="child"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        private bool DoImportPageCfgOne(int pId, MR_PageInfo child, out string errMsg)
        {
            errMsg = "";
            var isURL = false;

            if (child.PName.IsEmpty())
            {
                errMsg = "请输入页面名称";
                return(false);
            }
            if (child.PUrl.IsNotEmpty())
            {
                isURL = true;
            }
            if (child.PUrl.IsNotEmpty())
            {
                var existPage = pageBLL.GetModel(child.PUrl);
                if (existPage != null)
                {
                    //存在同URL的页面
                    if (existPage.ParentID != pId)
                    {
                        errMsg = "其他位置存在同URL的页面";
                        return(false);
                    }
                    //同位置下的,采用更新机制
                    child.PID = existPage.PID;
                }
            }

            child.IsUrl = isURL;

            if (child.HideParentID > 0)
            {
                child.ParentID = -1;
            }
            else
            {
                child.ParentID = pId;
            }

            if (child.PID <= 0)
            {
                if (!pageBLL.Add(child, out errMsg))
                {
                    if (errMsg.IsEmpty())
                    {
                        errMsg = "添加失败,可能已添加";
                        return(false);
                    }
                    else
                    {
                        errMsg = "添加失败,ex:" + errMsg;
                        return(false);
                    }
                }
            }
            if (child.ParentID == -1 && child.PID > 0)
            {
                if (!pageParentBLL.Exists(child.PID, pId))
                {
                    pageParentBLL.Add(child.PID, pId, out errMsg);
                }
            }

            errMsg = "";
            return(true);
        }
예제 #13
0
 /// <summary>
 /// 更新页面
 /// </summary>
 public bool Update(MR_PageInfo model)
 {
     return(_dal.Update(model));
 }