public override void ProcessActivity(WebRequest request, WebResponse response) { var Key = this.AsyncDialog("Key", "WebResource"); var UI = this.AsyncDialog("UI", "none"); var Type = this.AsyncDialog("Type", gKey => { var seett = new Web.UISheetDialog(); seett.Title = "插入"; var click = new UIClick("UI", UI, "Key", "WebResource", "Type", "Image") { Command = request.Command, Model = request.Model }; click.Text = "插入图片"; seett.Options.Add(click); click = new UIClick("UI", UI, "Key", "WebResource", "Type", "Text") { Command = request.Command, Model = request.Model }; click.Text = "插入文字"; seett.Options.Add(click); return(seett); }); switch (Type) { case "Image": this.Context.Send(new UMC.Web.WebMeta().UIEvent(Key, UI, Image(request)), true); break; case "Text": this.Context.Send(new UMC.Web.WebMeta().UIEvent(Key, UI, Text()), true); break; } }
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 Id = UMC.Data.Utility.Guid(this.AsyncDialog("Id", g => { this.Prompt("请输入参数"); return(this.DialogValue("none")); }), true); var subEntity = Utility.CMS.ObjectEntity <UMC.Data.Entities.Subject>(); subEntity.Where.And().Equal(new Subject { Id = Id }); var sub = subEntity.Single(); var user = UMC.Security.Identity.Current; if (sub.project_id.HasValue) { var project = Utility.CMS.ObjectEntity <Project>().Where.And().Equal(new Project { Id = sub.project_id }).Entities.Single(); if (project != null && project.user_id == user.Id) { } else { var member = Utility.CMS.ObjectEntity <ProjectMember>().Where.And().Equal(new ProjectMember { project_id = sub.project_id, user_id = user.Id }).Entities.Single(); if (member != null) { switch (member.AuthType) { case WebAuthType.Admin: case WebAuthType.User: break; default: if (sub.Status > 0) { this.Context.Send(new UISectionBuilder(request.Model, "UIData", new UMC.Web.WebMeta().Put("Id", Id)) .Builder(), true); } if (sub.user_id == user.Id) { this.Prompt(String.Format("{0}项目收回了您的编辑权限", project.Caption)); } else { this.Prompt("您未有编辑此图文的权限"); } break; } } else { if (sub.Status > 0) { this.Context.Send(new UISectionBuilder(request.Model, "UIData", new UMC.Web.WebMeta().Put("Id", Id)) .Builder(), true); } if (sub.user_id == user.Id) { this.Prompt(String.Format("{0}项目收回了你的编辑权限", project.Caption)); } else { this.Prompt("您未有编辑此图文的权限"); } } } } if (String.IsNullOrEmpty(request.SendValue) == false) { this.Context.Send(new UISectionBuilder(request.Model, request.Command, new UMC.Web.WebMeta().Put("Id", Id)) .RefreshEvent("Subject.Save", "image", "Subject.Content").CloseEvent("Subject.Del") .Builder(), true); } // var appKey = UMC.Security.Principal.Current.AppKey ?? Guid.Empty; var Model = this.AsyncDialog("Model", gKey => { var webr = UMC.Data.WebResource.Instance(); UITitle uITItle = UITitle.Create(); uITItle.Title = "图文发布"; var sestion = UISection.Create(uITItle); var pictureEntity = Utility.CMS.ObjectEntity <UMC.Data.Entities.Picture>(); pictureEntity.Where.And().GreaterEqual(new Data.Entities.Picture { Seq = 0 }); pictureEntity.Order.Asc(new Data.Entities.Picture { Seq = 0 }); var images = new List <String>(); var items = new List <WebMeta>(); pictureEntity.Where .And().In(new Data.Entities.Picture { group_id = sub.Id }) .Entities.Query(dr => { var src = webr.ResolveUrl(dr.group_id.Value, dr.Seq, "0"); var chachKey = "?_ts=" + UMC.Data.Utility.TimeSpan(dr.UploadDate.Value); items.Add(new UMC.Web.WebMeta().Put("src", src + "!200" + chachKey).Put("click", new Web.UIClick(new UMC.Web.WebMeta().Put("Id", dr.group_id.Value).Put("Seq", dr.Seq).Put(gKey, "Picture")) { Model = request.Model, Command = request.Command })); images.Add(src + "?_ts=" + chachKey); }); var uidesc = new UIDesc(sub.Title); uidesc.Style.Bold().Height(50); uidesc.Click(new UIClick("Id", Id.ToString(), gKey, "Title") { Model = request.Model, Command = request.Command }); var nine = new UMC.Web.WebMeta().Put("images", items); sestion.Delete(uidesc, new UIEventText().Click(new UIClick("Id", Id.ToString(), gKey, "Del") { Model = request.Model, Command = request.Command })); var sT = sub.Description ?? sub.Title; if (sT.Length > 48) { sT = sT.Substring(0, 48) + "..."; } var desc = new UIDesc(sT); desc.Style.Height(40).Color(0x999).Size(13);//.Name("border", "none"); desc.Click(new UIClick("Id", Id.ToString(), gKey, "Desc") { Model = request.Model, Command = request.Command }); sestion .Add(UICell.Create("NineImage", nine)).Add(desc) .AddCell("封面方式", sub.IsPicture == true ? "显示大图" : (images.Count > 2 ? "三张图" : "单张图") , new UIClick("Id", Id.ToString(), gKey, "Show") { Model = request.Model, Command = request.Command }); if (images.Count < 3) { nine.Put("click", new UIClick("Id", Id.ToString(), gKey, "Image") { Model = request.Model, Command = request.Command }); } if (request.IsApp) { sestion.NewSection().AddCell('\uf044', "编辑正文", "", new UIClick(Id.ToString()) { Command = "Content", Model = request.Model }); } var status = "审阅中"; if (sub.Status > 0) { status = "已发布"; } else if (sub.Status < 0) { if (sub.Status == -2) { status = "被驳回"; } else { status = "未发布"; } } var cateName = "草稿"; if (sub.project_item_id.HasValue) { //var portfolio = Utility.CMS.ObjectEntity<UMC.Data.Entities.Portfolio>().Where.And().Equal(new Data.Entities.Portfolio //{ // Id = sub.portfolio_id.Value //}).Entities.Single(); var ProjectItem = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectItem>().Where.And().Equal(new Data.Entities.ProjectItem { Id = sub.project_item_id.Value }).Entities.Single(); var Project = Utility.CMS.ObjectEntity <UMC.Data.Entities.Project>().Where.And().Equal(new Data.Entities.Project { Id = sub.project_id.Value }).Entities.Single(); cateName = String.Format("{0}/{1}", Project.Caption, ProjectItem.Caption); } var ness = sestion .NewSection().AddCell("发布状态", status); ness.AddCell("所属专栏", cateName , new UIClick("Id", sub.Id.ToString(), gKey, "Project") { Model = request.Model, Command = request.Command }); ness.AddCell("评论功能", (sub.IsComment ?? true) ? "开启" : "关闭", new UIClick("Id", Id.ToString(), gKey, "Comment") { Model = request.Model, Command = request.Command }) .NewSection() .AddCell("浏览正文", "", new UIClick(sub.Id.ToString()).Send(request.Model, "View")) .AddCell("管理评论", "", new UIClick(Id.ToString()) { Command = "Comments", Model = request.Model }); if (request.UserAgent.IndexOf("DingTalk") > 0 && sub.project_id.HasValue) { if (Utility.CMS.ObjectEntity <ProjectSetting>() .Where.And().Equal(new ProjectSetting { project_id = sub.project_id, Type = 11 }).Entities.Count() > 0) { var strt = UMC.Security.AccessToken.Current.Data["DingTalk-Sub-Id"] as string;//, Utility.Guid(projectId)).Commit(); var text = ""; if (Utility.Guid(sub.Id.Value) == strt) { text = UMC.Security.AccessToken.Current.Data["DingTalk-Session-Text"] as string; } ness.NewSection().AddCell("发送到群", text, new UIClick("Id", Id.ToString(), gKey, "DingTalk") { Model = request.Model, Command = request.Command }); } } else { if (Utility.CMS.ObjectEntity <ProjectSetting>() .Where.And().Equal(new ProjectSetting { project_id = sub.project_id, Type = 12 }).Entities.Count() > 0) { ness.NewSection().AddCell("发送到群", "", new UIClick("Id", Id.ToString(), gKey, "DingTalk") { Model = request.Model, Command = request.Command }); } } //} sestion.UIFootBar = new UIFootBar().AddText( new UIEventText(sub.Status == 1 ? "下架" : "确认发布").Click(new UIClick("Id", Id.ToString(), "Model", "Status", "Status", sub.Status == 1 ? "-1" : "1") { Model = request.Model, Command = request.Command }).Style(new UIStyle().BgColor()), new UIEventText("摘正文摘要").Click(new UIClick("Id", Id.ToString(), "Model", "AutoDesc") { Model = request.Model, Command = request.Command })); sestion.UIFootBar.IsFixed = true; response.Redirect(sestion); return(this.DialogValue("none")); }); switch (Model) { case "Picture": var seq = this.AsyncDialog("Seq", "1"); this.AsyncDialog("Picture", g => { var sel = new Web.UISheetDialog(); sel.Options.Add(new UIClick(new UMC.Web.WebMeta().Put("id", sub.Id.Value).Put("seq", seq)) { Command = "Picture", Text = "重新上传", Model = "Design" }); sel.Options.Add(new UIClick(new UMC.Web.WebMeta().Put("id", sub.Id.Value).Put("seq", seq).Put("media_id", "none")) { Command = "Picture", Text = "删除图片", Model = "Design" }); return(sel); }); break; case "DingTalk": { if (sub.Status == 1) { switch (this.AsyncDialog("Type", g => { var ds = new UISelectDialog(); ds.Options.Put("用机器人发送", "Robot"); ds.Options.Put("选择到人发送", "Session"); return(ds); })) { case "Robot": if (Utility.CMS.ObjectEntity <ProjectSetting>() .Where.And().Equal(new ProjectSetting { project_id = sub.project_id, Type = 12 }).Entities.Count() > 0) { this.Send(request, sub, String.Empty, true); this.Prompt("机器人发送已经发起"); } else { this.Prompt("此项目未配置钉钉机器人"); } break; } } var DingTalk = Web.UIDialog.AsyncDialog("TalkId", g => { if (request.UserAgent.IndexOf("DingTalk") == -1) { this.Prompt("非钉钉环境,不能获取到钉钉会话参数"); } var ticket = SubjectDingtalkActivity.JsAccessToken(sub.project_id.Value); if (ticket == null) { this.Prompt("未有钉钉配置"); } if (String.IsNullOrEmpty(ticket.AgentId)) { this.Prompt("未有钉钉应用ID"); } var nonceStr = Utility.TimeSpan(); var timeStamp = Utility.TimeSpan(); var url = (request.UrlReferrer ?? request.Url).AbsoluteUri; String plain = "jsapi_ticket=" + ticket.APITicket + "&noncestr=" + nonceStr + "×tamp=" + timeStamp + "&url=" + url; var config = new WebMeta(); config.Put("agentId", ticket.AgentId); config.Put("corpId", ticket.CorpId); config.Put("timeStamp", timeStamp.ToString()); config.Put("nonceStr", nonceStr.ToString()); config.Put("url", url); config.Put("signature", Utility.SHA1(plain).ToLower()); config.Put("jsApiList", new string[] { "biz.map.view", "biz.chat.pickConversation" }); this.Context.Send("Subject.DingTalk", new WebMeta().Put("method", "pickConversation").Put("Sign", config).Put("Params", new WebMeta(request.Arguments).Put("_model", request.Model, "_cmd", request.Command)).Put("Key", g), true); return(this.DialogValue("none")); }); if (sub.Status == 1) { this.Send(request, sub, DingTalk, false); this.Prompt("会话发送已经发起"); } else { UMC.Security.AccessToken.Current.Put("DingTalk-Sub-Id", Utility.Guid(sub.Id.Value)).Put("DingTalk-Session-Text", this.AsyncDialog("TalkId-Text", "Text")).Put("DingTalk-Session-Id", DingTalk).Commit(); } } break; case "Image": Web.UIDialog.AsyncDialog("Image", g => { var dl = new Web.UISheetDialog() { Title = "图片上传" }; dl.Options.Add(new Web.UIClick(sub.Id.ToString()) { Model = request.Model, Command = "Image", Text = "正文图片" }); dl.Options.Add(new Web.UIClick(sub.Id.ToString()) { Model = "Design", Command = "Picture", Text = "本地图片" }); return(dl); }); break; case "Title": var title = Web.UIDialog.AsyncDialog("Title", g => { var dl = new Web.UIFormDialog() { Title = "图文标题" }; dl.AddTextarea("快文标题", "Title", sub.Title); dl.Submit("确认更改", request, "Subject.Save"); return(dl); }); subEntity.Update(new Subject { Title = title }); break; case "Desc": var desc = Web.UIDialog.AsyncDialog("Description", g => { var dl = new Web.UIFormDialog() { Title = "图文摘要" }; dl.AddTextarea("图文摘要", "Description", sub.Description ?? sub.Title).Put("Rows", 10); dl.Submit("确认更改", request, "Subject.Save"); return(dl); }); subEntity.Update(new Subject { Description = desc }); break; case "Score": var Score = Utility.IntParse(Web.UIDialog.AsyncDialog("Score", g => { var dl = new Web.UIFormDialog() { Title = "图文积分" }; dl.AddNumber("图文积分", "Score", sub.Score); dl.Submit("确认更改", request, "Subject.Save"); return(dl); }), 0); if (Score < 0) { this.Prompt("积分必须大于或等于零"); } subEntity.Update(new Subject { Score = Score }); break; case "Project": { var meta = new WebMeta(); if (sub.project_id.HasValue) { var project = Utility.CMS.ObjectEntity <Project>().Where.And().Equal(new Project { Id = sub.project_id.Value }).Entities.Single(); if (project != null) { if (project.Id == user.Id) { } else { meta.Put("Project", sub.project_id); var member = Utility.CMS.ObjectEntity <ProjectMember>().Where.And().Equal(new ProjectMember { project_id = sub.project_id, user_id = user.Id }).Entities.Single(); if (member != null) { switch (member.AuthType) { case WebAuthType.Admin: case WebAuthType.User: break; default: this.Prompt("您未有编辑此图文的权限"); break; } } else { this.Prompt("您未有编辑此图文的权限"); } } } } var sid = UMC.Data.Utility.Guid(this.AsyncDialog("PortfolioId", request.Model, "Portfolio", meta)).Value; var portfolio = Utility.CMS.ObjectEntity <UMC.Data.Entities.Portfolio>() .Where.And().Equal(new Portfolio { Id = sid }).Entities.Single(); var projectItem = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectItem>() .Where.And().Equal(new ProjectItem { Id = portfolio.project_item_id }).Entities.Single(); if (request.IsCashier == false) { var project = Utility.CMS.ObjectEntity <UMC.Data.Entities.Project>() .Where.And().Equal(new Project { Id = portfolio.project_id }).Entities.Single(); if (project.user_id.Value != user.Id) { var member = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectMember>() .Where.And().Equal(new ProjectMember { project_id = project.Id }).Entities.Single(); if (member == null) { this.Prompt("你尚未加入此项目的专栏"); } else { switch (member.AuthType) { case WebAuthType.Admin: case WebAuthType.User: break; default: this.Prompt("你尚未加入此项目的专栏"); break; } } } } if (String.IsNullOrEmpty(sub.Code)) { subEntity.Update(new Subject() { Code = Utility.Parse36Encode(sub.Id.Value.GetHashCode()), portfolio_id = portfolio.Id, project_id = projectItem.project_id, project_item_id = projectItem.Id, last_user_id = user.Id }); } else { subEntity.Update(new Subject() { portfolio_id = portfolio.Id, project_id = projectItem.project_id, project_item_id = projectItem.Id, last_user_id = user.Id }); } } break; case "Comment": var s2 = UMC.Data.Utility.IntParse(this.AsyncDialog("Comment", g => { var dl = new Web.UISelectDialog() { Title = "评论功能" }; dl.Options.Add("开启评论", "1"); dl.Options.Add("关闭评论", "-1"); return(dl); }), 0); subEntity.Update(new Subject { IsComment = s2 == 1 }); break; case "Status": var s = UMC.Data.Utility.IntParse(this.AsyncDialog("Status", g => { var dl = new Web.UISelectDialog() { Title = "发布确认" }; dl.Options.Add("不发布", "-1"); dl.Options.Add("发布", "1"); return(dl); }), 0); if (sub.project_id.HasValue == false || sub.project_item_id.HasValue == false || sub.portfolio_id.HasValue == false) { this.Prompt("请选择发布的栏位"); } if ((sub.soure_id ?? Guid.Empty) != Guid.Empty) { this.Prompt("提示", "非原创,公共栏目不接收,只限于公众号群发。"); } if (s == 0) { if (String.IsNullOrEmpty(sub.Url) == false && sub.Status == -1) { s = 1; } } if (s == -1 && sub.Status == -2) { this.Prompt("被驳回状态,不需要此操作"); } String Sdesc = null; if (s > 0) { //if (String.IsNullOrEmpty(sub.Code)) if (String.IsNullOrEmpty(sub.Description)) { // sub.DataJSON var celss = UMC.Data.JSON.Deserialize <WebMeta[]>((String.IsNullOrEmpty(sub.DataJSON) ? "[]" : sub.DataJSON)) ?? new UMC.Web.WebMeta[] { }; var sb = new StringBuilder(); foreach (var pom in celss) { switch (pom["_CellName"]) { case "CMSText": var value = pom.GetMeta("value"); var format = pom.GetMeta("format")["text"]; var fValue = Utility.Format(format, value.GetDictionary(), String.Empty); if (String.Equals(fValue, sub.Title) == false) { sb.Append(fValue); } if (sb.Length > 250) { break; } break; } } Sdesc = sb.Length > 250 ? sb.ToString(0, 250) : sb.ToString(); sub.Description = Sdesc; } var IsDraught = Utility.CMS.ObjectEntity <UMC.Data.Entities.Picture>().Where .And().In(new Data.Entities.Picture { group_id = sub.Id }).Entities.Count() == 0; subEntity.Update(new Subject { Status = s, Description = Sdesc, IsDraught = IsDraught, Code = String.IsNullOrEmpty(sub.Code) ? Utility.Guid(sub.Id.Value) : null, Poster = user.Alias, ReleaseDate = DateTime.Now }); var cid = String.Empty; // var strt = UMC.Security.AccessToken.Current.Data["DingTalk-Sub-Id"] as string; //, Utility.Guid(projectId)).Commit(); if (Utility.Guid(sub.Id.Value) == strt) { cid = UMC.Security.AccessToken.Current.Data["DingTalk-Session-Id"] as string; } Send(request, sub, cid, true); if (String.IsNullOrEmpty(strt) == false) { UMC.Security.AccessToken.Current.Put("DingTalk-Sub-Id", String.Empty).Commit(); } this.Prompt("发布成功", false); } else { subEntity.Update(new Subject { Status = s, Code = String.IsNullOrEmpty(sub.Code) ? Utility.Guid(sub.Id.Value) : null, }); } break; case "AutoDesc": { // sub.DataJSON var celss = UMC.Data.JSON.Deserialize <WebMeta[]>((String.IsNullOrEmpty(sub.DataJSON) ? "[]" : sub.DataJSON)) ?? new UMC.Web.WebMeta[] { }; var sb = new StringBuilder(); foreach (var pom in celss) { switch (pom["_CellName"]) { case "CMSText": var value = pom.GetMeta("value"); var format = pom.GetMeta("format")["text"]; var fValue = Utility.Format(format, value.GetDictionary(), String.Empty); if (String.Equals(fValue, sub.Title) == false) { sb.Append(fValue); } if (sb.Length > 250) { break; } break; } } var Sdesc2 = sb.Length > 250 ? sb.ToString(0, 250) : sb.ToString(); subEntity.Update(new Subject { Description = Sdesc2 }); } break; case "Show": var m = this.AsyncDialog("Show", g => { var dl = new Web.UISelectDialog() { Title = "封面展示方式" }; dl.Options.Put("封面大图形式", "Max").Put("封面小图形式", "Min"); return(dl); }); subEntity.Update(new Subject { IsPicture = String.Equals(m, "Max") }); break; case "Del": subEntity.Update(new Subject { Visible = -1, LastDate = DateTime.Now }); //subEntity.Delete(); this.Context.Send("Subject.Del", new WebMeta().Put("Id", sub.Id), false); break; } this.Context.Send("Subject.Save", true); }
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", "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", "auto") { Command = request.Command, Model = model, Text = "分享到更多应用上" }); return(sheet); }); var uri = request.Url; var hash = new UMC.Web.WebMeta(); hash["src"] = UMC.Data.WebResource.Instance().ResolveUrl(sub.Id.Value, "1", "0") + "!100"; hash["title"] = sub.Title; var domain = UMC.Data.WebResource.Instance().WebDomain(); hash["url"] = new Uri(request.Url, String.Format("{0}Page/{1}/UIData/Id/{2}", domain, model, sub.Id)).AbsoluteUri; if (String.IsNullOrEmpty(sub.Description)) { hash["title"] = sub.Title; hash["desc"] = sub.Description ?? sub.Title; } else { hash["desc"] = sub.Description; } hash["type"] = "Share"; switch (Type) { case "0": hash["wx"] = "0"; break; case "1": hash["wx"] = "1"; break; case "2": hash["wx"] = "2"; break; } this.Context.Send(hash, true); //data["ShareUrl"] = String.Format("http://www.365lu.cn/{0}/.pro?subject={1}", WebADNuke.Data.WebUtility.GetRoot(request.Url), proid); }
public override void ProcessActivity(WebRequest request, WebResponse response) { var Id = UMC.Data.Utility.Guid(this.AsyncDialog("Id", g => { this.Prompt("请输入参数"); return(this.DialogValue("none")); }), true); if (String.IsNullOrEmpty(request.SendValue) == false) { this.Context.Send(new UISectionBuilder(request.Model, request.Command, new UMC.Web.WebMeta().Put("Id", Id)) .RefreshEvent("Subject.Save", "Subject.WeiXin") .Builder(), true); } var subEntity = Utility.CMS.ObjectEntity <UMC.Data.Entities.Subject>(); subEntity.Where.And().Equal(new Subject { Id = Id }); var sub = subEntity.Single(); var webr = UMC.Data.WebResource.Instance(); //var appid = "wx141d18e076be64a1"; var user = UMC.Security.Identity.Current; var appid = user.Id.ToString(); var config = Data.JSON.Deserialize <Hashtable>(sub.ConfigXml) ?? new Hashtable(); var imageKey = config["images"] as Hashtable ?? new Hashtable(); config["images"] = imageKey; Array articleids = config["articles"] as Array; var subsid = new List <Guid>(); if (articleids != null) { foreach (var o in articleids) { subsid.Add(Utility.Guid(o.ToString()).Value); } } var Model = this.AsyncDialog("Model", gKey => { UITitle uITItle = UITitle.Create(); uITItle.Title = "公众号群发"; var sestion = UISection.Create(uITItle); var src = webr.ResolveUrl(sub.Id.Value, 1, "0") + "!cms1"; if (subsid.Count == 0) { var image = UICell.Create("CMSImage", new UMC.Web.WebMeta().Put("src", src)); image.Style.Padding(0, 10); var title = new UIDesc(sub.Title); title.Style.Bold().Height(40).Name("border", "none"); title.Click(new UIClick("Id", Id.ToString(), gKey, "Title") { Model = request.Model, Command = request.Command }); var desc = new UIDesc(sub.Description ?? sub.Title); desc.Style.Height(40).Color(0x999).Name("border", "none"); desc.Click(new UIClick("Id", Id.ToString(), gKey, "Desc") { Model = request.Model, Command = request.Command }); sestion.Add(title) .Add(image) .Add(desc); } else { var image = UICell.Create("CMSImage", new UMC.Web.WebMeta().Put("src", src).Put("title", sub.Title)); image.Style.Padding(10, 10, 0, 10); image.Format.Put("title", "{title}"); sestion.Add(image); Utility.CMS.ObjectEntity <UMC.Data.Entities.Subject>() .Where.And().In(new Subject { Id = subsid[0] }, subsid.ToArray()) .Entities.Query(dr => { var cell = new UIImageTextValue(webr.ResolveUrl(sub.Id.Value, 1, "0") + "!200", dr.Title, null); cell.Style.Name("image-width", 60); cell.Click(new UIClick("Id", dr.Id.ToString(), gKey, "Items") { Model = request.Model, Command = request.Command }); var item = new UMC.Web.WebMeta().Put("_CellName", cell.Type).Put("value", cell.Data).Put("format", cell.Format).Put("style", cell.Style) .Put("del", new UMC.Web.WebMeta().Put("click", new UIClick("Id", Id.ToString(), gKey, "Del", "Item", dr.Id.ToString()) { Model = request.Model, Command = request.Command })); sestion.AddCells(item); }); } var ctip = "未同步公众号"; var ModifiedTime = config["ModifiedTime"] as string; if (String.IsNullOrEmpty(ModifiedTime) == false) { ctip = String.Format("已同步公众号", Utility.GetDate(Utility.TimeSpan(Utility.IntParse(ModifiedTime, 0)))); } var ls = sestion.NewSection().AddCell("图文封面", config.ContainsKey("thumb_media_id") ? "已同步公众号" : "未同步公众号", new UIClick("Id", Id.ToString(), gKey, "Thumb") { Model = request.Model, Command = request.Command }).AddCell("图文正文", ctip, new UIClick("Id", Id.ToString(), gKey, "Content") { Model = request.Model, Command = request.Command }); var mstatus = ""; if (config.ContainsKey("ContentLoading")) { mstatus = "正在同步请等候"; } else { mstatus = config.ContainsKey("media_id") ? "已在公众生成" : "未在公众号生成"; } ls.AddCell("群发素材", mstatus, new UIClick("Id", Id.ToString(), gKey, "Material") { Model = request.Model, Command = request.Command }) .NewSection().AddCell("使用帮助", "查看", UIClick.Pager("Message", "UIData", new UMC.Web.WebMeta().Put("Id", "Help.SendWeiXin"))); sestion.UIFootBar = new UIFootBar().AddText(new UIEventText("追加图文") .Click(new UIClick("Id", Id.ToString(), "Model", "Preview") { Model = request.Model, Command = request.Command }), new UIEventText("微信预览") .Click(new UIClick("Id", Id.ToString(), "Model", "Articles") { Model = request.Model, Command = request.Command }).Style(new UIStyle().BgColor()), new UIEventText("确认群发").Click(new UIClick("Id", Id.ToString(), "Model", "SendAll") { Model = request.Model, Command = request.Command })); sestion.UIFootBar.IsFixed = true; response.Redirect(sestion); return(this.DialogValue("none")); }); switch (Model) { case "Articles": { var sudId = Utility.Guid(this.AsyncDialog("Articles", request.Model, "Select")).Value; var config2 = Data.JSON.Deserialize <Hashtable>(sub.ConfigXml) ?? new Hashtable(); Array articles2 = config2["articles"] as Array; var subsid2 = new List <Guid>(); if (articles2 != null) { foreach (var o in articles2) { subsid.Add(Utility.Guid(o.ToString()).Value); } } subsid.Remove(sudId); subsid.Add(sudId); config2["articles"] = subsid; subEntity.Update(new Subject { ConfigXml = Data.JSON.Serialize(config2) }); } break; case "Title": var title = Web.UIDialog.AsyncDialog("Title", g => { var dl = new Web.UIFormDialog() { Title = "图文标题" }; dl.AddTextarea("图文标题", "Title", sub.Title); dl.Submit("确认更改", request, "Subject.Save"); return(dl); }); subEntity.Update(new Subject { Title = title }); this.Context.Send("Subject.Save", true); break; case "Desc": var desc = Web.UIDialog.AsyncDialog("Description", g => { var dl = new Web.UIFormDialog() { Title = "图文摘要" }; dl.AddTextarea("图文摘要", "Description", sub.Description); dl.Submit("确认更改", request, "Subject.WeiXin"); return(dl); }); subEntity.Update(new Subject { Description = desc }); break; case "Thumb": if (webr.SubmitCheck(appid) == false) { response.Redirect("Message", "Auth"); } if (config.ContainsKey("thumb_media_id")) { var thumb_media_id = config["thumb_media_id"] as string; webr.Submit("cgi-bin/material/del_material", Data.JSON.Serialize(new UMC.Web.WebMeta().Put("media_id", thumb_media_id)), appid); } var src = webr.ResolveUrl(sub.Id.Value, 1, "0") + "!cms1"; var data = webr.Submit("cgi-bin/material/add_material&type=image", src, appid); if (data.ContainsKey("media_id") == false) { this.Prompt("同步封面图片失败"); } else { config["thumb_media_id"] = data["media_id"]; subEntity.Update(new Subject { ConfigXml = Data.JSON.Serialize(config) }); this.Prompt("最新封面成功同步到公众号。", false); } break; case "Content": if (webr.SubmitCheck(appid) == false) { response.Redirect("Message", "Auth"); } if (config.ContainsKey("thumb_media_id") == false) { this.Prompt("请先同步封面,再来同步正文"); } var ModifiedTime = Utility.IntParse(config["ModifiedTime"] as string ?? "", 0); if (Utility.TimeSpan() - ModifiedTime < 10) { this.Prompt("提示", "正在同步,请过一会再更新"); } var res = this.AsyncDialog("Content", g => { if (request.SendValues != null) { var url = request.SendValues["Url"]; if (String.IsNullOrEmpty(url) == false) { return(this.DialogValue(System.Text.UTF8Encoding.UTF8.GetString(new UMC.Net.HttpClient().DownloadData(url)))); } } var domUrl = new Uri(request.UrlReferrer ?? request.Url, String.Format("{0}Show/{1}/UIMin/Id/{2}", webr.WebDomain(), request.Model, sub.Id)).AbsoluteUri; this.Context.Send(new UMC.Web.WebMeta().Put("type", "OpenUrl").Put("selector", "#body section", "value", domUrl).Put("title", "正文同步到公众号素材") .Put("submit", new Web.UIClick("Id", sub.Id.ToString(), "Model", "Content", "Url", "Value") { Command = request.Command, Model = request.Model }), true); return(this.DialogValue("none")); }); config["ContentLoading"] = "YES"; subEntity.Update(new Subject { ConfigXml = Data.JSON.Serialize(config) }); UMC.Data.Reflection.Start(() => { var udata = new Subject(); try { var content = Content(res, appid, imageKey); config["ModifiedTime"] = Utility.TimeSpan(); config.Remove("ContentLoading"); udata.Content = content; } catch (Exception ex) { config.Remove("ContentLoading"); config["result"] = ex.Message; } finally { udata.ConfigXml = Data.JSON.Serialize(config); subEntity.Update(udata); } }); break; case "Material": if (webr.SubmitCheck(appid) == false) { response.Redirect("Message", "Auth"); } if (config.ContainsKey("ModifiedTime") == false) { this.Prompt("提示", String.Format("“{0}”正文未同步到公众号", sub.Title)); } if (config.ContainsKey("thumb_media_id") == false) { this.Prompt("提示", String.Format("“{0}”封面未同步到公众号", sub.Title)); } if (config.ContainsKey("media_id")) { webr.Submit("cgi-bin/material/del_material", Data.JSON.Serialize(new UMC.Web.WebMeta().Put("media_id", config["media_id"])), appid); } var content_source_url = new Uri(request.Url, String.Format("{0}Page/{1}/UIData/Id/{2}", webr.WebDomain(), request.Model, sub.Id)).AbsoluteUri; var articles = new List <WebMeta>(); articles.Add(new UMC.Web.WebMeta().Put("title", sub.Title) .Put("author", user.Alias) .Put("digest", sub.Description ?? sub.Title) .Put("thumb_media_id", config["thumb_media_id"]) .Put("content", sub.Content) .Put("show_cover_pic", 0) .Put("content_source_url", content_source_url) .Put("need_open_comment", (sub.IsComment ?? true) ? 1 : 0)); var subs = new List <Subject>(); if (subsid.Count > 0) { Utility.CMS.ObjectEntity <UMC.Data.Entities.Subject>().Where.And().In(new Subject { Id = subsid[0] }, subsid.ToArray()) .Entities.Query(dr => subs.Add(dr)); foreach (var key in subsid) { var csub = subs.Find(g => g.Id == key); var sconfig = Data.JSON.Deserialize <Hashtable>(csub.ConfigXml) ?? new Hashtable(); if (sconfig.ContainsKey("ModifiedTime") == false) { this.Prompt("提示", String.Format("“{0}”正文未同步到公众号", csub.Title)); } if (sconfig.ContainsKey("thumb_media_id") == false) { this.Prompt("提示", String.Format("“{0}”封面未同步到公众号", csub.Title)); } content_source_url = new Uri(request.Url, String.Format("{0}Page/{1}/UIData/Id/{2}", webr.WebDomain(), request.Model, csub.Id)).AbsoluteUri; articles.Add(new UMC.Web.WebMeta().Put("title", csub.Title) .Put("author", user.Alias) .Put("digest", csub.Description ?? csub.Title) .Put("thumb_media_id", sconfig["thumb_media_id"]) .Put("content", csub.Content) .Put("show_cover_pic", 0) .Put("content_source_url", content_source_url) .Put("need_open_comment", (sub.IsComment ?? true) ? 1 : 0)); } } var sData = webr.Submit("cgi-bin/material/add_news", Data.JSON.Serialize(new UMC.Web.WebMeta().Put("articles", articles)), appid); if (sData.ContainsKey("media_id") == false) { this.Prompt("提示", "上传图文素材失败"); } else { config["media_id"] = sData["media_id"]; config["MediaTime"] = Utility.TimeSpan(); config["result"] = "ok"; subEntity.Update(new Subject { ConfigXml = Data.JSON.Serialize(config) }); this.Prompt("提示", "最新图文素材成功更新到公众号。", false); } break; case "SendAll": if (webr.SubmitCheck(appid) == false) { response.Redirect("Message", "Auth"); } if (config.ContainsKey("media_id") == false) { this.Prompt("提示", "请先生成群发素材"); } if (config.ContainsKey("msg_id")) { var msgData = webr.Submit("cgi-bin/message/mass/get", Data.JSON.Serialize(new UMC.Web.WebMeta().Put("msg_id", config["msg_id"])), appid); switch (msgData["msg_status"] as string) { case "SEND_SUCCESS": this.Prompt("提示", "群发发送成功"); break; case "SENDING": this.Prompt("提示", "群发正在发送中"); break; case "SEND_FAIL": this.Prompt("提示", "群发发送失败,请在公众号后台查看"); break; case "DELETE": this.Prompt("提示", "信息已经删除"); break; } } var tag = this.AsyncDialog("tag", t => { var appKey = UMC.Security.Principal.Current.AppKey ?? Guid.Empty; if (appKey == Guid.Empty) { return(this.DialogValue("-1")); } var tags = webr.Submit("cgi-bin/tags/get", String.Empty, appid); if (String.Equals(tags["errcode"], "48001")) { return(this.DialogValue("-1")); } var header = new Web.UIGridDialog.Header("id", 0); header.AddField("name", "粉丝标签"); header.AddField("count", "粉丝数"); var ls = new ArrayList(); ls.Add(new UMC.Web.WebMeta().Put("id", "-1", "name", "所有粉丝", "count", "all")); ls.AddRange(tags["tags"] as Array); var di = Web.UIGridDialog.Create(header, ls.ToArray()); di.Title = "群发的粉丝"; return(di); }); var filter = new UMC.Web.WebMeta().Put("is_to_all", tag == "-1"); if (tag != "-1") { filter.Put("tag_id", tag); } var sendall = new UMC.Web.WebMeta().Put("msgtype", "mpnews").Put("send_ignore_reprint", 0).Put("clientmsgid", Utility.Guid(sub.Id.Value)) .Put("filter", filter).Put("mpnews", new UMC.Web.WebMeta().Put("media_id", config["media_id"])); var sendData = webr.Submit("cgi-bin/message/mass/sendall", Data.JSON.Serialize(sendall), appid); if (sendData.ContainsKey("msg_data_id")) { config["msg_id"] = sendData["msg_id"]; config["msg_data_id"] = sendData["msg_data_id"]; config["clientmsgid"] = sub.Id; subEntity.Update(new Subject { ConfigXml = Data.JSON.Serialize(config) }); this.Prompt("提示", "群发指令已经成功提交"); } else { var errcode = (sendData["errcode"] ?? "").ToString(); switch (errcode) { case "0": this.Prompt("发送成功"); break; case "48001": this.Prompt("群发失败", "此公众号未认证"); break; default: this.Prompt("群发失败", "请确认此微信号已经关注公众号"); break; } } break; case "Preview": if (webr.SubmitCheck(appid) == false) { this.Context.Send(new UISectionBuilder("Message", "UIData", new UMC.Web.WebMeta().Put("Id", "Help.Auth")) .Builder(), true); } if (config.ContainsKey("media_id") == false) { this.Prompt("提示", "请先生成群发素材"); } else { var touser = Web.UIDialog.AsyncDialog("Touser", g => { var dl = new Web.UIFormDialog() { Title = "微信号" }; dl.AddText("微信号", "Touser", String.Empty); dl.Submit("确认", request, "Subject.WeiXin"); return(dl); }); //touser = "******"; var preview = new UMC.Web.WebMeta().Put("msgtype", "mpnews") .Put("touser", touser).Put("mpnews", new UMC.Web.WebMeta().Put("media_id", config["media_id"])); var rdata = webr.Submit("cgi-bin/message/mass/preview", Data.JSON.Serialize(preview), appid); var errcode = (rdata["errcode"] ?? "").ToString(); switch (errcode) { case "0": this.Prompt("发送成功"); break; case "48001": this.Prompt("发送失败", "此公众号未认证"); break; default: this.Prompt("发送失败", "请确认此微信号已经关注公众号"); break; } } break; case "Items": this.AsyncDialog("Items", g => { var dl = new Web.UISheetDialog() { Title = "公众号同步" }; dl.Options.Add(new UIClick("Id", Id.ToString(), "Model", "Thumb") { Text = "封面同步到公众号", Model = request.Model, Command = request.Command }); dl.Options.Add(new UIClick("Id", Id.ToString(), "Model", "Content") { Text = "正文同步到公众号", Model = request.Model, Command = request.Command }); return(dl); }); break; case "Del": var itemid = Utility.Guid(this.AsyncDialog("Item", "aut")); if (itemid.HasValue) { subsid.Remove(itemid.Value); config["articles"] = subsid; subEntity.Update(new Subject { ConfigXml = Data.JSON.Serialize(config) }); } break; } this.Context.Send("Subject.WeiXin", true); }
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 Url = this.AsyncDialog("Id", g => { if (request.IsApp == false) { return(this.DialogValue("News")); } var optls = new Web.UISheetDialog(); optls.Title = "新建图文";; optls.Options.Add(new UIClick("News") { Command = request.Command, Model = request.Model, Text = "新建富文本图文" }); optls.Options.Add(new UIClick("Markdown") { Command = request.Command, Model = request.Model, Text = "新建Markdown文档" }); optls.Options.Add(new UIClick() { Key = "CaseCMS", Text = "抓取粘贴板网址图文" }); return(optls); }); var user = UMC.Security.Identity.Current; if (user.IsAuthenticated == false) { this.Prompt("请先登录", false); response.Redirect("Account", "Login"); } var sId = UMC.Data.Utility.Guid(Url); if (sId.HasValue == false) { var sType = "text/html"; switch (Url) { case "Project": response.Redirect(request.Model, "ProjectUI", "News", true); break; case "Markdown": sType = "markdown"; if (request.IsApp) { this.Context.Send("Markdown", new WebMeta().Put("Id", "News"), true); } break; } if (request.IsApp == false) { var sub2 = new Subject() { Visible = 1, CreationTime = DateTime.Now, Title = DateTime.Now.ToShortDateString(), IsPicture = false, IsDraught = true, Id = Guid.NewGuid(), ContentType = sType, LastDate = DateTime.Now, Poster = user.Alias, Seq = Utility.TimeSpan(), last_user_id = user.Id, user_id = user.Id, Status = -1 }; SubjectSaveActivity.Dashboard(user, sub2); Utility.CMS.ObjectEntity <Subject>().Insert(sub2); this.Context.Send("Markdown", new WebMeta().Put("Id", Utility.Guid(sub2.Id.Value)), true); } } var sub = sId.HasValue ? (Utility.CMS.ObjectEntity <Subject>() .Where.And().Equal(new Subject { Id = sId }).Entities.Single() ?? new Subject { Id = sId }) : new Subject { Id = sId };; if (String.IsNullOrEmpty(request.SendValue) == false) { if (sub.project_id.HasValue) { var project = Utility.CMS.ObjectEntity <Project>().Where.And().Equal(new Project { Id = sub.project_id }).Entities.Single(); if (project != null) { if (project.user_id == user.Id) { } else { var member = Utility.CMS.ObjectEntity <ProjectMember>().Where.And().Equal(new ProjectMember { project_id = sub.project_id, user_id = user.Id }).Entities.Single(); if (member != null) { switch (member.AuthType) { case WebAuthType.Admin: case WebAuthType.User: break; default: this.Prompt("您未有编辑此图文的权限"); break; } } else { this.Prompt("您未有编辑此图文的权限"); } } } } if (String.Equals("markdown", sub.ContentType, StringComparison.CurrentCultureIgnoreCase)) { this.Context.Send("Markdown", new WebMeta().Put("Id", sId), true); } else { if (request.IsApp) { this.Context.Send(new UISectionBuilder(request.Model, request.Command, new UMC.Web.WebMeta().Put("Id", sId.HasValue ? sId : Guid.NewGuid())) .CloseEvent("Subject.Save") .Builder().Put("IsEditer", true), true); } else { this.Context.Send("Markdown", new WebMeta().Put("Id", Utility.Guid(sId.Value)), true); } } } var Next = this.AsyncDialog("Next", "none"); var ui = UISection.Create(); var title = new UITitle("图文编辑器"); ui.Title = title; title.Right(new UIEventText().Icon('\uf0c7').Click(UIClick.Click(new UIClick("Id", sub.Id.ToString(), "Next", Next) { Command = "Save", Model = request.Model }))); var celss = UMC.Data.JSON.Deserialize <WebMeta[]>((String.IsNullOrEmpty(sub.DataJSON) ? "[]" : sub.DataJSON)) ?? new UMC.Web.WebMeta[] { }; foreach (var pom in celss) { switch (pom["_CellName"]) { case "CMSImage": pom.Put("style", new UIStyle().Padding(0, 10)); break; } } if (celss.Length == 0) { var ed = ui.NewSection(); ed.DisableSeparatorLine(); ed.IsEditer = true; ed.AddCells(new UMC.Web.WebMeta().Put("_CellName", "CMSText").Put("value", new UMC.Web.WebMeta().Put("text", "新建文档"))); } else { var ed = ui.NewSection(); ed.IsEditer = true; ed.AddCells(celss); ed.DisableSeparatorLine(); } var style = new UIStyle(); var footer = new UIHeader(); ui.UIFooter = footer;// footer.Desc(new UMC.Web.WebMeta("icon", "\uf004", "desc", "天天录,录入您知识财富"), "{icon}\n{desc}", style); style.Height(350).Color(0xf0f0f0).AlignCenter().BgColor(0xf8f8f8).Name("border", "none");//.BorderColor style.Name("icon").Font("wdk").Size(40); response.Redirect(ui); }
public override void ProcessActivity(WebRequest request, WebResponse response) { var user = UMC.Security.Identity.Current; if (user.IsAuthenticated == false) { if (request.IsApp) { response.Redirect("Account", "Login"); } else { this.Prompt("请登录"); } } var subEntity = Utility.CMS.ObjectEntity <UMC.Data.Entities.Subject>(); var sId = this.AsyncDialog("Id", ag => { var form = request.SendValues ?? new UMC.Web.WebMeta(); if (form.ContainsKey("limit") == false) { this.Context.Send(new UISectionBuilder(request.Model, request.Command) .RefreshEvent("Subject.Apply") .Builder(), true); } subEntity.Where.And().Equal(new Subject { Status = 0, Visible = 1 }); var webr = UMC.Data.WebResource.Instance(); 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 category = form["Category"] as string; var model = request.Model; //subEntity.Where.And().In("category_id", Utility.CMS.ObjectEntity/*<Category>().Where.And().Equal(new Category { user_id = user.Id }).Entities.Script(new Category { Id = Guid.Empty }));*/ var pics = new List <UMC.Data.Entities.Picture>(); Guid?CategoryId = UMC.Data.Utility.Guid(category); var Keyword = (form["Keyword"] as string ?? String.Empty); if (CategoryId.HasValue) { subEntity.Where.And().Equal(new Data.Entities.Subject { category_id = CategoryId }); } if (String.IsNullOrEmpty(Keyword) == false) { subEntity.Where.And().Like(new Subject { Title = Keyword }); } if (!String.IsNullOrEmpty(sort)) { if (dir == "DESC") { subEntity.Order.Desc(sort); } else { subEntity.Order.Asc(sort); } } else { subEntity.Order.Desc(new Subject { ReleaseDate = DateTime.Now }); } var subs = new List <Subject>(); var cateids = new List <Guid>(); var ids = new List <Guid>(); subEntity.Query(start, limit, dr => { subs.Add(dr); cateids.Add(dr.category_id ?? Guid.Empty); ids.Add(dr.Id.Value); }); //var cates = new List<Category>(); //if (ids.Count > 0) //{ // Utility.CMS.ObjectEntity<Category>().Where.And().In(new Category { Id = Guid.Empty }, cateids.ToArray()) // .Entities.Query(dr => cates.Add(dr)); // Data.Database.Instance().ObjectEntity<Data.Entities.Picture>().Where.And().In(new Data.Entities.Picture { group_id = ids[0] }, ids.ToArray()) // .Entities.Order.Asc(new Data.Entities.Picture { Seq = 0 }).Entities.Query(g => pics.Add(g)); //} var ui = UISection.Create(); if (start == 0) { ui.Title = new UITitle("我的版务"); } foreach (var sub in subs) { var ims = new List <UMC.Data.Entities.Picture>(); pics.RemoveAll(g => { if (g.group_id == sub.Id) { ims.Add(g); return(true); } return(false); }); var imgs = new List <String>(); if (ims.Count > 0) { switch (ims.Count) { case 2: case 1: imgs.Add(webr.ResolveUrl(sub.Id.Value, 1, "0") + "!cms" + ((sub.IsPicture ?? false) ? "1" : "3") + "?_ts=" + UMC.Data.Utility.TimeSpan(ims[0].UploadDate.Value)); break; default: for (var i = 0; i < 3; i++) { imgs.Add(webr.ResolveUrl(sub.Id.Value, ims[i].Seq ?? 0, "0") + "!cms3?_ts=" + UMC.Data.Utility.TimeSpan(ims[i].UploadDate.Value)); } break; } } var hash = new System.Collections.Hashtable(); var cate = cates.Find(g => g.Id == sub.category_id); if (cate != null) { hash["id"] = cate.Id; hash["text"] = cate.Caption; } else { hash["text"] = "未分类"; } var click = Web.UIClick.Pager("Subject", "UIData", new UMC.Web.WebMeta().Put("Id", sub.Id)); var data = new UMC.Web.WebMeta().Put("title", sub.Title).Put("reply", sub.Reply ?? 0).Put("look", sub.Look ?? 0) .Put("left", cate == null ? "未分类" : cate.Caption); UICell cell; switch (imgs.Count) { case 0: cell = UICMS.CreateMax(click, data); break; default: cell = (sub.IsPicture ?? false) ? UICMS.CreateMax(click, data, imgs[0]) : (ims.Count > 2 ? UICMS.CreateThree(click, data, imgs.ToArray()) : UICMS.CreateOne(click, data, imgs[0])); break; } cell.Style.Name("licon", new UIStyle().Size(12).Font("wdk")).Name("ricon", new UIStyle().Size(12).Font("wdk")); cell.Format.Put("right", "\uF06E{1:licon} {look} \uF0E6{1:ricon} {reply}"); ui.Add(cell); } ui.Total = subEntity.Count(); if (ui.Total == 0) { ui.Add("Desc", new UMC.Web.WebMeta().Put("desc", "还未有需要审核的版务").Put("icon", "\uF016"), 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))); } response.Redirect(ui); return(this.DialogValue("none")); }); var Type = this.AsyncDialog("Type", g => { var shett = new Web.UISheetDialog() { Title = "图文版务" }; shett.Options.Add(new UIClick(new UMC.Web.WebMeta(request.Arguments.GetDictionary()).Put("Type", "OK")) { Model = request.Model, Command = request.Command, Text = "审核通过" }); shett.Options.Add(new UIClick(new UMC.Web.WebMeta(request.Arguments.GetDictionary()).Put("Type", "Reject")) { Model = request.Model, Command = request.Command, Text = "驳回重写" }); return(shett); }); var usub = new Subject(); usub.Status = Type == "OK" ? 1 : -2; var strs = new string[] { "内容低俗", "过度营销", "不符合社会价值观", "法律禁止" }; var appdesc = Utility.IntParse(this.AsyncDialog("Desc", g => { if (Type == "OK") { return(this.DialogValue("-1")); } var shett = new Web.UISelectDialog() { Title = "驳回原因" }; shett.Options.Put(strs[0], "0").Put(strs[1], "1").Put(strs[2], "2"); return(shett); }), -1); if (appdesc > -1) { usub.AppDesc = strs[appdesc]; } if (usub.Status > 0) { usub.LastDate = DateTime.Now; usub.ReleaseDate = DateTime.Now; } else { usub.LastDate = DateTime.Now; } subEntity.Where.And().Equal(new Subject { Id = Utility.Guid(sId, true) }) .Entities.Update(usub); this.Context.Send("Subject.Apply", true); }
public override void ProcessActivity(WebRequest request, WebResponse response) { var UI = this.AsyncDialog("UI", "none"); var section = this.AsyncDialog("section", "-1"); var row = this.AsyncDialog("row", "-1"); var Type = this.AsyncDialog("Type", g => { var shett = new Web.UISheetDialog() { Title = "图片操作" }; shett.Options.Add(new UIClick(new UMC.Web.WebMeta(request.Arguments.GetDictionary()).Put("Type", "Click")) { Model = request.Model, Command = request.Command, Text = "点击连接" }); shett.Options.Add(new UIClick(new UMC.Web.WebMeta(request.Arguments.GetDictionary()).Put("Type", "Reset")) { Model = request.Model, Command = request.Command, Text = "更换图片" }); shett.Options.Add(new UIClick(new UMC.Web.WebMeta(request.Arguments.GetDictionary()).Put("Type", "Del")) { Model = request.Model, Command = request.Command, Text = "移除图片" }); return(shett); }); switch (Type) { case "Reset": var media_id = this.AsyncDialog("media_id", m => { var f = Web.UIDialog.CreateDialog("File"); f.Config.Put("Submit", new UIClick(new UMC.Web.WebMeta(request.Arguments.GetDictionary()).Put("media_id", "Value")) { Command = request.Command, Model = request.Model }); return(f); }); var url = new Uri(media_id); var urlKey = String.Format("UserResources/{0:YYMMDD}/{1}{2}", DateTime.Now, UMC.Data.Utility.TimeSpan(), url.AbsolutePath.Substring(url.AbsolutePath.LastIndexOf('/'))); var webr = UMC.Data.WebResource.Instance(); var domain = webr.WebDomain(); webr.Transfer(url, urlKey); var posmata = new UMC.Web.WebMeta(); posmata.Put("src", String.Format("{0}{1}", domain, urlKey)); var vale = new UMC.Web.WebMeta().Put("section", section).Put("row", row).Put("method", "VALUE").Put("reloadSinle", true).Put("value", posmata); this.Context.Send(new UMC.Web.WebMeta().UIEvent("UI.Edit", UI, vale), true); break; case "Del": var dvale = new UMC.Web.WebMeta().Put("section", section).Put("row", row).Put("method", "DEL").Put("reloadSinle", true).Put("value", new UMC.Web.WebMeta()); this.Context.Send(new UMC.Web.WebMeta().UIEvent("UI.Edit", UI, dvale), true); break; case "Click": var click = this.Click(new UIClick()); var posmata2 = new UMC.Web.WebMeta(); posmata2.Put("click", click); this.Prompt("图片点击设置成功", false); this.Context.Send("Click", false); this.Context.Send(new UMC.Web.WebMeta().UIEvent("UI.Edit", UI, new UMC.Web.WebMeta().Put("section", section).Put("row", row).Put("method", "VALUE") .Put("value", posmata2)), true); break; } }