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:
robvde 2012-10-26 12:11:44 +04:00
parent ff5aeda5f7
commit 2f42401a73
8 changed files with 401 additions and 68 deletions

View file

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

View file

@ -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);
}
}
}
}
}

View file

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

View file

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