public virtual void Process(GetItemFieldsArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.ItemDefinition, "args.ItemDefinition");
            Assert.ArgumentNotNull(args.Context, "args.Context");

            var itemId = args.ItemDefinition.ID;
            var fields = new FieldList();
            var owner  = typeof(ContactFacetDataProvider).Name;

            fields.Add(Sitecore.FieldIDs.CreatedBy, owner);
            fields.Add(Sitecore.FieldIDs.Owner, owner);
            if (IDTableHelper.IsFacetItem(itemId))
            {
                var facetName = IDTableHelper.GetFacetName(itemId);
                fields.Add(Sitecore.FieldIDs.DisplayName, facetName);
                fields.Add(Sitecore.Strategy.Contacts.DataProviders.FieldIDs.ContactFacetName, facetName);
                var contractType = ContactFacetHelper.GetContractTypeForFacet(facetName);
                if (contractType != null)
                {
                    fields.Add(Sitecore.Strategy.Contacts.DataProviders.FieldIDs.ContactFacetContract, contractType.AssemblyQualifiedName);
                    if (ContactFacetHelper.ContactFacetImplementations.ContainsKey(contractType))
                    {
                        var implType = ContactFacetHelper.ContactFacetImplementations[contractType];
                        if (implType != null)
                        {
                            fields.Add(Sitecore.Strategy.Contacts.DataProviders.FieldIDs.ContactFacetImplementation, implType.AssemblyQualifiedName);
                        }
                    }
                }
            }
            if (IDTableHelper.IsFacetMemberItem(itemId))
            {
                var memberName = IDTableHelper.GetFacetMemberName(itemId);
                fields.Add(Sitecore.FieldIDs.DisplayName, memberName);
                fields.Add(Sitecore.Strategy.Contacts.DataProviders.FieldIDs.ContactFacetMemberName, memberName);
                var facetId    = IDTableHelper.GetFacetMemberParentId(itemId);
                var facetName  = IDTableHelper.GetFacetName(facetId);
                var memberType = ContactFacetHelper.GetFacetMemberType(facetName, memberName);
                if (memberType != null)
                {
                    fields.Add(Sitecore.Strategy.Contacts.DataProviders.FieldIDs.ContactFacetMemberType, memberType.AssemblyQualifiedName);
                }
            }
            if (IDTableHelper.IsFacetMemberValueItem(itemId))
            {
                var value = IDTableHelper.GetFacetMemberValue(itemId);
                if (!string.IsNullOrEmpty(value))
                {
                    fields.Add(Sitecore.Strategy.Contacts.DataProviders.FieldIDs.ContactFacetMemberValueValue, value);
                }
                var description = IDTableHelper.GetFacetMemberValueDescription(itemId);
                if (!string.IsNullOrEmpty(description))
                {
                    fields.Add(Sitecore.FieldIDs.DisplayName, description);
                    fields.Add(Sitecore.Strategy.Contacts.DataProviders.FieldIDs.ContactFacetMemberValueDescription, description);
                }
            }
            args.FieldList = fields;
        }
示例#2
0
        public virtual void Process(GetChildIDsArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.ItemDefinition, "args.ItemDefinition");
            Assert.ArgumentNotNull(args.Context, "args.Context");
            //TODO: finish
            var ids    = args.IDList;
            var itemId = args.ItemDefinition.ID;

            if (itemId == Sitecore.Strategy.Contacts.DataProviders.ItemIDs.SettingsRoot)
            {
                ids.Add(Sitecore.Strategy.Contacts.DataProviders.ItemIDs.ContactsFolder);
            }
            else if (itemId == Sitecore.Strategy.Contacts.DataProviders.ItemIDs.ContactsFolder)
            {
                ids.Add(Sitecore.Strategy.Contacts.DataProviders.ItemIDs.ContactFacetsFolder);
            }
            else if (itemId == Sitecore.Strategy.Contacts.DataProviders.ItemIDs.ContactFacetsFolder)
            {
                AddChildIDsForContactFacetsRootItem(ids, args.ItemDefinition, args.Context);
            }
            else if (IDTableHelper.IsFacetItem(itemId))
            {
                AddChildIDsForContactFacetItem(ids, args.ItemDefinition, args.Context);
            }
            else if (IDTableHelper.IsFacetMemberItem(itemId))
            {
                AddChildIDsForContactFacetMemberItem(ids, args.ItemDefinition, args.Context);
            }
        }
示例#3
0
        public virtual void Process(GetParentIDArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.ItemDefinition, "args.ItemDefinition");
            Assert.ArgumentNotNull(args.Context, "args.Context");

            var itemId = args.ItemDefinition.ID;

            if (IDTableHelper.IsFacetItem(itemId))
            {
                args.ParentId = IDTableHelper.GetFacetParentId(itemId);
            }
            else if (IDTableHelper.IsFacetMemberItem(itemId))
            {
                args.ParentId = IDTableHelper.GetFacetMemberParentId(itemId);
            }
            else if (IDTableHelper.IsFacetMemberValueItem(itemId))
            {
                args.ParentId = IDTableHelper.GetFacetMemberValueParentId(itemId);
            }
            else
            {
                base.Process(args);
            }
        }
        protected virtual void AddFacets(ID parentId)
        {
            var facetNames = ContactFacetHelper.GetFacetNames();

            foreach (var name in facetNames)
            {
                var facetId = IDTableHelper.GenerateIdForFacet(name, parentId, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetTemplate);
                AddContactFacetMember(name, facetId);
            }
        }
示例#5
0
        protected virtual void AddChildIDsForContactFacetsRootItem(IDList ids, ItemDefinition itemDefinition, CallContext context)
        {
            var facetNames = ContactFacetHelper.GetFacetNames();

            foreach (var name in facetNames)
            {
                var id = IDTableHelper.GenerateIdForFacet(name, itemDefinition.ID, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetTemplate);
                ids.Add(id);
            }
        }
        protected virtual void AddContactFacetMemberValues(string facetName, string memberName, ID parentId)
        {
            var args = new GetFacetMemberValuesArgs(facetName, memberName);

            CorePipeline.Run("getFacetMemberValues", args);
            if (!args.Values.Any())
            {
                return;
            }
            foreach (var pair in args.Values)
            {
                IDTableHelper.GenerateIdForFacetMemberValue(pair.Key, pair.Value, parentId, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberValueTemplate);
            }
        }
示例#7
0
        public virtual void Process(IsHandledArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.ItemId, "args.ItemId");
            List <ID> ids = null;

            if (args.IncludeAllIds)
            {
                ids = AllHandledIds;
            }
            else
            {
                ids = FullyHandledIds;
            }
            if (ids.Contains(args.ItemId))
            {
                args.IsHandled = true;
                return;
            }
            //
            //ensure the root node has been loaded
            var database = args.Context.DataManager.Database;

            if (database != null)
            {
                var item = database.GetItem(Sitecore.Strategy.Contacts.DataProviders.ItemIDs.ContactsFolder);
                if (item != null)
                {
                    //item.GetChildren();
                }
            }
            //
            //
            if (IDTableHelper.IsFacetItem(args.ItemId))
            {
                args.IsHandled = true;
                return;
            }
            if (IDTableHelper.IsFacetMemberItem(args.ItemId))
            {
                args.IsHandled = true;
                return;
            }
            if (IDTableHelper.IsFacetMemberValueItem(args.ItemId))
            {
                args.IsHandled = true;
                return;
            }
            //TODO: check dynamically generated item ids
        }
