private static string SignatureForProperty(PropertyDefinition property, bool hyperLinked) { var hb = new HtmlBuilder(); if (property.IsStatic()) { hb.AddKeyword("static"); hb.Add(" "); } hb.AddKeyword("public"); hb.Add(" "); hb.AddTypeReference(property.PropertyType, hyperLinked); hb.Add(" "); hb.AddMemberReferenceName(property, false); hb.Add(" {"); if (property.GetMethod != null) { hb.Add(" "); hb.AddKeyword("get"); hb.Add(";"); } if (property.SetMethod != null) { hb.Add(" "); hb.AddKeyword("set"); hb.Add(";"); } hb.Add(" }"); return hb.ToString(); }
public void HtmlBuilder_WithAttributeWithValue_ShouldRenderDivWithAttribute() { const string disabled = "disabled"; var html = new HtmlBuilder("[" + disabled + "='" + disabled + "']"); Assert.AreEqual("<div " + disabled + "=\"" + disabled + "\"></div>", html.ToString()); }
private static string SignatureForMethod(MethodDefinition method, bool hyperLinked) { var hb = new HtmlBuilder(); if (method.IsStatic) { hb.AddKeyword("static"); hb.Add(" "); } hb.AddKeyword("public"); hb.Add(" "); hb.AddTypeReference(method.ReturnType, hyperLinked); hb.Add(" "); hb.AddMemberReferenceName(method, false); hb.Add(" ("); bool first = true; foreach(var param in method.Parameters) { if (!first) hb.Add(", "); hb.AddTypeReference(param.ParameterType,hyperLinked); hb.Add(" "); hb.Add(param.Name); first = false; } hb.Add(")"); return hb.ToString(); }
protected override void RenderMuxControl(HtmlBuilder builder) { using (Element el = builder.CreateElement("input")) { AddAttributes(el); } }
public void HtmlBuilder_WithIdPassed_ShouldRenderDivWithId() { const string id = "unique"; var html = new HtmlBuilder("#" + id); Assert.AreEqual("<div id=\"" + id + "\"></div>", html.ToString()); }
public void HtmlBuilder_WithClassPassed_ShouldRenderDivWithClass() { const string cls = "item"; var html = new HtmlBuilder("." + cls); Assert.AreEqual("<div class=\"" + cls + "\"></div>", html.ToString()); }
/// <summary> /// Initializes a new instance of the <see cref="HtmlBuilderTableTag"/> class. /// </summary> /// <param name="b">The b.</param> /// <param name="attrib">The attrib.</param> public HtmlBuilderTableTag(HtmlBuilder b, TableAttrib attrib) { if (attrib != null) { int? columnCount = attrib.ColumnCount; ColumnCount = (columnCount != null ? columnCount.Value : 0); NullTdBody = attrib.NullTdBody; int? rowPitch = attrib.RowPitch; RowPitch = (rowPitch != null ? rowPitch.Value : 1); int? columnPitch = attrib.ColumnPitch; ColumnPitch = (columnPitch != null ? columnPitch.Value : 1); SelectedClass = attrib.SelectedClass; SelectedStyle = attrib.SelectedStyle; AlternateClass = attrib.AlternateClass; AlternateStyle = attrib.AlternateStyle; TableTrCloseMethod? trCloseMethod = attrib.TrCloseMethod; TrCloseMethod = (trCloseMethod != null ? trCloseMethod.Value : TableTrCloseMethod.Undefined); TableAlternateOrientation? alternateOrientation = attrib.AlternateOrientation; AlternateOrientation = (alternateOrientation != null ? alternateOrientation.Value : TableAlternateOrientation.Row); } else { ColumnCount = 0; NullTdBody = string.Empty; RowPitch = 1; ColumnPitch = 1; SelectedClass = string.Empty; SelectedStyle = string.Empty; AlternateClass = string.Empty; AlternateStyle = string.Empty; TrCloseMethod = TableTrCloseMethod.Undefined; AlternateOrientation = TableAlternateOrientation.Row; } }
protected override void RenderMuxControl(HtmlBuilder builder) { using (Element el = builder.CreateElement(Tag)) { AddAttributes(el); RenderChildren(builder.Writer as System.Web.UI.HtmlTextWriter); } }
public void HtmlBuilder_WithMultipleClasses_ShouldRenderDivWithMultipleClasses() { const string one = "one"; const string two = "two"; var html = new HtmlBuilder("." + one + "." + two); Assert.AreEqual("<div class=\"" + one + " " + two + "\"></div>", html.ToString()); }
protected override void RenderMuxControl(HtmlBuilder builder) { using (Element el = builder.CreateElement("textarea")) { AddAttributes(el); el.Write(Value); } }
public void RenderLinkTag_EscapesAttributesAndLinkText() { var actual = new HtmlBuilder().RenderLinkTag("<a href=\"link.com\">Click me!</a>", new Dictionary<string, object> { { "class", "big" }, { "title", "<strong>hello world</strong>" } }); var expected = "<a class=\"big\" title=\"<strong>hello world</strong>\"><a href="link.com">Click me!</a></a>"; Assert.AreEqual(expected, actual); }
public void RenderScriptTag_EscapesAttributes() { var actual = new HtmlBuilder().RenderScriptTag(new Dictionary<string, object> { { "id", 9 }, { "src", "http://dom.com/script.js?a=1&b=2&c=3" } }); var expected = "<script id=\"9\" src=\"http://dom.com/script.js?a=1&b=2&c=3\"></script>"; Assert.AreEqual(expected, actual); }
public ControlMapper(MemberHandler m, string id, string name, object value) { this._id = id; this._name = name; _html = HtmlBuilder.New; ProcessField(m.Is.LazyLoad ? m.MemberType.GetGenericArguments()[0] : m.MemberType, m, value); }
public void RenderImageTag_EscapesAttributes() { var actual = new HtmlBuilder().RenderImageTag(htmlAttributes: new Dictionary<string, object> { { "class", "ok" }, { "data-script", "\"><script type='text/javascript' src='badscript.js'></script><img \"" }, { "id", 53 } }); var expected = "<img class=\"ok\" data-script=\""><script type='text/javascript' src='badscript.js'></script><img "\" id=\"53\" />"; Assert.AreEqual(expected, actual); }
public void HtmlBuilder_WithComplexSelector_ShouldRenderCorrectly() { var html = new HtmlBuilder("ul#test > li.items * 3 > a[href=\"/SomeURL\"]"); Assert.AreEqual("<ul id=\"test\">" + "<li class=\"items\"><a href=\"/SomeURL\"></a></li>" + "<li class=\"items\"><a href=\"/SomeURL\"></a></li>" + "<li class=\"items\"><a href=\"/SomeURL\"></a></li>" + "</ul>", html.ToString()); }
private static void RenderColumnsSection(IEnumerable<Column> columns, HtmlBuilder html) { html.div().attCls("section"); html.h4("Columns"); html.e("ul").attCls("table-columns"); foreach (var c in columns) html.e("li").text(c.Name).c(); html.c(); // ul html.c(); // section }
private void RenderColumnsTable(IEnumerable<Column> columns, HtmlBuilder html, DatabaseContext context) { html.h2("Columns"); html.table(0, 0).att("width", "100%").attCls("members"); html.dbColumnHeader(); foreach (var c in columns) { html.tr(); html.rowHeader(false); html.td(); if (c.IsInPrimaryKey) html.attCls("key primary-key"); else if (c.IsForeignKey) html.attCls("key foreign-key"); else html.attCls("key"); html.text(c.Name); if (!c.Descritpion.IsNullOrEmpty()) { html.div().attCls("summary"); html.text(c.Descritpion); html.c(); // summary } html.c(); // td html.td(); html.anchor(c.Name); html.dataType(c.DataType); html.c(); html.td(); if (c.ReferenceData != null) { string relDoc = String.Format("{0}.{1}.Tables.{2}.{3}", context.BookName, context.DbName, c.ReferenceData.ReferencedTableSchema, c.ReferenceData.ReferencedTable); html.internalLink(String.Format("{0}.{1}", c.ReferenceData.ReferencedTable, c.ReferenceData.ReferencedColumn), "db-entity-name", relDoc, c.ReferenceData.ReferencedColumn); } else html.nbsp(); html.c(); // td html.c(); // tr } html.c(); // table }
protected override void RenderMuxControl(HtmlBuilder builder) { using (Element el = builder.CreateElement("select")) { AddAttributes(el); foreach (ListItem idx in Items) { using (Element l = builder.CreateElement("option")) { l.AddAttribute("value", idx.Value); if (!idx.Enabled) l.AddAttribute("disabled", "disabled"); if (idx.Selected) l.AddAttribute("selected", "selected"); l.Write(idx.Text); } } } }
public void BuildsMultipleScripts() { var htmlBuilder = new HtmlBuilder { new ScriptElem(), new ScriptElem {Src = "../src/test.js"}, new ScriptElem {Src = "http://cdn.com/test.js", Type = ScriptType.Javascript}, new ScriptElem {Body = "function() {}"}, new ScriptElem {Type = ScriptType.Javascript, Body = "function() {}"} }; var html = htmlBuilder.Html; var expected = "<script></script>\r\n" + "<script src=\"../src/test.js\"></script>\r\n" + "<script src=\"http://cdn.com/test.js\" type=\"text/javascript\"></script>\r\n" + "<script>function() {}</script>\r\n" + "<script type=\"text/javascript\">function() {}</script>\r\n"; Assert.AreEqual(expected, html); }
public void BuildsMultipleLinks() { var htmlBuilder = new HtmlBuilder { new LinkElem {Href = "img/icon.png", Type = LinkType.Icon}, new LinkElem(), new LinkElem {Href = "../css/test.css"}, new LinkElem {Href = "http://localhost/test.css", Type = LinkType.Css}, new LinkElem {Href = "https://cdn.net/test/test.css", Rel = LinkRelType.Stylesheet}, new LinkElem {Href = "test.css", Type = LinkType.Css, Rel = LinkRelType.Stylesheet} }; var html = htmlBuilder.Html; var expected = "<link href=\"img/icon.png\" type=\"image/icon\">\r\n" + "<link>\r\n" + "<link href=\"../css/test.css\">\r\n" + "<link href=\"http://localhost/test.css\" type=\"text/css\">\r\n" + "<link href=\"https://cdn.net/test/test.css\" rel=\"stylesheet\">\r\n" + "<link href=\"test.css\" type=\"text/css\" rel=\"stylesheet\">\r\n"; Assert.AreEqual(expected, html); }
public void BuildsMultipleHtmlDefTypes() { var htmlBuilder = new HtmlBuilder { new BaseElem {Href = "http://a.website.com/"}, new LinkElem { Href="favicon.ico", Type = LinkType.XIcon, Rel= LinkRelType.ShortcutIcon }, new LinkElem {Href = "img/icon.png", Type = LinkType.Icon}, new LinkElem(), new LinkElem {Href = "../css/test.css"}, new LinkElem {Href = "http://localhost/test.css", Type = LinkType.Css}, new LinkElem {Href = "https://cdn.net/test/test.css", Rel = LinkRelType.Stylesheet}, new LinkElem {Href = "test.css", Type = LinkType.Css, Rel = LinkRelType.Stylesheet}, new ScriptElem(), new ScriptElem {Src = "../src/test.js"}, new ScriptElem {Src = "http://cdn.com/test.js", Type = ScriptType.Javascript}, new ScriptElem {Body = "function() {}"}, new ScriptElem {Type = ScriptType.Javascript, Body = "function() {}"} }; var html = htmlBuilder.Html; var expected = "<base href=\"http://a.website.com/\">\r\n" + "<link href=\"favicon.ico\" type=\"image/x-icon\" rel=\"shortcut icon\">\r\n" + "<link href=\"img/icon.png\" type=\"image/icon\">\r\n" + "<link>\r\n" + "<link href=\"../css/test.css\">\r\n" + "<link href=\"http://localhost/test.css\" type=\"text/css\">\r\n" + "<link href=\"https://cdn.net/test/test.css\" rel=\"stylesheet\">\r\n" + "<link href=\"test.css\" type=\"text/css\" rel=\"stylesheet\">\r\n" + "<script></script>\r\n" + "<script src=\"../src/test.js\"></script>\r\n" + "<script src=\"http://cdn.com/test.js\" type=\"text/javascript\"></script>\r\n" + "<script>function() {}</script>\r\n" + "<script type=\"text/javascript\">function() {}</script>\r\n"; Assert.AreEqual(expected, html); }
/// <summary> /// Fixed: /// </summary> private static HtmlBuilder Editor( this HtmlBuilder hb, SiteSettings ss, WikiModel wikiModel) { var commentsColumn = ss.GetColumn("Comments"); var commentsColumnPermissionType = commentsColumn.ColumnPermissionType(); var showComments = ss.ShowComments(commentsColumnPermissionType); var tabsCss = showComments ? null : "max"; return(hb.Div(id: "Editor", action: () => hb .Form( attributes: new HtmlAttributes() .Id("WikiForm") .Class("main-form") .Action(Locations.ItemAction(wikiModel.WikiId != 0 ? wikiModel.WikiId : wikiModel.SiteId)), action: () => hb .RecordHeader( ss: ss, baseModel: wikiModel, tableName: "Wikis") .Div( id: "EditorComments", action: () => hb .Comments( comments: wikiModel.Comments, column: commentsColumn, verType: wikiModel.VerType, columnPermissionType: commentsColumnPermissionType), _using: showComments) .Div(id: "EditorTabsContainer", css: tabsCss, action: () => hb .EditorTabs(wikiModel: wikiModel, ss: ss) .FieldSetGeneral( ss: ss, wikiModel: wikiModel) .FieldSet( attributes: new HtmlAttributes() .Id("FieldSetHistories") .DataAction("Histories") .DataMethod("post"), _using: wikiModel.MethodType != BaseModel.MethodTypes.New) .FieldSet( attributes: new HtmlAttributes() .Id("FieldSetRecordAccessControl") .DataAction("Permissions") .DataMethod("post"), _using: ss.CanManagePermission()) .MainCommands( ss: ss, siteId: wikiModel.SiteId, verType: wikiModel.VerType, referenceId: wikiModel.WikiId, updateButton: true, copyButton: false, moveButton: false, mailButton: true, deleteButton: true)) .Hidden(controlId: "BaseUrl", value: Locations.BaseUrl()) .Hidden(controlId: "MethodType", value: "edit") .Hidden( controlId: "Wikis_Timestamp", css: "always-send", value: wikiModel.Timestamp) .Hidden( controlId: "SwitchTargets", css: "always-send", value: wikiModel.WikiId.ToString(), _using: !Request.IsAjax() || Routes.Action() == "create")) .OutgoingMailsForm("Wikis", wikiModel.WikiId, wikiModel.Ver) .CopyDialog("items", wikiModel.WikiId) .MoveDialog() .OutgoingMailDialog())); }
public BodyTag() : base("body") { HtmlBuilder = new HtmlBuilder(Children); IsSelfClosing = false; }
public static HtmlBuilder Td( this HtmlBuilder hb, Context context, Column column, decimal value) { return(hb.Td(action: () => hb .Text(text: column.Display(value, unit: true)))); }
private static HtmlBuilder EditorExtensions( this HtmlBuilder hb, SiteSettings ss, WikiModel wikiModel) { return(hb); }
public static HtmlBuilder TextBox( this HtmlBuilder hb, HtmlTypes.TextTypes textType = HtmlTypes.TextTypes.Normal, string controlId = null, string controlCss = null, string text = null, string placeholder = null, string onChange = null, string format = null, bool timepicker = false, string accept = null, string dataId = null, bool validateRequired = false, bool validateNumber = false, decimal validateMinNumber = 0, decimal validateMaxNumber = 0, bool validateDate = false, bool validateEmail = false, string validateEqualTo = null, int validateMaxLength = 0, string action = null, string method = null, Dictionary <string, string> attributes = null, bool _using = true) { if (!_using) { return(hb); } switch (textType) { case HtmlTypes.TextTypes.Normal: return(hb.Input(attributes: new HtmlAttributes() .Id(controlId) .Class(Css.Class("control-textbox", controlCss)) .Type("text") .Value(text) .Placeholder(placeholder) .OnChange(onChange) .DataId(dataId) .DataValidateRequired(validateRequired) .DataValidateNumber(validateNumber) .DataValidateMinNumber( validateMinNumber, _using: validateMinNumber != validateMaxNumber) .DataValidateMaxNumber( validateMaxNumber, _using: validateMinNumber != validateMaxNumber) .DataValidateDate(validateDate) .DataValidateEmail(validateEmail) .DataValidateEqualTo(validateEqualTo) .DataValidateMaxLength(validateMaxLength) .DataAction(action) .DataMethod(method) .Add(attributes))); case HtmlTypes.TextTypes.DateTime: return(hb.Input(attributes: new HtmlAttributes() .Id(controlId) .Class(Css.Class("control-textbox datepicker", controlCss)) .Type("text") .Value(text) .Placeholder(placeholder) .OnChange(onChange) .DataId(dataId) .DataFormat(format) .DataTimepicker(timepicker) .DataValidateRequired(validateRequired) .DataValidateNumber(validateNumber) .DataValidateDate(validateDate) .DataValidateEmail(validateEmail) .DataValidateEqualTo(validateEqualTo) .DataValidateMaxLength(validateMaxLength) .DataAction(action) .DataMethod(method) .Add(attributes))); case HtmlTypes.TextTypes.MultiLine: return(hb.TextArea( attributes: new HtmlAttributes() .Id(controlId) .Class(Css.Class("control-textarea", controlCss)) .Placeholder(placeholder) .OnChange(onChange) .DataId(dataId) .DataValidateRequired(validateRequired) .DataValidateNumber(validateNumber) .DataValidateDate(validateDate) .DataValidateEmail(validateEmail) .DataValidateEqualTo(validateEqualTo) .DataValidateMaxLength(validateMaxLength) .DataAction(action) .DataMethod(method) .Add(attributes), action: () => hb .Text(text: text))); case HtmlTypes.TextTypes.Password: return(hb.Input(attributes: new HtmlAttributes() .Id(controlId) .Class(Css.Class("control-textbox", controlCss)) .Type("password") .Value(text) .Placeholder(placeholder) .OnChange(onChange) .DataId(dataId) .DataValidateRequired(validateRequired) .DataValidateNumber(validateNumber) .DataValidateDate(validateDate) .DataValidateEmail(validateEmail) .DataValidateEqualTo(validateEqualTo) .DataValidateMaxLength(validateMaxLength) .Add(attributes))); case HtmlTypes.TextTypes.File: return(hb.Input(attributes: new HtmlAttributes() .Id(controlId) .Class(Css.Class("control-textbox", controlCss)) .Type("file") .Value(text) .Placeholder(placeholder) .OnChange(onChange) .Accept(accept) .DataId(dataId) .DataValidateRequired(validateRequired) .DataValidateNumber(validateNumber) .DataValidateDate(validateDate) .DataValidateEmail(validateEmail) .DataValidateEqualTo(validateEqualTo) .DataValidateMaxLength(validateMaxLength) .DataAction(action) .DataMethod(method) .Add(attributes))); default: return(hb); } }
public static HtmlBuilder Td( this HtmlBuilder hb, Context context, Column column, TimeZoneInfo value) { return(hb.Td(action: () => hb .Text(text: value.StandardName))); }
private static HtmlBuilder AccountMenu(this HtmlBuilder hb, Context context) { return(hb.Ul(id: "AccountMenu", css: "menu", action: () => hb .Li(action: () => hb .A( href: Locations.Logout(context: context), action: () => hb .Span(css: "ui-icon ui-icon-locked") .Text(text: Displays.Logout(context: context)))) .Li( action: () => hb .A( href: Locations.Edit( context: context, controller: "Users", id: context.UserId), action: () => hb .Span(css: "ui-icon ui-icon-wrench") .Text(text: Displays.EditProfile(context: context))), _using: Parameters.Service.ShowProfiles) .Li( action: () => hb .A( href: Locations.Get( context: context, parts: new string[] { "Users", "EditApi" }), action: () => hb .Span(css: "ui-icon ui-icon-link") .Text(text: Displays.ApiSettings(context: context))), _using: context.ContractSettings.Api != false && Parameters.Api.Enabled) .Li(action: () => hb .A( href: Parameters.General.HtmlUsageGuideUrl, target: "_blank", action: () => hb .Span(css: "ui-icon ui-icon-help") .Text(text: Displays.UsageGuide(context: context)))) .Li(action: () => hb .A( href: Parameters.General.HtmlBlogUrl, target: "_blank", action: () => hb .Span(css: "ui-icon ui-icon-info") .Text(text: Displays.Blog(context: context)))) .Li(action: () => hb .A( href: Parameters.General.HtmlSupportUrl, target: "_blank", action: () => hb .Span(css: "ui-icon ui-icon-contact") .Text(text: Displays.Support(context: context)))) .Li(action: () => hb .A( href: Parameters.General.HtmlContactUrl, target: "_blank", action: () => hb .Span(css: "ui-icon ui-icon-contact") .Text(text: Displays.Contact(context: context)))) .Li(action: () => hb .A( href: Parameters.General.HtmlPortalUrl, target: "_blank", action: () => hb .Span(css: "ui-icon ui-icon-cart") .Text(text: Displays.Portal(context: context)))) .Li(action: () => hb .A( href: Locations.Get( context: context, parts: "versions"), action: () => hb .Span(css: "ui-icon ui-icon-info") .Text(text: Displays.Version(context: context)))))); }
private void RenderVisibleControl(HtmlTextWriter writer) { if (Manager.Instance.IsAjaxCallback) { RenderVisibleControlInCallback(writer); } else { HtmlBuilder builder = new HtmlBuilder(writer); RenderMuxControl(builder); Manager.Instance.InternalJavaScriptWriter.Write(GetClientSideScript()); } }
/// <summary> /// Fixed: /// </summary> public static string MultiUpload(Context context, long id) { var controlId = context.Forms.ControlId(); var ss = new ItemModel( context: context, referenceId: id).GetSite( context: context, initSiteSettings: true) .SiteSettings; var column = ss.GetColumn( context: context, columnName: context.Forms.Data("ColumnName")); var attachments = context.Forms.Data("AttachmentsData").Deserialize <Attachments>(); var invalid = BinaryValidators.OnUploading( context: context, column: column, attachments: attachments); switch (invalid) { case Error.Types.OverLimitQuantity: return(Messages.ResponseOverLimitQuantity( context: context, data: column.LimitQuantity.ToString()).ToJson()); case Error.Types.OverLimitSize: return(Messages.ResponseOverLimitSize( context: context, data: column.LimitSize.ToString()).ToJson()); case Error.Types.OverTotalLimitSize: return(Messages.ResponseOverTotalLimitSize( context: context, data: column.TotalLimitSize.ToString()).ToJson()); case Error.Types.OverTenantStorageSize: return(Messages.ResponseOverTenantStorageSize( context: context, data: context.ContractSettings.StorageSize.ToString()).ToJson()); case Error.Types.None: break; default: return(invalid.MessageJson(context: context)); } context.PostedFiles.ForEach(file => attachments.Add(new Attachment() { Guid = file.Guid, Name = file.FileName.Split('\\').Last(), Size = file.Size, Extention = file.Extension, ContentType = file.ContentType, Added = true, Deleted = false })); var hb = new HtmlBuilder(); return(new ResponseCollection() .ReplaceAll($"#{controlId}Field", new HtmlBuilder() .Field( context: context, ss: ss, column: column, value: attachments.ToJson(), columnPermissionType: column .ColumnPermissionType(context: context))) .SetData("#" + controlId) .ToJson()); }
private static HtmlBuilder SettingsMenu( this HtmlBuilder hb, Context context, SiteSettings ss, long siteId, bool canManageSite, bool canManageDepts, bool canManageGroups, bool canManageUsers, bool canManageTenants, bool canManageTrashBox) { return(hb.Ul( id: "SettingsMenu", css: "menu", action: () => hb .Li( action: () => hb .A( href: Locations.ItemEdit( context: context, id: siteId), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: SiteSettingsDisplayName( context: context, ss: ss))), _using: canManageSite) .Li( action: () => hb .A( href: Locations.Edit( context: context, controller: "Tenants"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.TenantAdmin(context: context))), _using: canManageTenants) .Li( action: () => hb .A( href: Locations.Index( context: context, controller: "Depts"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.DeptAdmin(context: context))), _using: canManageDepts) .Li( action: () => hb .A( href: Locations.Index( context: context, controller: "Groups"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.GroupAdmin(context: context))), _using: canManageGroups) .Li( action: () => hb .A( href: Locations.Index( context: context, controller: "Users"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.UserAdmin(context: context))), _using: canManageUsers) .Li( action: () => hb .A( href: Locations.ItemTrashBox( context: context, id: siteId), action: () => hb .Span(css: "ui-icon ui-icon-trash") .Text(text: Displays.TrashBox(context: context))), _using: canManageTrashBox))); }
public virtual HtmlBuilder Td(HtmlBuilder hb, Context context, Column column) { return(hb.Td(action: () => hb .P(action: () => TdTitle(hb: hb, context: context, column: column)))); }
public async Task <string> RenderAsync(SerializableList <PageDefinition.AllowedUser> model) { HtmlBuilder hb = new HtmlBuilder(); bool header = PropData.GetAdditionalAttributeValue("Header", true); GridModel grid = new GridModel() { GridDef = GetGridModel(header) }; grid.GridDef.DirectDataAsync = async(int skip, int take, List <DataProviderSortInfo> sorts, List <DataProviderFilterInfo> filters) => { List <GridAllowedUser> list; if (model != null) { list = new List <GridAllowedUser>(); foreach (PageDefinition.AllowedUser allowedUser in model) { string userName = await Resource.ResourceAccess.GetUserNameAsync(allowedUser.UserId); list.Add(new GridAllowedUser(allowedUser, userName)); } } else { list = new List <GridAllowedUser>(); } DataSourceResult data = new DataSourceResult { Data = list.ToList <object>(), Total = list.Count, }; return(data); }; hb.Append($@" <div class='yt_yetawf_pageedit_allowedusers t_edit' id='{DivId}'> {await HtmlHelper.ForDisplayAsAsync(Container, PropertyName, FieldName, grid, nameof(grid.GridDef), grid.GridDef, "Grid", HtmlAttributes: HtmlAttributes)}"); using (Manager.StartNestedComponent(FieldName)) { NewModel newModel = new NewModel(); hb.Append($@" <div class='t_newvalue'> {await HtmlHelper.ForLabelAsync(newModel, nameof(newModel.NewValue))} {await HtmlHelper.ForEditAsync(newModel, nameof(newModel.NewValue))} <input name='btnAdd' type='button' value='Add' disabled='disabled' /> </div>"); } GridModel gridAll = new GridModel() { GridDef = GetGridAllUsersModel() }; AllowedUsersSetup setup = new AllowedUsersSetup { AddUrl = Utility.UrlFor(typeof(AllowedUsersController), nameof(AllowedUsersController.AddUserToPage)), GridId = grid.GridDef.Id, GridAllId = gridAll.GridDef.Id }; hb.Append($@" <div id='{DivId}_coll'> {await ModuleActionHelper.BuiltIn_ExpandAction(__ResStr("lblFindUsers", "Find Users"), __ResStr("ttFindUsers", "Expand to find user names available on this site")).RenderAsNormalLinkAsync() } </div> <div id='{DivId}_exp' style='display:none'> {await ModuleActionHelper.BuiltIn_CollapseAction(__ResStr("lblAllUserNames", "All User Names"), __ResStr("ttAllUserNames", "Shows all user names available on this site - Select a user name to update the text box above, so the user name can be added to the list of user names - Click to close")).RenderAsNormalLinkAsync() } {await HtmlHelper.ForDisplayAsAsync(Container, PropertyName, FieldName, gridAll, nameof(gridAll.GridDef), gridAll.GridDef, "Grid")} </div> </div>"); Manager.ScriptManager.AddLast($@" $YetaWF.expandCollapseHandling('{DivId}', '{DivId}_coll', '{DivId}_exp'); new YetaWF_PageEdit.AllowedUsersEditComponent('{DivId}', {Utility.JsonSerialize(setup)});"); return(hb.ToString()); }
public static HtmlBuilder MarkDown( this HtmlBuilder hb, Context context, string controlId = null, string controlCss = null, string text = null, string placeholder = null, bool readOnly = false, bool allowImage = true, bool allowBulkUpdate = false, bool mobile = false, bool alwaysSend = false, bool validateRequired = false, Dictionary <string, string> attributes = null, bool preview = false, bool _using = true, int validateMaxLength = 0, string validateRegex = null, string validateRegexErrorMessage = null) { if (preview) { controlId = Strings.NewGuid(); } return(_using ? hb .Div(attributes: new HtmlAttributes() .Id(controlId + ".viewer") .Class("control-markup not-send") .OnDblClick("$p.editMarkdown($(this));")) .Div( attributes: new HtmlAttributes() .Id(controlId + ".editor") .Class("ui-icon ui-icon-pencil button-edit-markdown") .OnClick("$p.editMarkdown($(this));"), _using: !readOnly) .TextArea( attributes: new HtmlAttributes() .Id(controlId) .Name(controlId) .Class(Css.Class( "control-markdown" + (CanUploadImage(context, readOnly, allowImage, preview) ? " upload-image" : string.Empty), controlCss)) .Placeholder(placeholder) .DataAlwaysSend(alwaysSend) .DataValidateMaxLength(validateMaxLength) .DataValidateRequired(validateRequired, _using: !readOnly) .DataValidateRegex(validateRegex) .DataValidateRegexErrorMessage(validateRegexErrorMessage) .Add(attributes), text: text) .MarkDownCommands( context: context, controlId: controlId, readOnly: readOnly, allowImage: allowImage, mobile: mobile, preview: preview) : hb); }
public static string FormatExceptionForWeb(Exception ex) { StringBuilder msg = new StringBuilder(); msg.Append(HtmlBuilder.WrapInBoldTags("Date/time: ") + DateTime.Now.ToString() + HtmlBuilder.GetLineBreak(2)); do { msg.Append(HtmlBuilder.WrapInBoldTags("****EXCEPTION DETAILS****") + HtmlBuilder.GetLineBreak()); msg.Append(HtmlBuilder.WrapInBoldTags("Source: ") + ex.Source + HtmlBuilder.GetLineBreak()); msg.Append(HtmlBuilder.WrapInBoldTags("Message: ") + ex.Message + HtmlBuilder.GetLineBreak()); msg.Append(HtmlBuilder.WrapInBoldTags("Target Site: ") + ex.TargetSite + HtmlBuilder.GetLineBreak()); msg.Append(HtmlBuilder.WrapInBoldTags("Stack Trace: ") + ex.StackTrace); msg.Append(HtmlBuilder.GetLineBreak(2)); ex = ex.InnerException; }while (ex != null); Literal lit = new Literal(); lit.Text = msg.ToString(); Panel pnl = new Panel(); pnl.ForeColor = ColorTranslator.FromHtml("#4d4f53"); pnl.Font.Names = new string[] { "Tahoma", "Arial" }; pnl.Font.Size = new FontUnit("13px"); pnl.Controls.Add(lit); return(HtmlBuilder.GetServerControlHtml(pnl)); }
private static HtmlBuilder Columns(this HtmlBuilder hb, SiteSettings ss, View view) { ss.GetFilterColumns(checkPermission: true).ForEach(column => { switch (column.TypeName.CsTypeSummary()) { case Types.CsBool: hb.CheckBox( column: column, ss: ss, view: view); break; case Types.CsNumeric: hb.DropDown( ss: ss, column: column, view: view, optionCollection: column.HasChoices() ? column.EditChoices(addNotSet: true) : column.NumFilterOptions()); break; case Types.CsDateTime: hb.DropDown( ss: ss, column: column, view: view, optionCollection: column.DateFilterOptions()); break; case Types.CsString: if (column.HasChoices()) { if (view.ColumnFilterHash?.ContainsKey(column.ColumnName) == true && column.UseSearch == true && ss.Links?.Any(o => o.ColumnName == column.ColumnName) == true) { ss.SetChoiceHash( columnName: column?.ColumnName, selectedValues: view.ColumnFilter(column.ColumnName) .Select(o => o.ToString())); } hb.DropDown( ss: ss, column: column, view: view, optionCollection: column.EditChoices(addNotSet: true)); } else if (ss.EditorColumns.Contains(column.ColumnName)) { hb.FieldTextBox( controlId: "ViewFilters_" + column.Id, fieldCss: "field-auto-thin", controlCss: " auto-postback", labelText: Displays.Get(column.GridLabelText), text: view.ColumnFilter(column.ColumnName), method: "post"); } break; default: break; } }); return(hb); }
private void AncestorReRendering(HtmlTextWriter writer) { HtmlBuilder builder = new HtmlBuilder(writer); RenderMuxControl(builder); }
public async Task <string> RenderAsync(CarouselInfo model) { HtmlBuilder hb = new HtmlBuilder(); hb.Append($@" <div id='{ControlId}' class='yt_bootstrapcarousel_slideshow t_display carousel slide' data-interval='{model.Interval}' data-wrap='{(model.Wrap ? "true" : "false")}' data-pause='{(model.Pause ? "hover" : "false")}' data-keyboard='{(model.Keyboard ? "true" : "false")}'> <!-- Indicators --> <ol class='carousel-indicators'>"); int index = 0; foreach (CarouselInfo.CarouselItem slide in model.Slides) { if (index == 0) { hb.Append($@" <li data-target='#{ControlId}' data-slide-to='{index}' class='active'></li>"); } else { hb.Append($@" <li data-target='#{ControlId}' data-slide-to='{index}'></li>"); } ++index; } hb.Append($@" </ol> <!-- Wrapper for slides --> <div class='carousel-inner' role='listbox'>"); index = 0; foreach (CarouselInfo.CarouselItem slide in model.Slides) { hb.Append($@" <div class='carousel-item{(index == 0 ? " active" : "")}'>"); using (Manager.StartNestedComponent($"{FieldNamePrefix}.{nameof(model.Slides)}[{index}]")) { if (!string.IsNullOrWhiteSpace(slide.Url)) { hb.Append($@" <a href='{HAE(Manager.CurrentSite.MakeUrl(slide.Url))}' target='_blank' rel='noopener noreferrer' class='{YetaWF.Core.Addons.Basics.CssNoTooltip}'> {await HtmlHelper.ForDisplayAsync(slide, nameof(CarouselInfo.CarouselItem.ImageDisplay))} </a>"); } else { hb.Append(await HtmlHelper.ForDisplayAsync(slide, nameof(CarouselInfo.CarouselItem.ImageDisplay))); } } if (!string.IsNullOrWhiteSpace(slide.CompleteCaption.ToString())) { hb.Append($@" <div class='carousel-caption'> {Utility.HtmlEncode(slide.CompleteCaption.ToString())} </div>"); } hb.Append(@" </div>"); ++index; } hb.Append($@" </div> <!-- Controls --> <a class='carousel-control-prev' href='#{ControlId}' role='button' data-slide='prev'> <span class='carousel-control-prev-icon' aria-hidden='true'></span> <span class='sr-only'>Previous</span> </a> <a class='carousel-control-next' href='#{ControlId}' role='button' data-slide='next'> <span class='carousel-control-next-icon' aria-hidden='true'></span> <span class='sr-only'>Next</span> </a> </div>"); Manager.ScriptManager.AddLast($@"$('#{ControlId}').carousel();"); return(hb.ToString()); }
protected override void RenderMuxControl(HtmlBuilder builder) { using (Element el = builder.CreateElement("div")) { AddAttributes(el); RenderChildren(builder.Writer); using (Element ul = builder.CreateElement("ul")) { ul.AddAttribute("id", this.ClientID + "_ul"); } } }
private static HtmlBuilder SettingsMenu( this HtmlBuilder hb, Context context, SiteSettings ss, long siteId, bool canManageSite, bool canManageDepts, bool canManageGroups, bool canManageUsers, bool canManageRegistrations, bool canManageTenants, bool canManageTrashBox) { return(hb.Ul( id: "SettingsMenu", css: "menu", action: () => hb .Li( action: () => hb .A( href: Locations.ItemEdit( context: context, id: siteId), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: SiteSettingsDisplayName( context: context, ss: ss))), _using: canManageSite) .LockTableMenu( context: context, ss: ss, canManageSite: canManageSite) .Li( action: () => hb .A( href: Locations.Edit( context: context, controller: "Tenants"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.TenantAdmin(context: context))), _using: canManageTenants) .Li( action: () => hb .A( href: Locations.Index( context: context, controller: "Depts"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.DeptAdmin(context: context))), _using: canManageDepts) .Li( action: () => hb .A( href: Locations.Index( context: context, controller: "Groups"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.GroupAdmin(context: context))), _using: canManageGroups) .Li( action: () => hb .A( href: Locations.Index( context: context, controller: "Users"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.UserAdmin(context: context))), _using: canManageUsers) .Li( action: () => hb .A( href: "javascript:void(0);", attributes: new HtmlAttributes() .OnClick("$p.openImportSitePackageDialog($(this));") .DataAction("OpenImportSitePackageDialog") .DataMethod("post"), action: () => hb .Span(css: "ui-icon ui-icon-arrowreturnthick-1-e") .Text(text: Displays.ImportSitePackage(context: context))), _using: Parameters.SitePackage.Import && canManageSite && ss.IsSite(context: context) && ss.ReferenceType == "Sites" || (ss.SiteId == 0 && context.UserSettings.DisableTopSiteCreation != true)) .Li( action: () => hb .A( href: "javascript:void(0);", attributes: new HtmlAttributes() .OnClick("$p.openExportSitePackageDialog($(this));") .DataAction("OpenExportSitePackageDialog") .DataMethod("post"), action: () => hb .Span(css: "ui-icon ui-icon-arrowreturnthick-1-w") .Text(text: Displays.ExportSitePackage(context: context))), _using: Parameters.SitePackage.Export && canManageSite && ss.IsSite(context: context)) .Li( action: () => hb .A( href: Locations.Index( context: context, controller: "Registrations"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.Registrations(context: context))), _using: canManageRegistrations) .Li( action: () => hb .A( href: Locations.ItemTrashBox( context: context, id: siteId), action: () => hb .Span(css: "ui-icon ui-icon-trash") .Text(text: Displays.TrashBox(context: context))), _using: canManageTrashBox))); }
private static HtmlBuilder EditorExtensions( this HtmlBuilder hb, DeptModel deptModel, SiteSettings ss) { return(hb); }
private static HtmlBuilder NavigationMenu( this HtmlBuilder hb, Context context, SiteSettings ss, long siteId, string referenceType) { var canManageGroups = context.UserSettings?.DisableGroupAdmin != true; var canManageSite = siteId != 0 && context.CanManageSite(ss: ss, site: true); var canManageDepts = Permissions.CanManageTenant(context: context); var canManageUsers = Permissions.CanManageTenant(context: context); var canManageRegistrations = Permissions.CanManageRegistrations(context: context); var canManageTenants = Permissions.CanManageTenant(context: context) || context.UserSettings?.EnableManageTenant == true; var canManageTrashBox = CanManageTrashBox(context: context, ss: ss); return(hb.Ul( id: "NavigationMenu", action: () => hb .Li( id: "NewMenuContainer", action: () => hb .Div(action: () => hb .A( href: NewHref( context: context, ss: ss), attributes: SiteIndex( context: context, ss: ss) ? new HtmlAttributes() .OnClick("$p.templates($(this));") .DataAction("Templates") .DataMethod("post") : null, action: () => hb .Span(css: "ui-icon ui-icon-plus") .Text(text: Displays.New(context: context)))), _using: ss.ReferenceType == "Sites" && context.Action == "index" ? context.CanManageSite(ss: ss) : context.CanCreate(ss: ss) && ss.ReferenceType != "Wikis" && context.Action != "trashbox") .Li( id: "ViewModeMenuContainer", css: "sub-menu", action: () => hb .Div( attributes: new HtmlAttributes().DataId("ViewModeMenu"), action: () => hb .Span(css: "ui-icon ui-icon-triangle-1-e") .Text(text: Displays.View(context: context))) .ViewModeMenu( context: context, ss: ss), _using: Def.ViewModeDefinitionCollection .Any(o => o.ReferenceType == referenceType)) .Li( id: "SettingsMenuContainer", css: "sub-menu", action: () => hb .Div( attributes: new HtmlAttributes().DataId("SettingsMenu"), action: () => hb .Span(css: "ui-icon ui-icon-gear") .Text(text: Displays.Manage(context: context))) .SettingsMenu( context: context, ss: ss, siteId: siteId, canManageSite: canManageSite, canManageDepts: canManageDepts, canManageGroups: canManageGroups, canManageUsers: canManageUsers, canManageRegistrations: canManageRegistrations, canManageTenants: canManageTenants, canManageTrashBox: canManageTrashBox), _using: canManageSite || canManageDepts || canManageGroups || canManageUsers) .Li( id: "HelpMenuContainer", css: "sub-menu", action: () => hb .Div( attributes: new HtmlAttributes().DataId("HelpMenu"), action: () => hb .Span(css: "ui-icon ui-icon-help") .Text(text: Displays.HelpMenu(context: context))) .HelpMenu(context: context)) .Li( id: "AccountMenuContainer", css: "sub-menu", action: () => hb .Div( attributes: new HtmlAttributes() .DataId("AccountMenu") .Id("AccountUserName"), action: () => hb .Span(css: "ui-icon ui-icon-person") .Text(text: SiteInfo.UserName( context: context, userId: context.UserId))) .AccountMenu(context: context)))); }
public static HtmlBuilder Td( this HtmlBuilder hb, Context context, Column column, long value) { return(hb.Td(action: () => hb .Text(text: value.ToString(column.StringFormat) + column.Unit))); }
private HtmlBuilder LimitText(HtmlBuilder hb, Context context) { var value = Value.ToLocal(context: context); if (!Times.InRange(value)) { return(hb); } var now = VerType == Versions.VerTypes.Latest ? DateTime.Now.ToLocal(context: context) : UpdatedTime.ToLocal(context: context); var css = LimitCss(now, value); var years = Times.DateDiff(Times.Types.Years, now, value); if (Math.Abs(years) >= 2) { return(years > 0 ? hb.P(css: css, action: () => hb .Text(text: Displays.LimitAfterYears( context: context, data: years.ToString()))) : hb.P(css: css, action: () => hb .Text(text: Displays.LimitBeforeYears( context: context, data: (years * -1).ToString())))); } var months = Times.DateDiff(Times.Types.Months, now, value); if (Math.Abs(months) >= 2) { return(months > 0 ? hb.P(css: css, action: () => hb .Text(text: Displays.LimitAfterMonths( context: context, data: months.ToString()))) : hb.P(css: css, action: () => hb .Text(text: Displays.LimitBeforeMonths( context: context, data: (months * -1).ToString())))); } var days = Times.DateDiff(Times.Types.Days, now, value); if ((days >= 0 && days >= 2) || (days < 0)) { return(days > 0 ? hb.P(css: css, action: () => hb .Text(text: Displays.LimitAfterDays( context: context, data: (days - 1).ToString()))) : hb.P(css: css, action: () => hb .Text(text: Displays.LimitBeforeDays( context: context, data: ((days * -1) + 1).ToString())))); } var hours = Times.DateDiff(Times.Types.Hours, now, value); if (Math.Abs(hours) >= 3) { return(hours > 0 ? hb.P(css: css, action: () => hb .Text(text: Displays.LimitAfterHours( context: context, data: hours.ToString()))) : hb.P(css: css, action: () => hb .Text(text: Displays.LimitBeforeHours( context: context, data: (hours * -1).ToString())))); } var minutes = Times.DateDiff(Times.Types.Minutes, now, value); if (Math.Abs(minutes) >= 3) { return(minutes > 0 ? hb.P(css: css, action: () => hb .Text(text: Displays.LimitAfterMinutes( context: context, data: minutes.ToString()))) : hb.P(css: css, action: () => hb .Text(text: Displays.LimitBeforeMinutes( context: context, data: (minutes * -1).ToString())))); } var seconds = Times.DateDiff(Times.Types.Seconds, now, value); if (Math.Abs(seconds) >= 1) { return(seconds > 0 ? hb.P(css: css, action: () => hb .Text(text: Displays.LimitAfterSeconds( context: context, data: seconds.ToString()))) : hb.P(css: css, action: () => hb .Text(text: Displays.LimitBeforeSeconds( context: context, data: (seconds * -1).ToString())))); } return(hb.P(css: "Display-just", action: () => hb .Text(text: Displays.LimitJust(context: context)))); }
public static HtmlBuilder MainCommands( this HtmlBuilder hb, Context context, SiteSettings ss, long siteId, Versions.VerTypes verType, long referenceId = 0, bool backButton = true, bool updateButton = false, bool copyButton = false, bool moveButton = false, bool mailButton = false, bool deleteButton = false, Action extensions = null) { return(hb.Div(id: "MainCommandsContainer", action: () => hb .Div(id: "MainCommands", action: () => { if (backButton) { hb.Button( controlId: "GoBack", text: Displays.GoBack(context: context), controlCss: "button-icon", accessKey: "q", onClick: "$p.back();", icon: "ui-icon-circle-arrow-w"); } if (context.Action == "new") { hb.Button( text: Displays.Create(context: context), controlCss: "button-icon validate", accessKey: "s", onClick: "$p.send($(this));", icon: "ui-icon-disk", action: "Create", method: "post"); } else if (context.CanRead(ss: ss) && verType == Versions.VerTypes.Latest) { hb .Button( text: Displays.Update(context: context), controlCss: "button-icon validate", accessKey: "s", onClick: "$p.send($(this));", icon: "ui-icon-disk", action: "Update", method: "put", _using: updateButton && context.CanUpdate(ss: ss)) .Button( text: Displays.Copy(context: context), controlCss: "button-icon open-dialog", accessKey: "c", onClick: "$p.openDialog($(this));", icon: "ui-icon-copy", selector: "#CopyDialog", _using: copyButton && context.CanCreate(ss: ss)) .Button( text: Displays.Move(context: context), controlCss: "button-icon open-dialog", accessKey: "o", onClick: "$p.moveTargets($(this));", icon: "ui-icon-transferthick-e-w", selector: "#MoveDialog", action: "MoveTargets", method: "get", _using: moveButton && context.CanUpdate(ss: ss)) .Button( controlId: "EditOutgoingMail", text: Displays.Mail(context: context), controlCss: "button-icon", onClick: "$p.openOutgoingMailDialog($(this));", icon: "ui-icon-mail-closed", action: "Edit", method: "put", accessKey: "m", _using: mailButton && context.CanSendMail(ss: ss)) .Button( text: Displays.Delete(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.send($(this));", icon: "ui-icon-trash", action: "Delete", method: "delete", confirm: "ConfirmDelete", _using: deleteButton && context.CanDelete(ss: ss) && !ss.IsSite(context: context)) .Button( text: Displays.DeleteSite(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.openDeleteSiteDialog($(this));", icon: "ui-icon-trash", _using: deleteButton && context.CanDelete(ss: ss) && ss.IsSite(context: context)); if (context.Controller == "items" && ss.ReferenceType != "Sites") { switch (context.Action) { case "index": hb .Button( text: Displays.BulkMove(context: context), controlCss: "button-icon open-dialog", accessKey: "o", onClick: "$p.moveTargets($(this));", icon: "ui-icon-transferthick-e-w", selector: "#MoveDialog", action: "MoveTargets", method: "get", _using: context.CanUpdate(ss: ss)) .Button( text: Displays.BulkDelete(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.send($(this));", icon: "ui-icon-trash", action: "BulkDelete", method: "delete", confirm: "ConfirmDelete", _using: context.CanDelete(ss: ss)) .Button( controlId: "EditImportSettings", text: Displays.Import(context: context), controlCss: "button-icon", accessKey: "w", onClick: "$p.openImportSettingsDialog($(this));", icon: "ui-icon-arrowreturnthick-1-e", selector: "#ImportSettingsDialog", _using: context.CanImport(ss: ss)) .Button( text: Displays.Export(context: context), controlCss: "button-icon", accessKey: "x", onClick: "$p.openExportSelectorDialog($(this));", icon: "ui-icon-arrowreturnthick-1-w", action: "OpenExportSelectorDialog", method: "post", _using: context.CanExport(ss: ss)); break; case "crosstab": hb.Button( text: Displays.Export(context: context), controlCss: "button-icon", accessKey: "x", onClick: "$p.exportCrosstab();", icon: "ui-icon-arrowreturnthick-1-w", _using: context.CanExport(ss: ss)); break; } } } extensions?.Invoke(); }))); }
public static HtmlBuilder MainCommands( this HtmlBuilder hb, Context context, SiteSettings ss, View view = null, Versions.VerTypes verType = Versions.VerTypes.Latest, bool readOnly = false, bool backButton = true, bool updateButton = false, bool copyButton = false, bool moveButton = false, bool mailButton = false, bool deleteButton = false, Action extensions = null) { return(hb.Div(id: "MainCommandsContainer", action: () => hb .Div(id: "MainCommands", action: () => { if (backButton) { hb.Button( controlId: "GoBack", text: Displays.GoBack(context: context), controlCss: "button-icon", accessKey: "q", onClick: "$p.back();", icon: "ui-icon-circle-arrow-w"); } if (context.Action == "new") { switch (context.Controller) { case "registrations": hb.Button( controlId: "RegistrationId", controlCss: "button-icon validate", text: Displays.Invite(context: context), onClick: "$p.send($(this));", icon: "ui-icon-mail-closed", action: "Create", method: "post"); break; default: hb.Button( controlId: "CreateCommand", text: Displays.Create(context: context), controlCss: "button-icon validate", accessKey: "s", onClick: "$p.send($(this));", icon: "ui-icon-disk", action: "Create", method: "post"); break; } } else if (verType == Versions.VerTypes.Latest) { switch (context.Controller) { case "users": hb.Common( context: context, ss: ss, readOnly: readOnly, updateButton: updateButton, copyButton: copyButton, moveButton: moveButton, mailButton: mailButton, deleteButton: deleteButton); switch (context.Action) { case "index": hb .Button( controlId: "BulkDeleteCommand", text: Displays.BulkDelete(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.send($(this));", icon: "ui-icon-trash", action: "BulkDelete", method: "delete", confirm: "ConfirmDelete", _using: context.CanDelete(ss: ss) && !readOnly) .Button( controlId: "EditImportSettings", text: Displays.Import(context: context), controlCss: "button-icon", accessKey: "w", onClick: "$p.openImportSettingsDialog($(this));", icon: "ui-icon-arrowreturnthick-1-e", selector: "#ImportSettingsDialog", _using: context.CanImport(ss: ss) && !readOnly) .Button( controlId: "OpenExportSelectorDialogCommand", text: Displays.Export(context: context), controlCss: "button-icon", accessKey: "x", onClick: "$p.openExportSelectorDialog($(this));", icon: "ui-icon-arrowreturnthick-1-w", action: "OpenExportSelectorDialog", method: "post", _using: context.CanExport(ss: ss)); break; } break; case "registrations": switch (context.Action) { case "login": hb.Button( controlId: "RegistrationId", controlCss: "button-icon validate", text: Displays.ApprovalRequest(context: context), onClick: "$p.send($(this));", icon: "ui-icon-mail-closed", action: "ApprovalRequest", method: "post"); break; case "edit": hb .Button( controlId: "RegistrationApproval", text: Displays.Approval(context: context), controlCss: "button-icon", onClick: "$p.send($(this));", icon: "ui-icon-mail-closed", action: "Approval", method: "put", _using: Permissions.PrivilegedUsers(loginId: context.LoginId)) .Button( controlId: "DeleteCommand", text: Displays.Delete(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.send($(this));", icon: "ui-icon-trash", action: "Delete", method: "delete", confirm: "ConfirmDelete", _using: deleteButton && context.CanDelete(ss: ss) && !ss.IsSite(context: context) && !readOnly); break; case "index": hb.Button( controlId: "BulkDeleteCommand", text: Displays.BulkDelete(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.send($(this));", icon: "ui-icon-trash", action: "BulkDelete", method: "delete", confirm: "ConfirmDelete", _using: context.CanDelete(ss: ss) && !readOnly); break; } break; case "items": hb.Common( context: context, ss: ss, readOnly: readOnly, updateButton: updateButton, copyButton: copyButton, moveButton: moveButton, mailButton: mailButton, deleteButton: deleteButton); if (context.Forms.Bool("EditOnGrid")) { hb .Button( controlId: "UpdateByGridCommand", text: Displays.Update(context: context), controlCss: "button-icon validate", accessKey: "s", onClick: "$p.send($(this));", icon: "ui-icon-disk", action: "UpdateByGrid", method: "post", _using: context.CanRead(ss: ss)) .Button( controlId: "EditOnGridCommand", text: Displays.ListMode(context: context), controlCss: "button-icon", onClick: "$p.editOnGrid($(this),0);", icon: "ui-icon-arrowreturnthick-1-w", action: "Index", method: "post", _using: context.CanRead(ss: ss)); } else if (ss.ReferenceType != "Sites") { switch (context.Action) { case "index": hb .Button( controlId: "MoveTargetsCommand", text: Displays.BulkMove(context: context), controlCss: "button-icon open-dialog", accessKey: "o", onClick: "$p.moveTargets($(this));", icon: "ui-icon-transferthick-e-w", selector: "#MoveDialog", action: "MoveTargets", method: "get", _using: ss.MoveTargets?.Any() == true && context.CanUpdate(ss: ss) && !ss.GridColumnsHasSources(gridColumns: view?.GridColumns) && ss.MoveTargetsOptions(sites: ss.NumberOfMoveTargetsTable(context: context)) .Any(o => ss.MoveTargets.Contains(o.Key.ToLong())) && !readOnly) .Button( controlId: "BulkDeleteCommand", text: Displays.BulkDelete(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.send($(this));", icon: "ui-icon-trash", action: "BulkDelete", method: "delete", confirm: "ConfirmDelete", _using: context.CanDelete(ss: ss) && !ss.GridColumnsHasSources(gridColumns: view?.GridColumns) && !readOnly) .Button( controlId: "EditImportSettings", text: Displays.Import(context: context), controlCss: "button-icon", accessKey: "w", onClick: "$p.openImportSettingsDialog($(this));", icon: "ui-icon-arrowreturnthick-1-e", selector: "#ImportSettingsDialog", _using: context.CanImport(ss: ss) && !readOnly) .Button( controlId: "OpenExportSelectorDialogCommand", text: Displays.Export(context: context), controlCss: "button-icon", accessKey: "x", onClick: "$p.openExportSelectorDialog($(this));", icon: "ui-icon-arrowreturnthick-1-w", action: "OpenExportSelectorDialog", method: "post", _using: context.CanExport(ss: ss)) .Button( controlId: "OpenBulkUpdateSelectorDialogCommand", text: Displays.BulkUpdate(context: context), controlCss: "button-icon", accessKey: "s", onClick: "$p.openBulkUpdateSelectorDialog($(this));", icon: "ui-icon-disk", action: "OpenBulkUpdateSelectorDialog", method: "post", _using: context.CanUpdate(ss: ss) && ss.GetAllowBulkUpdateColumns(context, ss).Any() && !readOnly) .Button( controlId: "EditOnGridCommand", text: Displays.EditMode(context: context), controlCss: "button-icon", onClick: "$p.editOnGrid($(this),1);", icon: "ui-icon-arrowreturnthick-1-w", action: "Index", method: "post", _using: ss.GridEditorType == SiteSettings.GridEditorTypes.Grid && context.CanUpdate(ss: ss) && !ss.GridColumnsHasSources(gridColumns: view?.GridColumns) && ss.IntegratedSites?.Any() != true && !readOnly); break; case "crosstab": hb.Button( controlId: "ExportCrosstabCommand", text: Displays.Export(context: context), controlCss: "button-icon", accessKey: "x", onClick: "$p.exportCrosstab();", icon: "ui-icon-arrowreturnthick-1-w", _using: context.CanExport(ss: ss)); break; } } break; default: hb.Common( context: context, ss: ss, readOnly: readOnly, updateButton: updateButton, copyButton: copyButton, moveButton: moveButton, mailButton: mailButton, deleteButton: deleteButton); break; } extensions?.Invoke(); } }))); }
protected override void RenderMuxControl(HtmlBuilder builder) { using (Element el = builder.CreateElement("span")) { AddAttributes(el); el.Write(" "); } }
private static HtmlBuilder Common( this HtmlBuilder hb, Context context, SiteSettings ss, bool readOnly, bool updateButton, bool copyButton, bool moveButton, bool mailButton, bool deleteButton) { return(hb .Button( controlId: "UpdateCommand", text: Displays.Update(context: context), controlCss: "button-icon validate", accessKey: "s", onClick: "$p.send($(this));", icon: "ui-icon-disk", action: "Update", method: "put", _using: updateButton && context.CanUpdate(ss: ss) && !readOnly) .Button( controlId: "OpenCopyDialogCommand", text: Displays.Copy(context: context), controlCss: "button-icon open-dialog", accessKey: "c", onClick: "$p.openDialog($(this));", icon: "ui-icon-copy", selector: "#CopyDialog", _using: copyButton && context.CanCreate(ss: ss)) .Button( controlId: "MoveTargetsCommand", text: Displays.Move(context: context), controlCss: "button-icon open-dialog", accessKey: "o", onClick: "$p.moveTargets($(this));", icon: "ui-icon-transferthick-e-w", selector: "#MoveDialog", action: "MoveTargets", method: "get", _using: moveButton && ss.MoveTargets?.Any() == true && context.CanUpdate(ss: ss) && ss.MoveTargetsOptions(sites: ss.NumberOfMoveTargetsTable(context: context)) .Any(o => ss.MoveTargets.Contains(o.Key.ToLong())) && !readOnly) .Button( controlId: "EditOutgoingMail", text: Displays.Mail(context: context), controlCss: "button-icon", onClick: "$p.openOutgoingMailDialog($(this));", icon: "ui-icon-mail-closed", action: "Edit", method: "put", accessKey: "m", _using: mailButton && context.CanSendMail(ss: ss)) .Button( controlId: "DeleteCommand", text: Displays.Delete(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.send($(this));", icon: "ui-icon-trash", action: "Delete", method: "delete", confirm: "ConfirmDelete", _using: deleteButton && context.CanDelete(ss: ss) && !ss.IsSite(context: context) && !readOnly) .Button( controlId: "OpenDeleteSiteDialogCommand", text: Displays.DeleteSite(context: context), controlCss: "button-icon", accessKey: "r", onClick: "$p.openDeleteSiteDialog($(this));", icon: "ui-icon-trash", _using: deleteButton && context.CanDelete(ss: ss) && ss.IsSite(context: context) && !readOnly)); }
/// <summary> /// Initializes a new instance of the <see cref="HtmlBuilderDivTag"/> class. /// </summary> /// <param name="b">The b.</param> /// <param name="args">The args.</param> public HtmlBuilderDivTag(HtmlBuilder b, Nparams args) { }
public static HtmlBuilder Breadcrumb( this HtmlBuilder hb, Context context, SiteSettings ss, View view, bool _using) { if ((!context.Authenticated && !context.Publish) || !_using) { return(hb); } switch (context.Controller) { case "admins": return(Breadcrumb( hb: hb, context: context, ss: ss, controller: context.Controller)); case "depts": return(Breadcrumb( hb: hb, context: context, ss: ss, controller: context.Controller, display: Displays.Depts(context: context))); case "tenants": return(Permissions.CanManageTenant(context: context) ? Breadcrumb( hb: hb, context: context, ss: ss, controller: context.Controller, display: Displays.Tenants(context: context), action: "Edit") : (context.UserSettings?.EnableManageTenant == true) ? BreadcrumbWithoutAdmins( hb: hb, context: context, ss: ss, controller: context.Controller, display: Displays.Tenants(context: context), action: "Edit") : Breadcrumb( hb: hb, context: context, ss: ss)); case "groups": return(Permissions.CanManageTenant(context: context) ? Breadcrumb( hb: hb, context: context, ss: ss, controller: context.Controller, display: Displays.Groups(context: context)) : Breadcrumb( hb: hb, context: context, ss: ss)); case "users": switch (context.Action) { case "editapi": return(hb.Breadcrumb( context: context, ss: ss, data: new Dictionary <string, string> { { Locations.Get( context: context, parts: new string[] { "Users", "EditApi" }), Displays.ApiSettings(context: context) } })); default: return(Permissions.CanManageTenant(context: context) ? Breadcrumb( hb: hb, context: context, ss: ss, controller: context.Controller, display: Displays.Users(context: context)) : Breadcrumb( hb: hb, context: context, ss: ss)); } case "publishes": case "items": return(hb .CopyDirectUrlToClipboard( context: context, view: view) .Breadcrumb( context: context, ss: ss)); case "permissions": return(hb.Breadcrumb(context: context, ss: ss)); default: return(hb); } }
/// <summary> /// Fixed: /// </summary> public HtmlBuilder Td(HtmlBuilder hb, Column column) { return(hb.Td(action: () => hb .HtmlDept(DeptId))); }
public static HtmlBuilder TdValue( this HtmlBuilder hb, SiteSettings ss, Column column, DeptModel deptModel) { if (!column.GridDesign.IsNullOrEmpty()) { return(hb.TdCustomValue( ss: ss, gridDesign: column.GridDesign, deptModel: deptModel)); } else { var mine = deptModel.Mine(); switch (column.Name) { case "DeptId": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.DeptId) : hb.Td(column: column, value: string.Empty)); case "Ver": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.Ver) : hb.Td(column: column, value: string.Empty)); case "DeptCode": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.DeptCode) : hb.Td(column: column, value: string.Empty)); case "Dept": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.Dept) : hb.Td(column: column, value: string.Empty)); case "Body": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.Body) : hb.Td(column: column, value: string.Empty)); case "Comments": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.Comments) : hb.Td(column: column, value: string.Empty)); case "Creator": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.Creator) : hb.Td(column: column, value: string.Empty)); case "Updator": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.Updator) : hb.Td(column: column, value: string.Empty)); case "CreatedTime": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.CreatedTime) : hb.Td(column: column, value: string.Empty)); case "UpdatedTime": return(ss.ReadColumnAccessControls.Allowed(column, ss.PermissionType, mine) ? hb.Td(column: column, value: deptModel.UpdatedTime) : hb.Td(column: column, value: string.Empty)); default: return(hb); } } }
protected virtual void RenderMuxControl(HtmlBuilder builder) { }
private static HtmlBuilder Editor( this HtmlBuilder hb, SiteSettings ss, DeptModel deptModel) { var commentsColumn = ss.GetColumn("Comments"); var commentsColumnPermissionType = commentsColumn.ColumnPermissionType(); var showComments = ss.ShowComments(commentsColumnPermissionType); var tabsCss = showComments ? null : "max"; return(hb.Div(id: "Editor", action: () => hb .Form( attributes: new HtmlAttributes() .Id("DeptForm") .Class("main-form confirm-reload") .Action(deptModel.DeptId != 0 ? Locations.Action("Depts", deptModel.DeptId) : Locations.Action("Depts")), action: () => hb .RecordHeader( ss: ss, baseModel: deptModel, tableName: "Depts") .Div( id: "EditorComments", action: () => hb .Comments( comments: deptModel.Comments, column: commentsColumn, verType: deptModel.VerType, columnPermissionType: commentsColumnPermissionType), _using: showComments) .Div(id: "EditorTabsContainer", css: tabsCss, action: () => hb .EditorTabs(deptModel: deptModel) .FieldSetGeneral(ss: ss, deptModel: deptModel) .FieldSet( attributes: new HtmlAttributes() .Id("FieldSetHistories") .DataAction("Histories") .DataMethod("post"), _using: deptModel.MethodType != BaseModel.MethodTypes.New) .MainCommands( ss: ss, siteId: 0, verType: deptModel.VerType, referenceId: deptModel.DeptId, updateButton: true, mailButton: true, deleteButton: true, extensions: () => hb .MainCommandExtensions( deptModel: deptModel, ss: ss))) .Hidden(controlId: "BaseUrl", value: Locations.BaseUrl()) .Hidden( controlId: "MethodType", value: deptModel.MethodType.ToString().ToLower()) .Hidden( controlId: "Depts_Timestamp", css: "always-send", value: deptModel.Timestamp) .Hidden( controlId: "SwitchTargets", css: "always-send", value: deptModel.SwitchTargets?.Join(), _using: !Request.IsAjax())) .OutgoingMailsForm("Depts", deptModel.DeptId, deptModel.Ver) .CopyDialog("Depts", deptModel.DeptId) .OutgoingMailDialog() .EditorExtensions(deptModel: deptModel, ss: ss))); }
private void ControlVisibleForFirstTime(HtmlTextWriter writer) { using (HtmlBuilder builder = new HtmlBuilder()) { RenderMuxControl(builder); Manager.Instance.InternalJavaScriptWriter.Write( "MUX.$('{0}').repl('{1}');{2}{3}", ClientID, builder.ToStringJson(), GetClientSideScript(), GetChildrenClientSideScript(Controls)); } }
private static HtmlBuilder FieldSetGeneralColumns( this HtmlBuilder hb, SiteSettings ss, DeptModel deptModel, bool preview = false) { ss.GetEditorColumns().ForEach(column => { switch (column.Name) { case "DeptId": hb.Field( ss, column, deptModel.MethodType, deptModel.DeptId.ToControl(ss, column), column.ColumnPermissionType(), preview: preview); break; case "Ver": hb.Field( ss, column, deptModel.MethodType, deptModel.Ver.ToControl(ss, column), column.ColumnPermissionType(), preview: preview); break; case "DeptCode": hb.Field( ss, column, deptModel.MethodType, deptModel.DeptCode.ToControl(ss, column), column.ColumnPermissionType(), preview: preview); break; case "DeptName": hb.Field( ss, column, deptModel.MethodType, deptModel.DeptName.ToControl(ss, column), column.ColumnPermissionType(), preview: preview); break; case "Body": hb.Field( ss, column, deptModel.MethodType, deptModel.Body.ToControl(ss, column), column.ColumnPermissionType(), preview: preview); break; } }); if (!preview) { hb.VerUpCheckBox(deptModel); } return(hb); }
private void ReRenderWidget(HtmlTextWriter writer) { // discarding incoming writer using (HtmlBuilder builder = new HtmlBuilder()) { RenderMuxControl(builder); Manager.Instance.InternalJavaScriptWriter.Write( "MUX.Control.$('{0}').reRender('{1}');{2}", ClientID, builder.ToStringJson(), GetChildrenClientSideScript(Controls)); } }
private static HtmlBuilder MainCommandExtensions( this HtmlBuilder hb, SiteSettings ss, DeptModel deptModel) { return(hb); }
public static HtmlBuilder Breadcrumb(this HtmlBuilder hb, SiteSettings ss, bool _using) { if (!Sessions.LoggedIn() || !_using) { return(hb); } var controller = Routes.Controller(); switch (controller) { case "admins": return(Breadcrumb( hb: hb, ss: ss, controller: controller)); case "depts": return(Breadcrumb( hb: hb, ss: ss, controller: controller, display: Displays.Depts())); case "groups": return(Permissions.CanManageTenant() ? Breadcrumb( hb: hb, ss: ss, controller: controller, display: Displays.Groups()) : Breadcrumb( hb: hb, ss: ss)); case "users": switch (Routes.Action()) { case "editapi": return(hb.Breadcrumb(ss: ss, data: new Dictionary <string, string> { { Locations.Get("Users", "EditApi"), Displays.ApiSettings() } })); default: return(Permissions.CanManageTenant() ? Breadcrumb( hb: hb, ss: ss, controller: controller, display: Displays.Users()) : Breadcrumb( hb: hb, ss: ss)); } case "items": return(hb .Breadcrumb(ss: ss) .CopyDirectUrlToClipboard(ss: ss)); case "permissions": return(hb.Breadcrumb(ss: ss)); default: return(hb); } }
public static HtmlBuilder Attachments( this HtmlBuilder hb, Context context, string controlId = null, string columnName = null, string controlCss = null, string value = null, string placeholder = null, bool readOnly = false, bool validateRequired = false, Dictionary <string, string> attributes = null, bool preview = false, bool _using = true) { if (preview) { controlId = Strings.NewGuid(); } var attachments = value.Deserialize <Attachments>(); return(_using ? hb .Hidden( controlId: controlId, css: "control-attachments", value: value) .Div( id: columnName + ".upload", css: "control-attachments-upload", attributes: new HtmlAttributes() .DataName(columnName) .DataAction("binaries/multiupload"), action: () => hb .Text(text: Displays.FileDragDrop(context: context)) .Input( id: columnName + ".input", attributes: new HtmlAttributes() .Class("hidden") .Type("file") .Multiple(true)), _using: !readOnly && !preview) .Div( id: columnName + ".items", css: "control-attachments-items", action: () => attachments? .ForEach(item => hb .AttachmentItem( context: context, controlId: controlId, guid: item.Guid, css: item.Added == true ? string.Empty : item.Deleted == true ? "already-attachments preparation-delete " : "already-attachments ", fileName: item.Name, displaySize: item.DisplaySize(), added: item.Added, deleted: item.Deleted, readOnly: readOnly))) .Div( id: columnName + ".status", attributes: new HtmlAttributes() .Style("display: none; "), action: () => hb .Div( id: columnName + ".progress", css: "progress-bar", action: () => hb .Div()) .Div( id: columnName + ".abort", css: "abort", action: () => hb .Text(text: Displays.Cancel(context: context))), _using: !readOnly) : hb); }