public IEnumerable <IFieldWrapper> FromFields(FieldChangeList fields) { foreach (Field field in fields) { yield return(FromField(field)); } }
public override bool SaveItem(ItemDefinition itemDefinition, Sitecore.Data.Items.ItemChanges changes, CallContext context) { IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, itemDefinition.ID); if (idList.Length > 0 && changes.HasFieldsChanged) { IDTableEntry mappedID = idList[0]; context.Abort(); var values = new Dictionary <string, string>(); values.Add(BOTR_VIDEO_KEY, mappedID.Key); FieldChangeList fieldChanges = changes.FieldChanges; lock (fieldChanges.SyncRoot) { foreach (FieldChange change in fieldChanges) { if (change.FieldID == ID.Parse(DISPLAY_NAME_FIELD) || change.FieldID == ID.Parse(TITLE_FIELD) || change.FieldID == ID.Parse(ALT_FIELD)) { values[BOTR_TITLE] = change.Value; } else if (change.FieldID == ID.Parse(DESCRIPTION_FIELD)) { values[BOTR_DESCRIPTION] = change.Value; } else if (change.FieldID == ID.Parse(KEYWORDS_FIELD)) { values[BOTR_TAGS] = change.Value; } else if (change.FieldID == ID.Parse(VIDEO_CUSTOM_URL_FIELD)) { Sitecore.Links.UrlOptions options = Sitecore.Links.UrlOptions.DefaultOptions; options.Site = Sitecore.Sites.SiteContextFactory.GetSiteContext(_vodeoLinkSite); options.AlwaysIncludeServerUrl = false; values[BOTR_CUSTOM + "." + BOTR_CUSTOM_LINK] = change.Value; if (change.RemoveField || string.IsNullOrEmpty(change.Value)) { values[BOTR_LINK] = string.Empty; } else { values[BOTR_LINK] = "http://" + Sitecore.StringUtil.RemovePostfix('/', this._videoLinkHost) + Sitecore.Links.LinkManager.GetItemUrl(context.DataManager.Database.GetItem(ID.Parse(change.Value)), options); } } else if (change.FieldID == ID.Parse(CREATED_FIELD)) { values[BOTR_DATE] = Sitecore.DateUtil.IsoDateToDateTime(change.Value).ToUnixTimestamp().ToString(); } } XmlDocument response = CallApi("/videos/update", values); XmlNode status = response.SelectSingleNode("/response/status"); if (status != null && status.InnerText.ToLower() == "ok") { Cache.Clear(); return(true); } } return(false); } return(false); }