Exemplo n.º 1
0
        /// <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();
            }
        }
Exemplo n.º 2
0
        /// <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(); // ????
        }