Exemplo n.º 1
0
        ///<summary>组合菜单全路径</summary>
        ///<param name="param">菜单信息</param>
        ///<returns></returns>
        public string CombineFullPath(ApplicationMenuInfo param)
        {
            string fullPath = string.Empty;

            fullPath = param.Name;

            ApplicationMenuInfo parent = param.Parent;

            int depthCount = 0;

            while (parent != null)
            {
                fullPath = string.Format("{0}\\{1}", parent.Name, fullPath);

                parent = parent.Parent;

                // 如果深度超过50层,则跳出循环。(可能陷入死循环)
                if (depthCount++ > 50)
                {
                    break;
                }
            }

            if (param.MenuType == "ApplicationMenu")
            {
                fullPath = string.Format("{0}\\{1}", param.ApplicationDisplayName, fullPath);
            }
            else
            {
                fullPath = string.Format("{0}\\{1}", param.MenuTypeView, fullPath);
            }

            return(fullPath);
        }
Exemplo n.º 2
0
        ///<summary>同步信息</summary>
        ///<param name="param">应用菜单信息</param>
        public void SyncFromPackPage(ApplicationMenuInfo param)
        {
            param.FullPath = CombineFullPath(param);

            this.provider.SyncFromPackPage(param);

            this.BindAuthorizationScopeObjects(param.Id, "应用_通用_查看权限", param.AuthorizationReadScopeObjectText);
        }
        // -------------------------------------------------------
        // 查询
        // -------------------------------------------------------

        #region 函数:FindOne(string id)
        /// <summary>查询某条记录</summary>
        /// <param name="id">标识</param>
        /// <returns>返回实例<see cref="ApplicationMenuInfo"/>的详细信息</returns>
        public ApplicationMenuInfo FindOne(string id)
        {
            Dictionary <string, object> args = new Dictionary <string, object>();

            args.Add("Id", StringHelper.ToSafeSQL(id));

            ApplicationMenuInfo param = this.ibatisMapper.QueryForObject <ApplicationMenuInfo>(StringHelper.ToProcedurePrefix(string.Format("{0}_FindOne", tableName)), args);

            return(param);
        }
        // -------------------------------------------------------
        // 添加 删除 修改
        // -------------------------------------------------------

        #region 函数:Save(ApplicationMenuInfo param)
        /// <summary>保存记录</summary>
        /// <param name="param">实例<see cref="ApplicationMenuInfo"/>详细信息</param>
        /// <returns>实例<see cref="ApplicationMenuInfo"/>详细信息</returns>
        public ApplicationMenuInfo Save(ApplicationMenuInfo param)
        {
            if (!IsExist(param.Id))
            {
                Insert(param);
            }
            else
            {
                Update(param);
            }

            return((ApplicationMenuInfo)param);
        }
Exemplo n.º 5
0
        // -------------------------------------------------------
        // 查询
        // -------------------------------------------------------

        #region 函数:FindOne(XmlDocument doc)
        /// <summary>获取详细信息</summary>
        /// <param name="doc">Xml 文档对象</param>
        /// <returns>返回操作结果</returns>
        public string FindOne(XmlDocument doc)
        {
            StringBuilder outString = new StringBuilder();

            string id = XmlHelper.Fetch("id", doc);

            ApplicationMenuInfo param = this.service.FindOne(id);

            outString.Append("{\"data\":" + AjaxUtil.Parse <ApplicationMenuInfo>(param) + ",");

            outString.Append(MessageObject.Stringify("0", I18n.Strings["msg_query_success"], true) + "}");

            return(outString.ToString());
        }
Exemplo n.º 6
0
        // -------------------------------------------------------
        // 保存 删除
        // -------------------------------------------------------

        #region 函数:Save(XmlDocument doc)
        /// <summary>保存记录</summary>
        /// <param name="doc">Xml 文档对象</param>
        /// <returns>返回操作结果</returns>
        public string Save(XmlDocument doc)
        {
            ApplicationMenuInfo param = new ApplicationMenuInfo();

            string authorizationReadScopeObjectText = XmlHelper.Fetch("authorizationReadScopeObjectText", doc);

            param = (ApplicationMenuInfo)AjaxUtil.Deserialize(param, doc);

            this.service.Save(param);

            this.service.BindAuthorizationScopeObjects(param.Id, "应用_通用_查看权限", authorizationReadScopeObjectText);

            return(MessageObject.Stringify("0", I18n.Strings["msg_save_success"]));
        }
