private void InitializeContent(NewsFeedItem newsFeedContent)
        {
            ContentContainer.Child = null;

            if (newsFeedContent == null || newsFeedContent.Visual == null)
            {
                return;
            }

            var binding = newsFeedContent.Visual.Bindings.FirstOrDefault(i => i.Template == Model.Enums.Template.NewsFeedGeneric);

            if (binding == null)
            {
                return;
            }

            if (binding.Container.Children.OfType <AdaptiveImage>().Any(i => i.Placement == Model.Enums.Placement.Hero))
            {
                var heroStyle = new PreviewNewsFeedItemContentHeroStyle();
                heroStyle.Initialize(binding);
                ContentContainer.Child = heroStyle;
            }

            else
            {
                var basicStyle = new PreviewNewsFeedItemBasicContentStyle();
                basicStyle.Initialize(binding);
                ContentContainer.Child = basicStyle;
            }
        }
Пример #2
0
        public ActionResult CreateOrUpdateNewsItem(NewsFeedItem newNews)
        {
            //newNews.EventDateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
            //                                    .AddMilliseconds(1310522400000)
            //                                    .ToLocalTime();
            //if (newNews.IsEvent== true)
            //{
            //    DateTime tempTime = DateTime.Parse(newNews.JSEventDateTime,
            //                  null,
            //                  DateTimeStyles.RoundtripKind);
            //    TimeZone.CurrentTimeZone.ToLocalTime(tempTime);
            //    newNews.EventDateTime = tempTime;
            //}
            if (newNews.IsEvent == true)
            {
                newNews.EventDateTime = DateTime.Parse(newNews.JSEventDateTime);
            }
            newNews.TimeStamp = DateTime.Now;
            if (newNews.ItemId == 0)
            {
                dB.NewsFeedItems.Add(newNews);
            }
            else
            {
                dB.Entry(newNews).State = EntityState.Modified;
            }
            dB.SaveChanges();

            return(RedirectToAction("NewsFeedIndex"));
        }
        public IHttpActionResult PutNewsFeedItem(int id, NewsFeedItem newsFeedItem)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != newsFeedItem.NewsFeedItemId)
            {
                return(BadRequest());
            }

            db.Entry(newsFeedItem).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!NewsFeedItemExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Пример #4
0
        public ActionResult DeleteItem(int itemId)
        {
            NewsFeedItem itemToDelete = dB.NewsFeedItems.Single(f => f.ItemId == itemId);

            dB.NewsFeedItems.Remove(itemToDelete);
            dB.SaveChanges();

            return(RedirectToAction("NewsFeedIndex"));
        }
        public IHttpActionResult GetNewsFeedItem(int id)
        {
            NewsFeedItem newsFeedItem = db.NewsFeedItems.Find(id);

            if (newsFeedItem == null)
            {
                return(NotFound());
            }

            return(Ok(newsFeedItem));
        }
        public IHttpActionResult PostNewsFeedItem(NewsFeedItem newsFeedItem)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.NewsFeedItems.Add(newsFeedItem);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = newsFeedItem.NewsFeedItemId }, newsFeedItem));
        }
        public async Task <bool> Delete(NewsFeedItem newsFeedItem)
        {
            /*if (_memoryCache.TryGetValue("NewsItems", out IQueryable<NewsFeedItem> newsItems))
             * {
             *  _memoryCache.Remove("NewsItems");
             * }*/

            _newsFeedContext.NewsFeedItems.Remove(newsFeedItem);
            await _newsFeedContext.SaveChangesAsync();

            return(true);
        }
Пример #8
0
        internal void RenderContent()
        {
            NewsFeedItem item = DataContext as NewsFeedItem;

            if (item == null)
            {
                return;
            }

            _scroller.ScrollToTop();
            VisualStateManager.GoToState(this, Success.Name, true);

            try
            {
                // Build XAML using HtmlToXamlConverter, from here: http://windowsclient.net/downloads/folders/controlgallery/entry2313.aspx
                // Note that this has been modified quite a bit to add image support and disable some features. Search for "DISABLE" in
                // HtmlToXamlConverter.cs to see what's been turned off.
                string xaml = HtmlToXamlConverter.ConvertHtmlToXaml(item.Body, true);

                // Remove dumb images
                xaml = Regex.Replace(xaml, "<(Inline|Block)UIContainer><Image Source=\"[^\"]*(feeds\\.wordpress|feedburner|doubleclick).*?\" /></(Inline|Block)UIContainer>", string.Empty);

                // Try to repair images that use relative paths beginning with /.
                if (item.Uri != null)
                {
                    xaml = Regex.Replace(xaml, "Source=\"(/.*?)\"", "Source=\"http://" + item.Uri.Host + "$1\"");
                }

                // Remove empty paragraphs.
                xaml = Regex.Replace(xaml, "<Paragraph />", string.Empty);
                xaml = Regex.Replace(xaml, "<Paragraph>\\s*?</Paragraph>", string.Empty);
                xaml = Regex.Replace(xaml, "<Paragraph><LineBreak />", "<Paragraph>");
                xaml = Regex.Replace(xaml, "<LineBreak /></Paragraph>", "</Paragraph>");
                xaml = Regex.Replace(xaml, "<Paragraph>(<(Run|LineBreak) />\\s)*?</Paragraph>", string.Empty);
                xaml = Regex.Replace(xaml, "<Paragraph><Run> </Run></Paragraph>", string.Empty);

                // Build FlowDocument.
                byte[] byteArray = Encoding.UTF8.GetBytes(xaml);
                using (MemoryStream stream = new MemoryStream(byteArray))
                {
                    FlowDocument document = XamlReader.Load(stream) as FlowDocument;
                    _richTextBox.Document = document;
                    _richTextBox.UpdateLayout();
                    SizeImages();
                }
            }
            catch
            {
                VisualStateManager.GoToState(this, Fail.Name, true);
            }
        }
        public async Task <NewsFeedItem> Add(NewsFeedItem newsFeedItem)
        {
            /*if (_memoryCache.TryGetValue("NewsItems", out IQueryable<NewsFeedItem> newsItems))
             * {
             *  _memoryCache.Remove("NewsItems");
             * }*/
            await _newsFeedContext.NewsFeedItems.AddAsync(newsFeedItem);

            newsFeedItem.DateCreated = DateTime.UtcNow;

            await _newsFeedContext.SaveChangesAsync();

            return(newsFeedItem);
        }
        public IHttpActionResult DeleteNewsFeedItem(int id)
        {
            NewsFeedItem newsFeedItem = db.NewsFeedItems.Find(id);

            if (newsFeedItem == null)
            {
                return(NotFound());
            }

            db.NewsFeedItems.Remove(newsFeedItem);
            db.SaveChanges();

            return(Ok(newsFeedItem));
        }
Пример #11
0
        public ActionResult Create(NewsFeedItem newsfeeditem)
        {
            if (ModelState.IsValid)
            {
                newsfeeditem.ID       = Guid.NewGuid();
                newsfeeditem.Created  = DateTime.Now;
                newsfeeditem.Modified = DateTime.Now;
                newsfeeditem.UserID   = _userRepo.FindAll(u => u.UserName == User.Identity.Name).FirstOrDefault().ID;
                _newsFeedItemRepo.Add(newsfeeditem);
                return(RedirectToAction("Index", "NewsFeed"));
            }

            return(View(newsfeeditem));
        }
Пример #12
0
        //
        // GET: /NewsFeedItem/Create

        public ActionResult Create(int?ItemType = -1)
        {
            NewsFeedItem n = new NewsFeedItem();

            n.ItemType = (int)ItemType;

            ViewBag.type = ItemType;

            if (ItemType <= 0 || ItemType > 4)
            {
                return(RedirectToAction("Index", "NewsFeed"));
            }

            return(View(n));
        }
        public async Task <IActionResult> Add(NewsFeedItem newsFeedItem)
        {
            /*if (_cancellationTokenSource != null && _cancellationTokenSource.Token.CanBeCanceled)
             * {
             *  _cancellationTokenSource.Cancel();
             *  _cancellationTokenSource.Dispose();
             * }
             * _cancellationTokenSource = new CancellationTokenSource();*/

            ResetCache();

            await _newsFeedService.Add(newsFeedItem);

            return(Ok(newsFeedItem));
        }
Пример #14
0
        private void GetTwitterStuff()
        {
            try
            {
                using (var wc = new WebClient())
                {
                    var str = wc.DownloadString(AppConfig.WebsitePath + "news.xml");
                    if (string.IsNullOrWhiteSpace(str))
                    {
                        throw new Exception("Null news feed.");
                    }

                    var doc       = System.Xml.Linq.XDocument.Parse(str);
                    var nitems    = doc.Root.Elements("item");
                    var feeditems = new List <NewsFeedItem>();
                    foreach (var f in nitems)
                    {
                        var nf = new NewsFeedItem {
                            Message = (string)f
                        };
                        var dt = f.Attribute("date");
                        if (dt == null)
                        {
                            continue;
                        }
                        DateTime dto;
                        if (!DateTime.TryParse(dt.Value, out dto))
                        {
                            continue;
                        }
                        nf.Time = dto;
                        feeditems.Add(nf);
                    }

                    Dispatcher.BeginInvoke(
                        new Action(
                            () => this.ShowTwitterStuff(feeditems.OrderByDescending(x => x.Time).Take(5).ToList())));
                }
            }
            catch (Exception e)
            {
                Log.Warn("GetTwitterStuff", e);
                Dispatcher.Invoke(new Action(() => textBlock5.Text = "Could not retrieve news feed."));
            }
        }
        public async Task <NewsFeedItem> Update(NewsFeedItem newsFeedItem)
        {
            /*if (_memoryCache.TryGetValue("NewsItems", out IQueryable<NewsFeedItem> newsItems))
             * {
             *  _memoryCache.Remove("NewsItems");
             * }*/

            var newsItemForChanges = await _newsFeedContext.NewsFeedItems.SingleAsync(x => x.Id == newsFeedItem.Id);

            newsItemForChanges.Body          = newsFeedItem.Body;
            newsItemForChanges.Title         = newsFeedItem.Title;
            newsItemForChanges.AllowComments = newsFeedItem.AllowComments;

            _newsFeedContext.NewsFeedItems.Update(newsItemForChanges);
            await _newsFeedContext.SaveChangesAsync();

            return(newsFeedItem);
        }
Пример #16
0
        private static List <NewsFeedItem> ParseFeed(string rss)
        {
            var list = new List <NewsFeedItem>();

            try
            {
                var xdoc  = XDocument.Parse(rss);
                var items = xdoc.Descendants("item");
                var id    = 0;

                foreach (var item in items)
                {
                    NewsFeedItem article = new NewsFeedItem();

                    // Fri, 04 May 2018 15:31:44 EDT <-- district version
                    // Wed, 02 May 2018 12:58:20 -0000 <-- RSS aggregator version
                    string   dateString = item.Element("pubDate").Value;
                    DateTime pubDate    = DateTime.MinValue;

                    RSSDateTimeUtility.TryParseRfc822DateTime(dateString, out pubDate);

                    if (pubDate == DateTime.MinValue)
                    {
                        RSSDateTimeUtility.TryParseRfc3339DateTime(dateString, out pubDate);
                    }

                    article.Author = "";
                    article.Title  = item.Element("title") != null?item.Element("title").Value : "";

                    article.Description = item.Element("description") != null?item.Element("description").Value : "";

                    article.Link = item.Element("link") != null?item.Element("link").Value : "";

                    article.PublishDate = item.Element("pubDate") != null ? pubDate : DateTime.MinValue;
                    article.Id          = (id++).ToString();

                    list.Add(article);
                }
            }
            catch { }

            return(list);
        }
Пример #17
0
        public void feedLoaded(string feed)
        {
            //System.Diagnostics.Debug.WriteLine ("====> in feed Loaded");
            var topObj    = JObject.Parse(feed);
            var feedObj   = topObj["feed"];
            var feedArray = feedObj ["data"];

            foreach (var obj2 in feedArray)
            {
                NewsFeedItem newitem = new NewsFeedItem();
                JObject      obj     = (JObject)obj2;
                newitem.From         = obj["from"]["name"].ToString();
                newitem.Created_time = DateTime.Parse(obj["created_time"].ToString()).Humanize();
                JToken msg;
                if (obj.TryGetValue("message", out msg))
                {
                    newitem.Message = obj ["message"].ToString();
                }
                else if (obj.TryGetValue("story", out msg))
                {
                    newitem.Message = obj ["story"].ToString();
                }
                if (obj.TryGetValue("picture", out msg))
                {
                    newitem.Picture = obj ["picture"].ToString();
                }
                if (obj.TryGetValue("id", out msg))
                {
                    newitem.FbURI  = getURIfromGraphId(obj["id"].ToString());
                    newitem.WebURI = getWebURIfromGraphId(obj["id"].ToString());
                }
                newitem.Place = "";

                //System.Diagnostics.Debug.WriteLine ("====>JsonObject" + newitem.From);
                NewsFeedItems.Add(newitem);
            }
            //System.Diagnostics.Debug.WriteLine ("=====> After Feed Loaded");
        }
Пример #18
0
        internal override void ProcessResponse(object responseObject)
        {
            string response = responseObject.ToString();

            try
            {
                using (StringReader stringReader = new StringReader(response))
                {
                    XmlReader       xmlReader = XmlReader.Create(stringReader);
                    SyndicationFeed feed      = SyndicationFeed.Load(xmlReader);
                    if (feed != null)
                    {
                        foreach (SyndicationItem syndicationItem in feed.Items)
                        {
                            NewsFeedItem feedItem = new NewsFeedItem {
                                SourceType = SourceType.News
                            };
                            feedItem.Title = HttpUtility.HtmlDecode(syndicationItem.Title.Text);
                            feedItem.Date  = syndicationItem.PublishDate.LocalDateTime;

                            if (feedItem.Date < MinDate)
                            {
                                continue;
                            }

                            TextSyndicationContent content = syndicationItem.Content as TextSyndicationContent;
                            if (content != null)
                            {
                                // <content type="html">
                                feedItem.Body = content.Text;
                            }
                            else if (syndicationItem.Content != null && !string.IsNullOrEmpty(syndicationItem.Content.ToString()))
                            {
                                feedItem.Body = syndicationItem.Content.ToString();
                            }
                            else
                            {
                                var full = syndicationItem.ElementExtensions.Where(w => w.OuterName == "encoded").FirstOrDefault();
                                if (full != null)
                                {
                                    feedItem.Body = full.GetObject <XmlElement>().InnerText;
                                }
                                else if (syndicationItem.Summary != null)
                                {
                                    feedItem.Body = syndicationItem.Summary.Text;
                                }
                                else
                                {
                                    // throw this out because there's no content
                                    continue;
                                }
                            }

                            feedItem.Body = feedItem.Body.Trim();

                            feedItem.Summary = HttpUtility.HtmlDecode(StripHtml(syndicationItem.Summary != null ? syndicationItem.Summary.Text : feedItem.Body)).Trim();

                            Uri itemUri = null;
                            itemUri = syndicationItem.BaseUri;

                            if (itemUri == null)
                            {
                                // Get links out of feedburner feeds.
                                var originalLink = syndicationItem.ElementExtensions.Where(w => w.OuterName.ToUpper(CultureInfo.InvariantCulture) == "ORIGLINK").FirstOrDefault();
                                if (originalLink != null)
                                {
                                    Uri.TryCreate(originalLink.GetObject <XmlElement>().InnerText, UriKind.RelativeOrAbsolute, out itemUri);
                                }
                            }

                            if (itemUri == null)
                            {
                                // Get links from <link> elements.
                                var link = (from self in syndicationItem.Links where self.RelationshipType.ToUpper(CultureInfo.InvariantCulture) == "ALTERNATE" select self).FirstOrDefault();
                                if (link == null)
                                {
                                    link = syndicationItem.Links.FirstOrDefault();
                                }

                                if (link != null)
                                {
                                    itemUri = link.Uri;
                                }
                            }

                            if (itemUri == null)
                            {
                                // As a last resort, use the feed URL.
                                itemUri = new Uri(Query);
                            }

                            feedItem.Uri = itemUri;

                            var author = syndicationItem.ElementExtensions.Where(w => w.OuterName == "creator").FirstOrDefault();
                            if (author != null)
                            {
                                feedItem.Author = HttpUtility.HtmlDecode(author.GetObject <XmlElement>().InnerText);
                            }

                            RaiseGotNewFeedItem(feedItem);
                        }
                    }
                }
            }
            catch
            {
            }
        }
Пример #19
0
        private void GetTwitterStuff()
        {
            try
                {
                    using (var wc = new WebClient())
                    {
                        var str = wc.DownloadString(AppConfig.WebsitePath + "news.xml");
                        if (string.IsNullOrWhiteSpace(str))
                        {
                            throw new Exception("Null news feed.");
                        }

                        var doc = System.Xml.Linq.XDocument.Parse(str);
                        var nitems = doc.Root.Elements("item");
                        var feeditems = new List<NewsFeedItem>();
                        foreach (var f in nitems)
                        {
                            var nf = new NewsFeedItem { Message = (string)f };
                            var dt = f.Attribute("date");
                            if(dt == null) continue;
                            DateTime dto;
                            if(!DateTime.TryParse(dt.Value,out dto))
                                continue;
                            nf.Time = dto;
                            feeditems.Add(nf);
                        }

                        Dispatcher.BeginInvoke(
                            new Action(
                                () => this.ShowTwitterStuff(feeditems.OrderByDescending(x => x.Time).Take(5).ToList())));
                    }
                }
                catch(Exception)
                {
                    Dispatcher.Invoke(new Action(() => textBlock5.Text = "Could not retrieve news feed."));
                }
        }
Пример #20
0
 public async Task <NewsFeedItem> CreateNewsFeedItem(NewsFeedItem item)
 {
     return(item);
 }
Пример #21
0
 public void Setup()
 {
     _newsFeedItem = new NewsFeedItem();
 }
Пример #22
0
 public async Task <NewsFeedItem> UpdateNewsFeedItem(int id, NewsFeedItem item)
 {
     return(item);
 }