public static IHtmlContent RACheckBoxFor <TModel>( this IHtmlHelper <TModel> htmlHelper, Expression <Func <TModel, bool> > expression, string label, object htmlAttributes = null, string wrapperClass = null, string wrapperStyle = null, string stateClass = "ra-p-theme", string labelClass = null, string labelStyle = null) { var content = new HtmlContentBuilder(); content.AppendFormat("<div class='pretty p-svg p-curve p-smooth {0}' style='{1}'>", wrapperClass, wrapperStyle); content.AppendHtml(htmlHelper.CheckBoxFor(expression, htmlAttributes)); content.AppendFormat("<div class='state {0}'>", stateClass); content.AppendHtml("<svg class='svg svg-icon' viewBox='0 0 20 20'>"); content.AppendHtml("<path d='M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z' " + "style='stroke: white;fill:white;'></path>"); content.AppendHtml("</svg>"); content.AppendFormat("<label class='{0}' style='{1}'>", labelClass, labelStyle); content.AppendHtml(label); content.AppendHtml("</label></div></div>"); return(content); }
public static TagCloser RABeginDropdownButton( this IHtmlHelper htmlHelper, string buttonHtml, string buttonId, string buttonClass = "btn-secondary", string buttonStyle = null, string dropdownClass = "dropdown", string dropdownStyle = null) { var content = new HtmlContentBuilder(); content.AppendFormat("<div class='{0}' style='{1}'>", dropdownClass, dropdownStyle); content.AppendHtml(htmlHelper.RAButton(buttonHtml, null, new { @data_toggle = "dropdown", @aria_haspopup = "true", @aria_expanded = "false", }, buttonId, buttonClass + " dropdown-toggle", buttonStyle)); content.AppendFormat("<div class='dropdown-menu' aria-labelledby='{0}'>", buttonId); htmlHelper.ViewContext.Writer.Write(content); return(new TagCloser(htmlHelper, "</div></div>")); }
public static IHtmlContent RAPropertyBlockEditorFor <TModel, TProperty>( this IHtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, object htmlAttributes = null, SelectList selectList = null, RAEditorType?editorTypeOverride = null, string displayLabel = null, string selectListOptionLabel = null, string descriptionOverride = null) { var modelExplorer = htmlHelper.GetModelExplorer(expression); var content = new HtmlContentBuilder(); content.AppendHtml("<div class='ra-propertyblock-editor'>"); content.AppendFormat("<div class='ra-propertyblock-field-label'>{0}</div>", String.IsNullOrEmpty(displayLabel) ? modelExplorer.GetPropertyDisplayName() : displayLabel); content.AppendHtml("<div class='ra-propertyblock-field-editor'>"); content.AppendHtml(htmlHelper.GetEditorFor(expression, modelExplorer, htmlAttributes, selectList, editorTypeOverride, false, selectListOptionLabel)); string description = !String.IsNullOrEmpty(descriptionOverride) ? descriptionOverride : modelExplorer.Metadata?.Description; content.AppendFormat("<div class='ra-description-info'>{0}</div>", description); content.AppendHtml("<div class='ra-validation-error'>"); content.AppendHtml(htmlHelper.ValidationMessageFor(expression)); content.AppendHtml("</div></div></div>"); return(content); }
private static void AppendPropertyBlockDisplayHtmlStart( this HtmlContentBuilder content, string displayLabel, string displayValueClass, string displayValueStyle) { content.AppendHtml("<div class='ra-propertyblock-display'>"); content.AppendFormat("<div class='ra-propertyblock-field-label'>{0}</div>", displayLabel); content.AppendFormat("<div class='ra-propertyblock-field-value {0}' style='{1}'>", displayValueClass, displayValueStyle); }
public static IHtmlContent ReCaptchaV2(string siteKey, string size, string theme, string language, string callback, string errorCallback, string expiredCallback) { var content = new HtmlContentBuilder(); content.AppendFormat(@"<div class=""g-recaptcha"" data-sitekey=""{0}""", siteKey); if (!string.IsNullOrEmpty(size)) { content.AppendFormat(@" data-size=""{0}""", size); } if (!string.IsNullOrEmpty(theme)) { content.AppendFormat(@" data-theme=""{0}""", theme); } if (!string.IsNullOrEmpty(callback)) { content.AppendFormat(@" data-callback=""{0}""", callback); } if (!string.IsNullOrEmpty(errorCallback)) { content.AppendFormat(@" data-error-callback=""{0}""", errorCallback); } if (!string.IsNullOrEmpty(expiredCallback)) { content.AppendFormat(@" data-expired-callback=""{0}""", expiredCallback); } content.AppendFormat("></div>"); content.AppendLine(); content.AppendFormat(@"<script src=""https://www.google.com/recaptcha/api.js?hl={0}"" defer></script>", language); return(content); }
public static TagCloser RABeginToolbar( this IHtmlHelper htmlHelper, string toolbarClass = null, string toolbarStyle = null) { var content = new HtmlContentBuilder(); content.AppendFormat("<nav class='navbar ra-toolbar {0}' style='{1}'>", toolbarClass, toolbarStyle); content.AppendFormat("<form class='form-inline' type='{0}' src='{1}'>", "POST", htmlHelper.ViewContext.HttpContext.Request.Path); htmlHelper.ViewContext.Writer.Write(content); return(new TagCloser(htmlHelper, "</form></nav>")); }
public static TagCloser RABeginDynamicTableRow <TModel>( this IHtmlHelper <TModel> htmlHelper) where TModel : IDynamicTableRowItem { var model = htmlHelper.ViewData.Model; string existingHtmlPrefixField = htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix; htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix = model.IndexedHtmlFieldPrefix; var contentStart = new HtmlContentBuilder(); contentStart.AppendHtml("<tr>"); htmlHelper.ViewContext.Writer.Write(contentStart); var contentEnd = new HtmlContentBuilder(); contentEnd.AppendHtml("<td>"); contentEnd.AppendHtml(htmlHelper.RAButton("<i class='fas fa-times'></i>", "raRemoveDynamicTableRow(this);", buttonClass: "btn-danger ra-btn-xs")); contentEnd.AppendHtml(htmlHelper.HiddenFor(x => x.HtmlFieldPrefix)); contentEnd.AppendFormat("<input type=\"hidden\" id=\"{0}\" name=\"{1}\" value=\"{2}\" />", model.IndexId, model.IndexName, model.Index); contentEnd.AppendHtml("</td>"); contentEnd.AppendHtml("</tr>"); return(new TagCloser(htmlHelper, contentEnd, existingHtmlPrefixField)); }
public static IHtmlContent RAToolbarEditorFor <TModel, TProperty>( this IHtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, object htmlAttributes = null, SelectList selectList = null, RAEditorType?editorTypeOverride = null, string displayLabel = null, string displayLabelClass = null, string selectListOptionLabel = null) { var modelExplorer = htmlHelper.GetModelExplorer(expression); var content = new HtmlContentBuilder(); var label = String.IsNullOrEmpty(displayLabel) ? modelExplorer.GetPropertyDisplayName() : displayLabel; if (!String.IsNullOrEmpty(label)) { var id = htmlHelper.GenerateIdFromName( htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlHelper.GetExpressionText(expression))); content.AppendFormat("<label for='{0}' class='ra-toolbar-label {1}'>{2}:</label>", id, displayLabelClass, label); } content.AppendHtml(htmlHelper.GetEditorFor(expression, modelExplorer, htmlAttributes, selectList, editorTypeOverride, true, selectListOptionLabel)); return(content); }
private static void AppendDashboardItemCell( HtmlContentBuilder content, string mainClass, string text, string url, DashboardState state) { content.AppendFormat("<td class='ra-dashboard-cell-value-{0} ra-dashboard-cell-{1} {2}'", mainClass, state.ToString().ToLower(), !String.IsNullOrEmpty(url) ? "ra-clickable" : null); if (!String.IsNullOrEmpty(url)) { content.AppendFormat(" onmouseup='navigateTo(\"{0}\");'", url); } content.AppendFormat(">{0}</td><td class='ra-dashboard-cell-spacer'></td>", text); }
public static IHtmlContent RAAjaxContentSection(this IHtmlHelper htmlHelper, string contentKey, string contentUrl = null, string contentUrlScript = null, string contentClass = "ra-container ra-container-vertica", string contentStyle = null, string postUpdateScript = null) { var content = new HtmlContentBuilder(); content.AppendFormat("<div id=\"{0}AjaxContent\" class=\"{1}\" style=\"{2}\" data-content-url=\"{3}\" data-content-url-script=\"{4}\"></div>", contentKey, contentClass, contentStyle, contentUrl, contentUrlScript); content.AppendFormat("<script>raUpdateAjaxContentSection('{0}');{1}</script>", contentKey, postUpdateScript); return(content); }
public static IHtmlContent ReCaptchaV3(string siteKey, string action, string language, string callBack) { var content = new HtmlContentBuilder(); content.AppendHtml(@"<input id=""g-recaptcha-response"" name=""g-recaptcha-response"" type=""hidden"" value="""" />"); content.AppendFormat(@"<script src=""https://www.google.com/recaptcha/api.js?render={0}&hl={1}""></script>", siteKey, language); content.AppendHtml("<script>"); content.AppendHtml("function updateReCaptcha() {"); content.AppendFormat("grecaptcha.execute('{0}', {{action: '{1}'}}).then(function(token){{", siteKey, action); content.AppendHtml("document.getElementById('g-recaptcha-response').value = token;"); content.AppendHtml("});"); content.AppendHtml("}"); content.AppendHtml("grecaptcha.ready(function() {setInterval(updateReCaptcha, 100000); updateReCaptcha()});"); content.AppendHtml("</script>"); content.AppendLine(); return(content); }
public static IHtmlContent RADataGridSelectedRowList <TModel, TProperty>(this IHtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, string dataGridId, bool includeRowNames = true, string rowNameClass = null) { var content = new HtmlContentBuilder(); content.AppendHtml("<div id=\"selectedDataGridItemsList\"></div>"); content.AppendFormat("<script>createSelectedDataGridItemsList('{0}', '{1}', '{2}', '{3}');</script>", dataGridId, htmlHelper.GetExpressionText(expression), includeRowNames.ToString().ToLower(), rowNameClass); return(content); }
public static IHtmlContent RATwoLineDateTime <TModel>( this IHtmlHelper <TModel> htmlHelper, DateTime?dateTimeUtc) { var content = new HtmlContentBuilder(); content.AppendFormat("<div class='ra-nowrap'>{0}</div> <div class='ra-nowrap'>{1}</div>", dateTimeUtc.RAFormatAsShortDateForTimeZone(), dateTimeUtc.RAFormatAsShortTimeForTimeZone()); return(content); }
private IHtmlContent GenerateHeaderRow(ModelMetadata[] props) { var builder = new HtmlContentBuilder(); builder.AppendHtml("<tr>"); foreach (var prop in props) { builder.AppendFormat("<th>{0}</th>", prop.DisplayName); } builder.AppendHtml("</tr>"); return(builder); }
public static IHtmlContent RARadioButtonFor <TModel, TProperty>( this IHtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, object value, string label, object htmlAttributes = null, string wrapperClass = null, string wrapperStyle = null, string stateClass = "p-primary-o", string labelClass = null, string labelStyle = null) { var content = new HtmlContentBuilder(); content.AppendFormat("<div class='pretty p-default p-round p-smooth {0}' style='{1}'>", wrapperClass, wrapperStyle); content.AppendHtml(htmlHelper.RadioButtonFor(expression, value, htmlAttributes)); content.AppendFormat("<div class='state {0}'>", stateClass); content.AppendFormat("<label class='{0}' style='{1}'>{2}</label>", labelClass, labelStyle, label); content.AppendHtml("</div></div>"); return(content); }
public static TagCloser RABeginAjaxContentSection(this IHtmlHelper htmlHelper, string contentKey, string contentUrl = null, string contentUrlScript = null, string contentClass = "ra-container ra-container-vertica", string contentStyle = null) { var content = new HtmlContentBuilder(); content.AppendFormat("<div id=\"{0}AjaxContent\" class=\"{1}\" style=\"{2}\" data-content-url=\"{3}\" data-content-url-script=\"{4}\">", contentKey, contentClass, contentStyle, contentUrl, contentUrlScript); htmlHelper.ViewContext.Writer.Write(content); return(new TagCloser(htmlHelper, "</div")); }
public static IHtmlContent RADashboardTable( this IHtmlHelper htmlHelper, string title, List <RADashboardItem> dashboardItems, string noDashboardItemsText = null) { var content = new HtmlContentBuilder(); content.AppendFormat("<div class='ra-dashboard-heading'>{0}</div>", title); content.AppendHtml("<table class=''><tbody>"); if (dashboardItems.Count > 0) { content.AppendHtml("<tr>"); foreach (var item in dashboardItems) { AppendDashboardItemCell(content, "upper", item.Count.ToString(), item.Url, item.State); } content.AppendHtml("</tr>"); content.AppendHtml("<tr>"); foreach (var item in dashboardItems) { AppendDashboardItemCell(content, "lower", item.Description, item.Url, item.State); } content.AppendHtml("</tr>"); } else { content.AppendFormat("<tr><td class='ra-dashboard-cell-noitems'>{0}</td></tr>", noDashboardItemsText); } content.AppendHtml("</tbody></table>"); return(content); }
public static TagCloser RABeginContainer( this IHtmlHelper htmlHelper, ContainerScrolling scrolling = ContainerScrolling.None, string containerClass = "ra-container", string containerStyle = null) { var content = new HtmlContentBuilder(); content.AppendFormat("<div class='{0} {1}' style='{2}'>", containerClass, GetScrollingClass(scrolling), containerStyle); htmlHelper.ViewContext.Writer.Write(content); return(new TagCloser(htmlHelper, "</div>")); }
public static TagCloser RABeginDataGridSelectableRow( this IHtmlHelper htmlHelper, IIdObject idObject, bool canSelect = true, string idOverride = null) { var id = !String.IsNullOrEmpty(idOverride) ? idOverride : idObject.Id.ToString(); var content = new HtmlContentBuilder(); content.AppendFormat("<tr class='{0}' data-row-id='{1}' data-row-name='{2}' onmouseup='{3}'", canSelect ? "ra-datagrid-row-selectable" : "", id, idObject.ToString(), canSelect ? "selectDataGridRow(this);" : ""); content.AppendHtml(">"); htmlHelper.ViewContext.Writer.Write(content); return(new TagCloser(htmlHelper, "</tr>")); }
private IHtmlContent GenerateBodyRows(IEnumerable items, ModelMetadata[] props) { var builder = new HtmlContentBuilder(); foreach (var item in items) { builder.AppendHtml("<tr>"); foreach (var prop in props) { // todo: use HtmlHelper.DisplpayFor var value = prop.PropertyGetter(item); builder.AppendFormat("<td>{0}</td>", value); } builder.AppendHtml("</tr>"); } return(builder); }
public static IHtmlContent RADynamicTable <TModel, TTableRowItem>( this IHtmlHelper <TModel> htmlHelper, Expression <Func <TModel, IList <TTableRowItem> > > tableRowItemsExpression, string rowViewName, string ajaxAddRowUrl, string addRowLinkText, string addButtonClass = "ra-btn-theme", string tHeadInnerHtml = null) where TTableRowItem : IDynamicTableRowItem { var content = new HtmlContentBuilder(); string tableId = Guid.NewGuid().ToString().Replace("-", ""); content.AppendFormat("<table id=\"{0}\" class=\"ra-dynamictable\">", tableId); if (!String.IsNullOrEmpty(tHeadInnerHtml)) { content.AppendHtml("<thead>" + tHeadInnerHtml + "</thead>"); } content.AppendHtml("<tbody class=\"ra-dynamictable-body\">"); var htmlFieldPrefix = htmlHelper.GetExpressionText(tableRowItemsExpression); var modelExplorer = htmlHelper.GetModelExplorer(tableRowItemsExpression); foreach (var rowItem in (IList <TTableRowItem>)modelExplorer.Model) { rowItem.HtmlFieldPrefix = htmlFieldPrefix; content.AppendHtml(htmlHelper.Partial(rowViewName, rowItem)); //htmlHelper.EditorFor(x => rowItem)); } var completeAjaxAddRowUrl = ajaxAddRowUrl += "&htmlFieldPrefix=" + htmlFieldPrefix; content.AppendHtml("</tbody>"); content.AppendHtml("</table>"); content.AppendHtml("<div>"); content.AppendHtml(htmlHelper.RAButton("<i class='fas fa-plus'></i> " + addRowLinkText, string.Format("raAddDynamicTableRow('{0}', '{1}');", tableId, completeAjaxAddRowUrl), buttonClass: $"{addButtonClass} ra-btn-xs")); content.AppendHtml("</button>"); content.AppendHtml("</div>"); return(content); }
public static TagCloser RABeginDataGrid( this IHtmlHelper htmlHelper, string tableClass = null, string tableStyle = null, int fixedHeight = 0, bool sortable = true, bool updateRowColors = true) { var tableId = Guid.NewGuid().ToString().Replace("-", ""); var userAgent = htmlHelper.ViewContext.HttpContext.Request.Headers["User-Agent"]; string uaString = Convert.ToString(userAgent[0]); var uaParser = Parser.GetDefault(); var clientInfo = uaParser.Parse(uaString); // Safari on iPhone/iPad/Mac can use Overlay Scrollbars to scroll (important // as intrinsic scrollbars are hidden on iPhone/iPad), but non-Safari browsers won't // show the sticky headers on long down scroll, so we want to use intrinsic scrollbars instead. var scrollClass = clientInfo.ToString().Contains("Safari") ? "ra-container-scrollable-both" : "ra-datagrid-table-scroll"; var content = new HtmlContentBuilder(); content.AppendFormat("<table id='{0}' class='ra-datagrid-table {1} {2} {3}' style='{4}'>", tableId, scrollClass, sortable ? "sort" : null, tableClass, tableStyle); htmlHelper.ViewContext.Writer.Write(content); var sortCommand = String.Format("new Tablesort(document.getElementById('{0}'));", tableId); var closingTags = String.Format("</table><script>{0}setupDataGrid('{1}',{2},{3});</script>", sortable ? sortCommand : null, tableId, fixedHeight, updateRowColors.Totruefalse()); return(new TagCloser(htmlHelper, closingTags)); }
public static IHtmlContent ReCaptchaV2Invisible(string siteKey, string text, string className, string language, string callback, string badge) { var content = new HtmlContentBuilder(); content.AppendFormat(@"<button class=""g-recaptcha {0}""", className); content.AppendFormat(@" data-sitekey=""{0}""", siteKey); content.AppendFormat(@" data-callback=""{0}""", callback); content.AppendFormat(@" data-badge=""{0}""", badge); content.AppendFormat(@">{0}</button>", text); content.AppendLine(); content.AppendFormat(@"<script src=""https://www.google.com/recaptcha/api.js?hl={0}"" defer></script>", language); return(content); }
public static IHtmlContent RAPagePanel <TModel>( this IHtmlHelper <TModel> htmlHelper, string contentUrl = null, string containerClass = "ra-container ra-container-vertical", string containerStyle = null) { var content = new HtmlContentBuilder(); content.AppendFormat( "<div id='ra-pagePanel' data-content-url='{0}' class='{1}' style='{2}'></div>", contentUrl, containerClass, containerStyle); if (!string.IsNullOrEmpty(contentUrl)) { content.AppendHtml("<script>$(document).ready(function() { raRefreshPagePanel(); });</script>"); } return(content); }
public static TagCloser RABeginStaticTableRow <TModel>(this IHtmlHelper <TModel> htmlHelper) where TModel : RATableRowItemBase { var model = htmlHelper.ViewData.Model; string existingHtmlPrefixField = htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix; htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix = model.IndexedHtmlFieldPrefix; var contentStart = new HtmlContentBuilder(); contentStart.AppendHtml("<tr>"); htmlHelper.ViewContext.Writer.Write(contentStart); var contentEnd = new HtmlContentBuilder(); contentEnd.AppendHtml("<td>"); contentEnd.AppendHtml(htmlHelper.HiddenFor(x => x.HtmlFieldPrefix)); contentEnd.AppendFormat("<input type=\"hidden\" id=\"{0}\" name=\"{1}\" value=\"{2}\" />", model.IndexId, model.IndexName, model.Index); contentEnd.AppendHtml("</td>"); contentEnd.AppendHtml("</tr>"); return(new TagCloser(htmlHelper, contentEnd, existingHtmlPrefixField)); }