public override void ProcessActivity(WebRequest request, WebResponse response) { Guid designId = UMC.Data.Utility.Guid(this.AsyncDialog("Id", g => this.DialogValue(Guid.Empty.ToString()))).Value;//this.DialogValue(response.Ticket[AttributeNames.TICKET_STORE_ID])), true).Value; if (_isEditer) { WebMeta form = request.SendValues ?? request.Arguments; this.AsyncDialog("Model", anycId => { if (form.ContainsKey("limit") == false) { this.Context.Send(new UISectionBuilder(request.Model, request.Command, new WebMeta().Put("Id", designId)) .RefreshEvent("Design", "image") .Builder(), true); } var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.And().Equal(new Design_Item { design_id = Guid.Empty, for_id = Guid.Empty }); entity.Order.Asc(new Design_Item { Seq = 0 }); //IObjectEntity<Design_Item> entity = Database.instance().objectEntity(Design_Item.class); // entity.where().and().equal(new Design_Item().Design_id(Utility.uuidEmpty).For_id(Utility.uuidEmpty)); // entity.order().asc(new Design_Item().Seq(0)); Design_Item[] headers = entity.Query(); UISection section = UISection.Create(new UITitle("UMC")); int limit = UMC.Data.Utility.Parse(form.Get("limit"), 10); int start = UMC.Data.Utility.Parse(form.Get("start"), 0); switch (headers.Length) { case 0: break; case 1: section.Title.Title = (headers[0].ItemName); // section.title().right('\ue907', new UIClick("Id", headers[0].Id.toString(), "Model", "none").model(request.model(), request.cmd())); break; default: if (start == 0) { List <WebMeta> items = new List <WebMeta>(); foreach (Design_Item item in headers) { items.Add(new UMC.Web.WebMeta().Put("text", item.ItemName).Put("search", new WebMeta().Put("Id", item.Id))); } section.Add(UICell.Create("TabFixed", new UMC.Web.WebMeta().Put("items", items))); } break; } if (designId == Guid.Empty) { switch (headers.Length) { case 0: break; default: new UIDesigner(true).Section(section, headers[0].Id.Value); break; } } else { new UIDesigner(true).Section(section, designId); } if (section.Length == 0) { section.Add("Desc", new UMC.Web.WebMeta().Put("desc", "未有设计分类项,请添加").Put("icon", "\uEA05") , new UMC.Web.WebMeta().Put("desc", "{icon}\n{desc}"), new UIStyle().Align(1).Color(0xaaa).Padding(20, 20).BgColor(0xfff).Size(12).Name("icon", new UIStyle().Font("wdk").Size(60))); } UIFooter footer = new UIFooter(); footer.IsFixed = true;// e); switch (headers.Length) { case 0: footer.AddText(new UIEventText("添加分类项").Click(new UIClick("Model", "News", "Type", "Append").Send(request.Model, request.Command))); break; default: Guid did = designId; if (designId == Guid.Empty) { did = headers[0].Id.Value; } footer.AddIcon(new UIEventText("分类项").Icon('\uf009').Click(new UIClick("Model", "News", "Id", did.ToString()).Send(request.Model, request.Command))); footer.AddText(new UIEventText("增加UI组件").Click(new UIClick(did.ToString()).Send("Design", "Item"))); footer.AddText(new UIEventText("查看效果").Style(new UIStyle().BgColor(0xef4f4f)) .Click(new UIClick("Model", "News", "Type", "View").Send(request.Model, request.Command))); break; } section.UIFooter = (footer); response.Redirect(section); return(this.DialogValue("none")); }); String type = this.AsyncDialog("Type", g => { UIRadioDialog di = new UIRadioDialog(); di.Title = ("页面设计"); di.Options.Put("编辑分类项", "Edit"); di.Options.Put("增加分类项", "Append"); di.Options.Put("删除此分类", "Delete"); return(di); }); switch (type) { case "Edit": Design(request, designId); break; case "Append": Design(request, Guid.NewGuid()); //.randomUUID()); break; case "Delete": Delete(designId); break; case "View": if (request.IsApp) { List <WebMeta> tabs = new List <WebMeta>(); Database.Instance().ObjectEntity <Design_Item>() .Where.And().Equal(new Design_Item() { design_id = Guid.Empty, for_id = Guid.Empty }) //(Utility.uuidEmpty).For_id(Utility.uuidEmpty)) .Entities.Order.Asc(new Design_Item() { Seq = 0 }) .Entities.Query(dr => { tabs.Add(new UMC.Web.WebMeta().Put("text", dr.ItemName).Put("search", new UMC.Web.WebMeta().Put("Id", dr.Id.ToString())).Put("cmd", "Home", "model", "Design")); }); if (tabs.Count == 1) { UISectionBuilder builder = new UISectionBuilder("Design", "Home", new WebMeta().Put("Id", tabs[0].GetMeta("search").Get("Id"))); // builder.builder() this.Context.Send(builder.Builder(), true); //"Tab", new WebMeta().put("sections", tabs).put("text", "UMC界面设计"), true); } else { this.Context.Send("Tab", new WebMeta().Put("sections", tabs).Put("text", "UMC界面设计"), true); } } else { this.AsyncDialog("From", k => { UIFormDialog fm = new UMC.Web.UIFormDialog(); fm.Title = ("移动效果体验"); fm.AddImage(new Uri(UMC.Data.Utility.QRUrl("https://oss.365lu.cn/Click/Deisgn/Home/"))); fm.AddPrompt("请用支持UMC协议的APP“扫一扫”。"); return(fm); }); break; } break; } } else { if (designId == Guid.Empty) { var entity = Database.Instance().ObjectEntity <Design_Item>(); entity.Where.And().Equal(new Design_Item { design_id = Guid.Empty, for_id = Guid.Empty }); entity.Order.Asc(new Design_Item { Seq = 0 }); List <WebMeta> tabs = new List <WebMeta>(); entity.Query(dr => { tabs.Add(new UMC.Web.WebMeta().Put("text", dr.ItemName).Put("search", new UMC.Web.WebMeta().Put("Id", dr.Id)).Put("cmd", "UI", "model", "Design")); }); var chash = new Hashtable(); UITitle title = new UITitle("UMC移动界面"); title.Left('\uea0e', UIClick.Search()); title.Right(new UIEventText().Icon('\uf2c0').Click(new UIClick().Send("Account", "Info"))); chash.Add("sections", tabs); chash.Add("title", title); response.Redirect(chash); } else { UIDesigner designer = new UIDesigner(false); response.Redirect(designer.Section("", designId)); } } }
/// <summary> /// 表单对话框 /// </summary> protected WebMeta AsyncDialog(string asyncId, UMC.Web.AsyncDialogFormCallback callback) { return(UIFormDialog.AsyncDialog(asyncId, d => callback(asyncId))); }
public override void ProcessActivity(WebRequest request, WebResponse response) { Guid Team = UMC.Data.Utility.Guid(this.AsyncDialog("Project", "auto")).Value; var project = Utility.CMS.ObjectEntity <UMC.Data.Entities.Project>() .Where.And().Equal(new Project { Id = Team }).Entities.Single(); var subEntity = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectMember>(); subEntity.Where.And().Equal(new ProjectMember { project_id = project.Id }); var sId = this.AsyncDialog("Id", g => { var webr = UMC.Data.WebResource.Instance(); var form = request.SendValues ?? new UMC.Web.WebMeta(); int limit = UMC.Data.Utility.IntParse(form["limit"] as string, 25); int start = UMC.Data.Utility.IntParse(form["start"] as string, 0); string sort = form[("sort")] as string; string dir = form[("dir")] as string; var Keyword = (form["Keyword"] as string ?? String.Empty); if (!String.IsNullOrEmpty(sort) && sort.StartsWith("_") == false) { if (String.IsNullOrEmpty(Keyword)) { switch (sort) { case "Admin": subEntity.Where.And().Equal(new ProjectMember { AuthType = Web.WebAuthType.Admin }); break; case "Write": subEntity.Where.And().Equal(new ProjectMember { AuthType = Web.WebAuthType.User }); break; case "Read": subEntity.Where.And().Equal(new ProjectMember { AuthType = Web.WebAuthType.Guest }); break; default: if (dir == "DESC") { subEntity.Order.Desc(sort); } else { subEntity.Order.Asc(sort); } break; } } } else { subEntity.Order.Desc(new ProjectMember { CreationTime = DateTime.MaxValue }); } if (String.IsNullOrEmpty(Keyword) == false) { subEntity.Where.And().In("user_id", Utility.CMS.ObjectEntity <User>() .Where.And().Like(new User { Alias = Keyword }).Entities.Script(new User { Id = Guid.Empty })); } var subs = new List <ProjectMember>(); var uids = new List <Guid>(); subEntity.Query(start, limit, dr => { subs.Add(dr); uids.Add(dr.user_id ?? Guid.Empty); }); var cates = new List <User>(); if (uids.Count > 0) { Utility.CMS.ObjectEntity <User>().Where.And().In(new User { Id = uids[0] }, uids.ToArray()) .Entities.Query(dr => cates.Add(dr)); } var data = new System.Data.DataTable(); data.Columns.Add("project_id"); data.Columns.Add("user_id"); data.Columns.Add("alias"); data.Columns.Add("auth"); data.Columns.Add("time"); data.Columns.Add("src"); foreach (var sub in subs) { var s = "互联网用户"; switch (sub.AuthType) { case Web.WebAuthType.All: break; case Web.WebAuthType.Guest: s = "读者"; break; case Web.WebAuthType.User: s = "专栏作家"; break; case Web.WebAuthType.Admin: s = "管理员"; break; } var user2 = cates.Find(d => d.Id == sub.user_id) ?? new User() { Alias = sub.Alias }; data.Rows.Add(sub.project_id, sub.user_id, user2.Alias, s, sub.CreationTime, webr.ResolveUrl(sub.user_id ?? Guid.Empty, "1", 4)); } var hashc = new System.Collections.Hashtable(); hashc["data"] = data; var total = subEntity.Count();; hashc["total"] = total; // subEntity.Count(); if (total == 0) { switch (sort) { case "Admin": hashc["msg"] = "未有管理员成员"; break; case "Write": hashc["msg"] = "未有专栏作家成员"; break; case "Read": hashc["msg"] = "未有读者成员"; break; default: if (String.IsNullOrEmpty(Keyword) == false) { hashc["msg"] = String.Format("未搜索到“{0}”对应的团队成员", Keyword); } else { hashc["msg"] = "现在还未有团队成员"; } break; } } response.Redirect(hashc); return(this.DialogValue("none")); }); var Id = Utility.Guid(sId) ?? Guid.Empty; var user = UMC.Security.Identity.Current; if (Id == Guid.Empty) { if (user.IsAuthenticated == false) { response.Redirect("Account", "Login"); } if (project.user_id == user.Id) { this.Prompt("你是创立者,拥有最大权限"); } switch (sId) { case "follow": subEntity.Where.And().Equal(new ProjectMember { user_id = user.Id }); if (subEntity.Count() > 0) { this.Prompt("你已经加入此项目"); } else { this.AsyncDialog("Confirm", g => new UIConfirmDialog("你确认加入此项目吗")); } break; case "Self": break; default: UMC.Web.UIFormDialog.AsyncDialog("From", d => { var key = Utility.Scanning(new UIClick(new WebMeta().Put("Project", Team).Put("Id", "Self")).Send(request.Model, request.Command), 0); var url = new Uri(String.Format("{1}Click/{0}", Utility.Parse62Encode(key), UMC.Data.WebResource.Instance().WebDomain())); var form = new UMC.Web.UIFormDialog() { Title = "扫码加入" }; form.AddImage(new Uri(Data.Utility.QRUrl(url.AbsoluteUri))); form.AddTextValue() .Put("使用方式", "使用微信或者钉钉“扫一扫”"); form.HideSubmit(); return(form); }); break; } subEntity.Where.And().Equal(new ProjectMember { user_id = user.Id }); if (subEntity.Count() == 0) { subEntity.Insert(new ProjectMember { CreationTime = DateTime.Now, AuthType = Web.WebAuthType.Guest, project_id = Team, user_id = user.Id, Alias = user.Alias }); Utility.CMS.ObjectEntity <ProjectDynamic>() .Insert(new ProjectDynamic { Time = Utility.TimeSpan(DateTime.Now), user_id = user.Id, Explain = String.Format("{0} 加入了项目", user.Alias), project_id = Team, refer_id = user.Id, Title = "项目成员", Type = DynamicType.Member }); } else { this.AsyncDialog("Confirm", d => new UIConfirmDialog("你需要退出此项目组吗")); subEntity.Delete(); } UMC.Configuration.ConfigurationManager.ClearCache(Team, "Data"); this.Context.Send("Subject.Member", true); } else { if (project != null && project.user_id == user.Id) { } else { var team = Utility.CMS.ObjectEntity <ProjectMember>().Where.And().Equal(new ProjectMember { project_id = project.Id, user_id = user.Id }).Entities.Single(); if (team != null) { switch (team.AuthType) { case WebAuthType.Admin: break; default: this.Prompt("只有管理员,才能管理团队成员"); break; } } else { this.Prompt("只有管理员,才能管理团队成员"); } } var member = subEntity.Where.And().Equal(new ProjectMember { user_id = Id }).Entities.Single(); var arg = request.Arguments; var Type = this.AsyncDialog("Type", g => { var optls = new Web.UISheetDialog(); optls.Title = "成员操作";; optls.Options.Add(new UIClick(new WebMeta(arg).Put(g, "Del")) { Command = request.Command, Model = request.Model, Text = "移除此成员" }); optls.Options.Add(new UIClick(new WebMeta(arg).Put(g, "Admin")) { Command = request.Command, Model = request.Model, Text = "设置为管理员" }); optls.Options.Add(new UIClick(new WebMeta(arg).Put(g, "Write")) { Command = request.Command, Model = request.Model, Text = "设置专栏作家" }); optls.Options.Add(new UIClick(new WebMeta(arg).Put(g, "Read")) { Command = request.Command, Model = request.Model, Text = "设置读者" }); return(optls); }); switch (Type) { case "Del": subEntity.Delete(); Utility.CMS.ObjectEntity <ProjectDynamic>() .Insert(new ProjectDynamic { Time = Utility.TimeSpan(), //DateTime.Now, user_id = user.Id, Explain = "移除了项目成员", project_id = Team, refer_id = member.user_id, Title = "项目成员", Type = DynamicType.Member }); break; case "Admin": subEntity.Update(new ProjectMember { AuthType = WebAuthType.Admin }); Utility.CMS.ObjectEntity <ProjectDynamic>() .Insert(new ProjectDynamic { Time = Utility.TimeSpan(), //DateTime.Now, user_id = user.Id, Explain = "设置成员为管理员", project_id = Team, refer_id = member.user_id, Title = "项目成员", Type = DynamicType.Member }); break; case "Write": subEntity.Update(new ProjectMember { AuthType = WebAuthType.User }); Utility.CMS.ObjectEntity <ProjectDynamic>() .Insert(new ProjectDynamic { Time = Utility.TimeSpan(DateTime.Now), user_id = user.Id, Explain = "设置成员为专栏作家", project_id = Team, refer_id = member.user_id, Title = "项目成员", Type = DynamicType.Member }); break; case "Read": subEntity.Update(new ProjectMember { AuthType = WebAuthType.Guest }); Utility.CMS.ObjectEntity <ProjectDynamic>() .Insert(new ProjectDynamic { Time = Utility.TimeSpan(DateTime.Now), user_id = user.Id, Explain = "设置成员为读者", project_id = Team, refer_id = member.user_id, Title = "项目成员", Type = DynamicType.Member }); break; } UMC.Configuration.ConfigurationManager.ClearCache(Team, "Data"); this.Context.Send("Subject.Team", true); } }
public override void ProcessActivity(WebRequest request, WebResponse response) { var username = Web.UIDialog.AsyncDialog("Username", d => { var fd = new UMC.Web.UIFormDialog(); fd.Title = "找回密码"; fd.AddText("", "Username").Put("placeholder", "手机号码或邮箱"); fd.Submit("下一步", request, "Forget"); return(fd); }); var entity = Data.Database.Instance().ObjectEntity <UMC.Data.Entities.Account>(); UMC.Data.Entities.Account ac = new UMC.Data.Entities.Account { Name = username }; if (Data.Utility.IsEmail(username)) { ac.Type = UMC.Security.Account.EMAIL_ACCOUNT_KEY; entity.Where.And().Equal(ac); } else if (Data.Utility.IsPhone(username)) { ac.Type = UMC.Security.Account.MOBILE_ACCOUNT_KEY; entity.Where.And().Equal(ac); } if (ac.Type.HasValue == false) { this.Prompt("只支持手机号和邮箱找回密码"); } var acct = entity.Single(); if (acct == null) { switch (ac.Type.Value) { case UMC.Security.Account.EMAIL_ACCOUNT_KEY: this.Prompt("没有找到此邮箱绑定账户"); break; default: this.Prompt("没有找到此手机号绑定账户"); break; } } var Code = UMC.Web.UIDialog.AsyncDialog("Code", g => { var ts = ac.Type.Value == UMC.Security.Account.EMAIL_ACCOUNT_KEY ? "邮箱" : "手机"; var fd = new UMC.Web.UIFormDialog(); fd.AddTextValue().Put(ts, username); fd.AddVerify("验证码", "Code", String.Format("{0}收到的验证码", ts)) .Command(request.Model, request.Command, new UMC.Web.WebMeta().Put("Username", username).Put("Code", "Reset")); fd.Title = "验证" + ts; fd.Submit("验证", request, "Password"); this.Context.Send(new UMC.Web.WebMeta().Put("type", "Forget"), false); return(fd); }); if (String.Equals(Code, "Reset")) { ; if (this.Send(username, UMC.Data.Reflection.GetDataProvider("account", "Forget"))) { this.Prompt("验证码已经发送,请注意查收", false); this.Context.Send(new UMC.Web.WebMeta().UIEvent("VerifyCode", this.AsyncDialog("UI", "none"), new UMC.Web.WebMeta().Put("text", "验证码已发送")), true); } else { switch (ac.Type.Value) { case UMC.Security.Account.EMAIL_ACCOUNT_KEY: this.Prompt("没有找到此邮箱绑定账户"); break; default: this.Prompt("没有找到此手机号绑定账户"); break; } } } var account = Account.Create(acct); var VerifyCode = account.Items[Account.KEY_VERIFY_FIELD] as string; if (String.Equals(VerifyCode, Code, StringComparison.CurrentCultureIgnoreCase)) { WebMeta print = new UMC.Web.WebMeta(); print["AccountType"] = acct.Type.ToString(); print["VerifyCode"] = Code; print["user_id"] = acct.user_id.ToString(); this.Context.Send(new UMC.Web.WebMeta().Put("type", "Forget"), false); response.Redirect(request.Model, "Password", print, true); } else { this.Prompt("您输入的验证码错误"); } }