Ejemplo n.º 1
0
        public PermalinkResponse GeneratePermalink(PermalinkRequest request)
        {
            var site = GetSite(new SiteRequest()
            {
                SiteID = request.SiteID, IncludeSiteContents = true
            });
            var slug      = request.Title.Slugify();
            var permalink = site.ApplicationRootPath.TrimEnd('/');

            if (string.IsNullOrWhiteSpace(slug))
            {
                throw new Exception("Invalid Title.  Cannot produce slug.");
            }

            if (request.SiteContentParentID > 0)
            {
                var parent = site.SiteContents.FirstOrDefault(s => s.SiteContentID == request.SiteContentParentID);

                if (parent != null)
                {
                    permalink = parent.Permalink;
                }
            }

            // 'Namespace' the permalink to help reduce collisions
            switch ((ContentType)request.SiteContentTypeID)
            {
            case ContentType.File:
                permalink += "/file";
                break;
            }

            if (!permalink.EndsWith("/"))
            {
                permalink += "/";
            }

            permalink += slug;

            // Validate Permalink's uniqueness
            var version  = 0;
            var original = permalink;

            while (true)
            {
                var exists = site.SiteContents.Any(s => s.Permalink.Equals(permalink, StringComparison.InvariantCultureIgnoreCase) && s.Status != ContentStatus.Removed);

                if (!exists)
                {
                    break;
                }

                permalink = original + "-" + ++version;
            }

            return(new PermalinkResponse()
            {
                FullUrl = string.Concat("https://", site.DomainName, permalink),
                Slug = slug,
                Permalink = permalink
            });
        }
Ejemplo n.º 2
0
        public PermalinkResponse GeneratePermalink(PermalinkRequest request)
        {
            var proxy = _cmsService.CreateProxy();

            return(proxy.GeneratePermalink(request));
        }
Ejemplo n.º 3
0
 public PermalinkResponse GeneratePermalink([FromUri] PermalinkRequest request)
 {
     return(_cmsService.GeneratePermalink(request));
 }