/// <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); }
/// <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); }
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; }
/// <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); }
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 }
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)); }
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); }
// 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); }
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); }
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)); }
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 }
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); }
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)); }
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)); }
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); }
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); }
// 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 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); }
// 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); }
// 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 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); }
// 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); }
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); }