Beispiel #1
0
 public string GetReference(ReferenceField field)
 {
     return(referenceTrackingList[
                field.ReferenceType.NameSpace + "." +
                field.ReferenceType.Name +
                field.TableName]);
 }
Beispiel #2
0
        /// <summary>Serializes a reference type into a <see cref="DbEntry"/> instance
        /// using the default <see cref="Field{T, F}"/> instance registered for that type.</summary>
        /// <typeparam name="T">Reference type to serialize.</typeparam>
        /// <param name="obj">Object to serialize.</param>
        /// <returns>A properly initialized <see cref="DbEntry"/> instance containing
        /// the serialized object graph.</returns>
        public DbEntry ToDbEntry <T>(T obj)
            where T : class
        {
            ReferenceField <T, Formatter> field = (ReferenceField <T, Formatter>)GetField <T>();

            return(ToDbEntry(obj, field));
        }
Beispiel #3
0
 public void ClearReference(ReferenceField field, string value)
 {
     referenceTrackingList.Remove(
         field.ReferenceType.NameSpace + "." +
         field.ReferenceType.Name +
         field.TableName);
 }
Beispiel #4
0
 public bool ReferenceUsed(ReferenceField field)
 {
     return(referenceTrackingList.ContainsKey(
                field.ReferenceType.NameSpace + "." +
                field.ReferenceType.Name +
                field.TableName));
 }
Beispiel #5
0
 public virtual void CreateControlField(CodeWriter output,
                                        ReferenceField f, bool instantiate)
 {
     if (f.IsClientEditEnabled)
     {
         if (!f.HasChildrenTables)
         {
             output.WriteLine("private DropDownList dd{0}" +
                              (instantiate ? " = new DropDownList();" : ";"),
                              f.Name);
         }
         else
         {
             output.WriteLine("private CheckBoxList cbl{0}" +
                              (instantiate ? " = new CheckBoxList();" : ";"),
                              f.Name);
         }
     }
     else if (f.IsClientViewEnabled)
     {
         output.WriteLine("private Literal lt{0}" +
                          (instantiate ? " = new Literal();" : ";"),
                          f.Name);
     }
 }
Beispiel #6
0
 public void SaveReference(ReferenceField field, string value)
 {
     referenceTrackingList.Add(
         field.ReferenceType.NameSpace + "." +
         field.ReferenceType.Name +
         field.TableName, value);
 }
Beispiel #7
0
 public virtual void CreateClassField(CodeWriter output,
                                      ReferenceField f, bool isInternal, bool instantiate)
 {
     if (f.IsArray)
     {
         output.WriteLine(
             (isInternal ? "internal" : "private") + " {0}[] {1}" +
             (instantiate ? " = new {0}[];" : ";"),
             f.ReferenceType.Name,
             f.PrivateName);
     }
     else if (f.IsCollection)
     {
         output.WriteLine(
             (isInternal ? "internal" : "private") + " {0}Collection {1}" +
             (instantiate ? " = new {0}Collection;" : ";"),
             f.ReferenceType.Name,
             f.PrivateName);
     }
     else
     {
         output.WriteLine(
             (isInternal ? "internal" : "private") + "{0} {1}" +
             (instantiate ? " = new {0};" : ";"),
             f.ReferenceType.Name,
             f.PrivateName);
     }
 }
