Exemplo n.º 1
0
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            if (string.IsNullOrEmpty(field?.Value))
            {
                return(null);
            }

            NameValueCollection values = HttpUtility.ParseQueryString(field.Value);

            if (values.Count == 0)
            {
                return(null);
            }

            var list = new List <StringEnterspeedProperty>();

            foreach (string key in values)
            {
                if (string.IsNullOrEmpty(key))
                {
                    continue;
                }

                string value = values[key];
                if (string.IsNullOrEmpty(value))
                {
                    continue;
                }

                list.Add(new StringEnterspeedProperty(key, value));
            }

            return(new ArrayEnterspeedProperty(_fieldService.GetFieldName(field), list.ToArray()));
        }
Exemplo n.º 2
0
        public IDictionary <string, IEnterspeedProperty> ConvertFields(Item item, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            var output = new Dictionary <string, IEnterspeedProperty>();

            FieldCollection fieldsCollection = item.Fields;

            if (fieldsCollection == null || !fieldsCollection.Any())
            {
                return(output);
            }

            // Mapping all fields, by default
            List <Field> fields = fieldsCollection.ToList();

            if (item.IsDictionaryItem())
            {
                // Only include dictionary fields
                fields = fields.Where(field =>
                                      field.InnerItem != null &&
                                      field.InnerItem.Paths.FullPath.StartsWith("/sitecore/templates/System/Dictionary", StringComparison.OrdinalIgnoreCase))
                         .ToList();
            }
            else if (item.IsContentItem() || item.IsRenderingItem())
            {
                // Exclude system fields for content and renderings
                fields = fields.Where(field =>
                                      field.InnerItem != null &&
                                      !field.InnerItem.Paths.FullPath.StartsWith("/sitecore/templates/system", StringComparison.OrdinalIgnoreCase))
                         .ToList();
            }

            if (!fields.Any())
            {
                return(output);
            }

            foreach (Field field in fields)
            {
                if (field == null)
                {
                    continue;
                }

                IEnterspeedFieldValueConverter converter = fieldValueConverters.FirstOrDefault(x => x.CanConvert(field));

                var value = converter?.Convert(item, field, siteInfo, fieldValueConverters);
                if (value == null)
                {
                    continue;
                }

                output.Add(_fieldService.GetFieldName(field), value);
            }

            return(output);
        }
Exemplo n.º 3
0
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            ReferenceField referenceField = field;

            if (string.IsNullOrEmpty(referenceField?.Value))
            {
                return(null);
            }

            return(new StringEnterspeedProperty(_fieldService.GetFieldName(field), referenceField.Value));
        }
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            var value = 0;

            if (!string.IsNullOrEmpty(field.Value))
            {
                value = int.Parse(field.Value);
            }

            return(new NumberEnterspeedProperty(_fieldService.GetFieldName(field), value));
        }
Exemplo n.º 5
0
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            ReferenceField referenceField = field;

            if (referenceField?.TargetItem == null)
            {
                return(null);
            }

            return(new StringEnterspeedProperty(_fieldService.GetFieldName(field), _enterspeedIdentityService.GetId(referenceField.TargetItem)));
        }
Exemplo n.º 6
0
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            DateField dateField = field;

            if (dateField == null ||
                dateField.DateTime == DateTime.MinValue)
            {
                return(null);
            }

            return(new StringEnterspeedProperty(_fieldService.GetFieldName(field), _dateFormatter.FormatDate(dateField.DateTime)));
        }
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            string value = FieldRenderer.Render(item, field.Name);

            if (siteInfo != null)
            {
                value = PrefixRelativeImagesWithDomain(value, siteInfo.BaseUrl);

                value = PrefixRelativeLinksWithDomain(value, siteInfo.BaseUrl);
            }

            return(new StringEnterspeedProperty(_fieldService.GetFieldName(field), value));
        }
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            if (string.IsNullOrEmpty(field?.Value))
            {
                return(null);
            }

            NameValueCollection values = HttpUtility.ParseQueryString(field.Value);

            if (values.Count == 0)
            {
                return(null);
            }

            var items = new List <Item>();

            foreach (string key in values)
            {
                if (string.IsNullOrEmpty(key))
                {
                    continue;
                }

                string value = values[key];
                if (string.IsNullOrEmpty(value))
                {
                    continue;
                }

                if (!Guid.TryParse(value, out var itemId))
                {
                    continue;
                }

                Item referencedItem = _itemManager.GetItem(new ID(itemId), item.Language, Version.Latest, item.Database);
                if (referencedItem == null ||
                    referencedItem.Versions.Count == 0)
                {
                    continue;
                }

                items.Add(referencedItem);
            }

            var referenceIds = items.Select(x => new StringEnterspeedProperty(null, _enterspeedIdentityService.GetId(x))).ToArray();

            return(new ArrayEnterspeedProperty(_fieldService.GetFieldName(field), referenceIds));
        }
