public static LinkDatabaseCommand CreateDeleteCommand(ItemLink itemLink, IBatchOperation operation) { var parameters = new List <object>(); var index = operation.Index; var sql = $@" DELETE FROM [Links] WHERE [SourceDatabase]=@{LinksTableColumns.Database}{index} AND [SourceItemID]=@{LinksTableColumns.ItemID}{index} AND [SourceLanguage]=@{LinksTableColumns.SourceLanguage}{index} AND [SourceVersion]=@{LinksTableColumns.SourceVersion}{index} AND [SourceFieldID]=@{LinksTableColumns.FieldID}{index} AND [TargetDatabase]=@{LinksTableColumns.TargetDatabase}{index} AND [TargetItemID]=@{LinksTableColumns.TargetID}{index} AND [TargetLanguage]=@{LinksTableColumns.TargetLanguage}{index} AND [TargetVersion] = @{LinksTableColumns.TargetVersion}{index}"; AddToParameters(parameters, LinksTableColumns.Database, GetString(itemLink.SourceDatabaseName, DatabaseNameLength)); AddToParameters(parameters, LinksTableColumns.ItemID, itemLink.SourceItemID.Guid); AddToParameters(parameters, LinksTableColumns.SourceLanguage, GetString(itemLink.SourceItemLanguage.ToString(), LanguageNameLength)); AddToParameters(parameters, LinksTableColumns.SourceVersion, itemLink.SourceItemVersion.Number); AddToParameters(parameters, LinksTableColumns.FieldID, itemLink.SourceFieldID); AddToParameters(parameters, LinksTableColumns.TargetDatabase, GetString(itemLink.TargetDatabaseName, DatabaseNameLength)); AddToParameters(parameters, LinksTableColumns.TargetID, itemLink.TargetItemID); AddToParameters(parameters, LinksTableColumns.TargetLanguage, GetString(itemLink.TargetItemLanguage.ToString(), LanguageNameLength)); AddToParameters(parameters, LinksTableColumns.TargetVersion, itemLink.TargetItemVersion.Number); return(new LinkDatabaseCommand(sql, parameters)); }
protected void MapToLinkField(Link link, InternalLinkField linkField, SitecoreFieldConfiguration config) { var item = linkField.InnerField.Item; if (link.TargetId == Guid.Empty) { ItemLink iLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, linkField.TargetItem.Database.Name, linkField.TargetID, linkField.TargetItem.Paths.FullPath); linkField.RemoveLink(iLink); } else { ID newId = new ID(link.TargetId); Item target = item.Database.GetItem(newId); if (target != null) { ItemLink nLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); linkField.UpdateLink(nLink); } else { throw new MapperException("No item with ID {0}. Can not update Link linkField".Formatted(newId)); } } }
private void ProcessIncomingLinks(ItemLink[] links, StringBuilder output) { var currentItem = Context.CurrentItem; for (int i = 0; i < links.Length; i++) { if (links[i].TargetItemID == currentItem.ID) { var fieldItem = Context.CurrentDatabase.GetItem(links[i].SourceFieldID); var sourceItem = links[i].GetSourceItem(); if (sourceItem != null) { if (string.IsNullOrEmpty(OriginFieldName) || (fieldItem != null && fieldItem.Key == OriginFieldName.ToLower())) { if (OutputIds) { if (output.Length > 0) output.Append("|"); output.Append(sourceItem.ID.ToString()); } else { if (fieldItem != null) Formatter.PrintTable(new[] { INCOMING_LABEL, VALID_LABEL, fieldItem.Name, sourceItem.Paths.FullPath }, DISPLAY_COLUMN_WIDTHS, output); else Formatter.PrintTable(new[] { INCOMING_LABEL, VALID_LABEL, UNKNOWN_LABEL, sourceItem.Paths.FullPath }, DISPLAY_COLUMN_WIDTHS, output); } } } else if (!OutputIds) Formatter.PrintTable(new string[] { INCOMING_LABEL, INVALID_LABEL, UNKNOWN_LABEL, UNKNOWN_LABEL }, DISPLAY_COLUMN_WIDTHS, output); } } }
public static Triple ToTriple(IConceptManager conceptManager, Item item, ItemLink itemLink) { var g = new Graph(); g.NamespaceMap.AddNamespace("sitecore", new Uri("sitecore:")); //g.NamespaceMap.AddNamespace("http", new Uri("http:")); IUriNode sub = g.CreateUriNode(ItemToUri(item)); IUriNode obj; if (itemLink.GetTargetItem() == null) { //Broken link creation obj = g.CreateUriNode(BrokenLinkUri); } else { obj = g.CreateUriNode(ItemToUri(itemLink.GetTargetItem())); } IUriNode predicate = conceptManager.GetPredicate(sub, obj); //Add Source Field Id to predicate IUriNode predicateWithFieldId = g.CreateUriNode(new Uri(predicate.Uri + "#" + itemLink.SourceFieldID)); return(new Triple(sub, Tools.CopyNode(predicateWithFieldId, g), obj)); }
private bool ItemLinksAreEqual(ItemLink left, ItemLink right) { if (left == null && right == null) { return(true); } if (left == null || right == null) { return(false); } if (!string.Equals(left.SourceDatabaseName, right.SourceDatabaseName, StringComparison.Ordinal) || left.SourceItemID != right.SourceItemID || left.SourceFieldID != right.SourceFieldID || left.SourceItemLanguage != right.SourceItemLanguage || left.SourceItemVersion != right.SourceItemVersion) { return(false); } if (!string.Equals(left.TargetDatabaseName, right.TargetDatabaseName, StringComparison.Ordinal) || left.TargetItemID != right.TargetItemID || left.TargetItemLanguage != right.TargetItemLanguage || left.TargetItemVersion != right.TargetItemVersion || !string.Equals(left.TargetPath, right.TargetPath, StringComparison.Ordinal) ) { return(false); } return(true); }
public override void Relink(ItemLink link, Item newLink) { Item targetItem = link.GetTargetItem(); if (targetItem == null) { return; } ID templateId = targetItem.TemplateID; if (templateId != newLink.TemplateID) { throw new Exception(Translate.Text("Cannot relink to an item with a different template.")); } string elementType = GetElementType(templateId); if (elementType == null) { return; } XElement xelement = Find(elementType, targetItem.ID, targetItem.Name); if (xelement != null) { xelement.SetAttributeValue("id", newLink.ID.ToString()); xelement.SetAttributeValue((elementType == "campaign" ? "title" : "name"), newLink.Name); } AcceptChanges(); }
private Item HackToRetrieveSourceItem(ItemLink l) { var database = Sitecore.Configuration.Factory.GetDatabase(l.SourceDatabaseName); var sourceItemLanguage = l.SourceItemLanguage == Language.Invariant && !string.IsNullOrEmpty(LanguageFallback) ? Language.Parse(LanguageFallback) : l.SourceItemLanguage; return(database.GetItem(l.SourceItemID, sourceItemLanguage, l.SourceItemVersion)); }
private void ProcessLink(ItemLink link) { var linkedItem = Factory.GetDatabase(link.TargetDatabaseName) .GetItem(link.TargetItemID, link.TargetItemLanguage, link.TargetItemVersion); var referer = linkedItem.Database.GetItem(link.SourceItemID, link.SourceItemLanguage, link.SourceItemVersion); var itemField = referer.Fields[link.SourceFieldID]; var field = FieldTypeManager.GetField(itemField); if (NewTarget != null) { if (ShouldProcess(referer.GetProviderPath(), $"Changing link in field '{itemField.Name}' from '{linkedItem.GetProviderPath()}' to '{NewTarget.GetProviderPath()}' ")) { referer.Editing.BeginEdit(); field.Relink(link, NewTarget); referer.Editing.EndEdit(true, false); } } else { if (ShouldProcess(referer.GetProviderPath(), $"Removing link to '{linkedItem.GetProviderPath()}' from field '{itemField.Name}'")) { referer.Editing.BeginEdit(); field.RemoveLink(link); referer.Editing.EndEdit(true, false); } } }
public override void SetValue(global::Sitecore.Data.Items.Item item, object value, ISitecoreService service) { File file = value as File; FileField field = new FileField(item.Fields[FieldName]); if (file == null) { field.Clear(); return; } if (field.MediaID.Guid != file.Id) { if (file.Id == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, field.MediaItem.Database.Name, field.MediaID, field.MediaItem.Paths.FullPath); field.RemoveLink(link); } else { ID newId = new ID(file.Id); Item target = item.Database.GetItem(newId); if (target != null) { field.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); field.UpdateLink(link); } else { throw new MapperException("No item with ID {0}. Can not update File Item field".Formatted(newId)); } } } }
public override void SetValue(global::Sitecore.Data.Items.Item item, object value, ISitecoreService service) { File file = value as File; FileField field = new FileField(item.Fields[FieldName]); if (file == null) { field.Clear(); return; } if (field.MediaID.Guid != file.Id) { if (file.Id == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, field.MediaItem.Database.Name, field.MediaID, field.MediaItem.Paths.FullPath); field.RemoveLink(link); } else { ID newId = new ID(file.Id); Item target = item.Database.GetItem(newId); if (target != null) { field.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); field.UpdateLink(link); } else throw new MapperException("No item with ID {0}. Can not update File Item field".Formatted(newId)); } } }
/// <summary> /// Extract's the human-readable, culture-specific name of the item sold from the ItemLink property. /// </summary> /// <returns>The name of the item in the sale, if it exists in the ItemLink property, in title-casing.</returns> public string GetItemNameFromLink() { // No item link exists if (string.IsNullOrEmpty(ItemLink)) { return(null); } // Separate the link into the details portion and the name portion string[] linkParts = ItemLink.Split(new[] { "|h" }, StringSplitOptions.None); // The name portion is the second part if (linkParts.Length < 2) { return(null); } string name = linkParts[1]; // ESO sometimes returns item names ending in ^p or ^n. Remove that part. int carrotIndex = name.IndexOf('^'); if (carrotIndex > -1) { name = name.Substring(0, carrotIndex); } // Normalize the name into the local culture's title casing TextInfo cultureTextInfo = CultureInfo.CurrentUICulture.TextInfo; name = cultureTextInfo.ToTitleCase(name); return(name); }
public override void RemoveLink(ItemLink itemLink) { if (!(this.TargetID == itemLink.TargetItemID)) { return; } this.Clear(); }
private void AddLink(SqlBatchOperation batch, Item item, ItemLink link) { var insertCommand = LinkDatabaseCommand.CreateInsertCommand(item.Database.Name, item.ID, link.SourceItemLanguage, link.SourceItemVersion, link.SourceFieldID, link.TargetDatabaseName, link.TargetItemID, link.TargetItemLanguage, link.TargetItemVersion, link.TargetPath, batch); batch.AddSqlBatchCommand(insertCommand); }
/// <summary>Removes the link.</summary> /// <param name="itemLink">The item link.</param> /// <contract> /// <requires name="itemLink" condition="not null" /> /// </contract> public override void RemoveLink(ItemLink itemLink) { Assert.ArgumentNotNull((object)itemLink, "itemLink"); if (!(this.MediaID == itemLink.TargetItemID)) { return; } this.Clear(); }
public static LinkDatabaseCommand CreateInsertCommand(ItemLink itemLink, IBatchOperation operation) { return(CreateInsertCommand( itemLink.SourceDatabaseName, itemLink.SourceItemID, itemLink.SourceItemLanguage, itemLink.SourceItemVersion, itemLink.SourceFieldID, itemLink.TargetDatabaseName, itemLink.TargetItemID, itemLink.TargetItemLanguage, itemLink.TargetItemVersion, itemLink.TargetPath, operation )); }
/// <summary>Relinks the specified item.</summary> /// <param name="itemLink">The item link.</param> /// <param name="newLink">The new link.</param> /// <contract> /// <requires name="itemLink" condition="not null" /> /// <requires name="newLink" condition="not null" /> /// </contract> public override void Relink(ItemLink itemLink, Item newLink) { Assert.ArgumentNotNull((object)itemLink, "itemLink"); Assert.ArgumentNotNull((object)newLink, "newLink"); if (!(this.MediaID == itemLink.TargetItemID)) { return; } this.MediaID = newLink.ID; }
protected virtual void AddLink(Item item, ItemLink link) { Assert.ArgumentNotNull((object)item, "item"); Assert.ArgumentNotNull((object)link, "link"); lock (this.locks.GetLock((object)"rdflock")) { LinkedDataManager.AddLink(item, link); } }
public override void SetValue(global::Sitecore.Data.Items.Item item, object value, ISitecoreService service) { Image img = value as Image; Field itemField = base.GetField(item); if (itemField == null) { return; } ImageField scImg = new ImageField(itemField); if (img == null) { scImg.Clear(); return; } if (scImg.MediaID.Guid != img.MediaId) { //this only handles empty guids, but do we need to remove the link before adding a new one? if (img.MediaId == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, scImg.InnerField.ID, scImg.MediaItem.Database.Name, scImg.MediaID, scImg.MediaPath); scImg.RemoveLink(link); } else { ID newId = new ID(img.MediaId); Item target = item.Database.GetItem(newId); if (target != null) { scImg.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, scImg.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); scImg.UpdateLink(link); } else { throw new MapperException("No item with ID {0}. Can not update Media Item field".Formatted(newId)); } } } scImg.Height = img.Height.ToString(); scImg.Width = img.Width.ToString(); scImg.HSpace = img.HSpace.ToString(); scImg.VSpace = img.VSpace.ToString(); scImg.Alt = img.Alt; scImg.Border = img.Border; scImg.Class = img.Class; }
public void RemoveLinksForItem(Item item, ItemLink link) { var parser = new SparqlQueryParser(); var subjectUri = SitecoreTripleHelper.ItemToUri(item); var objectUri = SitecoreTripleHelper.ItemToUri(link.GetTargetItem()); var query = SitecoreTripleHelper.StringToSparqlQuery(String.Format(TriplesBySubjectObjectFormat, subjectUri, objectUri)); var triplesToDelete = TripleQuery(query); DeleteTriples(triplesToDelete); }
public override void Relink(ItemLink itemLink, Item newLink) { if (!(this.TargetID == itemLink.TargetItemID)) { return; } if (this.IsInternal) { this.Url = newLink.Paths.ContentPath; } this.TargetID = newLink.ID; }
public static void RemoveLinksForItem(Item item, ItemLink link) { var g = LinkedDataManager.ReadGraph(); var items = g.GetTriplesWithSubjectObject( g.CreateUriNode(LinkedDataManager.ItemToUri(item)), g.CreateLiteralNode(LinkedDataManager.ItemToUri(link.GetTargetItem()))); if (items != null && items.Any()) { g.Retract(items.First()); WriteGraph(g); } }
public override void UpdateLink(ItemLink itemLink) { Item targetItem = itemLink.GetTargetItem(); if (targetItem == null || !(this.TargetID == targetItem.ID)) { return; } if (!this.IsInternal) { return; } this.Url = targetItem.Paths.ContentPath; }
protected virtual void RemoveLinks(ItemLink itemLink) { if (itemLink.SourceFieldID != Sitecore.FieldIDs.Source) { Item sourceItem = itemLink.GetSourceItem(); if (sourceItem != null) { LogHelper.Debug(string.Format("Removing link(TargetItemID:{0};SourceItemID:{1},SourceFieldID:{2})", itemLink.TargetItemID, itemLink.SourceItemID, itemLink.SourceFieldID), this); foreach (Item item in sourceItem.Versions.GetVersions(true)) { this.RemoveLink(item, itemLink); } } } }
public Link(ItemLink rootLink, string fullPath, string href) : this(href) { _rootLink = rootLink; FullPath = fullPath; IsRoot = WebDavPath.PathEquals(WebDavPath.Parent(FullPath), _rootLink.MapTo); ItemType = IsRoot ? rootLink.IsFile ? Cloud.ItemType.File : Cloud.ItemType.Folder : Cloud.ItemType.Unknown; Size = IsRoot ? rootLink.Size : 0; CreationTimeUtc = rootLink.CreationDate ?? DateTime.Now; }
protected virtual void AddLink(Item item, ItemLink link) { Assert.ArgumentNotNull((object)item, "item"); Assert.ArgumentNotNull((object)link, "link"); lock (this.locks.GetLock((object)"rdflock")) { var allLinks = _computedLinkManager.GetComputedLinkItems(item); allLinks.Add(link); foreach (var manager in _factory.GetContextSitecoreLinkedDataManagers(item)) { allLinks.ToList().ForEach(computedLink => manager.AddLink(item, computedLink)); } } }
public override void SetValue( global::Sitecore.Data.Items.Item item, object value, ISitecoreService service) { Image img = value as Image; ImageField scImg = new ImageField(item.Fields[FieldName]); if (img == null) { scImg.Clear(); return; } if (scImg.MediaID.Guid != img.MediaId) { //this only handles empty guids, but do we need to remove the link before adding a new one? if (img.MediaId == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, scImg.InnerField.ID, scImg.MediaItem.Database.Name, scImg.MediaID, scImg.MediaPath); scImg.RemoveLink(link); } else { ID newId = new ID(img.MediaId); Item target = item.Database.GetItem(newId); if (target != null) { scImg.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, scImg.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); scImg.UpdateLink(link); } else throw new MapperException("No item with ID {0}. Can not update Media Item field".Formatted(newId)); } } scImg.Height = img.Height.ToString(); scImg.Width = img.Width.ToString(); scImg.HSpace = img.HSpace.ToString(); scImg.VSpace = img.VSpace.ToString(); scImg.Alt = img.Alt; scImg.Border = img.Border; scImg.Class = img.Class; }
protected virtual void RemoveLink(Item item, ItemLink itemLink) { Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(itemLink, "itemLink"); Field field = item.Fields[itemLink.SourceFieldID]; CustomField customField = FieldTypeManager.GetField(field); if (customField != null) { using (new SecurityDisabler()) { item.Editing.BeginEdit(); customField.RemoveLink(itemLink); item.Editing.EndEdit(); } } }
public async Task <IActionResult> CreateLink([Bind("Id,Title, Uri, Content, Name, ReadOnly,ParentPath")] ItemLink link, string returnUrl) { BookmarkEntity parent = folderRepo.GetById((Convert.ToInt32(link.ParentPath))); if (link.ParentPath.Equals("-1") || link.ParentPath == "Root") { link.ParentPath = "Root"; } else { if (parent == null) { return(NotFound()); } link.ParentPath = parent.ToString().Replace("/", "|"); } if (ModelState.IsValid) { if (parent != null && parent.ReadOnly) { return(View("Error", new ErrorViewModel("Parent folder is not Editable!", "\'" + link.ParentPath + "\' is readonly"))); } if (bookmarkEntityRepo.NameExistById(link.Name, link.ParentPath, link.Id)) { return(View("Error", new ErrorViewModel())); } itemLinkRepo.InsertAsync(link); await _context.SaveChangesAsync(); if (returnUrl != null && returnUrl.Equals("Home")) { return(Redirect("/Home")); } else { return(Redirect("/BookmarkEntities")); } } return(View(link)); }
private Tuple <Guid, ItemLink> MapLinksRow(DataProviderReader reader) { var id = DataApi.GetGuid(0, reader); var sourceDatabaseName = DataApi.GetString(1, reader); var sourceItemID = DataApi.GetId(2, reader); var sourceItemLanguage = DataApi.GetLanguage(3, reader); var sourceItemVersion = DataApi.GetVersion(4, reader); var sourceFieldID = DataApi.GetId(5, reader); var targetDatabaseName = DataApi.GetString(6, reader); var targetItemID = DataApi.GetId(7, reader); var targetItemLanguage = DataApi.GetLanguage(8, reader); var targetItemVersion = DataApi.GetVersion(9, reader); var targetPath = DataApi.GetString(10, reader); var link = new ItemLink(sourceDatabaseName, sourceItemID, sourceItemLanguage, sourceItemVersion, sourceFieldID, targetDatabaseName, targetItemID, targetItemLanguage, targetItemVersion, targetPath); return(new Tuple <Guid, ItemLink>(id, link)); }
public static void MapToField(ImageField field, Image image, Item item) { if (image == null) { field.Clear(); return; } if (field.MediaID.Guid != image.MediaId) { //this only handles empty guids, but do we need to remove the link before adding a new one? if (image.MediaId == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, field.MediaItem.Database.Name, field.MediaID, field.MediaItem.Paths.Path); field.RemoveLink(link); } else { ID newId = new ID(image.MediaId); Item target = item.Database.GetItem(newId); if (target != null) { field.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); field.UpdateLink(link); } else { throw new MapperException("No item with ID {0}. Can not update Media Item field".Formatted(newId)); } } } field.Height = image.Height.ToString(); field.Width = image.Width.ToString(); field.HSpace = image.HSpace.ToString(); field.VSpace = image.VSpace.ToString(); field.Alt = image.Alt; field.Border = image.Border; field.Class = image.Class; }
public override string OnLinkOpen(LinkElement element) { switch (element.Link.Type) { case LinkType.Command: CommandLink command = (CommandLink)element.Link; return(this.prefix.Peek() + "command=" + command.Command + "\n"); case LinkType.Window: WindowLink el = (WindowLink)element.Link; Formatter f = new TextFormatter(this.prefix.Peek() + "| "); return(f.Format(el.Element)); case LinkType.Item: ItemLink item = (ItemLink)element.Link; return(this.prefix.Peek() + "lid=" + item.LowID.ToString() + " hid=" + item.HighID.ToString() + " ql=" + item.Quality.ToString() + "\n"); case LinkType.User: UserLink user = (UserLink)element.Link; return(this.prefix.Peek() + "character=" + user.Character + "\n"); case LinkType.Other: OtherLink other = (OtherLink)element.Link; return(this.prefix.Peek() + "uri=" + other.Uri.ToString() + "\n"); case LinkType.Invalid: InvalidLink invalid = (InvalidLink)element.Link; return(this.prefix.Peek() + "uri=" + invalid.Raw + "\n"); default: return(this.prefix.Peek() + "unknown LinkType: " + element.Link.Type.ToString() + "\n"); } }
/// <summary> /// Sets the field. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <exception cref="Glass.Mapper.MapperException">No item with ID {0}. Can not update File Item field.Formatted(newId)</exception> public override void SetField(Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { File file = value as File; var item = field.Item; FileField fileField = new FileField(field); if (file == null) { fileField.Clear(); return; } if (fileField.MediaID.Guid != file.Id) { if (file.Id == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, fileField.InnerField.ID, fileField.MediaItem.Database.Name, fileField.MediaID, fileField.MediaItem.Paths.FullPath); fileField.RemoveLink(link); } else { ID newId = new ID(file.Id); Item target = item.Database.GetItem(newId); if (target != null) { fileField.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, fileField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); fileField.UpdateLink(link); } else { throw new MapperException("No item with ID {0}. Can not update File Item field".Formatted(newId)); } } } }
public void RecordStatsWotLK() { if (ItemType != "Armor" && ItemType != "Weapon") { return; } string stats = Lua.LuaDoString <string>($@" local itemstats=GetItemStats(""{ItemLink.Replace("\"", "\\\"")}"") local stats = """" for stat, value in pairs(itemstats) do stats = stats.._G[stat]..""§""..value..""$"" end return stats"); //Logger.Log("stats -> " + stats); if (stats.Length < 1) { return; } List <string> statsPairs = stats.Split('$').ToList(); foreach (string pair in statsPairs) { if (pair.Length > 0) { string[] statsPair = pair.Split('§'); string statName = statsPair[0]; float statValue = float.Parse(statsPair[1], CultureInfo.InvariantCulture); if (!ItemStats.ContainsKey(statName)) { ItemStats.Add(statName, statValue); } } } RecordWeightScore(); }
/// <summary> /// Relinks the specified item. /// </summary> /// <param name="itemLink">The item link.</param><param name="newLink">The new link.</param> public override void Relink(ItemLink itemLink, Item newLink) { this.valueLookupField.Relink(itemLink, newLink); }
/// <summary> /// Removes the link. /// </summary> /// <param name="itemLink">The item link.</param> public override void RemoveLink(ItemLink itemLink) { this.valueLookupField.RemoveLink(itemLink); }
/// <summary> /// Removes the link. /// </summary> /// <param name="itemLink">The item link.</param><contract><requires name="itemLink" condition="not null"/></contract> public override void RemoveLink(ItemLink itemLink) { this.fileField.RemoveLink(itemLink); }
private bool HasExternalReferrers(ItemLink[] referrers, Hashtable tree) { return referrers.Any(link => !tree.ContainsKey(link.SourceItemID)); }
public static void MapToField(ImageField field, Image image, Item item) { if (image == null) { field.Clear(); return; } if (field.MediaID.Guid != image.MediaId) { //this only handles empty guids, but do we need to remove the link before adding a new one? if (image.MediaId == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, field.MediaItem.Database.Name, field.MediaID, field.MediaItem.Paths.Path); field.RemoveLink(link); } else { ID newId = new ID(image.MediaId); Item target = item.Database.GetItem(newId); if (target != null) { field.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); field.UpdateLink(link); } else throw new MapperException("No item with ID {0}. Can not update Media Item field".Formatted(newId)); } } if (image.Height > 0) field.Height = image.Height.ToString(); if (image.Width > 0) field.Width = image.Width.ToString(); if (image.HSpace > 0) field.HSpace = image.HSpace.ToString(); if (image.VSpace > 0) field.VSpace = image.VSpace.ToString(); if (field.Alt.IsNotNullOrEmpty() || image.Alt.IsNotNullOrEmpty()) field.Alt = image.Alt ?? string.Empty; if (field.Border.IsNotNullOrEmpty() || image.Border.IsNotNullOrEmpty()) field.Border = image.Border ?? string.Empty; if (field.Class.IsNotNullOrEmpty() || image.Class.IsNotNullOrEmpty()) field.Class = image.Class ?? string.Empty; }
private Item HackToRetrieveTargetItem(ItemLink l) { var database = Sitecore.Configuration.Factory.GetDatabase(l.TargetDatabaseName); var targetItemLanguage = l.TargetItemLanguage == Language.Invariant && !string.IsNullOrEmpty(LanguageFallback) ? Language.Parse(LanguageFallback) : l.TargetItemLanguage; return database.GetItem(l.TargetItemID, targetItemLanguage, l.TargetItemVersion); }
/// <summary> /// Sets the field. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <exception cref="Glass.Mapper.MapperException"> /// No item with ID {0}. Can not update Link linkField.Formatted(newId) /// or /// No item with ID {0}. Can not update Link linkField.Formatted(newId) /// </exception> public override void SetField(Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { Link link = value as Link; if (field == null) return; var item = field.Item; LinkField linkField = new LinkField(field); if (link == null || link.Type == LinkType.NotSet) { linkField.Clear(); return; } switch (link.Type) { case LinkType.Internal: linkField.LinkType = "internal"; if (linkField.TargetID.Guid != link.TargetId) { if (link.TargetId == Guid.Empty) { ItemLink iLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, linkField.TargetItem.Database.Name, linkField.TargetID, linkField.TargetItem.Paths.FullPath); linkField.RemoveLink(iLink); } else { ID newId = new ID(link.TargetId); Item target = item.Database.GetItem(newId); if (target != null) { linkField.TargetID = newId; ItemLink nLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); linkField.UpdateLink(nLink); linkField.Url = LinkManager.GetItemUrl(target); } else throw new MapperException("No item with ID {0}. Can not update Link linkField".Formatted(newId)); } } break; case LinkType.Media: linkField.LinkType = "media"; if (linkField.TargetID.Guid != link.TargetId) { if (link.TargetId == Guid.Empty) { ItemLink iLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, linkField.TargetItem.Database.Name, linkField.TargetID, linkField.TargetItem.Paths.FullPath); linkField.RemoveLink(iLink); } else { ID newId = new ID(link.TargetId); Item target = item.Database.GetItem(newId); if (target != null) { global::Sitecore.Data.Items.MediaItem media = new global::Sitecore.Data.Items.MediaItem(target); linkField.TargetID = newId; ItemLink nLink = new ItemLink(item.Database.Name, item.ID, linkField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); linkField.UpdateLink(nLink); var mediaUrl = global::Sitecore.Resources.Media.MediaManager.GetMediaUrl(media); linkField.Url = mediaUrl; } else throw new MapperException("No item with ID {0}. Can not update Link linkField".Formatted(newId)); } } break; case LinkType.External: linkField.LinkType = "external"; linkField.Url = link.Url; break; case LinkType.Anchor: linkField.LinkType = "anchor"; linkField.Url = link.Anchor; break; case LinkType.MailTo: linkField.LinkType = "mailto"; linkField.Url = link.Url; break; case LinkType.JavaScript: linkField.LinkType = "javascript"; linkField.Url = link.Url; break; } if (!link.Anchor.IsNullOrEmpty()) linkField.Anchor = link.Anchor; if (!link.Class.IsNullOrEmpty()) linkField.Class = link.Class; if (!link.Text.IsNullOrEmpty()) linkField.Text = link.Text; if (!link.Title.IsNullOrEmpty()) linkField.Title = link.Title; if (!link.Query.IsNullOrEmpty()) linkField.QueryString = HttpUtility.UrlEncode(link.Query); if (!link.Target.IsNullOrEmpty()) linkField.Target = link.Target; }
private void UpdateLinks(Item item, ItemLink[] links, SqlConnection conn, SqlTransaction tran) { Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(links, "links"); RemoveLinks(item, conn, tran); foreach (var link in links) { if (!link.SourceItemID.IsNull) { AddLink(item, link, conn, tran); } } }
/// <summary> /// Removes the link. /// </summary> /// <param name="itemLink">The item link.</param> public override void RemoveLink(ItemLink itemLink) { this.delimitedField.RemoveLink(itemLink); }
/// <summary> /// Sets the field. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <exception cref="Glass.Mapper.MapperException">No item with ID {0}. Can not update Media Item field.Formatted(newId)</exception> public override void SetField(Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { Image img = value as Image; var item = field.Item; if (field == null) return; ImageField scImg = new ImageField(field); if (img == null) { scImg.Clear(); return; } if (scImg.MediaID.Guid != img.MediaId) { //this only handles empty guids, but do we need to remove the link before adding a new one? if (img.MediaId == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, scImg.InnerField.ID, scImg.MediaItem.Database.Name, scImg.MediaID, scImg.MediaItem.Paths.Path); scImg.RemoveLink(link); } else { ID newId = new ID(img.MediaId); Item target = item.Database.GetItem(newId); if (target != null) { scImg.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, scImg.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); scImg.UpdateLink(link); } else throw new MapperException("No item with ID {0}. Can not update Media Item field".Formatted(newId)); } } scImg.Height = img.Height.ToString(); scImg.Width = img.Width.ToString(); scImg.HSpace = img.HSpace.ToString(); scImg.VSpace = img.VSpace.ToString(); scImg.Alt = img.Alt; scImg.Border = img.Border; scImg.Class = img.Class; }
public void RemoveItemVersionLink(ItemLink itemLink) { }
public void AddToItemLinks(ItemLink itemLink) { base.AddObject("ItemLinks", itemLink); }
public static ItemLink CreateItemLink(int ID) { ItemLink itemLink = new ItemLink(); itemLink.ID = ID; return itemLink; }
public ItemLinkWrapper(ItemLink itemLink) { _itemLink = itemLink; }
/// <summary> /// Updates the link. /// </summary> /// <param name="itemLink">The link.</param> public override void UpdateLink(ItemLink itemLink) { this.valueLookupField.UpdateLink(itemLink); }
protected virtual bool ShouldProcessLink(ItemLink link, Item sourceItem) { //layout field references in the same database return link.SourceFieldID == FieldIDs.LayoutField && link.SourceDatabaseName == sourceItem.Database.Name; }
public override void SetValue(global::Sitecore.Data.Items.Item item, object value, ISitecoreService service) { Link link = value as Link; var itemField = base.GetField(item); if (itemField == null) return; LinkField field = new LinkField(itemField); if (link == null || link.Type == LinkType.NotSet) { field.Clear(); return; } switch (link.Type) { case LinkType.Internal: field.LinkType = "internal"; if (field.TargetID.Guid != link.TargetId) { if (link.TargetId == Guid.Empty) { ItemLink iLink = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, field.TargetItem.Database.Name, field.TargetID, field.TargetItem.Paths.FullPath); field.RemoveLink(iLink); } else { ID newId = new ID(link.TargetId); Item target = item.Database.GetItem(newId); if (target != null) { field.TargetID = newId; ItemLink nLink = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); field.UpdateLink(nLink); field.Url = LinkManager.GetItemUrl(target); } else throw new MapperException("No item with ID {0}. Can not update Link field".Formatted(newId)); } } break; case LinkType.Media: field.LinkType = "media"; if (field.TargetID.Guid != link.TargetId) { if (link.TargetId == Guid.Empty) { ItemLink iLink = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, field.TargetItem.Database.Name, field.TargetID, field.TargetItem.Paths.FullPath); field.RemoveLink(iLink); } else { ID newId = new ID(link.TargetId); Item target = item.Database.GetItem(newId); global::Sitecore.Data.Items.MediaItem media = new global::Sitecore.Data.Items.MediaItem(target); if (target != null) { field.TargetID = newId; ItemLink nLink = new ItemLink(item.Database.Name, item.ID, field.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); field.UpdateLink(nLink); field.Url = global::Sitecore.Resources.Media.MediaManager.GetMediaUrl(media); } else throw new MapperException("No item with ID {0}. Can not update Link field".Formatted(newId)); } } break; case LinkType.External: field.LinkType = "external"; field.Url = link.Url; break; case LinkType.Anchor: field.LinkType = "anchor"; field.Url = link.Anchor; break; case LinkType.MailTo: field.LinkType = "mailto"; field.Url = link.Url; break; case LinkType.JavaScript: field.LinkType = "javascript"; field.Url = link.Url; break; } if (!link.Anchor.IsNullOrEmpty()) field.Anchor = link.Anchor; if (!link.Class.IsNullOrEmpty()) field.Class = link.Class; if (!link.Text.IsNullOrEmpty()) field.Text = link.Text; if (!link.Title.IsNullOrEmpty()) field.Title = link.Title; if (!link.Query.IsNullOrEmpty()) field.QueryString = link.Query; if (!link.Target.IsNullOrEmpty()) field.Target = link.Target; }
public void UpdateLinks(Item item, ItemLink[] links) { Assert.ArgumentNotNull((object)item, "item"); Assert.ArgumentNotNull((object)links, "links"); var oldLinks = GetReferences(item); var removeLinks = new List<ItemLink>(); foreach (var link in oldLinks) { if (!links.Any(x => x.TargetItemID.Guid == link.TargetItemID.Guid)) { removeLinks.Add(link); } } removeLinks.ForEach(x => RemoveItemVersionLink(x)); var allLinks = _computedLinkManager.GetComputedLinkItems(item); allLinks.AddRange(links); allLinks.ToList().ForEach(x => this.Update(item, x)); //foreach (var manager in _factory.GetContextSitecoreLinkedDataManagers(item)) //{ // allLinks.ToList().ForEach(computedLink => manager.AddLink(item, computedLink)); // //Now remove removed links // var oldLinks = GetReferences(item); // var removeLinks = new List<ItemLink>(); // foreach (var link in oldLinks) // { // if (!allLinks.Where(x => x.TargetItemID.Guid == link.TargetItemID.Guid).Any()) // { // removeLinks.Add(link); // } // } // foreach (var removeLink in removeLinks) // { // manager.RemoveLinksForItem(item, removeLink); // } //} }
public void UpdateItemVersionLink(Item item, ItemLink[] contextitemLinks) { this.UpdateLinks(item, contextitemLinks); }
/// <summary> /// Relinks the specified item. /// </summary> /// <param name="itemLink">The item link.</param><param name="newLink">The new link.</param><contract><requires name="itemLink" condition="not null"/><requires name="newLink" condition="not null"/></contract> public override void Relink(ItemLink itemLink, Item newLink) { this.fileField.Relink(itemLink, newLink); }
public void UpdateItemVersionLinks(Item item, ItemLink[] links) { this.UpdateLinks(item, links); }
/// <summary> /// Updates the link. /// </summary> /// <param name="itemLink">The link.</param><contract><requires name="itemLink" condition="not null"/></contract> public override void UpdateLink(ItemLink itemLink) { this.fileField.UpdateLink(itemLink); }
protected virtual void UpdateItemVersionLinks(Item item, ItemLink[] links) { Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(links, "links"); }
/// <summary> /// Removes the link. /// </summary> /// <param name="itemLink">The item link.</param> public override void RemoveLink(ItemLink itemLink) { this.referenceField.RemoveLink(itemLink); }
public void Update(Item item, ItemLink link) { if (FilterItem(item)) { return; } var targetItem = link.GetTargetItem(); if (targetItem != null) { if (FilterItem(targetItem)) { return; } var sourceNode = _graph.ReadNode(ItemHelper.ItemToUri(item)); if (sourceNode == null) { sourceNode = _graph.CreateNode(new SitecoreNode() { Uri = ItemHelper.ItemToUri(item), Name = item.Name }); } var targetNode = _graph.ReadNode(ItemHelper.ItemToUri(link.GetTargetItem())); if (targetNode == null) { targetNode = _graph.CreateNode(new SitecoreNode() { Uri = ItemHelper.ItemToUri(targetItem), Name = targetItem.Name }); } var relationship = _relationshipManager.GetRelationship(sourceNode.Uri, targetNode.Uri); _graph.CreateRelationship(sourceNode, relationship, targetNode); } }
/// <summary> /// Sets the field. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <exception cref="Glass.Mapper.MapperException">No item with ID {0}. Can not update File Item field.Formatted(newId)</exception> public override void SetField(Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { File file = value as File; var item = field.Item; FileField fileField = new FileField(field); if (file == null) { fileField.Clear(); return; } if (fileField.MediaID.Guid != file.Id) { if (file.Id == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, fileField.InnerField.ID, fileField.MediaItem.Database.Name, fileField.MediaID, fileField.MediaItem.Paths.FullPath); fileField.RemoveLink(link); } else { ID newId = new ID(file.Id); Item target = item.Database.GetItem(newId); if (target != null) { fileField.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, fileField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); fileField.UpdateLink(link); } else throw new MapperException("No item with ID {0}. Can not update File Item field".Formatted(newId)); } } }
private void AddLink(Item item, ItemLink link, SqlConnection conn, SqlTransaction tran) { Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(link, "link"); var sql = "INSERT INTO Links (SourceDatabase, SourceItemID, SourceFieldID, TargetDatabase, TargetItemID, TargetPath) values('{0}', '{1}', '{2}', '{3}','{4}','{5}')"; sql = string.Format(sql, StringUtil.GetString(item.Database.Name, 50), item.ID.ToGuid(), link.SourceFieldID.ToGuid(), StringUtil.GetString(link.TargetDatabaseName, 50), link.TargetItemID.ToGuid(), link.TargetPath); var command = new SqlCommand(sql, conn, tran); command.ExecuteNonQuery(); }