public static void Show(Core core, TPage page, User owner) { if (core == null) { throw new NullCoreException(); } if (core.ResponseFormat == ResponseFormats.Xml) { ShowMore(core, page, owner); return; } Template template = new Template(core.Http.TemplatePath, "viewfeed.html"); template.Medium = core.Template.Medium; template.SetProse(core.Prose); PermissionGroupSelectBox permissionSelectBox = new PermissionGroupSelectBox(core, "permissions", owner.ItemKey); template.Parse("S_STATUS_PERMISSIONS", permissionSelectBox); bool moreContent = false; long lastId = 0; bool first = true; List<Action> feedActions = Feed.GetItems(core, owner, page.TopLevelPageNumber, 20, page.TopLevelPageOffset, out moreContent); if (feedActions.Count > 0) { template.Parse("HAS_FEED_ITEMS", "TRUE"); VariableCollection feedDateVariableCollection = null; string lastDay = core.Tz.ToStringPast(core.Tz.Now); foreach (Action feedAction in feedActions) { DateTime feedItemDay = feedAction.GetTime(core.Tz); if (feedDateVariableCollection == null || lastDay != core.Tz.ToStringPast(feedItemDay)) { lastDay = core.Tz.ToStringPast(feedItemDay); feedDateVariableCollection = template.CreateChild("feed_days_list"); feedDateVariableCollection.Parse("DAY", lastDay); } if (first) { first = false; template.Parse("NEWEST_ID", feedAction.Id.ToString()); } VariableCollection feedItemVariableCollection = feedDateVariableCollection.CreateChild("feed_item"); core.Display.ParseBbcode(feedItemVariableCollection, "TITLE", feedAction.FormattedTitle); /*if ((!core.IsMobile) && (!string.IsNullOrEmpty(feedAction.BodyCache))) { core.Display.ParseBbcodeCache(feedItemVariableCollection, "TEXT", feedAction.BodyCache); } else*/ { Primitive itemOwner = core.PrimitiveCache[feedAction.OwnerId]; if (feedAction.InteractItem is IActionableItem) { itemOwner = ((IActionableItem)feedAction.InteractItem).Owner; if (((IActionableItem)feedAction.InteractItem).ApplicationId > 0) { try { ApplicationEntry ae = new ApplicationEntry(core, ((IActionableItem)feedAction.InteractItem).ApplicationId); if (ae.ApplicationType == ApplicationType.OAuth) { OAuthApplication oae = new OAuthApplication(core, ae); feedItemVariableCollection.Parse("VIA_APP_TITLE", oae.DisplayTitle); feedItemVariableCollection.Parse("U_VIA_APP", oae.Uri); } } catch (InvalidApplicationException) { } } } else if (feedAction.ActionedItem is IActionableItem) { itemOwner = ((IActionableItem)feedAction.ActionedItem).Owner; if (((IActionableItem)feedAction.ActionedItem).ApplicationId > 0) { try { ApplicationEntry ae = new ApplicationEntry(core, ((IActionableItem)feedAction.ActionedItem).ApplicationId); if (ae.ApplicationType == ApplicationType.OAuth) { OAuthApplication oae = new OAuthApplication(core, ae); feedItemVariableCollection.Parse("VIA_APP_TITLE", oae.DisplayTitle); feedItemVariableCollection.Parse("U_VIA_APP", oae.Uri); } } catch (InvalidApplicationException) { } } } core.Display.ParseBbcode(feedItemVariableCollection, "TEXT", feedAction.Body, itemOwner, true, string.Empty, string.Empty); } feedItemVariableCollection.Parse("USER_DISPLAY_NAME", feedAction.Owner.DisplayName); ItemKey interactItemKey = null; if (feedAction.InteractItemKey.Id > 0) { interactItemKey = feedAction.InteractItemKey; feedItemVariableCollection.Parse("ID", feedAction.InteractItemKey.Id); feedItemVariableCollection.Parse("TYPE_ID", feedAction.InteractItemKey.TypeId); } else { interactItemKey = feedAction.ActionItemKey; feedItemVariableCollection.Parse("ID", feedAction.ActionItemKey.Id); feedItemVariableCollection.Parse("TYPE_ID", feedAction.ActionItemKey.TypeId); } if (interactItemKey.GetType(core).Likeable) { feedItemVariableCollection.Parse("LIKEABLE", "TRUE"); if (feedAction.Info.Likes > 0) { feedItemVariableCollection.Parse("LIKES", string.Format(" {0:d}", feedAction.Info.Likes)); feedItemVariableCollection.Parse("DISLIKES", string.Format(" {0:d}", feedAction.Info.Dislikes)); } } if (interactItemKey.GetType(core).Commentable) { feedItemVariableCollection.Parse("COMMENTABLE", "TRUE"); if (feedAction.Info.Comments > 0) { feedItemVariableCollection.Parse("COMMENTS", string.Format(" ({0:d})", feedAction.Info.Comments)); } } //Access access = new Access(core, feedAction.ActionItemKey, true); if (feedAction.PermissiveParent.Access.IsPublic()) { feedItemVariableCollection.Parse("IS_PUBLIC", "TRUE"); if (interactItemKey.GetType(core).Shareable) { feedItemVariableCollection.Parse("SHAREABLE", "TRUE"); //feedItemVariableCollection.Parse("U_SHARE", feedAction.ShareUri); if (feedAction.Info.SharedTimes > 0) { feedItemVariableCollection.Parse("SHARES", string.Format(" {0:d}", feedAction.Info.SharedTimes)); } } } else { feedItemVariableCollection.Parse("IS_PUBLIC", "FALSE"); feedItemVariableCollection.Parse("SHAREABLE", "FALSE"); } if (feedAction.Owner is User) { feedItemVariableCollection.Parse("USER_TILE", ((User)feedAction.Owner).Tile); feedItemVariableCollection.Parse("USER_ICON", ((User)feedAction.Owner).Icon); } lastId = feedAction.Id; } } core.Display.ParseBlogPagination(template, "PAGINATION", core.Hyperlink.BuildHomeUri(), 0, moreContent ? lastId : 0); template.Parse("U_NEXT_PAGE", core.Hyperlink.BuildHomeUri() + "?p=" + (core.TopLevelPageNumber + 1) + "&o=" + lastId); core.AddMainPanel(template); }