protected void Page_Load(object sender, EventArgs e) { siteId = QueryHelper.GetInteger("siteid", 0); si = SiteInfoProvider.GetSiteInfo(siteId); int domainAliasId = QueryHelper.GetInteger("domainaliasid", 0); if (!RequestHelper.IsPostBack()) { // Display error from previous save if occurred string runError = QueryHelper.GetString("runerror", String.Empty); string[] collisionSite = runError.Split(';'); if ((collisionSite.Length == 2) && (si != null)) { lblError.Text = String.Format(GetString("SiteDomain.RunError"), HTMLHelper.HTMLEncode(collisionSite[0]), HTMLHelper.HTMLEncode(collisionSite[1]), HTMLHelper.HTMLEncode(si.DisplayName)); lblError.Visible = true; } } InitializeComponents(); if (QueryHelper.GetString("saved", String.Empty) != String.Empty) { lblInfo.Text = GetString("General.ChangesSaved"); lblInfo.Visible = true; } alias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(domainAliasId); if (!RequestHelper.IsPostBack()) { LoadData(); } string currentAlias; // Update breadcrumb label if (alias != null) { currentAlias = alias.SiteDomainAliasName; } else { // New domain alias currentAlias = GetString("SiteDomain.NewAlias"); } // initializes page title control string[,] breadcrumbs = new string[2, 3]; breadcrumbs[0, 0] = GetString("SiteDomain.ItemListLink"); breadcrumbs[0, 1] = ResolveUrl("~/CMSSiteManager/Sites/Site_Edit_DomainAliases.aspx?siteid=" + siteId); breadcrumbs[0, 2] = ""; breadcrumbs[1, 0] = currentAlias; breadcrumbs[1, 1] = ""; breadcrumbs[1, 2] = ""; this.CurrentMaster.Title.Breadcrumbs = breadcrumbs; this.CurrentMaster.Title.HelpTopicName = "edit_and_new_alias"; }
/// <summary> /// Deletes site domain alias. Called when the "Delete alias" button is pressed. /// Expects the CreateSiteDomainAlias method to be run first. /// </summary> private bool DeleteSiteDomainAlias() { // Get the site domain alias SiteDomainAliasInfo deleteAlias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo("127.0.0.1", CMSContext.CurrentSiteID); // Delete the site domain alias SiteDomainAliasInfoProvider.DeleteSiteDomainAliasInfo(deleteAlias); return(deleteAlias != null); }
/// <summary> /// AfterDataLoad event handler of UIForm. /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">Event argument</param> private void Control_OnAfterDataLoad(object sender, EventArgs e) { domainInfo = Control.EditedObject as SiteDomainAliasInfo; siteInfo = Control.UIContext.EditedObjectParent as SiteInfo; // Set SiteID of SiteCultureSelector in order to offer only cultures assigned to the edited site. FormEngineUserControl visitorCultureControl = Control.FieldControls["SiteDefaultVisitorCulture"]; if (visitorCultureControl != null) { visitorCultureControl.SetValue("SiteID", siteInfo.SiteID); } }
/// <inheritdoc/> public void RemoveSiteDomainAlias(ISite site, string aliasName) { // Gets the site object SiteInfo siteToWork = SiteInfoProvider.GetSiteInfo(site.SiteName); if (siteToWork != null) { // Gets the specified domain alias for the site SiteDomainAliasInfo deleteAlias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(aliasName, siteToWork.SiteID); // Deletes the site domain alias SiteDomainAliasInfoProvider.DeleteSiteDomainAliasInfo(deleteAlias); } }
/// <summary> /// Handle OnBeforeSave event of the UI form. /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">Event argument</param> protected void Control_OnBeforeSave(object sender, EventArgs e) { if (siteInfo == null) { return; } if (!Control.IsInsertMode) { // Stop the site before saving the domain alias if (siteInfo.Status == SiteStatusEnum.Running) { SiteInfoProvider.StopSite(siteInfo.SiteName); siteInfo.Status = SiteStatusEnum.Stopped; runAfterSave = true; } } // Remove protocol from the domain alias string newDomainName = ValidationHelper.GetString(Control.Data["SiteDomainAliasName"], String.Empty); newDomainName = URLHelper.RemoveProtocol(newDomainName); Control.Data["SiteDomainAliasName"] = newDomainName.Trim(); // Ensure uniqueness of the domain name if (Control.IsInsertMode) { // Check duplicity if (SiteDomainAliasInfoProvider.DomainAliasExists(newDomainName, siteInfo.SiteID)) { Control.StopProcessing = true; Control.ShowError(ResHelper.GetString("Site_Edit.AliasExists")); } } else { // Check duplicity SiteDomainAliasInfo existing = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(newDomainName, siteInfo.SiteID); if ((existing != null) && (existing.SiteDomainAliasID != domainInfo.SiteDomainAliasID)) { Control.StopProcessing = true; Control.ShowError(ResHelper.GetString("Site_Edit.AliasExists")); } } }
/// <summary> /// Deletes site domain alias. Called when the "Delete alias" button is pressed. /// Expects the CreateSiteDomainAlias method to be run first. /// </summary> private bool DeleteSiteDomainAlias() { // Get the site object SiteInfo site = SiteInfoProvider.GetSiteInfo("MyNewSite"); if (site != null) { // Get the site domain alias SiteDomainAliasInfo deleteAlias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo("127.0.0.1", site.SiteID); // Delete the site domain alias SiteDomainAliasInfoProvider.DeleteSiteDomainAliasInfo(deleteAlias); return(deleteAlias != null); } return(false); }
/// <inheritdoc/> public void AddSiteDomainAlias(ISite site, string aliasName) { // Gets the site object SiteInfo siteToWork = SiteInfoProvider.GetSiteInfo(site.SiteName); if (siteToWork != null) { // Creates a new site domain alias object SiteDomainAliasInfo newAlias = new SiteDomainAliasInfo { SiteDomainAliasName = aliasName, // Assigns the domain alias to the site SiteID = siteToWork.SiteID, }; // Saves the site domain alias to the database SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(newAlias); } }
/// <summary> /// Creates site domain alias. Called when the "Create alias" button is pressed. /// </summary> private bool AddDomainAliasToSite() { // Get the site object SiteInfo site = SiteInfoProvider.GetSiteInfo("MyNewSite"); if (site != null) { // Create new site domain alias object SiteDomainAliasInfo newAlias = new SiteDomainAliasInfo(); // Set the properties newAlias.SiteDomainAliasName = "127.0.0.1"; newAlias.SiteID = site.SiteID; // Save the site domain alias SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(newAlias); return(true); } return(false); }
/// <summary> /// Save or update domain alias. /// </summary> protected void btnOk_Click(object sender, EventArgs e) { string result = new Validator().NotEmpty(txtDomainName.Text, GetString("Site_Edit.AliasRequired")).Result; if (result == "") { // Check site of this domain alias if (si == null) { return; } // Stop the site before adding alias bool wasRunning = false; if (si.Status == SiteStatusEnum.Running) { SiteInfoProvider.StopSite(si.SiteName); si.Status = SiteStatusEnum.Stopped; wasRunning = true; } string redirect = String.Empty; // Correct domain name and return it to textbox txtDomainName.Text = URLHelper.RemoveProtocol(txtDomainName.Text); // Insert new if (alias == null) { // Check duplicity if (!SiteDomainAliasInfoProvider.DomainAliasExists(txtDomainName.Text, siteId)) { SiteDomainAliasInfo sdai = new SiteDomainAliasInfo(); sdai.SiteID = si.SiteID; sdai.SiteDomainAliasName = txtDomainName.Text.Trim(); sdai.SiteDefaultVisitorCulture = ValidationHelper.GetString(cultureSelector.Value, ""); sdai.SiteDomainDefaultAliasPath = pageSelector.Value.ToString().Trim(); sdai.SiteDomainRedirectUrl = txtRedirectUrl.Text.Trim(); SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(sdai); redirect = "Site_Edit_DomainAlias_Edit.aspx?siteId=" + sdai.SiteID + "&domainaliasid=" + sdai.SiteDomainAliasID + "&saved=1"; } else { ShowError(GetString("Site_Edit.AliasExists")); } } // Update else { // Check duplicity SiteDomainAliasInfo existing = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(txtDomainName.Text, siteId); if ((existing == null) || (existing.SiteDomainAliasID == alias.SiteDomainAliasID)) { string originalDomainAlias = alias.SiteDomainAliasName; alias.SiteDomainAliasName = txtDomainName.Text.Trim(); alias.SiteDefaultVisitorCulture = ValidationHelper.GetString(cultureSelector.Value, ""); alias.SiteDomainDefaultAliasPath = pageSelector.Value.ToString().Trim(); alias.SiteDomainRedirectUrl = txtRedirectUrl.Text.Trim(); SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(alias, originalDomainAlias); // Update breadcrumbs CurrentMaster.Title.Breadcrumbs[1, 0] = alias.SiteDomainAliasName; ShowChangesSaved(); } else { ShowError(GetString("Site_Edit.AliasExists")); } } // Run site again if (wasRunning) { DataSet ds = SiteInfoProvider.CheckDomainNameForCollision(txtDomainName.Text.Trim(), si.SiteID); if (!DataHelper.DataSourceIsEmpty(ds)) { SiteInfo runningsi = SiteInfoProvider.GetSiteInfo(ValidationHelper.GetInteger(ds.Tables[0].Rows[0]["SiteID"], 0)); if (runningsi != null) { string collisionSite = runningsi.DisplayName; string collisionDomain = ValidationHelper.GetString(ds.Tables[0].Rows[0]["SiteDomainAliasName"], ""); if (String.IsNullOrEmpty(redirect)) { redirect = "Site_Edit_DomainAlias_Edit.aspx?siteId=" + alias.SiteID + "&domainaliasid=" + alias.SiteDomainAliasID + "&saved=1"; } // Add parameter indicating run problem redirect = URLHelper.AddParameterToUrl(redirect, "runerror", collisionSite + ";" + collisionDomain); } } else { // Seems to be ok, run the site try { SiteInfoProvider.RunSite(si.SiteName); } catch (Exception ex) { ShowError(ex.Message); redirect = ""; } } } // Redirect if (redirect != "") { URLHelper.Redirect(redirect); } } else { ShowError(result); } }
protected void Page_Load(object sender, EventArgs e) { siteId = QueryHelper.GetInteger("siteid", 0); si = SiteInfoProvider.GetSiteInfo(siteId); int domainAliasId = QueryHelper.GetInteger("domainaliasid", 0); if (!RequestHelper.IsPostBack()) { // Display error from previous save if occurred string runError = QueryHelper.GetString("runerror", String.Empty); string[] collisionSite = runError.Split(';'); if ((collisionSite.Length == 2) && (si != null)) { ShowError(String.Format(GetString("SiteDomain.RunError"), HTMLHelper.HTMLEncode(collisionSite[0]), HTMLHelper.HTMLEncode(collisionSite[1]), HTMLHelper.HTMLEncode(si.DisplayName))); } } InitializeComponents(); if ((QueryHelper.GetString("saved", String.Empty) != String.Empty) && !URLHelper.IsPostback()) { ShowChangesSaved(); } alias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(domainAliasId); if (!RequestHelper.IsPostBack()) { LoadData(); } string currentAlias; // Update breadcrumb label if (alias != null) { currentAlias = alias.SiteDomainAliasName; } else { // New domain alias currentAlias = GetString("SiteDomain.NewAlias"); } // initializes page title control string[,] breadcrumbs = new string[2,3]; breadcrumbs[0, 0] = GetString("SiteDomain.ItemListLink"); breadcrumbs[0, 1] = ResolveUrl("~/CMSSiteManager/Sites/Site_Edit_DomainAliases.aspx?siteid=" + siteId); breadcrumbs[0, 2] = ""; breadcrumbs[1, 0] = currentAlias; breadcrumbs[1, 1] = ""; breadcrumbs[1, 2] = ""; CurrentMaster.Title.Breadcrumbs = breadcrumbs; CurrentMaster.Title.HelpTopicName = "edit_and_new_alias"; }
private void Begin_Execute(object sender, EventArgs e) { string url = RequestContext.CurrentRelativePath + RequestContext.CurrentQueryString; string handler = url.Split('/')[1].ToLower(); string[] notwanted = { "cmspages", "cmsmodules", "cmsformcontrols", "cmsadmincontrols", "admin", "getattachment", "getfile", "getmedia", "getmetafile", "app_themes", "cmsapi", "socialmediaapi", "searchapi", "formsapi", "api" }; // only run this code if we need to perform a redirect if (!notwanted.Contains(handler) && SiteContext.CurrentSite != null) { var currentSite = SiteContext.CurrentSite; var dictCultureAlias = CacheHelper.GetItem($"RedirectionHandler_CultureAliasDictionary_{currentSite.SiteName}") as Dictionary <string, string>; if (dictCultureAlias == null) { dictCultureAlias = new Dictionary <string, string>(); var domainAliasDict = new Dictionary <string, string>(); var primaryAliasInfo = new SiteDomainAliasInfo(); primaryAliasInfo.SiteDomainAliasName = currentSite.DomainName; primaryAliasInfo.SiteDefaultVisitorCulture = currentSite.DefaultVisitorCulture; var domainAliases = SiteDomainAliasInfoProvider.GetDomainAliases().Columns("SiteID", "SiteDomainAliasName", "SiteDefaultVisitorCulture").Where(x => x.SiteID == currentSite.SiteID).ToList(); if (domainAliases != null) { domainAliases.Add(primaryAliasInfo); var cultureBindings = CultureSiteInfoProvider.GetCultureSites().WhereEquals("SiteID", SiteContext.CurrentSiteID); foreach (var cultureBinding in cultureBindings) { var culture = CultureInfoProvider.GetCultureInfo(cultureBinding.CultureID); if (culture != null) { if (String.IsNullOrEmpty(culture.CultureAlias)) { var domainAlias = domainAliases.Where(x => x.SiteDefaultVisitorCulture == culture.CultureCode).FirstOrDefault(); if (domainAlias != null) { dictCultureAlias.Add(culture.CultureCode, "domain"); } } else { dictCultureAlias.Add(culture.CultureCode, culture.CultureAlias); } } } } CacheHelper.Add("RedirectionHandler_CultureAliasDictionary", dictCultureAlias, null, DateTime.Now.AddHours(72), System.Web.Caching.Cache.NoSlidingExpiration); } var currentCulture = LocalizationContext.CurrentCulture.CultureCode; //Not sure if this is a Kentico bug or not, but LocalizationContext.CurrentCulture.CultureCode sometimes does not actually show the current user's culture //This usually happens if this is the first request by a user on a new culture. Comparing it to the cookie value of the user always shows the correct culture if (!String.IsNullOrEmpty(CookieHelper.GetValue("CMSPreferredCulture")) && CookieHelper.GetValue("CMSPreferredCulture") != currentCulture) { currentCulture = CookieHelper.GetValue("CMSPreferredCulture"); } if (dictCultureAlias.ContainsKey(currentCulture)) { //Handle Redirect try { int site = SiteContext.CurrentSiteID; var cultureCode = currentCulture; var cultureAlias = dictCultureAlias[cultureCode]; // make sure the culture has been set for the site URLRedirectionMethods.Redirect(url, site, cultureCode, cultureAlias); } catch (ThreadAbortException threadEx) { //Do nothing: this exception is thrown by Response.Redirect() in the redirect method. We only want to log other kinds of exceptions } catch (Exception ex) { EventLogProvider.LogException("RedirectionMethods.Redirect", "REDIRECT_FAILED", ex, additionalMessage: "An exception occurred during the redirect process"); } } else { EventLogProvider.LogInformation("UrlRedirection.RedirectionHandler.Begin_Execute", "REDIRECT_FAILED", $"The culture code: {LocalizationContext.CurrentCulture.CultureCode} was not assigned to the site. Unable to redirect URL: {RequestContext.RawURL}"); } } }
/// <summary> /// Creates site domain alias. Called when the "Create alias" button is pressed. /// </summary> private bool AddDomainAliasToSite() { // Get the site object SiteInfo site = SiteInfoProvider.GetSiteInfo("MyNewSite"); if (site != null) { // Create new site domain alias object SiteDomainAliasInfo newAlias = new SiteDomainAliasInfo(); // Set the properties newAlias.SiteDomainAliasName = "127.0.0.1"; newAlias.SiteID = site.SiteID; // Save the site domain alias SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(newAlias); return true; } return false; }
/// <summary> /// Load event handler of UIForm. /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">Event argument</param> private void Control_Load(object sender, EventArgs e) { domainInfo = Control.EditedObject as SiteDomainAliasInfo; siteInfo = Control.UIContext.EditedObjectParent as SiteInfo; }