/// <summary>
        /// Part of the Sitecore Data Provider api.
        /// This method gets called for every single item in the sitecore tree. Remember: Everthing is Items!
        /// </summary>
        /// <remarks>
        /// It is essential to respond to all the items that are provided by this provider, and nothing else!
        /// This is necessary in order to "play nice" when sharing the database with other data providers.
        ///
        /// That means that we should return <see cref="ItemDefinition"/> objects for:
        /// * Content nodes and all sub items.
        /// * Template nodes and all sub items. See below.
        /// We should NOT return Item definitions for:
        /// * the selected root node we hook our tree onto.
        ///	    That particular ItemDefinition is provided by the standard data provider.
        ///
        /// Sitecore uses two types of templates. Static and item-based.
        /// Static templates are the ones returned by the "GetTemplates()" method.
        /// Item-based are the ones returned by the "GetTemplateIds()" method.
        ///
        /// Static templates are not displayed in the content editor.
        /// Item-based are displayed in the content editor.
        ///
        /// We use the Item-based templates.
        /// </remarks>
        /// <param name="itemId">The ID of the item to perhaps return a ItemDefinition for.</param>
        /// <param name="context">The call context of the data provider api.</param>
        /// <returns>The appropriate ItemDefinition if the ID belongs to this data provider. Otherwise null.</returns>
        public override ItemDefinition GetItemDefinition(ID itemId, CallContext context)
        {
            if (!EntryGuardOkToProceed(context))
            {
                return(null);
            }
            if (IsThisItemKnownToNotBelongToUs(itemId, context))
            {
                return(null);
            }

            foreach (var sitecoreDataProvider in _sitecoreDataProviders)
            {
                if (sitecoreDataProvider.IsOneOfOurSitecoreItems(itemId))
                {
                    if (UseVerboseLogging)
                    {
                        _log.Log <DataProviderMasterDatabase>("GetItemDefinition called with 'itemId' = " + itemId);
                    }
                    if (context != null)
                    {
                        context.Abort();
                    }
                    return(sitecoreDataProvider.GetItemDefinition(itemId));
                }
            }

            return(null);
        }
        /// <summary>
        /// Part of the Data Provider api.
        ///
        /// This implementation is taken straight from the Northwind example.
        /// </summary>
        /// <param name="item">The item to get the parent id for.</param>
        /// <param name="context">The call context of the data provider api.</param>
        /// <returns>The parent id, if known.</returns>
        public override ID GetParentID(ItemDefinition item, CallContext context)
        {
            if (!EntryGuardOkToProceed(context))
            {
                return(null);
            }
            if (IsThisItemKnownToNotBelongToUs(item.ID, context))
            {
                return(null);
            }

            foreach (var sitecoreDataProvider in _sitecoreDataProviders)
            {
                if (sitecoreDataProvider.IsOneOfOurSitecoreItems(item.ID))
                {
                    var result = sitecoreDataProvider.GetParentId(item.ID);
                    if (UseVerboseLogging)
                    {
                        _log.Log <DataProviderMasterDatabase>("GetParentID called with 'itemId' = " + item.ID + " Key = " + item.Key + " Returns " + result);
                    }
                    context.Abort();
                    return(result);
                }
            }

            return(null);
        }
        /// <summary>
        /// Part of the Sitecore Data Provider Api
        ///
        /// Returns true, if the item has children.
        /// </summary>
        /// <param name="item">The item to check for children.</param>
        /// <param name="context">The call context.</param>
        /// <returns>True, if the item is a uCommerce item, and it has children.</returns>
        public override bool HasChildren(ItemDefinition item, CallContext context)
        {
            if (!EntryGuardOkToProceed(context))
            {
                return(false);
            }
            if (IsThisItemKnownToNotBelongToUs(item.ID, context) && !WeDeliverChildrenFor(item.ID))
            {
                return(false);
            }

            foreach (var sitecoreDataProvider in _sitecoreDataProviders)
            {
                if (sitecoreDataProvider.IsOneOfOurSitecoreItems(item.ID))
                {
                    if (UseVerboseLogging)
                    {
                        _log.Log <DataProviderMasterDatabase>("HasChildren called with 'itemId' = " + item.ID + " Key = " + item.Key);
                    }
                    context.Abort();
                    return(sitecoreDataProvider.HasChildren(item.ID));
                }

                if (item.ID == sitecoreDataProvider.GetEntryIdInSitecoreTree())
                {
                    if (UseVerboseLogging)
                    {
                        _log.Log <DataProviderMasterDatabase>("HasChildren called with 'itemId' = " + item.ID + " Key = " + item.Key + " Our first level.");
                    }
                    return(true);
                }
            }

            return(false);
        }
