/// <summary> Add the HTML to be displayed below the search box </summary> /// <param name="Output"> Textwriter to write the HTML for this viewer</param> /// <param name="Tracer"> Trace object keeps a list of each method executed and important milestones in rendering</param> /// <remarks> This adds the search tips by calling the base method <see cref="abstractAggregationViewer.Add_Simple_Search_Tips"/> </remarks> public override void Add_Secondary_HTML(TextWriter Output, Custom_Tracer Tracer) { if (Tracer != null) { Tracer.Add_Trace("Tiles_Home_AggregationViewer.Add_Secondary_HTML", "Add the entire tiled home page"); } const string VARIES_STRING = "<span style=\"color:Gray\">( varies )</span>"; Output.WriteLine("<div id=\"sbkThav_TileContainer\">"); //Add the necessary JavaScript, CSS files Output.WriteLine(" <script type=\"text/javascript\" src=\"" + Static_Resources_Gateway.Sobekcm_Thumb_Results_Js + "\"></script>"); int title_count = 1; foreach (Tiles_Home_Single_Tile thisTile in selectedTiles) { // Do we have metadat for this? Database_Item_Result itemResult = null; Database_Title_Result titleResult = null; if (tileMetadata != null) { // Find the matching tile, by BibID foreach (Database_Title_Result metadataTitle in tileMetadata.Results) { // Matching BibID? if (String.Compare(metadataTitle.BibID, thisTile.BibID, StringComparison.OrdinalIgnoreCase) == 0) { // Only continue, if we have items if (metadataTitle.Items != null) { // Title matched titleResult = metadataTitle; // Look for matching VID foreach (Database_Item_Result metadataItem in metadataTitle.Items) { // Matching VID? if (String.Compare(metadataItem.VID, thisTile.VID, StringComparison.OrdinalIgnoreCase) == 0) { itemResult = metadataItem; break; } } // If no match by VID, use whatever is in there if (itemResult == null) { itemResult = titleResult.Items[0]; } } } } } // Write the tile Output.WriteLine(" <div class=\"sbkThav_Tile\">"); Output.WriteLine(" <a href=\"" + thisTile.LinkUri + "\">"); Output.WriteLine(" <img id=\"sbkThumbnailImg" + title_count + "\" src=\"" + thisTile.JpegUri + "\" />"); Output.WriteLine(" </a>"); // Was metadta found? if ((titleResult != null) && (itemResult != null)) { //Add the hidden item values for display in the tooltip // Output.WriteLine("<tr style=\"display:none;\"><td colspan=\"100%\"><div id=\"descThumbnail" + title_count + "\" >"); Output.WriteLine("<div id=\"descThumbnail" + title_count + "\" style=\"display:none;\" >"); // Add each element to this table Output.WriteLine("\t\t\t<table cellspacing=\"0px\">"); Output.WriteLine( "\t\t\t\t<tr style=\"height:40px;\" valign=\"middle\"><td colspan=\"3\"><span class=\"qtip_BriefTitle\" style=\"color: #a5a5a5;font-weight: bold;font-size:13px;\">" + itemResult.Title.Replace("<", "<").Replace(">", ">") + "</span> </td></tr><br/>"); Output.WriteLine("<tr><td colspan=\"100%\"><br/></td></tr>"); if ((!String.IsNullOrEmpty(titleResult.Primary_Identifier_Type)) && (!String.IsNullOrEmpty(titleResult.Primary_Identifier))) { Output.WriteLine("\t\t\t\t<tr><td>" + UI_ApplicationCache_Gateway.Translation.Get_Translation(titleResult.Primary_Identifier_Type, RequestSpecificValues.Current_Mode.Language) + ":</td><td> </td><td>" + HttpUtility.HtmlDecode(titleResult.Primary_Identifier) + "</td></tr>"); } if ((RequestSpecificValues.Current_User != null) && (RequestSpecificValues.Current_User.LoggedOn) && (RequestSpecificValues.Current_User.Is_Internal_User)) { Output.WriteLine("\t\t\t\t<tr><td>BibID:</td><td> </td><td>" + titleResult.BibID + "</td></tr>"); if (titleResult.OPAC_Number > 1) { Output.WriteLine("\t\t\t\t<tr><td>OPAC:</td><td> </td><td>" + titleResult.OPAC_Number + "</td></tr>"); } if (titleResult.OCLC_Number > 1) { Output.WriteLine("\t\t\t\t<tr><td>OCLC:</td><td> </td><td>" + titleResult.OCLC_Number + "</td></tr>"); } } for (int i = 0; i < tileMetadata.Metadata_Labels.Count; i++) { string field = tileMetadata.Metadata_Labels[i]; // Somehow the metadata for this item did not fully save in the database. Break out, rather than // throw the exception if ((titleResult.Metadata_Display_Values == null) || (titleResult.Metadata_Display_Values.Length <= i)) { break; } string value = titleResult.Metadata_Display_Values[i]; Metadata_Search_Field thisField = UI_ApplicationCache_Gateway.Settings.Metadata_Search_Field_By_Name(field); string display_field = string.Empty; if (thisField != null) { display_field = thisField.Display_Term; } if (display_field.Length == 0) { display_field = field.Replace("_", " "); } if (value == "*") { Output.WriteLine("\t\t\t\t<tr><td>" + UI_ApplicationCache_Gateway.Translation.Get_Translation(display_field, RequestSpecificValues.Current_Mode.Language) + ":</td><td> </td><td>" + HttpUtility.HtmlDecode(VARIES_STRING) + "</td></tr>"); } else if (value.Trim().Length > 0) { if (value.IndexOf("|") > 0) { bool value_found = false; string[] value_split = value.Split("|".ToCharArray()); foreach (string thisValue in value_split) { if (thisValue.Trim().Trim().Length > 0) { if (!value_found) { Output.WriteLine("\t\t\t\t<tr valign=\"top\"><td>" + UI_ApplicationCache_Gateway.Translation.Get_Translation(display_field, RequestSpecificValues.Current_Mode.Language) + ":</td><td> </td><td>"); value_found = true; } Output.Write(HttpUtility.HtmlDecode(thisValue) + "<br />"); } } if (value_found) { Output.WriteLine("</td></tr>"); } } else { Output.WriteLine("\t\t\t\t<tr><td>" + UI_ApplicationCache_Gateway.Translation.Get_Translation(display_field, RequestSpecificValues.Current_Mode.Language) + ":</td><td> </td><td>" + HttpUtility.HtmlDecode(value) + "</td></tr>"); } } } Output.WriteLine("\t\t\t</table>"); Output.WriteLine(" </div>"); } Output.WriteLine(" </div>"); title_count++; } Output.WriteLine("</div>"); // If there are sub aggregations here, show them if (ViewBag.Hierarchy_Object.Children_Count > 0) { Output.WriteLine("<div class=\"SobekText\">"); Aggregation_HtmlSubwriter.Add_SubCollection_Buttons(Output, RequestSpecificValues, ViewBag.Hierarchy_Object); Output.WriteLine("</div>"); } RequestSpecificValues.Current_Mode.Aggregation = ViewBag.Hierarchy_Object.Code; }
/// <summary> Perform all the work of adding to the response stream back to the web user </summary> /// <param name="Main_Place_Holder"> Place holder is used to add more complex server-side objects during execution</param> /// <param name="Tracer"> Trace object keeps a list of each method executed and important milestones in rendering</param> /// <remarks> Since this class writes all the output directly to the response stream, this method simply returns, without doing anything</remarks> public override void Add_Controls(PlaceHolder Main_Place_Holder, Custom_Tracer Tracer) { // If execution should end, do it now if (RequestSpecificValues.Current_Mode.Request_Completed) { return; } Tracer.Add_Trace("Html_MainWriter.Add_Controls", "Adding any necessary controls to the placeholders on the page"); // Render HTML and add controls depending on the current mode switch (RequestSpecificValues.Current_Mode.Mode) { #region Start adding HTML and controls for SIMPLE WEB CONTENT TEXT mode case Display_Mode_Enum.Simple_HTML_CMS: // Add any necessary controls ((Web_Content_HtmlSubwriter)subwriter).Add_Controls(Main_Place_Holder, Tracer); break; #endregion #region Start adding HTML and controls for MY SOBEK mode case Display_Mode_Enum.My_Sobek: MySobek_HtmlSubwriter mySobekWriter = subwriter as MySobek_HtmlSubwriter; if (mySobekWriter != null) { // Add any necessary controls mySobekWriter.Add_Controls(Main_Place_Holder, Tracer); } break; #endregion #region Start adding HTML and controls for ADMINISTRATIVE mode case Display_Mode_Enum.Administrative: Admin_HtmlSubwriter adminWriter = subwriter as Admin_HtmlSubwriter; if (adminWriter != null) { bool add_footer = false; // If the my sobek writer contains pop up forms, add the header here first if ((adminWriter.Contains_Popup_Forms) && (!adminWriter.Subwriter_Behaviors.Contains(HtmlSubwriter_Behaviors_Enum.MySobek_Subwriter_Mimic_Item_Subwriter))) { add_footer = true; StringBuilder header_builder = new StringBuilder("Html_Mainwriter:Line415"); StringWriter header_writer = new StringWriter(header_builder); Display_Header(header_writer, Tracer); LiteralControl header_literal = new LiteralControl(header_builder.ToString()); Main_Place_Holder.Controls.Add(header_literal); } // Add any necessary controls adminWriter.Add_Controls(Main_Place_Holder, Tracer); // Finally, add the footer if (add_footer) { StringBuilder footer_builder = new StringBuilder(); StringWriter footer_writer = new StringWriter(footer_builder); Display_Footer(footer_writer, Tracer); LiteralControl footer_literal = new LiteralControl(footer_builder.ToString()); Main_Place_Holder.Controls.Add(footer_literal); } } break; #endregion #region Start adding HTML and add controls for RESULTS mode case Display_Mode_Enum.Results: Search_Results_HtmlSubwriter searchResultsSub = subwriter as Search_Results_HtmlSubwriter; if (searchResultsSub != null) { // Make sure the corresponding 'search' is the latest RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Search; HttpContext.Current.Session["LastSearch"] = UrlWriterHelper.Redirect_URL(RequestSpecificValues.Current_Mode); RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Results; // Add the controls searchResultsSub.Add_Controls(Main_Place_Holder, Tracer, null); } break; #endregion #region Add HTML and controls for PUBLIC FOLDER mode case Display_Mode_Enum.Public_Folder: Public_Folder_HtmlSubwriter publicFolderSub = subwriter as Public_Folder_HtmlSubwriter; if (publicFolderSub != null) { // Also try to add any controls publicFolderSub.Add_Controls(Main_Place_Holder, Tracer, null); } break; #endregion #region Add HTML and controls for COLLECTION VIEWS case Display_Mode_Enum.Search: case Display_Mode_Enum.Aggregation: Aggregation_HtmlSubwriter aggregationSub = subwriter as Aggregation_HtmlSubwriter; if (aggregationSub != null) { // Also try to add any controls aggregationSub.Add_Controls(Main_Place_Holder, Tracer); } break; #endregion #region Start adding HTML and add controls for ITEM DISPLAY mode case Display_Mode_Enum.Item_Display: Item_HtmlSubwriter itemWriter = subwriter as Item_HtmlSubwriter; if (itemWriter != null) { // Add the TOC section Tracer.Add_Trace("Html_MainWriter.Add_Controls", "Allowing item viewer to add controls to main PlaceHolder"); // Add the main viewer section itemWriter.Add_Main_Viewer_Section(Main_Place_Holder, Tracer); } break; #endregion default: Tracer.Add_Trace("Html_MainWriter.Add_Html_And_Controls", "No controls or html added to page"); break; } }