/// <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);
            }
        }
Example #2
0
        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;
            }
        }
Example #5
0
        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);
        }
Example #9
0
        /// <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;
        }
Example #10
0
        /// <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("&", "&amp;").Replace("\"", "&quot;") + "</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("&", "&amp;").Replace("\"", "&quot;") + "</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);
            }
        }
Example #15
0
        /// <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;
            }
        }
Example #20
0
        /// <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("&amp;", " ").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("&", "&amp;").Replace("\"", "&quot;") + "</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("&", "&amp;").Replace("\"", "&quot;") + "</a>";

            return returnValue;
        }