Exemplo n.º 1
0
        private string RemoveReferenceLinks(Item item)
        {
            var links = Globals.LinkDatabase.GetItemReferrers(item, true);

            if (links.Length == 0)
            {
                return("No referrence found");
            }

            foreach (var link in links)
            {
                var sourceItem = link.GetSourceItem();

                foreach (var item1 in sourceItem.Versions.GetVersions(true))
                {
                    var field  = item1.Fields[link.SourceFieldID];
                    var field2 = FieldTypeManager.GetField(field);

                    if (field2 == null)
                    {
                        return(string.Empty);
                    }

                    using (new SecurityDisabler())
                    {
                        item1.Editing.BeginEdit();
                        field2.RemoveLink(link);
                        item1.Editing.EndEdit();
                    }
                }
            }
            return("All reference removed");
        }
Exemplo n.º 2
0
 public static FieldTypes GetFieldType(this Field field)
 {
     if (FieldTypeManager.GetField(field) is TextField)
     {
         return(FieldTypes.TextField);
     }
     else if (FieldTypeManager.GetField(field) is HtmlField)
     {
         return(FieldTypes.HTMLField);
     }
     else if (FieldTypeManager.GetField(field) is LookupField)
     {
         return(FieldTypes.LookUpField);
     }
     else if (FieldTypeManager.GetField(field) is MultilistField)
     {
         return(FieldTypes.MultilistField);
     }
     else if (FieldTypeManager.GetField(field) is ImageField)
     {
         return(FieldTypes.Image);
     }
     else
     {
         return(FieldTypes.TextField);
     }
 }
Exemplo n.º 3
0
            /// <summary>
            /// Tries to get the URL for the MediaItem referenced in the given image field on the given item.
            /// </summary>
            /// <param name="fieldName">The name of the field that references the MediaItem. Note, this field name must reference an ImageField.</param>
            /// <param name="item">The item that contains the given field.</param>
            /// <param name="url">The URL for the MediaItem.</param>
            /// <returns>True if a URL could be returned for the MediaItem; otherwise, false.</returns>
            public static Boolean GetMediaImageFriendlyURL(string fieldName, Item item, out String url)
            {
                url = "";

                if (string.IsNullOrEmpty(fieldName) || item == null)
                {
                    return(false);
                }

                var rawField = item.Fields[fieldName];
                var fieldIsValidAndHasContent = rawField != null && !string.IsNullOrEmpty(rawField.Value) &&
                                                FieldTypeManager.GetField(rawField) is Sitecore.Data.Fields.ImageField;

                if (!fieldIsValidAndHasContent)
                {
                    return(false);
                }

                Sitecore.Data.Fields.ImageField imageField = rawField;
                if (imageField.MediaItem == null)
                {
                    return(false);
                }

                return(GetMediaURL(imageField.MediaItem, out url));
            }
Exemplo n.º 4
0
        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);
                }
            }
        }
Exemplo n.º 5
0
 public void ShouldNotThrowOnGetDefaultFieldTypeItem()
 {
     using (new Db("core"))
     {
         FieldTypeManager.GetDefaultFieldTypeItem();
     }
 }