예제 #4
0
        /// <summary>
        /// Gets a collection with the Sitecore IDs of all the templates in the current database
        /// </summary>
        /// <param name="oContext"></param>
        /// <returns></returns>
        public override IdCollection GetTemplateItemIds(CallContext oContext)
        {
            #region VARIABLES

            IdCollection oTemplateIdsCollection;

            #endregion

            Sitecore.Diagnostics.Log.Debug(string.Format("GetTemplateItemIds {0}", oContext.ToString()), this);

            oTemplateIdsCollection = null;

            try
            {
                oTemplateIdsCollection = GetTemplateIds(oContext.DataManager.Database.Name);
                if (oTemplateIdsCollection != null)
                {
                    UpdateContext(oTemplateIdsCollection, oContext);
                    oContext.Abort();
                    Sitecore.Diagnostics.Log.Debug(string.Format("GetTemplateItemIds, Templates Count:{0}", oTemplateIdsCollection.Count), this);
                }
            }
            catch
            {
                Sitecore.Diagnostics.Log.Error(string.Format("Unable to get Get templateItem ids for database:{0}", oContext.DataManager.Database.Name), this);
                throw;
            }


            return(oTemplateIdsCollection);
        }
예제 #5
0
        public override Collections.IDList GetChildIDs(Data.ItemDefinition itemDefinition, CallContext context)
        {
            IDList currentChildIDs = context.CurrentResult as IDList;
            IDList idList = new IDList();
            XPathNavigator element = (XPathNavigator)courseCache[itemDefinition.ID];// CourseData.SelectSingleNode(string.Format("//course[@id='{0}']", itemDefinition.ID.ToString()));
            if (element != null)
            {
                context.Abort();
                XPathNodeIterator childCourses = element.Select("./courses/course");
                foreach (XPathNavigator childCourse in childCourses)
                {
                    ID id = ID.Parse(childCourse.GetAttribute("id", string.Empty));
                    idList.Add(id);
                }
            }
            else if (itemDefinition.ID.ToString() == ParentItemID)
            {
                context.Abort();
                XPathNodeIterator childCourses = CourseData.Select("/courses/course");
                foreach (XPathNavigator childCourse in childCourses)
                {
                    ID id = ID.Parse(childCourse.GetAttribute("id", string.Empty));
                    idList.Add(id);
                }
            }

            return idList;
        }
예제 #6
0
        /// <summary>
        /// Execute the selection
        /// </summary>
        /// <param name="sQuery"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override IDList SelectIDs(string sQuery, CallContext context)
        {
            List <Guid> oResults;
            IDList      oSelectedIds;
            bool        bFound;

            Sitecore.Diagnostics.Log.Debug(string.Format("SelectIDs Start, Query:{0}", sQuery), this);

            oSelectedIds = new IDList();
            bFound       = false;

            using (var oContentService = new GenContentServiceProxy())
            {
                oResults = oContentService.SelectIDs(sQuery, context.DataManager.Database.Name);
            }

            if (oResults != null && oResults.Count > 0)
            {
                foreach (var oItemId in oResults)
                {
                    oSelectedIds.Add(ID.Parse(oItemId));
                }
                bFound = true;
            }

            if (bFound)
            {
                UpdateContext(oSelectedIds, context);
                context.Abort();
            }

            return(oSelectedIds);
        }
