/// <summary> /// Loads the bread crumbs. /// </summary> private void LoadBreadCrumbs() { BreadCrumbs bc = GetBreadCrumbsControl(); bc.AddLink("Create new Company", null); bc.LoadControl(); }
/// <summary> /// Loads the bread crumbs. /// </summary> private void LoadBreadCrumbs() { BreadCrumbs bc = GetBreadCrumbsControl(); StageBitz.Data.Project project = GetBL <Logic.Business.Project.ProjectBL>().GetProject(ProjectId); int companyId = project.Company.CompanyId; string companyName = project.Company.CompanyName; string projectName = project.ProjectName; if (Support.IsCompanyAdministrator(companyId)) { bc.AddLink(companyName, string.Format("~/Company/CompanyDashboard.aspx?companyid={0}", companyId)); } else { bc.AddLink(companyName, ""); } bc.AddLink(projectName, string.Format("~/Project/ProjectDashboard.aspx?ProjectId={0}", ProjectId)); bc.AddLink(DisplayTitle, null); bc.LoadControl(); //Build Company and Project name labels lblCompanyName.Text = Support.TruncateString(companyName, 100); lblProjectName.Text = Support.TruncateString(projectName, 100); }
private void BackNode(object obj) { if (BreadCrumbs.Count > 1) { BreadCrumbs.Remove(BreadCrumbs.Last()); } }
public void ShowAllGroups() { try { CurrentWrapper = null; CurrentWrapperIsGroup = true; BreadCrumbs.Clear(); BreadCrumbs.Add(null); CurrentWrapperList.Clear(); AllGroupFilters.Clear(); foreach (GroupFilterVM grpFilter in GroupFilterHelper.AllGroupFilters) { //if (grpFilter.FilterConditions.Count == 0) // AllGroupFilter = grpFilter; AllGroupFilters.Add(grpFilter); CurrentWrapperList.Add(grpFilter); } ShowChildWrappers(AllGroupFilter); } catch (Exception ex) { Utils.ShowErrorMessage(ex); } }
private void LoadBreadCrumbs() { BreadCrumbs breadCrumbs = GetBreadCrumbsControl(); breadCrumbs.AddLink("Companies", null); breadCrumbs.LoadControl(); }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event. /// </summary> /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (Page.IsPostBack) { LoadChannelControl(false); } else { ShowAllRecipients = false; string itemId = PageParameter("CommunicationId"); if (!string.IsNullOrWhiteSpace(itemId)) { ShowDetail("CommunicationId", int.Parse(itemId)); } else { ShowDetail("CommunicationId", 0); } } BreadCrumbs.Add(new BreadCrumb(PageTitle, true)); }
private void LoadBreadCrumbs() { BreadCrumbs breadCrumbs = GetBreadCrumbsControl(); breadCrumbs.AddLink(DisplayTitle, null); breadCrumbs.LoadControl(); }
public void ShowAllGroups() { try { CurrentWrapper = null; CurrentWrapperIsGroup = true; BreadCrumbs.Clear(); BreadCrumbs.Add(null); CurrentWrapperList.Clear(); foreach (GroupFilterVM grpFilter in AllGroupFiltersDictionary.Values) { //if (grpFilter.FilterConditions.Count == 0) // AllGroupFilter = grpFilter; if (!grpFilter.GroupFilterParentId.HasValue) { CurrentWrapperList.Add(grpFilter); } } ShowChildWrappers(AllGroupFilter); } catch (Exception ex) { Utils.ShowErrorMessage(ex); } }
public void GetBreadCrumbs() { phBreadCrumbs.Controls.Clear(); BreadCrumbs breadcrumbs = base.CurrentPortalPage.BreadCrumbs; if (BreadcrumbClassSetting != "") { breadcrumbs.CssClass = BreadcrumbClassSetting; } if (BreadcrumbSeparatorSetting != "") { breadcrumbs.Separator = BreadcrumbSeparatorSetting; } // Remove the number of levels set by the administrator if (RemoveLevelsSetting != 0) { int levels = breadcrumbs.Count - RemoveLevelsSetting; for (int i = breadcrumbs.Count; i > levels; i--) { breadcrumbs.RemoveAt(i - 1); } } phBreadCrumbs.Controls.Add(new LiteralControl(breadcrumbs.ToString())); }
private void StartNode(object obj) { while (BreadCrumbs.Count > 1) { BreadCrumbs.Remove(BreadCrumbs.Last()); } }
/// <summary> /// Loads the bread crumbs. /// </summary> /// <param name="companyName">Name of the company.</param> private void LoadBreadCrumbs(string companyName) { BreadCrumbs bc = GetBreadCrumbsControl(); bc.AddLink(companyName, string.Format("~/Company/CompanyDashboard.aspx?CompanyId={0}", CompanyId)); bc.AddLink(DisplayTitle, null); bc.LoadControl(); }
private void LoadBreadCrumbs() { BreadCrumbs breadCrumbs = GetBreadCrumbsControl(); breadCrumbs.AddLink("Companies", "~/Company/Companies.aspx"); breadCrumbs.AddLink(DisplayTitle, null); breadCrumbs.LoadControl(); }
private void LoadBreadCrumbs() { BreadCrumbs breadCrumbs = GetBreadCrumbsControl(); breadCrumbs.AddLink("Users", "~/User/Users.aspx"); breadCrumbs.AddLink(DisplayTitle, null); breadCrumbs.LoadControl(); }
private void LoadBreadCrumbs() { BreadCrumbs breadCrumbs = GetBreadCrumbsControl(); breadCrumbs.AddLink("Companies", "~/Company/Companies.aspx"); breadCrumbs.AddLink("Pricing Plan History", null); breadCrumbs.LoadControl(); }
/// <summary> /// Loads the bread crumbs. /// </summary> private void LoadBreadCrumbs() { BreadCrumbs bc = GetBreadCrumbsControl(); StageBitz.Data.Company company = DataContext.Companies.Where(c => c.CompanyId == CompanyId).FirstOrDefault(); bc.AddLink(DisplayTitle, null); bc.LoadControl(); }
/// <summary> /// Builds the navigation. /// </summary> /// <param name="breadCrumbNavigation">The bread crumb navigation.</param> private void BuildNavigation(BreadCrumbs breadCrumbNavigation) { //Add HomeLink HyperLink home = new HyperLink { Text = "Galleries", NavigateUrl = "Default.aspx" }; breadCrumbNavigation.Links.Add(home); Literal galleryLink = new Literal { Text = gallery.Name }; breadCrumbNavigation.Links.Add(galleryLink); }
/// <summary> /// Builds the navigation. /// </summary> /// <param name="breadCrumbNavigation">The bread crumb navigation.</param> private static void BuildNavigation(BreadCrumbs breadCrumbNavigation) { //Add HomeLink Literal home = new Literal { Text = "Galleries" }; breadCrumbNavigation.Links.Add(home); }
/// <summary> /// Loads the bread crumbs. /// </summary> /// <param name="company">The company.</param> private void LoadBreadCrumbs(StageBitz.Data.Company company) { BreadCrumbs bc = GetBreadCrumbsControl(); string companyUrl = Support.IsCompanyAdministrator(company.CompanyId) ? string.Format("~/Company/CompanyDashboard.aspx?CompanyId={0}", company.CompanyId) : null; bc.AddLink(company.CompanyName, companyUrl); bc.AddLink(DisplayTitle, null); bc.LoadControl(); }
public void TestLinkedCrumbs() { BreadCrumbs crumbs = new BreadCrumbs(2); crumbs.Push("bob"); crumbs.Push("linked", true); crumbs.Push("new"); crumbs.Pop(); Assert.AreEqual(1, crumbs.Count()); Assert.AreEqual("bob", crumbs.ToString()); }
public void ShouldDoNothingWhenEmpty() { var context = new BreadCrumbs(); var chain = new BehaviorChain <BreadCrumbs>(); chain.Execute(context); context.Crumbs.ShouldBeEmpty(); context.Exceptions.ShouldBeEmpty(); }
public void TestToStringWorksProperly() { BreadCrumbs crumbs = new BreadCrumbs(2); crumbs.Push("sam"); crumbs.Push("hello"); crumbs.Push("world"); Assert.AreEqual(3, crumbs.Count()); Assert.AreEqual("hello | world", crumbs.ToString()); }
/// <summary> /// Loads the bread crumbs. /// </summary> private void LoadBreadCrumbs() { BreadCrumbs bc = GetBreadCrumbsControl(); bc.ClearLinks(); bc.AddLink("Company Inventory", string.Format("~/Inventory/CompanyInventory.aspx?CompanyId={0}", this.CompanyId)); bc.AddLink("My Bookings", null); bc.LoadControl(); bc.UpdateBreadCrumb(); }
/// <summary> /// Loads the bread crumbs. /// </summary> private void LoadBreadCrumbs() { BreadCrumbs bc = GetBreadCrumbsControl(); StageBitz.Data.Company company = DataContext.Companies.Where(c => c.CompanyId == CompanyId).FirstOrDefault(); bc.AddLink(company.CompanyName, string.Format("~/Company/CompanyDashboard.aspx?CompanyId={0}", company.CompanyId)); bc.AddLink("Manage Company Team", null); bc.LoadControl(); }
private void UpdateBreadkCrumbs() { BreadCrumbs.Clear(); var breakCrumbs = ConvertToBreadCrumbs(_nodeHistoryState); foreach (var breadCrumbViewmodel in breakCrumbs) { BreadCrumbs.Add(breadCrumbViewmodel); } }
/// <summary> /// Prepare the breadcrumbs model for this view. /// </summary> private void ConfigureBreadCrumbs() { if (SettingsHelper.GetBreadcrumbsHomeEnabled()) { // Set up the breadcrumbs for this action var breadCrumbs = new BreadCrumbs(); breadCrumbs.Add(new BreadCrumb( SettingsHelper.GetCatalogBreadcrumbsBaseLabel())); ViewData["BreadCrumbs"] = breadCrumbs; } }
public int DrawGpsPoint(double latitude, double longitude, double direction, BreadCrumbs breadCrumbs) { if (MxDocument == null) { throw new InvalidOperationException("MxDocument not set"); } GetObjectFactoryOrFail(); return(AddGpsPointGraphic(latitude, longitude, direction, breadCrumbs)); }
private void DrillDown(object obj) { Node n = obj as Node; if (n == null) { return; } BreadCrumbs.Add(n); }
/// <summary> /// Builds the navigation. /// </summary> /// <param name="breadCrumbNavigation">The bread crumb navigation.</param> private void BuildNavigation(BreadCrumbs breadCrumbNavigation) { //Add HomeLink HyperLink home = new HyperLink {Text = "Galleries", NavigateUrl = "Default.aspx"}; breadCrumbNavigation.Links.Add(home); HyperLink galleryLink = new HyperLink { Text = gallery.Name, NavigateUrl = "Default.aspx?lgid=" + gallery.GalleryId }; breadCrumbNavigation.Links.Add(galleryLink); Literal photos = new Literal { Text = "Photos"}; breadCrumbNavigation.Links.Add(photos); }
/// <summary> /// Loads the bread crumbs. /// </summary> private void LoadBreadCrumbs() { BreadCrumbs bc = GetBreadCrumbsControl(); StageBitz.Data.Company company = DataContext.Companies.Where(c => c.CompanyId == CompanyID).FirstOrDefault(); string companyUrl = Support.IsCompanyAdministrator(company.CompanyId) ? string.Format("~/Company/CompanyDashboard.aspx?CompanyId={0}", company.CompanyId) : null; bc.AddLink(company.CompanyName, companyUrl); bc.AddLink("Create New Project", null); bc.LoadControl(); }
/// <summary> /// Loads the bread crumbs. /// </summary> /// <param name="project">The project.</param> private void LoadBreadCrumbs(StageBitz.Data.Project project) { BreadCrumbs bc = GetBreadCrumbsControl(); StageBitz.Data.Company company = project.Company; string companyUrl = Support.IsCompanyAdministrator(company.CompanyId) ? string.Format("~/Company/CompanyDashboard.aspx?CompanyId={0}", company.CompanyId) : null; bc.AddLink(company.CompanyName, companyUrl); bc.AddLink(project.ProjectName, string.Format("~/Project/ProjectDashboard.aspx?projectid={0}", project.ProjectId)); bc.AddLink("Updates Report", null); bc.LoadControl(); }
/// <summary> /// Loads the bread crumbs. /// </summary> /// <param name="company">The company.</param> private void LoadBreadCrumbs(Data.Company company) { bool isCompanyAdmin = Support.IsCompanyAdministrator(this.CompanyId); BreadCrumbs bc = GetBreadCrumbsControl(); bc.ClearLinks(); bc.AddLink("Company Inventory", isCompanyAdmin ? string.Format("~/Inventory/CompanyInventory.aspx?CompanyId={0}", this.CompanyId) : null); bc.AddLink("My Bookings", string.Format("~/Inventory/MyBookings.aspx?CompanyId={0}", this.CompanyId)); bc.AddLink("Booking Details", string.Format("~/Inventory/MyBookingDetails.aspx?BookingId={0}&CompanyId={1}", BookingId, CompanyId)); bc.AddLink("Change Booking Dates", null); bc.LoadControl(); bc.UpdateBreadCrumb(); }
protected void Page_Load(object sender, EventArgs e) { string cacheKey = "AdminBreadCrumb"; string breadCrumbFileContent = (string)Cache[cacheKey]; if (string.IsNullOrEmpty(breadCrumbFileContent)) { // cache breadcrumb xml string breadCrumbFile = Server.MapPath("~/App_Data/adminbreadcrumb.xml"); breadCrumbFileContent = File.ReadAllText(breadCrumbFile); Cache.Add(cacheKey, breadCrumbFileContent, new CacheDependency(breadCrumbFile), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Normal, null); } XmlDocument breadCrumbMap = new XmlDocument(); breadCrumbMap.LoadXml(breadCrumbFileContent); string pagePath = Request.AppRelativeCurrentExecutionFilePath.ToLowerInvariant(); if (pagePath.EndsWith("admin/menu.aspx") && !string.IsNullOrEmpty(Request.QueryString["path"])) { pagePath += "?path=" + Request.QueryString["path"].ToLowerInvariant(); } List <BreadCrumbItem> breadCrumbList = GenerateBreadCrumbList(breadCrumbMap.DocumentElement, pagePath); if (breadCrumbList != null) { foreach (BreadCrumbItem item in breadCrumbList) { ProcessRules(item); } List <BreadCrumbItem> expandedList = new List <BreadCrumbItem>(); foreach (BreadCrumbItem item in breadCrumbList) { expandedList.Add(item); IList <BreadCrumbItem> childItems = GetChildItems(item); if (childItems.Count > 0) { expandedList.AddRange(childItems); } } // the last link does not need to do anything expandedList[expandedList.Count - 1].Url = "#"; expandedList[expandedList.Count - 1].CssClass = "current"; BreadCrumbs.DataSource = expandedList; BreadCrumbs.DataBind(); } else { // no breadcrumb data, hide this control this.Controls.Clear(); } }
/// <summary> /// Prepare the breadcrumbs model for this view. /// </summary> /// <param name="package"></param> private void ConfigureBreadCrumbs(Package package) { // Set up the breadcrumbs for this action var breadCrumbs = new BreadCrumbs(); breadCrumbs.Add(new BreadCrumb( SettingsHelper.GetCatalogBreadcrumbsBaseLabel(), "Index", "Home")); breadCrumbs.Add(new BreadCrumb( package.Title)); ViewData["BreadCrumbs"] = breadCrumbs; }
// // GET: /Cache/ public ActionResult Index(string token) { CheckToken(token); CkanClient client = CkanHelper.GetClient(); var cachedItems = client.GetCachedRequests(); // Set up the breadcrumbs for this action var breadCrumbs = new BreadCrumbs(); breadCrumbs.Add(new BreadCrumb(SettingsHelper.GetCatalogBreadcrumbsBaseLabel(), "Index", "Home")); breadCrumbs.Add(new BreadCrumb("Admin")); breadCrumbs.Add(new BreadCrumb("Cache")); ViewData["BreadCrumbs"] = breadCrumbs; // Disable analytics on admin pages ViewData["DisableAnalytics"] = true; return View(cachedItems); }
/// <summary> /// Display the error view /// </summary> /// <param name="errorPresentation"></param> public static void DisplayErrorView(ErrorPresentation errorPresentation) { // Return the error view ViewResult result = new ViewResult(); result.ViewName = "Error"; result.ViewData = new ViewDataDictionary(errorPresentation); // Set up the breadcrumbs for the view var breadCrumbs = new BreadCrumbs(); breadCrumbs.Add(new BreadCrumb( "Home", "Index", "Home")); breadCrumbs.Add(new BreadCrumb( "Error")); result.ViewData.Add("BreadCrumbs", breadCrumbs); // Get the context for the error controller HttpContext context = HttpContext.Current; if (context.CurrentHandler is MvcHandler) { RequestContext requestContext = ((MvcHandler)context.CurrentHandler).RequestContext; //string controllerName = rc.RouteData.GetRequiredString("Error"); IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory(); IController controller = factory.CreateController(requestContext, "Error"); ControllerContext controllerContext = new ControllerContext(requestContext, (ControllerBase)controller); // Execute the view results result.ExecuteResult(controllerContext); context.Server.ClearError(); } }
/// <summary> /// Get the breadcrumbs model for this view. /// </summary> private BreadCrumbs GetBreadCrumbs(string title) { BreadCrumbs breadCrumbs = null; if (SettingsHelper.GetBreadcrumbsEnabled()) { // Set up the breadcrumbs for this action breadCrumbs = new BreadCrumbs(); breadCrumbs.Add(new BreadCrumb( SettingsHelper.GetCatalogBreadcrumbsBaseLabel(), "Index", "Home")); // Add breadcrumb for the search action if (!String.IsNullOrEmpty(title)) { breadCrumbs.Add(new BreadCrumb( title)); } } return breadCrumbs; }
/// <summary> /// Configure the breadcrumbs for this controller. /// </summary> /// <param name="q">The query</param> /// <param name="tag">The selected tag</param> private void ConfigureBreadCrumbs(string q, string tag) { // Set up the breadcrumbs for this action var breadCrumbs = new BreadCrumbs(); breadCrumbs.Add(new BreadCrumb( SettingsHelper.GetCatalogBreadcrumbsBaseLabel(), "Index", "Home")); // Add breadcrumb for the search action breadCrumbs.Add(new BreadCrumb( "Search")); // Add breadcrumb for the search filter (query) if (!String.IsNullOrEmpty(q)) { var routeValues = RouteHelper.RouteFromParameters(RouteData.Values); // Create a route that removes the q parameter breadCrumbs.Add(new BreadCrumb( String.Format("Query: {0}", q), "Index", RouteHelper.UpdateRoute(routeValues, "q", ""), true) ); } // Add breadcrumb for the tag filter if (!String.IsNullOrEmpty(tag)) { var routeValues = RouteHelper.RouteFromParameters(RouteData.Values); // Create a route that removes the tag parameter breadCrumbs.Add(new BreadCrumb( String.Format("Tag: {0}",tag), "Index", RouteHelper.UpdateRoute(routeValues, "tag", ""), true) ); } ViewData["BreadCrumbs"] = breadCrumbs; }
public MediaContainer GetItemsFromGroup(IProvider prov, int userid, string GroupId, BreadCrumbs info, bool nocast, int? filterID) { int groupID; int.TryParse(GroupId, out groupID); if (groupID == -1) return new MediaContainer() { ErrorString = "Invalid Group Id" }; List<Video> retGroups = new List<Video>(); AnimeGroup grp = RepoFactory.AnimeGroup.GetByID(groupID); if (grp == null) return new MediaContainer { ErrorString = "Invalid Group" }; BaseObject ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.Show, grp.GroupName, false, true, info)); if (!ret.Init()) return new MediaContainer(); Contract_AnimeGroup basegrp = grp?.GetUserContract(userid); if (basegrp != null) { List<AnimeSeries> seriesList = grp.GetSeries(); if (filterID.HasValue) { GroupFilter filter = RepoFactory.GroupFilter.GetByID(filterID.Value); if (filter != null) { if (filter.ApplyToSeries > 0) { if(filter.SeriesIds.ContainsKey(userid)) seriesList = seriesList.Where(a => filter.SeriesIds[userid].Contains(a.AnimeSeriesID)).ToList(); } } } foreach (AnimeGroup grpChild in grp.GetChildGroups()) { var v = grpChild.GetPlexContract(userid); if (v != null) { v.Type = "show"; v.GenerateKey(prov, userid); v.Art = Helper.GetRandomFanartFromVideo(v) ?? v.Art; v.Banner = Helper.GetRandomBannerFromVideo(v) ?? v.Banner; if (nocast) v.Roles = null; retGroups.Add(prov, v, info); v.ParentThumb = v.GrandparentThumb = null; } } foreach (AnimeSeries ser in seriesList) { var v = ser.GetPlexContract(userid)?.Clone<Directory>(); if (v != null) { v.AirDate = ser.AirDate; v.Group = basegrp; v.Type = "show"; v.GenerateKey(prov, userid); v.Art = Helper.GetRandomFanartFromVideo(v) ?? v.Art; v.Banner = Helper.GetRandomBannerFromVideo(v) ?? v.Banner; if (nocast) v.Roles = null; retGroups.Add(prov, v, info); v.ParentThumb = v.GrandparentThumb = null; } } } ret.MediaContainer.RandomizeArt(retGroups); ret.Childrens = Helper.ConvertToDirectory(retGroups.OrderBy(a => a.AirDate).ToList()); //FilterExtras(prov,ret.Childrens); return ret.GetStream(prov); }
private MediaContainer GetItemsFromPlaylist(IProvider prov, int userid, string id, BreadCrumbs info) { var PlaylistID = -1; int.TryParse(id, out PlaylistID); if (PlaylistID == 0) { using (var session = DatabaseFactory.SessionFactory.OpenSession()) { var ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.Show, "Playlists", true, true, info)); if (!ret.Init()) return new MediaContainer(); //Normal var retPlaylists = new List<Video>(); var playlists = RepoFactory.Playlist.GetAll(); var sessionWrapper = session.Wrap(); foreach (var playlist in playlists) { var dir = new Directory(); dir.Key = prov.ShortUrl(prov.ConstructPlaylistIdUrl(userid, playlist.PlaylistID)); dir.Title = playlist.PlaylistName; dir.Id = playlist.PlaylistID.ToString(); dir.AnimeType = JMMContracts.PlexAndKodi.AnimeTypes.AnimePlaylist.ToString(); var episodeID = -1; if (int.TryParse(playlist.PlaylistItems.Split('|')[0].Split(';')[1], out episodeID)) { var anime = RepoFactory.AnimeEpisode.GetByID(episodeID).GetAnimeSeries(sessionWrapper).GetAnime(); dir.Thumb = anime?.GetDefaultPosterDetailsNoBlanks(sessionWrapper)?.GenPoster(); dir.Art = anime?.GetDefaultFanartDetailsNoBlanks(sessionWrapper)?.GenArt(); dir.Banner = anime?.GetDefaultWideBannerDetailsNoBlanks(sessionWrapper)?.GenArt(); } else { dir.Thumb = Helper.ConstructSupportImageLink("plex_404V.png"); } dir.LeafCount = playlist.PlaylistItems.Split('|').Count().ToString(); dir.ViewedLeafCount = "0"; retPlaylists.Add(prov, dir, info); } retPlaylists = retPlaylists.OrderBy(a => a.Title).ToList(); ret.Childrens = retPlaylists; return ret.GetStream(prov); } } if (PlaylistID > 0) { var playlist = RepoFactory.Playlist.GetByID(PlaylistID); var playlistItems = playlist.PlaylistItems.Split('|'); var vids = new List<Video>(); var ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.Episode, playlist.PlaylistName, true, true, info)); if (!ret.Init()) return new MediaContainer(); //Normal foreach (var item in playlistItems) { try { var episodeID = -1; int.TryParse(item.Split(';')[1], out episodeID); if (episodeID < 0) return new MediaContainer() { ErrorString = "Invalid Episode ID" }; AnimeEpisode e = RepoFactory.AnimeEpisode.GetByID(episodeID); if (e == null) return new MediaContainer() { ErrorString = "Invalid Episode" }; KeyValuePair<AnimeEpisode, Contract_AnimeEpisode> ep = new KeyValuePair<AnimeEpisode, Contract_AnimeEpisode>(e, e.GetUserContract(userid)); if (ep.Value != null && ep.Value.LocalFileCount == 0) continue; AnimeSeries ser = RepoFactory.AnimeSeries.GetByID(ep.Key.AnimeSeriesID); if (ser == null) return new MediaContainer() { ErrorString = "Invalid Series" }; Contract_AnimeSeries con = ser.GetUserContract(userid); if (con == null) return new MediaContainer() { ErrorString = "Invalid Series, Contract not found" }; Video v = Helper.VideoFromAnimeEpisode(prov, con.CrossRefAniDBTvDBV2, ep, userid); if (v != null && v.Medias != null && v.Medias.Count > 0) { Helper.AddInformationFromMasterSeries(v, con, ser.GetPlexContract(userid)); v.Type = "episode"; vids.Add(prov, v, info); if (prov.ConstructFakeIosParent) v.GrandparentKey = prov.Proxyfy(prov.ConstructFakeIosThumb(userid, v.ParentThumb, v.Art ?? v.ParentArt ?? v.GrandparentArt)); v.ParentKey = null; } } catch (Exception e) { //Fast fix if file do not exist, and still is in db. (Xml Serialization of video info will fail on null) } } ret.MediaContainer.RandomizeArt(vids); ret.Childrens = vids; return ret.GetStream(prov); } return new MediaContainer() { ErrorString = "Invalid Playlist" }; }
private MediaContainer GetUnsort(IProvider prov, int userid, BreadCrumbs info) { BaseObject ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.Video, "Unsort", true, true, info)); if (!ret.Init()) return new MediaContainer(); List<Video> dirs = new List<Video>(); List<VideoLocal> vids = RepoFactory.VideoLocal.GetVideosWithoutEpisode(); foreach (VideoLocal v in vids.OrderByDescending(a => a.DateTimeCreated)) { try { Video m = Helper.VideoFromVideoLocal(prov, v, userid); dirs.Add(prov, m, info); m.Thumb = Helper.ConstructSupportImageLink("plex_404.png"); m.ParentThumb = Helper.ConstructSupportImageLink("plex_unsort.png"); m.ParentKey = null; if (prov.ConstructFakeIosParent) m.GrandparentKey = prov.Proxyfy(prov.ConstructFakeIosThumb(userid, m.ParentThumb, m.Art ?? m.ParentArt ?? m.GrandparentArt)); } catch (Exception e) { //Fast fix if file do not exist, and still is in db. (Xml Serialization of video info will fail on null) } } ret.Childrens = dirs; return ret.GetStream(prov); }
//private void FilterExtras(IProvider provider, List<Video> videos) //{ // //foreach (Video v in videos) // //{ // // if (!provider.EnableAnimeTitlesInLists) // // v.Titles = null; // // if (!provider.EnableGenresInLists) // // v.Genres = null; // // if (!provider.EnableRolesInLists) // // v.Roles = null; // //} //} public MediaContainer GetItemsFromSerie(IProvider prov, int userid, string SerieId, BreadCrumbs info, bool nocast) { BaseObject ret = null; enEpisodeType? eptype = null; int serieID; if (SerieId.Contains("_")) { int ept; string[] ndata = SerieId.Split('_'); if (!int.TryParse(ndata[0], out ept)) return new MediaContainer() {ErrorString = "Invalid Serie Id"}; eptype = (enEpisodeType) ept; if (!int.TryParse(ndata[1], out serieID)) return new MediaContainer() { ErrorString = "Invalid Serie Id" }; } else { if (!int.TryParse(SerieId, out serieID)) return new MediaContainer() { ErrorString = "Invalid Serie Id" }; } using (var session = DatabaseFactory.SessionFactory.OpenSession()) { if (serieID == -1) return new MediaContainer() { ErrorString = "Invalid Serie Id" }; ISessionWrapper sessionWrapper = session.Wrap(); AnimeSeries ser = RepoFactory.AnimeSeries.GetByID(serieID); if (ser == null) return new MediaContainer() {ErrorString = "Invalid Series"}; Contract_AnimeSeries cseries = ser.GetUserContract(userid); if (cseries == null) return new MediaContainer() {ErrorString = "Invalid Series, Contract Not Found"}; Video nv = ser.GetPlexContract(userid); Dictionary<AnimeEpisode, Contract_AnimeEpisode> episodes = ser.GetAnimeEpisodes() .ToDictionary(a => a, a => a.GetUserContract(userid)); episodes = episodes.Where(a => a.Value == null || a.Value.LocalFileCount > 0) .ToDictionary(a => a.Key, a => a.Value); if (eptype.HasValue) { ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.Episode, ser.GetSeriesName(), true, true, info)); if (!ret.Init()) return new MediaContainer(); ret.MediaContainer.Art = cseries.AniDBAnime?.AniDBAnime?.DefaultImageFanart.GenArt(); ret.MediaContainer.LeafCount = (cseries.WatchedEpisodeCount + cseries.UnwatchedEpisodeCount).ToString(); ret.MediaContainer.ViewedLeafCount = cseries.WatchedEpisodeCount.ToString(); episodes = episodes.Where(a => a.Key.EpisodeTypeEnum == eptype.Value) .ToDictionary(a => a.Key, a => a.Value); } else { ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.Show, "Types", false, true, info)); if (!ret.Init()) return new MediaContainer(); ret.MediaContainer.Art = cseries.AniDBAnime?.AniDBAnime?.DefaultImageFanart.GenArt(); ret.MediaContainer.LeafCount = (cseries.WatchedEpisodeCount + cseries.UnwatchedEpisodeCount).ToString(); ret.MediaContainer.ViewedLeafCount = cseries.WatchedEpisodeCount.ToString(); List<enEpisodeType> types = episodes.Keys.Select(a => a.EpisodeTypeEnum).Distinct().ToList(); if (types.Count > 1) { List<PlexEpisodeType> eps = new List<PlexEpisodeType>(); foreach (enEpisodeType ee in types) { PlexEpisodeType k2 = new PlexEpisodeType(); PlexEpisodeType.EpisodeTypeTranslated(k2, ee, (AnimeTypes) cseries.AniDBAnime.AniDBAnime.AnimeType, episodes.Count(a => a.Key.EpisodeTypeEnum == ee)); eps.Add(k2); } List<Video> dirs = new List<Video>(); //bool converttoseason = true; foreach (PlexEpisodeType ee in eps.OrderBy(a=>a.Name)) { Video v = new Directory(); v.Art = nv.Art; v.Title = ee.Name; v.AnimeType = "AnimeType"; v.LeafCount = ee.Count.ToString(); v.ChildCount = v.LeafCount; v.ViewedLeafCount = "0"; v.Key = prov.ShortUrl(prov.ConstructSerieIdUrl(userid, ee.Type + "_" + ser.AnimeSeriesID)); v.Thumb = Helper.ConstructSupportImageLink(ee.Image); if ((ee.AnimeType == AnimeTypes.Movie) || (ee.AnimeType == AnimeTypes.OVA)) { v = Helper.MayReplaceVideo(v, ser, cseries, userid, false, nv); } dirs.Add(prov, v, info, false, true); } ret.Childrens = dirs; return ret.GetStream(prov); } } List<Video> vids = new List<Video>(); if ((eptype.HasValue) && (info!=null)) info.ParentKey = info.GrandParentKey; bool hasRoles = false; foreach (KeyValuePair<AnimeEpisode, Contract_AnimeEpisode> ep in episodes) { try { Video v = Helper.VideoFromAnimeEpisode(prov, cseries.CrossRefAniDBTvDBV2, ep, userid); if (v!=null && v.Medias != null && v.Medias.Count > 0) { if (nocast && !hasRoles) hasRoles = true; Helper.AddInformationFromMasterSeries(v, cseries, nv, hasRoles); v.Type = "episode"; vids.Add(prov, v, info); if (prov.ConstructFakeIosParent) v.GrandparentKey = prov.Proxyfy(prov.ConstructFakeIosThumb(userid, v.ParentThumb, v.Art ?? v.ParentArt ?? v.GrandparentArt)); v.ParentKey = null; if (!hasRoles) hasRoles = true; } } catch (Exception e) { //Fast fix if file do not exist, and still is in db. (Xml Serialization of video info will fail on null) } } ret.Childrens = vids.OrderBy(a => int.Parse(a.EpisodeNumber)).ToList(); //FilterExtras(prov,ret.Childrens); return ret.GetStream(prov); } }
private MediaContainer GetFromEpisode(IProvider prov, int userid, string Id, BreadCrumbs info) { int id; if (!int.TryParse(Id, out id)) return new MediaContainer() { ErrorString = "Invalid Episode Id" }; BaseObject ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.Episode, "Episode", true, true, info)); using (var session = DatabaseFactory.SessionFactory.OpenSession()) { List<Video> dirs = new List<Video>(); ISessionWrapper sessionWrapper = session.Wrap(); AnimeEpisode e = RepoFactory.AnimeEpisode.GetByID(id); if (e == null) return new MediaContainer() { ErrorString = "Invalid Episode Id" }; KeyValuePair<AnimeEpisode, Contract_AnimeEpisode> ep = new KeyValuePair<AnimeEpisode, Contract_AnimeEpisode>(e, e.GetUserContract(userid)); if (ep.Value != null && ep.Value.LocalFileCount == 0) return new MediaContainer() { ErrorString = "Episode do not have videolocals" }; AniDB_Episode aep = ep.Key.AniDB_Episode; if (aep == null) return new MediaContainer() { ErrorString = "Invalid Episode AniDB link not found" }; AnimeSeries ser = RepoFactory.AnimeSeries.GetByID(ep.Key.AnimeSeriesID); if (ser == null) return new MediaContainer() { ErrorString = "Invalid Serie" }; AniDB_Anime anime = ser.GetAnime(); Contract_AnimeSeries con = ser.GetUserContract(userid); if (con == null) return new MediaContainer() { ErrorString = "Invalid Serie, Contract not found" }; try { Video v = Helper.VideoFromAnimeEpisode(prov, con.CrossRefAniDBTvDBV2, ep, userid); if (v != null) { Video nv = ser.GetPlexContract(userid); Helper.AddInformationFromMasterSeries(v, con, ser.GetPlexContract(userid), prov is KodiProvider); if (v.Medias != null && v.Medias.Count > 0) { v.Type = "episode"; dirs.EppAdd(prov, v, info, true); if (prov.ConstructFakeIosParent) v.GrandparentKey = prov.Proxyfy(prov.ConstructFakeIosThumb(userid, v.ParentThumb, v.Art ?? v.ParentArt ?? v.GrandparentArt)); v.ParentKey = null; } if (prov.UseBreadCrumbs) v.Key = prov.ShortUrl(ret.MediaContainer.Key); ret.MediaContainer.Art = Helper.ReplaceSchemeHost(nv.Art ?? nv.ParentArt ?? nv.GrandparentArt); } ret.MediaContainer.Childrens = dirs; return ret.GetStream(prov); } catch (Exception ex) { //Fast fix if file do not exist, and still is in db. (Xml Serialization of video info will fail on null) } } return new MediaContainer() { ErrorString = "Episode Not Found" }; }
private MediaContainer GetFromFile(IProvider prov, int userid, string Id, BreadCrumbs info) { int id; if (!int.TryParse(Id, out id)) return new MediaContainer() { ErrorString = "Invalid File Id" }; VideoLocal vi = RepoFactory.VideoLocal.GetByID(id); BaseObject ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.File, Path.GetFileNameWithoutExtension(vi.FileName ?? ""), true, false, info)); Video v2 = Helper.VideoFromVideoLocal(prov, vi, userid); List<Video> dirs = new List<Video>(); dirs.EppAdd(prov, v2, info, true); v2.Thumb = Helper.ConstructSupportImageLink("plex_404.png"); v2.ParentThumb = Helper.ConstructSupportImageLink("plex_unsort.png"); if (prov.ConstructFakeIosParent) v2.GrandparentKey = prov.Proxyfy(prov.ConstructFakeIosThumb(userid, v2.ParentThumb, v2.Art ?? v2.ParentArt ?? v2.GrandparentArt)); v2.ParentKey = null; if (prov.UseBreadCrumbs) v2.Key = prov.ShortUrl(ret.MediaContainer.Key); ret.MediaContainer.Childrens = dirs; return ret.GetStream(prov); }
private MediaContainer GetGroupsOrSubFiltersFromFilter(IProvider prov, int userid, string GroupFilterId, BreadCrumbs info, bool nocast) { //List<Joint> retGroups = new List<Joint>(); try { int groupFilterID; int.TryParse(GroupFilterId, out groupFilterID); using (var session = DatabaseFactory.SessionFactory.OpenSession()) { List<Video> retGroups = new List<Video>(); if (groupFilterID == -1) return new MediaContainer() {ErrorString = "Invalid Group Filter"}; DateTime start = DateTime.Now; GroupFilter gf; gf = RepoFactory.GroupFilter.GetByID(groupFilterID); if (gf == null) return new MediaContainer() { ErrorString = "Invalid Group Filter" }; BaseObject ret = new BaseObject(prov.NewMediaContainer(MediaContainerTypes.Show, gf.GroupFilterName, false, true, info)); if (!ret.Init()) return new MediaContainer(); List<GroupFilter> allGfs = RepoFactory.GroupFilter.GetByParentID(groupFilterID).Where(a => a.InvisibleInClients == 0 && ( (a.GroupsIds.ContainsKey(userid) && a.GroupsIds[userid].Count > 0) || (a.FilterType & (int)GroupFilterType.Directory) == (int)GroupFilterType.Directory) ).ToList(); List<Directory> dirs = new List<Directory>(); foreach (GroupFilter gg in allGfs) { Directory pp = Helper.DirectoryFromFilter(prov, gg, userid); if (pp != null) dirs.Add(prov, pp, info); } if (dirs.Count > 0) { ret.Childrens = dirs.OrderBy(a => a.Title).Cast<Video>().ToList(); return ret.GetStream(prov); } Dictionary<Contract_AnimeGroup, Video> order = new Dictionary<Contract_AnimeGroup, Video>(); if (gf.GroupsIds.ContainsKey(userid)) { // NOTE: The ToList() in the below foreach is required to prevent enumerable was modified exception foreach (AnimeGroup grp in gf.GroupsIds[userid].ToList().Select(a => RepoFactory.AnimeGroup.GetByID(a)).Where(a => a != null)) { Video v = grp.GetPlexContract(userid)?.Clone<Directory>(); if (v != null) { if (v.Group == null) v.Group = grp.GetUserContract(userid); v.GenerateKey(prov, userid); v.Type = "show"; v.Art = Helper.GetRandomFanartFromVideo(v) ?? v.Art; v.Banner = Helper.GetRandomBannerFromVideo(v) ?? v.Banner; if (nocast) v.Roles = null; order.Add(v.Group, v); retGroups.Add(prov, v, info); v.ParentThumb = v.GrandparentThumb = null; } } } ret.MediaContainer.RandomizeArt(retGroups); IEnumerable<Contract_AnimeGroup> grps = retGroups.Select(a => a.Group); grps = gf.SortCriteriaList.Count != 0 ? GroupFilterHelper.Sort(grps, gf) : grps.OrderBy(a => a.GroupName); ret.Childrens = grps.Select(a => order[a]).ToList(); //FilterExtras(prov,ret.Childrens); return ret.GetStream(prov); } } catch (Exception ex) { logger.Error( ex,ex.ToString()); return new MediaContainer() { ErrorString = "System Error, see JMMServer logs for more information" }; } }