public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor)
        {
            List <Rss.RssItem> ret = new List <Rss.RssItem>();

            // -- get the news
            NewsArticleDb.NewsArticleAggregatorData aggData = (new NewsArticleDb()).fetchNewsAggregator(page, placeholderDefinition.Identifier, langToRenderFor, true);
            RenderParameters renderParams = RenderParameters.fromParamList(placeholderDefinition.ParamList, aggData);

            NewsAggItem[] newsItems = FetchAllNewsAggItems(page, placeholderDefinition.Identifier, langToRenderFor, renderParams, CmsUrlFormat.FullIncludingProtocolAndDomainName);

            int currYear = renderParams.AggregatorData.YearToDisplay;

            foreach (NewsAggItem newsItem in newsItems)
            {
                if (currYear < 0 || newsItem.NewsDate.Year == currYear)
                {
                    Rss.RssItem rssItem = new Rss.RssItem();
                    rssItem = InitRssItem(rssItem, page, langToRenderFor);

                    rssItem.Title = newsItem.Title;

                    rssItem.Link = new Uri(newsItem.PageDisplayURL, UriKind.RelativeOrAbsolute);
                    rssItem.Guid = new Rss.RssGuid(rssItem.Link);

                    rssItem.PubDate_GMT = newsItem.NewsDate.ToUniversalTime();

                    rssItem.Description = newsItem.NewsArticleHtml;

                    ret.Add(rssItem);
                }
            }


            return(ret.ToArray());
        } // GetRssFeedItems
 public RenderParameters(string[] paramList, NewsArticleDb.NewsArticleAggregatorData aggData)
 {
     if (CmsConfig.TemplateEngineVersion == CmsTemplateEngineVersion.v2)
     {
         ArticleDisplayFormat         = PlaceholderUtils.getParameterValue("displayformat", ArticleDisplayFormat, paramList);
         NumCharactersToShowInSnippet = PlaceholderUtils.getParameterValue("snippetchars", NumCharactersToShowInSnippet, paramList);
         AggregatorData         = aggData;
         PageIdToGatherNewsFrom = PlaceholderUtils.getParameterValue("gatherfrompageid", Int32.MinValue, paramList);
         RecursiveGatherNews    = PlaceholderUtils.getParameterValue("gatherrecusive", RecursiveGatherNews, paramList);
     }
     else
     {
         throw new ArgumentException("Invalid CmsTemplateEngineVersion");
     }
 } // constructor
        public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] param)
        {
            NewsArticleDb db = new NewsArticleDb();

            NewsArticleDb.NewsArticleAggregatorData entity = db.fetchNewsAggregator(page, identifier, langToRenderFor, true);

            string ProjectSummaryId = "ProjectSummary_" + page.ID.ToString() + "_" + identifier.ToString() + "_" + langToRenderFor.shortCode;

            // ------- CHECK THE FORM FOR ACTIONS
            string action = PageUtils.getFromForm(ProjectSummaryId + "_Action", "");

            if (action.Trim().ToLower() == "update")
            {
                // save the data to the database
                int id             = PageUtils.getFromForm(ProjectSummaryId + "_ProjectSummaryId", -1);
                int newDefaultYear = PageUtils.getFromForm("defaultYear_" + ProjectSummaryId, -1);

                entity.YearToDisplay = newDefaultYear;

                bool b = db.updateNewsAggregator(page, identifier, langToRenderFor, entity);
                if (!b)
                {
                    writer.Write("Error saving updates to database!");
                }
            }

            // ------- START RENDERING
            // note: no need to put in the <form></form> tags.

            StringBuilder html = new StringBuilder();

            html.Append("<p><strong>News Aggregator Display Settings:</strong></p>");

            html.Append("<table>");
            string dropDownHtml = PageUtils.getInputTextHtml("defaultYear_" + ProjectSummaryId, "defaultYear_" + ProjectSummaryId, entity.YearToDisplay.ToString(), 7, 4);

            html.Append("<tr><td>Default Year to display summaries for: (-1 = all years)</td>");
            html.Append("<td>" + dropDownHtml + "</td></tr>");

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

            html.Append("<input type=\"hidden\" name=\"" + ProjectSummaryId + "_Action\" value=\"update\">");
            html.Append("<input type=\"hidden\" name=\"" + ProjectSummaryId + "_ProjectSummaryId\" value=\"" + page.ID.ToString() + "\">");

            writer.WriteLine(html.ToString());
        }
        public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] param)
        {
            AddNewsArticleCommandToEditMenu(page, page);


            CmsPage       currentPage = CmsContext.currentPage;
            StringBuilder html        = new StringBuilder();

            NewsArticleDb db = new NewsArticleDb();

            NewsArticleDb.NewsArticleAggregatorData newsAggregator = db.fetchNewsAggregator(page, identifier, langToRenderFor, true);

            RenderParameters renderParams = RenderParameters.fromParamList(param, newsAggregator);

            NewsAggItem[] newsToShow = FetchAllNewsAggItems(page, identifier, langToRenderFor, renderParams, CmsUrlFormat.RelativeToRoot);

            // -- display results
            html.Append(getHtmlForSummaryView(newsToShow, renderParams, langToRenderFor));
            writer.Write(html.ToString());
        }
 public static RenderParameters fromParamList(string[] paramList, NewsArticleDb.NewsArticleAggregatorData aggData)
 {
     return(new RenderParameters(paramList, aggData));
 }