public PageUrlResult UpdateCustomUrl(SaveUrlDto dto, TabInfo tab) { var portalSettings = PortalController.Instance.GetCurrentPortalSettings(); var urlPath = dto.Path.ValueOrEmpty().TrimStart('/'); bool modified; //Clean Url var options = UrlRewriterUtils.ExtendOptionsForCustomURLs( UrlRewriterUtils.GetOptionsFromSettings(new FriendlyUrlSettings(portalSettings.PortalId))); //now clean the path urlPath = FriendlyUrlController.CleanNameForUrl(urlPath, options, out modified); if (modified) { return(new PageUrlResult { Success = false, ErrorMessage = Localization.GetString("CustomUrlPathCleaned.Error"), SuggestedUrlPath = "/" + urlPath }); } //Validate for uniqueness urlPath = FriendlyUrlController.ValidateUrl(urlPath, -1, portalSettings, out modified); if (modified) { return(new PageUrlResult { Success = false, ErrorMessage = Localization.GetString("UrlPathNotUnique.Error"), SuggestedUrlPath = "/" + urlPath }); } var cultureCode = LocaleController.Instance.GetLocales(portalSettings.PortalId) .Where(l => l.Value.KeyID == dto.LocaleKey) .Select(l => l.Value.Code) .SingleOrDefault(); if (dto.StatusCodeKey.ToString(CultureInfo.InvariantCulture) == "200") { //We need to check if we are updating a current url or creating a new 200 var tabUrl = tab.TabUrls.SingleOrDefault(t => t.SeqNum == dto.Id && t.HttpStatus == "200"); if (tabUrl == null) { //Just create Url tabUrl = new TabUrlInfo { TabId = tab.TabID, SeqNum = dto.Id, PortalAliasId = dto.SiteAliasKey, PortalAliasUsage = (PortalAliasUsageType)dto.SiteAliasUsage, QueryString = dto.QueryString.ValueOrEmpty(), Url = dto.Path.ValueOrEmpty(), CultureCode = cultureCode, HttpStatus = dto.StatusCodeKey.ToString(CultureInfo.InvariantCulture), IsSystem = dto.IsSystem // false }; TabController.Instance.SaveTabUrl(tabUrl, portalSettings.PortalId, true); } else { //Change the original 200 url to a redirect tabUrl.HttpStatus = "301"; tabUrl.SeqNum = dto.Id; TabController.Instance.SaveTabUrl(tabUrl, portalSettings.PortalId, true); //Add new custom url tabUrl.Url = dto.Path.ValueOrEmpty(); tabUrl.HttpStatus = "200"; tabUrl.SeqNum = tab.TabUrls.Max(t => t.SeqNum) + 1; TabController.Instance.SaveTabUrl(tabUrl, portalSettings.PortalId, true); } } else { //Just update the url var tabUrl = new TabUrlInfo { TabId = tab.TabID, SeqNum = dto.Id, PortalAliasId = dto.SiteAliasKey, PortalAliasUsage = (PortalAliasUsageType)dto.SiteAliasUsage, QueryString = dto.QueryString.ValueOrEmpty(), Url = dto.Path.ValueOrEmpty(), CultureCode = cultureCode, HttpStatus = dto.StatusCodeKey.ToString(CultureInfo.InvariantCulture), IsSystem = dto.IsSystem // false }; TabController.Instance.SaveTabUrl(tabUrl, portalSettings.PortalId, true); } return(new PageUrlResult { Success = true }); }
private void BindData() { if (User != null) { //If trying to add a SuperUser - check that user is a SuperUser if (VerifyUserPermissions() == false) { return; } if (!Page.IsPostBack) { if ((Request.QueryString["pageno"] != null)) { PageNo = int.Parse(Request.QueryString["pageno"]); } else { PageNo = 0; } } userForm.DataSource = User; // hide username field in UseEmailAsUserName mode bool disableUsername = PortalController.GetPortalSettingAsBoolean("Registration_UseEmailAsUserName", PortalId, false); if (disableUsername) { userForm.Items[0].Visible = false; } if (!Page.IsPostBack) { userForm.DataBind(); } ctlPassword.User = User; ctlPassword.DataBind(); if ((!DisplayServices)) { servicesTab.Visible = false; } else { ctlServices.User = User; ctlServices.DataBind(); } BindUser(); ctlProfile.User = User; ctlProfile.DataBind(); dnnServicesDetails.Visible = DisplayServices; var urlSettings = new DotNetNuke.Entities.Urls.FriendlyUrlSettings(PortalSettings.PortalId); var showVanityUrl = (Config.GetFriendlyUrlProvider() == "advanced") && !User.IsSuperUser; if (showVanityUrl) { VanityUrlRow.Visible = true; if (String.IsNullOrEmpty(User.VanityUrl)) { //Clean Display Name bool modified; var options = UrlRewriterUtils.GetOptionsFromSettings(urlSettings); var cleanUrl = FriendlyUrlController.CleanNameForUrl(User.DisplayName, options, out modified); var uniqueUrl = FriendlyUrlController.ValidateUrl(cleanUrl, -1, PortalSettings, out modified).ToLowerInvariant(); VanityUrlAlias.Text = String.Format("{0}/{1}/", PortalSettings.PortalAlias.HTTPAlias, urlSettings.VanityUrlPrefix); VanityUrlTextBox.Text = uniqueUrl; ShowVanityUrl = true; } else { VanityUrl.Text = String.Format("{0}/{1}/{2}", PortalSettings.PortalAlias.HTTPAlias, urlSettings.VanityUrlPrefix, User.VanityUrl); ShowVanityUrl = false; } } } else { AddModuleMessage("NoUser", ModuleMessage.ModuleMessageType.YellowWarning, true); DisableForm(); } }
public HttpResponseMessage UpdateCustomUrl(SaveUrlDto dto) { var urlPath = dto.Path.ValueOrEmpty().TrimStart('/'); bool modified; //Clean Url var options = UrlRewriterUtils.ExtendOptionsForCustomURLs(UrlRewriterUtils.GetOptionsFromSettings(new FriendlyUrlSettings(PortalSettings.PortalId))); //now clean the path urlPath = FriendlyUrlController.CleanNameForUrl(urlPath, options, out modified); if (modified) { return(Request.CreateResponse(HttpStatusCode.OK, new { Success = false, ErrorMessage = Localization.GetString("CustomUrlPathCleaned.Error", Localization.GlobalResourceFile), SuggestedUrlPath = "/" + urlPath })); } //Validate for uniqueness urlPath = FriendlyUrlController.ValidateUrl(urlPath, -1, PortalSettings, out modified); if (modified) { return(Request.CreateResponse(HttpStatusCode.OK, new { Success = false, ErrorMessage = Localization.GetString("UrlPathNotUnique.Error", Localization.GlobalResourceFile), SuggestedUrlPath = "/" + urlPath })); } var tab = PortalSettings.ActiveTab; var cultureCode = LocaleController.Instance.GetLocales(PortalId) .Where(l => l.Value.KeyID == dto.LocaleKey) .Select(l => l.Value.Code) .SingleOrDefault(); var tabUrl = new TabUrlInfo { TabId = tab.TabID, SeqNum = dto.Id, PortalAliasId = dto.SiteAliasKey, PortalAliasUsage = (PortalAliasUsageType)dto.SiteAliasUsage, QueryString = dto.QueryString.ValueOrEmpty(), Url = dto.Path.ValueOrEmpty(), CultureCode = cultureCode, HttpStatus = dto.StatusCodeKey.ToString(CultureInfo.InvariantCulture), IsSystem = dto.IsSystem // false }; TestableTabController.Instance.SaveTabUrl(tabUrl, PortalId, true); var response = new { Success = true, }; return(Request.CreateResponse(HttpStatusCode.OK, response)); }
public HttpResponseMessage UpdateCustomUrl(SaveUrlDto dto) { var tab = PortalSettings.ActiveTab; var urlPath = dto.Path.ValueOrEmpty().TrimStart('/'); HttpResponseMessage response; if (string.IsNullOrEmpty(urlPath)) { var tabUrl = new TabUrlInfo { TabId = tab.TabID, SeqNum = dto.Id, }; TestableTabController.Instance.DeleteTabUrl(tabUrl, PortalId, true); response = Request.CreateResponse(HttpStatusCode.OK, new { Success = true, }); } else { bool modified; //Clean Url var options = UrlRewriterUtils.GetOptionsFromSettings(new FriendlyUrlSettings(PortalSettings.PortalId)); //custom urls are special in that they can contain the / character to create path levels options.ReplaceChars = options.ReplaceChars.Replace("/", ""); options.IllegalChars = options.IllegalChars.Replace("/", ""); options.RegexMatch = options.RegexMatch.Replace("[^", "[^/"); //now clean the path urlPath = FriendlyUrlController.CleanNameForUrl(urlPath, options, out modified); if (modified) { return(Request.CreateResponse(HttpStatusCode.OK, new { Success = false, ErrorMessage = Localization.GetString("UrlPathCleaned.Error", Localization.GlobalResourceFile), SuggestedUrlPath = "/" + urlPath })); } //Validate for uniqueness urlPath = FriendlyUrlController.ValidateUrl(urlPath, -1, PortalSettings, out modified); if (modified) { return(Request.CreateResponse(HttpStatusCode.OK, new { Success = false, ErrorMessage = Localization.GetString("UrlPathNotUnique.Error", Localization.GlobalResourceFile), SuggestedUrlPath = "/" + urlPath })); } var cultureCode = LocaleController.Instance.GetLocales(PortalId) .Where(l => l.Value.KeyID == dto.LocaleKey) .Select(l => l.Value.Code) .SingleOrDefault(); var tabUrl = new TabUrlInfo { TabId = tab.TabID, SeqNum = dto.Id, PortalAliasId = dto.SiteAliasKey, PortalAliasUsage = (PortalAliasUsageType)dto.SiteAliasUsage, QueryString = dto.QueryString.ValueOrEmpty(), Url = dto.Path.ValueOrEmpty(), CultureCode = cultureCode, HttpStatus = dto.StatusCodeKey.ToString(CultureInfo.InvariantCulture), IsSystem = dto.IsSystem // false }; TestableTabController.Instance.SaveTabUrl(tabUrl, PortalId, true); response = Request.CreateResponse(HttpStatusCode.OK, new { Success = true, }); } return(response); }
public PageUrlResult CreateCustomUrl(SaveUrlDto dto, TabInfo tab) { var portalSettings = PortalController.Instance.GetCurrentPortalSettings(); PortalInfo aliasPortal = new PortalAliasController().GetPortalByPortalAliasID(dto.SiteAliasKey); if (aliasPortal != null && portalSettings.PortalId != aliasPortal.PortalID) { return(new PageUrlResult { Success = false, ErrorMessage = Localization.GetString("CustomUrlPortalAlias.Error"), SuggestedUrlPath = String.Empty }); } var urlPath = dto.Path.ValueOrEmpty().TrimStart('/'); bool modified; //Clean Url var options = UrlRewriterUtils.ExtendOptionsForCustomURLs(UrlRewriterUtils.GetOptionsFromSettings(new FriendlyUrlSettings(portalSettings.PortalId))); urlPath = FriendlyUrlController.CleanNameForUrl(urlPath, options, out modified); if (modified) { return(new PageUrlResult { Success = false, ErrorMessage = Localization.GetString("CustomUrlPathCleaned.Error"), SuggestedUrlPath = "/" + urlPath }); } //Validate for uniqueness urlPath = FriendlyUrlController.ValidateUrl(urlPath, -1, portalSettings, out modified); if (modified) { return(new PageUrlResult { Success = false, ErrorMessage = Localization.GetString("UrlPathNotUnique.Error"), SuggestedUrlPath = "/" + urlPath }); } if (tab.TabUrls.Any(u => u.Url.ToLowerInvariant() == dto.Path.ValueOrEmpty().ToLowerInvariant() && (u.PortalAliasId == dto.SiteAliasKey || u.PortalAliasId == -1))) { return(new PageUrlResult { Success = false, ErrorMessage = Localization.GetString("DuplicateUrl.Error") }); } var seqNum = (tab.TabUrls.Count > 0) ? tab.TabUrls.Max(t => t.SeqNum) + 1 : 1; var portalLocales = LocaleController.Instance.GetLocales(portalSettings.PortalId); var cultureCode = portalLocales.Where(l => l.Value.KeyID == dto.LocaleKey) .Select(l => l.Value.Code) .SingleOrDefault() ?? portalSettings.CultureCode; var portalAliasUsage = (PortalAliasUsageType)dto.SiteAliasUsage; if (portalAliasUsage == PortalAliasUsageType.Default) { var alias = PortalAliasController.Instance.GetPortalAliasesByPortalId(portalSettings.PortalId) .SingleOrDefault(a => a.PortalAliasID == dto.SiteAliasKey); if (string.IsNullOrEmpty(cultureCode) || alias == null) { return(new PageUrlResult { Success = false, ErrorMessage = Localization.GetString("InvalidRequest.Error") }); } } else { var cultureAlias = PortalAliasController.Instance.GetPortalAliasesByPortalId(portalSettings.PortalId) .FirstOrDefault(a => a.CultureCode == cultureCode); if (portalLocales.Count > 1 && !portalSettings.ContentLocalizationEnabled && (string.IsNullOrEmpty(cultureCode) || cultureAlias == null)) { return(new PageUrlResult { Success = false, ErrorMessage = Localization.GetString("InvalidRequest.Error") }); } } var tabUrl = new TabUrlInfo { TabId = tab.TabID, SeqNum = seqNum, PortalAliasId = dto.SiteAliasKey, PortalAliasUsage = portalAliasUsage, QueryString = dto.QueryString.ValueOrEmpty(), Url = dto.Path.ValueOrEmpty(), CultureCode = cultureCode, HttpStatus = dto.StatusCodeKey.ToString(CultureInfo.InvariantCulture), IsSystem = false }; TabController.Instance.SaveTabUrl(tabUrl, portalSettings.PortalId, true); return(new PageUrlResult { Success = true, Id = seqNum // returns Id of the created Url }); }
public FriendlyUrlOptions GetExtendOptionsForURLs(int portalId) { return(UrlRewriterUtils.ExtendOptionsForCustomURLs(UrlRewriterUtils.GetOptionsFromSettings(new FriendlyUrlSettings(portalId)))); }