Rock.Web.UI.Controls.PersonLink.Render C# (CSharp) Method

Render() protected method

Renders the T:System.Web.UI.HtmlControls.HtmlContainerControl control to the specified T:System.Web.UI.HtmlTextWriter object.
protected Render ( System.Web.UI.HtmlTextWriter writer ) : void
writer System.Web.UI.HtmlTextWriter The that receives the content.
return void
        protected override void Render( HtmlTextWriter writer )
        {
            this.AddCssClass( "popover-person" );

            HRef = Path.Combine( System.Web.VirtualPathUtility.ToAbsolute( "~" ), string.Format( "Person/{0}", PersonId ) );

            this.Attributes["personId"] = PersonId.ToString();
            base.RenderBeginTag( writer );

            if ( PhotoId.HasValue && PhotoId.Value != 0 )
            {
                writer.AddAttribute( HtmlTextWriterAttribute.Class, "fa fa-circle" );
                writer.RenderBeginTag( HtmlTextWriterTag.I );
                writer.RenderEndTag();
            }

            writer.RenderBeginTag( HtmlTextWriterTag.Strong );
            writer.Write( PersonName );
            writer.RenderEndTag();

            base.RenderEndTag( writer );

            if ( !string.IsNullOrWhiteSpace( Role ) )
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Small);
                writer.Write( " (" );
                writer.Write( Role );
                writer.Write( ")" );
                writer.RenderEndTag();
            }

            string script = @"
            $('.popover-person').popover({
            placement: 'right',
            trigger: 'manual',
            delay: 500,
            html: true,
            content: function() {
            var dataUrl = Rock.settings.get('baseUrl') + 'api/People/PopupHtml/' +  $(this).attr('personid');

            var result = $.ajax({
                                type: 'GET',
                                url: dataUrl,
                                dataType: 'json',
                                contentType: 'application/json; charset=utf-8',
                                async: false }).responseText;

            var resultObject = jQuery.parseJSON(result);

            return resultObject.PickerItemDetailsHtml;

            }
            }).on('mouseenter', function () {
            var _this = this;
            $(this).popover('show');
            $(this).siblings('.popover').on('mouseleave', function () {
            $(_this).popover('hide');
            });
            }).on('mouseleave', function () {
            var _this = this;
            setTimeout(function () {
            if (!$('.popover:hover').length) {
                $(_this).popover('hide')
            }
            }, 100);
            });
            ";
            ScriptManager.RegisterStartupScript( this, this.GetType(), "person-link-popover", script, true );
        }