/// <summary> Returns a built collection viewer matching request </summary> /// <param name="SearchType"> Type of search from the current http request </param> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request </param> /// <param name="Current_User"> Currently logged on user, if there is one </param> /// <returns> Collection viewer that extends the <see cref="abstractAggregationViewer"/> class. </returns> public static abstractAggregationViewer Get_Viewer(Search_Type_Enum SearchType, Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode, User_Object Current_User) { switch (SearchType) { case Search_Type_Enum.Advanced: return(new Advanced_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Basic: if ((Current_Aggregation.Front_Banner_Image(Current_Mode.Language).Length > 0) && (Current_Aggregation.Highlights.Count > 0)) { return(new Rotating_Highlight_Search_AggregationViewer(Current_Aggregation, Current_Mode)); } return(new Basic_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Full_Text: return(new Full_Text_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Newspaper: return(new Newspaper_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Map: return(new Map_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.dLOC_Full_Text: return(new dLOC_Search_AggregationViewer(Current_Aggregation, Current_Mode)); default: return(null); } }
private static string Tabs_HTML_Helper(string SkinCode, Search_Type_Enum Search_Type, string Display_Text, SobekCM_Navigation_Object Current_Mode, bool Downward_Tabs) { if (Downward_Tabs) { if ((Current_Mode.Mode == Display_Mode_Enum.Search) && (Current_Mode.Search_Type == Search_Type)) { return("<img src=\"" + Current_Mode.Base_URL + "design/skins/" + SkinCode + "/tabs/cLD_s.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /><span class=\"tab_s\"> " + Display_Text + " </span><img src=\"" + Current_Mode.Base_URL + "design/skins/" + SkinCode + "/tabs/cRD_s.gif\" border=\"0\" class=\"tab_image\" alt=\"\" />" + Environment.NewLine); } Search_Type_Enum currentSearchType = Current_Mode.Search_Type; Display_Mode_Enum currentMode = Current_Mode.Mode; Current_Mode.Search_Type = Search_Type; Current_Mode.Mode = Display_Mode_Enum.Search; string toReturn = "<a href=\"" + Current_Mode.Redirect_URL() + "\"> " + "<img src=\"" + Current_Mode.Base_URL + "design/skins/" + SkinCode + "/tabs/cLD.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /><span class=\"tab\"> " + Display_Text + " </span><img src=\"" + Current_Mode.Base_URL + "design/skins/" + SkinCode + "/tabs/cRD.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /></a>" + Environment.NewLine; Current_Mode.Search_Type = currentSearchType; Current_Mode.Mode = currentMode; return(toReturn); } if ((Current_Mode.Mode == Display_Mode_Enum.Search) && (Current_Mode.Search_Type == Search_Type)) { return("<img src=\"" + Current_Mode.Base_URL + "design/skins/" + SkinCode + "/tabs/cL_s.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /><span class=\"tab_s\"> " + Display_Text + " </span><img src=\"" + Current_Mode.Base_URL + "design/skins/" + SkinCode + "/tabs/cR_s.gif\" border=\"0\" class=\"tab_image\" alt=\"\" />" + Environment.NewLine); } // else... Search_Type_Enum currentSearchType2 = Current_Mode.Search_Type; Display_Mode_Enum currentMode2 = Current_Mode.Mode; Current_Mode.Search_Type = Search_Type; Current_Mode.Mode = Display_Mode_Enum.Search; string toReturn2 = "<a href=\"" + Current_Mode.Redirect_URL() + "\"> <img src=\"" + Current_Mode.Base_URL + "design/skins/" + SkinCode + "/tabs/cL.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /><span class=\"tab\"> " + Display_Text + " </span><img src=\"" + Current_Mode.Base_URL + "design/skins/" + SkinCode + "/tabs/cR.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /> </a>" + Environment.NewLine; Current_Mode.Search_Type = currentSearchType2; Current_Mode.Mode = currentMode2; return(toReturn2); }
/// <summary> Compares the collection view type and the search type from the current http request </summary> /// <param name="searchType1"> Search type from the list of collection views and searches </param> /// <param name="searchType2"> Search type from the current http request </param> /// <returns> TRUE if they are analagous, otherwise FALSE </returns> public static bool Do_Search_Types_Match(Item_Aggregation.CollectionViewsAndSearchesEnum searchType1, Search_Type_Enum searchType2) { switch (searchType1) { case Item_Aggregation.CollectionViewsAndSearchesEnum.Advanced_Search: return searchType2 == Search_Type_Enum.Advanced; case Item_Aggregation.CollectionViewsAndSearchesEnum.Basic_Search: return searchType2 == Search_Type_Enum.Basic; case Item_Aggregation.CollectionViewsAndSearchesEnum.FullText_Search: return searchType2 == Search_Type_Enum.Full_Text; case Item_Aggregation.CollectionViewsAndSearchesEnum.Map_Search: return searchType2 == Search_Type_Enum.Map; case Item_Aggregation.CollectionViewsAndSearchesEnum.Newspaper_Search: return searchType2 == Search_Type_Enum.Newspaper; case Item_Aggregation.CollectionViewsAndSearchesEnum.dLOC_FullText_Search: return searchType2 == Search_Type_Enum.dLOC_Full_Text; default: return false; } }
/// <summary> Returns a built collection viewer matching request </summary> /// <param name="SearchType"> Type of search from the current http request </param> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request </param> /// <param name="Current_User"> Currently logged on user, if there is one </param> /// <returns> Collection viewer that extends the <see cref="abstractAggregationViewer"/> class. </returns> public static abstractAggregationViewer Get_Viewer(Search_Type_Enum SearchType, Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode, User_Object Current_User) { switch (SearchType) { case Search_Type_Enum.Advanced: return new Advanced_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Basic: if ((Current_Aggregation.Front_Banner_Image(Current_Mode.Language ).Length > 0) && (Current_Aggregation.Highlights.Count > 0)) { return new Rotating_Highlight_Search_AggregationViewer(Current_Aggregation, Current_Mode); } return new Basic_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Full_Text: return new Full_Text_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Newspaper: return new Newspaper_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Map: return new Map_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.dLOC_Full_Text: return new dLOC_Search_AggregationViewer(Current_Aggregation, Current_Mode); default: return null; } }
private static string Menu_HTML_Helper(string SkinCode, Search_Type_Enum Search_Type, string Display_Text, SobekCM_Navigation_Object Current_Mode) { if (Current_Mode.Is_Robot) { if ((Current_Mode.Mode == Display_Mode_Enum.Search) && (Current_Mode.Search_Type == Search_Type)) { return("<li class=\"selected-sf-menu-item-link\"><a href=\"\">" + Display_Text + "</a></li>" + Environment.NewLine); } else { return("<li><a href=\"\">" + Display_Text + "</a></li>" + Environment.NewLine); } } if ((Current_Mode.Mode == Display_Mode_Enum.Search) && (Current_Mode.Search_Type == Search_Type)) { return("<li class=\"selected-sf-menu-item-link\"><a href=\"" + Current_Mode.Redirect_URL() + "\">" + Display_Text + "</a></li>" + Environment.NewLine); } // else... Search_Type_Enum currentSearchType2 = Current_Mode.Search_Type; Display_Mode_Enum currentMode2 = Current_Mode.Mode; Current_Mode.Search_Type = Search_Type; Current_Mode.Mode = Display_Mode_Enum.Search; string toReturn2 = "<li><a href=\"" + Current_Mode.Redirect_URL() + "\">" + Display_Text + "</a></li>" + Environment.NewLine; Current_Mode.Search_Type = currentSearchType2; Current_Mode.Mode = currentMode2; return(toReturn2); }
/// <summary> Constructor for a new instance of the Rotating_Highlight_MimeType_AggregationViewer class </summary> /// <param name="RequestSpecificValues"> All the necessary, non-global data specific to the current request </param> /// <param name="ViewBag"> Aggregation-specific request information, such as aggregation object and any browse object requested </param> public Rotating_Highlight_MimeType_AggregationViewer(RequestCache RequestSpecificValues, AggregationViewBag ViewBag) : base(RequestSpecificValues, ViewBag) { // Determine the sub text to use const string SUB_CODE = "s="; Sharing_Buttons_HTML = String.Empty; // Save the search term if (RequestSpecificValues.Current_Mode.Search_String.Length > 0) { textBoxValue = RequestSpecificValues.Current_Mode.Search_String; } // Determine the complete script action name Display_Mode_Enum displayMode = RequestSpecificValues.Current_Mode.Mode; Aggregation_Type_Enum aggrType = RequestSpecificValues.Current_Mode.Aggregation_Type; Search_Type_Enum searchType = RequestSpecificValues.Current_Mode.Search_Type; RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Results; RequestSpecificValues.Current_Mode.Search_Type = Search_Type_Enum.Basic; RequestSpecificValues.Current_Mode.Search_Precision = Search_Precision_Type_Enum.Inflectional_Form; string search_string = RequestSpecificValues.Current_Mode.Search_String; RequestSpecificValues.Current_Mode.Search_String = String.Empty; RequestSpecificValues.Current_Mode.Search_Fields = String.Empty; arg2 = String.Empty; arg1 = UrlWriterHelper.Redirect_URL(RequestSpecificValues.Current_Mode); RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Aggregation; RequestSpecificValues.Current_Mode.Aggregation_Type = Aggregation_Type_Enum.Browse_Info; RequestSpecificValues.Current_Mode.Info_Browse_Mode = "all"; browse_url = UrlWriterHelper.Redirect_URL(RequestSpecificValues.Current_Mode); RequestSpecificValues.Current_Mode.Info_Browse_Mode = String.Empty; RequestSpecificValues.Current_Mode.Aggregation_Type = Aggregation_Type_Enum.Home; if ((!RequestSpecificValues.Current_Mode.Show_Selection_Panel.HasValue) || (!RequestSpecificValues.Current_Mode.Show_Selection_Panel.Value) || (ViewBag.Hierarchy_Object.Children_Count == 0)) { Search_Script_Action = "basic_search_sobekcm('" + arg1 + "', '" + browse_url + "')"; } else { Search_Script_Action = "basic_select_search_sobekcm('" + arg1 + "', '" + SUB_CODE + "')"; arg2 = SUB_CODE; } RequestSpecificValues.Current_Mode.Mode = displayMode; RequestSpecificValues.Current_Mode.Aggregation_Type = aggrType; RequestSpecificValues.Current_Mode.Search_Type = searchType; RequestSpecificValues.Current_Mode.Search_String = search_string; // Get the front banner frontBannerInfo = ViewBag.Hierarchy_Object.FrontBannerObj; }
/// <summary> Constructor for a new instance of the Full_Text_Search_AggregationViewer class </summary> /// <param name="RequestSpecificValues"> All the necessary, non-global data specific to the current request </param> /// <param name="ViewBag"> Aggregation-specific request information, such as aggregation object and any browse object requested </param> public Full_Text_Search_AggregationViewer(RequestCache RequestSpecificValues, AggregationViewBag ViewBag) : base(RequestSpecificValues, ViewBag) { // Determine the sub text to use const string SUB_CODE = "s="; // Save the search term if (RequestSpecificValues.Current_Mode.Search_String.Length > 0) { textBoxValue = RequestSpecificValues.Current_Mode.Search_String; } // Determine the complete script action name Display_Mode_Enum displayMode = RequestSpecificValues.Current_Mode.Mode; Search_Type_Enum searchType = RequestSpecificValues.Current_Mode.Search_Type; Aggregation_Type_Enum aggrType = RequestSpecificValues.Current_Mode.Aggregation_Type; RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Results; RequestSpecificValues.Current_Mode.Search_Type = Search_Type_Enum.Full_Text; string search_string = RequestSpecificValues.Current_Mode.Search_String; RequestSpecificValues.Current_Mode.Search_String = String.Empty; RequestSpecificValues.Current_Mode.Search_Fields = String.Empty; RequestSpecificValues.Current_Mode.Search_Precision = Search_Precision_Type_Enum.Inflectional_Form; arg2 = String.Empty; arg1 = UrlWriterHelper.Redirect_URL(RequestSpecificValues.Current_Mode); // Get the browse all url, if enabled browse_url = String.Empty; if (ViewBag.Hierarchy_Object.Can_Browse_Items) { RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Aggregation; RequestSpecificValues.Current_Mode.Aggregation_Type = Aggregation_Type_Enum.Browse_Info; RequestSpecificValues.Current_Mode.Info_Browse_Mode = "all"; browse_url = UrlWriterHelper.Redirect_URL(RequestSpecificValues.Current_Mode); } RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Search; if ((!RequestSpecificValues.Current_Mode.Show_Selection_Panel.HasValue) || (!RequestSpecificValues.Current_Mode.Show_Selection_Panel.Value) || (ViewBag.Hierarchy_Object.Children_Count == 0)) { Search_Script_Action = "fulltext_search_sobekcm('" + arg1 + "', '" + browse_url + "');"; } else { Search_Script_Action = "fulltext_select_search_sobekcm('" + arg1 + "', '" + SUB_CODE + "')"; arg2 = SUB_CODE; } RequestSpecificValues.Current_Mode.Mode = displayMode; RequestSpecificValues.Current_Mode.Aggregation_Type = aggrType; RequestSpecificValues.Current_Mode.Search_Type = searchType; RequestSpecificValues.Current_Mode.Search_String = search_string; RequestSpecificValues.Current_Mode.Info_Browse_Mode = String.Empty; }
/// <summary> Constructor for a new instance of the Basic_Search_AggregationViewer class </summary> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request</param> public Rotating_Highlight_Search_AggregationViewer(Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode) : base(Current_Aggregation, Current_Mode) { // Determine the sub text to use const string SUB_CODE = "s="; Sharing_Buttons_HTML = String.Empty; // Save the search term if (currentMode.Search_String.Length > 0) { textBoxValue = currentMode.Search_String; } // Determine the complete script action name Display_Mode_Enum displayMode = currentMode.Mode; Aggregation_Type_Enum aggrType = currentMode.Aggregation_Type; Search_Type_Enum searchType = currentMode.Search_Type; currentMode.Mode = Display_Mode_Enum.Results; currentMode.Search_Type = Search_Type_Enum.Basic; currentMode.Search_Precision = Search_Precision_Type_Enum.Inflectional_Form; string search_string = currentMode.Search_String; currentMode.Search_String = String.Empty; currentMode.Search_Fields = String.Empty; arg2 = String.Empty; arg1 = currentMode.Redirect_URL(); currentMode.Aggregation_Type = Aggregation_Type_Enum.Browse_Info; currentMode.Info_Browse_Mode = "all"; browse_url = currentMode.Redirect_URL(); currentMode.Info_Browse_Mode = String.Empty; currentMode.Aggregation_Type = Aggregation_Type_Enum.Home; if ((!currentMode.Show_Selection_Panel) || (Current_Aggregation.Children_Count == 0)) { scriptActionName = "basic_search_sobekcm('" + arg1 + "', '" + browse_url + "')"; } else { scriptActionName = "basic_select_search_sobekcm('" + arg1 + "', '" + SUB_CODE + "')"; arg2 = SUB_CODE; } currentMode.Mode = displayMode; currentMode.Aggregation_Type = aggrType; currentMode.Search_Type = searchType; currentMode.Search_String = search_string; // Get the front banner frontBannerInfo = Current_Aggregation.Front_Banner_Image(currentMode.Language); }
/// <summary> Constructor for a new instance of the Basic_Search_AggregationViewer class </summary> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request</param> public Rotating_Highlight_Search_AggregationViewer(Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode) : base(Current_Aggregation, Current_Mode) { // Determine the sub text to use const string subCode = "s="; Sharing_Buttons_HTML = String.Empty; // Save the search term if (currentMode.Search_String.Length > 0) { textBoxValue = currentMode.Search_String; } // Determine the complete script action name Display_Mode_Enum displayMode = currentMode.Mode; Search_Type_Enum searchType = currentMode.Search_Type; currentMode.Mode = Display_Mode_Enum.Results; currentMode.Search_Type = Search_Type_Enum.Basic; currentMode.Search_Precision = Search_Precision_Type_Enum.Inflectional_Form; string search_string = currentMode.Search_String; currentMode.Search_String = String.Empty; currentMode.Search_Fields = String.Empty; arg2 = String.Empty; arg1 = currentMode.Redirect_URL(); currentMode.Mode = Display_Mode_Enum.Aggregation_Browse_Info; currentMode.Info_Browse_Mode = "all"; browse_url = currentMode.Redirect_URL(); currentMode.Info_Browse_Mode = String.Empty; currentMode.Mode = Display_Mode_Enum.Aggregation_Home; if ((!currentMode.Show_Selection_Panel) || (Current_Aggregation.Children_Count == 0)) { scriptActionName = "basic_search_sobekcm('" + arg1 + "', '" + browse_url + "')"; scriptIncludeName = "<script src=\"" + currentMode.Base_URL + "default/scripts/sobekcm_search.js\" type=\"text/javascript\"></script>"; } else { scriptActionName = "basic_select_search_sobekcm('" + arg1 + "', '" + subCode + "')"; arg2 = subCode; scriptIncludeName = "<script src=\"" + currentMode.Base_URL + "default/scripts/sobekcm_search.js\" type=\"text/javascript\"></script>"; } currentMode.Mode = displayMode; currentMode.Search_Type = searchType; currentMode.Search_String = search_string; }
/// <summary> Constructor for a new instance of the Full_Text_Search_AggregationViewer class </summary> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request</param> public Full_Text_Search_AggregationViewer(Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode) : base(Current_Aggregation, Current_Mode) { // Determine the sub text to use const string SUB_CODE = "s="; // Save the search term if (currentMode.Search_String.Length > 0) { textBoxValue = currentMode.Search_String; } // Determine the complete script action name Display_Mode_Enum displayMode = currentMode.Mode; Search_Type_Enum searchType = currentMode.Search_Type; Aggregation_Type_Enum aggrType = currentMode.Aggregation_Type; currentMode.Mode = Display_Mode_Enum.Results; currentMode.Search_Type = Search_Type_Enum.Full_Text; string search_string = currentMode.Search_String; currentMode.Search_String = String.Empty; currentMode.Search_Fields = String.Empty; currentMode.Search_Precision = Search_Precision_Type_Enum.Inflectional_Form; arg2 = String.Empty; arg1 = currentMode.Redirect_URL(); currentMode.Mode = Display_Mode_Enum.Aggregation; currentMode.Aggregation_Type = Aggregation_Type_Enum.Browse_Info; currentMode.Info_Browse_Mode = "all"; browse_url = currentMode.Redirect_URL(); currentMode.Mode = Display_Mode_Enum.Search; if ((!currentMode.Show_Selection_Panel) || (Current_Aggregation.Children_Count == 0)) { scriptActionName = "fulltext_search_sobekcm('" + arg1 + "', '" + browse_url + "');"; } else { scriptActionName = "fulltext_select_search_sobekcm('" + arg1 + "', '" + SUB_CODE + "')"; arg2 = SUB_CODE; } currentMode.Mode = displayMode; currentMode.Aggregation_Type = aggrType; currentMode.Search_Type = searchType; currentMode.Search_String = search_string; currentMode.Info_Browse_Mode = String.Empty; }
/// <summary> Compares the collection view type and the search type from the current http request </summary> /// <param name="SearchType1"> Search type from the list of collection views and searches </param> /// <param name="SearchType2"> Search type from the current http request </param> /// <returns> TRUE if they are analagous, otherwise FALSE </returns> public static bool Do_Search_Types_Match(Item_Aggregation_Views_Searches_Enum SearchType1, Search_Type_Enum SearchType2) { switch (SearchType1) { case Item_Aggregation_Views_Searches_Enum.Advanced_Search: return SearchType2 == Search_Type_Enum.Advanced; case Item_Aggregation_Views_Searches_Enum.Advanced_Search_YearRange: return SearchType2 == Search_Type_Enum.Advanced; case Item_Aggregation_Views_Searches_Enum.Advanced_Search_MimeType: return SearchType2 == Search_Type_Enum.Advanced; case Item_Aggregation_Views_Searches_Enum.Basic_Search: return SearchType2 == Search_Type_Enum.Basic; case Item_Aggregation_Views_Searches_Enum.Basic_Search_YearRange: return SearchType2 == Search_Type_Enum.Basic; case Item_Aggregation_Views_Searches_Enum.Basic_Search_MimeType: return SearchType2 == Search_Type_Enum.Basic; case Item_Aggregation_Views_Searches_Enum.Basic_Search_FullTextOption: return SearchType2 == Search_Type_Enum.Basic; case Item_Aggregation_Views_Searches_Enum.FullText_Search: return SearchType2 == Search_Type_Enum.Full_Text; case Item_Aggregation_Views_Searches_Enum.Map_Search: return SearchType2 == Search_Type_Enum.Map; case Item_Aggregation_Views_Searches_Enum.Map_Search_Beta: return SearchType2 == Search_Type_Enum.Map_Beta; case Item_Aggregation_Views_Searches_Enum.Newspaper_Search: return SearchType2 == Search_Type_Enum.Newspaper; case Item_Aggregation_Views_Searches_Enum.DLOC_FullText_Search: return SearchType2 == Search_Type_Enum.dLOC_Full_Text; default: return false; } }
/// <summary> Constructor for a new instance of the dLOC_Search_AggregationViewer class </summary> /// <param name="RequestSpecificValues"> All the necessary, non-global data specific to the current request </param> /// <param name="ViewBag"> Aggregation-specific request information, such as aggregation object and any browse object requested </param> public dLOC_Search_AggregationViewer(RequestCache RequestSpecificValues, AggregationViewBag ViewBag) : base(RequestSpecificValues, ViewBag) { textBoxValue = String.Empty; if (RequestSpecificValues.Current_Mode.Search_String.Length > 0) { textBoxValue = RequestSpecificValues.Current_Mode.Search_String.Replace(",newspaper", ""); } // Determine the complete script action name Display_Mode_Enum displayMode = RequestSpecificValues.Current_Mode.Mode; Aggregation_Type_Enum aggrType = RequestSpecificValues.Current_Mode.Aggregation_Type; Search_Type_Enum searchType = RequestSpecificValues.Current_Mode.Search_Type; RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Results; RequestSpecificValues.Current_Mode.Search_Type = Search_Type_Enum.Full_Text; string search_string = RequestSpecificValues.Current_Mode.Search_String; RequestSpecificValues.Current_Mode.Search_String = String.Empty; RequestSpecificValues.Current_Mode.Search_Fields = String.Empty; arg2 = String.Empty; RequestSpecificValues.Current_Mode.Search_Precision = Search_Precision_Type_Enum.Inflectional_Form; arg1 = UrlWriterHelper.Redirect_URL(RequestSpecificValues.Current_Mode); // Get the browse all url, if enabled browse_url = String.Empty; if (ViewBag.Hierarchy_Object.Can_Browse_Items) { RequestSpecificValues.Current_Mode.Mode = Display_Mode_Enum.Aggregation; RequestSpecificValues.Current_Mode.Aggregation_Type = Aggregation_Type_Enum.Browse_Info; RequestSpecificValues.Current_Mode.Info_Browse_Mode = "all"; browse_url = UrlWriterHelper.Redirect_URL(RequestSpecificValues.Current_Mode); } Search_Script_Action = "dloc_search_sobekcm('" + arg1 + "', '" + browse_url + "');"; RequestSpecificValues.Current_Mode.Mode = displayMode; RequestSpecificValues.Current_Mode.Aggregation_Type = aggrType; RequestSpecificValues.Current_Mode.Search_Type = searchType; RequestSpecificValues.Current_Mode.Search_String = search_string; RequestSpecificValues.Current_Mode.Info_Browse_Mode = String.Empty; }
/// <summary> Constructor for a new instance of the Search object </summary> /// <param name="currentMode"> Current navigation object to save the modal information ( interface, etc..)</param> /// <param name="SessionIP"> IP address which performed this search</param> /// <param name="Search_Type"> Type of search </param> /// <param name="Aggregation"> Aggregation against which this search was performed</param> /// <param name="Search_Terms"> Terms used in the search </param> public Search(SobekCM_Navigation_Object currentMode, string SessionIP, Search_Type_Enum Search_Type, string Aggregation, string Search_Terms) { Time = DateTime.Now.ToShortDateString().Replace("/", "-") + " " + DateTime.Now.ToShortTimeString().Replace(" ", ""); // Save some of the values this.SessionIP = SessionIP; switch (Search_Type) { case Search_Type_Enum.Advanced: this.Search_Type = "Advanced"; break; case Search_Type_Enum.Basic: this.Search_Type = "Basic"; break; case Search_Type_Enum.Newspaper: this.Search_Type = "Newspaper"; break; case Search_Type_Enum.Map: this.Search_Type = "Map"; break; default: this.Search_Type = "Unknown"; break; } // Create the key Key = SessionIP + "_" + this.Search_Type + "_" + Aggregation + "_" + Search_Terms.Replace(" ", "_"); // Save the collection as a link Display_Mode_Enum lastMode = currentMode.Mode; currentMode.Mode = Display_Mode_Enum.Aggregation; currentMode.Aggregation_Type = Aggregation_Type_Enum.Home; this.Aggregation = "<a href=\"" + currentMode.Redirect_URL() + "\">" + Aggregation.Replace("&", "&").Replace("\"", """) + "</a>"; // Save the search terms as a link to the search currentMode.Mode = lastMode; this.Search_Terms = "<a href=\"" + currentMode.Redirect_URL() + "\">" + Search_Terms.Replace("&", "&").Replace("\"", """) + "</a>"; }
/// <summary> Returns a built collection viewer matching request </summary> /// <param name="SearchType"> Type of search from the current http request </param> /// <param name="RequestSpecificValues"> All the necessary, non-global data specific to the current request </param> /// <param name="ViewBag"> View bag holds specific data that was pulled for an aggregation request </param> /// <returns> Collection viewer that extends the <see cref="abstractAggregationViewer"/> class. </returns> public static abstractAggregationViewer Get_Viewer(Search_Type_Enum SearchType, RequestCache RequestSpecificValues, AggregationViewBag ViewBag) { switch (SearchType) { case Search_Type_Enum.Advanced: if (ViewBag.Hierarchy_Object.Views_And_Searches.Contains(Item_Aggregation_Views_Searches_Enum.Advanced_Search_YearRange)) { return(new Advanced_Search_YearRange_AggregationViewer(RequestSpecificValues, ViewBag)); } if (ViewBag.Hierarchy_Object.Views_And_Searches.Contains(Item_Aggregation_Views_Searches_Enum.Advanced_Search_MimeType)) { return(new Advanced_Search_MimeType_AggregationViewer(RequestSpecificValues, ViewBag)); } return(new Advanced_Search_AggregationViewer(RequestSpecificValues, ViewBag)); case Search_Type_Enum.Basic: Item_Aggregation_Front_Banner frontBannerImage = ViewBag.Hierarchy_Object.FrontBannerObj; if ((frontBannerImage != null) && (ViewBag.Hierarchy_Object.Highlights != null) && (ViewBag.Hierarchy_Object.Highlights.Count > 0)) { return(new Rotating_Highlight_Search_AggregationViewer(RequestSpecificValues, ViewBag)); } return(new Basic_Search_AggregationViewer(RequestSpecificValues, ViewBag)); case Search_Type_Enum.Full_Text: return(new Full_Text_Search_AggregationViewer(RequestSpecificValues, ViewBag)); case Search_Type_Enum.Newspaper: return(new Newspaper_Search_AggregationViewer(RequestSpecificValues, ViewBag)); case Search_Type_Enum.Map: return(new Map_Search_AggregationViewer(RequestSpecificValues, ViewBag)); case Search_Type_Enum.Map_Beta: return(new Map_Search_AggregationViewer_Beta(RequestSpecificValues, ViewBag)); case Search_Type_Enum.dLOC_Full_Text: return(new dLOC_Search_AggregationViewer(RequestSpecificValues, ViewBag)); default: return(null); } }
/// <summary> Constructor for a new instance of the dLOC_Search_AggregationViewer class </summary> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request</param> public dLOC_Search_AggregationViewer(Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode) : base(Current_Aggregation, Current_Mode) { textBoxValue = String.Empty; if (currentMode.Search_String.Length > 0) { textBoxValue = currentMode.Search_String.Replace(",newspaper", ""); } // Determine the complete script action name Display_Mode_Enum displayMode = currentMode.Mode; Search_Type_Enum searchType = currentMode.Search_Type; currentMode.Mode = Display_Mode_Enum.Results; currentMode.Search_Type = Search_Type_Enum.Full_Text; string search_string = currentMode.Search_String; currentMode.Search_String = String.Empty; currentMode.Search_Fields = String.Empty; arg2 = String.Empty; currentMode.Search_Precision = Search_Precision_Type_Enum.Inflectional_Form; arg1 = currentMode.Redirect_URL(); currentMode.Mode = Display_Mode_Enum.Aggregation_Browse_Info; currentMode.Info_Browse_Mode = "all"; browse_url = currentMode.Redirect_URL(); //if (( !currentMode.Show_Selection_Panel) || ( hierarchyObject.Codes.Length == 0 )) //{ scriptActionName = "dloc_search_sobekcm('" + arg1 + "', '" + browse_url + "');"; scriptIncludeName = "<script src=\"" + currentMode.Base_URL + "default/scripts/sobekcm_search.js\" type=\"text/javascript\"></script>"; //} //else //{ // script_action_name = "Javascript:dloc_select_search_sobekcm('" + currentMode.Redirect_URL() + "', '" + sub_code + "')"; // script_include_name = "<script src=\"" + currentMode.Base_URL + "default/scripts/dloc_select_search_sobekcm.js\" type=\"text/javascript\"></script>"; //} currentMode.Mode = displayMode; currentMode.Search_Type = searchType; currentMode.Search_String = search_string; currentMode.Info_Browse_Mode = String.Empty; }
/// <summary> Returns a built collection viewer matching request </summary> /// <param name="SearchType"> Type of search from the current http request </param> /// <param name="RequestSpecificValues"> All the necessary, non-global data specific to the current request </param> /// <returns> Collection viewer that extends the <see cref="abstractAggregationViewer"/> class. </returns> public static abstractAggregationViewer Get_Viewer(Search_Type_Enum SearchType, RequestCache RequestSpecificValues ) { switch (SearchType) { case Search_Type_Enum.Advanced: if (RequestSpecificValues.Hierarchy_Object.Views_And_Searches.Contains(Item_Aggregation_Views_Searches_Enum.Advanced_Search_YearRange)) return new Advanced_Search_YearRange_AggregationViewer(RequestSpecificValues); if (RequestSpecificValues.Hierarchy_Object.Views_And_Searches.Contains(Item_Aggregation_Views_Searches_Enum.Advanced_Search_MimeType)) return new Advanced_Search_MimeType_AggregationViewer(RequestSpecificValues); return new Advanced_Search_AggregationViewer(RequestSpecificValues); case Search_Type_Enum.Basic: Item_Aggregation_Front_Banner frontBannerImage = RequestSpecificValues.Hierarchy_Object.FrontBannerObj; if ((frontBannerImage != null) && (RequestSpecificValues.Hierarchy_Object.Highlights != null) && (RequestSpecificValues.Hierarchy_Object.Highlights.Count > 0)) { return new Rotating_Highlight_Search_AggregationViewer(RequestSpecificValues); } return new Basic_Search_AggregationViewer(RequestSpecificValues); case Search_Type_Enum.Full_Text: return new Full_Text_Search_AggregationViewer(RequestSpecificValues); case Search_Type_Enum.Newspaper: return new Newspaper_Search_AggregationViewer(RequestSpecificValues); case Search_Type_Enum.Map: return new Map_Search_AggregationViewer(RequestSpecificValues); case Search_Type_Enum.Map_Beta: return new Map_Search_AggregationViewer_Beta(RequestSpecificValues); case Search_Type_Enum.dLOC_Full_Text: return new dLOC_Search_AggregationViewer(RequestSpecificValues); default: return null; } }
/// <summary> Returns a built collection viewer matching request </summary> /// <param name="SearchType"> Type of search from the current http request </param> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request </param> /// <param name="Current_User"> Currently logged on user, if there is one </param> /// <returns> Collection viewer that extends the <see cref="abstractAggregationViewer"/> class. </returns> public static abstractAggregationViewer Get_Viewer(Search_Type_Enum SearchType, Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode, User_Object Current_User) { switch (SearchType) { case Search_Type_Enum.Advanced: if (Current_Aggregation.Views_And_Searches.Contains(Item_Aggregation.CollectionViewsAndSearchesEnum.Advanced_Search_YearRange)) { return(new Advanced_Search_YearRange_AggregationViewer(Current_Aggregation, Current_Mode)); } return(new Advanced_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Basic: Item_Aggregation_Front_Banner frontBannerImage = Current_Aggregation.Front_Banner_Image(Current_Mode.Language); if ((frontBannerImage != null) && (Current_Aggregation.Highlights.Count > 0)) { return(new Rotating_Highlight_Search_AggregationViewer(Current_Aggregation, Current_Mode)); } return(new Basic_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Full_Text: return(new Full_Text_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Newspaper: return(new Newspaper_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Map: return(new Map_Search_AggregationViewer(Current_Aggregation, Current_Mode)); case Search_Type_Enum.Map_Beta: return(new Map_Search_AggregationViewer_Beta(Current_Aggregation, Current_Mode)); case Search_Type_Enum.dLOC_Full_Text: return(new dLOC_Search_AggregationViewer(Current_Aggregation, Current_Mode)); default: return(null); } }
/// <summary> Constructor for a new instance of the dLOC_Search_AggregationViewer class </summary> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request</param> public dLOC_Search_AggregationViewer(Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode) : base(Current_Aggregation, Current_Mode) { textBoxValue = String.Empty; if (currentMode.Search_String.Length > 0) { textBoxValue = currentMode.Search_String.Replace(",newspaper", ""); } // Determine the complete script action name Display_Mode_Enum displayMode = currentMode.Mode; Aggregation_Type_Enum aggrType = currentMode.Aggregation_Type; Search_Type_Enum searchType = currentMode.Search_Type; currentMode.Mode = Display_Mode_Enum.Results; currentMode.Search_Type = Search_Type_Enum.Full_Text; string search_string = currentMode.Search_String; currentMode.Search_String = String.Empty; currentMode.Search_Fields = String.Empty; arg2 = String.Empty; currentMode.Search_Precision = Search_Precision_Type_Enum.Inflectional_Form; arg1 = currentMode.Redirect_URL(); currentMode.Mode = Display_Mode_Enum.Aggregation; currentMode.Aggregation_Type = Aggregation_Type_Enum.Browse_Info; currentMode.Info_Browse_Mode = "all"; browse_url = currentMode.Redirect_URL(); scriptActionName = "dloc_search_sobekcm('" + arg1 + "', '" + browse_url + "');"; currentMode.Mode = displayMode; currentMode.Aggregation_Type = aggrType; currentMode.Search_Type = searchType; currentMode.Search_String = search_string; currentMode.Info_Browse_Mode = String.Empty; }
/// <summary> Returns a built collection viewer matching request </summary> /// <param name="SearchType"> Type of search from the current http request </param> /// <param name="Current_Aggregation"> Current item aggregation object </param> /// <param name="Current_Mode"> Mode / navigation information for the current request </param> /// <param name="Current_User"> Currently logged on user, if there is one </param> /// <returns> Collection viewer that extends the <see cref="abstractAggregationViewer"/> class. </returns> public static abstractAggregationViewer Get_Viewer(Search_Type_Enum SearchType, Item_Aggregation Current_Aggregation, SobekCM_Navigation_Object Current_Mode, User_Object Current_User) { switch (SearchType) { case Search_Type_Enum.Advanced: if ( Current_Aggregation.Views_And_Searches.Contains(Item_Aggregation.CollectionViewsAndSearchesEnum.Advanced_Search_YearRange)) return new Advanced_Search_YearRange_AggregationViewer(Current_Aggregation, Current_Mode); return new Advanced_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Basic: Item_Aggregation_Front_Banner frontBannerImage = Current_Aggregation.Front_Banner_Image(Current_Mode.Language); if ((frontBannerImage != null ) && (Current_Aggregation.Highlights.Count > 0)) { return new Rotating_Highlight_Search_AggregationViewer(Current_Aggregation, Current_Mode); } return new Basic_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Full_Text: return new Full_Text_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Newspaper: return new Newspaper_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Map: return new Map_Search_AggregationViewer(Current_Aggregation, Current_Mode); case Search_Type_Enum.Map_Beta: return new Map_Search_AggregationViewer_Beta(Current_Aggregation, Current_Mode); case Search_Type_Enum.dLOC_Full_Text: return new dLOC_Search_AggregationViewer(Current_Aggregation, Current_Mode); default: return null; } }
/// <summary> Compares the collection view type and the search type from the current http request </summary> /// <param name="SearchType1"> Search type from the list of collection views and searches </param> /// <param name="SearchType2"> Search type from the current http request </param> /// <returns> TRUE if they are analagous, otherwise FALSE </returns> public static bool Do_Search_Types_Match(Item_Aggregation.CollectionViewsAndSearchesEnum SearchType1, Search_Type_Enum SearchType2) { switch (SearchType1) { case Item_Aggregation.CollectionViewsAndSearchesEnum.Advanced_Search: return(SearchType2 == Search_Type_Enum.Advanced); case Item_Aggregation.CollectionViewsAndSearchesEnum.Advanced_Search_YearRange: return(SearchType2 == Search_Type_Enum.Advanced); case Item_Aggregation.CollectionViewsAndSearchesEnum.Basic_Search: return(SearchType2 == Search_Type_Enum.Basic); case Item_Aggregation.CollectionViewsAndSearchesEnum.Basic_Search_YearRange: return(SearchType2 == Search_Type_Enum.Basic); case Item_Aggregation.CollectionViewsAndSearchesEnum.FullText_Search: return(SearchType2 == Search_Type_Enum.Full_Text); case Item_Aggregation.CollectionViewsAndSearchesEnum.Map_Search: return(SearchType2 == Search_Type_Enum.Map); case Item_Aggregation.CollectionViewsAndSearchesEnum.Map_Search_Beta: return(SearchType2 == Search_Type_Enum.Map_Beta); case Item_Aggregation.CollectionViewsAndSearchesEnum.Newspaper_Search: return(SearchType2 == Search_Type_Enum.Newspaper); case Item_Aggregation.CollectionViewsAndSearchesEnum.DLOC_FullText_Search: return(SearchType2 == Search_Type_Enum.dLOC_Full_Text); default: return(false); } }
private static string Menu_HTML_Helper(string SkinCode, Search_Type_Enum Search_Type, string Display_Text, SobekCM_Navigation_Object Current_Mode) { if (Current_Mode.Is_Robot) { if ((Current_Mode.Mode == Display_Mode_Enum.Search) && (Current_Mode.Search_Type == Search_Type)) { return "<li class=\"selected-sf-menu-item-link\"><a href=\"\">" + Display_Text + "</a></li>" + Environment.NewLine; } else { return "<li><a href=\"\">" + Display_Text + "</a></li>" + Environment.NewLine; } } if ((Current_Mode.Mode == Display_Mode_Enum.Search) && (Current_Mode.Search_Type == Search_Type)) { return "<li class=\"selected-sf-menu-item-link\"><a href=\"" + Current_Mode.Redirect_URL() + "\">" + Display_Text + "</a></li>" + Environment.NewLine; } // else... Search_Type_Enum currentSearchType2 = Current_Mode.Search_Type; Display_Mode_Enum currentMode2 = Current_Mode.Mode; Current_Mode.Search_Type = Search_Type; Current_Mode.Mode = Display_Mode_Enum.Search; string toReturn2 = "<li><a href=\"" + Current_Mode.Redirect_URL() + "\">" + Display_Text + "</a></li>" + Environment.NewLine; Current_Mode.Search_Type = currentSearchType2; Current_Mode.Mode = currentMode2; return toReturn2; }
/// <summary> Adds a new search to the collection of recent searches </summary> /// <param name="currentMode"> Current navigation object to save the modal information ( interface, etc..) </param> /// <param name="SessionIP"> IP address which performed this search </param> /// <param name="Search_Type"> Type of search </param> /// <param name="Aggregation"> Aggregation against which this search was performed </param> /// <param name="Search_Terms"> Terms used in the search </param> public void Add_New_Search(SobekCM_Navigation_Object currentMode, string SessionIP, Search_Type_Enum Search_Type, string Aggregation, string Search_Terms) { // Add this to the end of the ArrayList Search newSearch = new Search(currentMode, SessionIP, Search_Type, Aggregation, Search_Terms); // If this was not found, add it if (searches.Contains(newSearch)) { return; } searches.Add(newSearch); // If this exceeds 100 remove the first if (searches.Count > 100) { searches.RemoveAt(0); } }
/// <summary> Writes the HTML generated to browse the results of a search directly to the response stream </summary> /// <param name="Output"> Stream to which to write the HTML for this subwriter </param> /// <param name="Tracer"> Trace object keeps a list of each method executed and important milestones in rendering </param> /// <returns> TRUE -- Value indicating if html writer should finish the page immediately after this, or if there are other controls or routines which need to be called first </returns> public override bool Write_HTML(TextWriter Output, Custom_Tracer Tracer) { Tracer.Add_Trace("Search_Results_HtmlSubwriter.Write_HTML", "Rendering HTML"); // If this skin has top-level navigation suppressed, skip the top tabs if (htmlSkin.Suppress_Top_Navigation) { Output.WriteLine("<br />"); } else { string refine_search = "MODIFY YOUR SEARCH"; string new_search = "NEW SEARCH"; string home_text = "HOME"; if (currentMode.Language == Web_Language_Enum.French) { refine_search = "MODIFIER LA RECHERCHE"; new_search = "RELANCEZ LA RECHERCHE"; home_text = "PAGE D'ACCUEIL"; } if (currentMode.Language == Web_Language_Enum.Spanish) { refine_search = "REDUZCA SU BÚSQUEDA"; new_search = "BÚSQUEDA NUEVA"; home_text = "INICIO"; } // Add the reference to the script for sorting Output.WriteLine("<div class=\"ViewsBrowsesRow\">"); string fields = currentMode.Search_Fields; string search_string = currentMode.Search_String; Search_Type_Enum currentSearchType = currentMode.Search_Type; currentMode.Mode = Display_Mode_Enum.Search; string refine_redirect_url; if ((currentMode.Search_Type == Search_Type_Enum.Basic) || (currentMode.Search_Type == Search_Type_Enum.Newspaper) || (currentMode.Search_Type == Search_Type_Enum.Advanced)) { currentMode.Search_Type = Search_Type_Enum.Advanced; refine_redirect_url = currentMode.Redirect_URL(); if (refine_redirect_url.IndexOf("?") > 0) { refine_redirect_url = refine_redirect_url + "&t=" + System.Web.HttpUtility.UrlEncode(currentMode.Search_String).Replace("%2c", ",") + "&f=" + currentMode.Search_Fields; } else { refine_redirect_url = refine_redirect_url + "?t=" + System.Web.HttpUtility.UrlEncode(currentMode.Search_String).Replace("%2c", ",") + "&f=" + currentMode.Search_Fields; } currentMode.Search_Type = currentSearchType; } else { refine_redirect_url = currentMode.Redirect_URL(); } if (currentMode.Search_Type == Search_Type_Enum.Map) { currentMode.Search_String = String.Empty; } currentMode.Mode = Display_Mode_Enum.Aggregation_Home; Output.WriteLine(" <a href=\"" + currentMode.Redirect_URL() + "\">" + Unselected_Tab_Start + home_text + Unselected_Tab_End + "</a>"); currentMode.Mode = Display_Mode_Enum.Search; Output.WriteLine(" <a href=\"" + refine_redirect_url + "\">" + Unselected_Tab_Start + refine_search + Unselected_Tab_End + "</a>"); currentMode.Search_String = String.Empty; currentMode.Search_Fields = String.Empty; if (currentMode.Aggregation == ".all") { currentMode.Mode = Display_Mode_Enum.Aggregation_Home; currentMode.Aggregation = ""; Output.WriteLine(" <a href=\"" + currentMode.Redirect_URL() + "\">" + Unselected_Tab_Start + new_search + Unselected_Tab_End + "</a>"); currentMode.Aggregation = ".all"; } else { currentMode.Mode = Display_Mode_Enum.Aggregation_Home; Output.WriteLine(" <a href=\"" + currentMode.Redirect_URL() + "\">" + Unselected_Tab_Start + new_search + Unselected_Tab_End + "</a>"); } currentMode.Mode = Display_Mode_Enum.Results; currentMode.Search_String = search_string; currentMode.Search_Fields = fields; Output.WriteLine("</div>"); Output.WriteLine(); } if (resultsStatistics != null) { if (writeResult == null) { Tracer.Add_Trace("Search_Results_HtmlSubwriter.Write_HTML", "Building Result DataSet Writer"); writeResult = new PagedResults_HtmlSubwriter(resultsStatistics, pagedResults, codeManager, translations, allItemsTable, currentUser, currentMode, Tracer) { Hierarchy_Object = Hierarchy_Object, Skin = htmlSkin, Mode = currentMode }; } writeResult.Write_HTML(Output, Tracer); } return(true); }
/// <summary> Takes the search string and search fields from the URL and parses them, according to the search type, /// into a collection of terms and a collection of fields. Stop words are also suppressed here </summary> /// <param name="Search_String">Search string from the SobekCM search results URL </param> /// <param name="Search_Fields">Search fields from the SobekCM search results URL </param> /// <param name="Search_Type"> Type of search currently being performed (sets how it is parsed and default index)</param> /// <param name="Output_Terms"> List takes the results of the parsing of the actual search terms </param> /// <param name="Output_Fields"> List takes the results of the parsing of the actual (and implied) search fields </param> /// <param name="Search_Stop_Words"> List of all stop words ignored during metadata searching (such as 'The', 'A', etc..) </param> /// <param name="Search_Precision"> Search precision for this search ( i.e., exact, contains, stemmed, thesaurus lookup )</param> /// <param name="Delimiter_Character"> Character used as delimiter between different components of an advanced search</param> public static void Split_Clean_Search_Terms_Fields(string Search_String, string Search_Fields, Search_Type_Enum Search_Type, List<string> Output_Terms, List<string> Output_Fields, List<string> Search_Stop_Words, Search_Precision_Type_Enum Search_Precision, char Delimiter_Character) { // Find default index string default_index = "ZZ"; if (Search_Type == Search_Type_Enum.Full_Text) default_index = "TX"; // Split the parts string[] fieldSplitTemp = Search_Fields.Split( new[] { Delimiter_Character }); List<string> fieldSplit = new List<string>(); List<string> searchSplit = new List<string>(); int first_index = 0; int second_index = 0; int field_index = 0; bool in_quotes = false; while (second_index < Search_String.Length) { if (in_quotes) { if (Search_String[second_index] == '"') { in_quotes = false; } } else { if (Search_String[second_index] == '"') { in_quotes = true; } else { if (Search_String[second_index] == Delimiter_Character) { if (first_index < second_index) { string possible_add = Search_String.Substring(first_index, second_index - first_index); if (possible_add.Trim().Length > 0) { searchSplit.Add(possible_add); fieldSplit.Add(field_index < fieldSplitTemp.Length ? fieldSplitTemp[field_index] : default_index); } } first_index = second_index + 1; field_index++; } else if (Search_String[second_index] == ' ') { if (first_index < second_index) { string possible_add = Search_String.Substring(first_index, second_index - first_index); if (possible_add.Trim().Length > 0) { searchSplit.Add(possible_add); fieldSplit.Add(field_index < fieldSplitTemp.Length ? fieldSplitTemp[field_index] : default_index); } } first_index = second_index + 1; } } } second_index++; } if ( second_index > first_index ) { searchSplit.Add(Search_String.Substring(first_index)); fieldSplit.Add(field_index < fieldSplitTemp.Length ? fieldSplitTemp[field_index] : default_index); } // If this is basic, do some other preparation if ( Search_Type == Search_Type_Enum.Full_Text ) { Solr_Documents_Searcher.Split_Multi_Terms(Search_String, default_index, Output_Terms, Output_Fields); } else { // For advanced, just add all the terms Output_Terms.AddRange(searchSplit.Select(thisTerm => thisTerm.Trim().Replace("\"", "").Replace("+", " "))); Output_Fields.AddRange(fieldSplit.Select(thisField => thisField.Trim())); } // Some special work for basic searches here if (Search_Type == Search_Type_Enum.Basic) { while (Output_Fields.Count < Output_Terms.Count) { Output_Fields.Add("ZZ"); } } // Now, remove any stop words by themselves if (Search_Stop_Words != null) { int index = 0; while ((index < Output_Terms.Count) && (index < Output_Fields.Count)) { if ((Output_Terms[index].Length == 0) || (Search_Stop_Words.Contains(Output_Terms[index].ToLower()))) { Output_Terms.RemoveAt(index); Output_Fields.RemoveAt(index); } else { if (Search_Precision != Search_Precision_Type_Enum.Exact_Match) { Output_Terms[index] = Output_Terms[index].Replace("\"", "").Replace("+", " ").Replace("&", " ").Replace("&", ""); } if (Output_Fields[index].Length == 0) Output_Fields[index] = default_index; index++; } } } }
private static string HTML_Helper(string skin_code, Search_Type_Enum Search_Type, string Display_Text, SobekCM_Navigation_Object Current_Mode, bool Downward_Tabs) { if (Downward_Tabs) { if ((Current_Mode.Mode == Display_Mode_Enum.Search) && (Current_Mode.Search_Type == Search_Type)) { return "<img src=\"" + Current_Mode.Base_URL + "design/skins/" + skin_code + "/tabs/cLD_s.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /><span class=\"tab_s\"> " + Display_Text + " </span><img src=\"" + Current_Mode.Base_URL + "design/skins/" + skin_code + "/tabs/cRD_s.gif\" border=\"0\" class=\"tab_image\" alt=\"\" />" + Environment.NewLine ; } Search_Type_Enum currentSearchType = Current_Mode.Search_Type; Display_Mode_Enum currentMode = Current_Mode.Mode; Current_Mode.Search_Type = Search_Type; Current_Mode.Mode = Display_Mode_Enum.Search; string toReturn = "<a href=\"" + Current_Mode.Redirect_URL() + "\"> " + "<img src=\"" + Current_Mode.Base_URL + "design/skins/" + skin_code + "/tabs/cLD.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /><span class=\"tab\"> "+ Display_Text + " </span><img src=\"" + Current_Mode.Base_URL + "design/skins/" + skin_code + "/tabs/cRD.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /></a>" + Environment.NewLine ; Current_Mode.Search_Type = currentSearchType; Current_Mode.Mode = currentMode; return toReturn; } if ((Current_Mode.Mode == Display_Mode_Enum.Search) && (Current_Mode.Search_Type == Search_Type)) { return "<img src=\"" + Current_Mode.Base_URL + "design/skins/" + skin_code + "/tabs/cL_s.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /><span class=\"tab_s\"> " + Display_Text + " </span><img src=\"" + Current_Mode.Base_URL + "design/skins/" + skin_code + "/tabs/cR_s.gif\" border=\"0\" class=\"tab_image\" alt=\"\" />" + Environment.NewLine ; } else { Search_Type_Enum currentSearchType = Current_Mode.Search_Type; Display_Mode_Enum currentMode = Current_Mode.Mode; Current_Mode.Search_Type = Search_Type; Current_Mode.Mode = Display_Mode_Enum.Search; string toReturn = "<a href=\"" + Current_Mode.Redirect_URL() + "\"> <img src=\"" + Current_Mode.Base_URL + "design/skins/" + skin_code + "/tabs/cL.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /><span class=\"tab\"> " + Display_Text + " </span><img src=\"" + Current_Mode.Base_URL + "design/skins/" + skin_code + "/tabs/cR.gif\" border=\"0\" class=\"tab_image\" alt=\"\" /> </a>" + Environment.NewLine ; Current_Mode.Search_Type = currentSearchType; Current_Mode.Mode = currentMode; return toReturn; } }
private Recent_Searches.Search Get_Search_From_Mode(Navigation_Object currentMode, string SessionIP, Search_Type_Enum Search_Type, string Aggregation, string Search_Terms) { Recent_Searches.Search returnValue = new Recent_Searches.Search(); returnValue.Time = DateTime.Now.ToShortDateString().Replace("/", "-") + " " + DateTime.Now.ToShortTimeString().Replace(" ", ""); // Save some of the values returnValue.SessionIP = SessionIP; switch (Search_Type) { case Search_Type_Enum.Advanced: returnValue.Search_Type = "Advanced"; break; case Search_Type_Enum.Basic: returnValue.Search_Type = "Basic"; break; case Search_Type_Enum.Newspaper: returnValue.Search_Type = "Newspaper"; break; case Search_Type_Enum.Map: returnValue.Search_Type = "Map"; break; default: returnValue.Search_Type = "Unknown"; break; } // Save the collection as a link Display_Mode_Enum lastMode = currentMode.Mode; currentMode.Mode = Display_Mode_Enum.Aggregation; currentMode.Aggregation_Type = Aggregation_Type_Enum.Home; returnValue.Aggregation = "<a href=\"" + UrlWriterHelper.Redirect_URL(currentMode) + "\">" + Aggregation.Replace("&", "&").Replace("\"", """) + "</a>"; // Save the search terms as a link to the search currentMode.Mode = lastMode; returnValue.Search_Terms = "<a href=\"" + UrlWriterHelper.Redirect_URL(currentMode) + "\">" + Search_Terms.Replace("&", "&").Replace("\"", """) + "</a>"; return returnValue; }