Beispiel #1
0
 public BaseModel()
 {
     Layout = new LayoutModel("Stránka bez názvu");
     DefaultEditorForAdditionalData = new _EditorForHtmlAdditionalDataModel();
     PagePreviouslyVisited          = false;
 }
Beispiel #2
0
 public static bool IsPredefinedLayout(LayoutModel model)
 {
     return(model.Id >= c_lastPrefinedId);
 }
Beispiel #3
0
 public static void SaveLayoutModel(LayoutModel layout) => LoadLayoutModels().Concat(new List <LayoutModel> {
     layout
 }).ToList().SaveLayoutModels();
Beispiel #4
0
 private void LayoutPreview_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
 {
     _model = (LayoutModel)DataContext;
     RenderPreview();
 }
Beispiel #5
0
        private void ParseDeviceInfoData(ParseDeviceMode mode = ParseDeviceMode.Prod)
        {
            try
            {
                string layoutType = LayoutTypeBlankStr;
                ActiveZoneSetUUid = NullUuidStr;
                JsonElement jsonObject = default(JsonElement);

                if (File.Exists(Settings.ActiveZoneSetTmpFile))
                {
                    FileStream inputStream = File.Open(Settings.ActiveZoneSetTmpFile, FileMode.Open);
                    jsonObject = JsonDocument.Parse(inputStream, options: default).RootElement;
                    inputStream.Close();
                    UniqueKey         = jsonObject.GetProperty(DeviceIdJsonTag).GetString();
                    ActiveZoneSetUUid = jsonObject.GetProperty(ActiveZoneSetJsonTag).GetProperty(UuidJsonTag).GetString();
                    layoutType        = jsonObject.GetProperty(ActiveZoneSetJsonTag).GetProperty(TypeJsonTag).GetString();
                }

                if (mode == ParseDeviceMode.Debug || ActiveZoneSetUUid == NullUuidStr || layoutType == LayoutTypeBlankStr)
                {
                    // Default or there is no active layout on current device
                    ActiveZoneSetLayoutType = LayoutType.Focus;
                    _showSpacing            = true;
                    _spacing   = 16;
                    _zoneCount = 3;
                }
                else
                {
                    switch (layoutType)
                    {
                    case "focus":
                        ActiveZoneSetLayoutType = LayoutType.Focus;
                        break;

                    case "columns":
                        ActiveZoneSetLayoutType = LayoutType.Columns;
                        break;

                    case "rows":
                        ActiveZoneSetLayoutType = LayoutType.Rows;
                        break;

                    case "grid":
                        ActiveZoneSetLayoutType = LayoutType.Grid;
                        break;

                    case "priority-grid":
                        ActiveZoneSetLayoutType = LayoutType.PriorityGrid;
                        break;

                    case "custom":
                        ActiveZoneSetLayoutType = LayoutType.Custom;
                        break;
                    }

                    _showSpacing = jsonObject.GetProperty(EditorShowSpacingJsonTag).GetBoolean();
                    _spacing     = jsonObject.GetProperty(EditorSpacingJsonTag).GetInt32();
                    _zoneCount   = jsonObject.GetProperty(EditorZoneCountJsonTag).GetInt32();
                }
            }
            catch (Exception ex)
            {
                LayoutModel.ShowExceptionMessageBox(ErrorParsingDeviceInfo, ex);
            }
        }
        private LayoutModel ProcessStaticLayout(string ID, LayoutModel layout)
        {
            var itemCtrl = _menu.GetControl.SingleOrDefault(o => o.Code.ToLower() == layout.TypeView.ToLower());

            if (itemCtrl == null)
            {
                itemCtrl = new CModule()
                {
                    Code       = "Static",
                    FullName   = "",
                    Name       = "No Exist",
                    Properties = null
                };
            }
            var properties = itemCtrl.Properties;

            layout.LayoutName += "(" + itemCtrl.Name + ")";
            layout.CModule     = itemCtrl.FullName;
            var detailsTemplate             = _templateDetailsService.GetItemStaticByID(ID, layout.PartialID);
            List <ProperyCModule> properyCs = new List <ProperyCModule>();

            if (detailsTemplate != null)
            {
                layout.TypeView    = detailsTemplate.TypeView;
                layout.PartialView = detailsTemplate.PartialView;
                var property = _propertyService.Find(true, o => o.TemplateDetailID == detailsTemplate.ID)?.ToList();

                if (property != null && properties != null)
                {
                    string _continue = "";
                    for (int x = 0; x < properties.Count; x++)
                    {
                        var            itemPro  = properties[x];
                        ProperyCModule properyC = new ProperyCModule()
                        {
                            Key   = itemPro.Key,
                            Name  = itemPro.Name,
                            Type  = itemPro.Type,
                            Value = itemPro.Value
                        };
                        foreach (var itemzPRo in property)
                        {
                            if (_continue != "" && _continue == itemzPRo.Name)
                            {
                                continue;
                            }
                            if (itemPro.Key == itemzPRo.Name)
                            {
                                properyC.Value = itemzPRo.Value;
                                _continue      = itemzPRo.Name;
                                break;
                            }
                        }
                        properyCs.Add(properyC);
                    }
                    layout.Properties = properyCs;
                }
                else
                {
                    layout.Properties = properties;
                }
            }
            else
            {
                layout.Properties = properties;
            }
            return(layout);
        }
Beispiel #7
0
 private void OnClosing(object sender, EventArgs e)
 {
     LayoutModel.SerializeDeletedCustomZoneSets();
     EditorOverlay.Current.Close();
 }
Beispiel #8
0
 public void ModifyLayout(LayoutModel layoutModel)
 {
 }