Exemplo n.º 6
0
            /// <summary>
            /// Tries to get the URL for the link field on the item.
            /// </summary>
            /// <param name="item">The item containing the link field.</param>
            /// <param name="fieldName">The name of the link field on the item.</param>
            /// <param name="url">The URL contained in the link field.</param>
            /// <returns>True if able to return a URL; otherwise, false.</returns>
            public static bool GetGeneralLinkURL(Item item, string fieldName, out string url)
            {
                url = string.Empty;

                try
                {
                    if (item == null || string.IsNullOrEmpty(fieldName))
                    {
                        return(false);
                    }

                    var rawLinkField = item.Fields[fieldName];
                    var linkFieldIsValidAndHasContent = rawLinkField != null &&
                                                        !string.IsNullOrEmpty(rawLinkField.Value) &&
                                                        FieldTypeManager.GetField(rawLinkField) is LinkField;
                    if (!linkFieldIsValidAndHasContent)
                    {
                        return(false);
                    }

                    LinkField linkField = rawLinkField;
                    return(GetGeneralLinkURL(linkField, out url));
                }
                catch
                {
                    return(false);
                }
            }
        public void Process(GetFieldModelArgs args)
        {
            if (args.RecursionLevel > 5 || args.Result != null || !args.Field.HasValue)
            {
                return;
            }

            if (!(FieldTypeManager.GetField(args.Field) is MultilistField listField))
            {
                return;
            }

            var items = new List <object>();

            foreach (var item in listField.GetItems())
            {
                var dict = item.ToFieldsDictionary(args.RecursionLevel + 1);
                var path = LinkManager.GetItemUrl(item, new UrlOptions
                {
                    AddAspxExtension       = false,
                    AlwaysIncludeServerUrl = false,
                    EncodeNames            = true,
                    LanguageEmbedding      = LanguageEmbedding.Never,
                    LowercaseUrls          = true
                });
                items.Add(new { name = item.Name, displayName = item.DisplayName, path, fields = dict });
            }

            args.Result = new { items, type = listField.InnerField.Type }
            ;
        }
Exemplo n.º 8
0
        private void RenderResizable(Control parent, Editor.Field field)
        {
            var type = field.TemplateField.Type;

            if (string.IsNullOrEmpty(type))
            {
                return;
            }

            var fieldType = FieldTypeManager.GetFieldType(type);

            if (fieldType == null || !fieldType.Resizable)
            {
                return;
            }

            var text1 =
                "<div style=\"cursor:row-resize; position: relative; height: 5px; width: 100%; top: 0px; left: 0px;\" onmousedown=\"scContent.fieldResizeDown(this, event)\" onmousemove=\"scContent.fieldResizeMove(this, event)\" onmouseup=\"scContent.fieldResizeUp(this, event, '" +
                field.TemplateField.ID.ToShortID() + "')\">" + Images.GetSpacer(1, 4) + "</div>";

            AddLiteralControl(parent, text1);
            var text2 = "<div class style=\"display:none\" \">" + Images.GetSpacer(1, 4) + "</div>";

            AddLiteralControl(parent, text2);
        }
        public override object GetFieldValue(IIndexableDataField field)
        {
            Field field1 = (Field)(field as SitecoreItemDataField);

            if (field1 != null)
            {
                if (string.IsNullOrEmpty(field1.Value))
                {
                    return((object)null);
                }
                if (FieldTypeManager.GetField(field1) is DateField)
                {
                    DateField dateField = new DateField(field1);
                    if (dateField.DateTime > DateTime.MinValue)
                    {
                        return((object)dateField.DateTime);
                    }
                }
            }
            else if (field.Value is DateTime)
            {
                return((object)(DateTime)field.Value);
            }
            return((object)null);
        }
        public void Process(GetFieldModelArgs args)
        {
            if (args.Result != null || !args.Field.HasValue)
            {
                return;
            }

            if (!(FieldTypeManager.GetField(args.Field) is ImageField imagefield))
            {
                return;
            }

            args.Result = new
            {
                @class = imagefield.Class.ToJsonValueString(),
                alt    = imagefield.Alt.ToJsonValueString(),
                src    = imagefield.MediaItem != null
                    ? MediaManager.GetMediaUrl(imagefield.MediaItem, new MediaUrlOptions
                {
                    AlwaysIncludeServerUrl = false,
                    IncludeExtension       = true,
                    LowercaseUrls          = true
                })
                    : null,
                linkType = imagefield.LinkType.ToJsonValueString(),
                border   = imagefield.Border.ToJsonValueString(),
                hspace   = imagefield.HSpace.ToJsonValueString(),
                height   = imagefield.Height.ToJsonValueString(),
                width    = imagefield.Width.ToJsonValueString(),
                type     = imagefield.InnerField.Type
            };
        }