예제 #7
0
        public override ID SelectSingleID(string query, CallContext context)
        {
            Guid oResult;
            ID   oSelectedId;
            bool bFound;

            oSelectedId = ID.Null;
            bFound      = false;

            using (var oContentService = new GenContentServiceProxy())
            {
                oResult = oContentService.SelectSingleID(query, context.DataManager.Database.Name);
            }

            if (oResult != null && oResult == Guid.Empty)
            {
                oSelectedId = ID.Parse(oSelectedId);
                bFound      = true;
            }

            if (bFound)
            {
                UpdateContext(oSelectedId, context);
                context.Abort();
            }
            return(oSelectedId);
        }
        public override bool MoveItem(ItemDefinition itemDefinition, ItemDefinition destination, CallContext context)
        {
            var entry = GetStoreEntry(itemDefinition.ID);

            if (entry == null)
            {
                return(base.MoveItem(itemDefinition, destination, context));
            }

            var parentKey = string.Empty;

            if (destination.ID.ToString() == _repository.RootId)
            {
                parentKey = _repository.RootId;
            }
            else
            {
                var parentEntry = GetStoreEntry(destination.ID);
                if (parentEntry == null)
                {
                    return(base.MoveItem(itemDefinition, destination, context));
                }

                parentKey = parentEntry.Key;
            }

            context.Abort();
            MoveStoreKey(entry.Key, destination.ID);
            return(_repository.MoveItem(entry.Key, parentKey));
        }
        public override int AddVersion(ItemDefinition itemDefinition, VersionUri baseVersion, CallContext context)
        {
            var item = GetItem(itemDefinition.ID);

            if (item == null)
            {
                return(base.AddVersion(itemDefinition, baseVersion, context));
            }

            var language = item.GetOrCreateLanguage(baseVersion.Language.ToString());

            if (baseVersion.Version.Number > 0)
            {
                var current = language.GetOrCreateVersion(baseVersion.Version.Number);
                var clone   = current.Clone() as VersionModel;
                clone.Number++;
                language.Versions.Add(clone);
            }
            else
            {
                language.GetOrCreateVersion(1);
            }

            context.Abort();
            return(_repository.WriteItem(item) ? 1 : -1);
        }
        public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
        {
            IEnumerable <FileInfo> children = null;

            if (itemDefinition.ID.ToString() == _repository.RootId)
            {
                children = _repository.GetChildren(_repository.RootId);
            }
            else
            {
                var entry = GetStoreEntry(itemDefinition.ID);
                if (entry == null)
                {
                    return(base.GetChildIDs(itemDefinition, context));
                }

                children = _repository.GetChildren(entry.Key);
            }

            var idlist = new IDList();

            foreach (var child in children.Select(x => x.ToModel()))
            {
                var scId = GetSitecoreId(child.ModelId);
                if (scId == (ID)null)
                {
                    scId = CreateSitecoreId(child.ModelId, itemDefinition);
                }

                idlist.Add(scId);
            }

            context.Abort();
            return(idlist);
        }
        public override bool CreateItem(ID itemID, string itemName, ID templateID, ItemDefinition parent, CallContext context)
        {
            var parentKey = string.Empty;

            if (parent.ID.ToString() != _repository.RootId)
            {
                var parentEntry = GetStoreEntry(parent.ID);
                if (parentEntry == null)
                {
                    return(base.CreateItem(itemID, itemName, templateID, parent, context));
                }

                parentKey = parentEntry.Key;
            }
            else
            {
                parentKey = _repository.RootId;
            }
            var modelId = CreateStoreKey(itemID, parent.ID);
            var item    = new ItemModel
            {
                ModelId    = modelId,
                ItemName   = itemName,
                TemplateId = templateID.ToString()
            };

            context.Abort();
            return(_repository.WriteChildItem(item, parentKey));
        }
		public override bool HasChildren(ItemDefinition itemDefinition, CallContext context)
		{
			Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

			if (!ShouldExecuteProvider(itemDefinition.ID)) return false;

			context.Abort();
			return GetChildIDs(itemDefinition, context).Count > 0; // we use GetChildIDs here so we can filter on included children
		}
예제 #13
0
 public override ID GetParentID(ItemDefinition itemDefinition, CallContext context)
 {
     IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, itemDefinition.ID);
     if (idList.Length > 0)
     {
         context.Abort();
         return(ID.Parse(_parentItem));
     }
     return(base.GetParentID(itemDefinition, context));
 }
