/// <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"); }
/// <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()); }