/// <summary> Gets a valid viewer code for this item, based on the requested viewer code and page </summary> /// <param name="viewer_code"> Requested viewer code </param> /// <param name="page"> Requested page </param> /// <returns> Valid viewer code and page </returns> /// <remarks> The requested viewer code and page are validated, and if valid, returned. Otherwise, the closest valid viewer code to the one requested is returned. </remarks> public string Get_Valid_Viewer_Code(string viewer_code, int page) { string lower_code = viewer_code.ToLower(); // If this is 'RES' for restricted, taht is always valid if (viewer_code == "res") { return("res"); } // Is this in the item level viewer list? if (lower_code.Length > 0) { if (behaviors.Views_Count > 0) { foreach (View_Object thisView in behaviors.Views) { foreach (string thisCode in thisView.Viewer_Codes) { if (thisCode.ToLower() == lower_code) { return(lower_code); } } } } // Check if this is a Related Items page, which also allows paging if (lower_code.IndexOf(View_Object.Viewer_Code_By_Type(View_Enum.RELATED_IMAGES)[0]) >= 0) { int viewer_page = 0; try { string try_page_get = lower_code.Replace(View_Object.Viewer_Code_By_Type(View_Enum.RELATED_IMAGES)[0], "").Trim(); if (try_page_get.Length > 0) { viewer_page = Convert.ToInt32(try_page_get); } return(View_Object.Viewer_Code_By_Type(View_Enum.RELATED_IMAGES)[0]); } catch { } } // Check if this is the quality conrtols page, which also allows paging if (lower_code.IndexOf(View_Object.Viewer_Code_By_Type(View_Enum.QUALITY_CONTROL)[0]) >= 0) { int viewer_page = 0; try { string try_page_get = lower_code.Replace(View_Object.Viewer_Code_By_Type(View_Enum.QUALITY_CONTROL)[0], "").Trim(); if (try_page_get.Length > 0) { viewer_page = Convert.ToInt32(try_page_get); } return(View_Object.Viewer_Code_By_Type(View_Enum.QUALITY_CONTROL)[0]); } catch { } } // Check each page if (viewer_to_file != null) { if (viewer_to_file.ContainsKey(lower_code)) { return(lower_code); } } } // No match, so just return the default, if there is one if ((viewer_code.Length == 0) && (behaviors.Default_View != null) && (behaviors.Default_View.Viewer_Codes.Length > 0)) { return(behaviors.Default_View.Viewer_Codes[0]); } // If embedded video is present, show that. if (behaviors.Views_Count > 0) { foreach (View_Object thisView in behaviors.Views) { if (thisView.View_Type == View_Enum.YOUTUBE_VIDEO) { return(thisView.Viewer_Codes[0]); } if (thisView.View_Type == View_Enum.EMBEDDED_VIDEO) { return(thisView.Viewer_Codes[0]); } } } // If there are no pages, return the DEFAULT viewer, or FULL CITATION code if ((viewer_to_file == null) || (viewer_to_file.Count == 0)) { if ((behaviors.Default_View != null) && (behaviors.Default_View.Viewer_Codes.Length > 0)) { return(behaviors.Default_View.Viewer_Codes[0]); } else { return(View_Object.Viewer_Code_By_Type(View_Enum.CITATION)[0]); } } if (behaviors.Item_Level_Page_Views_Count == 0) { behaviors.Add_Item_Level_Page_View(new View_Object(View_Enum.JPEG2000)); behaviors.Add_Item_Level_Page_View(new View_Object(View_Enum.JPEG)); } // Return the first viewer code for this page if ((pages_by_seq != null) && (behaviors.Item_Level_Page_Views_Count > 0) && (pages_by_seq.Count >= page) && (pages_by_seq[page - 1].Files.Count > 0)) { foreach (View_Object itemTaggedView in behaviors.Item_Level_Page_Views) { foreach (SobekCM_File_Info thisFile in pages_by_seq[page - 1].Files) { if (thisFile.Get_Viewer() != null) { if (thisFile.Get_Viewer().View_Type == itemTaggedView.View_Type) { return(page.ToString() + thisFile.Get_Viewer().Viewer_Codes[0]); } } } } } // Look for FLASH or PDF views if no page was requested if (behaviors.Views_Count > 0) { foreach (View_Object thisView in behaviors.Views) { if ((thisView.View_Type == View_Enum.PDF) || (thisView.View_Type == View_Enum.FLASH)) { return(thisView.Viewer_Codes[0]); } } } // Return first page viewer code if ((pages_by_seq != null) && (behaviors.Item_Level_Page_Views_Count > 0) && (pages_by_seq.Count > 0) && (pages_by_seq[0].Files.Count > 0)) { foreach (View_Object itemTaggedView in behaviors.Item_Level_Page_Views) { foreach (SobekCM_File_Info thisFile in pages_by_seq[0].Files) { if (thisFile.Get_Viewer() != null) { if (thisFile.Get_Viewer().View_Type == itemTaggedView.View_Type) { return("1" + thisFile.Get_Viewer().Viewer_Codes[0]); } } } } } return(View_Object.Viewer_Code_By_Type(View_Enum.CITATION)[0]); }
/// <summary> Gets a valid viewer code for this item, based on the requested viewer code and page </summary> /// <param name="viewer_code"> Requested viewer code </param> /// <param name="page"> Requested page </param> /// <returns> Valid viewer code and page </returns> /// <remarks> The requested viewer code and page are validated, and if valid, returned. Otherwise, the closest valid viewer code to the one requested is returned. </remarks> public string Get_Valid_Viewer_Code(string viewer_code, int page) { string lower_code = viewer_code.ToLower(); // If this is 'RES' for restricted, taht is always valid if (viewer_code == "res") { return("res"); } // Is this in the item level viewer list? if (lower_code.Length > 0) { if (behaviors.Views_Count > 0) { foreach (View_Object thisView in behaviors.Views) { foreach (string thisCode in thisView.Viewer_Codes) { if (thisCode.ToLower() == lower_code) { return(lower_code); } } } } // Check if this is a Related Items page, which also allows paging if (lower_code.IndexOf(View_Object.Viewer_Code_By_Type(View_Enum.RELATED_IMAGES)[0]) >= 0) { int viewer_page = 0; try { string try_page_get = lower_code.Replace(View_Object.Viewer_Code_By_Type(View_Enum.RELATED_IMAGES)[0], "").Trim(); if (try_page_get.Length > 0) { viewer_page = Convert.ToInt32(try_page_get); } return(View_Object.Viewer_Code_By_Type(View_Enum.RELATED_IMAGES)[0]); } catch { } } // Check if this is the quality conrtols page, which also allows paging if (lower_code.IndexOf(View_Object.Viewer_Code_By_Type(View_Enum.QUALITY_CONTROL)[0]) >= 0) { int viewer_page = 0; try { string try_page_get = lower_code.Replace(View_Object.Viewer_Code_By_Type(View_Enum.QUALITY_CONTROL)[0], "").Trim(); if (try_page_get.Length > 0) { viewer_page = Convert.ToInt32(try_page_get); } return(View_Object.Viewer_Code_By_Type(View_Enum.QUALITY_CONTROL)[0]); } catch { } } // Check each page if (viewer_to_file != null) { if (viewer_to_file.ContainsKey(lower_code)) { return(lower_code); } else { // TODO: This should not be hardcoded for JPEG, ZOOMABLE, and then TEXT priority. This should come from the item viewer priority table in the database. int testInt; if (Int32.TryParse(lower_code, out testInt)) { if (viewer_to_file.ContainsKey(lower_code + "j")) { return(lower_code + "j"); } if (viewer_to_file.ContainsKey(lower_code + "x")) { return(lower_code + "x"); } if (viewer_to_file.ContainsKey(lower_code + "t")) { return(lower_code + "t"); } } } } } // No match, so just return the default, if there is one if ((viewer_code.Length == 0) && (behaviors.Default_View != null) && (behaviors.Default_View.Viewer_Codes.Length > 0)) { if (behaviors.Item_Level_Page_Views.Contains(behaviors.Default_View)) { foreach (SobekCM_File_Info thisFile in pages_by_seq[page - 1].Files) { if (thisFile.Get_Viewer() != null) { if (thisFile.Get_Viewer().View_Type == behaviors.Default_View.View_Type) { return(page.ToString() + thisFile.Get_Viewer().Viewer_Codes[0]); } } } // If no matching item level page view was found matching the view type, // default to any of the item level page views foreach (View_Object itemTaggedView in behaviors.Item_Level_Page_Views) { foreach (SobekCM_File_Info thisFile in pages_by_seq[page - 1].Files) { if (thisFile.Get_Viewer() != null) { if (thisFile.Get_Viewer().View_Type == itemTaggedView.View_Type) { return(page.ToString() + thisFile.Get_Viewer().Viewer_Codes[0]); } } } } } else { return(behaviors.Default_View.Viewer_Codes[0]); } } // Return first page viewer code if ((pages_by_seq != null) && (behaviors.Item_Level_Page_Views_Count > 0) && (pages_by_seq.Count > 0) && (pages_by_seq[0].Files.Count > 0)) { foreach (View_Object itemTaggedView in behaviors.Item_Level_Page_Views) { foreach (SobekCM_File_Info thisFile in pages_by_seq[0].Files) { if (thisFile.Get_Viewer() != null) { if (thisFile.Get_Viewer().View_Type == itemTaggedView.View_Type) { return("1" + thisFile.Get_Viewer().Viewer_Codes[0]); } } } } } return(View_Object.Viewer_Code_By_Type(View_Enum.CITATION)[0]); }