Beispiel #8
0
        public static Country GetCountry(Item item)
        {
            ReferenceField field = item?.Fields["Country"];

            if (field == null)
            {
                return(new Country());
            }

            var countryItem = Sitecore.Context.Database.GetItem($"/sitecore/{field.InnerField.Source}/{field.Path}");

            // var countryItem = Sitecore.Context.Database.GetItem(field.TargetItem.ID); // Target Item is null ???
            if (countryItem == null)
            {
                return(new Country());
            }

            var country = new Country
            {
                CountryCode      = countryItem.Fields["CountryCode"].Value,
                CountryName      = countryItem.Fields["CountryName"].Value,
                CountryLatitude  = double.Parse(countryItem.Fields["CountryLatitude"].Value),
                CountryLongitude = double.Parse(countryItem.Fields["CountryLongitude"].Value),
                CountryInfo      = countryItem.Fields["CountryInfo"].Value,
            };

            return(country);
        }
        public void Execute(Item[] items, Sitecore.Tasks.CommandItem command, Sitecore.Tasks.ScheduleItem schedule)
        {
            Assert.IsNotNull(command, "command is null");
            Assert.IsNotNull(schedule, "schedule is null");

            Sitecore.Diagnostics.Log.Info("Task: Started Purging Publishing Activity Log data.", this);

            // Get the module settings item.
            Item settings = Sitecore.Configuration.Factory.GetDatabase("master").GetItem(Resources.Constants.SettingsItem);

            if (settings == null)
            {
                Sitecore.Diagnostics.Log.Error("Task: Failed to get settings item.", this);
            }

            // Get the specified retention policy time.
            ReferenceField retention = settings.Fields[Resources.Fields.scFieldRetentionPeriod];
            int            days      = (retention == null || String.IsNullOrEmpty(retention?.TargetItem?.Fields["Value"]?.Value)) ? 7 : Int32.Parse(retention?.TargetItem?.Fields["Value"]?.Value);

            // Filter expired items based on retention period.
            List <Item> expiredLogItems = items.Where(x => (Sitecore.DateUtil.IsoDateToDateTime(((DateField)x.Fields[Resources.Fields.scFieldPublishDate]).Value) - DateTime.Now).TotalDays > days).ToList();

            // Delete old items.
            expiredLogItems.ForEach(x => x.Delete());

            // Sync bucket to cleanup empty folders.
            BucketManager.Sync(Sitecore.Configuration.Factory.GetDatabase("master").GetItem(Resources.Constants.PublishedItemsSaveLocation));

            Sitecore.Diagnostics.Log.Info("Task: Finished Purging Publishing Activity Log data.", this);
        }
Beispiel #10
0
        /// <summary>Serializes reference type sequences accessible through <see cref="IEnumerable{T}"/>
        /// using the default <see cref="Field{T, F}"/> instance registered for that type.</summary>
        /// <typeparam name="T">Type of sequence elements - must be reference type.</typeparam>
        /// <param name="value"><see cref="IEnumerable{T}"/> sequence to serialize.</param>
        /// <returns>A properly initialized <see cref="DbEntry"/> instance containing
        /// the serialized collection.</returns>
        public DbEntry ObjectsToDbEntry <T>(IEnumerable <T> value)
            where T : class
        {
            ReferenceField <T, Formatter> field = (ReferenceField <T, Formatter>)GetField <T>();

            return(ObjectsToDbEntry(value, field));
        }
Beispiel #11
0
        public void BrokenLinkShouldNotFail()
        {
            //Arrange
            using (var db = new Db {
                new ItemBuilder()
                .WithReference(new List <ID> {
                    ID.NewID
                }).Build()
            })
            {
                var item      = db.GetItem("/sitecore/content/source");
                var indexable = new SitecoreIndexableItem(item);

                var sut = new ReferenceField
                {
                    FieldName = "Reference",
                };

                //Act
                var actual = (IEnumerable <string>)sut.ComputeFieldValue(indexable);

                //Assert
                actual.Should().BeEquivalentTo();
            }
        }
Beispiel #12
0
        public virtual IEnumerable <string> GetInterests()
        {
            var            item            = GetSettingsItem(null);
            ReferenceField interestsFolder = item.Fields[Templates.ProfileSettigs.Fields.InterestsFolder];

            return(interestsFolder?.TargetItem?.Children.Where(i => i.IsDerived(Templates.Interest.ID))?.Select(i => i.Fields[Templates.Interest.Fields.Title].Value) ?? Enumerable.Empty <string>());
        }
Beispiel #13
0
        /// <summary>Deserializes any kind of reference type collection through call-backs
        /// using the default <see cref="Field{T, F}"/> instance registered for that type.</summary>
        /// <typeparam name="T">Type of sequence elements - must be reference type.</typeparam>
        /// <param name="initSequence">Call-back delegate to instantiate/initialize collection.
        /// Returns another delegate to add sequence elements to the collection.</param>
        /// <param name="entry"><see cref="DbEntry"/> instance containing the serialized data.</param>
        public void ObjectsFromDbEntry <T>(InitSequence <T> initSequence, ref DbEntry entry)
            where T : class
        {
            ReferenceField <T, Formatter> field = (ReferenceField <T, Formatter>)GetField <T>();

            ObjectsFromDbEntry(initSequence, ref entry, field);
        }
