public async Task<IActionResult> SiteInfo( Guid? siteId, int slp = 1) { var selectedSite = await siteManager.GetSiteForDataOperations(siteId); // only server admin site can edit other sites settings if (selectedSite.Id != siteManager.CurrentSite.Id) { ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, sr["{0} - Settings"], selectedSite.SiteName); } else { ViewData["Title"] = sr["Site Settings"]; } var model = new SiteBasicSettingsViewModel(); model.ReturnPageNumber = slp; // site list page number to return to model.TimeZoneId = selectedSite.TimeZoneId; model.AllTimeZones = tzHelper.GetTimeZoneList().Select(x => new SelectListItem { Text = x, Value = x, Selected = model.TimeZoneId == x }); model.SiteId = selectedSite.Id; model.SiteName = selectedSite.SiteName; //if(selectedSite.AliasId != selectedSite.Id.ToString()) //{ model.AliasId = selectedSite.AliasId; //} 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; } model.Theme = selectedSite.Theme; model.AvailableThemes = layoutListBuilder.GetAvailableThemes(selectedSite.AliasId); // can only delete from server admin site/cannot delete server admin site if (siteManager.CurrentSite.IsServerAdminSite) { if (model.SiteId != siteManager.CurrentSite.Id) { model.ShowDelete = uiOptions.AllowDeleteChildSites; } } return View(model); }
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.SiteId != siteManager.CurrentSite.Id) { model.ShowDelete = uiOptions.AllowDeleteChildSites; } } if (!ModelState.IsValid) { return View(model); } if (model.SiteId == Guid.Empty) { this.AlertDanger(sr["oops something went wrong, site was not found."], true); return RedirectToAction("Index"); } ISiteSettings selectedSite = null; if (model.SiteId == siteManager.CurrentSite.Id) { selectedSite = await siteManager.GetCurrentSiteSettings(); ViewData["Title"] = sr["Site Settings"]; } else if (siteManager.CurrentSite.IsServerAdminSite) { selectedSite = await siteManager.Fetch(model.SiteId); ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, sr["{0} - Settings"], selectedSite.SiteName); } if (selectedSite == null) { this.AlertDanger(sr["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", sr["Folder name is required."]); return View(model); } var folderAvailable = await siteManager.FolderNameIsAvailable(selectedSite.Id, model.SiteFolderName); if (!folderAvailable) { 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.SiteId != selectedSite.Id) { ModelState.AddModelError("hosterror", sr["The selected host/domain name is already in use on another site."]); return View(model); } } else { await siteManager.AddHost( selectedSite.Id, model.HostName); } } selectedSite.PreferredHostName = model.HostName; } //if (model.AliasId.Length > 0) selectedSite.AliasId = model.AliasId; selectedSite.SiteName = model.SiteName; selectedSite.TimeZoneId = model.TimeZoneId; selectedSite.SiteFolderName = model.SiteFolderName; selectedSite.SiteIsClosed = model.IsClosed; selectedSite.SiteIsClosedMessage = model.ClosedMessage; selectedSite.Theme = model.Theme; await siteManager.Update(selectedSite); this.AlertSuccess(string.Format(sr["Basic site settings for {0} were successfully updated."], selectedSite.SiteName), true); if (siteManager.CurrentSite.IsServerAdminSite) { // just edited from site list so redirect there return RedirectToAction("SiteList", new { pageNumber = model.ReturnPageNumber }); } return RedirectToAction("Index"); }
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); } SiteFolder 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 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 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); } SiteFolder 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); }
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); }