コード例 #1
0
        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"));
        }