/// <summary> /// Writes the <see cref="T:System.Web.UI.WebControls.CompositeControl" /> content to the specified <see cref="T:System.Web.UI.HtmlTextWriter" /> object, for display on the client. /// </summary> /// <param name="writer">An <see cref="T:System.Web.UI.HtmlTextWriter" /> that represents the output stream to render HTML content on the client.</param> public override void RenderControl(HtmlTextWriter writer) { if (this.Visible) { var currentPerson = (this.Page as RockPage)?.CurrentPerson; var editableNoteTypes = NoteOptions.GetEditableNoteTypes(currentPerson); bool canAdd = AddAllowed && editableNoteTypes.Any() && (AllowAnonymousEntry || currentPerson != null); string cssClass = "panel panel-note js-notecontainer" + (this.NoteOptions.DisplayType == NoteDisplayType.Light ? " panel-note-light" : string.Empty); writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClass); writer.AddAttribute("data-sortdirection", this.SortDirection.ConvertToString(false)); writer.RenderBeginTag("section"); // Heading if (ShowHeading) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "panel-heading clearfix"); writer.RenderBeginTag(HtmlTextWriterTag.Div); if (!string.IsNullOrWhiteSpace(TitleIconCssClass) || !string.IsNullOrWhiteSpace(Title)) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "panel-title"); writer.RenderBeginTag(HtmlTextWriterTag.H3); if (!string.IsNullOrWhiteSpace(TitleIconCssClass)) { writer.AddAttribute(HtmlTextWriterAttribute.Class, TitleIconCssClass); writer.RenderBeginTag(HtmlTextWriterTag.I); writer.RenderEndTag(); // I } if (!string.IsNullOrWhiteSpace(Title)) { writer.Write(" "); writer.Write(Title); } writer.RenderEndTag(); } if (!NoteOptions.AddAlwaysVisible && canAdd && SortDirection == ListSortDirection.Descending) { RenderAddButton(writer); } writer.RenderEndTag(); } writer.AddAttribute(HtmlTextWriterAttribute.Class, "panel-body"); writer.RenderBeginTag(HtmlTextWriterTag.Div); _noteEditor.ShowEditMode = NoteOptions.AddAlwaysVisible; if (canAdd && SortDirection == ListSortDirection.Descending) { if (!ShowHeading && !NoteOptions.AddAlwaysVisible) { RenderAddButton(writer); } _noteEditor.RenderControl(writer); } _hfCurrentNoteId.RenderControl(writer); _hfExpandedNoteIds.RenderControl(writer); _lbDeleteNote.RenderControl(writer); _mdDeleteWarning.RenderControl(writer); using (var rockContext = new RockContext()) { List <Note> viewableNoteList = GetViewableNoteList(rockContext, currentPerson); this.ShowMoreOption = (SortDirection == ListSortDirection.Descending) && (viewableNoteList.Count > this.DisplayCount); if (this.ShowMoreOption) { viewableNoteList = viewableNoteList.Take(this.DisplayCount).ToList(); } var rockBlock = this.RockBlock(); var noteMergeFields = LavaHelper.GetCommonMergeFields(rockBlock?.RockPage, currentPerson, new CommonMergeFieldsOptions { GetLegacyGlobalMergeFields = false }); noteMergeFields.Add("NoteOptions", this.NoteOptions); noteMergeFields.Add("NoteList", viewableNoteList); List <int> expandedNoteIdList = _hfExpandedNoteIds.Value.SplitDelimitedValues().AsIntegerList(); noteMergeFields.Add("ExpandedNoteIds", expandedNoteIdList); var noteTreeHtml = this.NoteOptions.NoteViewLavaTemplate.ResolveMergeFields(noteMergeFields).ResolveClientIds(this.ParentUpdatePanel()?.ClientID); writer.Write(noteTreeHtml); } if (canAdd && SortDirection == ListSortDirection.Ascending) { if (!NoteOptions.AddAlwaysVisible) { RenderAddButton(writer); } _noteEditor.RenderControl(writer); } else { if (ShowMoreOption) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "load-more-container"); writer.RenderBeginTag(HtmlTextWriterTag.Div); _lbShowMore.RenderControl(writer); writer.RenderEndTag(); } } writer.RenderEndTag(); writer.RenderEndTag(); } }
/// <summary> /// Outputs server control content to a provided <see cref="T:System.Web.UI.HtmlTextWriter" /> object and stores tracing information about the control if tracing is enabled. /// </summary> /// <param name="writer">The <see cref="T:System.Web.UI.HtmlTextWriter" /> object that receives the control content.</param> public override void RenderControl(HtmlTextWriter writer) { var noteType = NoteTypeId.HasValue ? NoteTypeCache.Get(NoteTypeId.Value) : null; StringBuilder noteCss = new StringBuilder(); noteCss.Append("note-editor js-note-editor meta"); if (!string.IsNullOrEmpty(this.CssClass)) { noteCss.Append(" " + this.CssClass); } writer.AddAttribute(HtmlTextWriterAttribute.Class, noteCss.ToString()); if (this.Style[HtmlTextWriterStyle.Display] != null) { writer.AddStyleAttribute(HtmlTextWriterStyle.Display, this.Style[HtmlTextWriterStyle.Display]); } if (!ShowEditMode) { writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none"); } if (this.NoteId.HasValue) { writer.AddAttribute("rel", this.NoteId.Value.ToStringSafe()); } writer.RenderBeginTag(HtmlTextWriterTag.Div); // Edit Mode HTML... if (NoteOptions.DisplayType == NoteDisplayType.Full && NoteOptions.UsePersonIcon) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "meta-figure"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Class, "avatar avatar-lg"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(Person.GetPersonPhotoImageTag(CreatedByPersonId, CreatedByPhotoId, null, CreatedByGender, null, 50, 50)); writer.RenderEndTag(); // avatar div writer.RenderEndTag(); // meta-figure div } writer.AddAttribute(HtmlTextWriterAttribute.Class, "meta-body"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Class, "noteentry-control"); writer.RenderBeginTag(HtmlTextWriterTag.Div); _tbNote.RenderControl(writer); _hfNoteId.RenderControl(writer); _hfParentNoteId.RenderControl(writer); writer.RenderEndTag(); // Options writer.AddAttribute(HtmlTextWriterAttribute.Class, "settings clearfix"); writer.RenderBeginTag(HtmlTextWriterTag.Div); // The optional create date text box, but only for new notes... if (NoteOptions.ShowCreateDateInput && !NoteId.HasValue) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "createDate"); writer.RenderBeginTag(HtmlTextWriterTag.Div); _dtCreateDate.RenderControl(writer); writer.RenderEndTag(); // createDate div } _ddlNoteType.RenderControl(writer); _hfHasUnselectableNoteType.RenderControl(writer); if (NoteOptions.DisplayType == NoteDisplayType.Full) { if (NoteOptions.ShowAlertCheckBox) { _cbAlert.RenderControl(writer); } if (NoteOptions.ShowPrivateCheckBox) { _cbPrivate.RenderControl(writer); } } writer.AddAttribute(HtmlTextWriterAttribute.Class, "commands"); writer.RenderBeginTag(HtmlTextWriterTag.Div); _mdEditWarning.RenderControl(writer); if (NoteOptions.DisplayType == NoteDisplayType.Full) { if (NoteOptions.ShowSecurityButton) { _aSecurity.Attributes["data-title"] = this.Label; _aSecurity.RenderControl(writer); } } writer.AddAttribute(HtmlTextWriterAttribute.Class, "edit-note-cancel js-editnote-cancel btn btn-link btn-xs"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write("Cancel"); writer.RenderEndTag(); _lbSaveNote.Text = "Save " + Label; _lbSaveNote.CommandName = "SaveNote"; _lbSaveNote.CommandArgument = this.NoteId.ToString(); _lbSaveNote.RenderControl(writer); writer.RenderEndTag(); // commands div writer.RenderEndTag(); // settings div writer.RenderEndTag(); // panel body writer.RenderEndTag(); // ???? }