public IHttpActionResult Submit() { try { var request = Context.GetCurrentRequest(); var formInfo = FormManager.GetFormInfoByPost(request); if (formInfo == null) { return(NotFound()); } if (!request.IsAdminLoggin || !request.AdminPermissions.HasSitePermissions(formInfo.SiteId, FormUtils.PluginId)) { return(Unauthorized()); } var fieldId = request.GetPostInt("fieldId"); var value = request.GetPostString("value"); var fieldInfo = FieldManager.GetFieldInfo(fieldId); fieldInfo.Validate = value; FieldDao.Update(fieldInfo, false); return(Ok(new{})); } catch (Exception ex) { return(InternalServerError(ex)); } }
private bool UpdateFieldInfo(FieldInfo fieldInfo, FieldInfo body, bool isRapid, List <string> rapidValues, out string errorMessage) { errorMessage = string.Empty; fieldInfo.Title = body.Title; fieldInfo.Taxis = body.Taxis; fieldInfo.FieldType = body.FieldType; fieldInfo.Items = new List <FieldItemInfo>(); if (body.FieldType == InputType.CheckBox.Value || body.FieldType == InputType.Radio.Value || body.FieldType == InputType.SelectMultiple.Value || body.FieldType == InputType.SelectOne.Value) { if (isRapid) { foreach (var rapidValue in rapidValues) { var itemInfo = new FieldItemInfo { FieldId = fieldInfo.Id, Value = rapidValue }; fieldInfo.Items.Add(itemInfo); } } else { var isHasSelected = false; foreach (var styleItem in body.Items) { if (body.FieldType != InputType.SelectMultiple.Value && body.FieldType != InputType.CheckBox.Value && isHasSelected && styleItem.IsSelected) { errorMessage = "操作失败,只能有一个初始化时选定项!"; return(false); } if (styleItem.IsSelected) { isHasSelected = true; } var itemInfo = new FieldItemInfo { FieldId = fieldInfo.Id, Value = styleItem.Value, IsSelected = styleItem.IsSelected }; fieldInfo.Items.Add(itemInfo); } } } FieldDao.Update(fieldInfo, true); return(true); }
public override void Startup(IService service) { FormDao = new FormDao(ConnectionString, DataApi); LogDao = new LogDao(ConnectionString, DataApi); FieldDao = new FieldDao(ConnectionString, DataApi); FieldItemDao = new FieldItemDao(ConnectionString, DataApi); service .AddSiteMenu(siteId => { var formInfoList = FormDao.GetFormInfoListNotInChannel(siteId); var menus = formInfoList.Select(formInfo => new Menu { Text = $"{formInfo.Title}", Href = $"{nameof(PageLogs)}.aspx?formId={formInfo.Id}" }).ToList(); menus.Add(new Menu { Text = "表单管理", Href = $"{nameof(PageManagement)}.aspx" }); return(new Menu { Text = "表单", IconClass = "ion-android-list", Menus = menus }); }) .AddContentLink(new HyperLink { Text = "表单管理", NavigateUrl = $"{nameof(PageLogs)}.aspx" }) .AddDatabaseTable(FormDao.TableName, FormDao.Columns) .AddDatabaseTable(LogDao.TableName, LogDao.Columns) .AddDatabaseTable(FieldDao.TableName, FieldDao.Columns) .AddDatabaseTable(FieldItemDao.TableName, FieldItemDao.Columns) .AddStlElementParser(StlForm.ElementName, StlForm.Parse) ; service.ContentTranslateCompleted += Service_ContentTranslateCompleted; service.ContentDeleteCompleted += Service_ContentDeleteCompleted; service.ApiPost += ServiceOnApiPost; service.ApiGet += Service_ApiGet; Instance = this; }
public IHttpActionResult Delete() { try { var request = Context.GetCurrentRequest(); var formInfo = FormManager.GetFormInfoByPost(request); if (formInfo == null) { return(NotFound()); } if (!request.IsAdminLoggin || !request.AdminPermissions.HasSitePermissions(formInfo.SiteId, FormUtils.PluginId)) { return(Unauthorized()); } var fieldId = request.GetPostInt("fieldId"); FieldDao.Delete(fieldId); var list = new List <object>(); foreach (var fieldInfo in FieldManager.GetFieldInfoList(formInfo.Id)) { list.Add(new { fieldInfo.Id, fieldInfo.Title, InputType = FormUtils.GetFieldTypeText(fieldInfo.FieldType), fieldInfo.Validate, fieldInfo.Taxis }); } return(Ok(new { Value = list })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public static List <KeyValuePair <string, FieldInfo> > GetAllTableStyles() { var retval = CacheUtils.Get <List <KeyValuePair <string, FieldInfo> > >(CacheKey); if (retval != null) { return(retval); } lock (LockObject) { retval = CacheUtils.Get <List <KeyValuePair <string, FieldInfo> > >(CacheKey); if (retval == null) { retval = FieldDao.GetAllFieldInfoList(); CacheUtils.InsertHours(CacheKey, retval, 12); } } return(retval); }
private bool InsertFieldInfo(int siteId, int formId, FieldInfo body, bool isRapid, List <string> rapidValues, out string errorMessage) { errorMessage = string.Empty; if (string.IsNullOrEmpty(body.Title)) { errorMessage = "操作失败,字段名不能为空!"; return(false); } if (FieldDao.IsTitleExists(formId, body.Title)) { errorMessage = $@"显示样式添加失败:字段名""{body.Title}""已存在"; return(false); } var fieldInfo = new FieldInfo { FormId = formId, Title = body.Title, Taxis = body.Taxis, FieldType = body.FieldType, Items = new List <FieldItemInfo>() }; if (body.FieldType == InputType.CheckBox.Value || body.FieldType == InputType.Radio.Value || body.FieldType == InputType.SelectMultiple.Value || body.FieldType == InputType.SelectOne.Value) { if (isRapid) { foreach (var rapidValue in rapidValues) { var itemInfo = new FieldItemInfo { FormId = formId, Value = rapidValue }; fieldInfo.Items.Add(itemInfo); } } else { var isHasSelected = false; foreach (var styleItem in body.Items) { if (body.FieldType != InputType.SelectMultiple.Value && body.FieldType != InputType.CheckBox.Value && isHasSelected && styleItem.IsSelected) { errorMessage = "操作失败,只能有一个初始化时选定项!"; return(false); } if (styleItem.IsSelected) { isHasSelected = true; } var itemInfo = new FieldItemInfo { Value = styleItem.Value, IsSelected = styleItem.IsSelected }; fieldInfo.Items.Add(itemInfo); } } } FieldDao.Insert(siteId, fieldInfo); return(true); }
public void Startup(IContext context, IService service) { ConnectionString = context.Environment.ConnectionString; DataApi = context.DataApi; AdminApi = context.AdminApi; FilesApi = context.FilesApi; Dao = new Dao(ConnectionString, DataApi); PollDao = new PollDao(ConnectionString, DataApi); ItemDao = new ItemDao(ConnectionString, DataApi); LogDao = new LogDao(ConnectionString, DataApi); FieldDao = new FieldDao(ConnectionString, DataApi); FieldItemDao = new FieldItemDao(ConnectionString, DataApi); service .AddContentLinks(new List <HyperLink> { //new PluginContentLink //{ // Text = "编辑投票", // Href = "http://localhost:3000?pageType=edit_items" //}, //new PluginContentLink //{ // Text = "查看投票", // Href = "http://localhost:3000?pageType=view_items" //} new HyperLink { Text = "编辑投票", NavigateUrl = "build/index.html" }, new HyperLink { Text = "查看投票", NavigateUrl = $"{nameof(PageResults)}.aspx" } }) .AddDatabaseTable(PollDao.TableName, PollDao.Columns) .AddDatabaseTable(ItemDao.TableName, ItemDao.Columns) .AddDatabaseTable(LogDao.TableName, LogDao.Columns) .AddDatabaseTable(FieldDao.TableName, FieldDao.Columns) .AddDatabaseTable(FieldItemDao.TableName, FieldItemDao.Columns) .AddStlElementParser(StlPoll.ElementName, StlPoll.Parse) ; service.ContentTranslateCompleted += (sender, args) => { var pollInfo = PollDao.GetPollInfo(args.SiteId, args.ChannelId, args.ContentId); if (pollInfo == null) { return; } pollInfo.PublishmentSystemId = args.TargetSiteId; pollInfo.ChannelId = args.TargetChannelId; pollInfo.ContentId = args.TargetContentId; pollInfo.TimeToStart = DateTime.Now; pollInfo.TimeToEnd = DateTime.Now.AddYears(1); PollDao.Insert(pollInfo); }; service.ContentDeleteCompleted += (sender, args) => { PollDao.Delete(args.SiteId, args.ChannelId, args.ContentId); }; service.ApiGet += (sender, args) => { var request = args.Request; if (!string.IsNullOrEmpty(args.Name) && !string.IsNullOrEmpty(args.Id)) { if (args.Name == "code") { var response = new HttpResponseMessage(); var random = new Random(); var validateCode = ""; char[] s = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; for (var i = 0; i < 4; i++) { validateCode += s[random.Next(0, s.Length)].ToString(); } var validateimage = new Bitmap(75, 25, PixelFormat.Format32bppRgb); var colors = Utils.Colors[random.Next(0, 5)]; var g = Graphics.FromImage(validateimage); g.FillRectangle(new SolidBrush(Color.FromArgb(240, 243, 248)), 0, 0, 100, 100); //矩形框 g.DrawString(validateCode, new Font(FontFamily.GenericSerif, 18, FontStyle.Bold | FontStyle.Italic), new SolidBrush(colors), new PointF(10, 0)); //字体/颜色 for (var i = 0; i < 100; i++) { var x = random.Next(validateimage.Width); var y = random.Next(validateimage.Height); validateimage.SetPixel(x, y, Color.FromArgb(random.Next())); } g.Save(); var ms = new MemoryStream(); validateimage.Save(ms, ImageFormat.Png); request.SetCookie("ss-poll:" + args.Id, validateCode, DateTime.Now.AddDays(1)); response.Content = new ByteArrayContent(ms.ToArray()); response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png"); response.StatusCode = HttpStatusCode.OK; return(response); } if (args.Name == "logs") { var limit = request.GetQueryInt("limit"); var offset = request.GetQueryInt("offset"); var pollId = Convert.ToInt32(args.Id); var totalCount = LogDao.GetCount(pollId); var logs = LogDao.GetPollLogInfoList(pollId, totalCount, limit, offset); return(new { Logs = logs, TotalCount = totalCount }); } } if (string.IsNullOrEmpty(args.Name) && string.IsNullOrEmpty(args.Id)) { var siteId = request.GetQueryInt("siteId"); var channelId = request.GetQueryInt("channelId"); var contentId = request.GetQueryInt("contentId"); var pollInfo = PollDao.GetPollInfo(siteId, channelId, contentId); if (pollInfo == null) { pollInfo = new PollInfo { PublishmentSystemId = siteId, ChannelId = channelId, ContentId = contentId, IsImage = true, IsUrl = false, IsTimeout = false, IsCheckbox = true }; pollInfo.Id = PollDao.Insert(pollInfo); } var itemInfoList = ItemDao.GetItemInfoList(pollInfo.Id, out int totalCount); return(new { Poll = pollInfo, Items = itemInfoList, TotalCount = totalCount }); } throw new Exception("请求的资源不在服务器上"); }; service.ApiDelete += (sender, args) => { if (!string.IsNullOrEmpty(args.Name) && !string.IsNullOrEmpty(args.Id) && args.Name == "item") { var itemId = Convert.ToInt32(args.Id); ItemDao.Delete(itemId); return(new {}); } throw new Exception("请求的资源不在服务器上"); }; service.ApiPost += (sender, args) => { var request = args.Request; if (!string.IsNullOrEmpty(args.Name) && !string.IsNullOrEmpty(args.Id)) { if (Utils.EqualsIgnoreCase(args.Name, nameof(StlPoll.ApiSubmit))) { return(StlPoll.ApiSubmit(request, args.Id)); } } if (!string.IsNullOrEmpty(args.Name)) { var siteId = request.GetQueryInt("siteId"); if (args.Name.ToLower() == "item") { var itemInfo = new ItemInfo { PollId = request.GetPostInt("pollId"), Title = request.GetPostString("title"), SubTitle = request.GetPostString("subTitle"), ImageUrl = request.GetPostString("imageUrl"), LinkUrl = request.GetPostString("linkUrl"), Count = request.GetPostInt("count") }; itemInfo.Id = ItemDao.Insert(itemInfo); return(itemInfo); } if (args.Name.ToLower() == "image") { var errorMessage = string.Empty; var imageUrl = string.Empty; try { if (request.HttpRequest.Files.Count > 0) { var postedFile = request.HttpRequest.Files[0]; var filePath = postedFile.FileName; var fileExtName = Path.GetExtension(filePath).ToLower(); var localFilePath = FilesApi.GetUploadFilePath(siteId, filePath); if (fileExtName != ".jpg" && fileExtName != ".png") { errorMessage = "上传图片格式不正确!"; } else { postedFile.SaveAs(localFilePath); imageUrl = FilesApi.GetSiteUrlByFilePath(localFilePath); } } } catch (Exception ex) { errorMessage = ex.Message; } if (!string.IsNullOrEmpty(errorMessage)) { throw new Exception(errorMessage); } return(imageUrl); } } throw new Exception("请求的资源不在服务器上"); }; service.ApiPut += (sender, args) => { var request = args.Request; if (!string.IsNullOrEmpty(args.Name) && !string.IsNullOrEmpty(args.Id)) { var pollId = Convert.ToInt32(args.Id); //if (name.ToLower() == "poll") //{ // var pollInfo = Main.PollDao.GetPollInfo(pollId); // pollInfo.IsImage = context.GetPostBool("isImage"); // pollInfo.IsUrl = context.GetPostBool("isUrl"); // pollInfo.IsTimeout = context.GetPostBool("isTimeout"); // pollInfo.IsCheckbox = context.GetPostBool("isCheckbox"); // pollInfo.TimeToStart = Convert.ToDateTime(context.GetPostString("timeToStart")); // pollInfo.TimeToEnd = Convert.ToDateTime(context.GetPostString("timeToEnd")); // pollInfo.CheckboxMin = context.GetPostInt("checkboxMin"); // pollInfo.CheckboxMax = context.GetPostInt("checkboxMax"); // pollInfo.IsProfile = context.GetPostBool("isProfile"); // pollInfo.IsResult = context.GetPostBool("isResult"); // Main.PollDao.Update(pollInfo); // return pollInfo; //} if (args.Name.ToLower() == "item") { var itemInfo = ItemDao.GetItemInfo(pollId); itemInfo.Title = request.GetPostString("title"); itemInfo.SubTitle = request.GetPostString("subTitle"); itemInfo.ImageUrl = request.GetPostString("imageUrl"); itemInfo.LinkUrl = request.GetPostString("linkUrl"); itemInfo.Count = request.GetPostInt("count"); ItemDao.Update(itemInfo); return(itemInfo); } } throw new Exception("请求的资源不在服务器上"); }; }