Esempio n. 1
0
        public async Task <ActionResult> Index(SelectThemesViewModel model)
        {
            await _siteThemeService.SetSiteThemeAsync(model.SiteThemeName);

            await _adminThemeService.SetAdminThemeAsync(model.AdminThemeName);

            return(RedirectToAction("Index"));
        }
Esempio n. 2
0
        public async Task <ActionResult> Index()
        {
            var model = new SelectThemesViewModel
            {
                SiteThemeName  = await _siteThemeService.GetCurrentThemeNameAsync(),
                AdminThemeName = await _adminThemeService.GetAdminThemeNameAsync()
            };

            return(View(model));
        }
        public async Task <ActionResult> Index()
        {
            var installThemes = await _authorizationService.AuthorizeAsync(User, StandardPermissions.SiteOwner); // only site owners

            if (!installThemes)
            {
                return(Forbid());
            }

            //&& _shellSettings.Name == ShellSettings.; // of the default tenant
            //&& _featureManager.GetEnabledFeatures().FirstOrDefault(f => f.Id == "PackagingServices") != null

            //var featuresThatNeedUpdate = _dataMigrationManager.GetFeaturesThatNeedUpdate();

            var currentSiteThemeExtensionInfo = await _siteThemeService.GetSiteThemeAsync();

            var currentAdminThemeExtensionInfo = await _adminThemeService.GetAdminThemeAsync();

            var currentAdminTheme = currentAdminThemeExtensionInfo != null ? new ThemeEntry(currentAdminThemeExtensionInfo) : default(ThemeEntry);
            var currentSiteTheme  = currentSiteThemeExtensionInfo != null ? new ThemeEntry(currentSiteThemeExtensionInfo) : default(ThemeEntry);
            var enabledFeatures   = await _shellFeaturesManager.GetEnabledFeaturesAsync();

            var themes = _extensionManager.GetExtensions().OfType <IThemeExtensionInfo>().Where(extensionDescriptor =>
            {
                var tags     = extensionDescriptor.Manifest.Tags.ToArray();
                var isHidden = tags.Any(x => string.Equals(x, "hidden", StringComparison.OrdinalIgnoreCase));

                // Is the theme allowed for this tenant?
                // allowed = _shellSettings.Themes.Length == 0 || _shellSettings.Themes.Contains(extensionDescriptor.Id);

                return(!isHidden);
            })
                         .Select(extensionDescriptor =>
            {
                var isAdmin    = IsAdminTheme(extensionDescriptor.Manifest);
                var themeId    = isAdmin ? currentAdminTheme?.Extension.Id : currentSiteTheme?.Extension.Id;
                var isCurrent  = extensionDescriptor.Id == themeId;
                var isEnabled  = enabledFeatures.Any(x => x.Extension.Id == extensionDescriptor.Id);
                var themeEntry = new ThemeEntry(extensionDescriptor)
                {
                    //NeedsUpdate = featuresThatNeedUpdate.Contains(extensionDescriptor.Id),
                    //IsRecentlyInstalled = _themeService.IsRecentlyInstalled(extensionDescriptor),
                    Enabled      = isEnabled,
                    CanUninstall = installThemes,
                    IsAdmin      = isAdmin,
                    IsCurrent    = isCurrent
                };

                //if (_extensionDisplayEventHandler != null)
                //{
                //    foreach (string notification in _extensionDisplayEventHandler.Displaying(themeEntry.Descriptor, ControllerContext.RequestContext))
                //    {
                //        themeEntry.Notifications.Add(notification);
                //    }
                //}

                return(themeEntry);
            })
                         .OrderByDescending(x => x.IsCurrent);

            var model = new SelectThemesViewModel
            {
                CurrentSiteTheme  = currentSiteTheme,
                CurrentAdminTheme = currentAdminTheme,
                Themes            = themes
            };

            return(View(model));
        }
Esempio n. 4
0
        public async Task <ActionResult> Index()
        {
            var installThemes = await _authorizationService.AuthorizeAsync(User, StandardPermissions.SiteOwner); // only site owners

            if (!installThemes)
            {
                return(Forbid());
            }

            var currentSiteThemeExtensionInfo = await _siteThemeService.GetSiteThemeAsync();

            var currentAdminThemeExtensionInfo = await _adminThemeService.GetAdminThemeAsync();

            var currentAdminTheme = currentAdminThemeExtensionInfo != null ? new ThemeEntry(currentAdminThemeExtensionInfo) : default(ThemeEntry);
            var currentSiteTheme  = currentSiteThemeExtensionInfo != null ? new ThemeEntry(currentSiteThemeExtensionInfo) : default(ThemeEntry);
            var enabledFeatures   = await _shellFeaturesManager.GetEnabledFeaturesAsync();

            var themes = (await _shellFeaturesManager.GetAvailableFeaturesAsync())
                         .Where(f =>
            {
                if (!f.IsTheme())
                {
                    return(false);
                }

                var tags     = f.Extension.Manifest.Tags.ToArray();
                var isHidden = tags.Any(t => String.Equals(t, "hidden", StringComparison.OrdinalIgnoreCase));
                if (isHidden)
                {
                    return(false);
                }

                return(true);
            })
                         .Select(f =>
            {
                var isAdmin    = IsAdminTheme(f.Extension.Manifest);
                var themeId    = isAdmin ? currentAdminTheme?.Extension.Id : currentSiteTheme?.Extension.Id;
                var isCurrent  = f.Id == themeId;
                var isEnabled  = enabledFeatures.Any(e => e.Id == f.Id);
                var themeEntry = new ThemeEntry(f.Extension)
                {
                    Enabled      = isEnabled,
                    CanUninstall = installThemes,
                    IsAdmin      = isAdmin,
                    IsCurrent    = isCurrent
                };

                return(themeEntry);
            })
                         .OrderByDescending(t => t.IsCurrent);

            var model = new SelectThemesViewModel
            {
                CurrentSiteTheme  = currentSiteTheme,
                CurrentAdminTheme = currentAdminTheme,
                Themes            = themes
            };

            return(View(model));
        }