Exemple #1
0
        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);
        }
Exemple #7
0
        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.
            }
        }
Exemple #8
0
        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;
                }
            }
        }
Exemple #11
0
        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;
                    }
                }
            }
        }
Exemple #13
0
 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);
                }
            }
        }
Exemple #19
0
        private void EditorModelEventManagerSendingContentModel(System.Web.Http.Filters.HttpActionExecutedContext sender, EditorModelEventArgs <ContentItemDisplay> e)
        {
            var contentModel = e.Model;

            if (contentModel != null)
            {
                contentModel.AllowPreview = false;
            }
        }