Exemple #1
0
        /// <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("<", "&lt;").Replace(">", "&gt;") +
                        "</span> &nbsp; </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>&nbsp;</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>&nbsp;</td><td>" + titleResult.BibID + "</td></tr>");

                        if (titleResult.OPAC_Number > 1)
                        {
                            Output.WriteLine("\t\t\t\t<tr><td>OPAC:</td><td>&nbsp;</td><td>" + titleResult.OPAC_Number + "</td></tr>");
                        }

                        if (titleResult.OCLC_Number > 1)
                        {
                            Output.WriteLine("\t\t\t\t<tr><td>OCLC:</td><td>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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;
        }
Exemple #2
0
        /// <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;
            }
        }