public ActionResult NewSite(int slp = 1) { ViewData["Title"] = "Create New Site"; SiteBasicSettingsViewModel model = new SiteBasicSettingsViewModel(); model.ReturnPageNumber = slp; //site list return page model.SiteId = -1; model.SiteGuid = Guid.Empty; // model.SiteName = Site.SiteSettings.SiteName; model.TimeZoneId = siteManager.CurrentSite.TimeZoneId; //model.AllTimeZones = DateTimeHelper.GetTimeZoneList(); model.AllTimeZones = DateTimeHelper.GetTimeZoneList().Select(x => new SelectListItem { Text = x.DisplayName, Value = x.Id , Selected = model.TimeZoneId == x.Id }); return(View(model)); }
public ActionResult NewSite(int slp = 1) { ViewData["Title"] = "Create New Site"; SiteBasicSettingsViewModel model = new SiteBasicSettingsViewModel(); model.ReturnPageNumber = slp; //site list return page model.SiteId = -1; model.SiteGuid = Guid.Empty; // model.SiteName = Site.SiteSettings.SiteName; model.TimeZoneId = siteManager.CurrentSite.TimeZoneId; model.AllTimeZones = DateTimeHelper.GetTimeZoneList(); return(View(model)); }
public async Task <ActionResult> NewSite(SiteBasicSettingsViewModel model) { ViewData["Title"] = "Create New Site"; if (!ModelState.IsValid) { return(View(model)); } bool addHostName = false; if (multiTenantOptions.Mode == MultiTenantMode.FolderName) { if (string.IsNullOrEmpty(model.SiteFolderName)) { ModelState.AddModelError("foldererror", "Folder name is required."); return(View(model)); } ISiteFolder folder = await siteManager.GetSiteFolder(model.SiteFolderName); if (folder != null) { ModelState.AddModelError("foldererror", "The selected folder name is already in use on another site."); return(View(model)); } } else { ISiteHost host; if (!string.IsNullOrEmpty(model.HostName)) { model.HostName = model.HostName.Replace("https://", string.Empty).Replace("http://", string.Empty); host = await siteManager.GetSiteHost(model.HostName); if (host != null) { ModelState.AddModelError("hosterror", "The selected host/domain name is already in use on another site."); return(View(model)); } addHostName = true; } } SiteSettings newSite = new SiteSettings(); // only the first site created by setup page should be a server admin site newSite.IsServerAdminSite = false; newSite.SiteName = model.SiteName; if (multiTenantOptions.Mode == MultiTenantMode.FolderName) { newSite.SiteFolderName = model.SiteFolderName; } else if (addHostName) { newSite.PreferredHostName = model.HostName; } newSite.SiteIsClosed = model.IsClosed; newSite.SiteIsClosedMessage = model.ClosedMessage; //Site.SiteRepository.Save(newSite); bool result = await siteManager.CreateNewSite(newSite); result = await siteManager.CreateRequiredRolesAndAdminUser(newSite); if ((result) && (multiTenantOptions.Mode == MultiTenantMode.FolderName)) { bool folderResult = await siteManager.EnsureSiteFolder(newSite); // for folder sites we need routes that match the folder // which are normally created during app startup // can we add routes here? or do we need to force the app to recycle? // this seems to work, but we really do need to restart // so that the per folder authentication gets setup too //cloudscribe.Web.Routing.RouteRegistrar.AddDefaultRouteForNewSiteFolder(folder.FolderName); //startup.TriggerStartup(); //http://stackoverflow.com/questions/31339896/replacement-httpruntime-unloadappdomain-in-asp-net-5 } if (result && addHostName) { bool hostResult = await siteManager.AddHost( newSite.SiteGuid, newSite.SiteId, model.HostName); } if (result) { this.AlertSuccess(string.Format("Basic site settings for <b>{0}</b> were successfully created.", newSite.SiteName), true); } return(RedirectToAction("SiteList", new { pageNumber = model.ReturnPageNumber })); }
public async Task <ActionResult> SiteInfo(SiteBasicSettingsViewModel model) { // can only delete from server admin site/cannot delete server admin site if (siteManager.CurrentSite.IsServerAdminSite) { if (model.SiteGuid != siteManager.CurrentSite.SiteGuid) { model.ShowDelete = uiOptions.AllowDeleteChildSites; } } if (!ModelState.IsValid) { return(View(model)); } if (model.SiteGuid == Guid.Empty) { this.AlertDanger("oops something went wrong, site was not found.", true); return(RedirectToAction("Index")); } //model.SiteId = Site.SiteSettings.SiteId; //model.SiteGuid = Site.SiteSettings.SiteGuid; ISiteSettings selectedSite = null; if (model.SiteGuid == siteManager.CurrentSite.SiteGuid) { selectedSite = siteManager.CurrentSite; ViewData["Title"] = "Site Settings"; } else if (siteManager.CurrentSite.IsServerAdminSite) { selectedSite = await siteManager.Fetch(model.SiteGuid); ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, "{0} - Settings", selectedSite.SiteName); } if (selectedSite == null) { this.AlertDanger("oops something went wrong.", true); return(RedirectToAction("Index")); } if (multiTenantOptions.Mode == MultiTenantMode.FolderName) { if ( ((model.SiteFolderName == null) || (model.SiteFolderName.Length == 0)) && (!selectedSite.IsServerAdminSite) ) { // only the server admin site can be without a folder ModelState.AddModelError("foldererror", "Folder name is required."); return(View(model)); } ISiteFolder folder = await siteManager.GetSiteFolder(model.SiteFolderName); if ((folder != null) && (folder.SiteGuid != selectedSite.SiteGuid)) { ModelState.AddModelError("foldererror", "The selected folder name is already in use on another site."); return(View(model)); } } else if (multiTenantOptions.Mode == MultiTenantMode.HostName) { ISiteHost host; if (!string.IsNullOrEmpty(model.HostName)) { model.HostName = model.HostName.Replace("https://", string.Empty).Replace("http://", string.Empty); host = await siteManager.GetSiteHost(model.HostName); if (host != null) { if (host.SiteGuid != selectedSite.SiteGuid) { ModelState.AddModelError("hosterror", "The selected host/domain name is already in use on another site."); return(View(model)); } } else { bool hostResult = await siteManager.AddHost( selectedSite.SiteGuid, selectedSite.SiteId, model.HostName); } } selectedSite.PreferredHostName = model.HostName; } selectedSite.SiteName = model.SiteName; selectedSite.TimeZoneId = model.TimeZoneId; selectedSite.SiteFolderName = model.SiteFolderName; selectedSite.SiteIsClosed = model.IsClosed; selectedSite.SiteIsClosedMessage = model.ClosedMessage; if (layoutOptions.SelectionMode == LayoutSelectionMode.Browsing) { selectedSite.Layout = model.Layout; } bool result = await siteManager.Save(selectedSite); if ((result) && (multiTenantOptions.Mode == MultiTenantMode.FolderName)) { if (!string.IsNullOrEmpty(selectedSite.SiteFolderName)) { bool folderEnsured = await siteManager.EnsureSiteFolder(selectedSite); } } if (result) { this.AlertSuccess(string.Format("Basic site settings for <b>{0}</b> were successfully updated.", selectedSite.SiteName), true); } if ((siteManager.CurrentSite.IsServerAdminSite) //&&(Site.SiteSettings.SiteGuid != selectedSite.SiteGuid) ) { // just edited from site list so redirect there return(RedirectToAction("SiteList", new { pageNumber = model.ReturnPageNumber })); } return(RedirectToAction("Index")); }
public async Task <IActionResult> SiteInfo( Guid?siteGuid, int slp = 1) { ISiteSettings selectedSite; // only server admin site can edit other sites settings if ((siteGuid.HasValue) && (siteGuid.Value != Guid.Empty) && (siteGuid.Value != siteManager.CurrentSite.SiteGuid) && (siteManager.CurrentSite.IsServerAdminSite)) { selectedSite = await siteManager.Fetch(siteGuid.Value); ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, "{0} - Settings", selectedSite.SiteName); } else { selectedSite = siteManager.CurrentSite; ViewData["Title"] = "Site Settings"; } SiteBasicSettingsViewModel model = new SiteBasicSettingsViewModel(); model.ReturnPageNumber = slp; // site list page number to return to //model.AllTimeZones = DateTimeHelper.GetTimeZoneList(); model.AllTimeZones = DateTimeHelper.GetTimeZoneList().Select(x => new SelectListItem { Text = x.DisplayName, Value = x.Id , Selected = model.TimeZoneId == x.Id }); model.SiteId = selectedSite.SiteId; model.SiteGuid = selectedSite.SiteGuid; model.SiteName = selectedSite.SiteName; model.TimeZoneId = selectedSite.TimeZoneId; model.IsClosed = selectedSite.SiteIsClosed; model.ClosedMessage = selectedSite.SiteIsClosedMessage; if (multiTenantOptions.Mode == MultiTenantMode.FolderName) { model.SiteFolderName = selectedSite.SiteFolderName; } else if (multiTenantOptions.Mode == MultiTenantMode.HostName) { model.HostName = selectedSite.PreferredHostName; } if (layoutOptions.SelectionMode == LayoutSelectionMode.Browsing) { model.Layout = selectedSite.Layout; model.AvailableLayouts = layoutListBuilder.GetAvailableLayouts(selectedSite.SiteId); } // can only delete from server admin site/cannot delete server admin site if (siteManager.CurrentSite.IsServerAdminSite) { if (model.SiteGuid != siteManager.CurrentSite.SiteGuid) { model.ShowDelete = uiOptions.AllowDeleteChildSites; } } //dpBeginDate.Text = blog.StartDate.ToLocalTime(timeZone).ToString("g"); //TimeZoneInfo timeZone = DateTimeHelper.GetTimeZone(model.AllTimeZones, "Eastern Standard Time"); //model.TmpDate = DateTime.UtcNow.ToLocalTime(timeZone); //string timeFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ToDatePickerWithTimeFormat(); //string timeFormat = "h:mm:ss TT"; //ViewData.Add("TimeFormat", timeFormat); //ViewBag.TimeFormat = timeFormat; //string dateFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ToDatePickerFormat(); //ViewBag.DateFormat = dateFormat; return(View(model)); }