Beispiel #14
0
        public MapPluginViewModel GetModel()
        {
            // Instantiate Map Model.
            MapPluginViewModel model = new MapPluginViewModel();

            // Current Rendering Item.
            var contentItem = RenderingContext.Current?.Rendering?.Item ?? null;

            model.Item = contentItem;

            if (contentItem == null)
            {
                return(model);
            }

            // Get Bing Maps API Key.
            model.ApiKey = GetBingMapsApiKey();

            // Set Property Values.
            CheckboxField disableZoomField = contentItem.Fields[Resources.Resource.scFieldDisableZooming];

            model.DisableZooming = disableZoomField == null ? false : disableZoomField.Value == "1";

            CheckboxField disableSearchField = contentItem.Fields[Resources.Resource.scFieldDisableSearch];

            model.DisableSearch = disableSearchField == null ? false : disableSearchField.Value == "1";

            ReferenceField mapTypeField = contentItem.Fields[Resources.Resource.scFieldType];

            model.MapTypeId = (mapTypeField == null || String.IsNullOrEmpty(mapTypeField?.TargetItem?.Fields["Value"]?.Value)) ? "Microsoft.Maps.MapTypeId.road" : mapTypeField?.TargetItem?.Fields["Value"]?.Value;

            model.Guid = contentItem.ID.Guid.ToString();

            return(model);
        }
Beispiel #15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var item = Sitecore.Context.Item;

            if (item.TemplateID == TemplateReferences.Holiday)
            {
                var json = new JSONHoliday();

                json.PageHeading = FieldRenderer.Render(item, "Page Heading");
                json.PageContent = FieldRenderer.Render(item, "Page Content");

                ReferenceField difficulty = item.Fields["Difficulty"];

                json.DifficultyLabel = Sitecore.Globalization.Translate.Text("Difficulty");
                json.Difficulty      = FieldRenderer.Render(difficulty.TargetItem, "Text");

                ReferenceField type = item.Fields["Type"];

                json.TypeLabel = Sitecore.Globalization.Translate.Text("Type");
                json.Type      = FieldRenderer.Render(type.TargetItem, "Text");

                MultilistField terrain = item.Fields["Terrain"];

                json.TerrainLabel = Sitecore.Globalization.Translate.Text("Terrain");
                json.Terrain      = string.Join(",", terrain.GetItems().Select(x => FieldRenderer.Render(x, "Text")));

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                Response.Write(serializer.Serialize(json));
            }
        }
        //This method is used to create Team item in the database
        public virtual void OnUpdateCommentRemote(object sender, EventArgs e)
        {
            if (e is CreateTeamEventArgs)
            {
                var args   = e as CreateTeamEventArgs;
                var master = Sitecore.Configuration.Factory.GetDatabase("master");
                using (new SecurityDisabler())
                {
                    TemplateItem templateItem = master.GetTemplate(ID.Parse(Templates.Team.TemplateId));
                    var          parentItem   = master.GetItem(Sitecore.Context.Site.StartPath);

                    ReferenceField droplink = parentItem.Fields[ID.Parse(Templates.HackathonSettings.Fields.ActualContest)];

                    if (droplink == null)
                    {
                        //Field does not exist
                    }
                    else if (droplink.TargetItem == null)
                    {
                        // No item selected
                    }
                    else if (droplink.TargetItem.HasChildren && templateItem != null)
                    {
                        var childItem = droplink.TargetItem.Children.InnerChildren.Find(f => f.TemplateID.ToString() == Templates.TeamFolder.TemplateId);
                        if (childItem != null)
                        {
                            EditItem(templateItem, childItem, args);
                        }
                    }
                }
            }
        }
        public override void Create(VisualElement root)
        {
            var field = new ReferenceField("Reference", typeof(ISampleItem), new SampleItemDrawer());

            field.RegisterValueChangedCallback(evt => Debug.Log($"Reference type changed from {evt.previousValue?.GetType().Name ?? "null"} to {evt.newValue?.GetType().Name ?? "null"}"));
            root.Add(field);
        }
