diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index efacce1e..611a5240 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -10733,7 +10733,8 @@ CREATE PROCEDURE [dbo].[GetSearchObject] @StartRow int, @MaximumRows int = 0, @Recursive bit, - @ColType nvarchar(50) = '' + @ColType nvarchar(50) = '', + @FillType nvarchar(50) = '' ) AS @@ -10923,7 +10924,11 @@ IF @SortColumn <> '' AND @SortColumn IS NOT NULL SET @sqlReturn = @sqlReturn + ' ORDER BY ' + @SortColumn + ' ' SET @sqlReturn = @sqlReturn + ' SELECT COUNT(ItemID) FROM @ItemsReturn; -SELECT DISTINCT(ColumnType) FROM @ItemsReturn; +SELECT DISTINCT(ColumnType) FROM @ItemsReturn WHERE (1 = 1) '; +IF @FullType <> '' +SET @sqlReturn = @sqlReturn + ' AND FullType = ''' + @FullType + ''''; +SET @sqlReturn = @sqlReturn + '; '; +SET @sqlReturn = @sqlReturn + ' SELECT ItemPosition, ItemID, TextSearch, ColumnType, FullType, PackageID FROM @ItemsReturn AS IR WHERE (1 = 1) ' @@ -10934,6 +10939,9 @@ SET @sqlReturn = @sqlReturn + ' AND IR.ItemPosition BETWEEN @StartRow AND @EndRo IF @ColType <> '' SET @sqlReturn = @sqlReturn + ' AND ColumnType in ( ' + @ColType + ' ) '; +IF @FullType <> '' +SET @sqlReturn = @sqlReturn + ' AND FullType = ''' + @FullType + ''''; + exec sp_executesql @sqlReturn, N'@StartRow int, @MaximumRows int, @FilterValue nvarchar(50), @curSpaceValue cursor, @curUsersValue cursor', @StartRow, @MaximumRows, @FilterValue, @curSpace, @curUsers @@ -10942,3 +10950,4 @@ DEALLOCATE @curSpace CLOSE @curUsers DEALLOCATE @curUsers RETURN + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs index 54603503..0791687f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/PackagesProxy.cs @@ -910,7 +910,7 @@ namespace WebsitePanel.EnterpriseServer { /// /// //TODO START [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetSearchObject", RequestNamespace = "http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace = "http://smbsaas/websitepanel/enterpriseserver", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public System.Data.DataSet GetSearchObject(int userId, string filterColumn, string filterValue, int statusId, int roleId, string sortColumn, int startRow, int maximumRows, string colType) + public System.Data.DataSet GetSearchObject(int userId, string filterColumn, string filterValue, int statusId, int roleId, string sortColumn, int startRow, int maximumRows, string colType, string fullType) { object[] results = this.Invoke("GetSearchObject", new object[] { userId, @@ -921,7 +921,8 @@ namespace WebsitePanel.EnterpriseServer { sortColumn, startRow, maximumRows, - colType + colType, + fullType }); return ((System.Data.DataSet)(results[0])); } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs index 23a0578e..68a81036 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs @@ -141,7 +141,7 @@ namespace WebsitePanel.EnterpriseServer //TODO START public static DataSet GetSearchObject(int actorId, int userId, string filterColumn, string filterValue, - int statusId, int roleId, string sortColumn, int startRow, int maximumRows, string colType, bool recursive) + int statusId, int roleId, string sortColumn, int startRow, int maximumRows, string colType, string fullType, bool recursive) { return SqlHelper.ExecuteDataset(ConnectionString, CommandType.StoredProcedure, ObjectQualifier + "GetSearchObject", @@ -155,7 +155,8 @@ namespace WebsitePanel.EnterpriseServer new SqlParameter("@startRow", startRow), new SqlParameter("@maximumRows", maximumRows), new SqlParameter("@recursive", recursive), - new SqlParameter("@ColType", colType)); + new SqlParameter("@ColType", colType), + new SqlParameter("@FullType", fullType)); } //TODO END diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs index ccd2e736..1c920bda 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Packages/PackageController.cs @@ -319,10 +319,10 @@ namespace WebsitePanel.EnterpriseServer //TODO START public static DataSet GetSearchObject(int userId, string filterColumn, string filterValue, - int statusId, int roleId, string sortColumn, int startRow, int maximumRows, string colType) + int statusId, int roleId, string sortColumn, int startRow, int maximumRows, string colType, string fullType) { return DataProvider.GetSearchObject(SecurityContext.User.UserId, userId, - filterColumn, filterValue, statusId, roleId, sortColumn, startRow, maximumRows, colType, false); + filterColumn, filterValue, statusId, roleId, sortColumn, startRow, maximumRows, colType, fullType, false); } //TODO END diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esPackages.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esPackages.asmx.cs index 9d9a6b52..36804d26 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esPackages.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esPackages.asmx.cs @@ -138,9 +138,9 @@ namespace WebsitePanel.EnterpriseServer [WebMethod] public DataSet GetSearchObject(int userId, string filterColumn, string filterValue, - int statusId, int roleId, string sortColumn, int startRow, int maximumRows, string colType) + int statusId, int roleId, string sortColumn, int startRow, int maximumRows, string colType, string fullType) { - return PackageController.GetSearchObject(userId, filterColumn, filterValue, statusId, roleId, sortColumn, startRow, maximumRows, colType); + return PackageController.GetSearchObject(userId, filterColumn, filterValue, statusId, roleId, sortColumn, startRow, maximumRows, colType, fullType); } //TODO END diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/AjaxHandler.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/AjaxHandler.cs index ce3a6e51..fe3592d0 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/AjaxHandler.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/AjaxHandler.cs @@ -32,6 +32,8 @@ namespace WebsitePanel.WebPortal Dictionary obj = new Dictionary(); obj["ColumnType"] = "PackageName"; obj["TextSearch"] = row["PackageName"].ToString(); + obj["ItemID"] = row["ItemID"].ToString(); + obj["PackageID"] = row["PackageID"].ToString(); obj["FullType"] = "Space"; dataList.Add(obj); } @@ -45,17 +47,22 @@ namespace WebsitePanel.WebPortal { DataSet dsObjectItems = ES.Services.Packages.GetSearchObject(PanelSecurity.EffectiveUserId, null, String.Format("%{0}%", filterValue), - 0, 0, "", 0, 100, columnType); + 0, 0, "", 0, 100, columnType,fullType); DataTable dt = dsObjectItems.Tables[2]; List> dataList = new List>(); for (int i = 0; i < dt.Rows.Count; ++i) { DataRow row = dt.Rows[i]; - Dictionary obj = new Dictionary(); - obj["ColumnType"] = row["ColumnType"].ToString(); - obj["TextSearch"] = row["TextSearch"].ToString(); - obj["FullType"] = row["FullType"].ToString(); - dataList.Add(obj); + if ((fullType == null) || (fullType.Length == 0) || (fullType == row["FullType"].ToString())) + { + Dictionary obj = new Dictionary(); + obj["ColumnType"] = row["ColumnType"].ToString(); + obj["TextSearch"] = row["TextSearch"].ToString(); + obj["ItemID"] = row["ItemID"].ToString(); + obj["PackageID"] = row["PackageID"].ToString(); + obj["FullType"] = row["FullType"].ToString(); + dataList.Add(obj); + } } var jsonSerialiser = new JavaScriptSerializer(); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs index eac0381f..7067bd4c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Code/Helpers/PackagesHelper.cs @@ -250,25 +250,25 @@ namespace WebsitePanel.Portal #region Service Items Paged Search DataSet dsObjectItemsPaged; - public int SearchObjectItemsPagedCount(string filterColumn, string filterValue, string colType) + public int SearchObjectItemsPagedCount(string filterColumn, string filterValue, string fullType, string colType) { return (int)dsObjectItemsPaged.Tables[0].Rows[0][0]; } public DataTable SearchObjectItemsPaged(int maximumRows, int startRowIndex, string sortColumn, - string filterColumn, string filterValue, string colType) + string filterColumn, string filterValue, string colType, string fullType) { dsObjectItemsPaged = ES.Services.Packages.GetSearchObject(PanelSecurity.EffectiveUserId, filterColumn, String.Format("%{0}%", filterValue), - 0, 0, sortColumn, startRowIndex, maximumRows, colType); + 0, 0, sortColumn, startRowIndex, maximumRows, colType, fullType); return dsObjectItemsPaged.Tables[2]; } - public DataTable SearchObjectTypes(string filterColumn, string filterValue, string sortColumn) + public DataTable SearchObjectTypes(string filterColumn, string filterValue, string fullType, string sortColumn) { dsObjectItemsPaged = ES.Services.Packages.GetSearchObject(PanelSecurity.EffectiveUserId, filterColumn, String.Format("%{0}%", filterValue), - 0, 0, sortColumn, 0, 0, ""); + 0, 0, sortColumn, 0, 0, "",fullType); return dsObjectItemsPaged.Tables[1]; } //TODO END diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SearchObject.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SearchObject.ascx index 5defa1d4..8a29c88c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SearchObject.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SearchObject.ascx @@ -91,6 +91,7 @@ + @@ -99,6 +100,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx index 51e3e0af..e92cf5c7 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx @@ -6,6 +6,14 @@ - + @@ -70,6 +81,18 @@ type="hidden" > + + + +
-
+ diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx.cs index db40d03c..3de1b7b4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx.cs @@ -44,6 +44,13 @@ namespace WebsitePanel.Portal.SkinControls { public partial class GlobalSearch : WebsitePanelControlBase { + const string TYPE_WEBSITE = "WebSite"; + const string TYPE_DOMAIN = "Domain"; + const string TYPE_ORGANIZATION = "Organization"; + const string PID_SPACE_WEBSITES = "SpaceWebSites"; + const string PID_SPACE_DIMAINS = "SpaceDomains"; + const string PID_SPACE_EXCHANGESERVER = "SpaceExchangeServer"; + class Tab { int index; @@ -115,6 +122,41 @@ namespace WebsitePanel.Portal.SkinControls "ItemTypeID=" + ddlItemType.SelectedValue)); */ } + public string GetItemPageUrl(string fullType, string itemType, int itemId, int spaceId) + { + string res = ""; + if (fullType.Equals("Users")) + { + res = PortalUtils.GetUserHomePageUrl(itemId); + } + else + { + switch (itemType) + { + case TYPE_WEBSITE: + res = PortalUtils.NavigatePageURL(PID_SPACE_WEBSITES, "ItemID", itemId.ToString(), + PortalUtils.SPACE_ID_PARAM + "=" + spaceId, "ctl=edit_item", + "moduleDefId=websites"); + break; + case TYPE_DOMAIN: + res = PortalUtils.NavigatePageURL(PID_SPACE_DIMAINS, "DomainID", itemId.ToString(), + PortalUtils.SPACE_ID_PARAM + "=" + spaceId, "ctl=edit_item", + "moduleDefId=domains"); + break; + case TYPE_ORGANIZATION: + res = PortalUtils.NavigatePageURL(PID_SPACE_EXCHANGESERVER, "ItemID", itemId.ToString(), + PortalUtils.SPACE_ID_PARAM + "=" + spaceId, "ctl=edit_item", + "moduleDefId=ExchangeServer"); + break; + default: + res = PortalUtils.GetSpaceHomePageUrl(itemId); + break; + } + } + + return res; + } + //TODO START protected void btnSearchObject_Click(object sender, EventArgs e) { @@ -125,25 +167,46 @@ namespace WebsitePanel.Portal.SkinControls { if (strFullType == "Users") { - Response.Redirect(PortalUtils.NavigatePageURL(PortalUtils.GetUsersSearchPageId(), - PortalUtils.USER_ID_PARAM, PanelSecurity.SelectedUserId.ToString(), - "Query=" + Server.UrlEncode(strText), - "Criteria=" + Server.UrlEncode(strColumnType) - )); + if (tbObjectId.Text.Length > 0) + { + Response.Redirect(PortalUtils.GetUserHomePageUrl(Int32.Parse(tbObjectId.Text))); + } + else + { + Response.Redirect(PortalUtils.NavigatePageURL(PortalUtils.GetUsersSearchPageId(), + PortalUtils.USER_ID_PARAM, PanelSecurity.SelectedUserId.ToString(), + "Query=" + Server.UrlEncode(strText), + "Criteria=" + Server.UrlEncode(strColumnType) + )); + } } else if (strFullType == "Space") { - Response.Redirect(PortalUtils.NavigatePageURL(PortalUtils.GetSpacesSearchPageId(), - PortalUtils.USER_ID_PARAM, PanelSecurity.SelectedUserId.ToString(), - "Query=" + Server.UrlEncode(strText), - "Criteria=" + Server.UrlEncode(strColumnType) - )); + if (tbObjectId.Text.Length > 0) + { + Response.Redirect(GetItemPageUrl(strFullType,tbSearchColumnType.Text,Int32.Parse(tbObjectId.Text),Int32.Parse(tbPackageId.Text))); + } + else + { + Response.Redirect(PortalUtils.NavigatePageURL(PortalUtils.GetSpacesSearchPageId(), + PortalUtils.USER_ID_PARAM, PanelSecurity.SelectedUserId.ToString(), + "Query=" + Server.UrlEncode(strText), + "Criteria=" + Server.UrlEncode(strColumnType) + )); + } } else { - Response.Redirect(PortalUtils.NavigatePageURL(PortalUtils.GetObjectSearchPageId(), - PortalUtils.USER_ID_PARAM, PanelSecurity.SelectedUserId.ToString(), - "Query=" + Server.UrlEncode(strText))); + if (tbObjectId.Text.Length > 0) + { + Response.Redirect(GetItemPageUrl(strFullType, tbSearchColumnType.Text, Int32.Parse(tbObjectId.Text), Int32.Parse(tbPackageId.Text))); + } + else + { + Response.Redirect(PortalUtils.NavigatePageURL(PortalUtils.GetObjectSearchPageId(), + PortalUtils.USER_ID_PARAM, PanelSecurity.SelectedUserId.ToString(), + "Query=" + Server.UrlEncode(strText))); + } } } else diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx.designer.cs index 1fc6e519..df1febe1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SkinControls/GlobalSearch.ascx.designer.cs @@ -19,7 +19,7 @@ namespace WebsitePanel.Portal.SkinControls { /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. ///
- protected global::System.Web.UI.UpdatePanel updatePanelUsers; + protected global::System.Web.UI.WebControls.Panel updatePanelUsers; /// /// tbSearch control. @@ -57,6 +57,24 @@ namespace WebsitePanel.Portal.SkinControls { /// protected global::System.Web.UI.WebControls.TextBox tbSearchText; + /// + /// tbObjectId control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox tbObjectId; + + /// + /// tbPackageId control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox tbPackageId; + /// /// ImageButton1 control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/SearchBox.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/SearchBox.ascx index f6e0b76f..4a9ede81 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/SearchBox.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/SearchBox.ascx @@ -3,8 +3,12 @@