public void Executed(RecipeExecuteContentContext context) { var properties = new Dictionary<string, object> { {"Content", context.ContentItem as IContent} }; var metaData = _contentManager.GetItemMetadata(context.ContentItem); var eventData = new Dictionary<string, object> { {"ContentId", context.ContentItem.Id}, {"ContentIdentity", metaData.Identity.ToString()}, {"ContentType", context.ContentItem.ContentType}, {"VersionId", context.ContentItem.Version}, {"VersionNumber", context.ContentItem.VersionRecord != null ? context.ContentItem.VersionRecord.Number : 0}, {"Published", context.ContentItem.VersionRecord != null && context.ContentItem.VersionRecord.Published}, {"Title", metaData.DisplayText}, {"Tenants", string.Join(",", context.TenantNames.ToArray())} }; _auditTrailManager.CreateRecord<RecipeAuditTrailEventProvider>( RecipeAuditTrailEventProvider.Executed, _wca.GetContext().CurrentUser, properties, eventData, eventFilterKey: "content", eventFilterData: context.ContentItem.Id.ToString(CultureInfo.InvariantCulture)); }
public ActionResult ExecutePOST(int id, string moduleId, string name, IEnumerable<string> tenantNames) { if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not allowed to execute recipes"))) return new HttpUnauthorizedResult(); var recipe = _mainBitRecipeManager.Get(id); if (recipe == null) { return HttpNotFound(); } foreach (var tenantName in tenantNames) { var tenantWorkContext = _tenantWorkContextAccessor.GetContext(tenantName); var tenantRecipeManager = tenantWorkContext.Resolve<Orchard.Recipes.Services.IRecipeManager>(); try { tenantRecipeManager.Execute(recipe.Recipe); } catch (Exception e) { Logger.Error(e, "Error while executing recipe {0} in {1} - in tenant {2}", moduleId, name, tenantName); Services.Notifier.Error(T("Recipes contains {0} unsupported module installation steps.", recipe.Recipe.Name)); } } var recipeExecuteContentContext = new RecipeExecuteContentContext(recipe.ContentItem, tenantNames); _recipeEventHandler.Executed(recipeExecuteContentContext); Services.Notifier.Information(T("The recipe {0} was executed successfully.", recipe.Recipe.Name)); return RedirectToAction("Execute", new { id, moduleId, name }); }