public override void ProcessActivity(WebRequest request, WebResponse response) { var strUser = this.AsyncDialog("Id", d => { var dlg = new RoleDialog(); dlg.Title = "角色管理"; dlg.IsPage = true; dlg.RefreshEvent = "Role"; if (request.IsMaster) { dlg.Menu("新建", "Settings", "User", new UMC.Web.WebMeta().Put("Id", "News")); } return(dlg); }); if (request.IsMaster == false) { this.Prompt("只有管理员才能管理账户角色"); } var userId = UMC.Data.Utility.Guid(strUser) ?? Guid.Empty; var userEntity = UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.Role>(); var user = userEntity.Where.And().Equal(new UMC.Data.Entities.Role { Id = userId }).Entities.Single() ?? new UMC.Data.Entities.Role(); var setting = this.AsyncDialog("Setting", d => { var frm = new UIFormDialog(); frm.Title = "用户角色"; frm.AddText("角色名", "Rolename", user.Rolename); frm.AddTextarea("角色说明", "Explain", user.Explain).Put("tip", "角色说明"); return(frm); }); if (user.Id.HasValue) { userEntity.Update(new UMC.Data.Entities.Role { Rolename = setting["Rolename"], Explain = setting["Explain"] }); } else { userEntity.Insert(new UMC.Data.Entities.Role { Id = Guid.NewGuid(), Rolename = setting["Rolename"], Explain = setting["Explain"] }); } this.Context.Send(new UMC.Web.WebMeta().Put("type", "Role"), true); }
void Design(WebRequest request, Guid itemId) { var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.And().Equal(new Design_Item { Id = itemId }); Design_Item item = entity.Single(); if (item == null) { Design_Item max = entity .Where.Reset().And().Equal(new Design_Item() { design_id = Guid.Empty, for_id = Guid.Empty }) //Design_id(Utility.uuidEmpty).For_id(Utility.uuidEmpty)) .Entities.Max(new Design_Item { Seq = 0 }); max.Seq = (max.Seq ?? 0) + 1; item = max; } Design_Item fitem = item; WebMeta meta = this.AsyncDialog(g => { UIFormDialog from = new UIFormDialog(); from.Title = ("页面分类项"); from.AddText("标题", "ItemName", fitem.ItemName); from.AddNumber("顺序", "Seq", fitem.Seq); from.Submit("确认", request, "Design"); return(from); }, "Setting"); Design_Item newItem = new Design_Item() { ItemName = meta.Get("ItemName"), ModifiedDate = DateTime.Now, Seq = Utility.Parse(meta.Get("Seq"), 0) }; entity.Where.Reset().And().Equal(new Design_Item() { Id = itemId }); entity.IFF(e => e.Update(newItem) == 0, e => { newItem.design_id = Guid.Empty; newItem.for_id = Guid.Empty; newItem.Id = Guid.NewGuid(); newItem.Type = UIDesigner.StoreDesignType; e.Insert(newItem); }); this.Context.Send("Design", true); }
void Seq(WebRequest request, WebResponse response, Design_Item item) { var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.And().Equal(new Design_Item() { Id = (item.Id) }); WebMeta meta = this.AsyncDialog(g => { UIFormDialog from = new UIFormDialog(); from.Title = ("调整顺序"); from.AddNumber("展示顺序", "Seq", item.Seq); return(from); }, "Setting"); entity.Update(new Design_Item() { ModifiedDate = DateTime.Now, Seq = Utility.IntParse(meta.Get("Seq"), 0) }); }
void Icons(WebRequest request, Guid itemId) { var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.And().Equal(new Design_Item() { Id = itemId }); Design_Item item = entity.Single(); var webr = UMC.Data.WebResource.Instance(); WebMeta meta = this.AsyncDialog(g => { Design_Item finalItem = item; switch (item.Type ?? 0) { case UIDesigner.StoreDesignTypeItem: break; case UIDesigner.StoreDesignTypeIcons: Design_Item item2 = new Design_Item() { Id = Guid.NewGuid(), design_id = item.design_id, for_id = item.Id, ModifiedDate = DateTime.Now, Type = UIDesigner.StoreDesignTypeItem }; Design_Item max = entity .Where.And().Equal(new Design_Item() { design_id = item.design_id, for_id = item.Id }) .Entities.Max(new Design_Item() { Seq = 0 }); //.Seq+1; item2.Seq = (max.Seq ?? 0) + 1; entity.Insert(item2); finalItem = item2; request.Arguments.Put("Id", finalItem.Id); break; default: this.Prompt("类型错误"); break; } UIFormDialog from = new UIFormDialog(); from.Title = ("图标"); from.AddFile("图片", "_Image", webr.ImageResolve(finalItem.Id.Value, "1", 4)) .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", finalItem.Id).Put("seq", "1")); from.AddText("标题", "ItemName", finalItem.ItemName); from.AddNumber("顺序", "Seq", finalItem.Seq); from.Submit("确认", request, "Design"); return(from); }, "Setting"); entity.Where.Reset().And().Equal(new Design_Item() { Id = item.Id }); entity.Update(new Design_Item() { ItemName = meta.Get("ItemName"), ModifiedDate = DateTime.Now, Seq = Utility.IntParse(meta.Get("Seq"), 0) }); }
void Banner(WebRequest request, Guid itemId) { UMC.Data.WebResource webr = UMC.Data.WebResource.Instance(); var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.Reset().And().Equal(new Design_Item() { Id = itemId }); Design_Item item = entity.Single(); WebMeta meta = this.AsyncDialog(g => { switch (item.Type ?? 0) { case UIDesigner.StoreDesignTypeItem: break; case UIDesigner.StoreDesignTypeBanners: Design_Item item2 = new Design_Item() { Id = Guid.NewGuid(), design_id = item.design_id, for_id = item.Id, ModifiedDate = DateTime.Now, Type = UIDesigner.StoreDesignTypeItem }; Design_Item max = entity .Where.And().Equal(new Design_Item() { design_id = item.design_id, for_id = item.Id }) .Entities.Max(new Design_Item() { Seq = 0 }); //.Seq+1; item2.Seq = (max.Seq ?? 0) + 1; entity.Insert(item2); item = item2; request.Arguments.Put("Id", item.Id); break; default: this.Prompt("类型错误"); break; } var from = new UIFormDialog() { Title = "展示图片" }; var size = request.Arguments["Size"]; if (size == "none") { size = "默认尺寸100:55"; } else { size = String.Format("参考尺寸:{0}", size); } from.AddFile(size, "_Image", webr.ResolveUrl(String.Format("{0}{1}/1/0.jpg!100", UMC.Data.WebResource.ImageResource, item.Id))) .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", item.Id).Put("seq", "1")); from.AddNumber("展示顺序", "Seq", item.Seq); from.Submit("确认", request, "Design"); return(from); }, "Setting"); entity.Where.Reset().And().Equal(new Design_Item() { Id = item.Id }); entity.Update(new Design_Item { Data = UMC.Data.JSON.Serialize(meta), ModifiedDate = DateTime.Now }); }
void Config(WebRequest request, Guid itemId) { UMC.Data.WebResource webr = UMC.Data.WebResource.Instance(); var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.Reset().And().Equal(new Design_Item() { Id = itemId }); Design_Item item = entity.Single(); switch (item.Type ?? 0) { case UIDesigner.StoreDesignTypeItem: case UIDesigner.StoreDesignTypeProduct: item = entity.Where.Reset().And().Equal(new Design_Item() { Id = item.for_id }).Entities.Single(); break; } Design_Item finalItem = item; WebMeta meta = this.AsyncDialog(g => { WebMeta data = UMC.Data.JSON.Deserialize <WebMeta>(finalItem.Data) ?? new UMC.Web.WebMeta(); //WebMeta data = Utility.isNull(UMC.Data.JSON.deserialize(finalItem.Data, WebMeta.class), new UMC.Web.WebMeta()); UIFormDialog from = new UIFormDialog(); from.Title = ("配置"); from.AddText("缩进", "Padding", data.Get("Padding") ?? "0"); from.AddNumber("展示顺序", "Seq", finalItem.Seq); switch (finalItem.Type) { case UIDesigner.StoreDesignTypeBanners: from.Title = ("广告横幅"); break; case UIDesigner.StoreDesignTypeItems: from.Title = ("分块区配置"); from.AddRadio("风格", "Model").Put("展示标题", "Title", data.Get("Model").Equals("Title") || data.ContainsKey("Model") == false).Put("仅显示图片 ", "Image", data.Get("Model").Equals("Image")); break; case UIDesigner.StoreDesignTypeTitleDesc: from.Title = ("图文区配置"); String total = data.Get("Total") ?? "1"; // data["Total"] ??"1"; String model = data.Get("Hide") ?? ""; // data["Hide"] ??""; ; from.AddCheckBox("界面", "Hide", "T").Put("不显示标题", "HideTitle", model.IndexOf("HideTitle") > -1) .Put("不显描述 ", "HideDesc", model.IndexOf("HideDesc") > -1) .Put("不显左角价格 ", "HideLeft", model.IndexOf("HideLeft") > -1) .Put("不显右角说明 ", "HideRight", model.IndexOf("HideRight") > -1); from.AddNumber("图文数量", "Total", Utility.Parse(total, 0)); break; case UIDesigner.StoreDesignTypeCaption: from.Title = "标题配置"; from.AddText("标题", "ItemName", item.ItemName); from.AddCheckBox("标题隐藏", "Show", "Y").Put("隐藏", "Hide", data["Show"] == "Hide"); break; case UIDesigner.StoreDesignTypeProducts: from.Title = "商品展示配置"; from.AddText("标题", "ItemName", item.ItemName); from.AddRadio("展示风格", "Model").Put("分块展示", "Area", data["Model"] == "Area" || data.ContainsKey("Model") == false).Put("分行展示 ", "Rows", data["Model"] == "Rows"); from.AddNumber("单行商品数", "Total", data["Total"] ?? "2"); break; case UIDesigner.StoreDesignTypeCustom: String config = data.Get("Config"); if (String.IsNullOrEmpty(config) == false && config.StartsWith("UI")) { if (config.StartsWith("UI")) { this.Context.Response.Redirect("Design", config); } var d = config.IndexOf('.'); if (d > 0) { this.Context.Response.Redirect("Design", config.Substring(d + 1)); } } this.Prompt("参数错误"); break; default: this.Prompt("参数错误"); break; } from.Submit("确认", request, "Design"); return(from); }, "Setting"); String show = meta.Get("Show"); if (String.IsNullOrEmpty(show) == false) { meta.Put("Show", show.Contains("Hide") ? "Hide" : "Show"); } entity.Where.Reset().And().Equal(new Design_Item() { Id = item.Id }); entity.Update(new Design_Item { ItemName = meta["ItemName"], ModifiedDate = DateTime.Now, Seq = UMC.Data.Utility.IntParse(meta["Seq"], 0), Data = UMC.Data.JSON.Serialize(meta) }); }
public override void ProcessActivity(WebRequest request, WebResponse response) { var model = request.Model; var proid = UMC.Data.Utility.Guid(this.AsyncDialog("Id", g => this.DialogValue(request.Url.ToString()))); if (proid.HasValue == false) { this.Prompt("参数不正确"); } var subEntity = Utility.CMS.ObjectEntity <UMC.Data.Entities.Subject>(); var sub = subEntity.Where.And().Equal(new Subject { Id = proid }).Entities.Single(); if (sub == null) { this.Prompt("参数不正确"); } var Type = this.AsyncDialog("Type", g => { //return this.DialogValue("auto"); var sheet = new Web.UISheetDialog() { Title = "更多" }; //屏蔽 sheet.Options.Add(new Web.UIClick("Id", proid.ToString(), "Type", "Share") { Command = request.Command, Model = model, Text = "分享到应用" }); //sheet.Options.Add(new Web.UIClick("Id", proid.ToString(), "Type", "0") { Command = request.Command, Model = model, Text = "屏蔽此作者" }); //sheet.Options.Add(new Web.UIClick("Id", proid.ToString(), "Type", "1") { Command = request.Command, Model = model, Text = "屏蔽此项目" }); sheet.Options.Add(new Web.UIClick("Id", proid.ToString(), "Type", "Off") { Command = request.Command, Model = model, Text = "举报内容" }); return(sheet); }); var user = Security.Identity.Current; switch (Type) { case "Off": var frm = this.AsyncDialog("Settings", g => { var fm = new UIFormDialog(); fm.Title = "举报"; fm.AddRadio("违规性质", "Type").Put("内容质量差").Put("旧闻重复").Put("内容不实").Put("标题夸张").Put("低俗色情") .Put("其他问题").Put("侵犯名誉/商誉/隐私/肖像权"); fm.AddFile("证明材料", "Url", ""); fm.AddTextarea("举报描述", "Description", ""); return(fm); }); var url = new Uri(frm["Url"]); var s = "UserResources/TipOff" + url.AbsolutePath.Substring(url.AbsolutePath.IndexOf('/', 2)); // Data.WebResource.Instance().Transfer(url, s); var t = new SubjectTipOff(); Data.Reflection.SetProperty(t, frm.GetDictionary()); t.user_id = user.Id; t.Url = Data.WebResource.Instance().ResolveUrl(s); t.sub_id = sub.Id; t.CreationTime = DateTime.Now; Utility.CMS.ObjectEntity <SubjectTipOff>().Where.And().Equal(new SubjectTipOff { user_id = user.Id, sub_id = sub.Id }) .Entities.IFF(e => e.Update(t) == 0, e => e.Insert(t)); if (sub.TipOffs.HasValue) { subEntity.Update("{0}+{1}", new Subject { TipOffs = 1 }); } else { subEntity.Update(new Subject { TipOffs = 1 }); } this.Prompt("举报成功,我们将尽快处理"); break; case "Share": response.Redirect(request.Model, "Share", proid.ToString()); break; default: case "Block": var ui = this.AsyncDialog("UI", g => this.DialogValue("none")); var section = this.AsyncDialog("section", g => this.DialogValue("1")); var row = this.AsyncDialog("row", g => this.DialogValue("1")); var frm2 = Utility.IntParse(this.AsyncDialog("Settings", g => { if (Utility.IntParse(Type, -1) > -1) { return(this.DialogValue(Type)); } var fm = new UISelectDialog(); fm.Title = "屏蔽"; fm.Options.Put("屏蔽此作者", "0").Put("屏蔽此项目", "1"); return(fm); }), 0); var block = new ProjectBlock { user_id = user.Id, ref_id = sub.user_id, Type = frm2 }; switch (frm2) { case 0: block.ref_id = sub.user_id; break; case 1: block.ref_id = sub.project_id; break; } if (block.ref_id.HasValue) { Utility.CMS.ObjectEntity <ProjectBlock>().Where.And().Equal(block) .Entities.IFF(e => e.Count() == 0, e => e.Insert(block)); } if (ui == "none") { this.Prompt("屏蔽成功"); } else { var editer = new Web.UISection.Editer(section, row, ui); editer.Delete(); editer.ReloadSinle(); editer.Builder(this.Context, ui, true); } break; } }
public override void ProcessActivity(WebRequest request, WebResponse response) { var user = UMC.Security.Identity.Current; var ids = new List <Guid>(); var itemId = Utility.Guid(this.AsyncDialog("Id", g => this.DialogValue(Guid.NewGuid().ToString())), true);//, true).Value; var config = this.AsyncDialog("Config", g => { return(this.DialogValue("none")); }); var pids = new List <Guid>(); var items = new List <Design_Item>(); var itemsEntity = Database.Instance().ObjectEntity <Design_Item>() .Where.And().Equal(new Design_Item { Id = itemId }); var size = this.AsyncDialog("Size", g => { return(this.DialogValue("none")); }); var webr = UMC.Data.WebResource.Instance(); var ts = this.AsyncDialog("Setting", g => { var fm = new UIFormDialog() { Title = "界面配置" }; var item = itemsEntity.Entities.Single(); WebMeta meta = new UMC.Web.WebMeta(); if (item != null) { meta = UMC.Data.JSON.Deserialize <WebMeta>(item.Data) ?? meta; if (String.Equals(config, "none")) { if (meta.ContainsKey("Config")) { config = meta["Config"]; } } } if (String.Equals(config, "none")) { this.Prompt("您配置错误"); } else if (config == "UISEO") { fm.Title = "SEO优化"; fm.AddTextarea("标题", "Title", meta["Title"]); fm.AddTextarea("关键词", "Keywords", meta["Keywords"]); fm.AddTextarea("描述", "Description", meta["Description"]); return(fm); } request.Arguments["Config"] = config; var keyIndex = config.IndexOf('.'); if (keyIndex > -1) { config = config.Substring(keyIndex + 1); } if (String.Equals(size, "none")) { size = "注意图片尺寸"; } else { size = String.Format("图片尺寸:{0}", size); } var pictureEntity = Database.Instance().ObjectEntity <Design_Config>(); pictureEntity.Order.Asc(new Design_Config { Sequence = 0 }); var pices = pictureEntity.Where.And().Equal(new Design_Config { GroupBy = config }).Entities.Query(); if (new List <Design_Config>(pices).Exists(dr => dr.Value == "Image" && dr.Name == "none") == false) { fm.AddFile(size, "_Image", webr.ResolveUrl(String.Format("{0}{1}/1/0.jpg!100", UMC.Data.WebResource.ImageResource, itemId))) //.Put("Model", "Settings").Put("Command", "Jpeg").Put("SendValue", new WebADNuke.Web.WebMeta().Put("Id", itemId)); .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", itemId).Put("seq", "1", "type", "jpg")); } UMC.Data.Utility.Each(pices, dr => { if (dr.Value == "Image" && dr.Name == "none") { } else { fm.AddText(dr.Name, dr.Value, meta[dr.Value]); } }); if (item == null) { item = itemsEntity.Reset().And().Equal(new Design_Item { design_id = UMC.Data.Utility.Guid(config, true) }).Entities.Max(new Design_Item { Seq = 0 }); item.Seq = (item.Seq ?? 0) + 1; } fm.AddNumber("展示顺序", "Seq", item.Seq ?? 0); return(fm); }); var seq = UMC.Data.Utility.IntParse(ts["Seq"], 0); ts.Remove("Seq"); ts.Remove("Image"); ts["Config"] = config; var ite = new Design_Item { Type = UIDesigner.StoreDesignTypeCustom, ModifiedDate = DateTime.Now, Data = UMC.Data.JSON.Serialize(ts), Id = itemId, Seq = seq }; itemsEntity.Entities.IFF(e => e.Update(ite) == 0, e => { ite.design_id = UMC.Data.Utility.Guid(config, true); e.Insert(ite); }); this.Context.Send(new UMC.Web.WebMeta().Put("type", "Design"), true); }
public override void ProcessActivity(UMC.Web.WebRequest request, UMC.Web.WebResponse response) { if (request.IsMaster == false) { this.Prompt("只有管理员才能配置"); } var configKey = this.AsyncDialog("Key", g => { var form = request.SendValues ?? new UMC.Web.WebMeta(); if (form.ContainsKey("limit") == false) { this.Context.Send(new UISectionBuilder(request.Model, request.Command, new WebMeta(request.Arguments.GetDictionary())) .RefreshEvent("ProviderConfiguration") .Builder(), true); } var key = this.AsyncDialog("Type", "FILES"); var ui = UISection.Create(new UITitle("配置文件")); if (key == "FILES") { var files = System.IO.Directory.GetFiles(Data.Reflection.ConfigPath(""), "*.xml"); foreach (var f in files) { var name = f.Substring(f.LastIndexOf(System.IO.Path.DirectorySeparatorChar) + 1); name = name.Substring(0, name.IndexOf('.')); var d = ""; ui.Title.Right(new UIEventText("新建").Click(new UIClick("Key", "NEW").Send(request.Model, request.Command))); switch (name.ToLower()) { case "assembly": d = "处理类配置"; break; case "database": d = "数据库配置"; break; case "umc": d = "云模块配置"; break; case "parser": d = "转码配置"; break; case "payment": d = "支付配置"; break; } ui.AddCell(name, d, UIClick.Query(new WebMeta("Type", name))); } } else { var keys = key.Split('$'); var cfg = UMC.Configuration.ProviderConfiguration.GetProvider(Reflection.ConfigPath(keys[0] + ".xml"));//, "*.xml"); //ui.AddCell("") if (keys.Length == 1) { ui.Title.Right(new UIEventText("新建").Click(new UIClick("Key", keys[0] + "$NEW").Send(request.Model, request.Command))); ui.AddCell('\uf112', "上一层", keys[0], UIClick.Query(new WebMeta("Type", "FILES"))); var ui2 = ui.NewSection(); for (var i = 0; i < cfg.Count; i++) { var p = cfg[i]; ui2.AddCell(p.Name, "", UIClick.Query(new WebMeta("Type", String.Format("{0}${1}", keys[0], p.Name)))); } } else { var p = cfg[keys[1]]; ui.Title.Right(new UIEventText("新建").Click(new UIClick("Key", keys[0] + "$" + p.Name + "$NEW").Send(request.Model, request.Command))); ui.AddCell('\uf112', "上一层", p.Name, UIClick.Query(new WebMeta("Type", keys[0]))); ui.AddCell("类型类型", p.Type); var ui2 = ui.NewSection(); for (var i = 0; i < p.Attributes.Count; i++) { ui2.AddCell(p.Attributes.GetKey(i), new UIClick(g, String.Format("{0}${1}${2}", keys[0], p.Name, p.Attributes.GetKey(i))).Send(request.Model, request.Command)); } } } response.Redirect(ui); return(this.DialogValue("none")); }); switch (configKey) { case "NEW": var fName = this.AsyncDialog("Setting", g => { var fm = new UIFormDialog(); fm.Title = "新建文件配置"; fm.AddText("新建文件名", "Name", String.Empty); fm.Submit("确认", request, "ProviderConfiguration"); return(fm); }); var pf = Reflection.ConfigPath(fName["Name"] + ".xml"); if (System.IO.File.Exists(pf) == false) { new UMC.Configuration.ProviderConfiguration().WriteTo(pf); this.Context.Send("ProviderConfiguration", true); } else { this.Prompt("此文件已经存在"); } break; default: var ckeys = configKey.Split('$'); var cfg = UMC.Configuration.ProviderConfiguration.GetProvider(Reflection.ConfigPath(ckeys[0] + ".xml")); if (ckeys.Length == 3) { var pro = cfg[ckeys[1]]; var ps = this.AsyncDialog("Setting", g => { var fm = new UIFormDialog(); fm.Title = ckeys[1] + "配置"; if (ckeys[2] == "NEW") { fm.AddText("新建属性名", "Name", String.Empty); fm.AddText("新建属性值", "Value", String.Empty); } else { fm.AddTextValue().Add("属性名", ckeys[2]); fm.AddText("属性值", "Value", pro[ckeys[2]]); } fm.Submit("确认", request, "ProviderConfiguration"); return(fm); }); var value = ps["Value"]; if (value == "none") { pro.Attributes.Remove(ckeys[2]); } else { pro.Attributes[ps["Name"] ?? ckeys[2]] = ps["Value"]; } cfg.WriteTo(Reflection.ConfigPath(ckeys[0] + ".xml")); this.Context.Send("ProviderConfiguration", true); } else if (ckeys.Length == 2) { var pro = cfg[ckeys[1]] ?? Provider.Create("", ""); var ps = this.AsyncDialog("Setting", g => { var fm = new UIFormDialog(); fm.Title = ckeys[0] + "节点"; if (ckeys[1] == "NEW") { fm.AddText("节点名", "Name", String.Empty); fm.AddText("类型值", "Value", String.Empty); } else { fm.AddText("节点名", "Name", pro.Name); fm.AddText("类型值", "Value", pro.Type); } fm.Submit("确认", request, "ProviderConfiguration"); return(fm); }); var pro2 = Provider.Create(ps["Name"], ps["Value"]); pro2.Attributes.Add(pro.Attributes); cfg.Providers[pro2.Name] = pro2; cfg.WriteTo(Reflection.ConfigPath(ckeys[0] + ".xml")); this.Context.Send("ProviderConfiguration", true); } break; } }
public override void ProcessActivity(WebRequest request, WebResponse response) { String group = request.Command; var entity = Database.Instance().ObjectEntity <Design_Config>(); entity.Order.Asc(new Design_Config() { Sequence = 0 }); Guid?vid = UMC.Data.Utility.Guid(this.AsyncDialog("Id", s => { entity.Where.And().Equal(new Design_Config() { GroupBy = (group) }); UIGridDialog rdoDig = UIGridDialog.Create(new UIGridDialog.Header("id", 0) .PutField("text", "标题").PutField("value", "代码") , entity.Query()); rdoDig.Menu("新建配置", request.Model, request.Command, "News"); rdoDig.RefreshEvent = "Settings"; rdoDig.IsPage = (true);// = true; rdoDig.Title = ("数据配置"); return(rdoDig); }));// ??Guid.Empty; WebMeta configs = this.AsyncDialog(s => { UIFormDialog fm = new UIFormDialog(); if (vid == null) { fm.Title = ("新增配置值"); } else { fm.Title = ("修改配置值"); } entity.Where.And().Equal(new Design_Config() { Id = (vid) }); Design_Config con = null; if (vid != null) { con = entity.Single(); } if (con == null) { entity.Where.Reset().And().Equal(new Design_Config() { GroupBy = (group) }); con = entity.Max(new Design_Config() { Sequence = (0) }); } fm.AddText("配置名称", "Name", con.Name); fm.AddText("配置标题", "Value", con.Value); fm.AddNumber("显示顺序", "Sequence", con.Sequence); return(fm); }, "Config"); Design_Config cv = new Design_Config(); UMC.Data.Reflection.SetProperty(cv, configs.GetDictionary()); if (vid == null) { cv.GroupBy = group; cv.Id = Guid.NewGuid();///.randomUUID(); entity.Insert(cv); } else { cv.Id = vid; entity.Where.Reset().And().Equal(new Design_Config() { Id = (vid) }); if (cv.Sequence == -1) { entity.Delete(); } else { entity.Update(cv); } } this.Context.Send("Settings", true); }
protected virtual void Scanning(Uri url) { var domain = new Uri(url, Data.WebResource.Instance().WebDomain()).AbsoluteUri; if (domain.Contains(url.Host)) { var paths = new List <String>(); paths.AddRange(url.LocalPath.Trim('/').Split('/')); if (paths.Count == 0) { return; } switch (paths[0]) { case "download": case "app": if (String.IsNullOrEmpty(url.Query)) { this.OpenUrl(url); } var query = url.Query.Substring(1); var user = UMC.Security.Identity.Current; if (user.IsAuthenticated == false) { this.Context.Response.Redirect("Account", "Login"); } var dever = Data.Utility.Guid(query); if (dever.HasValue) { var webr = Data.WebResource.Instance(); this.AsyncDialog("Device", g => { webr.Push(dever.Value, new WebMeta().Put("msg", "扫码成功").Put("src", webr.ImageResolve(user.Id.Value, "1", 4))); var fm = new UIFormDialog(); fm.Title = "扫码登录"; var desc = new UI.UIDesc(new UMC.Web.WebMeta().Put("desc", "正在进行扫码登录").Put("icon", "\uF108")); desc.Desc("{icon}\n{desc}"); desc.Style.Align(1) .Color(0xaaa).Padding(40, 20).BgColor(0xfff).Name("icon", new UIStyle().Font("wdk").Size(160)); fm.Add(desc); fm.Submit("确认登录", this.Context.Request, "PC.Login"); return(fm); }); UMC.Security.AccessToken.Login(user, dever.Value, "PC"); webr.Push(dever.Value, new WebMeta().Put("msg", "OK").Put("type", "SignIn").Put("root", Data.Utility.GetRoot(this.Context.Request.Url))); this.Context.Send("PC.Login", true); } else { this.OpenUrl(url); } break; case "Click": case "Pager": var p = paths[0]; paths.RemoveAt(0); var data = new UMC.Web.WebMeta(); if (String.IsNullOrEmpty(url.Query) == false) { var query2 = System.Web.HttpUtility.ParseQueryString(url.Query.Substring(1)); for (var i = 0; i < query2.Count; i++) { var qV = query2.Get(i); var qK = query2.GetKey(i); if (String.IsNullOrEmpty(qK) == false) { if (String.IsNullOrEmpty(qV) == false) { data.Put(qK, qV); } else { data.Put("Id", qK); } } } } var model = "Corp"; var cmd = "Scanning"; if (paths.Count > 1) { model = paths[0]; cmd = paths[1]; paths.RemoveRange(0, 2); } var SValue = String.Empty; if (paths.Count == 1) { SValue = paths[0]; data.Put("Id", paths[0]); } else { while (paths.Count > 0) { if (paths.Count > 1) { data.Put(paths[0], paths[1]); } paths.RemoveRange(0, 2); } } if (p == "Click") { if (data.Count > 0) { if (String.IsNullOrEmpty(SValue) || data.Count > 1) { this.Context.Response.Redirect(model, cmd, data, true); } else { this.Context.Response.Redirect(model, cmd, SValue, true); } } else { this.Context.Response.Redirect(model, cmd, true); } } else { if (data.Count > 0) { this.Context.Send("Pager", new UMC.Web.WebMeta().Put("model", model, "cmd", cmd).Put("search", data), true); } else { this.Context.Send("Pager", new UMC.Web.WebMeta().Put("model", model, "cmd", cmd), true); } } break; } } }
public override void ProcessActivity(WebRequest request, WebResponse response) { var projectId = UMC.Data.Utility.Guid(this.AsyncDialog("Project", g => { this.Prompt("请输入项目"); return(new Web.UITextDialog() { Title = "项目" }); })).Value; var user = Security.Identity.Current; var project = Utility.CMS.ObjectEntity <UMC.Data.Entities.Project>() .Where.And().Equal(new Project { Id = projectId }).Entities.Single(); if (project == null) { this.Prompt("没有此项目"); } if (project.user_id != user.Id) { this.Prompt("只有项目创立人才能配置此权限"); } var setting = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>() .Where.And().Equal(new ProjectSetting { project_id = projectId, Type = 11 }).Entities.Single() ?? new ProjectSetting(); ProjectUserSetting projectSettings = new ProjectUserSetting(); if (setting.user_setting_id.HasValue) { projectSettings = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>() .Where.And().Equal(new ProjectUserSetting { Id = setting.user_setting_id, Type = 11 }).Entities.Single() ?? new ProjectUserSetting(); if (projectSettings.user_id == user.Id) { } else { this.AsyncDialog("Confirm", g => new UIConfirmDialog("此项目钉钉配置来源于引用,你确认移除从新配置吗")); projectSettings = new ProjectUserSetting(); //Utility.CMS.ObjectEntity<UMC.Data.Entities.ProjectSetting>() // .Where.And().Equal(new ProjectSetting { project_id = projectId, Type = 11 }).Entities // .Delete(); } } var type = this.AsyncDialog("Type", "No"); switch (type) { case "Dingtalk": var strt = UMC.Security.AccessToken.Current.Data["DingTalk-Setting"] as string; //, Utility.Guid(projectId)).Commit(); if (String.IsNullOrEmpty(strt)) { this.Prompt("当前非钉钉环境"); } var userSetting = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>() .Where.And().Equal(new ProjectUserSetting { Id = Utility.Guid(strt, true) }).Entities.Single(); if (userSetting == null) { this.Prompt("钉钉环境配置 错误,请从新登录"); } var setting2 = new ProjectSetting() { user_setting_id = userSetting.Id, project_id = project.Id, Type = 11 }; Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>() .Where.And().Equal(new ProjectSetting { project_id = projectId, Type = 11 }).Entities .IFF(e => e.Update(setting2) == 0, e => e.Insert(setting2)); this.Prompt("设置成功", false); this.Context.Send("Subject.Settings", true); break; } var settins = this.AsyncDialog("Setting", g => { var form = new UIFormDialog(); form.Title = "配置钉钉应用"; form.AddText("企业Id", "CorpId", projectSettings.CorpId); form.AddText("应用Id", "AgentId", projectSettings.AgentId); form.AddText("AppKey", "AppId", projectSettings.AppId); form.AddText("AppSecret", "AppSecret", projectSettings.AppSecret); form.Submit("确认", request, "Subject.Settings"); var strt = UMC.Security.AccessToken.Current.Data["DingTalk-Setting"] as string;//, Utility.Guid(projectId)).Commit(); if (String.IsNullOrEmpty(strt) == false) { form.AddUI("引用当前环境钉钉配置", "").Command(request.Model, "Dingtalk", new WebMeta().Put("Project", project.Id.ToString()).Put("Type", "Dingtalk")); } return(form); }); var AppId = settins["AppId"]; var AppSecret = settins["AppSecret"]; System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient(); var text = httpClient.GetStringAsync(String.Format("https://oapi.dingtalk.com/gettoken?appkey={0}&appsecret={1}", AppId, AppSecret)) .Result; var acc = Data.JSON.Deserialize(text) as Hashtable; var access_token = acc["access_token"] as string; var expires_in = acc["expires_in"] as string; if (String.IsNullOrEmpty(access_token)) { this.Prompt("钉钉应用配置不正确"); } else { var pseting = new ProjectUserSetting() { CorpId = settins["CorpId"], AgentId = settins["AgentId"], user_id = user.Id, Id = projectSettings.Id ?? Guid.NewGuid(), AppId = AppId, AccessToken = access_token, Type = 11, AppSecret = AppSecret, ExpiresTime = Utility.TimeSpan() + (Utility.IntParse(expires_in, 0) / 5) }; Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>() .Where.And().Equal(new ProjectUserSetting { Id = pseting.Id }).Entities.IFF(e => e.Update(pseting) == 0, e => e.Insert(pseting)); var setting2 = new ProjectSetting() { user_setting_id = pseting.Id, project_id = project.Id, Type = 11 }; Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>() .Where.And().Equal(new ProjectSetting { project_id = projectId, Type = 11 }).Entities .IFF(e => e.Update(setting2) == 0, e => e.Insert(setting2)); } this.Context.Send("Subject.Settings", true); }
protected UIClick Click(UIClick ui) { String type = this.AsyncDialog("Click", g => { UIRadioDialog di = new UIRadioDialog(); di.Title = ("关联功能"); ListItemCollection listItemCollection = di.Options;//new ListItemCollection(); listItemCollection.Add("连接扫一扫", "Scanning"); listItemCollection.Add("连接指令", "Setting"); listItemCollection.Add("连接拨号", "Tel"); listItemCollection.Add("连接网址", "Url"); return(di); }); switch (type) { case "Scanning": return(UIClick.Scanning()); case "Tel": return(UIClick.Tel(this.AsyncDialog("Tel", g => { UITextDialog di = new UITextDialog(); di.Title = ("拨号号码"); return di; }))); case "Url": return(UIClick.Url(new Uri(this.AsyncDialog("Url", g => { UITextDialog di = new UITextDialog(); di.Title = ("网址地址"); return di; })))); default: case "Setting": var c = UMC.Data.JSON.Deserialize(UMC.Data.JSON.Serialize(ui)) as Hashtable; WebMeta settings = this.AsyncDialog(g => { UIFormDialog di = new UIFormDialog(); di.Title = ("功能指令"); di.AddText("模块代码", "Model", (String)c["model"]); di.AddText("指令代码", "Command", (String)c["cmd"]); di.AddPrompt("此块内容为专业内容,请由工程师设置"); if (c.ContainsKey("send")) { Object send = c["send"]; if (send is String) { di.AddText("参数", "Send", (String)send).PlaceHolder("如果没参数,则用none"); } else { di.AddText("参数", "Send", UMC.Data.JSON.Serialize(send)).PlaceHolder("如果没参数,则用none"); } } else { di.AddText("参数", "Send").PlaceHolder("如果没参数,则用none").NotRequired(); } return(di); }, "Send"); UIClick click = new UIClick(); String Model = settings.Get("Model"); String Command = settings.Get("Command"); String Send = settings.Get("Send"); click.Send(Model, Command); if ("none".Equals(Send, StringComparison.CurrentCultureIgnoreCase) == false) { if (String.IsNullOrEmpty(Send) == false) { if (Send.StartsWith("{")) { click.Send(UMC.Data.JSON.Deserialize <WebMeta>(Send)); } else { click.Send(Send); } } } return(click); } }
public override void ProcessActivity(WebRequest request, WebResponse response) { if (request.IsMaster == false) { this.Prompt("需要管理员权限"); } var svalue = this.AsyncDialog("Key", d => { return(this.DialogValue("New")); }); switch (svalue) { case "RESETAPPSECRET": this.Prompt("AppSecret", "AppSecret:" + Data.WebResource.Instance().AppSecret(true)); break; case "APPSECRET": this.Prompt("AppSecret", "AppSecret:" + Data.WebResource.Instance().AppSecret()); break; } var file = Reflection.ConfigPath("UMC.xml"); var cfg = Configuration.ProviderConfiguration.GetProvider(file) ?? new Configuration.ProviderConfiguration(); var n = cfg[svalue] ?? Data.Provider.Create(String.Empty, String.Empty); var Settings = this.AsyncDialog("Settings", g => { var fm = new UIFormDialog() { Title = "配置云模块" }; if (String.IsNullOrEmpty(n.Name)) { fm.AddText("云模块名", "name", n.Name); } else { fm.AddTextValue().Put("云模块名", n.Name); } fm.AddText("指令通配符", "type", n.Type); fm.AddText("描述", "desc", n["desc"]); fm.AddText("服务网址", "src", n["src"]); fm.AddText("AppSecret", "secret", n["secret"]).NotRequired(); if (String.IsNullOrEmpty(n.Name) == false) { fm.AddCheckBox("", "Status", "NO").Put("移除", "DEL"); } fm.Submit("确认", request, "Config"); return(fm); }); var status = Settings["Status"] ?? ""; if (status.Contains("DEL")) { cfg.Providers.Remove(svalue); } else { var src = new Uri(Settings["src"]); var p = Data.Provider.Create(Settings["name"] ?? svalue, Settings["type"]); p.Attributes.Add("src", src.AbsoluteUri); p.Attributes.Add("desc", Settings["desc"]); if (String.IsNullOrEmpty(Settings["secret"]) == false) { p.Attributes.Add("secret", Settings["secret"]); } cfg.Providers[p.Name] = p;//.Add(p.Name, p); } UMC.Configuration.ProviderConfiguration.Cache.Clear(); cfg.WriteTo(file); var data2 = new System.Data.DataTable(); data2.Columns.Add("model"); data2.Columns.Add("cmd"); data2.Columns.Add("text"); data2.Columns.Add("src"); for (var i = 0; i < cfg.Count; i++) { var p = cfg[i]; var cmd = p.Type;// p["regex"]; // p.Type; if (String.IsNullOrEmpty(p.Type)) { cmd = "*"; } data2.Rows.Add(p.Name, cmd, p["desc"], p["src"]); } this.Context.Send("Config", new WebMeta().Put("data", data2), false); this.Prompt("配置成功"); }
public override void ProcessActivity(WebRequest request, WebResponse response) { var projectId = UMC.Data.Utility.Guid(this.AsyncDialog("Project", g => { this.Prompt("请输入项目"); return(new Web.UITextDialog() { Title = "项目" }); })).Value; var user = Security.Identity.Current; var project = Utility.CMS.ObjectEntity <UMC.Data.Entities.Project>() .Where.And().Equal(new Project { Id = projectId }).Entities.Single(); if (project == null) { this.Prompt("没有此项目"); } if (project.user_id != user.Id) { this.Prompt("只有项目创立人才能配置此权限"); } var setting = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>() .Where.And().Equal(new ProjectSetting { project_id = projectId, Type = 12 }).Entities.Single() ?? new ProjectSetting(); ProjectUserSetting projectSettings = new ProjectUserSetting(); if (setting.user_setting_id.HasValue) { projectSettings = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>() .Where.And().Equal(new ProjectUserSetting { Id = setting.user_setting_id, Type = 12, user_id = user.Id }).Entities.Single() ?? new ProjectUserSetting(); //if (projectSettings.user_id != user.Id) //{ // this.Prompt("只能配置自己的项目"); //} } var settins = this.AsyncDialog("Setting", g => { var form = new UIFormDialog(); form.Title = "配置钉钉群机器人"; form.AddText("Webhook", "AccessToken", projectSettings.AccessToken); form.AddText("加签Secret", "AppSecret", projectSettings.AppSecret); form.Submit("确认", request, "Subject.Settings"); return(form); }); var access_token = settins["AccessToken"]; var AppSecret = settins["AppSecret"]; if (String.IsNullOrEmpty(access_token)) { this.Prompt("钉钉应用配置不正确"); } else { var pseting = new ProjectUserSetting() { user_id = user.Id, Id = projectSettings.Id ?? Guid.NewGuid(), AccessToken = access_token, Type = 12, AppSecret = AppSecret, ExpiresTime = 0// Utility.TimeSpan() + (Utility.IntParse(expires_in, 0) / 5) }; Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>() .Where.And().Equal(new ProjectUserSetting { Id = pseting.Id }).Entities.IFF(e => e.Update(pseting) == 0, e => e.Insert(pseting)); var setting2 = new ProjectSetting() { user_setting_id = pseting.Id, project_id = project.Id, Type = 12 }; Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>() .Where.And().Equal(new ProjectSetting { project_id = projectId, Type = 12 }).Entities .IFF(e => e.Update(setting2) == 0, e => e.Insert(setting2)); } this.Context.Send("Subject.Settings", true); }
public override void ProcessActivity(WebRequest request, WebResponse response) { WebMeta user = this.AsyncDialog(d => { WebMeta sendValue = request.SendValues ?? request.Arguments; if (sendValue.Count > 0) { return(this.DialogValue(sendValue)); } UIFormDialog dialog = new UIFormDialog() { Title = "账户登录" }; dialog.AddText("账户", "Username", ""); dialog.AddPassword("账户密码", "Password", ""); dialog.Submit("确认登录", request, "Cashier"); return(dialog); }, "Login"); String username = user.Get("Username"); String Password = user.Get("Password"); if (String.IsNullOrEmpty(username) || String.IsNullOrEmpty(Password)) { this.Prompt("请输入用户名和密码"); } int maxTimes = 5; Membership userManager = Membership.Instance(); int times = userManager.Password(username, Password, maxTimes); switch (times) { case 0: String client = "POSClient"; if (request.IsApp) { client = "Mobile"; } Identity iden = userManager.Identity(username); System.Security.Principal.IPrincipal principal = iden; if (principal.IsInRole(UMC.Security.Membership.UserRole) == false) { this.Prompt("您不是门店内部人员,不能从此登录。"); } AccessToken.Login(iden, AccessToken.Token.Value, client, true); this.Context.OnReset(); this.Prompt("登录成功", false); WebMeta print = new UMC.Web.WebMeta(); print["Alias"] = iden.Alias; print["Src"] = Data.WebResource.Instance().ImageResolve(iden.Id.Value, "1", 5); print["type"] = "Cashier"; this.Context.Send(print, true); //this.Context.Send("Cashier", true); break; case -4: this.Prompt("您的账户已经禁用"); break; case -3: this.Prompt("无此子账户"); break; case -2: this.Prompt("您的用户已经锁定,请您联系管理员解锁"); break; case -1: this.Prompt("您的用户不存在,请确定用户名", false); break; default: this.Prompt(String.Format("您的用户和密码不正确,您还有{0}次机会", maxTimes - times), false); break; } }
public override void ProcessActivity(WebRequest request, WebResponse response) { var type = this.AsyncDialog("type", g => { return(this.DialogValue("SQLite")); var fm = new UISheetDialog() { Title = "安装数据库" }; //fm.Options.Add(new UIClick("Oracle") { Text = "Oracle数据库" }.Send(request.Model, request.Command)); //fm.Options.Add(new UIClick("MySql") { Text = "MySql数据库" }.Send(request.Model, request.Command)); //fm.Options.Add(new UIClick("MSSQL") { Text = "SQL Server数据库" }.Send(request.Model, request.Command)); fm.Options.Add(new UIClick("SQLite") { Text = "SQLite文件数据库" }.Send(request.Model, request.Command)); return(fm); }); var Settings = this.AsyncDialog("Settings", g => { var fm = new UIFormDialog() { Title = "选择数据库" }; fm.AddText("服务地址", "Server"); fm.AddText("用户名", "User"); fm.AddText("密码", "Password"); fm.AddText("数据库名", "Database"); switch (type) { case "SQLite": return(this.DialogValue(new WebMeta().Put("File", "UMC"))); case "Oracle": fm.AddText("端口", "Port", "1521"); fm.AddText("表前缀", "Prefix").Put("tip", "分表设置"); fm.Title = "Oracle连接配置"; break; case "MySql": fm.AddText("端口", "Port", "3306"); fm.AddText("表前缀", "Prefix").Put("tip", "分表设置"); fm.Title = "MySql连接配置"; break; case "MSSQL": fm.AddText("端口", "Port", "1433"); fm.AddText("表前缀", "Prefix").Put("tip", "分表设置"); fm.AddText("拆表符", "Delimiter", "_"); fm.Title = "SQL Server连接配置"; break; default: this.Prompt("数据类型错误"); break; } fm.Submit("确认安装", request, "Initializer"); return(fm); }); UMC.Data.Provider provder = null; switch (type) { case "SQLite": provder = UMC.Data.Provider.Create("Database", typeof(UMC.Data.Sql.SQLiteDbProvider).FullName); var file = Settings["File"]; if (file.IndexOf('.') == -1) { file = file + ".sqlite"; } var path = UMC.Data.Utility.MapPath(String.Format("~App_Data/{0}", file)); if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(path))) { System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path)); } if (System.IO.File.Exists(path)) { int i = 1; var m = String.Format("{0}.{1}.bak", path, i); while (System.IO.File.Exists(m)) { i++; String.Format("{0}.{1}.bak", path, i); } System.IO.File.Move(path, m); } provder.Attributes["db"] = file; break; case "Oracle": provder = UMC.Data.Provider.Create("Database", typeof(UMC.Data.Sql.OracleDbProvider).FullName); provder.Attributes["conString"] = Oracle(Settings); break; case "MySql": provder = UMC.Data.Provider.Create("Database", typeof(UMC.Data.Sql.MySqlDbProvider).FullName); provder.Attributes["conString"] = MySQL(Settings); break; case "MSSQL": provder = UMC.Data.Provider.Create("Database", typeof(UMC.Data.Sql.SqlDbProvider).FullName); provder.Attributes["conString"] = MSSQL(Settings); break; default: this.Prompt("数据类型错误"); break; } if (String.IsNullOrEmpty(Settings["Prefix"]) == false) { provder.Attributes["delimiter"] = Settings["Delimiter"] ?? "_"; provder.Attributes["prefix"] = Settings["Prefix"]; } DbProvider provider = Reflection.CreateObject(provder) as DbProvider; DbFactory factory = new DbFactory(provider); try { factory.Open(); factory.Close(); } catch (Exception ex) { this.Prompt(ex.Message); } var Key = Utility.Guid(Guid.NewGuid()); var log = new UMC.Data.CSV.Log(Utility.GetRoot(request.Url), Key, "开始安装"); Data.Reflection.Start(() => { var Initializers = Data.Sql.Initializer.Initializers(); try { var now = DateTime.Now; var Names = new Hashtable(); var database = Reflection.Configuration("database") ?? new UMC.Configuration.ProviderConfiguration(); var count = false; foreach (var initer in Initializers) { var dataPro = database[initer.ProviderName] ?? UMC.Data.Provider.Create(initer.ProviderName, provder.Type); var setupKey = dataPro["setup"] ?? ""; if (setupKey.Contains(initer.Name) == false) { count = true; initer.Setup(new Hashtable(), log, provider); initer.Menu(new Hashtable(), new DbFactory(provider)); var de = UMC.Data.Provider.Create(initer.ProviderName, provder.Type); de.Attributes.Add(provder.Attributes); de.Attributes["setup"] = String.Format("{0}{1},", setupKey, initer.Name); database.Providers[initer.ProviderName] = de; } else { initer.Check(log, Reflection.CreateObject(dataPro) as DbProvider); } } UMC.Configuration.ProviderConfiguration.Cache.Clear(); if (count == false) { log.End("对应组件已经安装"); } else { var file = Reflection.AppDataPath("UMC\\database.xml"); if (System.IO.File.Exists(file)) { int i = 1; var m = Reflection.AppDataPath(String.Format("UMC\\database.xml.{0}.bak", i)); while (System.IO.File.Exists(m)) { i++; m = Reflection.AppDataPath(String.Format("UMC\\database.xml.{0}.bak", i)); } System.IO.File.Move(file, m); } database.WriteTo(file); log.End("安装完成", "默认账户:admin 密码:admin", "请刷新界面"); log.Info(String.Format("用时{0}", DateTime.Now - now)); } } catch (Exception ex) { log.End("安装失败"); log.Info(ex.Message); } finally { log.Close(); } }); this.Context.Send("Initializer", false); response.Redirect("System", "Log", Key); }
public override void ProcessActivity(WebRequest request, WebResponse response) { var user = UMC.Security.Identity.Current;// (); Guid groupId = UMC.Data.Utility.Guid(this.AsyncDialog("id", d => { this.Prompt("请传入参数"); return(this.DialogValue(user.Id.ToString())); }), true).Value; String Seq = this.AsyncDialog("seq", g => { if (request.SendValues != null) { return(this.DialogValue(request.SendValues.Get("Seq") ?? "0")); } else { return(this.DialogValue("0")); } }); UMC.Data.WebResource webr = UMC.Data.WebResource.Instance(); String media_id = this.AsyncDialog("media_id", g => { if (request.IsApp) { UIDialog f = UIDialog.CreateDialog("File"); f.Config.Put("Submit", new UIClick(new WebMeta(request.Arguments.GetDictionary()).Put(g, "Value")) .Send(request.Model, request.Command)); ; return(f); } else { UIFormDialog from = new UIFormDialog(); from.Title = ("图片上传"); from.AddFile("选择图片", "media_id", webr.ImageResolve(groupId, Seq, 4)); from.Submit("确认上传", request, "image"); return(from); } }); String type = this.AsyncDialog("type", g => this.DialogValue("jpg")); int seq = UMC.Data.Utility.Parse(Seq, 1); if (media_id.StartsWith("http://") || media_id.StartsWith("https://")) { Uri url = new Uri(media_id); if (url.AbsolutePath.ToLower().EndsWith(type.ToLower())) { webr.Transfer(url, groupId, seq, type); } else { webr.Transfer(new Uri(String.Format("{0}?x-oss-process=image/format,{1}", media_id, type)), groupId, seq, type); } } else { /* * 微信上传 * */ } this.Context.Send(new WebMeta().Put("type", "image").Put("id", groupId), true); }
void Items(WebRequest request, Guid itemId) { UMC.Data.WebResource webr = UMC.Data.WebResource.Instance(); var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.Reset().And().Equal(new Design_Item() { Id = itemId }); Design_Item item = entity.Single(); WebMeta meta = this.AsyncDialog(g => { Design_Item finalItem = item; switch (item.Type) { case UIDesigner.StoreDesignTypeItem: break; case UIDesigner.StoreDesignTypeItems: int count = entity.Where.Reset() .And().Equal(new Design_Item() { for_id = itemId }) .Entities.Count(); if (count > 3) { this.Prompt("分列栏,只能添加4列"); } Design_Item item2 = new Design_Item() { Id = Guid.NewGuid(), design_id = item.design_id, for_id = item.Id, ModifiedDate = DateTime.Now, Type = UIDesigner.StoreDesignTypeItem }; Design_Item max = entity .Where.And().Equal(new Design_Item() { design_id = item.design_id, for_id = item.Id }) .Entities.Max(new Design_Item() { Seq = 0 }); //.Seq+1; item2.Seq = (max.Seq ?? 0) + 1; entity.Insert(item2); finalItem = item2; request.Arguments.Put("Id", finalItem.Id); break; default: this.Prompt("类型错误"); break; } WebMeta data = UMC.Data.JSON.Deserialize <WebMeta>(finalItem.Data) ?? new UMC.Web.WebMeta(); UIFormDialog from = new UIFormDialog(); from.Title = ("图标"); from.AddFile("图片", "_Image", webr.ImageResolve(finalItem.Id.Value, "1", 4)) .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", finalItem.Id).Put("seq", "1")); from.AddText("标题", "title", finalItem.ItemName); from.AddText("描述", "desc", finalItem.ItemDesc); from.Add("Color", "startColor", "标题开始色", data.Get("startColor")); from.Add("Color", "endColor", "标题结束色", data.Get("endColor")); from.AddNumber("顺序", "Seq", finalItem.Seq); // from.submit("确认", request.model(), request.cmd(), new UMC.Web.WebMeta().put("Id", finalItem.Id).put("Type", "Edit")); from.Submit("确认", request, "Design"); return(from); }, "Setting"); entity.Where.Reset().And().Equal(new Design_Item() { Id = item.Id }); entity.Update(new Design_Item() { ItemName = meta.Get("title"), ItemDesc = meta.Get("desc"), Data = UMC.Data.JSON.Serialize(meta), ModifiedDate = DateTime.Now, Seq = Utility.IntParse(meta.Get("Seq"), 0) }); //entity.Where.reset().And().Equal(new Design_Item().Id(item.Id)); //entity.update(new Design_Item().ItemName(meta.get("title")) // .ItemDesc(meta.get("desc")) // .Data(UMC.Data.JSON.serialize(meta)) // .ModifiedDate(new Date()).Seq(Utility.parse(meta.get("Seq"), 0))); }
void TitleDesc(WebRequest request, Guid itemId) { UMC.Data.WebResource webr = UMC.Data.WebResource.Instance(); var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.Reset().And().Equal(new Design_Item() { Id = itemId }); Design_Item item = entity.Single(); WebMeta meta = this.AsyncDialog(g => { WebMeta config = new UMC.Web.WebMeta(); switch (item.Type ?? 0) { case UIDesigner.StoreDesignTypeItem: Design_Item parent = entity.Where.Reset().And().Equal(new Design_Item() { Id = item.for_id }).Entities.Single(); config = UMC.Data.JSON.Deserialize <WebMeta>(parent.Data) ?? new UMC.Web.WebMeta(); break; case UIDesigner.StoreDesignTypeTitleDesc: config = UMC.Data.JSON.Deserialize <WebMeta>(item.Data) ?? new UMC.Web.WebMeta(); Design_Item item2 = new Design_Item() { Id = Guid.NewGuid(), design_id = item.design_id, for_id = item.Id, ModifiedDate = DateTime.Now, Type = UIDesigner.StoreDesignTypeItem }; Design_Item max = entity .Where.And().Equal(new Design_Item() { design_id = item.design_id, for_id = item.Id }) .Entities.Max(new Design_Item() { Seq = 0 }); //.Seq+1; item2.Seq = (max.Seq ?? 0) + 1; entity.Insert(item2); item = item2; request.Arguments.Put("Id", item.Id); break; default: this.Prompt("类型错误"); break; } //config = UMC.Data.JSON.Deserialize<WebMeta>(item.Data) ?? new UMC.Web.WebMeta(); WebMeta data = UMC.Data.JSON.Deserialize <WebMeta>(item.Data) ?? new UMC.Web.WebMeta(); ;// Utility.isNull(UMC.Data.JSON.deserialize(finalItem.Data, WebMeta.class), new UMC.Web.WebMeta()); UIFormDialog from = new UIFormDialog(); from.Title = ("图文项"); String total = data.Get("Total") ?? "1"; from.AddFile(String.Format("{0}比例图片", total == "1" ? "100:55" : "1:1"), "_Image", webr.ImageResolve(item.Id.Value, "1", 4)) .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", item.Id).Put("seq", "1")); String hide = config.Get("Hide") ?? ""; if (hide.IndexOf("HideTitle") == -1) { from.AddText("图文标题", "title", item.ItemName); } if (hide.IndexOf("HideDesc") == -1) { from.AddText("图文描述", "desc", item.ItemDesc); } if (hide.IndexOf("HideLeft") == -1) { from.AddText("左角价格", "left", data.Get("left")); } if (hide.IndexOf("HideRight") == -1) { from.AddText("右角说明", "right", data.Get("right")); } from.AddNumber("顺序", "Seq", item.Seq); from.Submit("确认", request, "Design"); return(from); }, "Setting"); entity.Where.Reset().And().Equal(new Design_Item() { Id = item.Id }); entity.Update(new Design_Item() { ItemName = meta.Get("title"), ItemDesc = meta.Get("desc"), Data = UMC.Data.JSON.Serialize(meta), ModifiedDate = DateTime.Now, Seq = Utility.IntParse(meta.Get("Seq"), 0) }); //entity.Where.reset().And().Equal(new Design_Item().Id(item.Id)); //entity.update(new Design_Item().ItemName(meta.get("title")) // .ItemDesc(meta.get("desc")) // .Data(UMC.Data.JSON.serialize(meta)) // .ModifiedDate(new Date()).Seq(Utility.parse(meta.get("Seq"), 0))); }
public override void ProcessActivity(WebRequest request, WebResponse response) { var config = this.AsyncDialog("Key", g => this.DialogValue("none")); switch (config) { case "Version": case "Builder": case "json": case "Android": case "IOS": break; default: if (request.IsMaster == false) { this.Prompt("只有管理员才能设置App"); } break; } var file = Reflection.ConfigPath("App.json"); if (System.IO.File.Exists(file) == false) { using (System.IO.Stream stream = new System.Net.Http.HttpClient().GetStreamAsync("http://oss.365lu.cn/UserResources/demo.json").Result) { UMC.Data.Utility.Copy(stream, file); } } var appConfig = Data.JSON.Deserialize(Utility.Reader(file)) as Hashtable; switch (config) { case "Version": { int vindex = request.UserAgent.IndexOf("android"); if (vindex > 0) { var v = request.UserAgent.Substring(request.UserAgent.IndexOf("V", vindex) + 1); var cfgs = UMC.Configuration.ProviderConfiguration.GetProvider(Reflection.ConfigPath("Version.xml")); if (cfgs == null) { this.Prompt("提示", "当前已经是最新版本"); } var provider = cfgs[config]; if (provider != null) { if (Data.Utility.IntParse(provider["versionCode"], 0) > UMC.Data.Utility.IntParse(v, 0)) { this.AsyncDialog("Confirm", g => { return(new UMC.Web.UIConfirmDialog("您有新版本,点击确认安装") { Title = "新版本安装" }); }); var meta = new UMC.Web.WebMeta(); meta.Put("name", provider.Name); meta.Put("text", provider["text"]); meta.Put("title", provider["title"]); meta.Put("src", provider["src"]).Put("type", "Download"); this.Context.Send(meta, true); } else { this.Prompt("提示", "当前已经是最新版本"); } } else { this.Prompt("提示", "当前已经是最新版本"); } } else { this.Prompt("苹果版本自动更新"); } } break; case "Builder": if (String.IsNullOrEmpty(appConfig["AppName"] as string)) { this.Prompt("应用名称不能为空"); } if (String.IsNullOrEmpty(appConfig["IconSrc"] as string)) { this.Prompt("请上传图标"); } if (String.IsNullOrEmpty(appConfig["BgSrc"] as string)) { this.Prompt("请上传启动图"); } var dataKey = new Hashtable(); dataKey["root"] = Utility.GetRoot(request.Url); dataKey["host"] = new Uri(request.Url, "/").AbsoluteUri.Trim('/'); appConfig["DataKey"] = dataKey; response.Redirect(appConfig); break; case "json": appConfig["IsMaster"] = request.IsMaster; response.Redirect(appConfig); break; case "Reset": { var ResetName = this.AsyncDialog("Reset", g => { var k = new UISelectDialog() { Title = "选择参考的默认的界面架构" }; k.Options.Add("DOME架构", "demo"); return(k); }); String stream = new System.Net.Http.HttpClient().GetStringAsync(String.Format("http://oss.365lu.cn/UserResources/{0}.json", ResetName)).Result; var appConfig2 = Data.JSON.Deserialize(stream) as Hashtable; appConfig2["BgSrc"] = appConfig["BgSrc"]; appConfig2["IconSrc"] = appConfig["IconSrc"]; appConfig2["AppName"] = appConfig["AppName"]; appConfig2["Android"] = appConfig["Android"]; appConfig2["IOS"] = appConfig["IOS"]; appConfig = appConfig2; } break; case "News": { var key = this.AsyncDialog("Sheet", g => { var k = new UIFormDialog() { Title = "新增Bar" }; k.AddText("标题", "text", String.Empty); k.AddOption("图标", "icon").Command("System", "Icon"); k.AddCheckBox("", "max", "no").Put("显示大按钮", "true"); k.AddRadio("Bar加载类型", "Type") .Put("默认主页", "Home").Put("电商购物篮", "Cart").Put("电商品类页", "Category").Put("Tabs", "Tab配置页").Put("点击项", "Click") .Put("基本页", "Pager"); k.Submit("确认提交", request, "AppConfig"); return(k); }); var footbar = new ArrayList(appConfig["footBar"] as Array); var data = new WebMeta().Put("key", key["Type"]).Put("text", key["text"]).Put("icon", key["icon"]); if ((key["max"] ?? "").Contains("true")) { data.Put("max", true); } footbar.Add(data); appConfig["footBar"] = footbar; } break; case "Android": case "IOS": appConfig[config] = this.AsyncDialog("Value", g => { var k = new UITextDialog() { Title = config + "下载地址", DefaultValue = appConfig[config] as string }; return(k); }); break; case "BgSrc": case "IconSrc": { var AppName = this.AsyncDialog("Value", g => { var k = new UITextDialog() { Title = "值" }; return(k); }); var Key = String.Format("UserResources/{0}/{1}/{2}", Utility.GetRoot(request.Url), config, AppName.Substring(AppName.LastIndexOf('/') + 1)); var webR = UMC.Data.WebResource.Instance(); webR.Transfer(new Uri(AppName), Key); appConfig[config] = new Uri(request.Url, webR.WebDomain() + Key).AbsoluteUri; } break; case "AppName": { var AppName = this.AsyncDialog("AppName", g => { var k = new UITextDialog() { Title = "应用名称", DefaultValue = appConfig["AppName"] as string }; return(k); }); appConfig["AppName"] = AppName; } break; case "Del": { var footbar = new ArrayList(appConfig["footBar"] as Array); var index = Utility.IntParse(this.AsyncDialog("Index", "0"), -1); footbar.RemoveAt(index); appConfig["footBar"] = footbar; } break; default: { var footbar = new ArrayList(appConfig["footBar"] as Array); var index = Utility.IntParse(this.AsyncDialog("Index", "0"), -1); var hash = footbar[index] as Hashtable; var settings = this.AsyncDialog("Settings", g => { var fm = new UIFormDialog(); fm.Title = "图标"; fm.AddText("标题", "text", hash["text"] as string); fm.AddOption("图标", "icon", hash["icon"] as string, hash["icon"] as string).Command("System", "Icon"); switch (config) { case "Setting": switch (hash["key"] as string ?? "Click") { case "Home": case "Category": break; case "Cart": fm.AddCheckBox("", "max", "no").Put("显示大按钮", "true", hash.ContainsKey("max")); break; case "Click": fm.AddCheckBox("", "max", "no").Put("显示大按钮", "true", hash.ContainsKey("max")); var click = (hash["click"] as Hashtable) ?? new Hashtable(); fm.AddText("事件模块", "model", click["model"] as string); fm.AddText("事件指令", "cmd", click["cmd"] as string); fm.AddText("事件参数", "send", click["send"] as string).NotRequired(); break; case "Tabs": fm.AddText("数据源模块", "model", hash["model"] as string); fm.AddText("数据源指令", "cmd", hash["cmd"] as string); break; case "Pager": fm.AddText("加载模块", "model", hash["model"] as string); fm.AddText("加载指令", "cmd", hash["cmd"] as string); break; default: this.Prompt("固定页面,不支持设置");; break; } break; } return(fm); }); hash["text"] = settings["text"]; hash["icon"] = settings["icon"]; if ((settings["max"] ?? "").Contains("true")) { hash["max"] = true; } else { hash.Remove("max"); } switch (hash["key"] as string) { case "Click": var click = new WebMeta().Put("model", settings["model"]) .Put("cmd", settings["cmd"]); if (String.IsNullOrEmpty(settings["model"]) == false) { click.Put("send", settings["send"]); } hash["click"] = click; break; case "Cart": break; case "Tabs": hash["model"] = settings["model"]; hash["cmd"] = settings["cmd"]; break; case "Pager": hash["model"] = settings["model"]; hash["cmd"] = settings["cmd"]; break; } } break; } Utility.Writer(file, Data.JSON.Serialize(appConfig), false); this.Context.Send("AppConfig", new WebMeta().Put("Config", appConfig), true); }