/// <summary> Write the nav-bar section /// from the item viewer to the item display html</summary> /// <param name="Output"> Stream to which to write </param> /// <param name="Prototyper"> Current item viewer prototyper </param> /// <param name="CurrentViewer"> Current item viewer which will be used to fill the primary part of the page </param> /// <param name="CurrentItem"> Current item which is being displayed </param> /// <param name="RequestSpecificValues"> Other, request specific values, such as the current mode, user, etc.. </param> /// <param name="Behaviors"> Behaviors for the current view and situation </param> public void Write_HTML(TextWriter Output, iItemViewerPrototyper Prototyper, iItemViewer CurrentViewer, BriefItemInfo CurrentItem, RequestCache RequestSpecificValues, List <HtmlSubwriter_Behaviors_Enum> Behaviors) { // Allow the item/page viewer to show anything in the left navigational menu if (CurrentViewer != null) { CurrentViewer.Write_Left_Nav_Menu_Section(Output, RequestSpecificValues.Tracer); } }
/// <summary> Write the standard item menu to the item display html</summary> /// <param name="Output"> Stream to which to write </param> /// <param name="Prototyper"> Current item viewer prototyper </param> /// <param name="CurrentViewer"> Current item viewer which will be used to fill the primary part of the page </param> /// <param name="CurrentItem"> Current item which is being displayed </param> /// <param name="RequestSpecificValues"> Other, request specific values, such as the current mode, user, etc.. </param> /// <param name="Behaviors"> Behaviors for the current view and situation </param> public void Write_HTML(TextWriter Output, iItemViewerPrototyper Prototyper, iItemViewer CurrentViewer, BriefItemInfo CurrentItem, RequestCache RequestSpecificValues, List <HtmlSubwriter_Behaviors_Enum> Behaviors) { //// First, check that the menu provider was created //if (menuProvider == null) //{ // // Was there some configuration information? // if (UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu != null) // { // if ((UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu.Class == "SobekCM.Library.ItemViewer.Menu.StandardItemMenuProvider") && (String.IsNullOrWhiteSpace(UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu.Assembly))) // menuProvider = new StandardItemMenuProvider(); // else // { // try // { // string assemblyName = UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu.Assembly; // string assemblyFilePath = Engine_ApplicationCache_Gateway.Configuration.Extensions.Get_Assembly(assemblyName); // Assembly dllAssembly = Assembly.LoadFrom(assemblyFilePath); // Type readerWriterType = dllAssembly.GetType(UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu.Class); // menuProvider = (iItemMenuProvider)Activator.CreateInstance(readerWriterType); // } // catch (Exception) // { // // Do nothing here... will be fixed in the next couple lines of code // } // } // } // // Finally, just set to the standard if there was a problem // if (menuProvider == null) //} if (menuProvider == null) { menuProvider = new StandardItemMenuProvider(); } // The item viewer can choose to override the standard item menu if ((!Behaviors.Contains(HtmlSubwriter_Behaviors_Enum.Item_Subwriter_Suppress_Item_Menu)) && (menuProvider != null)) { // Determine the current mode string currentCode = RequestSpecificValues.Current_Mode.ViewerCode ?? String.Empty; if (Prototyper != null) { currentCode = Prototyper.ViewerCode; } // Should the LINKS be included? bool include_links = !Behaviors.Contains(HtmlSubwriter_Behaviors_Enum.Item_Subwriter_Suppress_Item_Menu_Links); // Let the menu provider write the menu menuProvider.Add_Main_Menu(Output, currentCode, RequestSpecificValues.Flags.ItemRestrictedFromUserByIp, RequestSpecificValues.Flags.ItemCheckedOutByOtherUser, CurrentItem, RequestSpecificValues.Current_Mode, RequestSpecificValues.Current_User, include_links, RequestSpecificValues.Tracer); } }
/// <summary> Write the dublin core metadata about the digital resource into the HTML head </summary> /// <param name="Output"> Stream to which to write within the HTML head tag </param> /// <param name="CurrentViewer"> Current item viewer which will be used to fill the primary part of the page </param> /// <param name="CurrentItem"> Current item which is being displayed </param> /// <param name="RequestSpecificValues"> Other, request specific values, such as the current mode, user, etc.. </param> public void Write_Within_HTML_Head(TextWriter Output, iItemViewer CurrentViewer, BriefItemInfo CurrentItem, RequestCache RequestSpecificValues) { // If the item is NULL, do nothing if (CurrentItem == null) { return; } Output.WriteLine(" <link title=\"Dublin Core Metadata Schema\" rel=\"schema.DC\" href=\"http://purl.org/DC/elements/1.1/\" />"); if (!String.IsNullOrEmpty(CurrentItem.Title)) { Output.WriteLine(" <meta name=\"DC.title\" content=\"" + CurrentItem.Title.Replace("\"", "'") + "\" />"); } Output.WriteLine(); }
/// <summary> Write some open graph metadata about the digital resource into the HTML head </summary> /// <param name="Output"> Stream to which to write within the HTML head tag </param> /// <param name="CurrentViewer"> Current item viewer which will be used to fill the primary part of the page </param> /// <param name="CurrentItem"> Current item which is being displayed </param> /// <param name="RequestSpecificValues"> Other, request specific values, such as the current mode, user, etc.. </param> public void Write_Within_HTML_Head(TextWriter Output, iItemViewer CurrentViewer, BriefItemInfo CurrentItem, RequestCache RequestSpecificValues) { // If the item is NULL, do nothing if (CurrentItem == null) { return; } Output.WriteLine(" <link title=\"MODS Metadata Schema\" rel=\"schema.mods\" href=\"http://www.loc.gov/standards/mods/mods.xsd\" />"); if (!String.IsNullOrEmpty(CurrentItem.Title)) { Output.WriteLine(" <meta name=\"mods.title\" content=\"" + CurrentItem.Title.Replace("\"", "'") + "\" />"); } Output.WriteLine(); }
/// <summary> Write the item wordmarks to the item display html</summary> /// <param name="Output"> Stream to which to write </param> /// <param name="Prototyper"> Current item viewer prototyper </param> /// <param name="CurrentViewer"> Current item viewer which will be used to fill the primary part of the page </param> /// <param name="CurrentItem"> Current item which is being displayed </param> /// <param name="RequestSpecificValues"> Other, request specific values, such as the current mode, user, etc.. </param> /// <param name="Behaviors"> Behaviors for the current view and situation </param> public void Write_HTML(TextWriter Output, iItemViewerPrototyper Prototyper, iItemViewer CurrentViewer, BriefItemInfo CurrentItem, RequestCache RequestSpecificValues, List <HtmlSubwriter_Behaviors_Enum> Behaviors) { // Add any wordmarks if ((CurrentItem.Behaviors.Wordmarks != null) && (CurrentItem.Behaviors.Wordmarks.Count > 0)) { Output.WriteLine("\t<div id=\"sbkIsw_Wordmarks\">"); // Compute the URL options which may be needed string url_options = UrlWriterHelper.URL_Options(RequestSpecificValues.Current_Mode); string urlOptions1 = String.Empty; string urlOptions2 = String.Empty; if (url_options.Length > 0) { urlOptions1 = "?" + url_options; urlOptions2 = "&" + url_options; } // Step through each wordmark mentioned in the brief item foreach (string thisIcon in CurrentItem.Behaviors.Wordmarks) { // Look for a match in the dictionary if (UI_ApplicationCache_Gateway.Icon_List.ContainsKey(thisIcon)) { Wordmark_Icon wordmarkInfo = UI_ApplicationCache_Gateway.Icon_List[thisIcon]; Output.WriteLine("\t\t" + wordmarkInfo.HTML.Replace("<%BASEURL%>", RequestSpecificValues.Current_Mode.Base_URL).Replace("<%URLOPTS%>", url_options).Replace("<%?URLOPTS%>", urlOptions1).Replace("<%&URLOPTS%>", urlOptions2)); } } Output.WriteLine("\t</div>"); } //else //{ // Output.WriteLine("\t<div id=\"sbkIsw_NoWordmarks\"> </div>"); //} }
/// <summary> Write the table of contents to the item display html</summary> /// <param name="Output"> Stream to which to write </param> /// <param name="Prototyper"> Current item viewer prototyper </param> /// <param name="CurrentViewer"> Current item viewer which will be used to fill the primary part of the page </param> /// <param name="CurrentItem"> Current item which is being displayed </param> /// <param name="RequestSpecificValues"> Other, request specific values, such as the current mode, user, etc.. </param> /// <param name="Behaviors"> Behaviors for the current view and situation </param> public void Write_HTML(TextWriter Output, iItemViewerPrototyper Prototyper, iItemViewer CurrentViewer, BriefItemInfo CurrentItem, RequestCache RequestSpecificValues, List <HtmlSubwriter_Behaviors_Enum> Behaviors) { // If there is no TOC, just return if ((CurrentItem == null) || (CurrentItem.Images_TOC == null) || (CurrentItem.Images_TOC.Count <= 1)) { return; } string table_of_contents = "TABLE OF CONTENTS"; //string hide_toc = "HIDE TABLE OF CONTENTS"; //string show_toc_text = "SHOW TABLE OF CONTENTS"; if (RequestSpecificValues.Current_Mode.Language == Web_Language_Enum.French) { table_of_contents = "TABLE DES MATIERES"; //hide_toc = "MASQUER L'INDEX"; //show_toc_text = "VOIR L'INDEX"; } if (RequestSpecificValues.Current_Mode.Language == Web_Language_Enum.Spanish) { table_of_contents = "INDICE"; //hide_toc = "ESCONDA INDICE"; //show_toc_text = "MOSTRAR INDICE"; } // Get the item URL string item_url = RequestSpecificValues.Current_Mode.Base_URL + CurrentItem.BibID + "/" + CurrentItem.VID; string viewer_code = RequestSpecificValues.Current_Mode.ViewerCode.Replace(RequestSpecificValues.Current_Mode.Page.ToString(), "#"); if (viewer_code.IndexOf("#") < 0) { viewer_code = "#"; } Output.WriteLine(); Output.WriteLine(" <script type=\"text/javascript\" src=\"" + UI_ApplicationCache_Gateway.Configuration.UI.StaticResources.Jstree_Js + "\"></script>"); Output.WriteLine(" <div class=\"sbkIsw_ShowTocRow\">" + table_of_contents + "</div>"); Output.WriteLine(" <div id=\"tocTree\" class=\"sbkIsw_TocTreeView\">"); Output.WriteLine(" <ul>"); List <BriefItem_TocElement> tocElements = CurrentItem.Images_TOC; int lastLevel = -1; int currentLevel = 0; int nextLevel = 0; int currentSequence = 0; int nextSequence = 0; int selectSequence = Convert.ToInt32(RequestSpecificValues.Current_Mode.Page); //int sequence = 0; for (int i = 0; i < tocElements.Count; i++) { // Get this level and sequence currentLevel = tocElements[i].Level.HasValue ? tocElements[i].Level.Value : 1; currentSequence = tocElements[i].Sequence; // Get the next level and sequence if (i + 1 < tocElements.Count) { nextSequence = tocElements[i + 1].Sequence; } else { nextSequence = selectSequence + 1; } // If this is not the first, then look to close any previous ones if (i > 0) { if (lastLevel == currentLevel) { Output.WriteLine("</li>"); } else if (lastLevel < currentLevel) { Output.WriteLine(); Output.WriteLine(indent(lastLevel) + " <ul>"); } else // lastLevel > currentLevel { Output.WriteLine("</li>"); while (lastLevel > currentLevel) { lastLevel--; Output.WriteLine(indent(lastLevel) + " </ul>"); Output.WriteLine(indent(lastLevel) + "</li>"); } } } // Write this one if (Behaviors.Contains(HtmlSubwriter_Behaviors_Enum.Item_Subwriter_Suppress_TOC_Links)) { Output.Write(indent(currentLevel) + "<li><abbr title=\"" + tocElements[i].Name.Replace("\"", "'") + "\">" + tocElements[i].Shortened_Name); } else { string page_url = item_url + "/" + viewer_code.Replace("#", currentSequence.ToString()); Output.Write(indent(currentLevel) + "<li><a href=\"" + page_url + "\" title=\"" + tocElements[i].Name + "\" >"); // Is this the current location? if ((selectSequence >= currentSequence) && (selectSequence < nextSequence)) { Output.Write("<span class=\"sbkIsw_SelectedTocTreeViewItem\">" + tocElements[i].Shortened_Name + "</span>"); } else { Output.Write(tocElements[i].Shortened_Name); } Output.Write("</a>"); } lastLevel = currentLevel; } // Close this Output.WriteLine("</li>"); while (lastLevel > 1) { lastLevel--; Output.WriteLine(indent(lastLevel) + " </ul>"); Output.WriteLine(indent(lastLevel) + "</li>"); } Output.WriteLine(" </ul>"); Output.WriteLine(" </div>"); Output.WriteLine(); Output.WriteLine(" <script type=\"text/javascript\">"); Output.WriteLine(" $('#tocTree').jstree( {\"core\": { \"themes\":{ \"icons\":false } } }).bind(\"select_node.jstree\", function (e, data) { var href = data.node.a_attr.href; document.location.href = href; });"); Output.WriteLine(" $('#tocTree').jstree('open_all');"); Output.WriteLine(" </script>"); Output.WriteLine(); }
/// <summary> Write the item title bar to the item display html</summary> /// <param name="Output"> Stream to which to write </param> /// <param name="Prototyper"> Current item viewer prototyper </param> /// <param name="CurrentViewer"> Current item viewer which will be used to fill the primary part of the page </param> /// <param name="CurrentItem"> Current item which is being displayed </param> /// <param name="RequestSpecificValues"> Other, request specific values, such as the current mode, user, etc.. </param> /// <param name="Behaviors"> Behaviors for the current view and situation </param> public void Write_HTML(TextWriter Output, iItemViewerPrototyper Prototyper, iItemViewer CurrentViewer, BriefItemInfo CurrentItem, RequestCache RequestSpecificValues, List <HtmlSubwriter_Behaviors_Enum> Behaviors) { // The item viewer can choose to override the standard item titlebar if (!Behaviors.Contains(HtmlSubwriter_Behaviors_Enum.Item_Subwriter_Suppress_Titlebar)) { Output.WriteLine("<!-- Show the title and any other important item information -->"); Output.WriteLine("<section id=\"sbkIsw_Titlebar\" role=\"banner\">"); if (String.Compare(CurrentItem.VID, "00000", StringComparison.OrdinalIgnoreCase) == 0) { string grouptitle = "NO TITLE"; if ((CurrentItem.Behaviors != null) && (!String.IsNullOrWhiteSpace(CurrentItem.Behaviors.GroupTitle))) { grouptitle = CurrentItem.Behaviors.GroupTitle; } if (grouptitle.Length > 125) { Output.WriteLine("\t<h1 itemprop=\"name\"><abbr title=\"" + grouptitle + "\">" + grouptitle.Substring(0, 120) + "..</abbr></h1>"); } else { Output.WriteLine("\t<h1 itemprop=\"name\">" + grouptitle + "</h1>"); } } else { string final_title = CurrentItem.Title ?? "NO TITLE"; // Add the Title if there is one if (final_title.Length > 0) { // Is this a newspaper? bool newspaper = (String.Compare(CurrentItem.Behaviors.GroupType, "NEWSPAPER", StringComparison.OrdinalIgnoreCase) == 0); // Does a custom setting override the default behavior to add a date? if ((newspaper) && (UI_ApplicationCache_Gateway.Settings.Contains_Additional_Setting("Item Viewer.Include Date In Title")) && (UI_ApplicationCache_Gateway.Settings.Get_Additional_Setting("Item Viewer.Include Date In Title").ToUpper() == "NEVER")) { newspaper = false; } // Add the date if it should be added if ((newspaper) && (!String.IsNullOrEmpty(CurrentItem.Web.Date))) { if (final_title.Length > 125) { Output.WriteLine("\t<h1 itemprop=\"name\"><abbr title=\"" + final_title + "\">" + final_title.Substring(0, 120) + "..</abbr> ( " + CurrentItem.Web.Date + " )</h1>"); } else { Output.WriteLine("\t<h1 itemprop=\"name\">" + final_title + " ( " + CurrentItem.Web.Date + " )</h1>"); } } else { if (final_title.Length > 125) { Output.WriteLine("\t<h1 itemprop=\"name\"><abbr title=\"" + final_title + "\">" + final_title.Substring(0, 120) + "..</abbr></h1>"); } else { Output.WriteLine("\t<h1 itemprop=\"name\">" + final_title + "</h1>"); } } } // Add the link if there is one // Links_BriefItemMapper if ((CurrentItem.Web != null) && (!String.IsNullOrEmpty(CurrentItem.Web.Title_Box_Additional_Link))) { // Get the translated TYPE string type = UI_ApplicationCache_Gateway.Translation.Get_Translation((CurrentItem.Web.Title_Box_Additional_Link_Type ?? "Related Link"), RequestSpecificValues.Current_Mode.Language); // Add the link Output.WriteLine("\t" + CurrentItem.Web.Title_Box_Additional_Link + " ( " + type + " )<br />"); } // If there is an ACCESSION number and this is an ARTIFACT, include that at the top BriefItem_DescriptiveTerm accessNumber = CurrentItem.Get_Description("Accession Number"); if ((accessNumber != null) && (accessNumber.Values != null) && (accessNumber.Values.Count > 0)) { Output.WriteLine("\t" + UI_ApplicationCache_Gateway.Translation.Get_Translation("Accession number", RequestSpecificValues.Current_Mode.Language) + " " + accessNumber.Values[0].Value + "<br />"); } } Output.WriteLine("</section>"); Output.WriteLine(); } }
/// <summary> Constructor for a new instance of the Item_HtmlSubwriter class </summary> /// <param name="RequestSpecificValues"> All the necessary, non-global data specific to the current request </param> public Item_HtmlSubwriter( RequestCache RequestSpecificValues) : base(RequestSpecificValues) { // First, check that the menu provider was created if (menuProvider == null) { // Was there some configuration information? if (UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu != null) { if ((UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu.Class == "SobekCM.Library.ItemViewer.Menu.StandardItemMenuProvider") && (String.IsNullOrWhiteSpace(UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu.Assembly))) menuProvider = new StandardItemMenuProvider(); else { try { string assemblyName = UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu.Assembly; string assemblyFilePath = Engine_ApplicationCache_Gateway.Configuration.Extensions.Get_Assembly(assemblyName); Assembly dllAssembly = Assembly.LoadFrom(assemblyFilePath); Type readerWriterType = dllAssembly.GetType(UI_ApplicationCache_Gateway.Configuration.UI.WriterViewers.Items.MainMenu.Class); menuProvider = (iItemMenuProvider)Activator.CreateInstance(readerWriterType); } catch (Exception) { // Do nothing here... will be fixed in the next couple lines of code } } } // Finally, just set to the standard if there was a problem if ( menuProvider == null ) menuProvider = new StandardItemMenuProvider(); } // Add the trace if (RequestSpecificValues.Tracer != null) RequestSpecificValues.Tracer.Add_Trace("Item_HtmlSubwriter.Constructor"); showZoomable = (String.IsNullOrEmpty(UI_ApplicationCache_Gateway.Settings.Servers.JP2ServerUrl)); searchResultsCount = 0; // Determine if the TOC should be shown showToc = false; if (HttpContext.Current.Session["Show TOC"] != null) { Boolean.TryParse(HttpContext.Current.Session["Show TOC"].ToString(), out showToc); } // Try to get the current item currentItem = SobekEngineClient.Items.Get_Item_Brief(RequestSpecificValues.Current_Mode.BibID, RequestSpecificValues.Current_Mode.VID, true, RequestSpecificValues.Tracer); RequestSpecificValues.Current_Mode.VID = currentItem.VID; // Ensure the UI portion has been configured for this user interface ItemViewer_Factory.Configure_Brief_Item_Viewers(currentItem); // Set some flags based on the resource type is_bib_level = (String.Compare(currentItem.VID, "00000", StringComparison.OrdinalIgnoreCase) == 0); is_ead = (String.Compare(currentItem.Type, "EAD", StringComparison.OrdinalIgnoreCase) == 0); // Look for TEI-type item is_tei = false; if ((UI_ApplicationCache_Gateway.Configuration.Extensions != null) && (UI_ApplicationCache_Gateway.Configuration.Extensions.Get_Extension("TEI") != null) && (UI_ApplicationCache_Gateway.Configuration.Extensions.Get_Extension("TEI").Enabled)) { string tei_file = currentItem.Behaviors.Get_Setting("TEI.Source_File"); string xslt_file = currentItem.Behaviors.Get_Setting("TEI.XSLT"); if ((tei_file != null) && (xslt_file != null)) { is_tei = true; } } // Determine if this user can edit this item userCanEditItem = false; if (RequestSpecificValues.Current_User != null) { userCanEditItem = RequestSpecificValues.Current_User.Can_Edit_This_Item(currentItem.BibID, currentItem.Type, currentItem.Behaviors.Source_Institution_Aggregation, currentItem.Behaviors.Holding_Location_Aggregation, currentItem.Behaviors.Aggregation_Code_List ); } // Check that this item is not checked out by another user itemCheckedOutByOtherUser = false; if (currentItem.Behaviors.Single_Use) { if (!Engine_ApplicationCache_Gateway.Checked_List.Check_Out(currentItem.Web.ItemID, HttpContext.Current.Request.UserHostAddress)) { itemCheckedOutByOtherUser = true; } } // Check to see if this is IP restricted restriction_message = String.Empty; if (currentItem.Behaviors.IP_Restriction_Membership > 0) { if (HttpContext.Current != null) { int user_mask = (int)HttpContext.Current.Session["IP_Range_Membership"]; int comparison = currentItem.Behaviors.IP_Restriction_Membership & user_mask; if (comparison == 0) { itemRestrictedFromUserByIp = true; int restriction = currentItem.Behaviors.IP_Restriction_Membership; int restriction_counter = 1; while (restriction % 2 != 1) { restriction = restriction >> 1; restriction_counter++; } if (Engine_ApplicationCache_Gateway.IP_Restrictions[restriction_counter] != null) restriction_message = Engine_ApplicationCache_Gateway.IP_Restrictions[restriction_counter].Item_Restricted_Statement; else restriction_message = "Restricted Item"; } } } // If this item is restricted by IP than alot of the upcoming code is unnecessary if ((RequestSpecificValues.Current_User != null) && ((!itemRestrictedFromUserByIp) || (userCanEditItem) || (RequestSpecificValues.Current_User.Is_Internal_User))) { #region Region suppressed currently - was for adding feature to a map image? //// Searching for EAD/EAC type items is different from others //if (!isEadTypeItem) //{ // // If there is a coordinate search, and polygons, do that // // GEt the geospatial metadata module // GeoSpatial_Information geoInfo = RequestSpecificValues.Current_Item.Get_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY) as GeoSpatial_Information; // if ((geoInfo != null) && (geoInfo.hasData)) // { // if ((currentMode.Coordinates.Length > 0) && (geoInfo.Polygon_Count > 1)) // { // // Determine the coordinates in this search // string[] splitter = currentMode.Coordinates.Split(",".ToCharArray()); // if (((splitter.Length > 1) && (splitter.Length < 4)) || ((splitter.Length == 4) && (splitter[2].Length == 0) && (splitter[3].Length == 0))) // { // Double.TryParse(splitter[0], out providedMaxLat); // Double.TryParse(splitter[1], out providedMaxLong); // providedMinLat = providedMaxLat; // providedMinLong = providedMaxLong; // } // else if (splitter.Length >= 4) // { // Double.TryParse(splitter[0], out providedMaxLat); // Double.TryParse(splitter[1], out providedMaxLong); // Double.TryParse(splitter[2], out providedMinLat); // Double.TryParse(splitter[3], out providedMinLong); // } // // Now, if there is length, determine the count of results // searchResultsString = new List<string>(); // if (searchResultsString.Count > 0) // { // searchResultsCount = searchResultsString.Count; // // Also, look to see where the current point lies in the matching, current polygon // if ((providedMaxLong == providedMinLong) && (providedMaxLat == providedMinLat)) // { // foreach (Coordinate_Polygon itemPolygon in geoInfo.Polygons) // { // // Is this the current page? // if (itemPolygon.Page_Sequence == currentMode.Page) // { // if (itemPolygon.is_In_Bounding_Box(providedMaxLat, providedMaxLong)) // { // searchMatchOnThisPage = true; // ReadOnlyCollection<Coordinate_Point> boundingBox = itemPolygon.Bounding_Box; // featureYRatioLocation = Math.Abs(((providedMaxLat - boundingBox[0].Latitude)/(boundingBox[0].Latitude - boundingBox[1].Latitude))); // featureXRatioLocation = Math.Abs(((providedMaxLong - boundingBox[0].Longitude)/(boundingBox[0].Longitude - boundingBox[1].Longitude))); // } // } // } // } // } // } // } //} #endregion // Is this a postback? if (RequestSpecificValues.Current_Mode.isPostBack) { // Handle any actions from standard user action (i.e., email, add to bookshelf, etc. ) if (HttpContext.Current.Request.Form["item_action"] != null) { string action = HttpContext.Current.Request.Form["item_action"].ToLower().Trim(); if (action == "email") { string address = HttpContext.Current.Request.Form["email_address"].Replace(";", ",").Trim(); string comments = HttpContext.Current.Request.Form["email_comments"].Trim(); string format = HttpContext.Current.Request.Form["email_format"].Trim().ToUpper(); if (address.Length > 0) { // Determine the email format bool is_html_format = format != "TEXT"; // CC: the user, unless they are already on the list string cc_list = RequestSpecificValues.Current_User.Email; if (address.ToUpper().IndexOf(RequestSpecificValues.Current_User.Email.ToUpper()) >= 0) cc_list = String.Empty; // Send the email HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", !Item_Email_Helper.Send_Email(address, cc_list, comments, RequestSpecificValues.Current_User.Full_Name, RequestSpecificValues.Current_Mode.Instance_Abbreviation, currentItem, is_html_format, HttpContext.Current.Items["Original_URL"].ToString(), RequestSpecificValues.Current_User.UserID) ? "Error encountered while sending email" : "Your email has been sent"); HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); RequestSpecificValues.Current_Mode.Request_Completed = true; return; } } if (action == "add_item") { string usernotes = HttpContext.Current.Request.Form["add_notes"].Trim(); string foldername = HttpContext.Current.Request.Form["add_bookshelf"].Trim(); bool open_bookshelf = HttpContext.Current.Request.Form["open_bookshelf"] != null; if (SobekCM_Database.Add_Item_To_User_Folder(RequestSpecificValues.Current_User.UserID, foldername, currentItem.BibID, currentItem.VID, 0, usernotes, RequestSpecificValues.Tracer)) { RequestSpecificValues.Current_User.Add_Bookshelf_Item(currentItem.BibID, currentItem.VID); // Ensure this user folder is not sitting in the cache CachedDataManager.Remove_User_Folder_Browse(RequestSpecificValues.Current_User.UserID, foldername, RequestSpecificValues.Tracer); HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", "Item was saved to your bookshelf."); if (open_bookshelf) { HttpContext.Current.Session.Add("ON_LOAD_WINDOW", "?m=lmfl" + foldername.Replace("\"", "%22").Replace("'", "%27").Replace("=", "%3D").Replace("&", "%26") + "&vp=1"); } } else { HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", "ERROR encountered while trying to save to your bookshelf."); } HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); RequestSpecificValues.Current_Mode.Request_Completed = true; return; } if (action == "remove") { if (SobekCM_Database.Delete_Item_From_User_Folders(RequestSpecificValues.Current_User.UserID, currentItem.BibID, currentItem.VID, RequestSpecificValues.Tracer)) { RequestSpecificValues.Current_User.Remove_From_Bookshelves(currentItem.BibID, currentItem.VID); CachedDataManager.Remove_All_User_Folder_Browses(RequestSpecificValues.Current_User.UserID, RequestSpecificValues.Tracer); HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", "Item was removed from your bookshelves."); } else { HttpContext.Current.Session.Add("ON_LOAD_MESSAGE", "ERROR encountered while trying to remove item from your bookshelves."); } HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); RequestSpecificValues.Current_Mode.Request_Completed = true; return; } if (action.IndexOf("add_tag") == 0) { int tagid = -1; if (action.Replace("add_tag", "").Length > 0) { tagid = Convert.ToInt32(action.Replace("add_tag_", "")); } string description = HttpContext.Current.Request.Form["add_tag"].Trim(); int new_tagid = SobekCM_Database.Add_Description_Tag(RequestSpecificValues.Current_User.UserID, tagid, currentItem.Web.ItemID, description, RequestSpecificValues.Tracer); if (new_tagid > 0) { currentItem.Web.Add_User_Tag(RequestSpecificValues.Current_User.UserID, RequestSpecificValues.Current_User.Full_Name, description, DateTime.Now, new_tagid); RequestSpecificValues.Current_User.Has_Descriptive_Tags = true; } HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); RequestSpecificValues.Current_Mode.Request_Completed = true; return; } if (action.IndexOf("delete_tag") == 0) { if (action.Replace("delete_tag", "").Length > 0) { int tagid = Convert.ToInt32(action.Replace("delete_tag_", "")); if (currentItem.Web.Delete_User_Tag(tagid, RequestSpecificValues.Current_User.UserID)) { SobekCM_Database.Delete_Description_Tag(tagid, RequestSpecificValues.Tracer); } } HttpContext.Current.Response.Redirect(HttpContext.Current.Items["Original_URL"].ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); RequestSpecificValues.Current_Mode.Request_Completed = true; return; } } } // Handle any request from the internal header for the item if ((HttpContext.Current != null) && (HttpContext.Current.Request.Form["internal_header_action"] != null) && (RequestSpecificValues.Current_User != null)) { // Pull the action value string internalHeaderAction = HttpContext.Current.Request.Form["internal_header_action"].Trim(); // Was this to save the item comments? if (internalHeaderAction == "save_comments") { string new_comments = HttpContext.Current.Request.Form["intheader_internal_notes"].Trim(); if (SobekCM_Item_Database.Save_Item_Internal_Comments(currentItem.Web.ItemID, new_comments)) currentItem.Web.Internal_Comments = new_comments; } } } // Set the code for bib level mets to show the volume tree by default if ((is_bib_level) && (String.IsNullOrEmpty(RequestSpecificValues.Current_Mode.ViewerCode))) { RequestSpecificValues.Current_Mode.ViewerCode = "allvolumes1"; } // If there is a file name included, look for the sequence of that file if (!String.IsNullOrEmpty(RequestSpecificValues.Current_Mode.Page_By_FileName)) { int page_sequence = currentItem.Page_Sequence_By_FileName(RequestSpecificValues.Current_Mode.Page_By_FileName); if (page_sequence > 0) { RequestSpecificValues.Current_Mode.ViewerCode = page_sequence.ToString(); RequestSpecificValues.Current_Mode.Page = (ushort)page_sequence; } } // Get the valid viewer code RequestSpecificValues.Tracer.Add_Trace("Item_HtmlSubwriter.Add_Controls", "Getting the appropriate item viewer"); prototyper = ItemViewer_Factory.Get_Item_Viewer(currentItem, RequestSpecificValues.Current_Mode.ViewerCode); if (( prototyper != null ) && ( prototyper.Has_Access(currentItem, RequestSpecificValues.Current_User, !String.IsNullOrEmpty(restriction_message)))) pageViewer = prototyper.Create_Viewer(currentItem, RequestSpecificValues.Current_User, RequestSpecificValues.Current_Mode, RequestSpecificValues.Tracer ); else { // Since the user did not have access to THAT viewer, try to find one that he does have access to if (currentItem.UI.Viewers_By_Priority != null) { foreach (string viewerType in currentItem.UI.Viewers_By_Priority) { prototyper = ItemViewer_Factory.Get_Viewer_By_ViewType(viewerType); if ((prototyper != null) && (prototyper.Has_Access(currentItem, RequestSpecificValues.Current_User, !String.IsNullOrEmpty(restriction_message)))) { pageViewer = prototyper.Create_Viewer(currentItem, RequestSpecificValues.Current_User, RequestSpecificValues.Current_Mode, RequestSpecificValues.Tracer); break; } } } } // If execution should end, do it now if (RequestSpecificValues.Current_Mode.Request_Completed) return; // If there were NO views, then pageViewer could be null if (pageViewer == null) pageViewer = new NoViews_ItemViewer(); RequestSpecificValues.Tracer.Add_Trace("Html_MainWriter.Add_Controls", "Created " + pageViewer.GetType().ToString().Replace("SobekCM.Library.ItemViewer.Viewers.", "")); // Assign the rest of the information, if a page viewer was created behaviors = new List<HtmlSubwriter_Behaviors_Enum>(); if (pageViewer != null) { // Get the list of any special behaviors pageViewerBehaviors = pageViewer.ItemViewer_Behaviors; if ( pageViewerBehaviors != null ) behaviors.AddRange(pageViewerBehaviors); else pageViewerBehaviors = new List<HtmlSubwriter_Behaviors_Enum>(); } else { pageViewerBehaviors = new List<HtmlSubwriter_Behaviors_Enum>(); } // ALways suppress the banner and skip to main content if (behaviors == null) behaviors = new List<HtmlSubwriter_Behaviors_Enum>(); if (!behaviors.Contains(HtmlSubwriter_Behaviors_Enum.Suppress_Banner)) behaviors.Add(HtmlSubwriter_Behaviors_Enum.Suppress_Banner); if (!behaviors.Contains(HtmlSubwriter_Behaviors_Enum.Include_Skip_To_Main_Content_Link)) behaviors.Add(HtmlSubwriter_Behaviors_Enum.Include_Skip_To_Main_Content_Link); //if ((searchMatchOnThisPage) && ((PageViewer.ItemViewer_Type == ItemViewer_Type_Enum.JPEG) || (PageViewer.ItemViewer_Type == ItemViewer_Type_Enum.JPEG2000))) //{ // if (PageViewer.ItemViewer_Type == ItemViewer_Type_Enum.JPEG2000) // { // Aware_JP2_ItemViewer jp2_viewer = (Aware_JP2_ItemViewer) PageViewer; // jp2_viewer.Add_Feature("Red", "DrawEllipse", ((int) (featureXRatioLocation*jp2_viewer.Width)), ((int) (featureYRatioLocation*jp2_viewer.Height)), 800, 800); // } //} }