Beispiel #9
0
        private static void UpdateMosaicCache(Mosaic mosaic, string mosaicCache)
        {
            FileUtilities.FolderCreate(Path.GetDirectoryName(mosaicCache));

            File.Delete(mosaicCache);

            using (var filestream = new FileStream(mosaicCache, FileMode.CreateNew))
            {
                LayoutModel model = new LayoutModel();


                model.Background    = mosaic.Background;
                model.Bgcolor       = mosaic.BackgroundColor;
                model.Height        = (int)mosaic.Height;
                model.Width         = (int)mosaic.Width;
                model.SchemaVersion = 1;
                model.Tags          = new List <LayoutTags>();
                model.Type          = mosaic.Type;
                model.Regions       = new List <LayoutRegion>();

                if (model.Type == "Profile")
                {
                    //Load Data
                    XmlSerializer xserializer = new XmlSerializer(typeof(List <PositionViewModel>));
                    var           extraItems  =
                        (xserializer.
                         Deserialize(new StringReader(mosaic.ExtraData))
                         as List <PositionViewModel>).Select(position => new LayoutRegion
                    {
                        Height = (int)position.Height,
                        Width  = (int)position.Width,
                        Left   = (int)position.X,
                        Top    = (int)position.Y,
                        Type   = "Widget",
                        Name   = position.Name,
                        Media  = new List <LayoutRegionMedia>()
                        {
                            new LayoutRegionMedia()
                            {
                                Duration = 1000000,
                                Id       = (-1).ToString(),
                                Lkid     = -1,
                                Options  = new LayoutRegionMediaOptions()
                                {
                                    Uri = "None"
                                },
                                Raw = new LayoutRegionMediaRaw()
                                {
                                },

                                SchemaVersion = 1,
                                Type          = "PlaceHolder",
                                UserId        = 0
                            }
                        }
                    });

                    model.Regions.AddRange(extraItems);
                }

                foreach (var position in mosaic.Positions)
                {
                    model.Regions.Add(new LayoutRegion
                    {
                        Height = (int)position.Height,
                        Width  = (int)position.Width,
                        Id     = position.PositionID.ToString(),
                        Left   = (int)position.X,
                        Top    = (int)position.Y,
                        UserId = (int)position.UserID,
                        Media  = position.Media.Select(medium => new LayoutRegionMedia()
                        {
                            Duration = (int)medium.Duration.Value.TotalSeconds,
                            Id       = medium.MediaID.ToString(),
                            Lkid     = (int)medium.MediaID,
                            Options  = new LayoutRegionMediaOptions()
                            {
                                Uri = medium.Location
                            },
                            Raw = new LayoutRegionMediaRaw()
                            {
                            },

                            SchemaVersion = 1,
                            Type          = medium.Type == "Powerpoint"?"Video":medium.Type,
                            UserId        = (int)medium.UserID
                        }).ToList()
                    });
                }


                XmlSerializer serializer = new XmlSerializer(typeof(LayoutModel));
                serializer.Serialize(filestream, model);
                filestream.Position = 0;
                mosaic.Hash         = Hashes.MD5(filestream);
            }

            mosaic.Size = new FileInfo(mosaicCache).Length;
        }
Beispiel #10
0
        private void SetPageDefaults(LayoutModel layoutModel)
        {
            //product search
            string generatorTypeName = typeof(DefaultWebpageUrlGenerator).FullName;

            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(ProductSearch).FullName,
                LayoutId          = layoutModel.SearchLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            //checkout
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(EnterOrderEmail).FullName,
                LayoutId          = layoutModel.CheckoutLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(OrderPlaced).FullName,
                LayoutId          = layoutModel.CheckoutLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(PaymentDetails).FullName,
                LayoutId          = layoutModel.CheckoutLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(SetShippingDetails).FullName,
                LayoutId          = layoutModel.CheckoutLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            // product
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(Product).FullName,
                LayoutId          = layoutModel.ProductLayout.Id,
                GeneratorTypeName = typeof(ProductUrlGenerator).FullName
            });
            // category
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(Category).FullName,
                GeneratorTypeName = typeof(CategoryWithHierarchyUrlGenerator).FullName
            });
            // brand
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(Brand).FullName,
                GeneratorTypeName = typeof(BrandUrlGenerator).FullName
            });


            // UserAccount Pages

            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(UserAccountInfo).FullName,
                LayoutId          = layoutModel.UserAccountLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(UserAccountChangePassword).FullName,
                LayoutId          = layoutModel.UserAccountLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(UserAccountAddresses).FullName,
                LayoutId          = layoutModel.UserAccountLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(UserAccountOrders).FullName,
                LayoutId          = layoutModel.UserAccountLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(UserAccountReviews).FullName,
                LayoutId          = layoutModel.UserAccountLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
            _pageDefaultsAdminService.SetDefaults(new DefaultsInfo
            {
                PageTypeName      = typeof(UserAccountRewardPoints).FullName,
                LayoutId          = layoutModel.UserAccountLayout.Id,
                GeneratorTypeName = generatorTypeName
            });
        }
