Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }