/// <summary> /// Sets the search criterias to find the blog items used for the listing. /// Uses the properties IsTagListing, IsDateListing and IsTeamLevel to determine what criterias to set up. /// </summary> private void SetSearchCriterias() { if (CurrentPage[BlogUtility.IsTagListingPropertyName] != null) { _criterias.Add(BlogUtility.CreateCriteria(CompareCondition.Equal, "PageTypeName", PropertyDataType.PageType, BlogUtility.ItemPageTypeName, true)); _criterias.Add(BlogUtility.CreateCriteria(CompareCondition.Equal, "PageCategory", PropertyDataType.Category, CurrentPage.PageName, true)); _searchStart = (PageReference)CurrentPage[BlogUtility.StartPropertyName]; } else if (CurrentPage[BlogUtility.IsDateListingPropertyName] != null && CurrentPage[BlogUtility.IsTeamLevelPropertyName] == null) { _criterias.Add(BlogUtility.CreateCriteria(CompareCondition.Equal, "PageTypeName", PropertyDataType.PageType, BlogUtility.ItemPageTypeName, true)); _searchStart = CurrentPageLink; } else if (CurrentPage[BlogUtility.IsDateListingPropertyName] != null && CurrentPage[BlogUtility.IsTeamLevelPropertyName] != null) { _criterias.Add(BlogUtility.CreateCriteria(CompareCondition.Equal, "PageTypeName", PropertyDataType.PageType, BlogUtility.ItemPageTypeName, true)); _criterias.Add(BlogUtility.CreateCriteria(CompareCondition.GreaterThan, "PageStartPublish", PropertyDataType.Date, CurrentPage.StartPublish.ToString(), true)); _criterias.Add(BlogUtility.CreateCriteria(CompareCondition.LessThan, "PageStartPublish", PropertyDataType.Date, CurrentPage.StartPublish.Add(SearchInterval).ToString(), true)); _searchStart = (PageReference)CurrentPage[BlogUtility.StartPropertyName]; } else { throw new EPiServerException(Translate("/blog/listpage/errormessage")); } }
public Task <IList <BlogItem> > LoadItemsAsync(BlogGroup group) { return(Task.Run(async() => { var feed = await GetFeed(group.RssUri); IList <BlogItem> items = new List <BlogItem>(); foreach (var item in feed.Items) { try { var blogItem = new BlogItem { Group = group }; var uri = string.Empty; if (item.Links.Count > 0) { var link = item.Links.FirstOrDefault( l => l.RelationshipType.Equals("alternate", StringComparison.OrdinalIgnoreCase)) ?? item.Links[0]; uri = link.Uri.AbsoluteUri; } blogItem.Id = uri; blogItem.PageUri = new Uri(uri, UriKind.Absolute); blogItem.Title = item.Title != null ? item.Title.Text : "(no title)"; blogItem.PostDate = item.PublishDate.LocalDateTime; var content = "(no content)"; if (item.Content != null) { content = BlogUtility.ParseHtml(((TextSyndicationContent)item.Content).Text); } else if (item.Summary != null) { content = BlogUtility.ParseHtml(item.Summary.Text); } blogItem.Description = content; items.Add(blogItem); } catch (Exception ex) { MessageBox.Show(ex.Message); } } return items; })); }
public async Task LoadAllItems(BlogGroup group) { var cachedItems = await LoadCachedItems(group); group.ItemCount = cachedItems.Count; group.NewItemCount = 0; var newItems = await LoadLiveItems(group); foreach (var item in newItems.Where(i => !cachedItems.Contains(i, new BaseItemComparer()))) { var error = string.Empty; try { var client = GetClient(); var page = await client.GetStringAsync(item.PageUri); item.ImageUriList = new ObservableCollection <Uri>(BlogUtility.ExtractImagesFromPage(page)); foreach (var image in item.ImageUriList) { ImageUriManager.AddImage(item.Id, image); } } catch (Exception ex) { error = ex.Message; } if (!string.IsNullOrEmpty(error)) { await _dialog.ShowDialogAsync(error); } cachedItems.Add(item); group.NewItemCount++; await _storage.SaveItem(group.Id.GetHashCode().ToString(), item); } foreach (var item in cachedItems.OrderByDescending(i => i.PostDate)) { foreach (var image in item.ImageUriList) { ImageUriManager.AddImage(item.Id, image); } group.Items.Add(item); } group.ItemCount = group.Items.Count(); }
public async Task <IList <BlogItem> > LoadItemsAsync(BlogGroup group) { var info = NetworkInformation.GetInternetConnectionProfile(); if (info == null || info.GetNetworkConnectivityLevel() != NetworkConnectivityLevel.InternetAccess) { return(new List <BlogItem>()); } var retVal = new List <BlogItem>(); var outerError = string.Empty; try { var client = GetSyndicationClient(); var feed = await client.RetrieveFeedAsync(group.RssUri); foreach (var item in feed.Items.OrderBy(i => i.PublishedDate)) { var error = string.Empty; try { var blogItem = new BlogItem { Group = group }; var uri = string.Empty; if (item.Links.Count > 0) { var link = item.Links.FirstOrDefault( l => l.Relationship.Equals("alternate", StringComparison.OrdinalIgnoreCase)) ?? item.Links[0]; uri = link.Uri.AbsoluteUri; } blogItem.Id = uri; blogItem.PageUri = new Uri(uri, UriKind.Absolute); blogItem.Title = item.Title != null ? item.Title.Text : "(no title)"; blogItem.PostDate = item.PublishedDate.LocalDateTime; var content = "(no content)"; if (item.Content != null) { content = BlogUtility.ParseHtml(item.Content.Text); } else if (item.Summary != null) { content = BlogUtility.ParseHtml(item.Summary.Text); } blogItem.Description = content; retVal.Add(blogItem); } catch (Exception ex) { error = ex.Message; } if (!string.IsNullOrEmpty(error)) { await _dialog.ShowDialogAsync(error); } } } catch (Exception ex) { outerError = ex.Message; } if (!string.IsNullOrEmpty(outerError)) { await _dialog.ShowDialogAsync(outerError); } return(retVal); }