コード例 #1
0
ファイル: ShellFeatureUpdater.cs プロジェクト: radtek/Plato
        async Task <CommandResultBase> UpdateShellFeatureVersionAsync(IShellFeature feature, string newVersion)
        {
            var result = new CommandResultBase();

            // Ensure the version is valid
            if (newVersion.ToVersion() == null)
            {
                return(result.Failed(
                           $"The version '{newVersion}' for feature '{feature.ModuleId}' is not a valid version. Versions must contain major, minor & build numbers. For example 1.0.0, 2.4.0 or 3.2.1"));
            }

            // Update version
            feature.Version = newVersion;

            // Update shell features
            var shellFeature = await _shellFeatureStore.UpdateAsync((ShellFeature)feature);

            // Ensure the update was successful before updating shell descriptor
            if (shellFeature == null)
            {
                return(result.Failed(
                           $"Could not update shell feature. An error occurred whilst updating the version for feature {feature.ModuleId} to version {newVersion}."));
            }

            // First get all existing enabled features
            var enabledFeatures = await _shellDescriptorManager.GetEnabledFeaturesAsync();

            // Update version for enabled feature
            var descriptor = new ShellDescriptor();

            foreach (var enabledFeature in enabledFeatures)
            {
                if (enabledFeature.ModuleId.Equals(feature.ModuleId, StringComparison.OrdinalIgnoreCase))
                {
                    enabledFeature.Version = newVersion;
                }
                descriptor.Modules.Add(new ShellModule(enabledFeature));
            }

            // Ensure we have a descriptor
            if (descriptor.Modules?.Count == 0)
            {
                return(result.Failed("A valid shell descriptor could not be constructed."));
            }

            // Update shell descriptor
            var updatedDescriptor = await _shellDescriptorStore.SaveAsync(descriptor);

            if (updatedDescriptor == null)
            {
                return(result.Failed(
                           $"Could not update shell descriptor. An error occurred whilst updating the version for feature {feature.ModuleId} to version {newVersion}."));
            }

            return(result.Success());
        }
コード例 #2
0
        async Task InitializeDefaultFeatureSettings(IFeatureEventContext context)
        {
            var features = await _shellFeatureStore.SelectFeatures();

            var feature = features.FirstOrDefault(f => f.ModuleId.Equals(context.Feature.ModuleId, StringComparison.OrdinalIgnoreCase));

            if (feature != null)
            {
                feature.FeatureSettings = new FeatureSettings()
                {
                    Title       = "Search",
                    Description = "Search Help & Support",
                    IconCss     = "fal fa-search"
                };

                // Persist changes
                await _shellFeatureStore.UpdateAsync(feature);
            }

            // Apply default permissions to default roles for new feature
            await _defaultRolesManager.UpdateDefaultRolesAsync(new Permissions());
        }
コード例 #3
0
        public override async Task InstalledAsync(IFeatureEventContext context)
        {
            // Update default feature settings
            var features = await _shellFeatureStore.SelectFeatures();

            var feature = features.FirstOrDefault(f => f.ModuleId == base.ModuleId);

            if (feature != null)
            {
                feature.FeatureSettings = new FeatureSettings()
                {
                    Title       = "Articles",
                    Description = ""
                };

                // Persist changes
                await _shellFeatureStore.UpdateAsync(feature);
            }

            // Apply default permissions to default roles for new feature
            await _defaultRolesManager.UpdateDefaultRolesAsync(new Permissions());
        }