Beispiel #18
0
        /// <summary>Deserializes reference type arrays from a <see cref="DbEntry"/> instance
        /// using the default <see cref="Field{T, F}"/> instance registered for that type.</summary>
        /// <typeparam name="T">Type of sequence elements - must be reference type.</typeparam>
        /// <param name="obj">Reference type array to deserialize.</param>
        /// <param name="entry"><see cref="DbEntry"/> instance containing the serialized data.</param>
        public void ObjectsFromDbEntry <T>(ref T[] obj, ref DbEntry entry)
            where T : class
        {
            ReferenceField <T, Formatter> field = (ReferenceField <T, Formatter>)GetField <T>();

            ObjectsFromDbEntry(ref obj, ref entry, field);
        }
Beispiel #19
0
        private Item GetErrorItem(string fieldId)
        {
            var            settingsItem   = GetContextSiteSettingsItem();
            ReferenceField errorItemField = settingsItem?.Fields[fieldId];

            return(errorItemField?.TargetItem);
        }
 public override void CreateControlField(CodeWriter output,
                                         ReferenceField c, bool instantiate)
 {
     output.WriteLine("private ComponentArt.Web.UI.ComboBox combo{0}" +
                      (instantiate ? " = new ComponentArt.Web.UI.ComboBox();" : ";"),
                      c.Name);
 }
        public override void CreateControlBinding(CodeWriter output, ReferenceField c)
        {
            WebEditorReferenceFieldExtension extension = (WebEditorReferenceFieldExtension)
                                                         c.GetExtension(typeof(WebEditorReferenceFieldExtension));

            if (c.IsClientEditEnabled)
            {
                if (c.ReferenceType.IsTableCoded)
                {
                    if (!output.ReferenceUsed(c))
                    {
                        output.WriteLine("{0}Manager {1}Manager = new {0}Manager();",
                                         c.ReferenceType.Name,
                                         c.ReferenceType.ParentClassEntry.PrivateName,
                                         c.Name);

                        output.WriteLine("{0}Collection {1}Collection = " +
                                         "{1}Manager.GetCollection(string.Empty, string.Empty);",
                                         c.ReferenceType.Name,
                                         c.ReferenceType.ParentClassEntry.PrivateName);

                        // Save Reference For Later :)~ Take that!
                        output.SaveReference(c,
                                             c.ReferenceType.ParentClassEntry.PrivateName +
                                             "Collection");
                    }
                }
                else
                {
                    if (!output.ReferenceUsed(c))
                    {
                        // BLECH! A Custom Manager, Blah BLAH!
                        output.WriteLine("{0}Manager {1}Manager = new {0}Manager(\"{2}\");",
                                         c.ReferenceType.Name, c.PrivateName, c.TableName);

                        output.WriteLine("{0}Collection {1}Collection = " +
                                         "{1}Manager.GetCollection(string.Empty, string.Empty);",
                                         c.ReferenceType.Name, c.PrivateName);

                        // Save another pesky reference for later!
                        // Don't worry so much bud, it keeps track of tables!
                        output.SaveReference(c, c.PrivateName + "Collection");
                    }
                }

                output.WriteLine("foreach({0} itemObject in {1})",
                                 c.ReferenceType.Name, output.GetReference(c));
                output.WriteLine("{");
                output.Indent++;
                output.WriteLine("ComponentArt.Web.UI.ComboBoxItem item = " +
                                 "new ComponentArt.Web.UI.ComboBoxItem();");
                output.WriteLine("item.Text = itemObject." +
                                 extension.ListText + ";");
                output.WriteLine("item.Value = itemObject.ID.ToString();");
                output.WriteLine("combo{0}.Items.Add(item);", c.Name);
                output.Indent--;
                output.WriteLine("}");
                output.WriteLine();
            }
        }
Beispiel #22
0
 public virtual void CreateControlProperties(CodeWriter output,
                                             ClassFolder folder, bool instantiate, bool enableViewState,
                                             string addControlFormat)
 {
     foreach (object item in folder.Items)
     {
         if (item is ValueField)
         {
             ValueField f = (ValueField)item;
             f.Builder.CreateControlProperties(output, f, instantiate,
                                               enableViewState, addControlFormat);
             output.WriteLine();
         }
         else if (item is ReferenceField)
         {
             ReferenceField f = (ReferenceField)item;
             f.Builder.CreateControlProperties(output, f, instantiate,
                                               enableViewState, addControlFormat);
             output.WriteLine();
         }
         else if (item is EnumField)
         {
             EnumField f = (EnumField)item;
             f.Builder.CreateControlProperties(output, f, instantiate,
                                               enableViewState, addControlFormat);
             output.WriteLine();
         }
     }
 }
