using System;
using System.Data;
using CMS.CMSHelper;
using CMS.CMSImportExport;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.UIControls;
public partial class CMSModules_ImportExport_Controls_ImportSiteDetails : CMSUserControl
{
private SiteImportSettings mSettings = null;
#region "Properties"
///
/// Import settings.
///
public SiteImportSettings Settings
{
get
{
return mSettings;
}
set
{
mSettings = value;
}
}
///
/// Default site display name.
///
public string SiteDisplayName
{
get
{
return ValidationHelper.GetString(ViewState["SiteDisplayName"], null);
}
set
{
ViewState["SiteDisplayName"] = value;
}
}
///
/// Default site name.
///
public string SiteName
{
get
{
return ValidationHelper.GetString(ViewState["SiteName"], null);
}
set
{
ViewState["SiteName"] = value;
}
}
///
/// Default domain name.
///
public string DomainName
{
get
{
return ValidationHelper.GetString(ViewState["DomainName"], null);
}
set
{
ViewState["DomainName"] = value;
}
}
///
/// Site default culture.
///
public string Culture
{
get
{
return DataHelper.GetNotEmpty(cultureElem.Value, SettingsKeyProvider.GetStringValue("CMSDefaultCultureCode"));
}
set
{
cultureElem.Value = value;
}
}
///
/// Display culture selector.
///
public bool DisplayCulture
{
get
{
return plcCulture.Visible;
}
set
{
plcCulture.Visible = value;
}
}
///
/// If true, existing site selestion is allowed.
///
public bool AllowExisting
{
get
{
return ValidationHelper.GetBoolean(ViewState["AllowExisting"], true);
}
set
{
ViewState["AllowExisting"] = value;
}
}
///
/// If true, single object is imported.
///
public bool SingleObject
{
get
{
if (Settings == null)
{
return false;
}
return ValidationHelper.GetBoolean(Settings.GetInfo(ImportExportHelper.INFO_SINGLE_OBJECT), false);
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!StopProcessing)
{
if (!Page.IsCallback)
{
radNewSite.CheckedChanged += rad_CheckedChanged;
radExisting.CheckedChanged += rad_CheckedChanged;
rfvSiteDisplayName.ErrorMessage = GetString("ImportSite.StepSiteDetails.SiteDisplayNameError");
rfvDomain.ErrorMessage = GetString("ImportSite.StepSiteDetails.ErrorDomain");
lblSiteDisplayName.Text = GetString("ImportSite.StepSiteDetails.SiteDisplayName");
lblSiteName.Text = GetString("ImportSite.StepSiteDetails.SiteName");
lblDomain.Text = GetString("ImportSite.StepSiteDetails.DomainName");
lblCulture.Text = GetString("ImportSite.StepSiteDetails.CultureName");
lblSite.Text = GetString("ImportSite.StepSiteDetails.Site");
radExisting.Text = GetString("ImportSite.StepSiteDetails.ExistingSite");
radNewSite.Text = GetString("ImportSite.StepSiteDetails.NewSite");
if (AllowExisting)
{
siteSelector.AllowAll = false;
siteSelector.AllowEmpty = false;
if (siteSelector.DropDownSingleSelect.Items.Count == 0)
{
if (SiteInfoProvider.GetSitesCount() > 0)
{
plcNewSelection.Visible = true;
plcExisting.Visible = true;
siteSelector.Value = CMSContext.CurrentSiteID;
// Force to load now
siteSelector.Reload(true);
}
else
{
plcNewSelection.Visible = false;
plcExisting.Visible = false;
}
}
// Single site object is imported
if (!SingleObject || (Settings.TemporaryFilesCreated && !Settings.SiteIsIncluded))
{
ltlScript.Text += ScriptHelper.GetScript(
"function SelectionChanged() { \n" +
" var newSite = document.getElementById('" + radNewSite.ClientID + "').checked; \n" +
" document.getElementById('" + txtDomain.ClientID + "').disabled = !newSite; \n" +
" document.getElementById('" + txtSiteDisplayName.ValueElementID + "').disabled = !newSite; \n" +
" document.getElementById('" + txtSiteName.ValueElementID + "').disabled = !newSite; \n" +
" document.getElementById('" + siteSelector.ValueElementID + "').disabled = newSite; \n" +
"} \n"
);
radNewSite.Attributes.Add("onclick", "SelectionChanged()");
radExisting.Attributes.Add("onclick", "SelectionChanged()");
}
}
else
{
plcNewSelection.Visible = false;
plcExisting.Visible = false;
}
}
}
}
private void rad_CheckedChanged(object sender, EventArgs e)
{
rfvDomain.Enabled = radNewSite.Checked;
rfvSiteDisplayName.Enabled = radNewSite.Checked;
ReloadData(false);
}
///
/// Reload data.
///
public void ReloadData()
{
ReloadData(true);
}
///
/// Reload data.
///
/// Refresh selection
public void ReloadData(bool refreshSelection)
{
bool singleSiteObject = SingleObject && Settings.SiteIsIncluded;
// Refresh selection
if (refreshSelection)
{
radExisting.Checked = singleSiteObject;
radNewSite.Checked = !singleSiteObject;
plcExistingSelection.Visible = !singleSiteObject;
plcNewSelection.Visible = !singleSiteObject && AllowExisting && (siteSelector.DropDownSingleSelect.Items.Count != 0);
plcNewSite.Visible = !singleSiteObject;
siteSelector.Enabled = singleSiteObject;
}
txtDomain.Enabled = radNewSite.Checked;
txtSiteDisplayName.Enabled = radNewSite.Checked;
txtSiteName.Enabled = radNewSite.Checked;
cultureElem.Enabled = radNewSite.Checked;
siteSelector.Enabled = !radNewSite.Checked;
DataTable table = ImportProvider.GetObjectsData(Settings, SiteObjectType.SITE, true);
if (!DataHelper.DataSourceIsEmpty(table))
{
// Get datarow
DataRow dr = table.Rows[0];
txtSiteDisplayName.Text = SiteDisplayName ?? dr["SiteDisplayName"].ToString();
txtDomain.Text = DomainName ?? dr["SiteDomainName"].ToString();
txtSiteName.Text = SiteName ?? dr["SiteName"].ToString();
}
}
///
/// Apply control settings.
///
public bool ApplySettings()
{
// Set additional settings
Settings.ExistingSite = !radNewSite.Checked;
Settings.SetSettings(ImportExportHelper.SETTINGS_BIZFORM_DATA, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_FORUM_POSTS, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_BOARD_MESSAGES, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_USER_DASHBOARDS, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_USER_SITE_DASHBOARDS, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_PAGETEMPLATE_SCOPES, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_PAGETEMPLATE_VARIANTS, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_CUSTOMTABLE_DATA, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_WORKFLOW_SCOPES, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_WORKFLOW_TRIGGERS, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_MEDIA_FILES, radNewSite.Checked);
Settings.SetSettings(ImportExportHelper.SETTINGS_MEDIA_FILES_PHYSICAL, radNewSite.Checked);
if (radNewSite.Checked)
{
Settings.SiteId = 0;
// Get site name
var siteName = txtSiteName.Text.Trim();
if (siteName == BaseInfo.CODENAME_AUTOMATIC)
{
var dummySite = new SiteInfo()
{
SiteName = ValidationHelper.GetCodeName(txtSiteDisplayName.Text),
};
dummySite.Generalized.EnsureUniqueCodeName();
siteName = dummySite.SiteName;
}
// Get validation result
string result = new Validator().NotEmpty(txtSiteDisplayName.Text, GetString("ImportSite.StepSiteDetails.SiteDisplayNameError")).NotEmpty(siteName, GetString("ImportSite.StepSiteDetails.SiteNameError")).IsCodeName(txtSiteName.Text, GetString("ImportSite.StepSiteDetails.SiteNameNotValid")).Result;
// Check if there is site with specified code name
if (SiteInfoProvider.GetSiteInfo(siteName) != null)
{
result = GetString("NewSite_SiteDetails.ErrorSiteExists");
}
if (string.IsNullOrEmpty(result))
{
txtDomain.Text = URLHelper.RemoveProtocol(txtDomain.Text);
// Set site details
Settings.SiteDisplayName = txtSiteDisplayName.Text;
Settings.SiteDomain = txtDomain.Text;
Settings.SiteName = siteName;
}
else
{
lblError.Text = result;
return false;
}
}
else
{
// Existing site
Settings.SiteId = ValidationHelper.GetInteger(siteSelector.Value, 0);
// Get site info
SiteInfo si = SiteInfoProvider.GetSiteInfo(Settings.SiteId);
if (si != null)
{
Settings.SiteDisplayName = si.DisplayName;
Settings.SiteDomain = si.DomainName;
Settings.SiteName = si.SiteName;
}
}
return true;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
lblError.Visible = (lblError.Text != "");
}
}