private ApplicationPath GetApplicationPathForSiteMarker(ContentMap contentMap, WebsiteNode website, IDictionary cache) { return(GetApplicationPathForSiteMarker(cache, () => { var siteMarkerNode = website.SiteMarkers .FirstOrDefault(e => string.Equals(e.Name, SiteMarker, StringComparison.Ordinal)); if (siteMarkerNode == null || siteMarkerNode.WebPage == null || siteMarkerNode.WebPage.IsReference) { return null; } var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName) .GetDependency <IContentMapEntityUrlProvider>(); try { return urlProvider.GetApplicationPath(contentMap, siteMarkerNode.WebPage); } catch (InvalidOperationException) { return null; } })); }
protected void AssertStateTransitionIsValid(OrganizationServiceContext context, Entity entity, UpdateOperations operations) { // This is not an update of an existing entity (may be Add, or Delete) -- nothing to check. if (operations != UpdateOperations.Change) { return; } var response = (RetrieveResponse)context.Execute(new RetrieveRequest { Target = new EntityReference(entity.LogicalName, entity.Id), ColumnSet = new ColumnSet("adx_publishingstateid") }); var preUpdateEntity = response.Entity; // Publishing state has not changed -- nothing to check. if (entity.GetAttributeValue <EntityReference>("adx_publishingstateid") == preUpdateEntity.GetAttributeValue <EntityReference>("adx_publishingstateid")) { return; } var portalContext = PortalCrmConfigurationManager.CreatePortalContext(PortalName); var transitionSecurityProvider = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IPublishingStateTransitionSecurityProvider>(); transitionSecurityProvider.Assert( context, portalContext.Website, preUpdateEntity.GetAttributeValue <EntityReference>("adx_publishingstateid") == null ? Guid.Empty : preUpdateEntity.GetAttributeValue <EntityReference>("adx_publishingstateid").Id, entity.GetAttributeValue <EntityReference>("adx_publishingstateid") == null ? Guid.Empty : entity.GetAttributeValue <EntityReference>("adx_publishingstateid").Id); }
protected virtual void CreateControlsForInlineEditing(Entity entity, string propertyName, string value) { var editablePropertyCssClass = "xrm-attribute xrm-editable-{0}".FormatWith(EditType.ToLowerInvariant()); CssClass = string.IsNullOrEmpty(CssClass) ? editablePropertyCssClass : "{0} {1}".FormatWith(CssClass, editablePropertyCssClass); var valueContainer = new HtmlGenericControl(TagName) { InnerHtml = value }; valueContainer.Attributes["class"] = "xrm-attribute-value"; Controls.Add(valueContainer); if (entity == null || string.IsNullOrEmpty(propertyName)) { return; } if (HasEditPermission(entity)) { var metadataProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICrmEntityEditingMetadataProvider>(); metadataProvider.AddAttributeMetadata(PortalName, this, this, entity, propertyName, GetEditDisplayName(entity, propertyName)); this.RegisterClientSideDependencies(); } }
protected CrmSiteMapNode GetWebPageNode(OrganizationServiceContext context, Entity page, HttpStatusCode statusCode, Func <Entity, string> getRewriteUrl) { var contentFormatter = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICrmEntityContentFormatter>(GetType().FullName) ?? new PassthroughCrmEntityContentFormatter(); var rewriteUrl = getRewriteUrl(page); var url = context.GetUrl(page); var title = page.GetAttributeValue <string>("adx_title"); // apply a detached clone of the entity since the SiteMapNode is out of the scope of the current OrganizationServiceContext var pageClone = page.Clone(false); return(new CrmSiteMapNode( this, url, url, contentFormatter.Format(string.IsNullOrEmpty(title) ? page.GetAttributeValue <string>("adx_name") : title, page, this), contentFormatter.Format(page.GetAttributeValue <string>("adx_summary"), page, this), rewriteUrl, page.GetAttributeValue <DateTime?>("modifiedon").GetValueOrDefault(DateTime.UtcNow), pageClone, statusCode)); }
protected void AddSiteMapNodeMetadataForEntity(string portalName, IEditableCrmEntityControl control, Control container, Entity entity) { var serviceContext = PortalCrmConfigurationManager.CreateServiceContext(portalName); var metadata = ((RetrieveEntityResponse)serviceContext.Execute(new RetrieveEntityRequest { EntityFilters = EntityFilters.Entity, LogicalName = entity.LogicalName })).EntityMetadata; var refetchedEntity = serviceContext.CreateQuery(entity.LogicalName).FirstOrDefault(e => e.GetAttributeValue <Guid>(metadata.PrimaryIdAttribute) == entity.Id); var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <IEntityUrlProvider>(); if (refetchedEntity != null) { var entityPath = urlProvider.GetApplicationPath(serviceContext, refetchedEntity); if (entityPath != null && entityPath.AbsolutePath != null) { var node = SiteMap.Provider.FindSiteMapNode(entityPath.AbsolutePath); if (node != null) { AddCssClass(container, "xrm-editable-sitemapchildren"); AddSiteMapNodeMetadata(portalName, control, container, node, false); } } } }
/// <summary>Get the article rul.</summary> /// <returns>The article url.</returns> private string GetUrl() { var serviceContext = PortalCrmConfigurationManager.CreateServiceContext(); var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IEntityUrlProvider>(); return(urlProvider.GetUrl(serviceContext, this.Entity)); }
public void RenderEditingMetadata(string entityLogicalName, TagBuilder tag, string description = null, JObject initialValues = null) { var metadataProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICmsEntityEditingMetadataProvider>(); metadataProvider.AddEntityMetadata(new TagBuilderCmsEntityEditingMetadataContainer(tag), entityLogicalName, PortalName, description, initialValues); _enableEditing = true; }
public ActionResult Index(string number) { OrganizationServiceContext serviceContext = PortalCrmConfigurationManager.CreateServiceContext(); var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(); var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IEntityUrlProvider>(); return(this.GetIndexView(number, serviceContext, securityProvider, urlProvider)); }
public PortalConfigurationDataAdapterDependencies(string portalName = null, RequestContext requestContext = null) : base( PortalCrmConfigurationManager.CreateServiceContext(portalName), PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName), PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <IEntityUrlProvider>(), PortalCrmConfigurationManager.CreatePortalContext(portalName, requestContext)) { PortalName = portalName; }
public PortalContextDataAdapterDependencies(IPortalContext portalContext, string portalName = null, RequestContext requestContext = null) : base( portalContext.ServiceContext, PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName), PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <IEntityUrlProvider>(), portalContext, requestContext) { }
public void RenderEditingMetadata(IPortalViewAttribute attribute, TagBuilder tag, string description = null) { var metadataProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICmsEntityEditingMetadataProvider>(); metadataProvider.AddAttributeMetadata(new TagBuilderCmsEntityEditingMetadataContainer(tag), attribute.EntityReference, attribute.LogicalName, description ?? attribute.Description, PortalName); _enableEditing = true; }
protected override void PerformDataBinding(IEnumerable data) { base.PerformDataBinding(data); var dataObject = GetDataObject(data); var entity = dataObject as Entity; // The extracted data item is not an Entity, go down non-entity path. if (entity == null) { PerformDataBindingOfNonCrmEntity(dataObject); return; } // No property name provided, bind directly against the entity itself. if (string.IsNullOrEmpty(PropertyName)) { PerformDataBindingOfCrmEntity(entity); return; } var property = GetAttributeValue(entity, PropertyName.Split(',')); // No property was found. if (property == null) { PerformDataBindingOfCrmEntityProperty(entity, null, null); return; } // Property was found, but none of the property fallbacks had a non-null value. if (property.Value == null) { PerformDataBindingOfCrmEntityProperty(entity, property.Name, null); return; } var textValue = (Format ?? "{0}").FormatWith(property.Value); var contentFormatter = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency<ICrmEntityContentFormatter>(GetType().FullName); if (contentFormatter != null) { textValue = contentFormatter.Format(textValue, entity, this); } if (HtmlEncode) { textValue = HttpUtility.HtmlEncode(textValue); } PerformDataBindingOfCrmEntityProperty(entity, property.Name, textValue); }
public static IQueryable <TEntity> InterceptQuery <TEntity>(this OrganizationServiceContext context, IQueryable <TEntity> queryable) where TEntity : Entity { // TODO: make the portalName configurable string portalName = null; var provider = PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <ICmsDataServiceQueryInterceptorProvider>(); var interceptor = provider.GetInterceptor(); return(interceptor.InterceptQuery(context, queryable)); }
public WebsiteDataAdapterDependencies(OrganizationServiceContext serviceContext, Entity website, IPortalContext portalContext, string portalName = null) : base( serviceContext, PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(portalName), PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <IEntityUrlProvider>(), website.ToEntityReference(), portalContext.User == null ? null : portalContext.User.ToEntityReference()) { PortalName = portalName; }
protected override IPortalContext OnPortalLoaded(RequestContext requestContext, IPortalContext portal) { if (portal == null) { throw new ArgumentNullException("portal"); } if (portal.Entity != null && _redirectedEntities.Contains(portal.Entity.LogicalName)) { // Check if we need to follow any rules with regards to Language Code prefix in URL (only applies if multi-language is enabled) var contextLanguageInfo = requestContext.HttpContext.GetContextLanguageInfo(); if (contextLanguageInfo.IsCrmMultiLanguageEnabled) { bool needRedirect = requestContext.HttpContext.Request.HttpMethod == WebRequestMethods.Http.Get && ((ContextLanguageInfo.DisplayLanguageCodeInUrl != contextLanguageInfo.RequestUrlHasLanguageCode) || contextLanguageInfo.ContextLanguage.UsedAsFallback); if (needRedirect) { string redirectPath = contextLanguageInfo.FormatUrlWithLanguage(); ADXTrace.Instance.TraceInfo(TraceCategory.Monitoring, "OnPortalLoaded redirecting(1)"); requestContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.Redirect; requestContext.HttpContext.Response.RedirectLocation = redirectPath; requestContext.HttpContext.Response.End(); return(null); } } } var isInvalidNode = (portal.Entity == null || portal.Path == null); // If the node is null, isn't a CrmSiteMapNode, has no rewrite path, or is a 404, try other options. if (isInvalidNode || portal.StatusCode == HttpStatusCode.NotFound) { var redirectProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <IRedirectProvider>(); var context = requestContext.HttpContext; var clientUrl = new UrlBuilder(context.Request.Url); // Try matching user-defined redirects, and URL history--in that order. var redirectMatch = redirectProvider.Match(portal.Website.Id, clientUrl); // If we have a successful match, redirect. if (redirectMatch.Success) { ADXTrace.Instance.TraceInfo(TraceCategory.Monitoring, "OnPortalLoaded redirecting(2)"); context.Trace.Write(GetType().FullName, @"Redirecting path ""{0}"" to ""{1}""".FormatWith(clientUrl.Path, redirectMatch.Location)); context.Response.StatusCode = (int)redirectMatch.StatusCode; context.Response.RedirectLocation = redirectMatch.Location; context.Response.End(); return(null); } } return(base.OnPortalLoaded(requestContext, portal)); }
private IFileSystem CreateFileSystem() { var contentMapProvider = AdxstudioCrmConfigurationManager.CreateContentMapProvider(); var contentMapUrlProvider = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IContentMapEntityUrlProvider>(); var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext); return(contentMapProvider == null || contentMapUrlProvider == null ? (IFileSystem) new EntityFileSystem(dataAdapterDependencies) : new ContentMapFileSystem(contentMapProvider, contentMapUrlProvider, dataAdapterDependencies)); }
public void RenderEditingMetadata(IPortalViewEntity entity, TagBuilder tag) { var metadataProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICmsEntityEditingMetadataProvider>(); // If the entity is Weblinkset and a display name was given, show that otherwise use entity description (name) string displayName = entity is IWebLinkSet && ((IWebLinkSet)entity).DisplayName != null ? ((IWebLinkSet)entity).DisplayName : entity.Description; metadataProvider.AddEntityMetadata(new TagBuilderCmsEntityEditingMetadataContainer(tag), entity.EntityReference, PortalName, displayName); _enableEditing = true; }
private IQueryable <TEntity> FilterByTransitionalRulesAllowed <TEntity>(OrganizationServiceContext context, IQueryable <TEntity> queryable, CrmEntityRight right, Guid fromStateID) where TEntity : Entity { var transitionProvider = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IPublishingStateTransitionSecurityProvider>(); var website = context.CreateQuery("adx_website").First(ws => ws.GetAttributeValue <Guid?>("adx_websiteid") == _website.Id); var query = queryable.ToList().Where(e => transitionProvider.TryAssert(context, website, fromStateID, e.GetAttributeValue <EntityReference>("adx_publishingstateid") == null ? Guid.Empty : e.GetAttributeValue <EntityReference>("adx_publishingstateid").Id)).AsQueryable(); return(FilterByWebsiteAndSecurity(context, query, CrmEntityRight.Read)); }
public IPortalViewEntity GetEntity(OrganizationServiceContext serviceContext, Entity entity) { if (entity == null) { return(null); } var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(PortalName); var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <IEntityUrlProvider>(); return(new PortalViewEntity(serviceContext, entity, securityProvider, urlProvider)); }
public virtual void ProcessRequest(HttpContext context) { if (context == null) { throw new ArgumentNullException("context"); } try { context.Response.Cache.SetCacheability(HttpCacheability.NoCache); Guid parsedPortalScopeId; var portalScopeId = PortalScopeId ?? (Guid.TryParse(context.Request.Params["__portalScopeId__"], out parsedPortalScopeId) ? new Guid?(parsedPortalScopeId) : null); if (portalScopeId == null) { throw new CmsEntityServiceException(HttpStatusCode.BadRequest, "Unable to determine portal scope ID from request."); } var entityLogicalName = string.IsNullOrWhiteSpace(EntityLogicalName) ? context.Request.Params["entityLogicalName"] : EntityLogicalName; if (string.IsNullOrWhiteSpace(entityLogicalName)) { throw new CmsEntityServiceException(HttpStatusCode.BadRequest, "Unable to determine entity logical name from request."); } var serviceProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICmsEntityServiceProvider>(); if (serviceProvider == null) { throw new CmsEntityServiceException(HttpStatusCode.InternalServerError, "Unable to get dependency {0}. Please check the configured portal dependency provider.".FormatWith(typeof(ICmsEntityServiceProvider).FullName)); } var portal = PortalCrmConfigurationManager.CreatePortalContext(PortalName, context.Request.RequestContext); var serviceContext = CreateServiceContext(); ProcessRequest(context, serviceProvider, portalScopeId.Value, portal, serviceContext, entityLogicalName); } catch (CmsEntityServiceException e) { ADXTrace.Instance.TraceError(TraceCategory.Application, e.ToString()); WriteErrorResponse(context.Response, e.StatusCode, e); } catch (Exception e) { ADXTrace.Instance.TraceError(TraceCategory.Application, e.ToString()); WriteErrorResponse(context.Response, HttpStatusCode.InternalServerError, e); } }
public void RegisterClientSideDependencies(WebControl control) { RegisterScripts(control, DependencyScripts); AddStyleReferencesToPage(control.Page, DependencyStyles); var provider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <IRegisterClientSideDependenciesProvider>(); provider.Register(control); RegisterScripts(control, ExtensionScripts); AddStyleReferencesToPage(control.Page, ExtensionStyles); }
protected override void PerformDataBindingOfCrmEntity(Entity entity) { CssClass = GetCssClass(entity); Attributes["style"] = "display:none;"; if (HasEditPermission(entity)) { var metadataProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICrmEntityEditingMetadataProvider>(); metadataProvider.AddEntityMetadata(PortalName, this, this, entity); this.RegisterClientSideDependencies(); } }
public ActionResult Index(string number) { var serviceContext = PortalCrmConfigurationManager.CreateServiceContext(); var kbarticle = serviceContext.CreateQuery("kbarticle") .FirstOrDefault(e => e.GetAttributeValue <string>("number") == number); if (kbarticle == null) { ADXTrace.Instance.TraceWarning(TraceCategory.Application, "User Config issue:Knowledge base article not found exception by Article number"); return(HttpNotFound(ResourceManager.GetString("Knowledge_Base_Article_Not_Found_Exception").FormatWith(number))); } var securityProvider = PortalCrmConfigurationManager.CreateCrmEntitySecurityProvider(); if (!securityProvider.TryAssert(serviceContext, kbarticle, CrmEntityRight.Read)) { ADXTrace.Instance.TraceWarning(TraceCategory.Application, "User Config issue:Knowledge Base Article: No read permission by Article number"); return(HttpNotFound(ResourceManager.GetString("Knowledge_Base_Article_Not_Found_Exception").FormatWith(number))); } var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider().GetDependency <IEntityUrlProvider>(); var adx_kbarticle_kbarticle = kbarticle.GetRelatedEntities(serviceContext, new Relationship("adx_kbarticle_kbarticle") { PrimaryEntityRole = EntityRole.Referenced }); var relatedArticles = adx_kbarticle_kbarticle .Where(e => securityProvider.TryAssert(serviceContext, e, CrmEntityRight.Read)) .Select(e => new { Title = e.GetAttributeValue <string>("title"), Url = urlProvider.GetUrl(serviceContext, e) }) .Where(e => !(string.IsNullOrEmpty(e.Title) || string.IsNullOrEmpty(e.Url))) .Select(e => new RelatedArticle(e.Title, e.Url)) .OrderBy(e => e.Title); //Log Customer Journey Tracking if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.CustomerJourneyTracking)) { PortalTrackingTrace.TraceInstance.Log(Constants.Article, kbarticle.Id.ToString(), kbarticle.GetAttributeValue <string>("title")); } return(View(new ArticleViewModel(kbarticle, relatedArticles))); }
protected override void OnPreRender(EventArgs args) { if (!string.IsNullOrEmpty(SiteMarkerName)) { var portalViewContext = new PortalViewContext( new PortalContextDataAdapterDependencies( PortalCrmConfigurationManager.CreatePortalContext(PortalName), PortalName, Context.Request.RequestContext)); var target = portalViewContext.SiteMarkers.Select(SiteMarkerName); if (target != null) { NavigateUrl = new UrlBuilder(target.Url); if (string.IsNullOrEmpty(Text) && Controls.Count == 0) { var contentFormatter = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICrmEntityContentFormatter>(GetType().FullName) ?? new PassthroughCrmEntityContentFormatter(); Text = contentFormatter.Format(target.Entity.GetAttributeValue <string>("adx_name"), target.Entity, this); } } else if (AutoHiddenIfAbsent ?? true) { Visible = false; } } if (!string.IsNullOrEmpty(QueryString)) { // we need to append these querystring parameters if (!NavigateUrl.Contains("?")) { NavigateUrl += "?"; } if (!NavigateUrl.EndsWith("?")) { NavigateUrl += "&"; } NavigateUrl += QueryString; } }
public ICrmEntitySearchResultPage Search(ICrmEntityQuery query) { var portal = PortalCrmConfigurationManager.CreatePortalContext(_portalName); var serviceContext = PortalCrmConfigurationManager.CreateServiceContext(_portalName); var dependencyProvider = PortalCrmConfigurationManager.CreateDependencyProvider(_portalName); var security = GetSecurityAssertion(_portalName); var metadataCache = new Dictionary <string, EntityMetadata>(); var paginator = new TopPaginator <ICrmEntitySearchResult>( query.PageSize, top => GetTopSearchResults(top, query, serviceContext, portal, security, dependencyProvider, entityName => GetEntityMetadata(serviceContext, entityName, metadataCache)), result => result != null); var results = paginator.GetPage(query.PageNumber); return(new CrmEntitySearchResultPage(results, results.TotalUnfilteredItems, query.PageNumber, query.PageSize)); }
public virtual void AttachFilesToEntity(OrganizationServiceContext context, string entitySet, Guid entityID, IEnumerable <HttpPostedFile> files) { var entity = GetServiceOperationEntityByID(context, entitySet, entityID); AssertCrmEntityChangeAccess(context, entity); var fileAttachmentProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICrmEntityFileAttachmentProvider>(); if (fileAttachmentProvider == null) { throw new DataServiceException(500, "Unable to retrieve configured ICrmEntityFileAttachmentProvider dependency."); } foreach (var file in files) { fileAttachmentProvider.AttachFile(context, entity, file); } }
private CrmSiteMapNode GetWebFileNode(OrganizationServiceContext serviceContext, Entity file, HttpStatusCode statusCode) { if (file == null) { return(null); } var url = OrganizationServiceContextExtensions.GetUrl(serviceContext, file); var name = file.GetAttributeValue <string>("adx_name"); var summary = file.GetAttributeValue <string>("adx_summary"); var fileAttachmentProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICrmEntityFileAttachmentProvider>(); var attachmentInfo = fileAttachmentProvider.GetAttachmentInfo(serviceContext, file).FirstOrDefault(); // apply a detached clone of the entity since the SiteMapNode is out of the scope of the current OrganizationServiceContext var fileClone = file.Clone(false); // If there's no file attached to the webfile, return a NotFound node with no rewrite path. if (attachmentInfo == null) { return(new CrmSiteMapNode( this, url, url, name, summary, null, file.GetAttributeValue <DateTime?>("modifiedon").GetValueOrDefault(DateTime.UtcNow), fileClone, HttpStatusCode.NotFound)); } return(new CrmSiteMapNode( this, url, url, name, summary, attachmentInfo.Url, attachmentInfo.LastModified.GetValueOrDefault(DateTime.UtcNow), file, statusCode)); }
private bool TryGetWebsite(ContentMap map, out WebsiteNode site, out IContentMapEntityUrlProvider urlProvider) { urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <IContentMapEntityUrlProvider>(); if (urlProvider == null) { site = null; return(false); } var portal = PortalContext; var website = portal.Website; if (!map.TryGetValue(website, out site)) { return(false); } return(true); }
public virtual string GetRedirectWebPageUrl(IPortalContext context, string portalName = null) { if (context == null || RedirectWebpageId == null || RedirectWebpageId == Guid.Empty) { return(null); } var contentMapProvider = AdxstudioCrmConfigurationManager.CreateContentMapProvider(portalName); var page = contentMapProvider.Using(contentMap => Select(RedirectWebpageId.GetValueOrDefault(), contentMap)); if (page == null) { return(null); } var urlProvider = PortalCrmConfigurationManager.CreateDependencyProvider(portalName).GetDependency <IContentMapEntityUrlProvider>(); return(contentMapProvider.Using(contentMap => urlProvider.GetUrl(contentMap, page))); }
protected override void OnPreRender(EventArgs args) { if (!string.IsNullOrEmpty(SiteMarkerName)) { var portal = PortalCrmConfigurationManager.CreatePortalContext(PortalName); var context = portal.ServiceContext; var website = portal.Website; var page = context.GetPageBySiteMarkerName(website, SiteMarkerName); if (page != null) { page.AssertEntityName("adx_webpage"); NavigateUrl = portal.ServiceContext.GetUrl(page); if (string.IsNullOrEmpty(Text) && Controls.Count == 0) { var contentFormatter = PortalCrmConfigurationManager.CreateDependencyProvider(PortalName).GetDependency <ICrmEntityContentFormatter>(GetType().FullName) ?? new PassthroughCrmEntityContentFormatter(); Text = contentFormatter.Format(page.GetAttributeValue <string>("adx_name"), page, this); } } } if (!string.IsNullOrEmpty(QueryString)) { // we need to append these querystring parameters if (!NavigateUrl.Contains("?")) { NavigateUrl += "?"; } if (!NavigateUrl.EndsWith("?")) { NavigateUrl += "&"; } NavigateUrl += QueryString; } }