Beispiel #23
0
        public void ShouldReturnCustomTitle()
        {
            //Arrange
            using (var db = new Db {
                new ItemBuilder().AddSubItemWithField("titleField", "titleValue")
                .WithReference("droplink").Build()
            })
            {
                var item      = db.GetItem("/sitecore/content/source");
                var indexable = new SitecoreIndexableItem(item);

                var xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(@"<field><target referenceFieldName=""titleField""/></field>");
                var xmlNode = xmlDoc.FirstChild;

                var sut = new ReferenceField(xmlNode)
                {
                    FieldName = "Reference"
                };

                //Act
                var actual = (IEnumerable <string>)sut.ComputeFieldValue(indexable);

                //Assert
                actual.Should().BeEquivalentTo("titleValue");
            }
        }
Beispiel #24
0
        public virtual ActionResult Index()
        {
            Item actionItem;

            string explicitDatasource = RenderingContext.Current.Rendering.DataSource;

            if (string.IsNullOrEmpty(explicitDatasource))
            {
                var            siteRoot = GetSiteRoot(Sitecore.Context.Item);
                ReferenceField rf       = siteRoot.Fields["Site Root Global Navigation"];
                if (rf?.TargetItem != null)
                {
                    actionItem = rf.TargetItem;
                }
                else
                {
                    actionItem = GetActionItem();
                }
            }
            else
            {
                actionItem = GetActionItem();
            }

            if (actionItem != null && actionItem.Versions.Count > 0)
            {
                var model = _navigationRepository.GetModel(actionItem);
                return(View(GetViewName("Top Navigation"), SetComponentProperties(model)));
            }

            return(DatasourceMissingResult());
        }
        public ActionResult FeaturedRecipes()
        {
            if (Sitecore.Context.Item == null)
            {
                return(null);
            }

            var dataSourceId = Sitecore.Context.Item.ID.ToString();

            Assert.IsNotNullOrEmpty(dataSourceId, "dataSourceId is null or empty");
            var item = Sitecore.Context.Database.GetItem(dataSourceId);

            if (item == null)
            {
                return(null);
            }

            FeaturedRecipes featuredRecipes = new FeaturedRecipes();

            //Featured Recipe - DropTree Field
            ReferenceField featuredRecipeField = item.Fields[Templates.FeaturedRecipe.Fields.FeaturedRecipe];
            Item           featuredRecipeItem  = Sitecore.Context.Database.GetItem(featuredRecipeField.TargetID);

            if (featuredRecipeItem != null)
            {
                Recipe featuredRecipe = new Recipe();
                featuredRecipe.RecipeName        = featuredRecipeItem.Fields[Templates.Recipe.Fields.RecipeName.ToString()].Value;
                featuredRecipe.RecipeDescription = featuredRecipeItem.Fields[Templates.Recipe.Fields.RecipeDescription.ToString()].Value;
                featuredRecipes.FeaturedRecipe   = featuredRecipe;
                ImageField featuredRecipeImage = featuredRecipeItem.Fields[Templates.Recipe.Fields.RecipeImage];
                featuredRecipe.RecipeImageUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(featuredRecipeImage.MediaItem);
                featuredRecipe.RecipeImageAlt = featuredRecipeImage.Alt;
            }

            //Featured Recipes List - TreeList Field
            MultilistField featuredRecipesListField = item.Fields[Templates.FeaturedRecipe.Fields.FeaturedRecipesList];

            Item[]        featuredRecipeItems = featuredRecipesListField.GetItems();
            List <Recipe> featuredRecipesList = new List <Recipe>();

            if (featuredRecipeItems != null && featuredRecipeItems.Count() > 0)
            {
                foreach (Item i in featuredRecipeItems)
                {
                    Recipe recipe     = new Recipe();
                    Item   recipeItem = Sitecore.Context.Database.GetItem(i.ID);
                    recipe.RecipeName        = recipeItem.Fields[Templates.Recipe.Fields.RecipeName.ToString()].Value;
                    recipe.RecipeDescription = recipeItem.Fields[Templates.Recipe.Fields.RecipeDescription.ToString()].Value;
                    ImageField recipeImage = recipeItem.Fields[Templates.Recipe.Fields.RecipeImage];
                    recipe.RecipeImageUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(recipeImage.MediaItem);
                    recipe.RecipeImageAlt = recipeImage.Alt;

                    featuredRecipesList.Add(recipe);
                }
            }

            featuredRecipes.FeaturedRecipesList = featuredRecipesList;

            return(View(featuredRecipes));
        }
    /// <summary>
    /// Get the referenced target item from the named reference field (Droplink, Droptree, Grouped Droplink). If the field not found or the reference null, it will return null.
    /// </summary>
    /// <returns>The the referenced target item from the named reference field. If the field not found or the reference null, it will return null</returns>
    public static Item GetReferenceTarget(this Item item, string referenceFieldName)
    {
        Assert.ArgumentNotNullOrEmpty(referenceFieldName, "referenceFieldName");

        ReferenceField referenceField = item.Fields[referenceFieldName];

        return((referenceField == null) ? null : referenceField.TargetItem);
    }
        /// <summary>
        /// Gets player ID.
        /// </summary>
        /// <param name="asset">
        /// The asset.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        protected virtual string GetPlayerId(Item asset)
        {
            ReferenceField field = asset.Fields[FieldIDs.MediaElement.Player];

            Item targetItem = field.TargetItem;

            return(targetItem != null ? targetItem[FieldIDs.Player.Id] : string.Empty);
        }