Exemplo n.º 11
0
        protected override IEnumerable <Item> GetSourceItems(T ruleContext)
        {
            Assert.ArgumentNotNullOrEmpty(this.FieldName, "FieldName");
            Assert.ArgumentNotNull(ruleContext, "ruleContext");
            Assert.ArgumentNotNull(ruleContext.Item, "ruleContext.Item");
            var item  = ruleContext.Item;
            var field = item.Fields[this.FieldName];

            if (field == null)
            {
                return(null);
            }
            var sourceItems = new List <Item>();
            var customField = FieldTypeManager.GetField(field);

            if (customField is LookupField)
            {
                var f2 = customField as LookupField;
                sourceItems.Add(f2.TargetItem);
            }
            else if (customField is ReferenceField)
            {
                var f2 = customField as ReferenceField;
                sourceItems.Add(f2.TargetItem);
            }
            else if (customField is MultilistField)
            {
                var f2 = customField as MultilistField;
                sourceItems.AddRange(f2.GetItems());
            }
            return(sourceItems);
        }
Exemplo n.º 12
0
        public override object GetFieldValue(IIndexableDataField indexableField)
        {
            Field field = indexableField as SitecoreItemDataField;

            var list = new List <string>();

            var multiField = FieldTypeManager.GetField(field) as MultilistField;

            if (multiField != null)
            {
                foreach (string key in multiField.List)
                {
                    string itm = key;

                    if (ID.IsID(itm))
                    {
                        itm = ShortID.Encode(itm).ToLowerInvariant();
                        list.Add(itm);
                    }
                }

                return(list);
            }

            return(list);
        }
        public void Process(GetFieldModelArgs args)
        {
            if (args.RecursionLevel > 5 || args.Result != null || !args.Field.HasValue)
            {
                return;
            }
            var lookupField = FieldTypeManager.GetField(args.Field) as LookupField;
            var itemField   = FieldTypeManager.GetField(args.Field) as ReferenceField;

            if (lookupField == null && itemField == null)
            {
                return;
            }

            var item = itemField?.TargetItem ?? lookupField?.TargetItem;

            if (item == null)
            {
                args.AbortPipeline();
                return;
            }
            var dict = item.ToFieldsDictionary(args.RecursionLevel + 1);
            var path = LinkManager.GetItemUrl(item, new UrlOptions
            {
                AddAspxExtension       = false,
                AlwaysIncludeServerUrl = false,
                EncodeNames            = true,
                LanguageEmbedding      = LanguageEmbedding.Never,
                LowercaseUrls          = true
            });

            args.Result = new { name = item.Name, displayName = item.DisplayName, path, fields = dict };
        }
        public static string LinkFieldUrl(this Item item, ID fieldId)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            if (ID.IsNullOrEmpty(fieldId))
            {
                throw new ArgumentNullException(nameof(fieldId));
            }

            var field = item.Fields[fieldId];

            if (field == null || !(FieldTypeManager.GetField(field) is LinkField))
            {
                return(string.Empty);
            }

            LinkField linkField = field;

            switch (linkField.LinkType.ToLower())
            {
            case "internal":

                // Use LinkMananger for internal links, if link is not empty
                return(linkField.TargetItem != null?LinkManager.GetItemUrl(linkField.TargetItem) : string.Empty);

            case "media":

                // Use MediaManager for media links, if link is not empty
                return(linkField.TargetItem != null?MediaManager.GetMediaUrl(linkField.TargetItem) : string.Empty);

            case "external":

                // Just return external links
                return(linkField.Url);

            case "anchor":

                // Prefix anchor link with # if link if not empty
                return(!string.IsNullOrEmpty(linkField.Anchor) ? "#" + linkField.Anchor : string.Empty);

            case "mailto":

                // Just return mailto link
                return(linkField.Url);

            case "javascript":

                // Just return javascript
                return(linkField.Url);

            default:

                // Just please the compiler, this
                // condition will never be met
                return(linkField.Url);
            }
        }
        public static string GetLinkFieldUrl(this SitecoreHelper sitecoreHelper, Item item, string fieldName)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (string.IsNullOrEmpty(fieldName))
            {
                throw new ArgumentNullException(nameof(fieldName));
            }
            var fieldalue = item[fieldName];

            if (ID.IsID(item[fieldName]))
            {
                var linkItem = item.Database.GetItem(ID.Parse(fieldalue));
                return(linkItem != null?Sitecore.Links.LinkManager.GetItemUrl(linkItem) : string.Empty);
            }
            var field = item.Fields[fieldName];

            if (field == null || !(FieldTypeManager.GetField(field) is LinkField))
            {
                return(string.Empty);
            }
            else
            {
                LinkField linkField = (LinkField)field;
                switch (linkField.LinkType.ToLower())
                {
                case "internal":
                    // Use LinkMananger for internal links, if link is not empty
                    return(linkField.TargetItem != null?Sitecore.Links.LinkManager.GetItemUrl(linkField.TargetItem) : string.Empty);

                case "media":
                    // Use MediaManager for media links, if link is not empty
                    return(linkField.TargetItem != null?Sitecore.Resources.Media.MediaManager.GetMediaUrl(linkField.TargetItem) : string.Empty);

                case "external":
                    // Just return external links
                    return(linkField.Url);

                case "anchor":
                    // Prefix anchor link with # if link if not empty
                    return(!string.IsNullOrEmpty(linkField.Anchor) ? "#" + linkField.Anchor : string.Empty);

                case "mailto":
                    // Just return mailto link
                    return(linkField.Url);

                case "javascript":
                    // Just return javascript
                    return(linkField.Url);

                default:
                    // Just please the compiler, this
                    // condition will never be met
                    return(linkField.Url);
                }
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// Maps the specified source.
        /// </summary>
        /// <typeparam name="TDestination">The type of the destination.</typeparam>
        /// <param name="field">The field.</param>
        /// <param name="destination">The destination.</param>
        /// <param name="context">The context.</param>
        /// <returns></returns>
        internal static TDestination Map <TDestination>(Field field, TDestination destination, ResolutionContext context)
        {
            var customField = FieldTypeManager.GetField(field);

            context.Mapper.Map(customField, destination, customField.GetType(), destination.GetType());

            return(destination);
        }
        public static Type GetFieldType(this TemplateFieldItem field)
        {
            FieldType fieldType = FieldTypeManager.GetFieldType(field.Type);
            Type      result;

            if (field.Type == "Number")
            {
                result = typeof(double);
            }
            else
            {
                if (field.Type == "Integer")
                {
                    result = typeof(int);
                }
                else
                {
                    if (fieldType != null)
                    {
                        string fullName = fieldType.Type.FullName;
                        switch (fullName)
                        {
                        case "Sitecore.Data.Fields.TextField":
                        case "Sitecore.Data.Fields.HtmlField":
                        case "Sitecore.Data.Fields.ValueLookupField":
                            result = typeof(string);
                            return(result);

                        case "Sitecore.Data.Fields.DateField":
                            result = typeof(DateTime);
                            return(result);

                        case "Sitecore.Data.Fields.LookupField":
                        case "Sitecore.Data.Fields.ReferenceField":
                        case "Sitecore.Data.Fields.GroupedDroplinkField":
                        case "Sitecore.Data.Fields.GroupedDroplistField":
                            result = typeof(Item);
                            return(result);

                        case "Sitecore.Data.Fields.MultilistField":
                            result = typeof(IEnumerable <Item>);
                            return(result);

                        case "Sitecore.Data.Fields.CheckboxField":
                            result = typeof(bool);
                            return(result);
                        }
                        result = fieldType.Type;
                    }
                    else
                    {
                        result = typeof(string);
                    }
                }
            }
            return(result);
        }
Exemplo n.º 18
0
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            var name  = binder.Name.ToLower();
            var field = _item.Fields[name];

            result = field != null?FieldTypeManager.GetField(field) : null;

            return(field != null);
        }
Exemplo n.º 19
0
 public void ShouldNotThrowOnGetFieldTypeItem()
 {
     // arrange
     using (new Db("core"))
     {
         // act
         FieldTypeManager.GetFieldTypeItem("text");
     }
 }
Exemplo n.º 20
0
        private void FindLinks([NotNull] DeleteItemPipeline pipeline, [NotNull] Item item)
        {
            var links = Globals.LinkDatabase.GetReferrers(item);

            if (links.Length <= 0)
            {
                return;
            }

            foreach (var itemLink in links)
            {
                var sourceItem = item.Database.GetItem(itemLink.SourceItemID);
                if (sourceItem == null)
                {
                    continue;
                }

                if (pipeline.WillBeDeleted(sourceItem))
                {
                    continue;
                }

                var sourceFieldId = itemLink.SourceFieldID;
                if (ID.IsNullOrEmpty(sourceFieldId))
                {
                    continue;
                }

                var field = sourceItem.Fields[sourceFieldId];
                if (field == null)
                {
                    continue;
                }

                var customField = FieldTypeManager.GetField(field);
                if (customField == null)
                {
                    continue;
                }

                pipeline.Output.WriteStartElement("item");
                pipeline.Output.WriteAttributeString("section", "Links");
                pipeline.Output.WriteAttributeString("id", item.ID.ToString());
                pipeline.Output.WriteAttributeString("sourceid", itemLink.SourceItemID.ToString());
                pipeline.Output.WriteAttributeString("path", item.Paths.Path);
                pipeline.Output.WriteAttributeString("sourcepath", sourceItem.Paths.Path);
                pipeline.Output.WriteAttributeString("level", "warning");
                pipeline.Output.WriteValue(string.Format("Removes the link in the \"{2}\" field from \"{0}\" to \"{1}\".", sourceItem.Paths.Path, item.Paths.Path, field.Name));
                pipeline.Output.WriteEndElement();

                if (!pipeline.DryRun)
                {
                    RemoveLink(sourceItem, itemLink);
                }
            }
        }
        /// <summary>
        /// The get values.
        /// </summary>
        /// <returns>
        /// The IEnumberable of values
        /// </returns>
        public IEnumerable <string> GetValues()
        {
            if (FieldTypeManager.GetField(_field) is MultilistField)
            {
                MultilistField field = _field;
                return(field.TargetIDs.Select(IdHelper.NormalizeGuid));
            }

            return(new string[0]);
        }
Exemplo n.º 22
0
        public static string LinkFieldUrl(this Item item, ID fieldID)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (ID.IsNullOrEmpty(fieldID))
            {
                throw new ArgumentNullException(nameof(fieldID));
            }
            var field = item.Fields[fieldID];

            if (field == null || !(FieldTypeManager.GetField(field) is LinkField))
            {
                return(string.Empty);
            }
            else
            {
                LinkField linkField = (LinkField)field;
                switch (linkField.LinkType.ToLower())
                {
                case "internal":
                {
                    var qs = LinkFieldOptions(item, fieldID, LinkFieldOption.QueryString);
                    // Use LinkMananger for internal links, if link is not empty
                    return(linkField.TargetItem != null?Sitecore.Links.LinkManager.GetItemUrl(linkField.TargetItem) + (string.IsNullOrWhiteSpace(qs)? string.Empty: "?" + qs) : string.Empty);
                }

                case "media":
                    // Use MediaManager for media links, if link is not empty
                    return(linkField.TargetItem != null?Sitecore.Resources.Media.MediaManager.GetMediaUrl(linkField.TargetItem) : string.Empty);

                case "external":
                    // Just return external links
                    return(linkField.Url);

                case "anchor":
                    // Prefix anchor link with # if link if not empty
                    return(!string.IsNullOrEmpty(linkField.Anchor) ? "#" + linkField.Anchor : string.Empty);

                case "mailto":
                    // Just return mailto link
                    return(linkField.Url);

                case "javascript":
                    // Just return javascript
                    return(linkField.Url);

                default:
                    // Just please the compiler, this
                    // condition will never be met
                    return(linkField.Url);
                }
            }
        }