Exemplo n.º 9
0
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            FileField fileField = field;

            if (fileField?.MediaItem == null)
            {
                return(null);
            }

            string mediaUrl = _urlService.GetMediaUrl(fileField.MediaItem);

            if (string.IsNullOrEmpty(mediaUrl))
            {
                return(null);
            }

            return(new StringEnterspeedProperty(_fieldService.GetFieldName(field), mediaUrl));
        }
Exemplo n.º 10
0
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            if (string.IsNullOrEmpty(field.Value))
            {
                return(null);
            }

            var value = 0d;

            if (field.Value.Contains("."))
            {
                double.TryParse(field.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out value);
            }
            else if (field.Value.Contains(","))
            {
                double.TryParse(field.Value, NumberStyles.Any, new CultureInfo("da-DK"), out value);
            }

            return(new NumberEnterspeedProperty(_fieldService.GetFieldName(field), value));
        }
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            MultilistField multilistField = field;

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

            var items = multilistField.GetItems()?.ToList() ?? new List <Item>();

            if (!items.Any())
            {
                return(null);
            }

            var referenceIds = items.Select(x => new StringEnterspeedProperty(null, _enterspeedIdentityService.GetId(x))).ToArray();

            return(new ArrayEnterspeedProperty(_fieldService.GetFieldName(field), referenceIds));
        }
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            LinkField linkField = field;

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

            var properties = new Dictionary <string, IEnterspeedProperty>();

            if (!string.IsNullOrEmpty(linkField.Target))
            {
                properties.Add(PropertyTarget, new StringEnterspeedProperty(PropertyTarget, linkField.Target));
            }

            if (!string.IsNullOrEmpty(linkField.Anchor))
            {
                properties.Add(PropertyAnchor, new StringEnterspeedProperty(PropertyAnchor, linkField.Anchor));
            }

            if (!string.IsNullOrEmpty(linkField.Text))
            {
                properties.Add(PropertyText, new StringEnterspeedProperty(PropertyText, linkField.Text));
            }

            if (!string.IsNullOrEmpty(linkField.Title))
            {
                properties.Add(PropertyTitle, new StringEnterspeedProperty(PropertyTitle, linkField.Title));
            }

            if (!string.IsNullOrEmpty(linkField.Class))
            {
                properties.Add(PropertyClass, new StringEnterspeedProperty(PropertyClass, linkField.Class));
            }

            string url = null;

            if (linkField.LinkType == "media")
            {
                url = _urlService.GetMediaUrl(linkField.TargetItem);
            }
            else if (linkField.LinkType == "internal")
            {
                url = _urlService.GetItemUrl(linkField.TargetItem);

                if (linkField.TargetItem != null)
                {
                    properties.Add(PropertyTargetType, new StringEnterspeedProperty(PropertyTargetType, linkField.TargetItem.TemplateName));
                    properties.Add(PropertyTargetId, new StringEnterspeedProperty(PropertyTargetId, _enterspeedIdentityService.GetId(linkField.TargetItem)));
                }
            }
            else if (linkField.LinkType == "external" ||
                     linkField.LinkType == "anchor" ||
                     linkField.LinkType == "mailto" ||
                     linkField.LinkType == "javascript")
            {
                url = linkField.GetFriendlyUrl();
            }

            if (!string.IsNullOrEmpty(url))
            {
                properties.Add(PropertyUrl, new StringEnterspeedProperty(PropertyUrl, url));
            }
            else
            {
                return(null);
            }

            return(new ObjectEnterspeedProperty(_fieldService.GetFieldName(field), properties));
        }
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            bool value = item[field.Name] == "1";

            return(new BooleanEnterspeedProperty(_fieldService.GetFieldName(field), value));
        }
        public IEnterspeedProperty Convert(Item item, Field field, EnterspeedSiteInfo siteInfo, List <IEnterspeedFieldValueConverter> fieldValueConverters)
        {
            string value = FieldRenderer.Render(item, field.Name);

            return(new StringEnterspeedProperty(_fieldService.GetFieldName(field), value));
        }