private IBlazorSitecoreField CreateSitecoreField <T>(KeyValuePair <string, BlazorField> sitecoreField)
        {
            if (sitecoreField.Value == null)
            {
                return(null);
            }

            BlazorSitecoreField <T> field = null;

            T fieldValue = default;


            try
            {
                switch (sitecoreField.Value.Type)
                {
                case FieldTypes.HtmlField:
                case FieldTypes.PlainTextField:
                case FieldTypes.CheckboxField:
                    fieldValue = (T)Convert.ChangeType(sitecoreField.Value.Value.ToString(), typeof(T));
                    break;

                default:
                    fieldValue = JsonSerializer.Deserialize <T>(sitecoreField.Value.Value.ToString());
                    break;
                }



                field = new BlazorSitecoreField <T>
                {
                    FieldName = sitecoreField.Key,
                    Value     = fieldValue,
                    Editable  = sitecoreField.Value?.Editable,
                    Type      = sitecoreField.Value?.Type
                };
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error creating field {sitecoreField.Value.Value}. Error { ex.Message}");
            }

            return(field);
        }
Example #2
0
        private IBlazorSitecoreField CreateSitecoreField <T>(KeyValuePair <string, BlazorField> sitecoreField) where T : class
        {
            if (sitecoreField.Value == null)
            {
                return(null);
            }

            BlazorSitecoreField <T> field = null;

            T fieldValue = default;

            try
            {
                switch (sitecoreField.Value.Type)
                {
                case FieldTypes.HtmlField:
                case FieldTypes.PlainTextField:
                    fieldValue = sitecoreField.Value.Value as T;
                    break;

                default:
                    fieldValue = Json.Deserialize <T>(sitecoreField.Value.Value.ToString());
                    break;
                }



                field = new BlazorSitecoreField <T>
                {
                    FieldName = sitecoreField.Key,
                    Value     = fieldValue,
                    Editable  = sitecoreField.Value?.Editable,
                    Type      = sitecoreField.Value?.Type
                };
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error cretaing field {fieldValue.GetType()}. Error { ex.Message}");
            }

            return(field);
        }
Example #3
0
        private IBlazorSitecoreField CreateComplexSitecoreField <T>(KeyValuePair <string, BlazorField> field) where T : class
        {
            if (field.Value == null)
            {
                return(null);
            }

            BlazorSitecoreField <T> sitecoreField = null;

            T fieldValue = default;

            try
            {
                switch (field.Value.Type)
                {
                case FieldTypes.MultiListField:

                    BlazorFieldValueMultiList fieldValueMultiList = new BlazorFieldValueMultiList()
                    {
                        Values = new List <BlazorFieldValueMultiListItem>()
                    };


                    foreach (var item in field.Value.Values)
                    {
                        if (item == null || string.IsNullOrWhiteSpace(item.ToString()))
                        {
                            continue;
                        }

                        BlazorFieldValueMultiListItem multiListItem = Json.Deserialize <BlazorFieldValueMultiListItem>(item.ToString());

                        var model = CreateComponentModel(multiListItem.Fields);

                        if (!model.hasModel)
                        {
                            continue;
                        }

                        multiListItem.SitecoreFields = model.model;

                        fieldValueMultiList.Values.Add(multiListItem);
                    }


                    fieldValue = fieldValueMultiList as T;


                    break;

                default:
                    break;
                }


                sitecoreField = new BlazorSitecoreField <T>
                {
                    FieldName = field.Key,
                    Value     = fieldValue,
                    Editable  = field.Value?.Editable,
                    Type      = field.Value?.Type
                };
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error cretaing complex field {fieldValue.GetType()}. Error { ex.Message}");
            }

            return(sitecoreField);
        }