예제 #14
0
 public override bool BlobStreamExists(Guid blobId, CallContext context)
 {
     IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, new ID(blobId));
     if (idList.Length > 0)
     {
         context.Abort();
         return(true);
     }
     return(false);
 }
        public override bool RemoveBlobStream(Guid blobId, CallContext context)
        {
            var result = _repository.RemoveMedia(blobId);

            if (result)
            {
                context.Abort();
            }

            return(result);
        }
예제 #16
0
        // This demo is a very simple one-dimentional listing of products. However, we
        // could get more sphisticated and break it down by category in the tree. This
        // would be the place to do that.
        public override ID GetParentID(ItemDefinition itemDefinition, CallContext context)
        {
            if (this.canProcessItem(itemDefinition.ID))
            {
                Trace.WriteLine("GetParentID", "ProductDataProvider");
                context.Abort();

                return(this.getParentId(itemDefinition.ID));
            }
            return(base.GetParentID(itemDefinition, context));
        }
        public override bool SetBlobStream(Stream stream, Guid blobId, CallContext context)
        {
            var result = _repository.WriteMedia(blobId, stream);

            if (result)
            {
                context.Abort();
            }

            return(result);
        }
예제 #18
0
 public override Stream GetBlobStream(Guid blobId, CallContext context)
 {
     IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, new ID(blobId));
     if (idList.Length > 0)
     {
         IDTableEntry mappedID = idList[0];
         context.Abort();
         return(GetThumbnailStream(mappedID.Key));
     }
     return(null);
 }
예제 #19
0
        public override int AddVersion(ItemDefinition itemDefinition, VersionUri baseVersion, CallContext context)
        {
            Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

            if (!ShouldExecuteProvider(itemDefinition.ID))
            {
                return(-1);
            }

            context.Abort();
            return(base.AddVersion(itemDefinition, baseVersion, context));
        }
예제 #20
0
        public override bool HasChildren(ItemDefinition itemDefinition, CallContext context)
        {
            Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

            if (!ShouldExecuteProvider(itemDefinition.ID))
            {
                return(false);
            }

            context.Abort();
            return(GetChildIDs(itemDefinition, context).Count > 0);            // we use GetChildIDs here so we can filter on included children
        }
예제 #21
0
        public override ItemDefinition GetItemDefinition(ID itemId, CallContext context)
        {
            Assert.ArgumentNotNull(itemId, "itemId");

            if (!ShouldExecuteProvider(itemId))
            {
                return(null);
            }

            context.Abort();
            return(base.GetItemDefinition(itemId, context));
        }
        public override bool HasChildren(ItemDefinition itemDefinition, CallContext context)
        {
            var entry = GetStoreEntry(itemDefinition.ID);

            if (entry == null)
            {
                return(base.HasChildren(itemDefinition, context));
            }

            context.Abort();
            return(_repository.GetChildren(entry.Key).Count() > 0);
        }
예제 #23
0
        public override VersionUriList GetItemVersions(ItemDefinition itemDefinition, CallContext context)
        {
            Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

            if (!ShouldExecuteProvider(itemDefinition.ID))
            {
                return(null);
            }

            context.Abort();
            return(base.GetItemVersions(itemDefinition, context));
        }
