public void ExecuteRecipeStepTest() { _folders.Manifests.Add("SuperWiki", @" Name: SuperWiki Version: 1.0.3 OrchardVersion: 1 Features: SuperWiki: Description: My super wiki theme for Orchard. "); _packagesInRepository.AddPublishedPackage(new PublishedPackage { Id = "Orchard.Theme.SuperWiki", PackageType = DefaultExtensionTypes.Theme, Title = "SuperWiki", Version = "1.0.3", IsLatestVersion = true, }); IShellDescriptorManager shellDescriptorManager = _container.Resolve <IShellDescriptorManager>(); // No features enabled shellDescriptorManager.UpdateShellDescriptor(0, Enumerable.Empty <ShellFeature>(), Enumerable.Empty <ShellParameter>()); ThemeRecipeHandler themeRecipeHandler = _container.Resolve <ThemeRecipeHandler>(); RecipeContext recipeContext = new RecipeContext { RecipeStep = new RecipeStep { Name = "Theme", Step = new XElement("SuperWiki") } }; recipeContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Theme.SuperWiki")); recipeContext.RecipeStep.Step.Add(new XAttribute("repository", "test")); IFeatureManager featureManager = _container.Resolve <IFeatureManager>(); IEnumerable <FeatureDescriptor> enabledFeatures = featureManager.GetEnabledFeatures(); Assert.That(enabledFeatures.Count(), Is.EqualTo(0)); themeRecipeHandler.ExecuteRecipeStep(recipeContext); // without setting enable no feature should be activated... featureManager.GetEnabledFeatures(); Assert.That(enabledFeatures.Count(), Is.EqualTo(0)); // Adding enable the feature should get active recipeContext.RecipeStep.Step.Add(new XAttribute("enable", true)); themeRecipeHandler.ExecuteRecipeStep(recipeContext); enabledFeatures = featureManager.GetEnabledFeatures(); Assert.That(enabledFeatures.FirstOrDefault(feature => feature.Id.Equals("SuperWiki")), Is.Not.Null); Assert.That(enabledFeatures.Count(), Is.EqualTo(1)); Assert.That(recipeContext.Executed, Is.True); }
protected override DriverResult Editor(TwoFactorAuthenticationSettingsPart part, dynamic shapeHelper) { return(ContentShape("Parts_TwoFactorAuthenticationSettings_Edit", () => { part.SMSFeatureEnabled = _featureManager.GetEnabledFeatures().Any(x => x.Id == "EmeraldElements.TwoFactorAuthentication.Sms"); if (!part.SMSFeatureEnabled) { part.EnableBackupSMS = false; part.RequireBackupSMS = false; } return shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: part, Prefix: Prefix); }) .OnGroup("Two-Factor Authentication")); }
public void EnableFeaturesTest() { _folders.Manifests.Add("SuperWiki", @" Name: SuperWiki Version: 1.0.3 OrchardVersion: 1 Features: SuperWiki: Description: My super wiki module for Orchard. "); // Initialize the shell descriptor with 0 features IShellDescriptorManager shellDescriptorManager = _container.Resolve <IShellDescriptorManager>(); IFeatureManager featureManager = _container.Resolve <IFeatureManager>(); shellDescriptorManager.UpdateShellDescriptor(0, Enumerable.Empty <ShellFeature>(), Enumerable.Empty <ShellParameter>()); IEnumerable <string> featuresToEnable = new [] { "SuperWiki" }; // Enable all features IEnumerable <string> enabledFeatures = featureManager.EnableFeatures(featuresToEnable); Assert.That(enabledFeatures, Is.EqualTo(featuresToEnable)); Assert.That(featureManager.GetEnabledFeatures().Count(), Is.EqualTo(1)); }
public void Exporting(ExportContext context) { if (!context.ExportOptions.CustomSteps.Contains("FeatureSync")) { return; } var xmlElement = new XElement("FeatureSync"); foreach (var feature in _featureManager.GetEnabledFeatures()) { xmlElement.Add(new XElement("Feature", new XAttribute("Id", feature.Id))); } var rootElement = context.Document.Descendants("Orchard").FirstOrDefault(); if (rootElement == null) { var ex = new OrchardException(T("Could not export this site's Enabled Features because the document passed via the Export Context did not contain a node called 'Orchard'. The document was malformed.")); Logger.Error(ex, ex.Message); throw ex; } rootElement.AddFirst(xmlElement); }
public void Activated() { // Let's make sure that the basic set of features is enabled. If there are any that are not enabled, then let's enable them first. var theseFeaturesShouldAlwaysBeActive = new[] { "Common", "Containers", "Contents", "Dashboard", "Feeds", "Navigation", "Reports", "Scheduling", "Settings", "Shapes", "Title" }; var enabledFeatures = _featureManager.GetEnabledFeatures().Select(f => f.Id).ToList(); var featuresToEnable = theseFeaturesShouldAlwaysBeActive.Where(shouldBeActive => !enabledFeatures.Contains(shouldBeActive)).ToList(); if (featuresToEnable.Any()) { _featureManager.EnableFeatures(featuresToEnable, true); } foreach (var feature in _dataMigrationManager.GetFeaturesThatNeedUpdate()) { try { _dataMigrationManager.Update(feature); } catch (Exception ex) { if (ex.IsFatal()) { throw; } Logger.Error("Could not run migrations automatically on " + feature, ex); } } }
public void Activated() { // Let's make sure that the basic set of features is enabled. If there are any that are not enabled, then let's enable them first. var theseFeaturesShouldAlwaysBeActive = new[] { "Settings" }; theseFeaturesShouldAlwaysBeActive = theseFeaturesShouldAlwaysBeActive.Concat( _featureManager.GetAvailableFeatures().Where(f => f.Id != "Coevery.Setup").Select(f => f.Id)).ToArray(); var enabledFeatures = _featureManager.GetEnabledFeatures().Select(f => f.Id).ToList(); var featuresToEnable = theseFeaturesShouldAlwaysBeActive.Where(shouldBeActive => !enabledFeatures.Contains(shouldBeActive)).ToList(); if (featuresToEnable.Any()) { _featureManager.EnableFeatures(featuresToEnable, true); } foreach (var feature in _dataMigrationManager.GetFeaturesThatNeedUpdate()) { try { _dataMigrationManager.Update(feature); } catch (Exception e) { Logger.Error("Could not run migrations automatically on " + feature, e); } } }
/* * <EnabledFeatures> * <Feature Id="Orchard.ImportExport" /> */ //Enable any features that are in the list, disable features that aren't in the list public void ExecuteRecipeStep(RecipeContext recipeContext) { if (!String.Equals(recipeContext.RecipeStep.Name, "FeatureSync", StringComparison.OrdinalIgnoreCase)) { return; } var features = recipeContext.RecipeStep.Step.Descendants(); var featureIds = features.Where(f => f.Name == "Feature").Select(f => f.Attribute("Id").Value).ToList(); //we now have the list of features that are enabled on the remote site //next thing to do is add and remove features to and from this list based on our feature redactions var featureRedactions = _featureRedactionService.GetRedactions().ToList(); featureIds.AddRange(featureRedactions.Where(r => r.Enabled).Select(r => r.FeatureId)); //adding features that need to be enabled featureIds.RemoveAll(f => featureRedactions.Where(r => !r.Enabled).Select(r => r.FeatureId).Contains(f)); //removing features that need to be disabled //adding redactions may have caused duplicity featureIds = featureIds.Distinct().ToList(); var availableFeatures = _featureManager.GetAvailableFeatures(); var enabledFeatures = _featureManager.GetEnabledFeatures().ToList(); var featuresToDisable = enabledFeatures.Where(f => !featureIds.Contains(f.Id)).Select(f => f.Id).ToList(); var featuresToEnable = availableFeatures .Where(f => featureIds.Contains(f.Id)) //available features that are in the list of features that need to be enabled .Where(f => !enabledFeatures.Select(ef => ef.Id).Contains(f.Id)) //remove features that are already enabled .Select(f => f.Id) .ToList(); _featureManager.DisableFeatures(featuresToDisable, true); _featureManager.EnableFeatures(featuresToEnable, true); recipeContext.Executed = true; }
public ActionResult Index() { var viewModel = new MigrateViewModel { ContentTypes = new List <ContentTypeEntry>() }; foreach (var contentType in _contentDefinitionManager.ListTypeDefinitions().OrderBy(c => c.Name)) { // only display parts with fields if (contentType.Parts.Any(x => x.PartDefinition.Fields.Any())) { viewModel.ContentTypes.Add(new ContentTypeEntry { ContentTypeName = contentType.Name }); } } if (!viewModel.ContentTypes.Any()) { _orchardServices.Notifier.Warning(T("There are no content types with custom fields")); } if (!_featureManager.GetEnabledFeatures().Any(x => x.Id == "Orchard.Fields")) { _orchardServices.Notifier.Warning(T("You need to enable Orchard.Fields in order to migrate current fields.")); } return(View(viewModel)); }
public void DisableFeaturesTest() { _folders.Manifests.Add("SuperWiki", @" Name: SuperWiki Version: 1.0.3 CoeveryVersion: 1 Features: SuperWiki: Description: My super wiki module for Coevery. "); // Initialize the shell descriptor with 0 features IShellDescriptorManager shellDescriptorManager = _container.Resolve <IShellDescriptorManager>(); IFeatureManager featureManager = _container.Resolve <IFeatureManager>(); shellDescriptorManager.UpdateShellDescriptor(0, new [] { new ShellFeature { Name = "SuperWiki" } }, Enumerable.Empty <ShellParameter>()); IEnumerable <string> featuresToDisable = new [] { "SuperWiki" }; // Disable the feature featureManager.DisableFeatures(featuresToDisable); Assert.That(featureManager.GetEnabledFeatures().Count(), Is.EqualTo(0)); }
public void ExecuteRecipeStepTest() { _folders.Manifests.Add("SuperWiki", @" Name: SuperWiki Version: 1.0.3 OrchardVersion: 1 Features: SuperWiki: Description: My super wiki module for Orchard. "); IShellDescriptorManager shellDescriptorManager = _container.Resolve<IShellDescriptorManager>(); // No features enabled shellDescriptorManager.UpdateShellDescriptor(0, Enumerable.Empty<ShellFeature>(), Enumerable.Empty<ShellParameter>()); ModuleRecipeHandler moduleRecipeHandler = _container.Resolve<ModuleRecipeHandler>(); RecipeContext recipeContext = new RecipeContext { RecipeStep = new RecipeStep { Name = "Module", Step = new XElement("SuperWiki") } }; recipeContext.RecipeStep.Step.Add(new XAttribute("packageId", "Orchard.Module.SuperWiki")); recipeContext.RecipeStep.Step.Add(new XAttribute("repository", "test")); IFeatureManager featureManager = _container.Resolve<IFeatureManager>(); IEnumerable<FeatureDescriptor> enabledFeatures = featureManager.GetEnabledFeatures(); Assert.That(enabledFeatures.Count(), Is.EqualTo(0)); moduleRecipeHandler.ExecuteRecipeStep(recipeContext); var availableFeatures = featureManager.GetAvailableFeatures().Where(x => x.Id == "SuperWiki").FirstOrDefault(); Assert.That(availableFeatures.Id, Is.EqualTo("SuperWiki")); Assert.That(recipeContext.Executed, Is.True); }
public ActionResult Index() { ViewBag.CanMigrate = false; if (_featureManager.GetEnabledFeatures().All(x => x.Id != "Orchard.Taxonomies")) { _orchardServices.Notifier.Warning(T("You need to enable Orchard.Taxonomies in order to migrate Contrib.Taxonomies to Orchard.Taxonomies.")); } else { var flag = false; _upgradeService.ExecuteReader("SELECT * FROM " + _upgradeService.GetPrefixedTableName("Orchard_Taxonomies_TermContentItem"), (reader, conn) => { flag = true; }); if (flag) { _orchardServices.Notifier.Warning(T("This migration step might have been done already.")); } ViewBag.CanMigrate = true; } return(View()); }
public void OnResultExecuting(ResultExecutingContext filterContext) { if (filterContext.Result as ViewResult == null) { return; } var previewThemeName = _previewTheme.GetPreviewTheme(); if (string.IsNullOrEmpty(previewThemeName)) { return; } var installedThemes = _featureManager.GetEnabledFeatures() .Select(x => x.Extension) .Where(x => DefaultExtensionTypes.IsTheme(x.ExtensionType)) .Distinct(); var themeListItems = installedThemes .Select(theme => new SelectListItem { Text = theme.Name, Value = theme.Id, Selected = theme.Id == previewThemeName }) .ToList(); _workContextAccessor.GetContext(filterContext).Layout.Zones["Body"].Add(_shapeFactory.ThemePreview(Themes: themeListItems), ":before"); }
public void Describe(DescribeContext context) { Func <IShapeFactory, dynamic> formFactory = shape => { var jobsQueueEnabled = _featureManager.GetEnabledFeatures().Any(x => x.Id == "Orchard.JobsQueue"); var form = New.Form( Id: "EmailActivity", _Type: New.FieldSet( Title: T("Send to"), _Recipients: New.Textbox( Id: "recipients", Name: "Recipients", Title: T("Email Addresses"), Description: T("Specify a comma-separated list of recipient email addresses. To include a display name, use the following format: John Doe <[email protected]>"), Classes: new[] { "large", "text", "tokenized" }), _Subject: New.Textbox( Id: "Subject", Name: "Subject", Title: T("Subject"), Description: T("The subject of the email message."), Classes: new[] { "large", "text", "tokenized" }), _Message: New.Textarea( Id: "Body", Name: "Body", Title: T("Body"), Description: T("The body of the email message."), Classes: new[] { "tokenized" }) )); if (jobsQueueEnabled) { form._Type._Queued(New.Checkbox( Id: "Queued", Name: "Queued", Title: T("Queued"), Checked: false, Value: "true", Description: T("Check send it as a queued job."))); form._Type._Priority(New.SelectList( Id: "priority", Name: "Priority", Title: T("Priority"), Description: ("The priority of this message.") )); form._Type._Priority.Add(new SelectListItem { Value = "-50", Text = T("Low").Text }); form._Type._Priority.Add(new SelectListItem { Value = "0", Text = T("Normal").Text }); form._Type._Priority.Add(new SelectListItem { Value = "50", Text = T("High").Text }); } return(form); }; context.Form("EmailActivity", formFactory); }
public ExtensionDescriptor GetTheme(string themeId) { var query = from x in _featureManager.GetEnabledFeatures() where DefaultExtensionTypes.IsTheme(x.Extension.ExtensionType) && x.Id == themeId select x.Extension; return(query.Distinct().SingleOrDefault()); }
public ActionResult Index(ModulesIndexOptions options, PagerParameters pagerParameters) { if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not allowed to manage modules"))) { return(new HttpUnauthorizedResult()); } Pager pager = new Pager(Services.WorkContext.CurrentSite, pagerParameters); IEnumerable <ModuleEntry> modules = _extensionManager.AvailableExtensions() .Where(extensionDescriptor => DefaultExtensionTypes.IsModule(extensionDescriptor.ExtensionType) && (string.IsNullOrEmpty(options.SearchText) || extensionDescriptor.Name.ToLowerInvariant().Contains(options.SearchText.ToLowerInvariant()))) .OrderBy(extensionDescriptor => extensionDescriptor.Name) .Select(extensionDescriptor => new ModuleEntry { Descriptor = extensionDescriptor }); int totalItemCount = modules.Count(); if (pager.PageSize != 0) { modules = modules.Skip((pager.Page - 1) * pager.PageSize).Take(pager.PageSize); } modules = modules.ToList(); foreach (ModuleEntry moduleEntry in modules) { moduleEntry.IsRecentlyInstalled = _moduleService.IsRecentlyInstalled(moduleEntry.Descriptor); if (_extensionDisplayEventHandler != null) { foreach (string notification in _extensionDisplayEventHandler.Displaying(moduleEntry.Descriptor, ControllerContext.RequestContext)) { moduleEntry.Notifications.Add(notification); } } } return(View(new ModulesIndexViewModel { Modules = modules, InstallModules = _featureManager.GetEnabledFeatures().FirstOrDefault(f => f.Id == "PackagingServices") != null, Options = options, Pager = Shape.Pager(pager).TotalItemCount(totalItemCount) })); }
public ActionResult Index() { if (_featureManager.GetEnabledFeatures().All(x => x.Id != "Orchard.ContentPicker")) { _orchardServices.Notifier.Warning(T("You need to enable Orchard.ContentPicker in order to migrate Content Picker items to Orchard.ContentPicker.")); } return(View()); }
public ActionResult Index(LocationsCountriesIndexViewModel model, PagerParameters pagerParameters) { if (!Services.Authorizer.Authorize(Permissions.OShopPermissions.ManageShopSettings, T("Not allowed to manage Countries"))) { return(new HttpUnauthorizedResult()); } var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters); var countries = _locationService.GetCountries(); if (model.ZoneId > 0) { countries = countries.Where(c => c.ShippingZoneRecord != null && c.ShippingZoneRecord.Id == model.ZoneId); } switch (model.Filter) { case LocationsFilter.Disabled: countries = countries.Where(c => !c.Enabled); break; case LocationsFilter.Enabled: countries = countries.Where(c => c.Enabled); break; } var pagerShape = Shape.Pager(pager).TotalItemCount(countries.Count()); var viewModel = new LocationsCountriesIndexViewModel() { DefaultCountryId = _locationService.GetDefaultCountryId(), Countries = countries.Skip(pager.GetStartIndex()).Take(pager.PageSize), Pager = pagerShape, BulkAction = LocationsBulkAction.None, Filter = model.Filter, ShippingZones = _shippingService != null?_shippingService.GetZones() : new List <ShippingZoneRecord>(), ZoneId = model.ZoneId, // Optional features ShippingEnabled = _featureManager.GetEnabledFeatures().Where(f => f.Id == "OShop.Shipping").Any() }; return(View(viewModel)); }
public IEnumerable <string> GetZones() { return(_featureManager.GetEnabledFeatures() .Select(x => x.Extension) .Where(x => DefaultExtensionTypes.IsTheme(x.ExtensionType) && x.Zones != null) .SelectMany(x => x.Zones.Split(',')) .Distinct() .Select(x => x.Trim()) .ToArray()); }
public IEnumerable <string> GetZones() { return(_featureManager.GetEnabledFeatures() .Select(x => x.Extension) .Where(x => DefaultExtensionTypes.IsTheme(x.ExtensionType) && x.Zones != null) .SelectMany(x => x.Zones.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries)) .Select(x => x.Trim()) .Distinct() .ToArray()); }
public void DisableFeaturesWithDependenciesTest() { _folders.Manifests.Add("SuperWiki", @" Name: SuperWiki Version: 1.0.3 OrchardVersion: 1 Features: SuperWiki: Description: My super wiki module for Orchard. Dependencies: SuperWikiDep SuperWikiDep: Description: My super wiki module for Orchard dependency. "); // Initialize the shell descriptor with 0 features IShellDescriptorManager shellDescriptorManager = _container.Resolve <IShellDescriptorManager>(); IFeatureManager featureManager = _container.Resolve <IFeatureManager>(); shellDescriptorManager.UpdateShellDescriptor(0, Enumerable.Empty <ShellFeature>(), Enumerable.Empty <ShellParameter>()); // Enable both features by relying on the dependency Assert.That(featureManager.EnableFeatures(new [] { "SuperWiki" }, true).Count(), Is.EqualTo(2)); IEnumerable <string> featuresToDisable = new[] { "SuperWikiDep" }; // Try to enable without forcing dependencies should fail IEnumerable <string> disabledFeatures = featureManager.DisableFeatures(featuresToDisable, false); Assert.That(disabledFeatures.Count(), Is.EqualTo(0)); Assert.That(featureManager.GetEnabledFeatures().Count(), Is.EqualTo(2)); // Enabling while forcing dependencies should succeed. disabledFeatures = featureManager.DisableFeatures(featuresToDisable, true); Assert.That(disabledFeatures.Contains("SuperWiki"), Is.True); Assert.That(disabledFeatures.Contains("SuperWikiDep"), Is.True); Assert.That(featureManager.GetEnabledFeatures().Count(), Is.EqualTo(0)); }
private string CreateDefaultRobotsContent() { const string template = @"# robots.txt generated at {0} User-agent: * Disallow: {1}"; var absoluteUrl = _orchardServices.WorkContext.CurrentSite.BaseUrl; var isSitemapEnabled = _featureManager.GetEnabledFeatures().Any(x => x.Id == "IDeliverable.Seo.Sitemap"); var sitemapEntry = isSitemapEnabled ? $"Sitemap: {_urlHelper.AbsoluteAction("Index", "Sitemap", new { Area = "IDeliverable.Seo" })}" : default(string); return(String.Format(template, absoluteUrl, sitemapEntry)); }
/// <summary> /// 参见 <see cref="ICompositionStrategy.Compose(string, ShellDescriptor)"/> 方法。 /// </summary> public ShellBlueprint Compose(string applicationName, ShellDescriptor descriptor) { Guard.ArgumentNotNull(descriptor, nameof(descriptor)); _logger.WriteDebug("应用组合策略。"); IEnumerable <Feature> features = _featureManager.GetEnabledFeatures().ToArray(); _logger.WriteDebug($"应用组合策略, Feature 数量 {features.Count()}"); //为什么不用 Union? Union 对于引用类型来说和 Concat 无差别,性能反而更差。 features = features.Concat(BuiltinFeatures()).Distinct(f => f.Descriptor.Name); var excludedTypes = GetExcludedTypes(features); return(BuildBlueprint(descriptor, features, excludedTypes)); }
public void OnResultExecuted(ResultExecutedContext filterContext) { var enabledFeatures = _featureManager.GetEnabledFeatures(); foreach (var feature in enabledFeatures) { _performanceMonitor.PublishMessage(new EnabledFeatureMessage { Category = feature.Category, Description = feature.Description, Extension = feature.Extension, FeatureId = feature.Id, Name = feature.Name, Priority = feature.Priority }); } }
public ActionResult Index(ModulesIndexOptions options, PagerParameters pagerParameters) { if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, "Not allowed to manage modules")) { return(new HttpUnauthorizedResult()); } var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters); IEnumerable <ModuleEntry> modules = _extensionManager.AvailableExtensions() .Where(extensionDescriptor => DefaultExtensionTypes.IsModule(extensionDescriptor.ExtensionType) && (string.IsNullOrEmpty(options.SearchText) || extensionDescriptor.Name.ToLowerInvariant().Contains(options.SearchText.ToLowerInvariant()))) .OrderBy(extensionDescriptor => extensionDescriptor.Name) .Select(extensionDescriptor => new ModuleEntry { Descriptor = extensionDescriptor }); pager.Total = modules.Count(); // This way we can more or less reliably handle this implicit dependency. var installModules = _featureManager.GetEnabledFeatures().FirstOrDefault(f => f.Id == "PackagingServices") != null; modules = modules.ToList(); foreach (ModuleEntry moduleEntry in modules) { moduleEntry.IsRecentlyInstalled = _moduleService.IsRecentlyInstalled(moduleEntry.Descriptor); moduleEntry.CanUninstall = installModules; if (_extensionDisplayEventHandler != null) { foreach (string notification in _extensionDisplayEventHandler.Displaying(moduleEntry.Descriptor, ControllerContext.RequestContext)) { moduleEntry.Notifications.Add(notification); } } } return(View(new ModulesIndexViewModel { Modules = modules, InstallModules = installModules, Options = options, Pager = pager })); }
public int Create() { //check to see if the content already exists if (_featureManager.GetEnabledFeatures().Any(x => x.Id == "Orchard.Layouts")) { upgrade = false; } if (upgrade == false) { templateTypeName = "OSTemplate"; layoutTypeName = "OSLayout"; templateDisplayName = "Onestop Template"; layoutDisplayName = "Onestop Layout"; } ContentDefinitionManager.AlterTypeDefinition( layoutTypeName, cfg => cfg .DisplayedAs(layoutDisplayName) .RemovePart("LayoutPart") .WithPart("LayoutTemplatePart") .WithPart("CommonPart") .WithPart("IdentityPart") .WithPart("TitlePart")); ContentDefinitionManager.AlterTypeDefinition( templateTypeName, cfg => cfg .DisplayedAs(templateDisplayName) .RemovePart("LayoutPart") .WithPart("LayoutTemplatePart", builder => builder .WithSetting("isTemplate", "true")) .WithPart("CommonPart") .WithPart("IdentityPart") .WithPart("TitlePart")); ContentDefinitionManager.AlterPartDefinition("TemplatedItemPart", cfg => cfg .WithDescription("Enables your content type to use a layout template.") .Attachable()); return(1); }
private IEnumerable <string> GetAvailableRecipeFiles() { //go through each enabled feature- any xml files inside a folder called ContentMigrations will be discovered var features = _featureManager.GetEnabledFeatures(); foreach (var feature in features) { var migrationPath = _virtualPathProvider.Combine(feature.Extension.Location, feature.Extension.Id, "ContentMigrations", feature.Id); var mappedPath = _virtualPathProvider.MapPath(migrationPath); if (!Directory.Exists(mappedPath)) { continue; } foreach (var recipeFile in Directory.EnumerateFiles(mappedPath, "*.Recipe.xml")) { yield return(_virtualPathProvider.Combine(migrationPath, Path.GetFileName(recipeFile))); } } }
public void Activated() { EnsureDistributedLockSchemaExists(); IDistributedLock @lock; if (_distributedLockService.TryAcquireLock(GetType().FullName, TimeSpan.FromMinutes(30), TimeSpan.FromMilliseconds(250), out @lock)) { using (@lock) { // Let's make sure that the basic set of features is enabled. If there are any that are not enabled, then let's enable them first. var theseFeaturesShouldAlwaysBeActive = new[] { "Settings", "Shapes", }; var enabledFeatures = _featureManager.GetEnabledFeatures().Select(f => f.Id).ToList(); var featuresToEnable = theseFeaturesShouldAlwaysBeActive.Where(shouldBeActive => !enabledFeatures.Contains(shouldBeActive)).ToList(); if (featuresToEnable.Any()) { _featureManager.EnableFeatures(featuresToEnable, true); } foreach (var feature in _dataMigrationManager.GetFeaturesThatNeedUpdate()) { try { _dataMigrationManager.Update(feature); } catch (Exception ex) { if (ex.IsFatal()) { throw; } Logger.Error("Could not run migrations automatically on " + feature, ex); } } } } }
public ActionResult Configurations(int id) { if (!User.Identity.IsAuthenticated) { System.Web.Security.FormsAuthentication.RedirectToLoginPage(Request.RawUrl); } var inputFileId = Convert.ToInt32(Request.QueryString["InputFile"] ?? "0"); var outputFileId = Convert.ToInt32(Request.QueryString["OutputFile"] ?? "0"); var mode = Request.QueryString["mode"] ?? string.Empty; var viewModel = new Configurations(_fileService) { ConfigurationParts = _transformalize.GetAuthorizedConfigurations(), InputFileId = inputFileId, OutputFileId = outputFileId, CurrentId = id, Mode = mode, Edit = _orchardServices.Authorizer.Authorize(global::Orchard.Security.StandardPermissions.SiteOwner), Enqueue = _featureManager.GetEnabledFeatures().Any(f => f.Id == "Orchard.JobsQueue") }; return(View(viewModel)); }
public override void Build(BuildContext context) { if (!ExportEnabledFeatures && !ExportDisabledFeatures) { return; } var enabledFeatures = _featureManager.GetEnabledFeatures(); var disabledFeatures = _featureManager.GetDisabledFeatures(); var tomeltElement = context.RecipeDocument.Element("Tomelt"); var root = new XElement("Feature"); if (ExportEnabledFeatures) { root.Add(new XAttribute("enable", String.Join(", ", enabledFeatures.Select(x => x.Id).OrderBy(x => x)))); } if (ExportDisabledFeatures) { root.Add(new XAttribute("disable", String.Join(", ", disabledFeatures.Select(x => x.Id).OrderBy(x => x)))); } tomeltElement.Add(root); }
public LessCompilerService(IFeatureManager features) { _features = features; ThemeFolders = new List<string>(); ThemeFolders.AddRange(_features.GetEnabledFeatures().Select(x => x.Extension.Location + "/" + x.Extension.Id + "/Styles").ToList()); }
public NotificatorService(IFeatureManager fmanager) { this.features = fmanager.GetEnabledFeatures(); }