Beispiel #28
0
        /// <overloads>Deserializes reference type sequences (arrays, collections) from
        /// a <see cref="DbEntry"/> instance.</overloads>
        /// <summary>Deserializes reference type arrays from a <see cref="DbEntry"/>
        /// instance using a specific <see cref="Field{T, F}"/> instance.</summary>
        /// <typeparam name="T">Type of sequence elements - must be reference type.</typeparam>
        /// <param name="obj">Reference type array to deserialize.</param>
        /// <param name="entry"><see cref="DbEntry"/> instance containing the serialized data.</param>
        /// <param name="field"><see cref="ReferenceField{T, Formatter}"/> instance that
        /// deserializes the <c>entry</c>argument.</param>
        public void ObjectsFromDbEntry <T>(ref T[] obj, ref DbEntry entry, ReferenceField <T, Formatter> field)
            where T : class
        {
            int index = entry.Start;

            InitDeserialization(entry.Buffer, index);
            DeserializeObjects(ref obj, field);
            index = FinishDeserialization();
        }
        public WildcardSetting(Item setting)
        {
            ReferenceField itemReference = setting.Fields[AppConstants.WildcardSettingItemField];

            ItemID = itemReference?.TargetItem?.ID;
            ReferenceField datasourceReference = setting.Fields[AppConstants.WildcardSettingItemField];

            DatasourceTemplateID = datasourceReference?.TargetItem?.ID;
        }
        public override Item GetDefaultPlayer(MediaGenerateMarkupArgs args)
        {
            ID fieldId = args.MediaItem.TemplateID == TemplateIDs.Video
                     ? FieldIDs.AccountSettings.DefaultVideoPlayer
                     : FieldIDs.AccountSettings.DefaultPlaylistPlayer;

            ReferenceField settingsField = AccountManager.GetSettingsField(args.AccountItem, fieldId);

            return(settingsField != null ? settingsField.TargetItem : null);
        }
Beispiel #31
0
        /// <summary>
        /// Returns lookup field value as an item display name instead of item ID.
        /// </summary>
        /// <returns></returns>
        public override string GetValue()
        {
            var value = String.Empty;

            if (FieldTypeManager.GetField(_field) is LookupField)
            {
                var lookupField = new LookupField(_field);
                value = IdHelper.NormalizeGuid(lookupField.TargetID);
            }
            if (FieldTypeManager.GetField(_field) is ReferenceField)
            {
                var referenceField = new ReferenceField(_field);
                value = IdHelper.NormalizeGuid(referenceField.TargetID);
            }

            return value;
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="ReferenceProperty"/> class.
		/// </summary>
		/// <param name="field">The field to wrap.</param>
		public ReferenceProperty(Field field)
			: base(field)
		{
			this.referenceField = field;
		}