示例#1
0
        protected void CreateThread_Click(object sender, EventArgs args)
        {
            if (!Page.IsValid)
            {
                return;
            }

            var thread = CreateThread();

            if (NewForumThreadSubscribe.Checked)
            {
                var threadDataAdapter = new ForumThreadDataAdapter(thread, CreateForumDataAdapterDependencies());

                threadDataAdapter.CreateAlert(thread.Author.EntityReference);
            }

            Response.Redirect(thread.Url);
        }
        public ForumPostsDrop(IPortalLiquidContext portalLiquidContext,
                              IDataAdapterDependencies dependencies,
                              IForumThread forumThread,
                              int startRowIndex = 0, int pageSize = -1) : base(portalLiquidContext)
        {
            Dependencies = dependencies;

            PortalLiquidContext = portalLiquidContext;

            SetParams(startRowIndex, pageSize);

            ForumThread = forumThread;

            var forumAggregationDataAdapter = new ForumThreadDataAdapter(forumThread.Entity.ToEntityReference(), Dependencies);

            _adapter = forumAggregationDataAdapter;

            _posts = new Lazy <ForumPostDrop[]>(() => _adapter.SelectPosts(StartRowIndex, PageSize).Select(e => new ForumPostDrop(this, Dependencies, e)).ToArray(), LazyThreadSafetyMode.None);
        }
示例#3
0
        protected override void ProcessRequest(HttpContext context, ICmsEntityServiceProvider serviceProvider, Guid portalScopeId, IPortalContext portal, OrganizationServiceContext serviceContext, Entity entity, CmsEntityMetadata entityMetadata, ICrmEntitySecurityProvider security)
        {
            if (!(IsRequestMethod(context.Request, "POST") || IsRequestMethod(context.Request, "DELETE")))
            {
                throw new CmsEntityServiceException(HttpStatusCode.MethodNotAllowed, "Request method {0} not allowed for this resource.".FormatWith(context.Request.HttpMethod));
            }

            CrmEntityInactiveInfo inactiveInfo;

            if (CrmEntityInactiveInfo.TryGetInfo(entity.LogicalName, out inactiveInfo))
            {
                serviceContext.SetState(inactiveInfo.InactiveState, inactiveInfo.InactiveStatus, entity);

                WriteNoContentResponse(context.Response);

                return;
            }

            if (entity.LogicalName == "adx_communityforumthread")
            {
                var forum = entity.GetRelatedEntity(serviceContext, new Relationship("adx_communityforum_communityforumthread"));

                if (forum != null)
                {
                    var forumDataAdapter = new ForumDataAdapter(
                        forum.ToEntityReference(),
                        new PortalConfigurationDataAdapterDependencies(portalName: PortalName, requestContext: context.Request.RequestContext));

                    forumDataAdapter.DeleteThread(entity.ToEntityReference());

                    WriteNoContentResponse(context.Response);

                    if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage))
                    {
                        PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Forum, HttpContext.Current, "delete_forumthread", 1, entity.ToEntityReference(), "delete");
                    }

                    return;
                }
            }

            if (entity.LogicalName == "adx_communityforumpost")
            {
                var forumThread = entity.GetRelatedEntity(serviceContext, new Relationship("adx_communityforumthread_communityforumpost"));

                if (forumThread != null)
                {
                    var forumThreadDataAdapter = new ForumThreadDataAdapter(
                        forumThread.ToEntityReference(),
                        new PortalConfigurationDataAdapterDependencies(portalName: PortalName, requestContext: context.Request.RequestContext));

                    forumThreadDataAdapter.DeletePost(entity.ToEntityReference());

                    WriteNoContentResponse(context.Response);

                    if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage))
                    {
                        PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Forum, HttpContext.Current, "delete_forumpost", 1, entity.ToEntityReference(), "delete");
                    }

                    return;
                }
            }

            serviceContext.DeleteObject(entity);
            serviceContext.SaveChanges();

            WriteNoContentResponse(context.Response);

            if (FeatureCheckHelper.IsFeatureEnabled(FeatureNames.TelemetryFeatureUsage))
            {
                PortalFeatureTrace.TraceInstance.LogFeatureUsage(FeatureTraceCategory.Blog, HttpContext.Current, "delete_blogpost", 1, entity.ToEntityReference(), "delete");
            }
        }