public ApplicationPath GetEditPath(EntityReference entity)
        {
            if (entity == null || _requestContext == null)
            {
                return(null);
            }

            var website = GetWebsite();

            if (website == null)
            {
                return(null);
            }

            try
            {
                var pathData = RouteTable.Routes.GetVirtualPath(_requestContext, typeof(CmsEntityRouteHandler).FullName, new RouteValueDictionary
                {
                    { "__portalScopeId__", website.Id.ToString() },
                    { "entityLogicalName", entity.LogicalName },
                    { "id", entity.Id.ToString() },
                });

                return(pathData == null ? null : ApplicationPath.FromAbsolutePath(VirtualPathUtility.ToAbsolute(pathData.VirtualPath)));
            }
            catch (ArgumentException)
            {
                return(null);
            }
        }
Beispiel #2
0
        private ApplicationPath GetCategoryApplicationPath(OrganizationServiceContext context, Entity article)
        {
            article.AssertEntityName("category");

            var number = article.GetAttributeValue <string>("categorynumber");

            if (string.IsNullOrEmpty(number))
            {
                return(null);
            }

            var httpContext = HttpContext.Current;

            if (httpContext == null)
            {
                return(null);
            }

            var httpContextWrapper = new HttpContextWrapper(HttpContext.Current);
            var routeData          = RouteTable.Routes.GetRouteData(httpContextWrapper);

            if (routeData == null)
            {
                return(null);
            }

            var urlHelper = new UrlHelper(new RequestContext(httpContextWrapper, routeData));

            var url = urlHelper.Action("Index", "Category", new { number = number, area = "Category" });

            return(url == null ? null : ApplicationPath.FromAbsolutePath(url));
        }
        public ApplicationPath GetBlogAggregationFeedPath()
        {
            var requestContext = GetRequestContext();

            if (requestContext == null)
            {
                return(null);
            }

            var virtualPath = RouteTable.Routes.GetVirtualPath(requestContext, typeof(WebsiteBlogAggregationFeedRouteHandler).FullName, new RouteValueDictionary
            {
                { "__portalScopeId__", _website.Id }
            });

            return(virtualPath == null ? null : ApplicationPath.FromAbsolutePath(VirtualPathUtility.ToAbsolute(virtualPath.VirtualPath)));
        }
Beispiel #4
0
        private ApplicationPath GetIssueApplicationPath(OrganizationServiceContext context, Entity issue)
        {
            issue.AssertEntityName("adx_issue");

            var httpContext = HttpContext.Current;

            if (httpContext == null)
            {
                return(null);
            }

            var partialUrl = issue.GetAttributeValue <string>("adx_partialurl");

            if (string.IsNullOrEmpty(partialUrl))
            {
                return(null);
            }

            var forum = issue.GetRelatedEntity(context, new Relationship("adx_issueforum_issue"));

            if (forum == null)
            {
                return(null);
            }

            var forumPartialUrl = forum.GetAttributeValue <string>("adx_partialurl");

            if (string.IsNullOrEmpty(forumPartialUrl))
            {
                return(null);
            }

            var httpContextWrapper = new HttpContextWrapper(HttpContext.Current);
            var routeData          = RouteTable.Routes.GetRouteData(httpContextWrapper);

            if (routeData == null)
            {
                return(null);
            }

            var urlHelper = new UrlHelper(new RequestContext(httpContextWrapper, routeData));

            var url = urlHelper.Action("Issues", "Issues", new { issueForumPartialUrl = forumPartialUrl, issuePartialUrl = partialUrl, area = "Issues" });

            return(url == null ? null : ApplicationPath.FromAbsolutePath(url));
        }
