Example #1
0
        public void InstallDefaultSite()
        {
            // temporary implementation, it will be based on site templates
            // and possibly moved to an infrastructure service

            if (_siteRepository.GetByName("Default") != null)
            {
                return;
            }

            var siteId            = Guid.NewGuid();
            var englishLanguageId = Guid.NewGuid();
            var mainMenuId        = Guid.NewGuid();
            var homePageId        = Guid.NewGuid();

            // ===== Site ===== //

            var site = Site.CreateNew(new CreateSite
            {
                Id   = siteId,
                Name = "Default"
            }, _createSiteValidator);

            _siteRepository.Create(site);

            // ===== Languages ===== //

            var language = Language.CreateNew(new CreateLanguage
            {
                SiteId      = siteId,
                Id          = englishLanguageId,
                Name        = "English",
                CultureName = "en",
                Url         = "en"
            }, _createLanguageValidator, _languageSortOrderGenerator);

            _languageRepository.Create(language);

            // ===== Pages ===== //

            var homePage = Page.CreateNew(new CreatePage
            {
                SiteId            = siteId,
                Id                = homePageId,
                Name              = "Home",
                Url               = "home",
                PageLocalisations = new List <PageLocalisation>
                {
                    new PageLocalisation
                    {
                        LanguageId = englishLanguageId
                    }
                },
                PagePermissions = new List <PagePermission>
                {
                    new PagePermission
                    {
                        RoleId = ((int)DefaultRoles.Everyone).ToString(),
                        Type   = PermissionType.View
                    }
                }
            }, _createPageValidator);

            homePage.Activate(new ActivatePage
            {
                SiteId = siteId,
                Id     = homePageId
            }, _activatePageValidator);

            _pageRepository.Create(homePage);

            // ===== Modules ===== //

            var textModuleType = _moduleTypeRepository.GetByName("Text");

            // Content Zone Module

            var contentModuleId = Guid.NewGuid();

            var contentModule = Module.CreateNew(new CreateModule
            {
                SiteId       = siteId,
                ModuleTypeId = textModuleType.Id,
                Id           = contentModuleId,
                Title        = "Content Module"
            }, _createModuleValidator);

            _moduleRepository.Create(contentModule);

            // Left Zone Module

            var leftModuleId = Guid.NewGuid();

            var leftModule = Module.CreateNew(new CreateModule
            {
                SiteId       = siteId,
                ModuleTypeId = textModuleType.Id,
                Id           = leftModuleId,
                Title        = "Left Module"
            }, _createModuleValidator);

            _moduleRepository.Create(leftModule);

            // Right Zone Module

            var rightModuleId = Guid.NewGuid();

            var rightModule = Module.CreateNew(new CreateModule
            {
                SiteId       = siteId,
                ModuleTypeId = textModuleType.Id,
                Id           = rightModuleId,
                Title        = "Right Module"
            }, _createModuleValidator);

            _moduleRepository.Create(rightModule);

            // Update Home Page

            homePage.AddModule(new AddPageModule
            {
                SiteId    = siteId,
                PageId    = homePageId,
                ModuleId  = contentModuleId,
                Id        = Guid.NewGuid(),
                Title     = "Content",
                Zone      = "Content",
                SortOrder = 1
            }, _addPageModuleValidator);

            homePage.AddModule(new AddPageModule
            {
                SiteId    = siteId,
                PageId    = homePageId,
                ModuleId  = leftModuleId,
                Id        = Guid.NewGuid(),
                Title     = "Left",
                Zone      = "Left",
                SortOrder = 1
            }, _addPageModuleValidator);

            homePage.AddModule(new AddPageModule
            {
                SiteId    = siteId,
                PageId    = homePageId,
                ModuleId  = rightModuleId,
                Id        = Guid.NewGuid(),
                Title     = "Right",
                Zone      = "Right",
                SortOrder = 1
            }, _addPageModuleValidator);

            _pageRepository.Update(homePage);

            // ===== Menus ===== //

            var mainMenu = Menu.CreateNew(new CreateMenu
            {
                SiteId = siteId,
                Id     = mainMenuId,
                Name   = "Main"
            }, _createMenuValidator);

            mainMenu.AddMenuItem(new AddMenuItem
            {
                SiteId                = siteId,
                MenuId                = mainMenuId,
                MenuItemId            = Guid.NewGuid(),
                MenuItemType          = MenuItemType.Page,
                PageId                = homePageId,
                Link                  = string.Empty,
                Text                  = "Home",
                Title                 = "Home Page",
                MenuItemLocalisations = new List <MenuItemDetails.MenuItemLocalisation>
                {
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = englishLanguageId
                    }
                }
            }, _addMenuItemValidator);

            _menuRepository.Create(mainMenu);
        }