private HtmlGenericControl RenderUnpublishedWidget(MetaWidget metaWidget) { var section = new HtmlGenericControl("section"); section.Attributes.Add("class", "well col col-md-2"); var header = new HtmlGenericControl("h3"); header.InnerHtml = metaWidget.WidgetName; section.Controls.Add(header); var editDiv = PrepareArticleEditForWidget(metaWidget, false); section.Controls.Add(editDiv); return(section); }
private void RenderWidget(MetaWidget metaWidget, MetaWidgetLocation widgetLocation, int widgetCount) { var article = new HtmlGenericControl("article"); article.Attributes.Add("class", "col-sm-12 col-md-12 col-lg-12"); var mainDiv = (metaWidget != null) ? PrepareArticleOutlineForWidget(metaWidget, widgetCount) : PrepareArticlePlaceholderWidget(); if (_isPublisher && metaWidget != null) { var editDiv = PrepareArticleEditForWidget(metaWidget, true); mainDiv.Controls.Add(editDiv); } article.Controls.Add(mainDiv); if (widgetLocation == Core.ValueTypes.MetaWidgetLocation.TopLeft) { spnTopLeft.Controls.Add(article); } if (widgetLocation == Core.ValueTypes.MetaWidgetLocation.TopRight) { spnTopRight.Controls.Add(article); } if (widgetLocation == Core.ValueTypes.MetaWidgetLocation.MiddleLeft) { spnMiddleLeft.Controls.Add(article); } if (widgetLocation == Core.ValueTypes.MetaWidgetLocation.MiddleRight) { spnMiddleRight.Controls.Add(article); } if (widgetLocation == Core.ValueTypes.MetaWidgetLocation.BottomLeft) { spnBottomLeft.Controls.Add(article); } if (widgetLocation == Core.ValueTypes.MetaWidgetLocation.BottomRight) { spnBottomRight.Controls.Add(article); } }
private HtmlGenericControl PrepareArticleEditForWidget(MetaWidget metaWidget, bool published) { var rowDiv = new HtmlGenericControl("div"); rowDiv.Attributes.Add("class", "row"); var editDiv = new HtmlGenericControl("div"); editDiv.Attributes.Add("class", published ? "col-md-3 col-md-offset-9" : "col-md-12"); var hyp = new HyperLink() { NavigateUrl = "PageCustomWidget.aspx?Id=" + metaWidget.Id + "&action=edit", CssClass = "btn btn-primary btn-sm", Text = "Configure" }; editDiv.Controls.Add(hyp); if (!published) { hyp = new HyperLink() { NavigateUrl = "/Publisher/MoveMetaWidget?metaWidgetId=" + metaWidget.Id, CssClass = "btn btn-primary btn-sm", Text = "Move" }; } ; editDiv.Controls.Add(hyp); hyp = new HyperLink() { NavigateUrl = "/Publisher/DeleteMetaWidget?metaWidgetId=" + metaWidget.Id, CssClass = "btn btn-default btn-sm", Text = "Delete" }; editDiv.Controls.Add(hyp); rowDiv.Controls.Add(editDiv); return(rowDiv); }
protected void btnSave_Click(object sender, EventArgs e) { // Validation lblName.Attributes.Remove("class"); lblName.Attributes.Add("class", "input"); lblWidgetType.Attributes.Remove("class"); lblWidgetType.Attributes.Add("class", "input"); var err = false; if (String.IsNullOrWhiteSpace(txtName.Value)) { lblName.Attributes.Remove("class"); lblName.Attributes.Add("class", "input state-error"); var errorMessageDiv = new HtmlGenericControl("div"); errorMessageDiv.Attributes.Add("class", "note note-error"); errorMessageDiv.InnerText = "Widget Name is required"; lblName.Controls.Add(errorMessageDiv); err = true; } else { var widgetName = txtName.Value.Trim(); if (Regex.Matches(widgetName, @"[a-zA-Z ']").Count < widgetName.Length) { lblName.Attributes.Remove("class"); lblName.Attributes.Add("class", "input state-error"); var errorMessageDiv = new HtmlGenericControl("div"); errorMessageDiv.Attributes.Add("class", "note note-error"); errorMessageDiv.InnerText = "Widget Name contains invalid characters (Enter A-Z, a-z, space)"; lblName.Controls.Add(errorMessageDiv); err = true; } } if (ddlWidgetType.SelectedValue == "0") { lblWidgetType.Attributes.Remove("class"); lblWidgetType.Attributes.Add("class", "input state-error"); var errorMessageDiv = new HtmlGenericControl("div"); errorMessageDiv.Attributes.Add("class", "note note-error"); errorMessageDiv.InnerText = "Widget Type is required"; lblWidgetType.Controls.Add(errorMessageDiv); err = true; } if (err) { return; } ; string url = string.Empty; if (_formMode == FormMode.AddMode) { var encodedName = AntiXssEncoder.HtmlEncode(txtName.Value, false); var encodedDefinition = AntiXssEncoder.HtmlEncode(txtDefinition.Value, false); var content = string.Empty; var widgetType = UnitOfWork.Repository <MetaWidgetType>().Get(Convert.ToInt32(ddlWidgetType.SelectedValue)); var widgetTypeE = (MetaWidgetTypes)widgetType.Id; switch (widgetTypeE) { case MetaWidgetTypes.General: content = "** PLEASE ENTER YOUR CONTENT HERE **"; break; case MetaWidgetTypes.Wiki: case MetaWidgetTypes.ItemList: content = GetBaseTemplate(widgetTypeE); break; default: break; } _metaWidget = new MetaWidget() { Content = content, MetaPage = _metaPage, WidgetDefinition = encodedDefinition, WidgetType = widgetType, WidgetLocation = ddlWidgetStatus.SelectedValue == "1" ? (MetaWidgetLocation)Convert.ToInt32(ddlWidgetLocation.SelectedValue) : MetaWidgetLocation.Unassigned, WidgetName = encodedName, WidgetStatus = (MetaWidgetStatus)Convert.ToInt32(ddlWidgetStatus.SelectedValue), Icon = txtIcon.Value }; UnitOfWork.Repository <MetaWidget>().Save(_metaWidget); url = "PageCustomWidget.aspx?id=" + _metaWidget.Id + "&action=F7E7BBE8-E28C-4837-B80E-AF3D06E6EBFF"; } if (_formMode == FormMode.EditMode) { var content = string.Empty; var encodedName = AntiXssEncoder.HtmlEncode(txtName.Value, false); var encodedDefinition = AntiXssEncoder.HtmlEncode(txtDefinition.Value, false); var widgetType = UnitOfWork.Repository <MetaWidgetType>().Get(Convert.ToInt32(ddlWidgetType.SelectedValue)); var widgetTypeE = (MetaWidgetTypes)widgetType.Id; switch (widgetTypeE) { case MetaWidgetTypes.General: content = CKEditor1.Text; break; case MetaWidgetTypes.Wiki: case MetaWidgetTypes.ItemList: content = GetContentFromWidget(widgetTypeE); break; default: break; } _metaWidget.WidgetDefinition = encodedDefinition; _metaWidget.WidgetName = encodedName; _metaWidget.WidgetType = widgetType; _metaWidget.WidgetLocation = ddlWidgetStatus.SelectedValue == "1" ? ddlWidgetLocation.SelectedValue != "0" ? (MetaWidgetLocation)Convert.ToInt32(ddlWidgetLocation.SelectedValue) : _metaWidget.WidgetLocation : MetaWidgetLocation.Unassigned; _metaWidget.WidgetStatus = (MetaWidgetStatus)Convert.ToInt32(ddlWidgetStatus.SelectedValue); _metaWidget.Content = content; _metaWidget.Icon = txtIcon.Value; UnitOfWork.Repository <MetaWidget>().Update(_metaWidget); url = "PageViewer.aspx?guid=" + ((_metaPage == null) ? _metaWidget.MetaPage.metapage_guid.ToString() : _metaPage.metapage_guid.ToString()); } UnitOfWork.Complete(); HttpCookie cookie = new HttpCookie("PopUpMessage"); cookie.Value = "Widget " + ((_formMode == FormMode.AddMode) ? "added" : "updated") + " successfully"; Response.Cookies.Add(cookie); Response.Redirect(url); }
protected void Page_Init(object sender, EventArgs e) { if (Request.QueryString["id"] != null) { _id = Convert.ToInt32(Request.QueryString["id"]); if (_id > 0) { _metaWidget = UnitOfWork.Repository <MetaWidget>().Get(_id); string action; if (Request.QueryString["action"] != null) { action = Request.QueryString["action"]; switch (action) { case "35EF6F4A-1CF6-4F94-B92A-145AC57D1135": _formMode = FormMode.EditMode; Master.SetPageHeader(new Models.PageHeaderDetail() { Title = "Edit Widget", SubTitle = "", Icon = "fa fa-windows fa-fw" }); break; } // switch (_action) } else { throw new Exception("action not passed as parameter"); } } else { _metaWidget = null; _formMode = FormMode.AddMode; Master.SetPageHeader(new Models.PageHeaderDetail() { Title = "Add New Widget", SubTitle = "", Icon = "fa fa-windows fa-fw" }); if (Request.QueryString["pid"] != null) { _pid = Convert.ToInt32(Request.QueryString["pid"]); if (_pid > 0) { _metaPage = UnitOfWork.Repository <MetaPage>().Get(_pid); } else { throw new Exception("pid not passed as parameter"); } } } } else { throw new Exception("id not passed as parameter"); } LoadDropDownList(); RenderButtons(); RenderPage(); if (_metaWidget != null) { RenderWidget(); } ToggleView(); }
public async Task <IActionResult> CreateMetaWidget(long metaPageId, [FromBody] MetaWidgetForCreationDto metaWidgetForCreation) { if (metaWidgetForCreation == null) { ModelState.AddModelError("Message", "Unable to locate payload for new request"); } var metaPageFromRepo = await _metaPageRepository.GetAsync(f => f.Id == metaPageId); if (metaPageFromRepo == null) { return(NotFound()); } if (Regex.Matches(metaWidgetForCreation.WidgetName, @"[a-zA-Z0-9 ]").Count < metaWidgetForCreation.WidgetName.Length) { ModelState.AddModelError("Message", "Widget name contains invalid characters (Enter A-Z, a-z, 0-9, space)"); } if (Regex.Matches(metaWidgetForCreation.WidgetType, @"[a-zA-Z]").Count < metaWidgetForCreation.WidgetType.Length) { ModelState.AddModelError("Message", "Widget type contains invalid characters (Enter A-Z, a-z)"); } if (!string.IsNullOrWhiteSpace(metaWidgetForCreation.WidgetDefinition)) { if (Regex.Matches(metaWidgetForCreation.WidgetDefinition, @"[-a-zA-Z0-9 .,]").Count < metaWidgetForCreation.WidgetDefinition.Length) { ModelState.AddModelError("Message", "Widget definition contains invalid characters (Enter A-Z, a-z, 0-9, space, hyphen, period, comma)"); } } if (Regex.Matches(metaWidgetForCreation.Icon, @"[a-zA-Z_]").Count < metaWidgetForCreation.Icon.Length) { ModelState.AddModelError("Message", "Icon contains invalid characters (Enter A-Z, a-z, underscore)"); } var metaWidgetTypeFromRepo = await _metaWidgetTypeRepository.GetAsync(f => f.Description == metaWidgetForCreation.WidgetType); if (metaWidgetTypeFromRepo == null) { ModelState.AddModelError("Message", "Unable to locate widget type"); } if (_unitOfWork.Repository <MetaWidget>().Queryable(). Where(l => l.MetaPage.Id == metaPageId && l.WidgetName == metaWidgetForCreation.WidgetName) .Count() > 0) { ModelState.AddModelError("Message", "Item with same name already exists"); } if (ModelState.IsValid) { var widgetTypeE = (MetaWidgetTypes)metaWidgetTypeFromRepo.Id; var content = string.Empty; switch (widgetTypeE) { case MetaWidgetTypes.General: content = "** PLEASE ENTER YOUR CONTENT HERE **"; break; case MetaWidgetTypes.SubItem: case MetaWidgetTypes.ItemList: content = GetBaseTemplate(widgetTypeE, metaPageId); break; default: break; } var newMetaWidget = new MetaWidget() { Content = content, MetaPage = metaPageFromRepo, WidgetDefinition = metaWidgetForCreation.WidgetDefinition, WidgetType = metaWidgetTypeFromRepo, WidgetLocation = MetaWidgetLocation.Unassigned, WidgetName = metaWidgetForCreation.WidgetName, WidgetStatus = MetaWidgetStatus.Unpublished, Icon = metaWidgetForCreation.Icon }; _metaWidgetRepository.Save(newMetaWidget); var mappedMetaWidget = await GetMetaWidgetAsync <MetaWidgetIdentifierDto>(metaPageId, newMetaWidget.Id); if (mappedMetaWidget == null) { return(StatusCode(500, "Unable to locate newly added item")); } return(CreatedAtAction("GetMetaWidgetByIdentifier", new { metaPageId, id = mappedMetaWidget.Id }, CreateLinksForMetaWidget <MetaWidgetIdentifierDto>(metaPageId, mappedMetaWidget))); } return(BadRequest(ModelState)); }
private HtmlGenericControl PrepareArticleOutlineForWidget(MetaWidget metaWidget, int widgetCount) { var mainDiv = new HtmlGenericControl("div"); mainDiv.Attributes.Add("class", "well"); var widgetTypeE = (MetaWidgetTypes)metaWidget.WidgetType.Id; // Header if (widgetTypeE != MetaWidgetTypes.SubItem) { var header = new HtmlGenericControl("h2"); header.InnerHtml = String.Format(@"<i class=""fa {0} text-muted""></i> {1}", metaWidget.Icon, metaWidget.WidgetName); mainDiv.Controls.Add(header); } // Content var contentDiv = new HtmlGenericControl("div"); switch (widgetTypeE) { case MetaWidgetTypes.General: contentDiv.InnerHtml = metaWidget.Content; break; case MetaWidgetTypes.SubItem: var tableDiv = new HtmlGenericControl("table"); tableDiv.Attributes.Add("class", "table table-striped table-forum"); // Add header row var headerRowDiv = new HtmlGenericControl("thead"); headerRowDiv.InnerHtml = String.Format(@"<tr><th class=""text-center"" style=""width: 40px; ""><i class=""fa {0} fa-2x text-muted""></i></th><th>{1} </th><th class=""text-center hidden-xs hidden-sm"" style=""width: 100px;"">Updated</th></tr>", metaWidget.Icon, metaWidget.WidgetName); tableDiv.Controls.Add(headerRowDiv); var bodyRowDiv = new HtmlGenericControl("tbody"); // Create the XmlDocument XmlDocument wdoc = new XmlDocument(); wdoc.LoadXml(metaWidget.Content); XmlNode wroot = wdoc.DocumentElement; // Loop through each listitem var witem = 0; foreach (XmlNode node in wroot.ChildNodes) { witem += (widgetCount * 100) + 1; var title = node.ChildNodes[0].InnerText; var subTitle = node.ChildNodes[1].InnerText; var contentPage = node.ChildNodes[2].InnerText; var modified = node.ChildNodes[3] != null ? node.ChildNodes[3].InnerText : DateTime.Today.ToString("yyyy-MM-dd"); if (!String.IsNullOrWhiteSpace(title)) { bodyRowDiv.Controls.Add(PrepareWikiItemForArticle(title, subTitle, Convert.ToInt32(contentPage), modified, witem, ref contentDiv)); } } tableDiv.Controls.Add(bodyRowDiv); contentDiv.Controls.Add(tableDiv); break; case MetaWidgetTypes.ItemList: contentDiv.Attributes.Add("class", "panel-group smart-accordion-default"); contentDiv.ID = "accordion-" + metaWidget.Id.ToString(); // Create the XmlDocument XmlDocument doc = new XmlDocument(); doc.LoadXml(metaWidget.Content); XmlNode root = doc.DocumentElement; // Loop through each listitem var item = 0; foreach (XmlNode node in root.ChildNodes) { item += (widgetCount * 100) + 1; var title = node.ChildNodes[0].InnerText; var content = node.ChildNodes[1].InnerText; contentDiv.Controls.Add(PrepareListItemForArticle(title, content, item, ref contentDiv, item == (widgetCount * 100) + 1)); } break; default: break; } mainDiv.Controls.Add(contentDiv); return(mainDiv); }