Exemplo n.º 7
0
        /// <summary>表单</summary>
        /// <returns></returns>
        public ActionResult Form(string options)
        {
            // 所属应用信息
            ApplicationInfo application = ViewBag.application = AppsContext.Instance.ApplicationService[APPLICATION_NAME];

            // -------------------------------------------------------
            // 身份验证
            // -------------------------------------------------------

            if (!AppsSecurity.IsAdministrator(KernelContext.Current.User, application.ApplicationName))
            {
                ApplicationError.Write(401);
            }

            // -------------------------------------------------------
            // 数据加载
            // -------------------------------------------------------

            JsonData request = JsonMapper.ToObject(options);

            string id = JsonHelper.GetDataValue(request, "id");

            ApplicationMenuInfo param = new ApplicationMenuInfo();

            if (string.IsNullOrEmpty(id))
            {
                string applicationId = JsonHelper.GetDataValue(request, "applicationId", "00000000-0000-0000-0000-000000000001");
                string menuId        = JsonHelper.GetDataValue(request, "menuId", "00000000-0000-0000-0000-000000000000");
                string menuType      = JsonHelper.GetDataValue(request, "menuType", "00000000-0000-0000-0000-000000000000");

                param.Id            = DigitalNumberContext.Generate("Key_Guid");
                param.ApplicationId = applicationId;
                param.ParentId      = menuId;
                param.MenuType      = menuType;
                param.Status        = 1;
            }
            else
            {
                param = AppsContext.Instance.ApplicationMenuService.FindOne(id);
            }

            ViewBag.param = param;

            return(View("/views/main/applications/application-menu-form.cshtml"));
        }
Exemplo n.º 8
0
        // -------------------------------------------------------
        // 权限
        // -------------------------------------------------------

        #region 私有函数:GetAuthorizationReadObject(ApplicationMenuInfo param)
        ///<summary>验证对象的权限</summary>
        ///<param name="param">需验证的对象</param>
        ///<returns>对象</returns>
        private ApplicationMenuInfo GetAuthorizationReadObject(ApplicationMenuInfo param)
        {
            IAccountInfo account = KernelContext.Current.User;

            if (AppsSecurity.IsAdministrator(account, AppsConfiguration.ApplicationName))
            {
                return(param);
            }
            else
            {
                if (MembershipAuthorizationScopeManagement.Authenticate(param.AuthorizationReadScopeObjects, account))
                {
                    return(param);
                }

                return(null);
            }
        }
Exemplo n.º 9
0
        // -------------------------------------------------------
        // 保存 删除
        // -------------------------------------------------------

        #region 函数:Save(ApplicationMenuInfo param)
        /// <summary>保存记录</summary>
        /// <param name="param">实例<see cref="ApplicationMenuInfo"/>详细信息</param>
        /// <returns>实例<see cref="ApplicationMenuInfo"/>详细信息</returns>
        public ApplicationMenuInfo Save(ApplicationMenuInfo param)
        {
            param.FullPath = CombineFullPath(param);

            return(this.provider.Save(param));
        }
        // -------------------------------------------------------
        // 同步管理
        // -------------------------------------------------------

        #region 函数:SyncFromPackPage(ApplicationMenuInfo param)
        ///<summary>同步信息</summary>
        ///<param name="param">应用菜单信息</param>
        public void SyncFromPackPage(ApplicationMenuInfo param)
        {
            ibatisMapper.Insert(StringHelper.ToProcedurePrefix(string.Format("{0}_SyncFromPackPage", tableName)), param);
        }
 /// <summary>修改记录</summary>
 /// <param name="param">实例<see cref="ApplicationMenuInfo"/>详细信息</param>
 public void Update(ApplicationMenuInfo param)
 {
     this.ibatisMapper.Update(StringHelper.ToProcedurePrefix(string.Format("{0}_Update", tableName)), param);
 }
        /// <summary>添加记录</summary>
        /// <param name="param">实例<see cref="ApplicationMenuInfo"/>详细信息</param>
        public void Insert(ApplicationMenuInfo param)
        {
            param.Code = DigitalNumberContext.Generate("Table_Application_Menu_Key_Code");

            this.ibatisMapper.Insert(StringHelper.ToProcedurePrefix(string.Format("{0}_Insert", tableName)), param);
        }