public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { if (actionExecutedContext.Response == null) { return; } var user = UmbracoContext.Current.Security.CurrentUser; if (user == null) { return; } if (actionExecutedContext.Response.Content is ObjectContent objectContent) { var model = objectContent.Value; if (model != null) { var args = new EditorModelEventArgs( model, UmbracoContext.Current); EditorModelEventManager.EmitEvent(actionExecutedContext, args); objectContent.Value = args.Model; } } base.OnActionExecuted(actionExecutedContext); }
internal static void Emit(HttpActionContext sender, EditorModelEventArgs e) { if (e.Model is IEnumerable <ElementsType> ) { OnSendingContentTypesModel(sender, new EditorModelEventArgs <IEnumerable <ElementsType> >(e)); } }
/// <summary> /// Hide any content properties that don't apply to the current user group (using [HideForEditors] placeholder in property description). /// </summary> /// <param name="e"></param> private void HidePropertiesForUserGroups(EditorModelEventArgs <ContentItemDisplay> e) { var userHidForPlaceholders = e.UmbracoContext.Security.CurrentUser.Groups.Select(g => $"[HideFor{g.Name.ToCleanString(CleanStringType.PascalCase)}]"); foreach (var variant in e.Model.Variants) { foreach (var tab in variant.Tabs) { // exclude properties that should be hidden for this user tab.Properties = tab.Properties?.Where(p => p.Description?.ContainsAny(userHidForPlaceholders) != true); if (tab.Properties != null) { // remove the placeholders of properties that the current user is allowed to see foreach (var property in tab.Properties) { if (property.Description != null) { property.Description = _hideForPlaceHolderRegex.Replace(property.Description, string.Empty)?.Trim(); } } } } } }
/// <summary> /// Customise the body elements (e.g. changing display names). /// </summary> /// <param name="e"></param> private void CustomiseBodyElements(EditorModelEventArgs <ContentItemDisplay> e) { var bodyElements = e.Model.Variants.Select(v => v.Tabs.FirstOrDefault(f => f.Alias == "Content")?.Properties?.FirstOrDefault(f => f.Alias == "bodyElements")); if (bodyElements != null) { //TODO: allow changing module names. } }
/// <summary> /// For the editor user, let's hide all the reserved tabs. /// </summary> /// <param name="e"></param> private void HideReservedTabs(EditorModelEventArgs <ContentItemDisplay> e) { if (!e.UmbracoContext.Security.CurrentUser.IsAdmin()) { foreach (var variant in e.Model.Variants) { variant.Tabs = variant.Tabs.Where(t => !_reservedTabs.Contains(t.Alias)); } } }
public static void SendingContentModel(HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e) { var contentItemDisplay = e.Model; var userGroupAliasses = e.UmbracoContext.Security.CurrentUser.Groups.Select(userGroup => userGroup.Alias).ToList(); var contentType = ApplicationContext.Current.Services.ContentTypeService.GetContentType(contentItemDisplay.ContentTypeAlias); var rules = RuleService.Current.GetActiveRules(contentType.CompositionAliases().Concat(new List <string> { contentItemDisplay.ContentTypeAlias })); foreach (var rule in rules) { if (rule.UserGroups.Any(userGroup => userGroupAliasses.Any(alias => alias.Equals(userGroup)))) { HideTabs(contentItemDisplay, userGroupAliasses, rule); HideProperties(contentItemDisplay, userGroupAliasses, rule); } } HideEmptyTabs(contentItemDisplay); }
private void EditorModelEventManager_SendingContentModel(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e) { // For the editor user, let's hide all the reserved tabs if (!e.UmbracoContext.Security.CurrentUser.IsAdmin()) { e.Model.Variants.FirstOrDefault().Tabs = e.Model.Variants.FirstOrDefault().Tabs.Where(t => !_reservedTabs.Contains(t.Alias)); } var bodyElements = e.Model.Variants.FirstOrDefault().Tabs.FirstOrDefault(f => f.Alias == "Content")?.Properties?.FirstOrDefault(f => f.Alias == "bodyElements"); if (bodyElements != null) { //TODO: allow changing module names. } }
private void EditorModelEventManager_SendingContentModel(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <Umbraco.Web.Models.ContentEditing.ContentItemDisplay> e) { var contentItemDisplay = e.Model; var context = e.UmbracoContext; MakePropertiesReadOnly(contentItemDisplay, context); }
/// <summary> /// Fill in default properties when creating an Articulate root node /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void EditorModelEventManager_SendingContentModel(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <Umbraco.Web.Models.ContentEditing.ContentItemDisplay> e) { var content = e.Model; if (!content.ContentTypeAlias.InvariantEquals(ArticulateContentTypeAlias)) { return; } //if it's not new don't continue if (content.Id != default(int)) { return; } var allProperties = content.Variants.SelectMany(x => x.Tabs.SelectMany(p => p.Properties)); foreach (var prop in allProperties) { switch (prop.Alias) { case "theme": prop.Value = "VAPOR"; break; case "pageSize": prop.Value = 10; break; case "categoriesUrlName": prop.Value = "categories"; break; case "tagsUrlName": prop.Value = "tags"; break; case "searchUrlName": prop.Value = "search"; break; case "categoriesPageName": prop.Value = "Categories"; break; case "tagsPageName": prop.Value = "Tags"; break; case "searchPageName": prop.Value = "Search results"; break; } } }
private void EditorModelEventManager_SendingMemberModel(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <MemberDisplay> e) { if (e.Model is MemberDisplay memberDisplay) { var personalisationConfig = DependencyResolver.Current.GetService <PersonalisationConfig>(); if (personalisationConfig == null) { return; } if (!memberDisplay.Properties?.Any() ?? true) { return; } var property = memberDisplay.Properties.FirstOrDefault(x => x.Alias == personalisationConfig.PropertyAlias); if (property == null) { return; } var personalisationService = DependencyResolver.Current.GetService <IPersonalisationService>(); if (personalisationService == null) { return; } var tags = personalisationService.GetFromStore((int)memberDisplay.Id); if (tags?.Any() ?? false) { var sb = new StringBuilder(); sb.Append("<table class=\"table\" style=\"max-width:800px;\">"); sb.Append($"<tr><th>{nameof(PersonalisationTag.Tag)}</th><th>{nameof(PersonalisationTag.Score)}</th></tr>"); foreach (var x in tags.OrderByDescending(x => x.Score)) { sb.Append($"<tr><td>{x.Tag}</td><td>{x.Score}<td></tr>"); } sb.Append("</table>"); property.Value = sb.ToString(); property.Readonly = true; } } }
public static void EditorModelEventManager_SendingContentModel(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e) { if (e.Model is ContentItemDisplay contentModel) { var umbracoContext = Current.Factory.GetInstance <IUmbracoContextFactory>(); if (umbracoContext != null) { using (var cref = umbracoContext.EnsureUmbracoContext()) { var contentItem = cref.UmbracoContext?.Content?.GetById(contentModel.Id); // Hide Preview Button and URL's if no template assigned. if (string.IsNullOrEmpty(contentModel.TemplateAlias)) { contentModel.AllowPreview = false; contentModel.Urls = null; } // Hide Preview Button and URL's if inside data repository. if (contentItem?.AncestorOrSelf <DataRepository>() != null) { contentModel.AllowPreview = false; contentModel.Urls = null; } } } } }
private void EditorModelEventManager_SendingContentModel(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <Umbraco.Web.Models.ContentEditing.ContentItemDisplay> e) { if (e.UmbracoContext.Security.CurrentUser.Groups.Any(x => x.Name.InvariantEquals("Managers"))) { if (e.Model.ContentTypeAlias == "totalCodeHomePage") { foreach (var variant in e.Model.Variants) { var tabs_new = variant.Tabs.Take(0).ToList(); foreach (var tab in variant.Tabs) { if (tab.Alias == "Content" || tab.Alias == "Footer" || tab.Alias == "Sliders" || tab.Alias == "Account Menu") { if (tab.Alias == "Content") { var properties_new = tab.Properties.Take(0).ToList(); foreach (var property in tab.Properties) { if (property.Alias == "logo") { properties_new.Add(property); } if (property.Alias == "externalUrlsTopMenu" || property.Alias == "externalUrlsMainMenu" || property.Alias == "externalUrlsFooter" || property.Alias == "externalUrlsAccountMenu" || property.Alias == "theme") { var property_readonly = property; property_readonly.View = "readonlyvalue"; properties_new.Add(property_readonly); } } tab.Properties = properties_new; } if (tab.Alias == "Account Menu") { var properties_new = tab.Properties.Take(0).ToList(); foreach (var property in tab.Properties) { if (property.Alias == "extras") { properties_new.Add(property); } } tab.Properties = properties_new; } tabs_new.Add(tab); } } variant.Tabs = tabs_new; } } if (e.Model.ContentTypeAlias == "totalCodeGenericPage") { foreach (var variant in e.Model.Variants) { var tabs_new = variant.Tabs.Take(0).ToList(); foreach (var tab in variant.Tabs) { if (tab.Alias == "Sliders") { tabs_new.Add(tab); } } variant.Tabs = tabs_new; } } } }
private void EditorModelEventManager_SendingContentModel(HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e) { e.Model.ContentApps = GetAllowedContentApps(e.UmbracoContext.Security.CurrentUser, e.Model.ContentApps); }
private static void OnSendingContentTypesModel(HttpActionContext sender, EditorModelEventArgs <IEnumerable <ElementsType> > e) { var handler = SendingContentTypesModel; handler?.Invoke(sender, e); }
private void EditorModelEventManager_SendingContentModel1(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <global::Umbraco.Web.Models.ContentEditing.ContentItemDisplay> e) { var identity = (UmbracoBackOfficeIdentity)System.Web.HttpContext.Current.User.Identity; var currentUSer = Current.Services.UserService.GetByProviderKey(identity.Id); var canSeeAdminTab = currentUSer.Groups.Any(x => x.Alias == "admin"); if (!canSeeAdminTab) { foreach (var variant in e.Model.Variants) { variant.Tabs = variant.Tabs.Where(x => x.Label != "Admin"); } } }
private void EditorModelEventManager_SendingContentModel(HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e) { HideReservedTabs(e); HidePropertiesForUserGroups(e); CustomiseBodyElements(e); }
private void EditorModelEventManager_SendingContentModel(HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e) { if (e.Model.ContentTypeAlias == "ENTER CONTENT ALIAS HERE") { IUser currentUser = UmbracoContext.Current.Security.CurrentUser; if (!currentUser.Groups.Any(g => g.Name == "Administrators")) { ContentPropertyDisplay propertyToHide = e.Model.Properties.FirstOrDefault(f => f.Alias == "ENTER PROPERTY ALIAS HERE"); propertyToHide.Readonly = true; } } }
private void EditorModelEventManager_SendingContentModel(HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e) { List <SettingsModel> settings = _settingsService.Get().Settings; var groupSetting = settings.FirstOrDefault(x => string.Equals(x.Label, KnownSettings.UserGroupOptIn, StringComparison.InvariantCultureIgnoreCase)); var testablePropsSetting = settings.FirstOrDefault(x => string.Equals(x.Label, KnownSettings.PropertiesToTest, StringComparison.InvariantCultureIgnoreCase)); if (groupSetting != null && groupSetting.Value.HasValue()) { var currentUserGroups = e.UmbracoContext.Security.CurrentUser?.Groups?.Select(x => x.Name) ?? new List <string>(); if (currentUserGroups.Any()) { bool include = groupSetting.Value.Split(',').Intersect(currentUserGroups).Any(); if (!include) { e.Model.ContentApps = e.Model.ContentApps.Where(x => x.Name != KnownStrings.Name); } } } // remove preflight app if content type doesn't include testable properties if (testablePropsSetting != null) { var defaultVariant = e.Model.Variants.FirstOrDefault(); var properties = defaultVariant.Tabs.SelectMany(x => x.Properties.Select(y => y.Editor)).Distinct(); var isTestable = properties.Intersect(testablePropsSetting.Value.Split(',')).Any(); if (!isTestable) { e.Model.ContentApps = e.Model.ContentApps.Where(x => x.Name != KnownStrings.Name); } } }
private void EditorModelEventManagerSendingContentModel(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e) { var contentModel = e.Model; if (contentModel != null) { contentModel.AllowPreview = false; } }