예제 #24
0
        public override Sitecore.Data.FieldList GetItemFields(ItemDefinition itemDefinition, VersionUri versionUri, CallContext context)
        {
            IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, itemDefinition.ID);
            if (idList.Length > 0)
            {
                IDTableEntry mappedID = idList[0];
                context.Abort();
                XmlNode   video = VideoData.SelectSingleNode("/response/videos/video[@key='" + mappedID.Key + "']");
                FieldList list  = new FieldList();
                list.Add(ID.Parse(DISPLAY_NAME_FIELD), video[BOTR_TITLE].InnerText);
                list.Add(ID.Parse(VIDEO_KEY_FIELD), mappedID.Key);
                list.Add(ID.Parse(STATUS_FIELD), video[BOTR_STATUS].InnerText);
                list.Add(ID.Parse(BLOB_FIELD), itemDefinition.ID.ToString());
                list.Add(ID.Parse(TITLE_FIELD), video[BOTR_TITLE].InnerText);
                list.Add(ID.Parse(DESCRIPTION_FIELD), video[BOTR_DESCRIPTION].InnerText);
                list.Add(ID.Parse(KEYWORDS_FIELD), video[BOTR_TAGS].InnerText);
                list.Add(ID.Parse(ALT_FIELD), video[BOTR_TITLE].InnerText);
                list.Add(ID.Parse(EXTENSION_FIELD), EXTENSION);
                list.Add(ID.Parse(MIME_TYPE_FIELD), MIME_TYPE);
                list.Add(ID.Parse(VIDEO_URL_FIELD), video[BOTR_LINK].InnerText);
                XmlNode custom = video[BOTR_CUSTOM];
                if (custom != null && custom[BOTR_CUSTOM_LINK] != null)
                {
                    list.Add(ID.Parse(VIDEO_CUSTOM_URL_FIELD), custom[BOTR_CUSTOM_LINK].InnerText);
                }

                double videoTimestamp = Double.Parse(video[BOTR_DATE].InnerText);
                string videoDate      = Sitecore.DateUtil.ToIsoDate(UnixDateTime.FromUnixTimestamp(videoTimestamp));
                list.Add(ID.Parse(CREATED_FIELD), videoDate);
                list.Add(ID.Parse(UPDATED_FIELD), videoDate);

                //BotR puts width/height data with conversion data. just need the aspect ratio, so grab the first one in the doc
                XmlDocument conversionData  = GetVideoConversionData(mappedID.Key);
                XmlNode     videoConversion = conversionData.SelectSingleNode("/response/conversions/conversion");
                if (videoConversion != null)
                {
                    string heightStr = videoConversion[BOTR_HEIGHT].InnerText;
                    string widthStr  = videoConversion[BOTR_WIDTH].InnerText;
                    double height    = 0;
                    double width     = 0;
                    Double.TryParse(heightStr, out height);
                    Double.TryParse(widthStr, out width);
                    if (height != 0 && width != 0)
                    {
                        int thumbHeight = (int)(THUMBNAIL_SIZE * (height / width));
                        list.Add(ID.Parse(WIDTH_FIELD), THUMBNAIL_SIZE.ToString());
                        list.Add(ID.Parse(HEIGHT_FIELD), thumbHeight.ToString());
                    }
                }
                return(list);
            }
            return(base.GetItemFields(itemDefinition, versionUri, context));
        }
예제 #25
0
        public override ID GetParentID(ItemDefinition itemDefinition, CallContext context)
        {
            Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

            if (!ShouldExecuteProvider(itemDefinition.ID))
            {
                return(null);
            }

            context.Abort();
            return(base.GetParentID(itemDefinition, context));
        }
        public override ID GetParentID(ItemDefinition itemDefinition, CallContext context)
        {
            var entry = GetStoreEntry(itemDefinition.ID);

            if (entry == null)
            {
                return(base.GetParentID(itemDefinition, context));
            }

            context.Abort();
            return(entry.ParentID);
        }
        public override Stream GetBlobStream(Guid blobId, CallContext context)
        {
            var stream = _repository.ReadMedia(blobId);

            if (stream == null)
            {
                return(base.GetBlobStream(blobId, context));
            }

            context.Abort();
            return(stream);
        }
        /// <summary>
        /// Part of the Sitecore Data Provider api.
        ///
        /// This method is responsible for populating the template fields
        /// with the actual data for ItemDefinitions belonging to this Data Provider.
        /// </summary>
        /// <param name="item">The <see cref="ItemDefinition"/> to provide field data for.</param>
        /// <param name="version">The version to deliver field data for.</param>
        /// <param name="context">The call context of the data provider api.</param>
        /// <returns>
        /// A field list with data for the fields in the template for the node,
        /// if the item belongs to this data provider. Otherwise null.
        /// </returns>
        public override FieldList GetItemFields(ItemDefinition item, VersionUri version, CallContext context)
        {
            if (!EntryGuardOkToProceed(context))
            {
                return(null);
            }
            if (IsThisItemKnownToNotBelongToUs(item.ID, context))
            {
                return(null);
            }

            var cachedData = _fieldsCache.Fetch(item.ID.Guid, version.Language.Name);

            if (cachedData != null)
            {
                return(cachedData);
            }

            foreach (var sitecoreDataProvider in _sitecoreDataProviders)
            {
                if (sitecoreDataProvider.IsOneOfOurSitecoreItems(item.ID))
                {
                    if (UseVerboseLogging)
                    {
                        _log.Log <DataProviderMasterDatabase>("GetItemFields called with 'itemId' = " + item.ID + " Key = " + item.Key);
                    }

                    RemoveItemFromSitecoresItemCache(item.ID, context.DataManager.Database);

                    FieldList fieldValues = sitecoreDataProvider.GetFieldList(item.ID, version);

                    GetItemFieldsForStandardTemplate(item, version, fieldValues);

                    // Add empty context menu.
                    fieldValues.SafeAdd(FieldIDs.ContextMenu, FieldIds.SystemContent.EmptyContextMenuNodeId.ToString());

                    if (UseVerboseLogging)
                    {
                        foreach (KeyValuePair <ID, string> fieldValue in fieldValues)
                        {
                            _log.Log <DataProviderMasterDatabase>(string.Format("-- '{0}'. ID='{1}'. VersionUri='{2}'", fieldValue.Value, fieldValue.Key, version));
                        }
                    }

                    context.Abort();
                    _fieldsCache.Store(item.ID.Guid, version.Language.Name, fieldValues);
                    return(fieldValues);
                }
            }

            return(null);
        }