Exemplo n.º 23
0
        public virtual Item GetFieldTypeItem(Item field)
        {
            string fieldType = field["Type"];

            if (string.IsNullOrEmpty(fieldType))
            {
                fieldType = "text";
            }

            return(FieldTypeManager.GetFieldTypeItem(fieldType) ?? FieldTypeManager.GetDefaultFieldTypeItem());
        }
        public static IEnumerable <Item> GetItemsFromMultilist(Item carrier, string fieldName)
        {
            var multilistField = carrier.Fields[fieldName];

            if (FieldTypeManager.GetField(multilistField) is MultilistField)
            {
                return(((MultilistField)multilistField).GetItems());
            }

            return(new Item[0]);
        }
        public Item GetFieldType(Field itemField)
        {
            Assert.ArgumentNotNull(itemField, "itemField");
            Item fieldTypeItem = FieldTypeManager.GetFieldTypeItem(StringUtil.GetString(new string[] { itemField.Type, "text" }));

            if (fieldTypeItem == null)
            {
                fieldTypeItem = FieldTypeManager.GetDefaultFieldTypeItem();
            }
            return(fieldTypeItem);
        }
Exemplo n.º 26
0
        public void ShouldGetLayoutField()
        {
            using (var db = new Db {
                new DbItem("home")
            })
            {
                var home = db.GetItem("/sitecore/content/home");

                FieldTypeManager.GetField(home.Fields[FieldIDs.LayoutField]).Should().BeOfType <LayoutField>();
                FieldTypeManager.GetFieldType("Layout").Type.Should().Be <LayoutField>();
            }
        }
Exemplo n.º 27
0
        public void ShouldGetTrackingField()
        {
            // arrange
            using (var db = new Db {
                new DbItem("home")
            })
            {
                var home = db.GetItem("/sitecore/content/home");

                // act & assert
                FieldTypeManager.GetField(home.Fields["__Tracking"]).Should().BeOfType <TrackingField>();
                FieldTypeManager.GetFieldType("Tracking").Type.Should().Be <TrackingField>();
            }
        }
Exemplo n.º 28
0
        public void ShouldNotThrowOnGetTemplateFieldItem()
        {
            using (var db = new Db
            {
                new DbItem("home")
                {
                    new DbField("field")
                }
            })
            {
                var home = db.GetItem("/sitecore/content/home");

                FieldTypeManager.GetTemplateFieldItem(home.Fields["field"]);
            }
        }
Exemplo n.º 29
0
        public override object GetFieldValue(IIndexableDataField field)
        {
            Field field1 = (Field)(field as SitecoreItemDataField);

            if (field1 != null)
            {
                CheckboxField checkboxField = FieldTypeManager.GetField(field1) as CheckboxField;
                return(checkboxField == null ? 0 : (checkboxField.Checked ? 1 : 0));
            }
            if (field.Value is bool)
            {
                return(field.Value);
            }
            return(field.Value);
        }
Exemplo n.º 30
0
        private void Update([NotNull] Item item)
        {
            using (new SecurityDisabler())
            {
                var itemLinks = Globals.LinkDatabase.GetReferrers(item);
                if (itemLinks.Length > 0)
                {
                    foreach (var itemLink in itemLinks)
                    {
                        var database = Factory.GetDatabase(itemLink.SourceDatabaseName);
                        if (database == null)
                        {
                            continue;
                        }

                        var source = database.GetItem(itemLink.SourceItemID);
                        if (source == null)
                        {
                            continue;
                        }

                        foreach (var version in source.Versions.GetVersions())
                        {
                            var sourceField = version.Fields[itemLink.SourceFieldID];
                            if (sourceField == null)
                            {
                                continue;
                            }

                            var customField = FieldTypeManager.GetField(sourceField);
                            if (customField == null)
                            {
                                continue;
                            }

                            version.Editing.BeginEdit();
                            customField.UpdateLink(itemLink);
                            version.Editing.EndEdit();
                        }
                    }
                }
            }

            foreach (Item child in item.Children)
            {
                Update(child);
            }
        }