예제 #1
0
        /// <summary>
        /// 发布一个程序设计
        /// </summary>
        /// <param name="id"></param>
        /// <param name="localizer">语言包</param>
        /// <returns></returns>
        public string Publish(Guid id, IStringLocalizer localizer = null)
        {
            string key = "ProgramRun_" + id.ToString("N");

            Cache.IO.Remove(key);
            Model.Program programModel = Get(id);
            if (null == programModel)
            {
                return(localizer == null ? "没有找到要发布的程序!" : localizer["NotFoundModel"]);
            }
            //更新状态
            programModel.Status = 1;
            Update(programModel);

            Model.ProgramRun programRunModel = GetRunModel(id);
            if (null == programRunModel)
            {
                return(localizer == null ? "没有找到要发布的程序!" : localizer["NotFoundModel"]);
            }

            #region 加入应用程序库
            AppLibrary appLibrary = new AppLibrary();
            var        appModel   = appLibrary.GetByCode(id.ToString());
            bool       isAdd      = false;
            if (null == appModel)
            {
                isAdd    = true;
                appModel = new Model.AppLibrary
                {
                    Id   = Guid.NewGuid(),
                    Code = id.ToString()
                };
            }
            appModel.Address  = "/RoadFlowCore/ProgramDesigner/Run?programid=" + id.ToString();
            appModel.OpenMode = 0;
            appModel.Title    = programRunModel.Name;
            appModel.Type     = programRunModel.Type;

            //多语言要写入不同语言的标题,这里只写一种
            appModel.Title_en = programRunModel.Name;
            appModel.Title_zh = programRunModel.Name;

            if (isAdd)
            {
                appLibrary.Add(appModel);
            }
            else
            {
                appLibrary.Update(appModel);
            }
            #endregion

            #region 加按钮到应用程序库
            AppLibraryButton appLibraryButton = new AppLibraryButton();
            var buttons        = appLibraryButton.GetListByApplibraryId(appModel.Id);
            var programButtons = new ProgramButton().GetAll(id);
            foreach (var button in programButtons)
            {
                var  model       = buttons.Find(p => p.Id == button.Id);
                bool isAddButton = false;
                if (null == model)
                {
                    isAddButton = true;
                    model       = new Model.AppLibraryButton
                    {
                        Id = button.Id
                    };
                }
                model.AppLibraryId   = appModel.Id;
                model.ButtonId       = button.ButtonId;
                model.Events         = button.ClientScript;
                model.Ico            = button.Ico;
                model.IsValidateShow = button.IsValidateShow;
                model.Name           = button.ButtonName;
                model.ShowType       = button.ShowType;
                model.Sort           = button.Sort;
                if (isAddButton)
                {
                    appLibraryButton.Add(model);
                }
                else
                {
                    appLibraryButton.Update(model);
                }
            }
            foreach (var button in buttons)
            {
                if (!programButtons.Exists(p => p.Id == button.Id))
                {
                    appLibraryButton.Delete(button.Id);
                }
            }
            #endregion
            return("1");
        }
