Exemple #1
0
 public IEnumerable <IFieldWrapper> FromFields(FieldChangeList fields)
 {
     foreach (Field field in fields)
     {
         yield return(FromField(field));
     }
 }
Exemple #2
0
        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);
        }