Beispiel #11
0
        public LayoutModel Setup(MediaModel mediaModel)
        {
            var layoutModel = new LayoutModel();
            //base layout
            var baseLayout = new Layout
            {
                Name        = "Base Ecommerce Layout",
                UrlSegment  = "_BaseEcommerceLayout",
                LayoutAreas = new List <LayoutArea>(),
            };

            _documentService.AddDocument(baseLayout);

            //ecommerce main layout
            var eCommerceLayout = new Layout
            {
                Name        = "Ecommerce Layout",
                UrlSegment  = "_EcommerceLayout",
                LayoutAreas = new List <LayoutArea>(),
                Parent      = baseLayout
            };
            var ecommerceLayoutArea = new List <LayoutArea>
            {
                new LayoutArea {
                    AreaName = "Header Left", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "Header Middle", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "Header Right", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "User Links", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "Navigation", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "Before Content", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "After Content", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "Footer Area 1", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "Footer Area 2", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "Footer Area 3", Layout = eCommerceLayout
                },
                new LayoutArea {
                    AreaName = "Footer Area 4", Layout = eCommerceLayout
                }
            };

            _documentService.AddDocument(eCommerceLayout);
            foreach (LayoutArea area in ecommerceLayoutArea)
            {
                _layoutAreaAdminService.SaveArea(area);
            }

            layoutModel.EcommerceLayout = eCommerceLayout;

            var homeLayout = new Layout
            {
                Name        = "Home Layout",
                UrlSegment  = "_HomeLayout",
                LayoutAreas = new List <LayoutArea>(),
                Parent      = eCommerceLayout
            };
            var homeLayoutAreas = new List <LayoutArea>
            {
                new LayoutArea {
                    AreaName = "Home After Content", Layout = homeLayout
                },
                new LayoutArea {
                    AreaName = "Teaser1", Layout = homeLayout
                },
                new LayoutArea {
                    AreaName = "Teaser2", Layout = homeLayout
                },
                new LayoutArea {
                    AreaName = "Teaser3", Layout = homeLayout
                },
                new LayoutArea {
                    AreaName = "Teaser4", Layout = homeLayout
                }
            };

            _documentService.AddDocument(homeLayout);
            foreach (LayoutArea area in homeLayoutAreas)
            {
                _layoutAreaAdminService.SaveArea(area);
            }
            layoutModel.HomeLayout = homeLayout;
            //checkout layout
            var checkoutLayout = new Layout
            {
                Name        = "Checkout Layout",
                UrlSegment  = "_CheckoutLayout",
                LayoutAreas = new List <LayoutArea>(),
                Parent      = eCommerceLayout
            };
            var checkoutLayoutAreas = new List <LayoutArea>
            {
                new LayoutArea {
                    AreaName = "Checkout Header Left", Layout = checkoutLayout
                },
                new LayoutArea {
                    AreaName = "Checkout Header Middle", Layout = checkoutLayout
                },
                new LayoutArea {
                    AreaName = "Checkout Header Right", Layout = checkoutLayout
                },
                new LayoutArea {
                    AreaName = "Checkout Footer Left", Layout = checkoutLayout
                },
                new LayoutArea {
                    AreaName = "Checkout Footer Right", Layout = checkoutLayout
                }
            };

            _documentService.AddDocument(checkoutLayout);

            foreach (LayoutArea area in checkoutLayoutAreas)
            {
                _layoutAreaAdminService.SaveArea(area);
            }
            layoutModel.CheckoutLayout = checkoutLayout;
            //product layout
            var productLayout = new Layout
            {
                Name        = "Product Layout",
                UrlSegment  = "_ProductLayout",
                LayoutAreas = new List <LayoutArea>(),
                Parent      = eCommerceLayout
            };
            var productLayoutAreas = new List <LayoutArea>
            {
                new LayoutArea {
                    AreaName = "Below Product Price", Layout = productLayout
                },
                new LayoutArea {
                    AreaName = "Below Add to cart", Layout = productLayout
                },
                new LayoutArea {
                    AreaName = "Below Product Information", Layout = productLayout
                },
                new LayoutArea {
                    AreaName = "Before Product Content", Layout = productLayout
                },
                new LayoutArea {
                    AreaName = "After Product Content", Layout = productLayout
                }
            };

            _documentService.AddDocument(productLayout);
            foreach (LayoutArea area in productLayoutAreas)
            {
                _layoutAreaAdminService.SaveArea(area);
            }
            layoutModel.ProductLayout = productLayout;
            //category/search layout
            var searchLayout = new Layout
            {
                Name        = "Search Layout",
                UrlSegment  = "_SearchLayout",
                LayoutAreas = new List <LayoutArea>(),
                Parent      = eCommerceLayout
            };
            var searchLayoutAreas = new List <LayoutArea>
            {
                new LayoutArea {
                    AreaName = "Before Filters", Layout = searchLayout
                },
                new LayoutArea {
                    AreaName = "After Filters", Layout = searchLayout
                }
            };

            _documentService.AddDocument(searchLayout);
            foreach (LayoutArea area in searchLayoutAreas)
            {
                _layoutAreaAdminService.SaveArea(area);
            }
            layoutModel.SearchLayout = searchLayout;

            var contentLayout = new Layout
            {
                Name        = "Content Layout",
                UrlSegment  = "_ContentLayout",
                LayoutAreas = new List <LayoutArea>(),
                Parent      = eCommerceLayout
            };

            _documentService.AddDocument(contentLayout);
            layoutModel.ContentLayout = contentLayout;

            // UserAccount
            var userAccountLayout = new Layout
            {
                Name        = "User Account Layout",
                UrlSegment  = "_UserAccountLayout",
                LayoutAreas = new List <LayoutArea>(),
                Parent      = eCommerceLayout
            };
            var userAccountAreas = new List <LayoutArea>
            {
                new LayoutArea {
                    AreaName = "Right Column", Layout = userAccountLayout
                }
            };

            _documentService.AddDocument(userAccountLayout);
            foreach (LayoutArea area in userAccountAreas)
            {
                _layoutAreaAdminService.SaveArea(area);
            }
            layoutModel.UserAccountLayout = userAccountLayout;

            //Page templates
            var homeTemplate = new PageTemplate
            {
                Name             = "Home Page",
                PageType         = typeof(TextPage).FullName,
                UrlGeneratorType = typeof(DefaultWebpageUrlGenerator).FullName,
                Layout           = homeLayout
            };

            _pageTemplateAdminService.Add(homeTemplate);

            SetPageDefaults(layoutModel);

            return(layoutModel);
        }