示例#8
0
        protected virtual void AddChildIDsForContactFacetMemberItem(IDList ids, ItemDefinition itemDefinition, CallContext context)
        {
            var itemId     = itemDefinition.ID;
            var facetName  = IDTableHelper.GetFacetMemberFacetName(itemId);
            var memberName = IDTableHelper.GetFacetMemberName(itemId);
            var args       = new GetFacetMemberValuesArgs(facetName, memberName);

            CorePipeline.Run("getFacetMemberValues", args);
            if (!args.Values.Any())
            {
                return;
            }
            foreach (var pair in args.Values)
            {
                var id = IDTableHelper.GenerateIdForFacetMemberValue(pair.Key, pair.Value, itemId, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberValueTemplate);
                ids.Add(id);
            }
        }
示例#9
0
 public virtual void Process(GetItemDefinitionArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     Assert.ArgumentNotNull(args.ItemId, "args.ItemId");
     Assert.ArgumentNotNull(args.Context, "args.Context");
     //TODO: finish
     if (args.ItemId == Sitecore.Strategy.Contacts.DataProviders.ItemIDs.ContactsFolder)
     {
         args.ItemDefinition = new ItemDefinition(args.ItemId, "Contacts", Sitecore.TemplateIDs.Folder, ID.Null);
         return;
     }
     else if (args.ItemId == Sitecore.Strategy.Contacts.DataProviders.ItemIDs.ContactFacetsFolder)
     {
         args.ItemDefinition = new ItemDefinition(args.ItemId, "Facets", Sitecore.TemplateIDs.Folder, ID.Null);
         return;
     }
     else if (IDTableHelper.IsFacetItem(args.ItemId))
     {
         var key = IDTableHelper.GetFacetName(args.ItemId);
         if (!string.IsNullOrEmpty(key))
         {
             args.ItemDefinition = new ItemDefinition(args.ItemId, ItemUtil.ProposeValidItemName(key), Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetTemplate, ID.Null);
             return;
         }
     }
     else if (IDTableHelper.IsFacetMemberItem(args.ItemId))
     {
         var key = IDTableHelper.GetFacetMemberName(args.ItemId);
         if (!string.IsNullOrEmpty(key))
         {
             args.ItemDefinition = new ItemDefinition(args.ItemId, ItemUtil.ProposeValidItemName(key), Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberTemplate, ID.Null);
             return;
         }
     }
     else if (IDTableHelper.IsFacetMemberValueItem(args.ItemId))
     {
         var key = IDTableHelper.GetFacetMemberValue(args.ItemId);
         if (!string.IsNullOrEmpty(key))
         {
             args.ItemDefinition = new ItemDefinition(args.ItemId, ItemUtil.ProposeValidItemName(key), Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberValueTemplate, ID.Null);
             return;
         }
     }
 }
        protected virtual void AddContactFacetMember(string facetName, ID parentId)
        {
            var contractType = ContactFacetHelper.GetContractTypeForFacet(facetName);

            if (contractType == null)
            {
                return;
            }
            var members = contractType.GetMembers();

            foreach (var member in members)
            {
                if (member.MemberType == MemberTypes.Field || member.MemberType == MemberTypes.Property)
                {
                    var memberId = IDTableHelper.GenerateIdForFacetMember(member, parentId, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberTemplate);
                    AddContactFacetMemberValues(facetName, member.Name, memberId);
                }
            }
        }
示例#11
0
        protected virtual void AddChildIDsForContactFacetItem(IDList ids, ItemDefinition itemDefinition, CallContext context)
        {
            var facetName    = IDTableHelper.GetFacetName(itemDefinition.ID);
            var contractType = ContactFacetHelper.GetContractTypeForFacet(facetName);

            if (contractType == null)
            {
                return;
            }
            var members = contractType.GetMembers();

            foreach (var member in members)
            {
                if (member.MemberType == MemberTypes.Field || member.MemberType == MemberTypes.Property)
                {
                    var id = IDTableHelper.GenerateIdForFacetMember(member, itemDefinition.ID, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberTemplate);
                    ids.Add(id);
                }
            }
        }