예제 #29
0
        public override bool RemoveVersions(ItemDefinition itemDefinition, Language language, CallContext context)
        {
            Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

            if (!ShouldExecuteProvider(itemDefinition.ID))
            {
                return(false);
            }

            context.Abort();
            base.RemoveVersions(itemDefinition, language, context);

            return(true);
        }
예제 #30
0
        // If our repository implemented language versions, this is where you'd manage it.
        // Some Product Inventory Management (PIM) system can version, so we could manage
        // that here. For this demo, we're assuming the products we have are suitable for
        // every version.
        public override VersionUriList GetItemVersions(ItemDefinition itemDefinition, CallContext context)
        {
            if (this.canProcessItem(itemDefinition.ID))
            {
                Trace.WriteLine(String.Format("GetItemVersions({0}, {1})", itemDefinition, context), "ProductDataProvider");

                var versions = new VersionUriList();
                versions.Add(Language.Current, Sitecore.Data.Version.First);

                context.Abort();
                return(versions);
            }
            return(base.GetItemVersions(itemDefinition, context));
        }
예제 #31
0
        public override bool SaveItem(ItemDefinition itemDefinition, ItemChanges changes, CallContext context)
        {
            Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

            if (!ShouldExecuteProvider(itemDefinition.ID))
            {
                return(false);
            }

            context.Abort();
            base.SaveItem(itemDefinition, changes, context);

            return(true);
        }
        /// <summary>
        ///     BLOBs the stream exists.
        /// </summary>
        /// <param name="blobId">The BLOB identifier.</param>
        /// <param name="context">The dbContext.</param>
        /// <returns></returns>
        public override bool BlobStreamExists(Guid blobId, CallContext context)
        {
            Assert.ArgumentNotNull(blobId, nameof(blobId));
            Assert.ArgumentNotNull(context, nameof(context));

            if (!this.DbContext.Available)
            {
                return(false);
            }

            context.Abort();

            return(this.DbContext.Media.Contains(blobId.ToString("N")).Result);
        }