Beispiel #12
0
 public virtual void ModifyLayout(LayoutModel layoutModel)
 {
     var page = PageContext.Page as SitePageData;
 }
Beispiel #13
0
        public JsonResult GetCatList()
        {
            var layoutmodel   = new LayoutModel();
            var catlistdata   = new List <CategoryView>();
            var recomlistdata = new List <RecomBloginfoView>();
            var hotlistdata   = new List <HotNewView>();

            try
            {
                var categorycachedata = HttpContext.Cache.Get(Constant.CategoryKey);
                var hotnewsdata       = HttpContext.Cache.Get(Constant.HotKey);
                var recommenddata     = HttpContext.Cache.Get(Constant.RecommendKey);

                #region 导航博客分类NAV数据
                if (categorycachedata != null)
                {
                    catlistdata = categorycachedata.DeserializeObject <CategoryView>();
                }
                else
                {
                    var list       = BlogHelper.GetAllList_Category();
                    var selectdata = list?.Select(x => new { x.KID, x.Name })?.OrderBy(X => X.KID).ToList();
                    catlistdata = selectdata.SerializeObject().DeserializeObject <CategoryView>();
                    HttpContext.Cache.Insert(Constant.CategoryKey, selectdata.SerializeObject(), null, DateTime.Now.AddYears(1), TimeSpan.Zero, CacheItemPriority.High, null);
                }
                #endregion

                #region 热点数据
                if (hotnewsdata != null)
                {
                    hotlistdata = hotnewsdata.DeserializeObject <HotNewView>();
                }
                else
                {
                    var list       = BlogHelper.GetJsonListPage_HotNew(1, 15, $" CreateTime desc ", new Dictionary <string, object>());
                    var selectdata = list?.data?.Select((x) => new { x.KID, x.Title, x.Url }).OrderByDescending(X => X.KID).ToList();
                    hotlistdata = selectdata.SerializeObject().DeserializeObject <HotNewView>();
                    var hotexpirtime = DateTime.Parse($"{DateTime.UtcNow.AddDays(1).ToString("yyyy-MM-dd 23:59:59")}");
                    HttpContext.Cache.Insert(Constant.HotKey, selectdata.SerializeObject(), null, hotexpirtime, Cache.NoSlidingExpiration, CacheItemPriority.High, null);
                }
                #endregion

                #region 推荐博客数据
                if (recommenddata != null)
                {
                    recomlistdata = recommenddata.DeserializeObject <RecomBloginfoView>();
                }
                else
                {
                    var list = BlogHelper.GetJsonListPage_Bloginfo(1, 5, "SORC DESC", new Dictionary <string, object>()
                    {
                        { nameof(Bloginfo.IsDeleted), 0 }
                    });
                    var selectdata = list?.data?.Select(x => new { x.KID, x.Title }).ToList();
                    recomlistdata = selectdata.SerializeObject().DeserializeObject <RecomBloginfoView>();

                    var recomexpirtime = DateTime.Parse($"{DateTime.UtcNow.AddDays(1).ToString("yyyy-MM-dd 23:59:59")}");
                    HttpContext.Cache.Insert(Constant.RecommendKey, recomlistdata.SerializeObject(), null, recomexpirtime, Cache.NoSlidingExpiration, CacheItemPriority.High, null);
                }
                #endregion

                layoutmodel.BloginfoViews = recomlistdata;
                layoutmodel.Categorys     = catlistdata;
                layoutmodel.HotNews       = hotlistdata;
            }
            catch
            {
            }

            return(Json(layoutmodel));
        }
 private void OnClosing(object sender, EventArgs e)
 {
     LayoutModel.SerializeDeletedCustomZoneSets();
     App.Overlay.CloseLayoutWindow();
     App.Current.Shutdown();
 }
        public Response GetTemplateInfo(string ID)
        {
            if (string.IsNullOrEmpty(ID))
            {
                return new Response()
                       {
                           Code = 404, Data = null, Message = "Big Zero"
                       }
            }
            ;
            try
            {
                Dictionary <string, object> response = new Dictionary <string, object>();

                List <LayoutModel> StaticLayout  = new List <LayoutModel>();
                List <LayoutModel> DynamicLayout = new List <LayoutModel>();
                List <LayoutModel> DynamicItems  = new List <LayoutModel>();
                var data = _templateService.GetByID(ID);
                if (data == null)
                {
                    return new Response()
                           {
                               Code = 404, Data = null, Message = "Data Not Found"
                           }
                }
                ;
                // group Layout Static và Layout Dynamic
                MatchCollection match = Regex.Matches(data.Html, regexElement, RegexOptions.IgnorePatternWhitespace);
                int             count = match.Count;
                for (int i = 0; i < count; i++)
                {
                    LayoutModel layout = new LayoutModel();
                    var         str    = match[i].ToString().Trim();
                    // id vswLogo
                    var id = Regex.Match(str, regexID).Value.ToString().Replace(@"id=", "").Replace(@"""", "");
                    // code = CAdv
                    var code = Regex.Match(str, regexCode).Value.ToString().Replace(@"code=", "").Replace(@"""", "");
                    // Logo
                    var name = Regex.Match(str, regexName).Value.ToString().Replace(@"name=", "").Replace(@"""", "");
                    layout.PartialID  = id;
                    layout.LayoutName = name;
                    layout.TypeView   = code;
                    if (str.IndexOf("static-layout") > -1)
                    {
                        var staticLayout = ProcessStaticLayout(ID, layout);
                        StaticLayout.Add(staticLayout);
                    }
                    if (str.IndexOf("dynamic-layout") > -1)
                    {
                        layout.IsDynamic = true;
                        var detals      = _templateDetailsService.GetListItemDynamicByID(ID, id);
                        int countDetals = detals != null ? detals.Count : 0;
                        if (countDetals > 0)
                        {
                            for (int x = 0; x < countDetals; x++)
                            {
                                var dItem = detals[x];
                                var dLI   = ProccessDynamicLayout(dItem);
                                DynamicItems.Add(dLI);
                            }
                        }
                        DynamicLayout.Add(layout);
                    }
                }

                response.Add("dynamic", DynamicLayout);
                response.Add("static", StaticLayout);
                response.Add("dynamicitem", DynamicItems.OrderBy(o => o.Order));
                return(new Response()
                {
                    Code = 200,
                    Data = response,
                    Message = "Success"
                });
            }
            catch (Exception ex)
            {
                _logs.WriteLogsError("GetTemplateInfo", "{ID:" + ID + "}", ex);
                return(new Response()
                {
                    Code = 500,
                    Data = null,
                    Message = ex.Message
                });
            }
        }
Beispiel #16
0
        private List <VenueModel> GetVenueModels()
        {
            var venueDtos   = _venueService.ListVenues();
            var venueModels = new List <VenueModel>();

            foreach (var venueDto in venueDtos)
            {
                var layoutDtos   = _venueService.GetVenueLayouts(venueDto.Id).Layouts;
                var layoutModels = new List <LayoutModel>();

                foreach (var layoutDto in layoutDtos)
                {
                    var areaDtos   = _layoutService.GetLayoutAreas(layoutDto.Id).Areas;
                    var areaModels = new List <AreaModel>();

                    foreach (var areaDto in areaDtos)
                    {
                        var seatDtos   = _areaService.GetAreaSeats(areaDto.Id).Seats;
                        var seatModels = new List <SeatModel>();

                        foreach (var seatDto in seatDtos)
                        {
                            var seatModel = new SeatModel
                            {
                                Id     = seatDto.Id,
                                AreaId = seatDto.AreaId,
                                Number = seatDto.Number,
                                Row    = seatDto.Row,
                            };

                            seatModels.Add(seatModel);
                        }

                        var areaModel = new AreaModel
                        {
                            Id          = areaDto.Id,
                            Description = areaDto.Description,
                            CoordX      = areaDto.CoordX,
                            CoordY      = areaDto.CoordY,
                            LayoutId    = areaDto.LayoutId,
                            Seats       = seatModels,
                        };

                        areaModels.Add(areaModel);
                    }

                    var layoutModel = new LayoutModel
                    {
                        Id          = layoutDto.Id,
                        VenueId     = layoutDto.VenueId,
                        Description = layoutDto.Description,
                        Areas       = areaModels,
                    };

                    layoutModels.Add(layoutModel);
                }

                var venueModel = new VenueModel
                {
                    Id          = venueDto.Id,
                    Description = venueDto.Description,
                    Address     = venueDto.Address,
                    Phone       = venueDto.Phone,
                    Layouts     = layoutModels,
                };

                venueModels.Add(venueModel);
            }

            return(venueModels);
        }
        private LayoutModel ProccessDynamicLayout(SysTemplateDetailEntity dItem)
        {
            LayoutModel dLI = new LayoutModel
            {
                LayoutName    = dItem.LayoutName,
                CModule       = dItem.CModule,
                PartialID     = dItem.PartialID,
                ParrentLayout = dItem.ParentID,
                IsDynamic     = true,
                IsBody        = dItem.IsBody,
                PartialView   = dItem.PartialView,
                TypeView      = dItem.TypeView,
                Order         = dItem.Order
            };

            if (!dItem.IsBody)
            {
                var itemCtrl = _menu.GetControl.SingleOrDefault(o => o.FullName.ToLower() == dItem.CModule.ToLower());
                if (itemCtrl == null)
                {
                    itemCtrl = new CModule()
                    {
                        Code       = "Static",
                        FullName   = "",
                        Name       = "No Exist",
                        Properties = null
                    };
                }
                var properties = itemCtrl.Properties;
                var property   = _propertyService.Find(true, o => o.TemplateDetailID == dItem.ID)?.ToList();
                if (property != null && properties != null)
                {
                    List <ProperyCModule> properyCs = new List <ProperyCModule>();
                    string _continue = "";
                    for (int z = 0; z < properties.Count; z++)
                    {
                        var            itemPro  = properties[z];
                        ProperyCModule properyC = new ProperyCModule()
                        {
                            Key   = itemPro.Key,
                            Name  = itemPro.Name,
                            Type  = itemPro.Type,
                            Value = itemPro.Value
                        };
                        foreach (var itemzPRo in property)
                        {
                            if (_continue != "" && _continue == itemzPRo.Name)
                            {
                                continue;
                            }
                            if (itemPro.Key == itemzPRo.Name)
                            {
                                properyC.Value = itemzPRo.Value;
                                _continue      = itemzPRo.Name;
                                break;
                            }
                        }
                        properyCs.Add(properyC);
                    }
                    dLI.Properties = properyCs;
                }
            }
            return(dLI);
        }
Beispiel #18
0
 /// <summary>
 /// Read a layout model
 /// </summary>
 /// <typeparam name="TLayoutType">The Layout Model value Type</typeparam>
 /// <param name="position">The position in the file at which to begin reading
 /// relative to the current position in the file. Default is 0</param>
 /// <param name="model">The structure to contain the read data</param>
 public void ReadLayout <TLayoutType>(LayoutModel <TLayoutType> model, long position = 0)
     where TLayoutType : struct
 {
     MemorySequentialAccess.ReadLayoutHelper(this.IoAccess, model, position);
 }
Beispiel #19
0
 private void Select(LayoutModel newSelection)
 {
     _settings.SetSelectedModel(newSelection);
     App.Overlay.CurrentDataContext = newSelection;
 }
Beispiel #20
0
        public ActionResult Edit(LayoutModel model)
        {
            CreateModel(ref model);

            return(View("Layout", model));
        }
Beispiel #21
0
        public async Task <IActionResult> Index()
        {
            var dashboardTopCategoryReadingsLimit           = int.Parse(configuration["DashboardTopCategoryReadingsLimit"]);
            var dashboardTopSubCategoryReadingsLimit        = int.Parse(configuration["DashboardTopSubCategoryReadingsLimit"]);
            var dashboardTopPercentSubCategoryReadingsLimit = int.Parse(configuration["DashboardTopPercentSubCategoryReadingsLimit"]);
            var dashboardTopDocumentReadingsLimit           = int.Parse(configuration["DashboardTopDocumentReadingsLimit"]);

            //top sub categories reading
            IDictionary <CategoryModel, double> topSubCategoriesReading = await categoryLogic.TopSubCategoriesReading
                                                                          (
                dashboardTopSubCategoryReadingsLimit,
                configuration["MediaFolderPath"]
                                                                          );

            //reading per month
            IDictionary <string, long> readingOverview = await documentLogic.ReadingCountPerMonth();

            //top categories readings
            IDictionary <string, double> readingByCategoryOverview = new Dictionary <string, double>();
            var rootCategories =
                (
                    await categoryLogic.GetRootsAsync(configuration["MediaFolderPath"])
                )
                .Where(x => x.DocumentIds.Count > 0).ToArray();

            foreach (var root in rootCategories)
            {
                readingByCategoryOverview.Add
                (
                    root.Name,
                    await documentLogic.ReadCountAsync(root.DocumentIds)
                );
            }

            // top document reading limit
            var topDocumentReadings = await documentLogic.TopReading(dashboardTopDocumentReadingsLimit, configuration["MediaFolderPath"]);


            var dashboardModel = new DashboardModel
                                 (
                readingByCategoryOverview.Count < dashboardTopCategoryReadingsLimit ? readingByCategoryOverview.Count : dashboardTopCategoryReadingsLimit,
                dashboardTopSubCategoryReadingsLimit,
                topSubCategoriesReading.Count < dashboardTopPercentSubCategoryReadingsLimit ? topSubCategoriesReading.Count : dashboardTopPercentSubCategoryReadingsLimit,
                topSubCategoriesReading,
                readingOverview,
                readingByCategoryOverview
                .Where(x => x.Value > 0)
                .OrderByDescending(x => x.Value)
                .Take(dashboardTopCategoryReadingsLimit)
                .ToDictionary(x => x.Key, x => x.Value),
                topDocumentReadings
                                 );
            var layoutModel = new LayoutModel();
            await layoutModel.Refresh(suggestionLogic, int.Parse(configuration["DashboardTopSuggestionLimit"]), configuration["MediaFolderPath"]);

            var pageModel = new PageModel <DashboardModel>
                            (
                dashboardModel,
                layoutModel
                            );

            return(View(pageModel));
        }
Beispiel #22
0
        private void CreateModel(ref LayoutModel model)
        {
            iRstSrv.TableData[] data = null;

            /*
             * check:
             * - TablePositionText = null -> post from location page or location-list-(edit-layout) page
             * - TablePositionText != null -> back from table-numbering page or refresh the page
             */
            if (string.IsNullOrEmpty(model.TablePositionText))
            {
                switch (model.Mode)
                {
                case Mode.CreateAfterRegistering:
                case Mode.CreateFromLocationList:
                case Mode.Create:
                case Mode.EditFromLocation:

                    if (model.IsReload)
                    {
                        break;
                    }

                    /*
                     * TODO:
                     * - Get table list from database
                     * - Compare with input (if from location)
                     * - Delete tables or add new table
                     */

                    // create from data that passed from location page
                    List <TableInfo> tableInfo = CreateTableInfo(model.TableText);

                    Dictionary <int, int> addDict = new Dictionary <int, int>();

                    List <int> deleteIDQueue = new List <int>();

                    var response = iRstSrvClient.Get().LocationGetTablesList_00_00_001(Common.Restaurant.RestaurantID.ToString(), model.LocationID.ToString(), Common.Token);

                    List <int> checkList = new List <int>();

                    foreach (var info in tableInfo)
                    {
                        checkList.Add(info.ChairNo);

                        LocationTable matched = null;

                        if (response.LocationTablesList != null)
                        {
                            var findQuery = response.LocationTablesList.Where(table => table.TableType == info.ChairNo);

                            if (findQuery.Count() > 0)
                            {
                                matched = findQuery.Single();


                                if (matched.TableIDs.Length > info.TableNo)
                                {
                                    // delete exist table
                                    for (int i = info.TableNo; i < matched.TableIDs.Length; i++)
                                    {
                                        deleteIDQueue.Add(matched.TableIDs[i]);
                                    }
                                }
                                else if (matched.TableIDs.Length < info.TableNo)
                                {
                                    int addingAmount = info.TableNo - matched.TableIDs.Length;

                                    addDict[matched.TableType] = addingAmount;
                                }
                            }
                        }

                        if (matched == null)
                        {
                            addDict[info.ChairNo] = info.TableNo;
                        }
                    }

                    if (response.LocationTablesList != null)
                    {
                        foreach (var e in response.LocationTablesList)
                        {
                            if (checkList.Contains(e.TableType))
                            {
                                continue;
                            }
                            else
                            {
                                foreach (var id in e.TableIDs)
                                {
                                    deleteIDQueue.Add(id);
                                }
                            }
                        }
                    }

                    // delete table from delete-id-queue
                    if (deleteIDQueue.Count > 0)
                    {
                        StringBuilder xml = new StringBuilder();
                        xml.Append("<tablelist>");

                        foreach (var id in deleteIDQueue)
                        {
                            xml.AppendFormat("<table><tableid>{0}</tableid></table>", id);
                        }

                        xml.Append("</tablelist>");

                        var deleteTableResponse = iRstSrvClient.Get().TableDeleteList_00_00_001(Common.Restaurant.RestaurantID.ToString(),
                                                                                                model.LocationID.ToString(), xml.ToString(), Common.Token);
                    }

                    // create table-data from add-dict
                    iRstSrv.TableData[] tableData = CreateTableData(addDict);

                    if (tableData.Length > 0)
                    {
                        StringBuilder xml = new StringBuilder();
                        xml.Append("<tablelist>");

                        foreach (var table in tableData)
                        {
                            xml.Append("<table>");
                            xml.AppendFormat("<tablenumber>{0}</tablenumber>", table.LayoutCode);
                            xml.AppendFormat("<noofchairs>{0}</noofchairs>", table.NoOfChairs);
                            xml.AppendFormat("<post>{0}</post>", table.PosT);
                            xml.AppendFormat("<posl>{0}</posl>", table.PosL);
                            xml.AppendFormat("<tableid>{0}</tableid>", table.TableID);
                            xml.Append("</table>");
                        }

                        xml.Append("</tablelist>");

                        var addTablesResponse = iRstSrvClient.Get().TableAddUpdateList_00_00_001(Common.Restaurant.RestaurantID.ToString(),
                                                                                                 model.LocationID.ToString(), xml.ToString(), Common.Token);
                    }
                    break;
                }

                data = iRstSrvClient.Get().TableGetList_01_03_092(Common.Restaurant.RestaurantID.ToString(), model.LocationID.ToString(), Common.Token).Tables;
            }
            else
            {
                data = Utils.ParseFullInfo(model.TablePositionText);
            }

            if (model.IsReload)
            {
                data = ResetPosition(data);
            }

            //CreateModel(ref model);
            model.Tables = Utils.CalculateTableWidth(data);
        }
Beispiel #23
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            _model = (LayoutModel)DataContext;

            RenderPreview();
        }
        private void EditLayout_Click(object sender, RoutedEventArgs e)
        {
            _editing = true;
            this.Close();

            EditorOverlay mainEditor = EditorOverlay.Current;
            LayoutModel   model      = mainEditor.DataContext as LayoutModel;

            if (model == null)
            {
                mainEditor.Close();
                return;
            }
            model.IsSelected = false;

            bool isPredefinedLayout = Settings.IsPredefinedLayout(model);

            if (!_settings.CustomModels.Contains(model) || isPredefinedLayout)
            {
                if (isPredefinedLayout)
                {
                    // make a copy
                    model = model.Clone();
                    mainEditor.DataContext = model;
                }

                int maxCustomIndex = 0;
                foreach (LayoutModel customModel in _settings.CustomModels)
                {
                    string name = customModel.Name;
                    if (name.StartsWith(c_defaultNamePrefix))
                    {
                        int i;
                        if (Int32.TryParse(name.Substring(c_defaultNamePrefix.Length), out i))
                        {
                            if (maxCustomIndex < i)
                            {
                                maxCustomIndex = i;
                            }
                        }
                    }
                }
                model.Name = c_defaultNamePrefix + (++maxCustomIndex);
            }

            mainEditor.Edit();

            EditorWindow window;

            if (model is GridLayoutModel)
            {
                window = new GridEditorWindow();
            }
            else
            {
                window = new CanvasEditorWindow();
            }
            window.Owner       = EditorOverlay.Current;
            window.DataContext = model;
            window.Show();
        }
Beispiel #25
0
 public static bool IsPredefinedLayout(LayoutModel model)
 {
     return(model.Type != LayoutType.Custom);
 }
        private void SetupHomeLayoutWidgets(PageModel pageModel, MediaModel mediaModel, LayoutModel layoutModel)
        {
            var layout        = layoutModel.HomeLayout;
            var beforeContent = layoutModel.EcommerceLayout.LayoutAreas.FirstOrDefault(x => x.AreaName == "Before Content");
            var teaser1Area   = layout.LayoutAreas.FirstOrDefault(x => x.AreaName == "Teaser1");
            var teaser2Area   = layout.LayoutAreas.FirstOrDefault(x => x.AreaName == "Teaser2");
            var teaser3Area   = layout.LayoutAreas.FirstOrDefault(x => x.AreaName == "Teaser3");
            var teaser4Area   = layout.LayoutAreas.FirstOrDefault(x => x.AreaName == "Teaser4");

            var slider = new Slider
            {
                Image           = mediaModel.SliderImage1.FileUrl,
                Image1          = mediaModel.SliderImage2.FileUrl,
                LayoutArea      = beforeContent,
                Webpage         = pageModel.HomePage,
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 1800
            };

            _widgetService.AddWidget(slider);

            var featuredProducts = new FeaturedProducts
            {
                LayoutArea             = beforeContent,
                Webpage                = pageModel.HomePage,
                ListOfFeaturedProducts = GetFeaturedProducts(),
                Name            = "Featured Products",
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 1800
            };

            _widgetService.AddWidget(featuredProducts);

            //nav
            var nav = new MobileFriendlyNavigation.Widgets.MobileFriendlyNavigation
            {
                Name            = "Navigation",
                LayoutArea      = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == ("Navigation")),
                IncludeChildren = true,
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60
            };

            _widgetService.AddWidget(nav);

            var featuredCategories = new FeaturedCategories
            {
                LayoutArea = beforeContent,
                Webpage    = pageModel.HomePage,
                ListOfFeaturedCategories = GetFeaturedCategories(),
                Name            = "Featured Categories",
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 1800
            };

            _widgetService.AddWidget(featuredCategories);

            var teaser1 = new TextWidget()
            {
                LayoutArea      = teaser1Area,
                Webpage         = pageModel.HomePage,
                Text            = string.Format(@"<div class=""padding-bottom-10""><span><img src=""{0}"" /> </span></div><h3><a href=""#"">FREE delivery on orders over &pound;50. </a></h3><p>Orders placed Monday to Friday before 2pm will generally be picked and packed for immediate despatch. Please note that orders placed over the weekend or on public holidays will be processed on the next working day.</p>", mediaModel.DeliveryIcon.FileUrl),
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 1800
            };

            _widgetService.AddWidget(teaser1);

            var teaser2 = new TextWidget()
            {
                LayoutArea      = teaser2Area,
                Webpage         = pageModel.HomePage,
                Text            = string.Format(@"<div class=""padding-bottom-10""><span><img src=""{0}"" /> </span></div><h3><a href=""#"">7 day no question returns.</a></h3><p>We offer a 28 Day Money Back Guarantee. If for any reason you are not completely delighted with your purchase you may download a Returns Form and return it within 28 days of receipt for a full refund or exchange.</p>", mediaModel.ReturnIcon.FileUrl),
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 1800
            };

            _widgetService.AddWidget(teaser2);

            var teaser3 = new TextWidget()
            {
                LayoutArea      = teaser3Area,
                Webpage         = pageModel.HomePage,
                Text            = string.Format(@"<div class=""padding-bottom-10""><span><img src=""{0}"" /> </span></div><h3><a href=""#"">Store locations.</a></h3><p>Use our store locator to find a store near you as well as information like opening times, addresses, maps and a list of facilities available at every store.</p>", mediaModel.LocationIcon.FileUrl),
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 1800
            };

            _widgetService.AddWidget(teaser3);

            var teaser4 = new TextWidget()
            {
                LayoutArea      = teaser4Area,
                Webpage         = pageModel.HomePage,
                Text            = string.Format(@"<div class=""padding-bottom-10""><span><img src=""{0}"" /> </span></div><h3><a href=""#"">Contact us.</a></h3><p>Our customer service team is always willing to answer your proposal concerning Samsung Service. Your message will be promptly handled under the direct supervision of our executive management.</p>", mediaModel.ContactIcon.FileUrl),
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60
            };

            _widgetService.AddWidget(teaser4);

            GetFormProperties(pageModel.HomePage);
            //home footer form
            var footerLinksWidgetForm = new TextWidget
            {
                LayoutArea      = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "Footer Area 4"),
                Name            = "Footer links",
                Text            = string.Format("[form-{0}]", pageModel.HomePage.Id),
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60
            };

            _widgetService.AddWidget(footerLinksWidgetForm);
        }
 public void ModifyLayout(LayoutModel layoutModel)
 {
     layoutModel.HideHeader = true;
     layoutModel.HideFooter = true;
 }
        private void SetupEcommerceLayoutWidgets(MediaModel mediaModel, LayoutModel layoutModel)
        {
            var linkedImageLogo = new LinkedImage
            {
                Name            = "Logo",
                Link            = "/",
                Image           = mediaModel.Logo.FileUrl,
                LayoutArea      = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "Header Left"),
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60
            };

            _widgetService.AddWidget(linkedImageLogo);
            // Search
            var searchBox = new SearchBox
            {
                Name       = "Search",
                LayoutArea = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "Header Middle"),
                Cache      = true,
            };

            _widgetService.AddWidget(searchBox);

            // Ecommerce user links
            var userLinks = new EcommerceUserLinks
            {
                Name       = "Ecommerce User Links",
                LayoutArea = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "User Links")
            };

            _widgetService.AddWidget(userLinks);

            //cart widget
            var cartWidget = new CartWidget
            {
                Name       = "Cart Widget",
                LayoutArea = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "Header Right")
            };

            _widgetService.AddWidget(cartWidget);

            //footer links
            var footerLinksWidget = new TextWidget
            {
                LayoutArea      = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "Footer Area 1"),
                Name            = "Footer links",
                Text            = EcommerceInstallInfo.FooterText1,
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60
            };

            _widgetService.AddWidget(footerLinksWidget);

            footerLinksWidget = new TextWidget
            {
                LayoutArea      = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "Footer Area 2"),
                Name            = "Footer links",
                Text            = EcommerceInstallInfo.FooterText2,
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60
            };
            _widgetService.AddWidget(footerLinksWidget);

            footerLinksWidget = new TextWidget
            {
                LayoutArea      = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "Footer Area 3"),
                Name            = "Footer links",
                Text            = EcommerceInstallInfo.FooterText3,
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60
            };
            _widgetService.AddWidget(footerLinksWidget);

            var afterContentCardsTeaser = new TextWidget
            {
                LayoutArea      = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "After Content"),
                Name            = "Footer links",
                Text            = EcommerceInstallInfo.AfterContentCardsTeaser,
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60
            };

            _widgetService.AddWidget(afterContentCardsTeaser);

            var page404          = _getByUrl.GetByUrl("404");
            var notFoundProducts = new On404SearchWidget
            {
                LayoutArea      = layoutModel.EcommerceLayout.LayoutAreas.First(x => x.AreaName == "After Content"),
                Name            = "What about these?",
                Cache           = true,
                CacheExpiryType = CacheExpiryType.Sliding,
                CacheLength     = 60,
                Webpage         = page404
            };

            _widgetService.AddWidget(notFoundProducts);
        }
Beispiel #29
0
 public static void DeleteLayoutModel(LayoutModel layout) => LoadLayoutModels().Where(x => x.Id != layout.Id).ToList().SaveLayoutModels();
Beispiel #30
0
 public BaseModel(LayoutModel layout)
 {
     Layout = layout;
 }