Beispiel #5
0
        private ApplicationPath GetIdeaForumApplicationPath(OrganizationServiceContext context, Entity ideaForum)
        {
            ideaForum.AssertEntityName("adx_ideaforum");

            var httpContext = HttpContext.Current;

            if (httpContext == null)
            {
                return(null);
            }

            var partialUrl = ideaForum.GetAttributeValue <string>("adx_partialurl");

            if (string.IsNullOrEmpty(partialUrl))
            {
                return(null);
            }

            var httpContextWrapper = new HttpContextWrapper(HttpContext.Current);

            var routeData = RouteTable.Routes.GetRouteData(httpContextWrapper);

            if (routeData == null)
            {
                return(null);
            }

            var urlHelper = new UrlHelper(new RequestContext(httpContextWrapper, routeData));

            // If multi-language is enabled, return URL using in approriate multi-language URL format.
            var    contextLanguageInfo = HttpContext.Current.GetContextLanguageInfo();
            string url = string.Empty;

            if (contextLanguageInfo.IsCrmMultiLanguageEnabled && ContextLanguageInfo.DisplayLanguageCodeInUrl)
            {
                url = string.Format("{0}{1}", httpContext.Request.Url.GetLeftPart(UriPartial.Authority), urlHelper.Action("Ideas", "Ideas", new { ideaForumPartialUrl = partialUrl, area = "Ideas" }));
                url = contextLanguageInfo.FormatUrlWithLanguage(false, contextLanguageInfo.ContextLanguage.Code, new Uri(url));
            }
            else
            {
                url = urlHelper.Action("Ideas", "Ideas", new { ideaForumPartialUrl = partialUrl, area = "Ideas" });
            }

            return(url == null ? null : ApplicationPath.FromAbsolutePath(url));
        }
        /// <summary>
        /// Retrieve the path to emit that will download an attached file from the website.
        /// </summary>
        public static ApplicationPath GetFileAttachmentPath(this Entity entity, Guid?websiteId = null)
        {
            if (entity == null)
            {
                return(null);
            }

            var http = HttpContext.Current;

            if (http == null)
            {
                return(null);
            }

            var requestContext = new RequestContext(new HttpContextWrapper(http), new RouteData());

            VirtualPathData virtualPath;

            if (websiteId == null)
            {
                virtualPath = RouteTable.Routes.GetVirtualPath(requestContext, typeof(EntityRouteHandler).FullName,
                                                               new RouteValueDictionary
                {
                    { "prefix", "_entity" },
                    { "logicalName", entity.LogicalName },
                    { "id", entity.Id }
                });
            }
            else
            {
                virtualPath = RouteTable.Routes.GetVirtualPath(requestContext, typeof(EntityRouteHandler).FullName + "PortalScoped", new RouteValueDictionary
                {
                    { "prefix", "_entity" },
                    { "logicalName", entity.LogicalName },
                    { "id", entity.Id },
                    { "__portalScopeId__", websiteId }
                });
            }

            return(virtualPath == null
                                ? null
                                : ApplicationPath.FromAbsolutePath(VirtualPathUtility.ToAbsolute(virtualPath.VirtualPath)));
        }
Beispiel #7
0
        private ApplicationPath GetIncidentApplicationPath(OrganizationServiceContext context, Entity incident)
        {
            incident.AssertEntityName("incident");

            var portalContext = PortalCrmConfigurationManager.CreatePortalContext(PortalName);

            if (portalContext == null || portalContext.Website == null)
            {
                return(null);
            }

            var website = context.CreateQuery("adx_website")
                          .FirstOrDefault(w => w.GetAttributeValue <Guid>("adx_websiteid") == portalContext.Website.Id);

            if (website == null)
            {
                return(null);
            }

            var page = context.GetPageBySiteMarkerName(website, "Case");

            if (page == null)
            {
                return(null);
            }

            var pagePath = GetApplicationPath(context, page);

            if (pagePath == null)
            {
                return(null);
            }

            var incidentUrl = new UrlBuilder(pagePath.AbsolutePath);

            incidentUrl.QueryString.Set("caseid", incident.Id.ToString());

            return(ApplicationPath.FromAbsolutePath(incidentUrl.PathWithQueryString));
        }
Beispiel #8
0
        private ApplicationPath GetKnowledgeArticleApplicationPath(OrganizationServiceContext context, Entity article)
        {
            article.AssertEntityName("knowledgearticle");

            var number = article.GetAttributeValue <string>("articlepublicnumber");

            if (string.IsNullOrEmpty(number))
            {
                return(null);
            }

            var httpContext = HttpContext.Current;

            if (httpContext == null)
            {
                return(null);
            }

            var httpContextWrapper = new HttpContextWrapper(HttpContext.Current);
            var routeData          = RouteTable.Routes.GetRouteData(httpContextWrapper);

            if (routeData == null)
            {
                return(null);
            }

            var urlHelper = new UrlHelper(new RequestContext(httpContextWrapper, routeData));

            var languageLocaleCode = article.Contains("language_locale.code") ? article.GetAttributeValue <AliasedValue>("language_locale.code").Value as string : null;

            if (string.IsNullOrWhiteSpace(languageLocaleCode))
            {
                var localeid = article.GetAttributeValue <EntityReference>("languagelocaleid");
                if (localeid != null)
                {
                    var locale = context.CreateQuery("languagelocale").FirstOrDefault(lang => lang.GetAttributeValue <Guid>("languagelocaleid") == localeid.Id);
                    if (locale != null)
                    {
                        languageLocaleCode = locale.GetAttributeValue <string>("code");
                    }
                }
            }

            // If multi-language is enabled, return URL using in approriate multi-language URL format.
            var    contextLanguageInfo = HttpContext.Current.GetContextLanguageInfo();
            string url = string.Empty;

            if (contextLanguageInfo.IsCrmMultiLanguageEnabled && ContextLanguageInfo.DisplayLanguageCodeInUrl)
            {
                var actionUrl = urlHelper.Action("Article", "Article", new { number = number, area = "KnowledgeManagement" });

                // if actionUrl is null, ex: deactivated root page.
                if (actionUrl == null)
                {
                    return(null);
                }

                url = string.Format("{0}{1}", httpContext.Request.Url.GetLeftPart(UriPartial.Authority), actionUrl);
                url = contextLanguageInfo.FormatUrlWithLanguage(false, languageLocaleCode, new Uri(url));
            }
            else
            {
                url = urlHelper.Action("Article", "Article", new { number = number, lang = languageLocaleCode, area = "KnowledgeManagement" });
            }

            return(url == null ? null : ApplicationPath.FromAbsolutePath(url));
        }