예제 #33
0
        // Here we check if the item implements our container template. If it does,
        // we create an association between what Sitecore will store the item as
        // and what our repository is storing the item as (SitecoreID<->EntityID).
        // This is the purpose of the IDTable.
        public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
        {
            if (this.canProcessParent(itemDefinition.ID))
            {
                Trace.WriteLine(String.Format("GetChildIDs({0}, {1})", itemDefinition, context), "ProductDataProvider");
                context.Abort();

                var idList = new IDList();
                var products = this.productRepository.GetAll();
                foreach (var product in products)
                {
                    var tableEntry = this.getSitecoreId(product.Id, itemDefinition.ID, true);
                    idList.Add(tableEntry);
                }
                context.DataManager.Database.Caches.DataCache.Clear();
                return idList;
            }
            return base.GetChildIDs(itemDefinition, context);
        }
		public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context)
		{
			Assert.ArgumentNotNull(itemDefinition, "itemDefinition");
			Assert.ArgumentNotNull(context, "context");

			if (!ShouldExecuteProvider(itemDefinition.ID)) return null;

			context.Abort();
			var childIds = base.GetChildIDs(itemDefinition, context);

			var filteredChildren = new IDList();

			foreach (ID child in childIds)
			{
				if (ShouldExecuteProvider(child)) filteredChildren.Add(child);
			}

			// invoke the other data providers, if any, and *unique* the child IDs
			// this allows us to merge serialized items on top of an existing database item
			// (without this uniquing we'd get two identical children for items that were both
			// serialized AND in the other providers)
			var providers = Database.GetDataProviders();
			for (int i = context.Index + 1; i < context.ProviderCount; i++)
			{
				var otherChildIds = providers[i].GetChildIDs(itemDefinition, context);

				if (otherChildIds == null) continue;

				foreach (ID child in otherChildIds)
				{
					if (!filteredChildren.Contains(child)) filteredChildren.Add(child);
				}
			}

			return filteredChildren;
		}
		public override ID ResolvePath(string itemPath, CallContext context)
		{
			Assert.ArgumentNotNull(itemPath, "itemPath");

			var existingPath = SerializedDatabase.GetItem(itemPath);

			if (existingPath == null) return null;

			if (!ShouldExecuteProvider(existingPath.GetSitecoreId())) return null;

			context.Abort();
			return base.ResolvePath(itemPath, context);
		}
 // Returns the ID of the given item’s parent.
 public override ID GetParentID(ItemDefinition itemDefinition, CallContext context)
 {
     if (CanProcessYouTubeItem(itemDefinition.ID, context))
      {
     context.Abort();
     return GetParentID(itemDefinition.ID);
      }
      return base.GetParentID(itemDefinition, context);
 }
		public override ID GetParentID(ItemDefinition itemDefinition, CallContext context)
		{
			Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

			if (!ShouldExecuteProvider(itemDefinition.ID)) return null;

			context.Abort();
			return base.GetParentID(itemDefinition, context);
		}
		public override VersionUriList GetItemVersions(ItemDefinition itemDefinition, CallContext context)
		{
			Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

			if (!ShouldExecuteProvider(itemDefinition.ID)) return null;

			context.Abort();
			return base.GetItemVersions(itemDefinition, context);
		}
예제 #39
0
        // This demo is a very simple one-dimentional listing of products. However, we
        // could get more sphisticated and break it down by category in the tree. This
        // would be the place to do that.
        public override ID GetParentID(ItemDefinition itemDefinition, CallContext context)
        {
            if (this.canProcessItem(itemDefinition.ID))
            {
                Trace.WriteLine("GetParentID", "ProductDataProvider");
                context.Abort();

                return this.getParentId(itemDefinition.ID);
            }
            return base.GetParentID(itemDefinition, context);
        }
예제 #40
0
        public override Collections.VersionUriList GetItemVersions(Data.ItemDefinition itemDefinition, CallContext context)
        {
            XPathNavigator element = (XPathNavigator)courseCache[itemDefinition.ID];// CourseData.SelectSingleNode(string.Format("//course[@id='{0}']", itemDefinition.ID.ToString()));
            if (element != null)
            {
                context.Abort();
                VersionUriList versions = new VersionUriList();
                LanguageCollection languages = LanguageManager.GetLanguages(this.Database);
                foreach (Language language in languages)
                {
                    versions.Add(language, new Sitecore.Data.Version(1));
                }

                return versions;
            }

            return null;
        }
		public override ItemDefinition GetItemDefinition(ID itemId, CallContext context)
		{
			Assert.ArgumentNotNull(itemId, "itemId");

			if (!ShouldExecuteProvider(itemId)) return null;

			context.Abort();
			return base.GetItemDefinition(itemId, context);
		}
