public override void RenderBaseControl( HtmlTextWriter writer )
{
Dictionary<string, string> values = null;
if ( DefinedTypeId.HasValue )
{
values = new Dictionary<string, string>();
new DefinedValueService( new RockContext() )
.GetByDefinedTypeId( DefinedTypeId.Value )
.ToList()
.ForEach( v => values.Add( v.Id.ToString(), v.Value ) );
}
else if ( CustomValues != null )
{
values = CustomValues;
}
writer.AddAttribute( HtmlTextWriterAttribute.Class, "key-value-list " + this.CssClass );
writer.AddAttribute( HtmlTextWriterAttribute.Id, this.ClientID );
writer.RenderBeginTag( HtmlTextWriterTag.Span );
writer.WriteLine();
_hfValue.RenderControl( writer );
writer.WriteLine();
StringBuilder html = new StringBuilder();
html.Append( @"<div class=""controls controls-row form-control-group"">");
// write key/value html
if ( this.DisplayValueFirst )
{
WriteValueHtml( html, values );
WriteKeyHtml( html );
}
else
{
WriteKeyHtml( html );
WriteValueHtml( html, values );
}
html.Append( @"<a href=""#"" class=""btn btn-sm btn-danger key-value-remove""><i class=""fa fa-minus-circle""></i></a></div>" );
var hfValueHtml = new HtmlInputHidden();
hfValueHtml.AddCssClass( "js-value-html" );
hfValueHtml.Value = html.ToString();
hfValueHtml.RenderControl( writer );
writer.AddAttribute( HtmlTextWriterAttribute.Class, "key-value-rows" );
writer.RenderBeginTag( HtmlTextWriterTag.Span );
writer.WriteLine();
string[] nameValues = this.Value.Split( new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries );
foreach ( string nameValue in nameValues )
{
string[] nameAndValue = nameValue.Split( new char[] { '^' } );
writer.AddAttribute( HtmlTextWriterAttribute.Class, "controls controls-row form-control-group" );
writer.RenderBeginTag( HtmlTextWriterTag.Div );
writer.WriteLine();
if ( DisplayValueFirst )
{
WriteValueControls( writer, nameAndValue, values );
WriteKeyControls( writer, nameAndValue );
}
else
{
WriteKeyControls( writer, nameAndValue );
WriteValueControls( writer, nameAndValue, values );
}
// Write Remove Button
writer.AddAttribute( HtmlTextWriterAttribute.Href, "#" );
writer.AddAttribute( HtmlTextWriterAttribute.Class, "btn btn-sm btn-danger key-value-remove" );
writer.RenderBeginTag( HtmlTextWriterTag.A );
writer.AddAttribute(HtmlTextWriterAttribute.Class, "fa fa-minus-circle");
writer.RenderBeginTag( HtmlTextWriterTag.I );
writer.RenderEndTag();
writer.RenderEndTag();
writer.WriteLine();
writer.RenderEndTag();
writer.WriteLine();
}
writer.RenderEndTag();
writer.WriteLine();
writer.AddAttribute( HtmlTextWriterAttribute.Class, "actions" );
writer.RenderBeginTag( HtmlTextWriterTag.Div );
writer.AddAttribute( HtmlTextWriterAttribute.Class, "btn btn-action btn-xs key-value-add" );
writer.AddAttribute( HtmlTextWriterAttribute.Href, "#" );
writer.RenderBeginTag( HtmlTextWriterTag.A );
writer.AddAttribute(HtmlTextWriterAttribute.Class, "fa fa-plus-circle");
writer.RenderBeginTag( HtmlTextWriterTag.I );
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
writer.WriteLine();
writer.RenderEndTag();
writer.WriteLine();
RegisterClientScript();
}