예제 #2
0
        /// <summary>
        /// 得到菜单JSON(树型)
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="rootDir"></param>
        /// <param name="showSource">是否显示菜单来源(在查看人员菜单设置时用到)</param>
        /// <returns></returns>
        public string GetUserMenuJsonString(Guid userID, string rootDir = "", bool showSource = false)
        {
            Menu       Menu      = new Menu();
            AppLibrary Applibary = new AppLibrary();
            DataTable  appDt     = menuData.GetMenuAppDataTable();

            if (appDt.Rows.Count == 0)
            {
                return("[]");
            }

            var root = appDt.Select(string.Format("ParentId='{0}'", Guid.Empty.ToString()));

            if (root.Length == 0)
            {
                return("[]");
            }
            List <Model.MenuUser> menuusers = new MenuUser().GetAll();
            var apps = appDt.Select(string.Format("ParentId='{0}'", root[0]["Id"].ToString()));

            StringBuilder json    = new StringBuilder("", 1000);
            DataRow       rootDr  = root[0];
            string        params0 = string.Empty;
            //var menu0 = menuusers.Find(p => p.MenuID == rootDr["ID"].ToString().ToGuid() && p.SubPageID == Guid.Empty && p.Users.Contains(userID.ToString(), StringComparison.CurrentCultureIgnoreCase));
            //if (menu0 != null)
            //{
            //    params0 = menu0.Params;
            //}

            //多语言从不同的字段读取标题
            string language = Tools.GetCurrentLanguage();
            string titleKey = language.Equals("en-US") ? "Title_en" : language.Equals("zh") ? "Title_zh" : "Title";

            json.Append("{");
            json.AppendFormat("\"id\":\"{0}\",", rootDr["Id"].ToString());
            json.AppendFormat("\"title\":\"{0}\",", rootDr[titleKey].ToString().Trim());
            json.AppendFormat("\"ico\":\"{0}\",", rootDr["Ico"].ToString());
            json.AppendFormat("\"color\":\"{0}\",", rootDr["IcoColor"].ToString());
            json.AppendFormat("\"link\":\"{0}\",", GetAddress(rootDr).ToString(), params0);
            json.AppendFormat("\"model\":\"{0}\",", rootDr["OpenMode"].ToString());
            json.AppendFormat("\"width\":\"{0}\",", rootDr["Width"].ToString());
            json.AppendFormat("\"height\":\"{0}\",", rootDr["Height"].ToString());
            json.AppendFormat("\"hasChilds\":\"{0}\",", apps.Length > 0 ? "1" : "0");
            json.AppendFormat("\"childs\":[");

            StringBuilder json1        = new StringBuilder(apps.Length * 100);
            string        sourceMember = string.Empty;

            #region 加载个人快捷方式
            if (!showSource)
            {
                var shortcuts = new UserShortcut().GetListByUserId(userID);
                if (shortcuts.Count > 0)
                {
                    json1.Append("{");
                    json1.AppendFormat("\"id\":\"{0}\",", Guid.NewGuid());
                    json1.AppendFormat("\"title\":\"{0}\",", "快捷菜单");
                    json1.AppendFormat("\"ico\":\"{0}\",", "");
                    json1.AppendFormat("\"color\":\"{0}\",", "");
                    json1.AppendFormat("\"link\":\"{0}\",", "");
                    json1.AppendFormat("\"model\":\"{0}\",", "");
                    json1.AppendFormat("\"width\":\"{0}\",", "");
                    json1.AppendFormat("\"height\":\"{0}\",", "");
                    json1.AppendFormat("\"hasChilds\":\"1\",");
                    json1.AppendFormat("\"childs\":[");
                    StringBuilder jsonShortcut = new StringBuilder();
                    foreach (var shortcut in shortcuts)
                    {
                        string params1 = string.Empty;
                        var    menu    = menuusers.FindAll(p => p.MenuId == shortcut.MenuId && p.Users.ContainsIgnoreCase(userID.ToString()));
                        if (menu.Count > 0)
                        {
                            StringBuilder psb = new StringBuilder();
                            foreach (var m in menu.FindAll(p => !p.Params.IsNullOrEmpty()).GroupBy(p => p.Params))
                            {
                                psb.Append(m.Key.Trim1());
                                psb.Append("&");
                            }
                            params1 = psb.ToString().TrimEnd('&');
                        }
                        if (!HasUse(shortcut.MenuId, userID, menuusers, out sourceMember, out params1, showSource))
                        {
                            continue;
                        }
                        var menudts = appDt.Select(string.Format("ID='{0}'", shortcut.MenuId.ToString()));
                        if (menudts.Length > 0)
                        {
                            DataRow dr     = menudts[0];
                            var     childs = appDt.Select("ParentID='" + dr["ID"].ToString() + "'");
                            jsonShortcut.Append("{");
                            jsonShortcut.AppendFormat("\"id\":\"{0}\",", dr["ID"].ToString());
                            jsonShortcut.AppendFormat("\"title\":\"{0}\",", dr[titleKey].ToString().Trim1());
                            jsonShortcut.AppendFormat("\"ico\":\"{0}\",", dr["Ico"].ToString());
                            jsonShortcut.AppendFormat("\"color\":\"{0}\",", dr["IcoColor"].ToString());
                            jsonShortcut.AppendFormat("\"link\":\"{0}\",", GetAddress(dr, params1));
                            jsonShortcut.AppendFormat("\"model\":\"{0}\",", dr["OpenMode"].ToString());
                            jsonShortcut.AppendFormat("\"width\":\"{0}\",", dr["Width"].ToString());
                            jsonShortcut.AppendFormat("\"height\":\"{0}\",", dr["Height"].ToString());
                            jsonShortcut.AppendFormat("\"hasChilds\":\"{0}\",", childs.Length > 0 ? "1" : "0");
                            jsonShortcut.AppendFormat("\"childs\":[]");
                            jsonShortcut.Append("},");
                        }
                    }
                    json1.Append(jsonShortcut.Length > 0 ? jsonShortcut.ToString().TrimEnd(',') : "");
                    json1.Append("]");
                    json1.Append("}");
                    if (apps.Length > 0)
                    {
                        json1.Append(",");
                    }
                }
            }
            #endregion

            for (int i = 0; i < apps.Length; i++)
            {
                string  params1 = string.Empty;
                DataRow dr      = apps[i];
                if (!HasUse(dr["Id"].ToString().ToGuid(), userID, menuusers, out sourceMember, out params1, showSource))
                {
                    continue;
                }
                var  childs    = appDt.Select("ParentId='" + dr["Id"].ToString() + "'");
                bool hasChilds = false;
                foreach (var child in childs)
                {
                    if (HasUse(child["ID"].ToString().ToGuid(), userID, menuusers, out sourceMember, out params1, showSource))
                    {
                        hasChilds = true;
                        break;
                    }
                }
                json1.Append("{");
                json1.AppendFormat("\"id\":\"{0}\",", dr["ID"].ToString());
                json1.AppendFormat("\"title\":\"{0}{1}\",", dr[titleKey].ToString().Trim1(), showSource ? "<span style='margin-left:4px;color:#666;'>[" + sourceMember + "]</span>" : "");
                json1.AppendFormat("\"ico\":\"{0}\",", dr["Ico"].ToString());
                json1.AppendFormat("\"color\":\"{0}\",", dr["IcoColor"].ToString());
                json1.AppendFormat("\"link\":\"{0}\",", GetAddress(dr, params1));
                json1.AppendFormat("\"model\":\"{0}\",", dr["OpenMode"].ToString());
                json1.AppendFormat("\"width\":\"{0}\",", dr["Width"].ToString());
                json1.AppendFormat("\"height\":\"{0}\",", dr["Height"].ToString());
                json1.AppendFormat("\"hasChilds\":\"{0}\",", hasChilds ? "1" : "0");
                json1.AppendFormat("\"childs\":[");

                json1.Append("]");
                json1.Append("}");
                json1.Append(",");
            }
            json.Append(json1.ToString().TrimEnd(','));
            json.Append("]");
            json.Append("}");
            return(json.ToString());
        }