예제 #42
0
        // If our repository implemented language versions, this is where you'd manage it.
        // Some Product Inventory Management (PIM) system can version, so we could manage
        // that here. For this demo, we're assuming the products we have are suitable for
        // every version.
        public override VersionUriList GetItemVersions(ItemDefinition itemDefinition, CallContext context)
        {
            if (this.canProcessItem(itemDefinition.ID))
            {
                Trace.WriteLine(String.Format("GetItemVersions({0}, {1})", itemDefinition, context), "ProductDataProvider");

                var versions = new VersionUriList();
                versions.Add(Language.Current, Sitecore.Data.Version.First);

                context.Abort();
                return versions;
            }
            return base.GetItemVersions(itemDefinition, context);
        }
		public override int AddVersion(ItemDefinition itemDefinition, VersionUri baseVersion, CallContext context)
		{
			Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

			if (!ShouldExecuteProvider(itemDefinition.ID)) return -1;

			context.Abort();
			return base.AddVersion(itemDefinition, baseVersion, context);
		}
예제 #44
0
        public override Data.ItemDefinition GetItemDefinition(Data.ID itemId, CallContext context)
        {
            Log.Debug("start GetItemDefinition(..) with itemId " + itemId.ToString() + ", database: " + this.Database.Name);
            XPathNavigator element = null;

            if (courseCache.ContainsKey(itemId))
            {
                context.Abort();
                element = (XPathNavigator)courseCache[itemId];
            }
            else
            {
                element = CourseData.SelectSingleNode(string.Format("//course[@id='{0}']", itemId.ToString()));
                if (element != null)
                {
                    context.Abort();
                    string itemName = element.SelectSingleNode("./name").Value;
                    ItemDefinition definition = new ItemDefinition(itemId, itemName, TemplateID, ID.Null);
                    courseCache.Add(itemId, element, 0L);
                    return definition;
                }
            }

            return base.GetItemDefinition(itemId, context);
        }
		public override bool CopyItem(ItemDefinition source, ItemDefinition destination, string copyName, ID copyId, CallContext context)
		{
			Assert.ArgumentNotNull(source, "source");
			Assert.ArgumentNotNull(destination, "destination");
			Assert.ArgumentNotNullOrEmpty(copyName, "copyName");
			Assert.ArgumentNotNull(copyId, "copyId");

			var template = TemplateManager.GetTemplate(source.TemplateID, Database);

			if (template == null) return false;

			if (!ShouldExecuteProvider(destination, copyName, copyId, source.TemplateID, template.Name)) return false;

			context.Abort();
			return base.CopyItem(source, destination, copyName, copyId, context);
		}
		public override bool RemoveVersions(ItemDefinition itemDefinition, Language language, CallContext context)
		{
			Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

			if (!ShouldExecuteProvider(itemDefinition.ID)) return false;

			context.Abort();
			base.RemoveVersions(itemDefinition, language, context);

			return true;
		}
		public override bool CreateItem(ID itemId, string itemName, ID templateId, ItemDefinition parent, CallContext context)
		{
			Assert.ArgumentNotNull(itemId, "itemId");

			var template = TemplateManager.GetTemplate(templateId, Database);

			if (template == null) return false;

			if (!ShouldExecuteProvider(parent, itemName, itemId, templateId, template.Name)) return false;

			context.Abort();
			return base.CreateItem(itemId, itemName, templateId, parent, context);
		}
		public override bool SaveItem(ItemDefinition itemDefinition, ItemChanges changes, CallContext context)
		{
			Assert.ArgumentNotNull(itemDefinition, "itemDefinition");

			if (!ShouldExecuteProvider(itemDefinition.ID)) return false;

			context.Abort();
			base.SaveItem(itemDefinition, changes, context);

			return true;
		}
 // This method must return first version for every language to make info appear in content editor.
 public override VersionUriList GetItemVersions(ItemDefinition itemDefinition, CallContext context)
 {
     if (CanProcessYouTubeItem(itemDefinition.ID, context))
      {
     VersionUriList versionUriList = new VersionUriList();
     foreach (var language in LanguageManager.GetLanguages(ContentDB))
     {
        versionUriList.Add(language, Sitecore.Data.Version.First);
     }
     context.Abort();
     return versionUriList;
      }
      return base.GetItemVersions(itemDefinition, context);
 }