public override async Task GetInfoAsync(GeMenuItemInput geMenuItemInput) { var itemDataModel = geMenuItemInput.ItemDataModel; var moduleId = itemDataModel.Id; var currentRequest = geMenuItemInput.CurrentRequest; var menuItem = new MenuItemBusiness(); var title = GetTitle(itemDataModel); var normalizedTitle = UrlHelper.NormalizeTextForUrl(title); menuItem.Title = title; menuItem.RouteDatas = GetRouteData("Index", ModuleName, normalizedTitle, moduleId); var urlInfo = await _urlHelper.GetUrlAsync(currentRequest, "Index", ModuleName, new { title = normalizedTitle, moduleId }); menuItem.Url = urlInfo.Path; menuItem.RoutePath = urlInfo.RoutePath; menuItem.RoutePathWithoutHomePage = urlInfo.RoutePathWithoutHomePage; menuItem.Route = urlInfo.Route; menuItem.ModuleId = moduleId; menuItem.ModuleName = ModuleName; menuItem.Seo = new SeoBusiness(); menuItem.Seo.UpdateDate = itemDataModel.UpdateDate.HasValue ? itemDataModel.UpdateDate.Value : itemDataModel.CreateDate; menuItem.Seo.SitemapFrequence = SitemapFrequence.Yearly; menuItem.Childs = new List <MenuItemBusiness>(); var menuItemChild = new MenuItemBusiness(); menuItemChild.Title = title; menuItemChild.RouteDatas = GetRouteData("Authentification", ModuleName, normalizedTitle, moduleId); var urlInfoChild = await _urlHelper.GetUrlAsync(currentRequest, "Authentification", ModuleName, new { title = normalizedTitle, moduleId }); menuItemChild.Url = urlInfoChild.Path; menuItemChild.RoutePath = urlInfoChild.RoutePath; menuItemChild.RoutePathWithoutHomePage = urlInfoChild.RoutePathWithoutHomePage; menuItemChild.Route = urlInfoChild.Route; menuItemChild.ModuleId = moduleId; menuItemChild.ModuleName = ModuleName; menuItemChild.Seo = new SeoBusiness(); menuItemChild.Seo.UpdateDate = itemDataModel.UpdateDate.HasValue ? itemDataModel.UpdateDate.Value : itemDataModel.CreateDate; menuItemChild.Seo.SitemapFrequence = SitemapFrequence.Yearly; menuItem.Childs.Add(menuItemChild); ModuleManager.Add(geMenuItemInput.Master, itemDataModel.PropertyName, menuItem, itemDataModel.PropertyType); }
public static async Task <MenuItemBusiness> GetMenuItemAsync(UrlProvider urlProvider, ItemDataModel itemDataModel, ICurrentRequest currentRequest, string moduleName, bool isPrivate = false) { var moduleId = itemDataModel.Id; var freeBusinessModel = (ElementBusinessModel)itemDataModel.Data; var elements = freeBusinessModel.Elements; var title = FreeBusinessModule.GetTitle(elements); var normalizedTitle = UrlHelper.NormalizeTextForUrl(title); var propertyName = itemDataModel.PropertyName; object o = new { title = normalizedTitle, moduleId }; if (isPrivate) { o = new { title = normalizedTitle, moduleId, @private = "privee" }; } var urlInfo = await urlProvider.GetUrlAsync(currentRequest, "Index", moduleName, o); var menuItem = new MenuItemBusiness(); menuItem.Title = title; menuItem.RouteDatas = GetRouteData("Index", moduleName, normalizedTitle, moduleId, propertyName); menuItem.Url = urlInfo.Path; menuItem.RoutePath = urlInfo.RoutePath; menuItem.RoutePathWithoutHomePage = urlInfo.RoutePathWithoutHomePage; menuItem.Route = urlInfo.Route; menuItem.ModuleId = moduleId; menuItem.ModuleName = moduleName; menuItem.Icon = freeBusinessModel.Icon; menuItem.State = itemDataModel.State; menuItem.Seo = new SeoBusiness(); menuItem.Seo.UpdateDate = itemDataModel.UpdateDate.HasValue ? itemDataModel.UpdateDate.Value : itemDataModel.CreateDate; menuItem.Seo.SitemapFrequence = SitemapFrequence.Weekly; menuItem.Seo.SocialImageUrl = FreeBusinessModule.GetFirstImageUrl(itemDataModel.SiteId, freeBusinessModel); var metaKeywords = elements.FirstOrDefault(e => e.Property == "MetaKeyword"); if (metaKeywords != null) { elements.Remove(metaKeywords); } // TODO calculer en automatique menuItem.Seo.MetaKeyword = ""; menuItem.Seo.MetaDescription = FreeBusinessModule.GetMetaDescription(elements); return(menuItem); }
public override async Task GetInfoAsync(GeMenuItemInput geMenuItemInput) { if (geMenuItemInput.IsSitemap) { return; } var itemDataModel = geMenuItemInput.ItemDataModel; var moduleId = itemDataModel.Id; var currentRequest = geMenuItemInput.CurrentRequest; var moduleSocial = (SocialBusinessModel)geMenuItemInput.ItemDataModel.Data; string title; if (string.IsNullOrEmpty(moduleSocial.Title)) { switch (moduleSocial.Socials) { case Socials.Phone: title = moduleSocial.Url; break; case Socials.Email: title = moduleSocial.Url; break; default: title = moduleSocial.Socials.ToString(); break; } } else { title = moduleSocial.Title; } var normalizedTitle = UrlHelper.NormalizeTextForUrl(title); var isPrivate = NewsItemBusinessModule.IsPrivate(itemDataModel.PropertyName); object o = new { title = normalizedTitle, moduleId }; if (isPrivate) { o = new { title = normalizedTitle, moduleId, @private = "privee" }; } var urlInfo = await _urlProvider.GetUrlAsync(currentRequest, "Index", ModuleName, o); var menuItem = new MenuItemBusiness(); menuItem.Title = title; menuItem.RouteDatas = NewsItemBusinessModule.GetRouteData(moduleSocial.Socials.ToString(), ModuleName, normalizedTitle, moduleId, itemDataModel.PropertyName); menuItem.TypeMenuItem = TypeMenuItem.Link; string socialUrl = String.IsNullOrEmpty(moduleSocial.Url) ? "#" : moduleSocial.Url; string url = null; if (moduleSocial.Socials == Socials.Phone) { url = "tel:" + socialUrl; } else if (moduleSocial.Socials == Socials.Phone) { url = "mailto:" + socialUrl; } else { url = socialUrl; } menuItem.Url = url; menuItem.RoutePath = url; menuItem.RoutePathWithoutHomePage = urlInfo.RoutePathWithoutHomePage; menuItem.ModuleId = itemDataModel.Id; menuItem.ModuleName = ModuleName; ModuleManager.Add(geMenuItemInput.Master, itemDataModel.PropertyName, menuItem, itemDataModel.PropertyType); }