public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            string          ControlId = "Calender_" + page.ID.ToString() + "_" + identifier.ToString() + "_" + langToRenderFor.shortCode.ToLower();
            EventCalendarDb db        = new EventCalendarDb();

            EventCalendarDb.EventCalendarAggregatorData entity = db.fetchAggregatorData(page, identifier, langToRenderFor, true);

            string action = PageUtils.getFromForm(ControlId + "_action", "");

            if (String.Compare(action, "saveNewValues", true) == 0)
            {
                entity.ViewMode = (CalendarViewMode)PageUtils.getFromForm(ControlId + "_viewMode", typeof(CalendarViewMode), entity.ViewMode);
                db.updateAggregatorData(page, identifier, langToRenderFor, entity);
            }

            StringBuilder html = new StringBuilder();

            html.Append("<p>Calendar Display Configuration:</p>");

            html.Append("<table>");
            html.Append("<tr>");
            html.Append("<td>Initial view mode: </td>");
            html.Append("<td>");
            html.Append(PageUtils.getDropDownHtml(ControlId + "_viewMode", ControlId + "_viewMode", Enum.GetNames(typeof(CalendarViewMode)), Enum.GetName(typeof(CalendarViewMode), entity.ViewMode)));
            html.Append("</td>");
            html.Append("</tr>");
            html.Append("</table>");

            html.Append(PageUtils.getHiddenInputHtml(ControlId + "_action", "saveNewValues"));

            writer.Write(html.ToString());
        }
        public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor)
        {
            EventCalendarDb db = new EventCalendarDb();

            EventCalendarDb.EventCalendarAggregatorData entity = db.fetchAggregatorData(page, placeholderDefinition.Identifier, langToRenderFor, true);

            DateTime start = DateTime.MinValue;
            DateTime end   = DateTime.MinValue;

            switch (entity.ViewMode)
            {
            case CalendarViewMode.Agenda_Day:
                start = DateTime.Now.Date;
                end   = DateTime.Now.AddDays(1);
                break;

            case CalendarViewMode.Agenda_Week:
                DayOfWeek firstDay = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
                start = DateTime.Now.Date;
                while (start.DayOfWeek != firstDay)
                {
                    start = start.AddDays(-1);
                }

                end = DateTime.Now.AddDays(7);
                break;

            case CalendarViewMode.Month:
                start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                end   = start.AddMonths(1);
                break;

            default:
                throw new ArgumentException("Error: invalid CalendarView mode");
                break;
            }

            List <Rss.RssItem> ret = new List <Rss.RssItem>();
            List <EventCalendarDb.EventCalendarDetailsData> list = new EventCalendarDb().fetchDetailsDataByRange(start, end, langToRenderFor);

            foreach (EventCalendarDb.EventCalendarDetailsData e in list)
            {
                CmsPage     detailPage = CmsContext.getPageById(e.PageId);
                Rss.RssItem rssItem    = CreateAndInitRssItem(detailPage, langToRenderFor);
                rssItem.PubDate_GMT = e.StartDateTime;
                rssItem.Author      = e.CreatedBy;
                rssItem.Description = detailPage.renderPlaceholdersToString("EventCalendarDetails", langToRenderFor, CmsPage.RenderPlaceholderFilterAction.RunAllPageAndPlaceholderFilters);
                ret.Add(rssItem);
            }
            return(ret.ToArray());
        }
        public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            // CmsContext.setCurrentCultureInfo(langToRenderFor);
            EventCalendarDb db = new EventCalendarDb();

            EventCalendarDb.EventCalendarDetailsData entity = db.fetchDetailsData(page, identifier, langToRenderFor, true);
            CmsUrlFormat fileUrlFormat = CmsUrlFormat.RelativeToRoot;

            CmsPage       parentPage = page.ParentPage;
            StringBuilder html       = new StringBuilder();

            html.Append("<table border=\"0\" cellspacing=\"10\" style=\"margin-bottom: 3em;\" >");
            html.Append("<tr valign=\"top\">");
            html.Append("<td>" + getDescriptionText(langToRenderFor) + ":</td>");
            html.Append("<td>" + StringUtils.nl2br(entity.Description) + "</td>");
            html.Append("</tr>");
            html.Append("<tr valign=\"top\">");
            html.Append("<td>" + getCategoryText(langToRenderFor) + ":</td>");
            html.Append("<td>");
            html.Append(db.fetchCategoryByIdAndLang(langToRenderFor, entity.CategoryId).Title);
            html.Append("</td>");
            html.Append("</tr>");
            html.Append("<tr valign=\"top\">");
            html.Append("<td>" + getStartDateTimeText(langToRenderFor) + ":</td>");
            html.Append("<td>" + entity.StartDateTime.ToString("yyyy-MM-dd, h:mm tt") + "</td>");
            html.Append("</tr>");
            html.Append("<tr valign=\"top\">");
            html.Append("<td>" + getEndDateTimeText(langToRenderFor) + ":</td>");
            html.Append("<td>" + entity.EndDateTime.ToString("yyyy-MM-dd, h:mm tt") + "</td>");
            html.Append("</tr>");

            html.Append(renderAttachedFileList(page, langToRenderFor, fileUrlFormat));

            html.Append("</table>");

            html.Append("<a class=\"backToPrev\" href=\"");
            html.Append(parentPage.getUrl(langToRenderFor));
            html.Append("\">");
            html.Append(getBackToText(langToRenderFor));
            html.Append(" ");
            html.Append(parentPage.Title);
            html.Append("</a>");

            writer.Write(html.ToString());
        }
        public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            AddEventCommandToEditMenu(page, page);
            EventCalendarDb db = new EventCalendarDb();

            EventCalendarDb.EventCalendarAggregatorData entity = db.fetchAggregatorData(page, identifier, langToRenderFor, true);
            string calViewMode = entity.getViewModeForJQuery();

            addCssAndScriptForCalendarPlugin(page);
            addCssForEventCategory(page, langToRenderFor);

            string calDomId = getCalendarHtmlDomId(page, identifier);

            addScriptForCalendarRender(page, langToRenderFor, calDomId, calViewMode);

            StringBuilder html = new StringBuilder();

            html.Append("<div id=\"" + calDomId + "\" style=\"margin-right: 10px;\"></div>");

            writer.Write(html.ToString());
        }
        public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            // CmsContext.setCurrentCultureInfo(langToRenderFor);
            EventCalendarDb db = new EventCalendarDb();

            EventCalendarDb.EventCalendarDetailsData entity = db.fetchDetailsData(page, identifier, langToRenderFor, true);

            string controlId = "eventDetails_" + page.ID.ToString() + "_" + identifier.ToString() + "_" + langToRenderFor.shortCode;

            addCssAndScriptForDateTimePicker(page);
            addScriptForDateTimePickerRender(page, controlId);

            string action = PageUtils.getFromForm(controlId + "_action", "");

            if (String.Compare(action, "saveNewValues", true) == 0)
            {
                entity.Description   = PageUtils.getFromForm(controlId + "_description", entity.Description);
                entity.CategoryId    = PageUtils.getFromForm(controlId + "_categoryId", entity.CategoryId);
                entity.StartDateTime = PageUtils.getFromForm(controlId + "_startDateTime", entity.StartDateTime);
                entity.EndDateTime   = PageUtils.getFromForm(controlId + "_endDateTime", entity.EndDateTime);
                db.updateDetailsData(page, identifier, langToRenderFor, entity);
            }

            List <EventCalendarDb.EventCalendarCategoryData> categoryList = db.fetchCategoryList(langToRenderFor);
            NameValueCollection collection = new NameValueCollection();

            foreach (EventCalendarDb.EventCalendarCategoryData c in categoryList)
            {
                collection.Add(c.CategoryId.ToString(), c.Title);
            }

            // ------- START RENDERING
            StringBuilder html = new StringBuilder();

            html.Append("<table border=\"0\">");
            html.Append("<tr valign=\"top\">");
            html.Append("<td>" + getDescriptionText(langToRenderFor) + ":</td>");
            html.Append("<td>" + PageUtils.getTextAreaHtml(controlId + "_description", controlId + "_description", entity.Description, 30, 4) + "</td>");
            html.Append("</tr>");
            html.Append("<tr valign=\"top\">");
            html.Append("<td>" + getCategoryText(langToRenderFor) + ":</td>");
            html.Append("<td>");
            string categoryDropDown = "CategoryDropDown";

            html.Append(PageUtils.getDropDownHtml(controlId + "_categoryId", controlId + "_categoryId", collection, entity.CategoryId.ToString(), "", categoryDropDown + "_" + langToRenderFor.shortCode));

            try
            {
                CmsPage editCategoryPage = CmsContext.getPageByPath(CmsConfig.getConfigValue("EditCalendarCategoryPagePath", "/_admin/EventCalendarCategory"));
                html.Append(" <a href=\"" + editCategoryPage.getUrl(langToRenderFor) + "\" onclick=\"window.open(this.href,'" + categoryDropDown + "','resizable=1,scrollbars=1,width=800,height=400'); return false;\">(edit)</a>");
            }
            catch (Exception ex)
            {
                html.Append(" <span>Cannot setup Edit Category Link: " + ex.Message + "</span>");
            }

            html.Append("</td>");
            html.Append("</tr>");
            html.Append("<tr valign=\"top\">");
            html.Append("<td>" + getStartDateTimeText(langToRenderFor) + ":</td>");
            html.Append("<td>" + PageUtils.getInputTextHtml(controlId + "_startDateTime", controlId + "_startDateTime", entity.StartDateTime.ToString("yyyy-MM-dd, h:mm tt"), 20, 20) + "</td>");
            html.Append("</tr>");
            html.Append("<tr valign=\"top\">");
            html.Append("<td>" + getEndDateTimeText(langToRenderFor) + ":</td>");
            html.Append("<td>" + PageUtils.getInputTextHtml(controlId + "_endDateTime", controlId + "_endDateTime", entity.EndDateTime.ToString("yyyy-MM-dd, h:mm tt"), 20, 20) + "</td>");
            html.Append("</tr>");
            html.Append("</table>");

            html.Append(PageUtils.getHiddenInputHtml(controlId + "_action", "saveNewValues"));

            writer.WriteLine(html.ToString());
        }