Added: HostHeader import. To ensure all pointers/hostheaders are within the
domains table. This is mandatory to ensure a proper dns provisioning
This commit is contained in:
parent
ff5aeda5f7
commit
2f42401a73
8 changed files with 401 additions and 68 deletions
|
@ -29,8 +29,9 @@
|
|||
using System;
|
||||
using System.Data;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers;
|
||||
using WebsitePanel.Providers.Web;
|
||||
|
||||
namespace WebsitePanel.EnterpriseServer
|
||||
{
|
||||
|
@ -68,69 +69,74 @@ namespace WebsitePanel.EnterpriseServer
|
|||
if (accountCheck < 0) return items;
|
||||
|
||||
// load item type
|
||||
ServiceProviderItemType itemType = PackageController.GetServiceItemType(itemTypeId);
|
||||
|
||||
// load group
|
||||
ResourceGroupInfo group = ServerController.GetResourceGroup(itemType.GroupId);
|
||||
|
||||
// get service id
|
||||
int serviceId = PackageController.GetPackageServiceId(packageId, group.GroupName);
|
||||
if (serviceId == 0)
|
||||
return items;
|
||||
|
||||
DataTable dtServiceItems = PackageController.GetServiceItemsDataSet(serviceId).Tables[0];
|
||||
DataTable dtPackageItems = PackageController.GetPackageItemsDataSet(packageId).Tables[0];
|
||||
|
||||
// instantiate controller
|
||||
IImportController ctrl = null;
|
||||
try
|
||||
if (itemTypeId > 0)
|
||||
{
|
||||
List<string> importableItems = null;
|
||||
ctrl = Activator.CreateInstance(Type.GetType(group.GroupController)) as IImportController;
|
||||
if (ctrl != null)
|
||||
{
|
||||
importableItems = ctrl.GetImportableItems(packageId, itemTypeId, Type.GetType(itemType.TypeName), group);
|
||||
}
|
||||
ServiceProviderItemType itemType = PackageController.GetServiceItemType(itemTypeId);
|
||||
|
||||
foreach (string importableItem in importableItems)
|
||||
{
|
||||
// load group
|
||||
ResourceGroupInfo group = ServerController.GetResourceGroup(itemType.GroupId);
|
||||
|
||||
// filter items by service
|
||||
bool serviceContains = false;
|
||||
foreach (DataRow dr in dtServiceItems.Rows)
|
||||
// get service id
|
||||
int serviceId = PackageController.GetPackageServiceId(packageId, group.GroupName);
|
||||
if (serviceId == 0)
|
||||
return items;
|
||||
|
||||
DataTable dtServiceItems = PackageController.GetServiceItemsDataSet(serviceId).Tables[0];
|
||||
DataTable dtPackageItems = PackageController.GetPackageItemsDataSet(packageId).Tables[0];
|
||||
|
||||
// instantiate controller
|
||||
IImportController ctrl = null;
|
||||
try
|
||||
{
|
||||
List<string> importableItems = null;
|
||||
ctrl = Activator.CreateInstance(Type.GetType(group.GroupController)) as IImportController;
|
||||
if (ctrl != null)
|
||||
{
|
||||
string serviceItemName = (string)dr["ItemName"];
|
||||
int serviceItemTypeId = (int)dr["ItemTypeId"];
|
||||
|
||||
if (String.Compare(importableItem, serviceItemName, true) == 0
|
||||
&& serviceItemTypeId == itemTypeId)
|
||||
{
|
||||
serviceContains = true;
|
||||
break;
|
||||
}
|
||||
importableItems = ctrl.GetImportableItems(packageId, itemTypeId, Type.GetType(itemType.TypeName), group);
|
||||
}
|
||||
|
||||
// filter items by package
|
||||
bool packageContains = false;
|
||||
foreach (DataRow dr in dtPackageItems.Rows)
|
||||
foreach (string importableItem in importableItems)
|
||||
{
|
||||
string packageItemName = (string)dr["ItemName"];
|
||||
int packageItemTypeId = (int)dr["ItemTypeId"];
|
||||
|
||||
if (String.Compare(importableItem, packageItemName, true) == 0
|
||||
&& packageItemTypeId == itemTypeId)
|
||||
// filter items by service
|
||||
bool serviceContains = false;
|
||||
foreach (DataRow dr in dtServiceItems.Rows)
|
||||
{
|
||||
packageContains = true;
|
||||
break;
|
||||
string serviceItemName = (string)dr["ItemName"];
|
||||
int serviceItemTypeId = (int)dr["ItemTypeId"];
|
||||
|
||||
if (String.Compare(importableItem, serviceItemName, true) == 0
|
||||
&& serviceItemTypeId == itemTypeId)
|
||||
{
|
||||
serviceContains = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// filter items by package
|
||||
bool packageContains = false;
|
||||
foreach (DataRow dr in dtPackageItems.Rows)
|
||||
{
|
||||
string packageItemName = (string)dr["ItemName"];
|
||||
int packageItemTypeId = (int)dr["ItemTypeId"];
|
||||
|
||||
if (String.Compare(importableItem, packageItemName, true) == 0
|
||||
&& packageItemTypeId == itemTypeId)
|
||||
{
|
||||
packageContains = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!serviceContains && !packageContains)
|
||||
items.Add(importableItem);
|
||||
}
|
||||
|
||||
if (!serviceContains && !packageContains)
|
||||
items.Add(importableItem);
|
||||
}
|
||||
|
||||
catch { /* do nothing */ }
|
||||
}
|
||||
catch { /* do nothing */ }
|
||||
else
|
||||
return GetImportableCustomerItems(packageId, itemTypeId);
|
||||
|
||||
return items;
|
||||
}
|
||||
|
@ -172,19 +178,35 @@ namespace WebsitePanel.EnterpriseServer
|
|||
TaskManager.IndicatorCurrent = 0;
|
||||
|
||||
Dictionary<int, List<string>> groupedItems = new Dictionary<int, List<string>>();
|
||||
List<string> customItems = new List<string>();
|
||||
|
||||
// sort by groups
|
||||
foreach (string item in items)
|
||||
{
|
||||
|
||||
string[] itemParts = item.Split('|');
|
||||
int itemTypeId = Utils.ParseInt(itemParts[0], 0);
|
||||
string itemName = itemParts[1];
|
||||
if (!item.StartsWith("+"))
|
||||
{
|
||||
int itemTypeId = Utils.ParseInt(itemParts[0], 0);
|
||||
string itemName = itemParts[1];
|
||||
|
||||
// add to group
|
||||
if (!groupedItems.ContainsKey(itemTypeId))
|
||||
groupedItems[itemTypeId] = new List<string>();
|
||||
// add to group
|
||||
if (!groupedItems.ContainsKey(itemTypeId))
|
||||
groupedItems[itemTypeId] = new List<string>();
|
||||
|
||||
groupedItems[itemTypeId].Add(itemName);
|
||||
groupedItems[itemTypeId].Add(itemName);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (itemParts[0])
|
||||
{
|
||||
case ("+100"):
|
||||
if (itemParts.Length > 2)
|
||||
customItems.Add(item);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// import each group
|
||||
|
@ -226,9 +248,64 @@ namespace WebsitePanel.EnterpriseServer
|
|||
catch { /* do nothing */ }
|
||||
}
|
||||
|
||||
foreach (string s in customItems)
|
||||
{
|
||||
try
|
||||
{
|
||||
string[] sParts = s.Split('|');
|
||||
switch (sParts[0])
|
||||
{
|
||||
case "+100":
|
||||
TaskManager.Write(String.Format("Import {0}", sParts[4]));
|
||||
|
||||
int result = WebServerController.ImporHostHeader(int.Parse(sParts[2],0), int.Parse(sParts[3],0), int.Parse(sParts[5],0));
|
||||
|
||||
if (result < 0)
|
||||
TaskManager.WriteError(String.Format("Failed to Import {0} ,error: {1}: ", sParts[4], result.ToString()));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch { /* do nothing */ }
|
||||
|
||||
TaskManager.IndicatorCurrent++;
|
||||
}
|
||||
|
||||
TaskManager.IndicatorCurrent = items.Length;
|
||||
|
||||
TaskManager.CompleteTask();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static List<string> GetImportableCustomerItems(int packageId, int itemTypeId)
|
||||
{
|
||||
|
||||
List<string> items = new List<string>();
|
||||
PackageInfo packageInfo = PackageController.GetPackage(packageId);
|
||||
if (packageInfo == null) return items;
|
||||
|
||||
switch (itemTypeId)
|
||||
{
|
||||
case -100:
|
||||
List<UserInfo> users = UserController.GetUsers(packageInfo.UserId, true);
|
||||
foreach (UserInfo user in users)
|
||||
{
|
||||
List<PackageInfo> packages = PackageController.GetPackages(user.UserId);
|
||||
foreach (PackageInfo package in packages)
|
||||
{
|
||||
List<WebSite> webSites = WebServerController.GetWebSites(package.PackageId, false);
|
||||
foreach (WebSite webSite in webSites)
|
||||
{
|
||||
items.Add(user.Username+"|"+user.UserId.ToString()+"|"+package.PackageId.ToString()+"|"+webSite.SiteId+"|"+webSite.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3689,6 +3689,97 @@ Please ensure the space has been allocated {0} IP address as a dedicated one and
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static int ImporHostHeader(int userId, int packageId, int siteId)
|
||||
{
|
||||
WebSite siteItem = (WebSite)PackageController.GetPackageItem(siteId);
|
||||
if (siteItem == null)
|
||||
return -1;
|
||||
|
||||
// load live site from service
|
||||
WebServer web = new WebServer();
|
||||
ServiceProviderProxy.Init(web, siteItem.ServiceId);
|
||||
|
||||
// Verify if already exists
|
||||
List<DomainInfo> domains = ServerController.GetDomains(packageId);
|
||||
|
||||
// Get hostheader
|
||||
foreach (ServerBinding b in web.GetSiteBindings(siteItem.SiteId))
|
||||
{
|
||||
if ((!DoesHeaderExistInDomains(b.Host.ToLower(), domains)) && (!string.IsNullOrEmpty(b.Host)))
|
||||
{
|
||||
// If not get domain info and add to domains
|
||||
int domainId = FindDomainForHeader(b.Host.ToLower(), domains);
|
||||
if (domainId > 0)
|
||||
{
|
||||
DomainInfo domain = ServerController.GetDomain(domainId);
|
||||
DomainInfo newDomain = new DomainInfo();
|
||||
newDomain.DomainName = b.Host.ToLower();
|
||||
newDomain.PackageId = domain.PackageId;
|
||||
|
||||
int newDomainID = ServerController.AddDomain(newDomain, domain.IsInstantAlias, false);
|
||||
if (newDomainID > 0)
|
||||
{
|
||||
newDomain = ServerController.GetDomain(newDomainID);
|
||||
if (newDomain != null)
|
||||
{
|
||||
newDomain.WebSiteId = siteId;
|
||||
newDomain.ZoneItemId = domain.ZoneItemId;
|
||||
newDomain.DomainItemId = domain.DomainId;
|
||||
newDomain.IsDomainPointer = true;
|
||||
ServerController.UpdateDomain(newDomain);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static bool DoesHeaderExistInDomains(string header, List<DomainInfo> domains)
|
||||
{
|
||||
bool bExist = false;
|
||||
|
||||
if (!string.IsNullOrEmpty(header))
|
||||
{
|
||||
foreach (DomainInfo d in domains)
|
||||
{
|
||||
if ((header == d.DomainName.ToLower()) &&
|
||||
(d.IsDomainPointer))
|
||||
{
|
||||
bExist = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return bExist;
|
||||
}
|
||||
|
||||
|
||||
private static int FindDomainForHeader(string header, List<DomainInfo> domains)
|
||||
{
|
||||
int domainId = 0;
|
||||
|
||||
while (header.IndexOf(".") != -1)
|
||||
{
|
||||
header = header.Substring(header.IndexOf(".") + 1);
|
||||
|
||||
foreach (DomainInfo d in domains)
|
||||
{
|
||||
if ((header == d.DomainName.ToLower()) && (!d.IsDomainPointer))
|
||||
{
|
||||
domainId = d.DomainId;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return domainId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region IBackupController Members
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<add name="EnterpriseServer" connectionString="server=HSTPROV01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=aj7ep6fyhmw3b5qeth7c;" />
|
||||
<add name="EnterpriseServer" connectionString="server=HSTWSP01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=pserxfbnlc6hwmdedbp0;" providerName="System.Data.SqlClient" />
|
||||
-->
|
||||
<add name="EnterpriseServer" connectionString="server=HSTPROV01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=aj7ep6fyhmw3b5qeth7c;" />
|
||||
<add name="EnterpriseServer" connectionString="server=HSTWSP01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=pserxfbnlc6hwmdedbp0;" providerName="System.Data.SqlClient" />
|
||||
</connectionStrings>
|
||||
<appSettings>
|
||||
<!-- A1D4KDHUE83NKHddF -->
|
||||
|
@ -17,7 +17,7 @@
|
|||
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
|
||||
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" />
|
||||
-->
|
||||
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
|
||||
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" />
|
||||
<!-- A1D4KDHUE83NKHddF -->
|
||||
<add key="WebsitePanel.EncryptionEnabled" value="true" />
|
||||
<!-- Web Applications -->
|
||||
|
|
|
@ -2118,6 +2118,10 @@
|
|||
<data name="ServiceItemType.WebSite" xml:space="preserve">
|
||||
<value>Web Site</value>
|
||||
</data>
|
||||
<data name="ServiceItemType.HostHeader" xml:space="preserve">
|
||||
<value>Web Site Host Header</value>
|
||||
</data>
|
||||
|
||||
<data name="AuditLogSource.APP_INSTALLER" xml:space="preserve">
|
||||
<value>Applications Installer</value>
|
||||
</data>
|
||||
|
|
|
@ -1,9 +1,42 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SpaceImportResources.ascx.cs" Inherits="WebsitePanel.Portal.SpaceImportResources" %>
|
||||
<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||
|
||||
<script type="text/javascript">
|
||||
function TreeViewCheckBoxClicked(Check_Event)
|
||||
{
|
||||
var objElement;
|
||||
try
|
||||
{
|
||||
objElement = window.event.srcElement;
|
||||
}
|
||||
catch (Error)
|
||||
{
|
||||
}
|
||||
|
||||
if (objElement != null)
|
||||
{
|
||||
if (objElement.tagName == "INPUT" && objElement.type == "checkbox")
|
||||
{
|
||||
__doPostBack("", "");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Check_Event != null)
|
||||
{
|
||||
if (Check_Event.target.toString() == "[object HTMLInputElement]")
|
||||
{
|
||||
__doPostBack("", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="FormBody">
|
||||
<asp:treeview runat="server" id="tree" populatenodesfromclient="true" NodeIndent="10"
|
||||
showexpandcollapse="true" expanddepth="0" ontreenodepopulate="tree_TreeNodePopulate">
|
||||
showexpandcollapse="true" expanddepth="0" ontreenodepopulate="tree_TreeNodePopulate" OnTreeNodeCheckChanged="tree_TreeNodeCheckChanged" >
|
||||
<LevelStyles>
|
||||
<asp:TreeNodeStyle CssClass="FileManagerTreeNode" />
|
||||
<asp:TreeNodeStyle CssClass="FileManagerTreeNode" />
|
||||
|
|
|
@ -45,6 +45,8 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
public partial class SpaceImportResources : WebsitePanelModuleBase
|
||||
{
|
||||
private static TreeNode rootNode;
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
// enable async tasks
|
||||
|
@ -52,6 +54,8 @@ namespace WebsitePanel.Portal
|
|||
|
||||
if (!IsPostBack)
|
||||
{
|
||||
tree.Attributes.Add("onClick", "TreeViewCheckBoxClicked(event)");
|
||||
|
||||
PrepareTree();
|
||||
}
|
||||
}
|
||||
|
@ -64,7 +68,7 @@ namespace WebsitePanel.Portal
|
|||
tree.NoExpandImageUrl = PortalUtils.GetThemedImage("empty.gif");
|
||||
tree.Nodes.Clear();
|
||||
|
||||
TreeNode rootNode = new TreeNode();
|
||||
rootNode = new TreeNode();
|
||||
rootNode.ImageUrl = PortalUtils.GetThemedImage("folder.png");
|
||||
rootNode.Text = GetLocalizedString("Text.Resources");
|
||||
rootNode.Value = "Root";
|
||||
|
@ -72,16 +76,28 @@ namespace WebsitePanel.Portal
|
|||
tree.Nodes.Add(rootNode);
|
||||
|
||||
// populate root node
|
||||
TreeNode node;
|
||||
ServiceProviderItemType[] types = ES.Services.Import.GetImportableItemTypes(PanelSecurity.PackageId);
|
||||
foreach (ServiceProviderItemType type in types)
|
||||
{
|
||||
TreeNode node = new TreeNode();
|
||||
node = new TreeNode();
|
||||
node.Value = "-" + type.ItemTypeId.ToString();
|
||||
node.Text = GetSharedLocalizedString("ServiceItemType." + type.DisplayName);
|
||||
node.PopulateOnDemand = true;
|
||||
node.ImageUrl = PortalUtils.GetThemedImage("folder.png");
|
||||
rootNode.ChildNodes.Add(node);
|
||||
}
|
||||
|
||||
// Add Import HostHeaders
|
||||
node = new TreeNode();
|
||||
node.Value = "+100";
|
||||
node.Text = GetSharedLocalizedString("ServiceItemType.HostHeader");
|
||||
node.PopulateOnDemand = true;
|
||||
node.ImageUrl = PortalUtils.GetThemedImage("folder.png");
|
||||
rootNode.ChildNodes.Add(node);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected void tree_TreeNodePopulate(object sender, TreeNodeEventArgs e)
|
||||
|
@ -100,6 +116,58 @@ namespace WebsitePanel.Portal
|
|||
e.Node.ChildNodes.Add(node);
|
||||
}
|
||||
}
|
||||
|
||||
if (e.Node.Value.StartsWith("+"))
|
||||
{
|
||||
int itemTypeId = Utils.ParseInt(e.Node.Value.Substring(1), 0);
|
||||
string[] items = ES.Services.Import.GetImportableItems(PanelSecurity.PackageId, itemTypeId * -1);
|
||||
|
||||
switch (itemTypeId)
|
||||
{
|
||||
case 100:
|
||||
|
||||
TreeNode headerNode = new TreeNode();
|
||||
headerNode.Text = GetSharedLocalizedString("ServiceItemType.HostHeader");
|
||||
headerNode.Value = "+" + itemTypeId.ToString();
|
||||
headerNode.ShowCheckBox = true;
|
||||
e.Node.ChildNodes.Add(headerNode);
|
||||
|
||||
foreach (string item in items)
|
||||
{
|
||||
string[] objectData = item.Split('|');
|
||||
|
||||
TreeNode userNode = null;
|
||||
foreach (TreeNode n in headerNode.ChildNodes)
|
||||
{
|
||||
if (n.Value == "+" + itemTypeId.ToString() + "|" + objectData[1]) ;
|
||||
{
|
||||
userNode = n;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (userNode == null)
|
||||
{
|
||||
userNode = new TreeNode();
|
||||
userNode.Text = objectData[0];
|
||||
userNode.Value = "+" + itemTypeId.ToString() + "|" + objectData[1];
|
||||
userNode.ShowCheckBox = true;
|
||||
headerNode.ChildNodes.Add(userNode);
|
||||
}
|
||||
|
||||
TreeNode siteNode = new TreeNode();
|
||||
siteNode.Text = objectData[3];
|
||||
siteNode.Value = "+" + itemTypeId.ToString() + "|" + item;
|
||||
siteNode.ShowCheckBox = true;
|
||||
userNode.ChildNodes.Add(siteNode);
|
||||
|
||||
headerNode.Expand();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void btnImport_Click(object sender, EventArgs e)
|
||||
|
@ -142,5 +210,33 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
RedirectSpaceHomePage();
|
||||
}
|
||||
|
||||
|
||||
void checkChildNodes(TreeNodeCollection ptnChildren, bool isChecked)
|
||||
{
|
||||
foreach (TreeNode childNode in ptnChildren)
|
||||
{
|
||||
childNode.Checked = isChecked;
|
||||
|
||||
|
||||
if (childNode.ChildNodes.Count > 0)
|
||||
{
|
||||
this.checkChildNodes(childNode.ChildNodes, isChecked);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void tree_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
|
||||
{
|
||||
foreach (TreeNode childNode in e.Node.ChildNodes)
|
||||
{
|
||||
childNode.Checked = e.Node.Checked;
|
||||
|
||||
if (childNode.ChildNodes.Count > 0)
|
||||
{
|
||||
this.checkChildNodes(childNode.ChildNodes, e.Node.Checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,19 +1,51 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.42
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal {
|
||||
|
||||
|
||||
public partial class SpaceImportResources {
|
||||
protected WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
protected System.Web.UI.WebControls.TreeView tree;
|
||||
protected System.Web.UI.WebControls.Button btnImport;
|
||||
protected System.Web.UI.WebControls.Button btnCancel;
|
||||
|
||||
/// <summary>
|
||||
/// asyncTasks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks;
|
||||
|
||||
/// <summary>
|
||||
/// tree control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TreeView tree;
|
||||
|
||||
/// <summary>
|
||||
/// btnImport control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnImport;
|
||||
|
||||
/// <summary>
|
||||
/// btnCancel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnCancel;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ namespace WebsitePanel.Portal
|
|||
lnkImportResources.NavigateUrl = EditUrl(PortalUtils.SPACE_ID_PARAM, PanelSecurity.PackageId.ToString(), "import");
|
||||
|
||||
lnkBackup.Visible = lnkRestore.Visible = PortalUtils.PageExists("Backup");
|
||||
lnkImportResources.Visible = (PanelSecurity.PackageId > 1 &&
|
||||
lnkImportResources.Visible = (PanelSecurity.PackageId >= 1 &&
|
||||
PanelSecurity.LoggedUser.Role == UserRole.Administrator);
|
||||
|
||||
if (PanelSecurity.SelectedUser.RoleId.Equals(1))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue