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 @@