示例#1
0
        public async Task TopicTest()
        {
            RelatedDataSet dataSetA = new RelatedDataSet("JimmyJimerson", "ab10101010", "Theory");

            string outputTopicName;

            // Seed the test database
            using (var context = new Repository.Models.Cinephiliacs_DbContext(dbOptions))
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                context.Topics.Add(dataSetA.Topic);
                context.SaveChanges();
            }

            using (var context = new Repository.Models.Cinephiliacs_DbContext(dbOptions))
            {
                RepoLogic       repoLogic       = new RepoLogic(context);
                IForumLogic     forumLogic      = new ForumLogic(repoLogic);
                ForumController forumController = new ForumController(forumLogic);

                List <string> topicNames = (await forumController.GetTopics()).Value;
                outputTopicName = topicNames[0];
            }

            Assert.Equal(dataSetA.Topic.TopicName, outputTopicName);
        }
示例#2
0
        private void PropertySave()
        {
            PropertiesController pc = new PropertiesController();
            PropertiesInfo       pi = new PropertiesInfo();

            pi.PropertyId = -1;
            pi.PortalId   = PortalId;
            pi            = (PropertiesInfo)(Utilities.ConvertFromHashTableToObject(Params, pi));
            pi.Name       = Utilities.CleanName(pi.Name);
            if (!(string.IsNullOrEmpty(pi.ValidationExpression)))
            {
                pi.ValidationExpression = HttpUtility.UrlDecode(HttpUtility.HtmlDecode(pi.ValidationExpression));
            }
            if (pi.PropertyId == -1)
            {
                string            lbl     = Params["Label"].ToString();
                LocalizationUtils lcUtils = new LocalizationUtils();
                lcUtils.SaveResource("[RESX:" + pi.Name + "].Text", lbl, PortalId);
            }
            else
            {
                if (Utilities.GetSharedResource("[RESX:" + pi.Name + "]").ToLowerInvariant().Trim() != Params["Label"].ToString().ToLowerInvariant().Trim())
                {
                    LocalizationUtils lcUtils = new LocalizationUtils();
                    lcUtils.SaveResource("[RESX:" + pi.Name + "].Text", Params["Label"].ToString(), PortalId);
                }
            }
            pc.SaveProperty(pi);
            ForumController fc = new ForumController();
            Forum           fi = fc.GetForum(PortalId, ModuleId, pi.ObjectOwnerId, true);

            fi.HasProperties = true;
            fc.Forums_Save(PortalId, fi, false, false);
        }
        private string DeleteTopic()
        {
            int topicId = -1;
            int forumId = -1;

            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                topicId = int.Parse(Params["topicid"].ToString());
            }
            if (topicId > 0)
            {
                TopicsController tc = new TopicsController();
                TopicInfo        t  = tc.Topics_Get(PortalId, ModuleId, topicId);
                Data.ForumsDB    db = new Data.ForumsDB();
                forumId = db.Forum_GetByTopicId(topicId);
                ForumController fc = new ForumController();
                Forum           f  = fc.Forums_Get(forumId, this.UserId, true);
                if (f != null)
                {
                    if (Permissions.HasPerm(f.Security.ModDelete, ForumUser.UserRoles) || (t.Author.AuthorId == this.UserId && Permissions.HasAccess(f.Security.Delete, ForumUser.UserRoles)))
                    {
                        tc.Topics_Delete(PortalId, ModuleId, forumId, topicId, MainSettings.DeleteBehavior);
                        return(BuildOutput(string.Empty, OutputCodes.Success, true));
                    }
                }
            }
            return(BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false));
        }
        private string MoveTopic()
        {
            int topicId       = -1;
            int forumId       = -1;
            int targetForumId = -1;

            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                topicId = int.Parse(Params["topicid"].ToString());
            }
            if (Params.ContainsKey("forumid") && SimulateIsNumeric.IsNumeric(Params["forumid"]))
            {
                targetForumId = int.Parse(Params["forumid"].ToString());
            }
            if (topicId > 0)
            {
                TopicsController tc = new TopicsController();
                TopicInfo        t  = tc.Topics_Get(PortalId, ModuleId, topicId);
                Data.ForumsDB    db = new Data.ForumsDB();
                forumId = db.Forum_GetByTopicId(topicId);
                ForumController fc = new ForumController();
                Forum           f  = fc.Forums_Get(forumId, this.UserId, true);
                if (f != null)
                {
                    if (Permissions.HasPerm(f.Security.ModMove, ForumUser.UserRoles))
                    {
                        tc.Topics_Move(PortalId, ModuleId, targetForumId, topicId);
                        DataCache.ClearAllCache(ModuleId, TabId);
                        return(BuildOutput(string.Empty, OutputCodes.Success, true));
                    }
                }
            }
            return(BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false));
        }
示例#5
0
        public void Constructor_ShouldInitialiseCorrectlyController()
        {
            var groupsMocked = new Mock <IGroupService>();
            var controller   = new ForumController(groupsMocked.Object);

            Assert.IsNotNull(controller);
        }
        private string MarkAnswer()
        {
            int topicId = -1;
            int forumId = -1;
            int replyId = -1;

            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                topicId = int.Parse(Params["topicid"].ToString());
            }
            if (Params.ContainsKey("replyid") && SimulateIsNumeric.IsNumeric(Params["replyid"]))
            {
                replyId = int.Parse(Params["replyid"].ToString());
            }
            if (topicId > 0 & UserId > 0)
            {
                TopicsController tc = new TopicsController();
                TopicInfo        t  = tc.Topics_Get(PortalId, ModuleId, topicId);
                Data.ForumsDB    db = new Data.ForumsDB();
                forumId = db.Forum_GetByTopicId(topicId);
                ForumController fc = new ForumController();
                Forum           f  = fc.Forums_Get(forumId, this.UserId, true);
                if ((this.UserId == t.Author.AuthorId && !t.IsLocked) || Permissions.HasAccess(f.Security.ModEdit, ForumUser.UserRoles))
                {
                    DataProvider.Instance().Reply_UpdateStatus(PortalId, ModuleId, topicId, replyId, UserId, 1, Permissions.HasAccess(f.Security.ModEdit, ForumUser.UserRoles));
                }
                return(BuildOutput(string.Empty, OutputCodes.Success, true));
            }
            else
            {
                return(BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false));
            }
        }
示例#7
0
        public async Task TestShouldGetAForumModel()
        {
            var mockRepo = new Mock <IUserRepo>();
            Mock <IForumRepo> _forumrepo = new Mock <IForumRepo>();

            _forumrepo.Setup(r => r.GetQuestionAsync(It.IsAny <int>()))
            .Returns(Task.FromResult(new Question {
                Category     = "Math",
                AuthorName   = "Username",
                Answered     = false,
                QuestionBody = "QuestionBody",
                UserQuestion = "UserQuestion",
                Id           = 1
            }
                                     ));

            _forumrepo.Setup(r => r.GetAnswerListAsync(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>()))
            .Returns(Task.FromResult(new List <Answer>()));



            Mock <ILogger <ForumController> > logger = new Mock <ILogger <ForumController> >();
            var controller = new ForumController(logger.Object, mockRepo.Object, sentMessage.Object, _forumrepo.Object);

            var model = Assert.IsType <ForumModel>(await controller.Get(1));

            Assert.IsType <ForumModel>(model);
        }
示例#8
0
        public async Task TestShouldAddAnAnswer()
        {
            var mockRepo = new Mock <IUserRepo>();

            mockRepo.Setup(r => r.GetAUserAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(new User
            {
                FirstName = "hi",
                LastName  = "bye",
                Username  = "******",
                Email     = "*****@*****.**",
                Id        = 3,
                Phone     = "678908765789",
                Password  = "******"
            }));

            Mock <IForumRepo> _forumrepo = new Mock <IForumRepo>();


            _forumrepo.Setup(r => r.AddAnswerAsync(It.IsAny <Answer>()));


            Mock <ILogger <ForumController> > logger = new Mock <ILogger <ForumController> >();
            var controller = new ForumController(logger.Object, mockRepo.Object, sentMessage.Object, _forumrepo.Object);

            var statusCode = Assert.IsType <StatusCodeResult>(await controller.AddAnswer(new AnswerModel()
            {
            }));

            Assert.Equal(201, statusCode.StatusCode);
        }
        public void Initialize()
        {
            AutomapperConfig.RegisterMappings();
            this.context    = new FakeLearningCenterContext();
            this.service    = new ForumService(this.context);
            this.controller = new ForumController(this.service);

            Tag tag = new Tag()
            {
                Id = 1, Name = "Tagtest"
            };
            Topic topic = new Topic()
            {
                Id      = 1,
                Title   = "Test",
                Content =
                    "Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                PublishDate = DateTime.Today
            };

            tag.Topics.Add(topic);
            topic.Tags.Add(tag);
            this.context.Topics.Add(topic);
            this.context.Tags.Add(tag);
        }
        public async Task TestShouldEditQuestion()
        {
            var mockRepo = new Mock <IUserRepo>();

            mockRepo.Setup(r => r.GetAUserAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(new User
            {
                FirstName = "hi",
                LastName  = "bye",
                Email     = "*****@*****.**",
                Id        = 3,
                Phone     = "678908765789",
            }));

            Mock <IForumRepo> _forumrepo = new Mock <IForumRepo>();


            mockRepo.Setup(r => r.ModifyQuestionAsync(It.IsAny <Question>()));


            Mock <ILogger <ForumController> > logger = new Mock <ILogger <ForumController> >();
            var controller = new ForumController(logger.Object, mockRepo.Object, sentMessage.Object, _forumrepo.Object);

            var statusCode = Assert.IsType <StatusCodeResult>(await controller.EditQuestion(new QuestionModel()
            {
                Category = "Math"
            }));

            Assert.Equal(202, statusCode.StatusCode);
        }
示例#11
0
 public ForumControllerTest()
 {
     _forumService  = Substitute.For <IForum>();
     _postService   = Substitute.For <IPost>();
     _cofigService  = Substitute.For <IConfiguration>();
     _uploadService = Substitute.For <IUpload>();
     _controller    = new ForumController(_forumService, _postService, _cofigService, _uploadService);
 }
        private string DeletePost()
        {
            int replyId = -1;
            int TopicId = -1;

            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                TopicId = int.Parse(Params["topicid"].ToString());
            }
            if (Params.ContainsKey("replyid") && SimulateIsNumeric.IsNumeric(Params["replyid"]))
            {
                replyId = int.Parse(Params["replyid"].ToString());
            }
            int forumId = -1;

            Data.ForumsDB db = new Data.ForumsDB();
            forumId = db.Forum_GetByTopicId(TopicId);
            ForumController fc = new ForumController();
            Forum           f  = fc.Forums_Get(forumId, this.UserId, true);

            if (TopicId > 0 & replyId < 1)
            {
                TopicsController tc = new TopicsController();
                TopicInfo        ti = tc.Topics_Get(PortalId, ModuleId, TopicId);

                if (Permissions.HasAccess(f.Security.ModDelete, ForumUser.UserRoles) || (Permissions.HasAccess(f.Security.Delete, ForumUser.UserRoles) && ti.Content.AuthorId == UserId && ti.IsLocked == false))
                {
                    DataProvider.Instance().Topics_Delete(forumId, TopicId, MainSettings.DeleteBehavior);
                    string journalKey = string.Format("{0}:{1}", forumId.ToString(), TopicId.ToString());
                    JournalController.Instance.DeleteJournalItemByKey(PortalId, journalKey);
                }
                else
                {
                    return(BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false));
                }
            }
            else
            {
                ReplyController rc = new ReplyController();
                ReplyInfo       ri = rc.Reply_Get(PortalId, ModuleId, TopicId, replyId);
                if (Permissions.HasAccess(f.Security.ModDelete, ForumUser.UserRoles) || (Permissions.HasAccess(f.Security.Delete, ForumUser.UserRoles) && ri.Content.AuthorId == UserId))
                {
                    DataProvider.Instance().Reply_Delete(forumId, TopicId, replyId, MainSettings.DeleteBehavior);
                    string journalKey = string.Format("{0}:{1}:{2}", forumId.ToString(), TopicId.ToString(), replyId.ToString());
                    JournalController.Instance.DeleteJournalItemByKey(PortalId, journalKey);
                }
                else
                {
                    return(BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false));
                }
            }
            string cachekey = string.Format("AF-FV-{0}-{1}", PortalId, ModuleId);

            DataCache.CacheClearPrefix(cachekey);
            return(BuildOutput(TopicId + "|" + replyId, OutputCodes.Success, true));
        }
示例#13
0
        public void GetConversationTest()
        {
            ForumController f = new ForumController();
            Mappy           m = new Mappy();

            m.Id = 1;
            ViewResult result = f.GetConversation(m, "Games") as ViewResult;

            Assert.IsNotNull(result);
        }
示例#14
0
        public void GetPostsTest()
        {
            ForumController f = new ForumController();
            Mappy           m = new Mappy();

            m.Id = 1;
            ViewResult result = f.GetPosts(m) as ViewResult;

            Assert.IsNotNull(result);
        }
示例#15
0
        public void IndexTest()
        {
            ForumController f = new ForumController();
            Mappy           m = new Mappy();

            m.Id = 1;
            ViewResult result = f.Index() as ViewResult;

            Assert.IsNotNull(result);
        }
示例#16
0
        public async Task ForumRetriveTest(ApiConfig config)
        {
            var controller = new ForumController(config);
            var forums     = await controller.GetForumsAsync();

            foreach (var item in forums)
            {
                Assert.IsInstanceOfType(item, typeof(Forum));
            }
        }
示例#17
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            ambtnSubmit.Click += new System.EventHandler(ambtnSubmit_Click);

            InstanceId = ControlConfig.InstanceId;
            SiteId     = ControlConfig.SiteId;
            ForumController fc = new ForumController();

            if (ForumInfo == null)
            {
                ForumInfo = fc.Forums_Get(SiteId, InstanceId, ForumId, this.UserId, true, false, TopicId);
            }

            SettingsInfo MainSettings = DataCache.MainSettings(ControlConfig.InstanceId);
            string       sTemp        = string.Empty;

            if (ControlConfig != null)
            {
                object obj = DataCache.CacheRetrieve(InstanceId + "qr");
                if (obj == null)
                {
                    sTemp = ParseTemplate();
                }
                else
                {
                    sTemp = Convert.ToString(obj);
                }
                sTemp = Utilities.LocalizeControl(sTemp);
                string SubscribedChecked = string.Empty;
                if (ControlConfig.User.PrefTopicSubscribe || Subscriptions.IsSubscribed(SiteId, InstanceId, ForumId, TopicId, SubscriptionTypes.Instant, this.UserId))
                {
                    SubscribedChecked = " checked=true";
                }
                sTemp = sTemp.Replace("[AF:CONTROL:SUBSCRIBECHECK]", "<input type=\"checkbox\" id=\"chkSubscribe\" name=\"chkSubscribe\" value=\"1\" " + SubscribedChecked + "\" />");
                //Security
                sTemp = sTemp.Replace("[CREATEROLES]", "1;");
                sTemp = sTemp.Replace("[USERROLES]", ForumUser.UserRoles);
                sTemp = sTemp.Replace("[THEMEPATH]", ThemePath);
                sTemp = sTemp.Replace("[SUBJECT]", Subject);
                sTemp = sTemp.Replace("[REPLYROLES]", ForumInfo.Security.Reply);
                if (!HttpContext.Current.Request.IsAuthenticated)
                {
                    sTemp = "<%@ Register TagPrefix=\"dnn\" Assembly=\"DotNetNuke\" Namespace=\"DotNetNuke.UI.WebControls\"%>" + sTemp;
                }
                if (!(sTemp.Contains(Globals.ControlRegisterAFTag)))
                {
                    sTemp = Globals.ControlRegisterAFTag + sTemp;
                }
                Control ctl = Page.ParseControl(sTemp);
                LinkControls(ctl.Controls);
                this.Controls.Add(ctl);
            }
        }
示例#18
0
        protected override void Render(HtmlTextWriter writer)
        {
            User forumUser = null;

            if (string.IsNullOrEmpty(ForumIds))
            {
                UserController uc = new UserController();
                forumUser = uc.GetUser(PortalId, ModuleId);
                if (string.IsNullOrEmpty(forumUser.UserForums))
                {
                    ForumController fc = new ForumController();
                    ForumIds = fc.GetForumsForUser(forumUser.UserRoles, PortalId, ModuleId);
                }
                else
                {
                    ForumIds = forumUser.UserForums;
                }
            }
            SettingsInfo _mainSettings = DataCache.MainSettings(ModuleId);

            Data.Common  db       = new Data.Common();
            IDataReader  dr       = db.TagCloud_Get(PortalId, ModuleId, ForumIds, TagCount);
            ControlUtils ctlUtils = new ControlUtils();
            string       sURL     = string.Empty;

            while (dr.Read())
            {
                int    priority = 1;
                string tagName  = string.Empty;
                string css      = string.Empty;
                priority = int.Parse(dr["Priority"].ToString());
                tagName  = dr["TagName"].ToString();
                switch (priority)
                {
                case 1:
                    css = CSSOne;
                    break;

                case 2:
                    css = CSSTwo;
                    break;

                case 3:
                    css = CSSThree;
                    break;
                }
                writer.Write("<span class=\"" + css + "\">");
                writer.Write("<a href=\"");
                sURL = ctlUtils.BuildUrl(TabId, ModuleId, string.Empty, string.Empty, -1, -1, int.Parse(dr["TagID"].ToString()), -1, Utilities.CleanName(tagName), 1, -1, -1);
                writer.Write(sURL);
                writer.Write("\" title=\"" + HttpUtility.HtmlAttributeEncode(tagName) + "\">" + tagName + "</a></span> ");
            }
            dr.Close();
            dr.Dispose();
        }
示例#19
0
        public void Forum()
        {
            //arrange
            ForumController controller = new ForumController();

            //act
            ViewResult result = controller.Create() as ViewResult;

            //assert
            Assert.IsNotNull(result);
        }
示例#20
0
        public void ForumMessage()
        {
            //arrange
            ForumController controller = new ForumController();
            //controller.Session["DoctorLoggedIn"] = "doc1";
            //act
            ViewResult result = controller.MessagePassing(1, 2) as ViewResult;


            //assert
            Assert.IsNotNull(result);
        }
示例#21
0
 public int Forums_Save(int PortalId, Forum fi, bool isNew, bool UseGroup)
 {
     try
     {
         var fc = new ForumController();
         return(fc.Forums_Save(PortalId, fi, isNew, UseGroup));
     }
     catch (Exception ex)
     {
         return(-1);
     }
 }
示例#22
0
        public void RenderMessages_Should_RenderCorrectView_WithCorrectParameters()
        {
            var groupServiceMocked = new Mock <IGroupService>();

            var group = new Group()
            {
                Name     = "testGroup",
                Messages = new List <Message>()
                {
                    new Message()
                    {
                        Author  = "testAuthor",
                        Content = "testContent"
                    }
                }
            };

            var groupViewModel = new GroupViewModel();

            groupViewModel.Name     = "testGroup";
            groupViewModel.Messages = new List <MessageViewModel>()
            {
                new MessageViewModel()
                {
                    Author  = "testAuthor",
                    Content = "testContent"
                }
            };


            groupServiceMocked.Setup(m => m.GetAll())
            .Returns(new List <Group>()
            {
                group
            });

            var controller = new ForumController(groupServiceMocked.Object);

            controller
            .WithCallTo(m => m.RenderMessages("testGroup"))
            .ShouldRenderView("_MessagesPartial")
            .WithModel <GroupViewModel>(viewModel =>
            {
                Assert.AreEqual(viewModel.Name,
                                groupViewModel.Name);

                Assert.AreEqual(viewModel.Messages.First().Content,
                                groupViewModel.Messages.First().Content);

                Assert.AreEqual(viewModel.Messages.First().Author,
                                groupViewModel.Messages.First().Author);
            });
        }
示例#23
0
        protected override void OnInit(EventArgs e)
		{
			base.OnInit(e);

            ambtnSubmit.Click += new System.EventHandler(ambtnSubmit_Click);

            InstanceId = ControlConfig.InstanceId;
            SiteId = ControlConfig.SiteId;
            ForumController fc = new ForumController();
            if (ForumInfo == null)
            {
                ForumInfo = fc.Forums_Get(SiteId, InstanceId, ForumId, this.UserId, true, false, TopicId);
            }

            SettingsInfo MainSettings = DataCache.MainSettings(ControlConfig.InstanceId);
            string sTemp = string.Empty;
            if (ControlConfig != null)
            {
                object obj = DataCache.CacheRetrieve(InstanceId + "qr");
                if (obj == null)
                {
                    sTemp = ParseTemplate();
                }
                else
                {
                    sTemp = Convert.ToString(obj);
                }
                sTemp = Utilities.LocalizeControl(sTemp);
                string SubscribedChecked = string.Empty;
                if (ControlConfig.User.PrefTopicSubscribe || Subscriptions.IsSubscribed(SiteId, InstanceId, ForumId, TopicId, SubscriptionTypes.Instant, this.UserId))
                {
                    SubscribedChecked = " checked=true";
                }
                sTemp = sTemp.Replace("[AF:CONTROL:SUBSCRIBECHECK]", "<input type=\"checkbox\" id=\"chkSubscribe\" name=\"chkSubscribe\" value=\"1\" " + SubscribedChecked + "\" />");
                //Security
                sTemp = sTemp.Replace("[CREATEROLES]", "1;");
                sTemp = sTemp.Replace("[USERROLES]", ForumUser.UserRoles);
                sTemp = sTemp.Replace("[THEMEPATH]", ThemePath);
                sTemp = sTemp.Replace("[SUBJECT]", Subject);
                sTemp = sTemp.Replace("[REPLYROLES]", ForumInfo.Security.Reply);
                if (!HttpContext.Current.Request.IsAuthenticated)
                {
                    sTemp = "<%@ Register TagPrefix=\"dnn\" Assembly=\"DotNetNuke\" Namespace=\"DotNetNuke.UI.WebControls\"%>" + sTemp;
                }
                if (!(sTemp.Contains(Globals.ControlRegisterAFTag)))
                {
                    sTemp = Globals.ControlRegisterAFTag + sTemp;
                }
                Control ctl = Page.ParseControl(sTemp);
                LinkControls(ctl.Controls);
                this.Controls.Add(ctl);
            }
        }
        public void NewPost_HttpGet_LoadsView()
        {
            //Arrange
            var controller = new ForumController(new FormDoubleDAL());

            //Act
            var result = controller.NewPost() as ViewResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("NewPost", result.ViewName);
        }
示例#25
0
		public int Forums_Save(int PortalId, Forum fi, bool isNew, bool UseGroup)
		{
			try
			{
				var fc = new ForumController();
				return fc.Forums_Save(PortalId, fi, isNew, UseGroup);
			}
			catch (Exception ex)
			{
				return -1;
			}
		}
示例#26
0
        public void ForumBag()
        {
            //arrange
            ForumController controller = new ForumController();
            //controller.Session["DoctorLoggedIn"] = "doc1";
            //act
            ViewResult result = controller.Create() as ViewResult;


            //assert
            Assert.AreEqual(null, result.ViewBag.Title);
        }
示例#27
0
        public async Task TestShouldDeleteAnswer()
        {
            var mockRepo = new Mock <IUserRepo>();

            mockRepo.Setup(r => r.DeleteAAnswerAsync(It.IsAny <int>()));
            Mock <IForumRepo> _forumrepo             = new Mock <IForumRepo>();
            Mock <ILogger <ForumController> > logger = new Mock <ILogger <ForumController> >();
            var controller = new ForumController(logger.Object, mockRepo.Object, sentMessage.Object, _forumrepo.Object);

            var statusCode = Assert.IsType <StatusCodeResult>(await controller.DeleteAnswer(1));

            Assert.Equal(204, statusCode.StatusCode);
        }
示例#28
0
        public async Task TestRetrivePost(ApiConfig config)
        {
            var pc     = new PostController(config);
            var fc     = new ForumController(config);
            var forums = await fc.GetForumsAsync();

            var posts = await pc.GetPostAsync(forums.First().Id, 1);

            foreach (var item in posts)
            {
                Assert.IsInstanceOfType(item, typeof(Post));
            }
        }
示例#29
0
        public void RenderMessages_Should_CallMethod_GetAllGroups()
        {
            var groupServiceMocked = new Mock <IGroupService>();

            var groupViewModel = new GroupViewModel();

            groupServiceMocked.Setup(m => m.GetAll())
            .Returns(new List <Group>());

            var controller = new ForumController(groupServiceMocked.Object);

            controller.RenderMessages("testGroup");

            groupServiceMocked.Verify(m => m.GetAll(), Times.Once);
        }
        public void AddForumQuestionTest()
        {
            // Verifies that a new Forum question automatically adds a new question to the end of the Forum Questions.
            // Arrange
            var repo            = new FakeRepository();
            var forumController = new ForumController(repo);

            // Act
            forumController.AddForumQuestion("questionerUser", "questionHeader", "questionBody");

            // Assert Forum Question gets added as last item in collection.
            int numCurrentItems = repo.ForumQuestions.Count;

            Assert.Equal("questionHeader", repo.ForumQuestions[numCurrentItems - 1].QuestionHeader);
        }
        public void AddForumQuestionMemberTest()
        {
            // Verifies that a new Forum Question automaticall adds a new member to the end of the Members.
            // Arrange
            var repo            = new FakeRepository();
            var forumController = new ForumController(repo);

            // Act
            forumController.AddForumQuestion("questionerUser", "questionHeader", "questionBody");

            // Assert Forum Question gets added as last item in collection.
            int numMembers = repo.Members.Count;

            Assert.Equal("questionerUser", repo.Members[numMembers - 1].Name);
        }
示例#32
0
        [Fact]//ForumController.cs
        public void ForumControllerTest1()
        {
            ForumRepo       frepo    = new ForumRepo(hContext);
            ForumMethods    fmethods = new ForumMethods(frepo);
            ForumController fcon     = new ForumController(fmethods);
            Thread          thread   = new Thread();

            thread.Description = "Just a test";
            thread             = fcon.NewThread(thread).Value;
            var actionVar = fcon.GetThreads();
            var expected  = "Just a test";
            var actual    = actionVar.Value.ToList()[0].Description;

            Assert.Equal(expected, actual);
        }
        private string MarkAnswer()
        {
            int topicId = -1;
            int forumId = -1;
            int replyId = -1;
            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                topicId = int.Parse(Params["topicid"].ToString());
            }
            if (Params.ContainsKey("replyid") && SimulateIsNumeric.IsNumeric(Params["replyid"]))
            {
                replyId = int.Parse(Params["replyid"].ToString());
            }
            if (topicId > 0 & UserId > 0)
            {
                TopicsController tc = new TopicsController();
                TopicInfo t = tc.Topics_Get(PortalId, ModuleId, topicId);
                Data.ForumsDB db = new Data.ForumsDB();
                forumId = db.Forum_GetByTopicId(topicId);
                ForumController fc = new ForumController();
                Forum f = fc.Forums_Get(forumId, this.UserId, true);
                if ((this.UserId == t.Author.AuthorId && ! t.IsLocked) || Permissions.HasAccess(f.Security.ModEdit, ForumUser.UserRoles))
                {
                    DataProvider.Instance().Reply_UpdateStatus(PortalId, ModuleId, topicId, replyId, UserId, 1, Permissions.HasAccess(f.Security.ModEdit, ForumUser.UserRoles));

                }
                return BuildOutput(string.Empty, OutputCodes.Success, true);
            }
            else
            {
                return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
            }
        }
        private string MoveTopic()
        {
            int topicId = -1;
            int forumId = -1;
            int targetForumId = -1;
            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                topicId = int.Parse(Params["topicid"].ToString());
            }
            if (Params.ContainsKey("forumid") && SimulateIsNumeric.IsNumeric(Params["forumid"]))
            {
                targetForumId = int.Parse(Params["forumid"].ToString());
            }
            if (topicId > 0)
            {
                TopicsController tc = new TopicsController();
                TopicInfo t = tc.Topics_Get(PortalId, ModuleId, topicId);
                Data.ForumsDB db = new Data.ForumsDB();
                forumId = db.Forum_GetByTopicId(topicId);
                ForumController fc = new ForumController();
                Forum f = fc.Forums_Get(forumId, this.UserId, true);
                if (f != null)
                {
                    if (Permissions.HasPerm(f.Security.ModMove, ForumUser.UserRoles))
                    {
                        tc.Topics_Move(PortalId, ModuleId, targetForumId, topicId);
                        DataCache.ClearAllCache(ModuleId, TabId);
                        return BuildOutput(string.Empty, OutputCodes.Success, true);
                    }
                }

            }
            return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
        }
 private string ForumList()
 {
     ForumController fc = new ForumController();
     return fc.GetForumsHtmlOption(PortalId, ModuleId, ForumUser);
 }
        private string LoadTopic()
        {
            int topicId = -1;
            int forumId = -1;
            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                topicId = int.Parse(Params["topicid"].ToString());
            }
            if (topicId > 0)
            {
                TopicsController tc = new TopicsController();
                TopicInfo t = tc.Topics_Get(PortalId, ModuleId, topicId);
                Data.ForumsDB db = new Data.ForumsDB();
                forumId = db.Forum_GetByTopicId(topicId);
                ForumController fc = new ForumController();
                Forum f = fc.Forums_Get(PortalId, -1, forumId, this.UserId, true, false, -1);
                if (f != null)
                {
                    if (Permissions.HasPerm(f.Security.ModEdit, ForumUser.UserRoles))
                    {
                        StringBuilder sb = new StringBuilder();
                        sb.Append("{");
                        sb.Append(Utilities.JSON.Pair("topicid", t.TopicId.ToString()));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("subject", t.Content.Subject));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("authorid", t.Content.AuthorId.ToString()));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("locked", t.IsLocked.ToString()));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("pinned", t.IsPinned.ToString()));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("priority", t.Priority.ToString()));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("status", t.StatusId.ToString()));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("forumid", forumId.ToString()));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("forumname", f.ForumName));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("tags", t.Tags));
                        sb.Append(",");
                        sb.Append(Utilities.JSON.Pair("categories", t.Categories));
                        sb.Append(",");
                        sb.Append("\"properties\":[");
                        string sCats = string.Empty;
                        if (f.Properties != null)
                        {
                            int i = 0;
                            foreach (PropertiesInfo p in f.Properties)
                            {
                                sb.Append("{");
                                sb.Append(Utilities.JSON.Pair("propertyid", p.PropertyId.ToString()));
                                sb.Append(",");
                                sb.Append(Utilities.JSON.Pair("datatype", p.DataType));
                                sb.Append(",");
                                sb.Append(Utilities.JSON.Pair("propertyname", p.Name));
                                sb.Append(",");
                                string pvalue = p.DefaultValue;
                                foreach (PropertiesInfo tp in t.TopicProperties)
                                {
                                    if (tp.PropertyId == p.PropertyId)
                                    {
                                        pvalue = tp.DefaultValue;
                                    }
                                }

                                sb.Append(Utilities.JSON.Pair("propertyvalue", pvalue));
                                if (p.DataType.Contains("list"))
                                {
                                    sb.Append(",\"listdata\":[");
                                    if (p.DataType.Contains("list|categories"))
                                    {
                                        using (IDataReader dr = DataProvider.Instance().Tags_List(PortalId, f.ModuleId, true, 0, 200, "ASC", "TagName", forumId, f.ForumGroupId))
                                        {
                                            dr.NextResult();
                                            while (dr.Read())
                                            {
                                                sCats += "{";
                                                sCats += Utilities.JSON.Pair("id", dr["TagId"].ToString());
                                                sCats += ",";
                                                sCats += Utilities.JSON.Pair("name", dr["TagName"].ToString());
                                                sCats += ",";
                                                sCats += Utilities.JSON.Pair("selected", IsSelected(dr["TagName"].ToString(), t.Categories).ToString());
                                                sCats += "},";
                                            }
                                            dr.Close();
                                        }
                                        if (! (string.IsNullOrEmpty(sCats)))
                                        {
                                            sCats = sCats.Substring(0, sCats.Length - 1);
                                        }
                                        sb.Append(sCats);
                                    }
                                    else
                                    {
                                        DotNetNuke.Common.Lists.ListController lists = new DotNetNuke.Common.Lists.ListController();
                                        string lName = p.DataType.Substring(p.DataType.IndexOf("|") + 1);
                                        DotNetNuke.Common.Lists.ListEntryInfoCollection lc = lists.GetListEntryInfoCollection(lName, string.Empty);
                                        int il = 0;
                                        foreach (DotNetNuke.Common.Lists.ListEntryInfo l in lc)
                                        {
                                            sb.Append("{");
                                            sb.Append(Utilities.JSON.Pair("itemId", l.Value));
                                            sb.Append(",");
                                            sb.Append(Utilities.JSON.Pair("itemName", l.Text));
                                            sb.Append("}");
                                            il += 1;
                                            if (il < lc.Count)
                                            {
                                                sb.Append(",");
                                            }
                                        }
                                    }
                                    sb.Append("]");
                                }
                                sb.Append("}");
                                i += 1;
                                if (i < f.Properties.Count)
                                {
                                    sb.Append(",");
                                }

                            }
                        }

                        sb.Append("],\"categories\":[");
                        sCats = string.Empty;
                        using (IDataReader dr = DataProvider.Instance().Tags_List(PortalId, f.ModuleId, true, 0, 200, "ASC", "TagName", forumId, f.ForumGroupId))
                        {
                            dr.NextResult();
                            while (dr.Read())
                            {
                                sCats += "{";
                                sCats += Utilities.JSON.Pair("id", dr["TagId"].ToString());
                                sCats += ",";
                                sCats += Utilities.JSON.Pair("name", dr["TagName"].ToString());
                                sCats += ",";
                                sCats += Utilities.JSON.Pair("selected", IsSelected(dr["TagName"].ToString(), t.Categories).ToString());
                                sCats += "},";
                            }
                            dr.Close();
                        }
                        if (! (string.IsNullOrEmpty(sCats)))
                        {
                            sCats = sCats.Substring(0, sCats.Length - 1);
                        }
                        sb.Append(sCats);
                        sb.Append("]");
                        sb.Append("}");
                        return BuildOutput(sb.ToString(), OutputCodes.Success, true, true);
                    }
                }

            }
            return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
        }
示例#37
0
        public string BuildForumView(int ForumTemplateId, int CurrentUserId, string ThemePath)
        {
            try
            {
                SettingsInfo MainSettings = DataCache.MainSettings(ModuleId);
                string sOutput = string.Empty;
                string sTemplate;
                int TemplateCache = MainSettings.TemplateCache;
                if (UseTemplatePath && TemplatePath != string.Empty)
                {
                    DisplayTemplate = Utilities.GetFileContent(TemplatePath + "ForumView.htm");
                    DisplayTemplate = Utilities.ParseSpacer(DisplayTemplate);
                }
                else if (DisplayTemplate == string.Empty)
                {
                    DisplayTemplate = Utilities.GetFileContent(Server.MapPath(ThemePath) + "templates/ForumView.ascx");
                    DisplayTemplate = Utilities.ParseSpacer(DisplayTemplate);
                }

                sTemplate = DisplayTemplate == string.Empty ? DataCache.GetCachedTemplate(TemplateCache, ModuleId, "ForumView", ForumTemplateId) : DisplayTemplate;
                try
                {
                    sTemplate = ParseControls(sTemplate);
                }
                catch (Exception ex)
                {
                    Services.Exceptions.Exceptions.ProcessModuleLoadException(this, ex);
                    sTemplate = ex.Message; //ParseControls(sTemplate)
                }
                if (sTemplate.Contains("[NOTOOLBAR]"))
                {
                    if (HttpContext.Current.Items.Contains("ShowToolbar"))
                    {
                        HttpContext.Current.Items["ShowToolbar"] = false;
                    }
                    else
                    {
                        HttpContext.Current.Items.Add("ShowToolbar", false);
                    }
                    sTemplate = sTemplate.Replace("[NOTOOLBAR]", string.Empty);
                }
                if (sTemplate.Contains("[FORUMS]"))
                {
                    string sGroupSection = string.Empty;
                    string sGroupSectionTemp = TemplateUtils.GetTemplateSection(sTemplate, "[GROUPSECTION]", "[/GROUPSECTION]");
                    string sGroup = TemplateUtils.GetTemplateSection(sTemplate, "[GROUP]", "[/GROUP]");
                    string sForums = string.Empty;
                    string sForumTemp = TemplateUtils.GetTemplateSection(sTemplate, "[FORUMS]", "[/FORUMS]");
                    string tmpGroup = string.Empty;
                    //Dim reader As IDataReader = Nothing
                    if (ForumTable == null)
                    {
                        var ds = new DataSet();
                        dtForums = new DataTable();
                        var fc = new ForumController();
                        ForumTable = fc.GetForumView(PortalId, ModuleId, CurrentUserId, UserInfo.IsSuperUser, ForumIds); // KR - added cache retreival
                        //ds = DataProvider.Instance.UI_ForumView(PortalId, ModuleId, CurrentUserId, UserInfo.IsSuperUser, ForumIds)
                        //ForumTable = ds.Tables(0)
                    }
                    string sCrumb = string.Empty;
                    string sGroupName = string.Empty;
                    //Dim ForumGroupId As Integer = 0
                    if (ForumGroupId != -1)
                    {
                        DataRow tmpDR = null;
                        ForumTable.DefaultView.RowFilter = "ForumGroupId = " + ForumGroupId;
                        if (ForumTable.DefaultView.ToTable().Rows.Count > 0)
                        {
                            tmpDR = ForumTable.DefaultView.ToTable().Rows[0];
                        }
                        if (tmpDR != null)
                        {
                            sGroupName = tmpDR["GroupName"].ToString();
                            sCrumb = "<div class=\"afcrumb\"><i class=\"fa fa-comments-o fa-grey\"></i>  <a href=\"" + Utilities.NavigateUrl(TabId) + "\">[RESX:ForumMain]</a>  <i class=\"fa fa-long-arrow-right fa-grey\"></i>  " + tmpDR["GroupName"] + "</div>";
                        }

                        //dtForums.DefaultView.RowFilter = ""

                    }
                    if (ParentForumId != -1)
                    {
                        //SubsOnly = True
                        DataRow tmpDR = null;
                        string sFilter = "ForumId = " + ParentForumId + " ";

                        ForumTable.DefaultView.RowFilter = sFilter;
                        if (ForumTable.DefaultView.ToTable().Rows.Count > 0)
                        {
                            tmpDR = ForumTable.DefaultView.ToTable().Rows[0];
                        }
                        ForumTable.DefaultView.RowFilter = "";
                        sGroupName = tmpDR["GroupName"].ToString();

                    }
                    if (MainSettings.UseSkinBreadCrumb && ForumTable.Rows.Count > 0 && SubsOnly == false && ForumGroupId != -1)
                    {
                        Environment.UpdateBreadCrumb(Page.Controls, "<a href=\"" + NavigateUrl(TabId, "", ParamKeys.GroupId + "=" + ForumGroupId) + "\">" + sGroupName + "</a>");
                        sTemplate = sTemplate.Replace("<div class=\"afcrumb\">[FORUMMAINLINK] > [FORUMGROUPLINK]</div>", string.Empty);
                        sTemplate = sTemplate.Replace("[BREADCRUMB]", string.Empty);
                    }
                    else
                    {
                        sTemplate = sTemplate.Replace("[BREADCRUMB]", sCrumb);
                    }

                    int iForum = 1;
                    int ForumCount = 0;
                    bool hasForums = false;
                    DataTable rsForums = ForumTable.DefaultView.ToTable();
                    Forum fi;
                    int tmpGroupCount = 0;
                    int asForumGroupId;
                    var social = new Social();
                    asForumGroupId = social.GetMasterForumGroup(PortalId, TabId);
                    int groupForumsCount = 0;
                    foreach (DataRow dr in rsForums.Rows)
                    {

                        //If CBool(dr("CanView")) Or (Not CBool(dr("GroupHidden"))) Then ' And Not CBool(dr("CanView"))) Or UserInfo.IsSuperUser Then
                        if (!(asForumGroupId == Convert.ToInt32(dr["ForumGroupId"]) && Convert.ToBoolean(dr["GroupHidden"])))
                        {
                            if (tmpGroup != dr["GroupName"].ToString())
                            {
                                if (tmpGroupCount < Globals.GroupCount)
                                {
                                    ForumTable.DefaultView.RowFilter = "ForumGroupId = " + Convert.ToInt32(dr["ForumGroupId"]) + " AND ParentForumId = 0";

                                    ForumCount = ForumTable.DefaultView.Count;
                                    ForumTable.DefaultView.RowFilter = "";
                                    if (sForums != string.Empty)
                                    {
                                        sGroupSection = TemplateUtils.ReplaceSubSection(sGroupSection, sForums, "[FORUMS]", "[/FORUMS]");
                                        sForums = string.Empty;
                                    }
                                    int GroupId = Convert.ToInt32(dr["ForumGroupId"]);
                                    sGroupSectionTemp = TemplateUtils.GetTemplateSection(sTemplate, "[GROUPSECTION]", "[/GROUPSECTION]");
                                    sGroupSectionTemp = sGroupSectionTemp.Replace("[GROUPNAME]", dr["GroupName"].ToString());
                                    sGroupSectionTemp = sGroupSectionTemp.Replace("[FORUMGROUPID]", dr["ForumGroupId"].ToString());
                                    sGroupSectionTemp = sGroupSectionTemp.Replace("[GROUPCOLLAPSE]", "<img class=\"afarrow\" id=\"imgGroup" + GroupId.ToString() + "\" onclick=\"toggleGroup(" + GroupId.ToString() + ");\" src=\"" + ThemePath + GetImage(GroupId) + "\" alt=\"[RESX:ToggleGroup]\" />");

                                    //any replacements on the group
                                    string sNewGroup = "<div id=\"group" + GroupId + "\" " + GetDisplay(GroupId) + " class=\"afgroup\">" + sGroup + "</div>";
                                    sGroupSectionTemp = TemplateUtils.ReplaceSubSection(sGroupSectionTemp, sNewGroup, "[GROUP]", "[/GROUP]");
                                    sGroupSection += sGroupSectionTemp;
                                    tmpGroup = dr["GroupName"].ToString();
                                    tmpGroupCount += 1;
                                    iForum = 1;
                                }

                            }
                            if (iForum <= Globals.ForumCount)
                            {
                                fi = FillForumRow(dr);
                                bool canView = Permissions.HasPerm(fi.Security.View, ForumUser.UserRoles);
                                if (canView || (!fi.Hidden))
                                {
                                    sForumTemp = TemplateUtils.GetTemplateSection(sTemplate, "[FORUMS]", "[/FORUMS]");
                                    hasForums = true;
                                    if (fi.ParentForumId == 0 || SubsOnly || (SubsOnly == false && fi.ParentForumId > 0 && rsForums.Rows.Count == 1))
                                    {
                                        sForumTemp = ParseForumRow(sForumTemp, fi, iForum, ThemePath, ForumCount);
                                        iForum += 1;
                                        sForums += sForumTemp;
                                    }
                                }
                            }
                        }

                        //End If
                    }

                    if (hasForums == false && SubsOnly)
                    {
                        return string.Empty;
                    }
                    if (sForums != string.Empty)
                    {
                        sGroupSection = TemplateUtils.ReplaceSubSection(sGroupSection, sForums, "[FORUMS]", "[/FORUMS]");
                    }
                    sTemplate = sTemplate.Contains("[GROUPSECTION]") ? TemplateUtils.ReplaceSubSection(sTemplate, sGroupSection, "[GROUPSECTION]", "[/GROUPSECTION]") : sGroupSection;
                    sTemplate = TemplateUtils.ReplaceSubSection(sTemplate, string.Empty, "[FORUMS]", "[/FORUMS]");

                }

                return sTemplate;
            }
            catch (Exception ex)
            {
                Services.Exceptions.Exceptions.LogException(ex);
                return string.Empty;
            }
        }
        private string DeletePost()
        {
            int replyId = -1;
            int TopicId = -1;
            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                TopicId = int.Parse(Params["topicid"].ToString());
            }
            if (Params.ContainsKey("replyid") && SimulateIsNumeric.IsNumeric(Params["replyid"]))
            {
                replyId = int.Parse(Params["replyid"].ToString());
            }
            int forumId = -1;
            Data.ForumsDB db = new Data.ForumsDB();
            forumId = db.Forum_GetByTopicId(TopicId);
            ForumController fc = new ForumController();
            Forum f = fc.Forums_Get(forumId, this.UserId, true);

            // Need to get the list of attachments BEFORE we remove the post recods
            var attachmentController = new Data.AttachController();
            var attachmentList = (MainSettings.DeleteBehavior == 0)
                                     ? attachmentController.ListForPost(TopicId, replyId)
                                     : null;

            if (TopicId > 0 & replyId < 1)
            {
                TopicsController tc = new TopicsController();
                TopicInfo ti = tc.Topics_Get(PortalId, ModuleId, TopicId);

                if (Permissions.HasAccess(f.Security.ModDelete, ForumUser.UserRoles) || (Permissions.HasAccess(f.Security.Delete, ForumUser.UserRoles) && ti.Content.AuthorId == UserId && ti.IsLocked == false))
                {
                    DataProvider.Instance().Topics_Delete(forumId, TopicId, MainSettings.DeleteBehavior);
                    string journalKey = string.Format("{0}:{1}", forumId.ToString(), TopicId.ToString());
                    JournalController.Instance.DeleteJournalItemByKey(PortalId, journalKey);
                }
                else
                {
                    return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
                }
            }
            else
            {
                ReplyController rc = new ReplyController();
                ReplyInfo ri = rc.Reply_Get(PortalId, ModuleId, TopicId, replyId);
                if (Permissions.HasAccess(f.Security.ModDelete, ForumUser.UserRoles) || (Permissions.HasAccess(f.Security.Delete, ForumUser.UserRoles) && ri.Content.AuthorId == UserId))
                {
                    DataProvider.Instance().Reply_Delete(forumId, TopicId, replyId, MainSettings.DeleteBehavior);
                    string journalKey = string.Format("{0}:{1}:{2}", forumId.ToString(), TopicId.ToString(), replyId.ToString());
                    JournalController.Instance.DeleteJournalItemByKey(PortalId, journalKey);

                }
                else
                {
                    return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
                }

            }

            // If it's a hard delete, delete associated attachments
            // attachmentList will only be populated if the DeleteBehavior is 0
            if (attachmentList != null)
            {
                var fileManager = FileManager.Instance;
                var folderManager = FolderManager.Instance;
                var attachmentFolder = folderManager.GetFolder(PortalId, "activeforums_Attach");

                foreach (var attachment in attachmentList)
                {
                    attachmentController.Delete(attachment.AttachmentId);

                    var file = attachment.FileId.HasValue
                                   ? fileManager.GetFile(attachment.FileId.Value)
                                   : fileManager.GetFile(attachmentFolder, attachment.FileName);

                    // Only delete the file if it exists in the attachment folder
                    if (file != null && file.FolderId == attachmentFolder.FolderID)
                        fileManager.DeleteFile(file);
                }
            }

            // Return the result
            string cachekey = string.Format("AF-FV-{0}-{1}", PortalId, ModuleId);
            DataCache.CacheClearPrefix(cachekey);
            return BuildOutput(TopicId + "|" + replyId, OutputCodes.Success, true);
        }
示例#39
0
		public string Render()
		{
			ForumController fc = new ForumController();
			string fs = fc.GetForumsForUser(ForumUser.UserRoles, PortalId, ModuleId, "CanEdit");
			if (! (string.IsNullOrEmpty(fs)))
			{
				_canEdit = true;
			}
			System.Text.StringBuilder sb = new System.Text.StringBuilder();
			string forumPrefix = string.Empty;
			string groupPrefix = string.Empty;
			_mainSettings = DataCache.MainSettings(ModuleId);
			if (_mainSettings.URLRewriteEnabled)
			{
				if (ForumId > 0)
				{
					Forum f = fc.GetForum(PortalId, ModuleId, ForumId);
					if (f != null)
					{
						forumPrefix = f.PrefixURL;
						groupPrefix = f.ForumGroup.PrefixURL;
					}
				}
				else if (ForumGroupId > 0)
				{
					ForumGroupController grp = new ForumGroupController();
					ForumGroupInfo g = grp.Groups_Get(ModuleId, ForumGroupId);
					if (g != null)
					{
						groupPrefix = g.PrefixURL;
					}
				}
			}

			string tmp = string.Empty;
			Data.Topics db = new Data.Topics();
			int recordCount = 0;
			int i = 0;
			sb.Append(HeaderTemplate);
			using (IDataReader dr = db.TopicsList(PortalId, PageIndex, PageSize, ForumIds, CategoryId, TagId))
			{
				while (dr.Read())
				{
					if (recordCount == 0)
					{
						recordCount = int.Parse(dr["RecordCount"].ToString());
					}
					tmp = ParseDataRow(dr, Template);
					if (i % 2 == 0)
					{
						tmp = tmp.Replace("[ROWCSS]", ItemCss);
					}
					else
					{
						tmp = tmp.Replace("[ROWCSS]", AltItemCSS);
					}
					i += 1;
					sb.Append(tmp);
				}
				dr.Close();
			}
			sb.Append(FooterTemplate);
			int pageCount = 1;
			pageCount = Convert.ToInt32(System.Math.Ceiling((double)recordCount / PageSize));
			ControlUtils cUtils = new ControlUtils();
			string otherPrefix = string.Empty;
			if (TagId > 0 | CategoryId > 0)
			{
				int id = -1;
				if (TagId > 0)
				{
					id = TagId;
				}
				else
				{
					id = CategoryId;
				}
				using (IDataReader dr = DataProvider.Instance().Tags_Get(PortalId, ModuleId, id))
				{
					while (dr.Read())
					{
						otherPrefix = Utilities.CleanName(dr["TagName"].ToString());
					}
					dr.Close();
				}
			}
			sb.Append(cUtils.BuildPager(TabId, ModuleId, groupPrefix, forumPrefix, ForumGroupId, ForumId, TagId, CategoryId, otherPrefix, PageIndex, pageCount));
			return sb.ToString();
		}
示例#40
0
		private void TopicDisplay_Init(object sender, System.EventArgs e)
		{
			SettingsInfo MainSettings = DataCache.MainSettings(ControlConfig.InstanceId);
			PageSize = MainSettings.PageSize;
			string sTemp = string.Empty;
			if ((ControlConfig != null)) {
				object obj = DataCache.CacheRetrieve(ControlConfig.InstanceId + CurrentView);
				if (obj == null) {
					sTemp = ParseTemplate();
				} else {
					sTemp = Convert.ToString(obj);
				}
				if (sTemp.Contains("[NOPAGING]")) {
					RowIndex = 0;
					PageSize = int.MaxValue;
					sTemp = sTemp.Replace("[NOPAGING]", string.Empty);
				}
				sTemp = Utilities.ParseTokenConfig(sTemp, "topic", ControlConfig);

				string Subject = string.Empty;
				string Body = string.Empty;
				System.DateTime CreateDate = null;
				System.DateTime EditDate = null;
				string Tags = string.Empty;
				string AuthorRoles = string.Empty;
				string IPAddress = string.Empty;
				System.DateTime LastPostDate = null;
				string LastPostData = string.Empty;
				UserProfileInfo tAuthor = null;
				int ReplyCount = 0;
				Data.Topics tc = new Data.Topics();
				int rowCount = 0;
				int nextTopic = 0;
				int prevTopic = 0;
				int statusId = -1;
				double topicRating = 0;
				IDataReader dr = tc.TopicForDisplay(ControlConfig.SiteId, ControlConfig.InstanceId, -1, TopicId, UserId, RowIndex, PageSize, "ASC");
				while (dr.Read()) {
					ForumId = int.Parse(dr["ForumId"].ToString());
					Subject = dr["Subject"].ToString();
					Body = dr["Body"].ToString();
					CreateDate = Convert.ToDateTime(dr["DateCreated"].ToString());
					EditDate = Convert.ToDateTime(dr["DateUpdated"].ToString());
					Tags = dr["Tags"].ToString();
					IPAddress = dr["IPAddress"].ToString();
					LastPostDate = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["LastPostDate"].ToString()), ControlConfig.InstanceId));
					LastPostData = dr["LastPostData"].ToString();
					ReplyCount = int.Parse(dr["ReplyCount"].ToString());
					nextTopic = int.Parse(dr["NextTopic"].ToString());
					prevTopic = int.Parse(dr["PrevTopic"].ToString());
					topicRating = double.Parse(dr["TopicRating"].ToString());
					UserProfileInfo profile = new UserProfileInfo();
					var _with1 = profile;
					_with1.UserID = int.Parse(dr["AuthorId"].ToString());
					if (string.IsNullOrEmpty(dr["DisplayName"].ToString())) {
						_with1.DisplayName = dr["AuthorName"].ToString();
					} else {
						_with1.DisplayName = dr["DisplayName"].ToString();
					}
					_with1.FirstName = dr["FirstName"].ToString();
					_with1.LastName = dr["LastName"].ToString();
					_with1.Username = dr["Username"].ToString();
					_with1.UserCaption = dr["UserCaption"].ToString();
					_with1.AnswerCount = int.Parse(dr["AnswerCount"].ToString());
					_with1.AOL = dr["AOL"].ToString();
					_with1.Avatar = dr["Avatar"].ToString();
					_with1.AvatarType = (AvatarTypes)int.Parse(dr["AvatarType"].ToString());
					_with1.DateCreated = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["UserDateCreated"].ToString()), ControlConfig.InstanceId));
					_with1.DateLastActivity = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["DateLastActivity"].ToString()), ControlConfig.InstanceId));
					_with1.DateLastPost = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["DateLastPost"].ToString()), ControlConfig.InstanceId));
					if (!string.IsNullOrEmpty(dr["UserDateUpdated"].ToString())) {
						_with1.DateUpdated = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["UserDateUpdated"].ToString()), ControlConfig.InstanceId));
					}
					_with1.Interests = dr["Interests"].ToString();
					_with1.IsUserOnline = bool.Parse(dr["IsUserOnline"].ToString());
					_with1.Location = dr["Location"].ToString();
					_with1.MSN = dr["MSN"].ToString();
					_with1.Occupation = dr["Occupation"].ToString();
					_with1.TopicCount = int.Parse(dr["UserTopicCount"].ToString());
					_with1.ReplyCount = int.Parse(dr["UserReplyCount"].ToString());
					_with1.RewardPoints = int.Parse(dr["RewardPoints"].ToString());
					_with1.Roles = dr["UserRoles"].ToString();
					_with1.Signature = dr["Signature"].ToString();
					_with1.TrustLevel = int.Parse(dr["TrustLevel"].ToString());
					_with1.WebSite = dr["WebSite"].ToString();
					_with1.Yahoo = dr["Yahoo"].ToString();
					tAuthor = profile;

					if (DataPageId == 1) {
						sTemp = ParseTopic(sTemp, Subject, CreateDate, Body, Tags, Convert.ToString(EditDate), IPAddress, ForumUser, rowCount);
						rowCount += 1;
					} else {
						sTemp = TemplateUtils.ReplaceSubSection(sTemp, string.Empty, "[TOPIC]", "[/TOPIC]");
					}
				}
				if (ForumInfo == null) {
					ForumController fc = new ForumController();
					Forum fi = null;
					fi = fc.Forums_Get(ForumId, UserId, true, true);
					ForumInfo = fi;
				}
				sTemp = sTemp.Replace("[FORUMID]", ForumId.ToString);
				sTemp = sTemp.Replace("[FORUMNAME]", ForumInfo.ForumName);
				sTemp = sTemp.Replace("[TOPICID]", TopicId.ToString);
				sTemp = sTemp.Replace("[CREATEROLES]", ForumInfo.Security.Create);
				sTemp = sTemp.Replace("[USERROLES]", ForumUser.UserRoles);
				sTemp = sTemp.Replace("[THEMEPATH]", ThemePath);
				sTemp = sTemp.Replace("[SUBJECT]", Subject);
				sTemp = sTemp.Replace("[PAGEID]", PageId.ToString);
				sTemp = sTemp.Replace("[REPLYROLES]", ForumInfo.Security.Reply);
				sTemp = sTemp.Replace("AF:SECURITY:MODROLES]", "AF:SECURITY:MODROLES:" + ForumInfo.Security.ModApprove + "]");
				sTemp = sTemp.Replace("AF:SECURITY:MODAPPROVE]", "AF:SECURITY:MODAPPROVE:" + ForumInfo.Security.ModApprove + "]");
				sTemp = sTemp.Replace("AF:SECURITY:DELETE]", "AF:SECURITY:DELETE:" + ForumInfo.Security.Delete + ForumInfo.Security.ModDelete + "]");
				sTemp = sTemp.Replace("AF:SECURITY:EDIT]", "AF:SECURITY:EDIT:" + ForumInfo.Security.Edit + ForumInfo.Security.ModEdit + "]");
				sTemp = sTemp.Replace("AF:SECURITY:LOCK]", "AF:SECURITY:LOCK:" + ForumInfo.Security.Lock + ForumInfo.Security.ModLock + "]");
				sTemp = sTemp.Replace("AF:SECURITY:MOVE]", "AF:SECURITY:MOVE:" + ForumInfo.Security.ModMove + "]");
				sTemp = sTemp.Replace("AF:SECURITY:PIN]", "AF:SECURITY:PIN:" + ForumInfo.Security.Pin + ForumInfo.Security.ModPin + "]");
				sTemp = sTemp.Replace("AF:SECURITY:SPLIT]", "AF:SECURITY:SPLIT:" + ForumInfo.Security.ModSplit + "]");
				sTemp = sTemp.Replace("AF:SECURITY:REPLY]", "AF:SECURITY:REPLY:" + ForumInfo.Security.Reply + "]");
				if (LastPostDate == null) {
					LastPostDate = CreateDate;
				}
				string LastPostAuthor = string.Empty;
				if (((bRead & tAuthor.UserID == this.UserId)) & statusId >= 0) {
					sTemp = sTemp.Replace("[AF:CONTROL:STATUS]", "<asp:placeholder id=\"plhStatus\" runat=\"server\" />");
					sTemp = sTemp.Replace("[AF:CONTROL:STATUSICON]", "<img alt=\"[RESX:PostStatus" + statusId.ToString() + "]\" src=\"" + ThemePath + "status" + statusId.ToString() + ".png\" />");
				} else if (statusId >= 0) {
					sTemp = sTemp.Replace("[AF:CONTROL:STATUS]", string.Empty);
					sTemp = sTemp.Replace("[AF:CONTROL:STATUSICON]", "<img alt=\"[RESX:PostStatus" + statusId.ToString() + "]\" src=\"" + ThemePath + "status" + statusId.ToString() + ".png\" />");
				} else {
					sTemp = sTemp.Replace("[AF:CONTROL:STATUS]", string.Empty);
					sTemp = sTemp.Replace("[AF:CONTROL:STATUSICON]", string.Empty);
					sTemp = sTemp.Replace("[ACTIONS:ANSWER]", string.Empty);
				}
				if (string.IsNullOrEmpty(LastPostData)) {
					LastPostAuthor = UserProfiles.GetDisplayName(ControlConfig.InstanceId, MainSettings.ProfileVisibility, false, tAuthor.UserID, MainSettings.UserNameDisplay, MainSettings.DisableUserProfiles, tAuthor.Username, tAuthor.FirstName, tAuthor.LastName, tAuthor.DisplayName);
				} else {
					Author la = new Author();
					System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
					xDoc.LoadXml(LastPostData);
					System.Xml.XmlNode xNode = xDoc.SelectSingleNode("//root/lastpost");
					if ((xNode != null)) {
						var _with2 = la;
						_with2.AuthorId = int.Parse(xNode["authorid"].InnerText.ToString());
						_with2.DisplayName = xNode["displayname"].InnerText;
						_with2.FirstName = xNode["firstname"].InnerText;
						_with2.LastName = xNode["lastname"].InnerText;
						_with2.Username = xNode["username"].InnerText;
					}
					LastPostAuthor = UserProfiles.GetDisplayName(ControlConfig.InstanceId, MainSettings.ProfileVisibility, false, la.AuthorId, MainSettings.UserNameDisplay, MainSettings.DisableUserProfiles, la.Username, la.FirstName, la.LastName, la.DisplayName);
				}
				//TODO:Fix LastPostDate Format
				sTemp = sTemp.Replace("[AF:LABEL:LastPostDate]", LastPostDate.ToString());
				sTemp = sTemp.Replace("[AF:LABEL:LastPostAuthor]", LastPostAuthor);
				sTemp = sTemp.Replace("[AF:LABEL:ReplyCount]", ReplyCount.ToString());
				string sURL = "<a rel=\"nofollow\" href=\"" + Utilities.NavigateUrl(PageId, "", ParamKeys.ForumId + "=" + ForumId, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + TopicId, "mid=" + ControlConfig.InstanceId.ToString, "dnnprintmode=true") + "?skinsrc=" + HttpUtility.UrlEncode("[G]" + DotNetNuke.UI.Skins.SkinInfo.RootSkin + "/" + DotNetNuke.Common.glbHostSkinFolder + "/" + "No Skin") + "&amp;containersrc=" + HttpUtility.UrlEncode("[G]" + DotNetNuke.UI.Skins.SkinInfo.RootContainer + "/" + DotNetNuke.Common.glbHostSkinFolder + "/" + "No Container") + "\" target=\"_blank\">";
				sURL += "<img src=\"" + ThemePath + "images/spacer.gif\" alt=\"[RESX:PrinterFriendly]\" class=\"aficon aficonprint\" /></a>";
				sTemp = sTemp.Replace("[AF:CONTROL:PRINTER]", sURL);
				if (HttpContext.Current.Request.IsAuthenticated) {
					sURL = Utilities.NavigateUrl(PageId, "", new string[] {
						ParamKeys.ViewType + "=sendto",
						ParamKeys.ForumId + "=" + ForumId,
						ParamKeys.TopicId + "=" + TopicId
					});
					sTemp = sTemp.Replace("[AF:CONTROL:EMAIL]", "<a href=\"" + sURL + "\" rel=\"nofollow\"><img src=\"" + ThemePath + "images/spacer.gif\" class=\"aficon aficonemail\" alt=\"[RESX:EmailThis]\" /></a>");
				} else {
					sTemp = sTemp.Replace("[AF:CONTROL:EMAIL]", string.Empty);
				}
				if (ForumInfo.AllowRSS) {
					string Url = null;
					Url = DotNetNuke.Common.AddHTTP(DotNetNuke.Common.GetDomainName(HttpContext.Current.Request)) + "/DesktopModules/ActiveForums/feeds.aspx?portalid=" + ControlConfig.SiteId + "&forumid=" + ForumId + "&tabid=" + PageId + "&moduleid=" + ControlConfig.InstanceId;
					sTemp = sTemp.Replace("[RSSLINK]", "<a href=\"" + Url + "\"><img src=\"" + ThemePath + "images/rss.png\" runat=server border=\"0\" alt=\"[RESX:RSS]\" /></a>");
				} else {
					sTemp = sTemp.Replace("[RSSLINK]", string.Empty);
				}
				if (nextTopic == 0) {
					sTemp = sTemp.Replace("[NEXTTOPICID]", string.Empty);
					sTemp = sTemp.Replace("[HASNEXTTOPIC]", "False");
				} else {
					sTemp = sTemp.Replace("[NEXTTOPICID]", nextTopic.ToString());
					sTemp = sTemp.Replace("[HASNEXTTOPIC]", "True");
				}
				if (prevTopic == 0) {
					sTemp = sTemp.Replace("[PREVTOPICID]", string.Empty);
					sTemp = sTemp.Replace("[HASPREVTOPIC]", "False");
				} else {
					sTemp = sTemp.Replace("[PREVTOPICID]", prevTopic.ToString());
					sTemp = sTemp.Replace("[HASPREVTOPIC]", "True");
				}
				dr.NextResult();
				//Process Replies
				StringBuilder sb = new StringBuilder();
				sb.Append(string.Empty);
				int replyId = 0;
				while (dr.Read()) {
					Subject = dr["Subject"].ToString();
					Body = dr["Body"].ToString();
					CreateDate = Convert.ToDateTime(dr["DateCreated"].ToString());
					EditDate = Convert.ToDateTime(dr["DateUpdated"].ToString());
					IPAddress = dr["IPAddress"].ToString();
					replyId = int.Parse(dr["ReplyId"].ToString());
					UserProfileInfo profile = new UserProfileInfo();
					var _with3 = profile;
					_with3.UserID = int.Parse(dr["AuthorId"].ToString());
					if (string.IsNullOrEmpty(dr["DisplayName"].ToString())) {
						_with3.DisplayName = dr["AuthorName"].ToString();
					} else {
						_with3.DisplayName = dr["DisplayName"].ToString();
					}
					_with3.FirstName = dr["FirstName"].ToString();
					_with3.LastName = dr["LastName"].ToString();
					_with3.Username = dr["Username"].ToString();
					_with3.UserCaption = dr["UserCaption"].ToString();
					_with3.AnswerCount = int.Parse(dr["AnswerCount"].ToString());
					_with3.AOL = dr["AOL"].ToString();
					_with3.Avatar = dr["Avatar"].ToString();
					_with3.AvatarType = (AvatarTypes)int.Parse(dr["AvatarType"].ToString());
					_with3.DateCreated = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["UserDateCreated"].ToString()), ControlConfig.InstanceId));
					_with3.DateLastActivity = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["DateLastActivity"].ToString()), ControlConfig.InstanceId));
					if (!string.IsNullOrEmpty(dr["DateLastPost"].ToString())) {
						_with3.DateLastPost = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["DateLastPost"].ToString()), ControlConfig.InstanceId));
					}

					if (!string.IsNullOrEmpty(dr["UserDateUpdated"].ToString())) {
						_with3.DateUpdated = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["UserDateUpdated"].ToString()), ControlConfig.InstanceId));
					}
					_with3.Interests = dr["Interests"].ToString();
					_with3.IsUserOnline = bool.Parse(dr["IsUserOnline"].ToString());
					_with3.Location = dr["Location"].ToString();
					_with3.MSN = dr["MSN"].ToString();
					_with3.Occupation = dr["Occupation"].ToString();
					_with3.TopicCount = int.Parse(dr["UserTopicCount"].ToString());
					_with3.ReplyCount = int.Parse(dr["UserReplyCount"].ToString());
					_with3.RewardPoints = int.Parse(dr["RewardPoints"].ToString());
					_with3.Roles = dr["UserRoles"].ToString();
					_with3.Signature = dr["Signature"].ToString();
					_with3.TrustLevel = int.Parse(dr["TrustLevel"].ToString());
					_with3.WebSite = dr["WebSite"].ToString();
					_with3.Yahoo = dr["Yahoo"].ToString();
					sb.Append(ParseReply(sTemp, replyId, Subject, CreateDate, Body, Convert.ToString(EditDate), IPAddress, ForumUser, rowCount));
					rowCount += 1;
				}
				dr.Close();
				sTemp = TemplateUtils.ReplaceSubSection(sTemp, sb.ToString(), "[REPLIES]", "[/REPLIES]");
				sTemp = Utilities.LocalizeControl(sTemp);
				sTemp = sTemp.Replace("[TOPICID]", TopicId.ToString);
				sTemp = sTemp.Replace("[GROUPNAME]", ForumInfo.GroupName);
				sTemp = sTemp.Replace("[FORUMNAME]", ForumInfo.ForumName);
				sTemp = sTemp.Replace("[TOPICRATING]", topicRating.ToString());
				sTemp = sTemp.Replace("[CURRENTUSERID]", UserId.ToString);

				sTemp = Utilities.ParseSecurityTokens(sTemp, ForumUser.UserRoles);
				if (!sTemp.Contains(Globals.ControlRegisterAFTag)) {
					sTemp = Globals.ControlRegisterAFTag + sTemp;
				}
				Control ctl = Page.ParseControl(sTemp);
				LinkControls(ctl.Controls);
				this.Controls.Add(ctl);
			}
		}
示例#41
0
        protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);

            string sTemplate = string.Empty;
            if (System.IO.File.Exists(Server.MapPath(ImagePath + "/_userprofile.txt")))
            {
                sTemplate = Utilities.GetFileContent(Server.MapPath(ImagePath + "/_userprofile.txt"));
            }
            else
            {
                sTemplate = Utilities.GetFileContent(Server.MapPath("~/DesktopModules/ActiveForums/config/templates/_userprofile.txt"));
            }
            sTemplate = Utilities.ParseSpacer(sTemplate);


            if (ProfileMode == ProfileModes.Edit)
            {
                sTemplate = "<%@ Register TagPrefix=\"dnn\" Assembly=\"DotNetNuke\" Namespace=\"DotNetNuke.UI.WebControls\"%>" + sTemplate;
            }
            Literal lit = new Literal();
            UserController upc = new UserController();
            User up = upc.GetUser(PortalId, ModuleId, UID);
            ForumController fc = new ForumController();
            up.UserForums = fc.GetForumsForUser(up.UserRoles, PortalId, ForumModuleId, "CanRead");
            sTemplate = TemplateUtils.ParseProfileTemplate(sTemplate, up, PortalId, ModuleId, ImagePath, CurrentUserType, UserInfo.UserID, TimeZoneOffset);
            sTemplate = RenderModals(sTemplate);

            sTemplate = sTemplate.Replace("[AM:CONTROLS:AdminProfileSettings]", "<asp:placeholder id=\"plhProfileAdminSettings\" runat=\"server\" />");
            sTemplate = sTemplate.Replace("[AM:CONTROLS:ProfileMyPreferences]", "<asp:placeholder id=\"plhProfilePrefs\" runat=\"server\" />");
            sTemplate = sTemplate.Replace("[AM:CONTROLS:ProfileUserAccount]", "<asp:placeholder id=\"plhProfileUserAccount\" runat=\"server\" />");
            sTemplate = sTemplate.Replace("[AM:CONTROLS:ProfileForumTracker]", "<asp:placeholder id=\"plhTracker\" runat=\"server\" />");
            sTemplate = sTemplate.Replace("[AF:PROFILE:VIEWUSERPOSTS]", "<a href=\"" + NavigateUrl(TabId, "", ParamKeys.ViewType + "=search&uid=" + UID.ToString()) + "\">[RESX:ViewPostsByUser]</a>");



            sTemplate = GetTabsSection(sTemplate);
            Control ctl = this.ParseControl(sTemplate);
            this.Controls.Add(ctl);
            while (!(ctl.Controls.Count == 0))
            {
                this.Controls.Add(ctl.Controls[0]);
            }
            //Begin Load Tab Control
            plhTabs = (PlaceHolder)(this.FindControl("plhTabs"));
            if (plhTabs != null & amTabs != null)
            {
                plhTabs.Controls.Add(amTabs);
            }
            LinkControls(Controls);
            if (plhProfileEditButton != null)
            {
                btnProfileEdit = new ImageButton();
                btnProfileEdit.ID = "btnProfileEdit";
                btnProfileEdit.CssClass = "amimagebutton";
                btnProfileEdit.PostBack = true;
                btnProfileEdit.Height = 50;
                btnProfileEdit.Width = 50;
                btnProfileEdit.ImageLocation = "TOP";
                btnProfileEdit.Text = "[RESX:Button:Edit]";
                btnProfileEdit.ImageUrl = "~/DesktopModules/ActiveForums/images/edit32.png";
                btnProfileEdit.Visible = false;
                plhProfileEditButton.Controls.Add(btnProfileEdit);
            }
            if (plhProfileCancelButton != null)
            {
                btnProfileCancel = new ImageButton();
                btnProfileCancel.ID = "btnProfileCancel";
                btnProfileCancel.CssClass = "amimagebutton";
                btnProfileCancel.PostBack = true;
                btnProfileCancel.Height = 50;
                btnProfileCancel.Width = 50;
                btnProfileCancel.ImageLocation = "TOP";
                btnProfileCancel.Text = "[RESX:Button:Cancel]";
                btnProfileCancel.ImageUrl = "~/DesktopModules/ActiveForums/images/cancel32.png";
                btnProfileCancel.Visible = false;
                plhProfileCancelButton.Controls.Add(btnProfileCancel);
            }
            if (plhProfileSaveButton != null)
            {
                btnProfileSave = new ImageButton();
                btnProfileSave.ID = "btnProfileSave";
                btnProfileSave.CssClass = "amimagebutton";
                btnProfileSave.PostBack = true;
                btnProfileSave.Height = 50;
                btnProfileSave.Width = 50;
                btnProfileSave.ImageLocation = "TOP";
                btnProfileSave.Text = "[RESX:Button:Save]";
                btnProfileSave.ImageUrl = "~/DesktopModules/ActiveForums/images/save32.png";
                btnProfileSave.Visible = false;
                plhProfileSaveButton.Controls.Add(btnProfileSave);
            }

            if (plhProfileAdminSettings != null)
            {
                ProfileBase tmpCtl = (ProfileBase)(this.LoadControl("~/DesktopModules/ActiveForums/controls/profile_adminsettings.ascx"));
                tmpCtl.ModuleConfiguration = this.ModuleConfiguration;
                tmpCtl.UserProfile = up.Profile;
                plhProfileAdminSettings.Controls.Add(tmpCtl);
            }
            if (plhProfilePrefs != null)
            {
                ProfileBase tmpCtl = (ProfileBase)(this.LoadControl("~/DesktopModules/ActiveForums/controls/profile_mypreferences.ascx"));
                tmpCtl.ModuleConfiguration = this.ModuleConfiguration;
                tmpCtl.UserProfile = up.Profile;
                plhProfilePrefs.Controls.Add(tmpCtl);
            }
            if (plhProfileUserAccount != null)
            {
                ProfileBase tmpCtl = (ProfileBase)(this.LoadControl("~/DesktopModules/ActiveForums/controls/profile_useraccount.ascx"));
                tmpCtl.ModuleConfiguration = this.ModuleConfiguration;
                tmpCtl.UserProfile = up.Profile;
                plhProfileUserAccount.Controls.Add(tmpCtl);
            }
            if (plhTracker != null)
            {
                ForumView ctlForums = new ForumView();
                ctlForums.ModuleConfiguration = this.ModuleConfiguration;
                ctlForums.DisplayTemplate = DataCache.GetTemplate("ForumTracking.txt");
                ctlForums.CurrentUserId = UID;
                ctlForums.ForumIds = up.UserForums;
                plhTracker.Controls.Add(ctlForums);
            }
            if (btnProfileEdit != null)
            {
                if (!(CurrentUserType == CurrentUserTypes.Anon) && (UID == this.UserId || (CurrentUserType == CurrentUserTypes.Admin || CurrentUserType == CurrentUserTypes.Admin || CurrentUserType == CurrentUserTypes.SuperUser)))
                {
                    if (ProfileMode == ProfileModes.View)
                    {
                        btnProfileEdit.Visible = true;
                        btnProfileCancel.Visible = false;
                        btnProfileSave.Visible = false;
                    }
                    else
                    {
                        btnProfileEdit.Visible = false;
                        btnProfileCancel.Visible = true;
                        btnProfileSave.Visible = true;
                    }
                }
            }

        }
示例#42
0
        private void SaveQuickReply()
        {
            int iFloodInterval = MainSettings.FloodInterval;
            if (iFloodInterval > 0)
            {
                UserProfileController upc = new UserProfileController();
                UserProfileInfo upi = upc.Profiles_Get(SiteId, InstanceId, this.UserId);
                if (upi != null)
                {
                    if (SimulateDateDiff.DateDiff(SimulateDateDiff.DateInterval.Second, upi.DateLastPost, DateTime.Now) < iFloodInterval)
                    {
                        Controls.InfoMessage im = new Controls.InfoMessage();
                        im.Message = "<div class=\"afmessage\">" + string.Format(Utilities.GetSharedResource("[RESX:Error:FloodControl]"), iFloodInterval) + "</div>";
                        plhMessage.Controls.Add(im);
                        return;
                    }
                }
            }
            //TODO: Fix for anon
            //If Not Current.Request.IsAuthenticated Then
            //    If Not ctlCaptcha.IsValid Or txtUserName.Value = "" Then
            //        Exit Sub
            //    End If
            //End If
            //Dim ui As New UserProfileInfo
            //If UserId > 0 Then
            //    Dim upc As New UserProfileController
            //    ui = upc.Profiles_Get(PortalId, ForumModuleId, UserId)
            //Else
            //    ui.TopicCount = 0
            //    ui.ReplyCount = 0
            //    ui.RewardPoints = 0
            //    ui.IsMod = False
            //    ui.TrustLevel = -1

            //End If
            ForumController fc = new ForumController();
            Forum forumInfo = fc.Forums_Get(SiteId, InstanceId, ForumId, this.UserId, true, false, TopicId);
            bool UserIsTrusted = false;
            UserIsTrusted = Utilities.IsTrusted((int)forumInfo.DefaultTrustValue, ControlConfig.User.TrustLevel, Permissions.HasPerm(forumInfo.Security.Trust, ForumUser.UserRoles), forumInfo.AutoTrustLevel, ControlConfig.User.PostCount);
            bool isApproved = false;
            isApproved = Convert.ToBoolean(((forumInfo.IsModerated == true) ? false : true));
            if (UserIsTrusted || Permissions.HasPerm(forumInfo.Security.ModApprove, ForumUser.UserRoles))
            {
                isApproved = true;
            }
            ReplyInfo ri = new ReplyInfo();
            Data.Topics db = new Data.Topics();
            //im rc As New ReplyController
            int ReplyId = -1;
            string sUsername = string.Empty;
            if (HttpContext.Current.Request.IsAuthenticated)
            {
                sUsername = ControlConfig.User.DisplayName;
            }
            else
            {
                sUsername = Utilities.CleanString(SiteId, txtUserName.Value, false, EditorTypes.TEXTBOX, true, false, InstanceId, ThemePath, false);
            }

            string sBody = string.Empty;
            //TODO: Check for allowhtml
            bool allowHtml = false;
            //If forumInfo.AllowHTML Then
            //    allowHtml = isHTMLPermitted(forumInfo.EditorPermittedUsers, IsTrusted, forumInfo.Security.ModEdit)
            //End If
            sBody = Utilities.CleanString(SiteId, HttpContext.Current.Request.Form["txtBody"], allowHtml, EditorTypes.TEXTBOX, forumInfo.UseFilter, forumInfo.AllowScript, InstanceId, ThemePath, forumInfo.AllowEmoticons);
            DateTime createDate = DateTime.Now;
            ri.TopicId = TopicId;
            ri.ReplyToId = TopicId;
            ri.Content.AuthorId = UserId;
            ri.Content.AuthorName = sUsername;
            ri.Content.Body = sBody;
            ri.Content.DateCreated = createDate;
            ri.Content.DateUpdated = createDate;
            ri.Content.IsDeleted = false;
            ri.Content.Subject = Subject;
            ri.Content.Summary = string.Empty;
            ri.IsApproved = isApproved;
            ri.IsDeleted = false;
            ri.Content.IPAddress = HttpContext.Current.Request.UserHostAddress;
            ReplyId = db.Reply_Save(ri);
            //Check if is subscribed
            if (HttpContext.Current.Request.Params["chkSubscribe"] != null)
            {
                if (HttpContext.Current.Request.Params["chkSubscribe"] == "1" && UserId > 0)
                {
                    if (!(Subscriptions.IsSubscribed(SiteId, InstanceId, ForumId, TopicId, SubscriptionTypes.Instant, UserId)))
                    {
                        //TODO: Fix Subscriptions
                        //Dim sc As New Data.Tracking
                        //sc.Subscription_Update(SiteId, InstanceId, ForumId, TopicId, 1, UserId)
                    }
                }
            }
            if (isApproved)
            {
                //Send Subscriptions
                try
                {
                    string sURL = Utilities.NavigateUrl(PageId, "", new string[] { ParamKeys.ForumId + "=" + ForumId, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + TopicId, ParamKeys.ContentJumpId + "=" + ReplyId });
                    Subscriptions.SendSubscriptions(SiteId, InstanceId, PageId, ForumId, TopicId, ReplyId, UserId);

#if !SKU_LITE
                    try
                    {
                        Social oSocial = new Social();
                        oSocial.AddForumItemToJournal(SiteId, InstanceId, UserId, "forumreply", sURL, Subject, sBody);
                    }
                    catch (Exception ex)
                    {
                        DotNetNuke.Services.Exceptions.Exceptions.LogException(ex);
                    }

#endif
                }
                catch (Exception ex)
                {
                    DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(this, ex);
                }
                //Redirect to show post
                string fullURL = Utilities.NavigateUrl(PageId, "", new string[] { ParamKeys.ForumId + "=" + ForumId, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + TopicId, ParamKeys.ContentJumpId + "=" + ReplyId });
                HttpContext.Current.Response.Redirect(fullURL, false);
            }
            else if (isApproved == false)
            {
                Email.SendEmailToModerators(forumInfo.ModNotifyTemplateId, SiteId, ForumId, ri.TopicId, ReplyId, InstanceId, PageId, string.Empty);
                string[] Params = { ParamKeys.ForumId + "=" + ForumId, ParamKeys.ViewType + "=confirmaction", "afmsg=pendingmod", ParamKeys.TopicId + "=" + TopicId };
                HttpContext.Current.Response.Redirect(Utilities.NavigateUrl(PageId, "", Params), false);
            }
            else
            {
                string fullURL = Utilities.NavigateUrl(PageId, "", new string[] { ParamKeys.ForumId + "=" + ForumId, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + TopicId, ParamKeys.ContentJumpId + "=" + ReplyId });

#if !SKU_LITE
                try
                {
                    Modules.ActiveForums.Social oSocial = new Modules.ActiveForums.Social();
                    oSocial.AddForumItemToJournal(SiteId, InstanceId, UserId, "forumreply", fullURL, Subject, sBody);
                }
                catch (Exception ex)
                {
                    DotNetNuke.Services.Exceptions.Exceptions.LogException(ex);
                }

#endif
                HttpContext.Current.Response.Redirect(fullURL, false);
            }

            //End If


        }
示例#43
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            try
            {
                if (ForumId < 1)
                {
                    Response.Redirect(NavigateUrl(TabId));
                }
                if (ForumInfo == null)
                {
                    Response.Redirect(NavigateUrl(TabId));
                }
                if (ForumInfo.Active == false)
                {
                    Response.Redirect(NavigateUrl(TabId));
                }
                this.AppRelativeVirtualPath = "~/";
                MyTheme = MainSettings.Theme;
                MyThemePath = Page.ResolveUrl("~/DesktopModules/ActiveForums/themes/" + MyTheme);
                int defaultTemplateId = ForumInfo.TopicsTemplateId;
                if (DefaultTopicsViewTemplateId >= 0)
                {
                    defaultTemplateId = DefaultTopicsViewTemplateId;
                }
                string TopicsTemplate = string.Empty;
                if (UseTemplatePath && !(TemplatePath == string.Empty))
                {
                    TopicsTemplate = Utilities.GetFileContent(TemplatePath + "TopicsView.htm");
                    TopicsTemplate = Utilities.ParseSpacer(TopicsTemplate);
                }
                else
                {
                    TopicsTemplate = DataCache.GetCachedTemplate(MainSettings.TemplateCache, ModuleId, "TopicsView", defaultTemplateId);
                }
                bool loadComplete = false;
                if (TopicsTemplate.Contains("[NOTOOLBAR]"))
                {
                    if (HttpContext.Current.Items.Contains("ShowToolbar"))
                    {
                        HttpContext.Current.Items["ShowToolbar"] = false;
                    }
                    else
                    {
                        HttpContext.Current.Items.Add("ShowToolbar", false);
                    }
                    TopicsTemplate = TopicsTemplate.Replace("[NOTOOLBAR]", string.Empty);
                }
                TopicsTemplate = TopicsTemplate.Replace("[PORTALID]", PortalId.ToString());
                TopicsTemplate = TopicsTemplate.Replace("[MODULEID]", ForumModuleId.ToString());
                TopicsTemplate = TopicsTemplate.Replace("[TABID]", ForumTabId.ToString());
                TopicsTemplate = TopicsTemplate.Replace("[AF:CONTROL:FORUMID]", ForumId.ToString());
                TopicsTemplate = TopicsTemplate.Replace("[AF:CONTROL:FORUMGROUPID]", ForumGroupId.ToString());
                TopicsTemplate = TopicsTemplate.Replace("[AF:CONTROL:PARENTFORUMID]", ParentForumId.ToString());

                PageSize = MainSettings.PageSize;
                if (UserId > 0)
                {
                    PageSize = UserDefaultPageSize;
                }
                if (PageSize < 5)
                {
                    PageSize = 10;
                }

                if (PageId == 1)
                {
                    RowIndex = 0;
                }
                else
                {
                    RowIndex = ((PageId * PageSize) - PageSize);
                }
                string sort = SortColumns.ReplyCreated;
                if (TopicsTemplate.Contains("[AF:SORT:TOPICCREATED]"))
                {
                    sort = SortColumns.TopicCreated;
                    TopicsTemplate = TopicsTemplate.Replace("[AF:SORT:TOPICCREATED]", string.Empty);
                }
                TopicsTemplate = CheckControls(TopicsTemplate);

                TopicsTemplate = TopicsTemplate.Replace("[AF:SORT:REPLYCREATED]", string.Empty);
                if (TopicsTemplate.Contains("[TOPICS]"))
                {
                    DataSet ds = DataProvider.Instance().UI_TopicsView(PortalId, ModuleId, ForumId, UserId, RowIndex, PageSize, UserInfo.IsSuperUser, sort);
                    if (ds.Tables.Count > 0)
                    {
                        drForum = ds.Tables[0].Rows[0];
                        drSecurity = ds.Tables[1].Rows[0];
                        dtSubForums = ds.Tables[2];
                        dtTopics = ds.Tables[3];
                        if (PageId == 1)
                        {
                            dtAnnounce = ds.Tables[4];
                        }

                        bView = Permissions.HasPerm(drSecurity["CanView"].ToString(), ForumUser.UserRoles);
                        bRead = Permissions.HasPerm(drSecurity["CanRead"].ToString(), ForumUser.UserRoles);
                        //bCreate = Permissions.HasPerm(drSecurity["CanCreate"].ToString(), ForumUser.UserRoles);
                        bEdit = Permissions.HasPerm(drSecurity["CanEdit"].ToString(), ForumUser.UserRoles);
                        bDelete = Permissions.HasPerm(drSecurity["CanDelete"].ToString(), ForumUser.UserRoles);
                        //bReply = Permissions.HasPerm(drSecurity["CanReply"].ToString(), ForumUser.UserRoles);
                        bPoll = Permissions.HasPerm(drSecurity["CanPoll"].ToString(), ForumUser.UserRoles);

                        bSubscribe = Permissions.HasPerm(drSecurity["CanSubscribe"].ToString(), ForumUser.UserRoles);
                        bModMove = Permissions.HasPerm(drSecurity["CanModMove"].ToString(), ForumUser.UserRoles);
                        bModSplit = Permissions.HasPerm(drSecurity["CanModSplit"].ToString(), ForumUser.UserRoles);
                        bModDelete = Permissions.HasPerm(drSecurity["CanModDelete"].ToString(), ForumUser.UserRoles);
                        bModApprove = Permissions.HasPerm(drSecurity["CanModApprove"].ToString(), ForumUser.UserRoles);
                        bModEdit = Permissions.HasPerm(drSecurity["CanModEdit"].ToString(), ForumUser.UserRoles);
                        bModPin = Permissions.HasPerm(drSecurity["CanModPin"].ToString(), ForumUser.UserRoles);
                        bModLock = Permissions.HasPerm(drSecurity["CanModLock"].ToString(), ForumUser.UserRoles);
                        bModApprove = Permissions.HasPerm(drSecurity["CanModApprove"].ToString(), ForumUser.UserRoles);

                        ControlUtils ctlUtils = new ControlUtils();
                        sGroupURL = ctlUtils.BuildUrl(ForumTabId, ForumModuleId, ForumInfo.ForumGroup.PrefixURL, string.Empty, ForumInfo.ForumGroupId, -1, -1, -1, string.Empty, 1, -1, SocialGroupId);
                        sForumURL = ctlUtils.BuildUrl(ForumTabId, ForumModuleId, ForumInfo.ForumGroup.PrefixURL, ForumInfo.PrefixURL, ForumInfo.ForumGroupId, ForumInfo.ForumID, -1, -1, string.Empty, 1, -1, SocialGroupId);
                        if (bView)
                        {
                            ForumName = drForum["ForumName"].ToString();
                            GroupName = drForum["GroupName"].ToString();
                            ForumGroupId = Convert.ToInt32(drForum["ForumGroupId"]);
                            //TopicsTemplateId = CInt(drForum("TopicsTemplateId"))
                            try
                            {
                                bAllowRSS = Convert.ToBoolean(drForum["AllowRSS"]);
                            }
                            catch
                            {
                                bAllowRSS = false;
                            }

                            if (bRead == false)
                            {
                                bAllowRSS = false;
                            }
                            TopicRowCount = Convert.ToInt32(drForum["TopicRowCount"]);
                            if (UserId > 0)
                            {
                                IsSubscribedForum = Convert.ToBoolean(((Convert.ToInt32(drForum["IsSubscribedForum"]) > 0) ? true : false));
                            }
                            if (MainSettings.UseSkinBreadCrumb)
                            {
                                Environment.UpdateBreadCrumb(Page.Controls, "<a href=\"" + sGroupURL + "\">" + GroupName + "</a>");
                                TopicsTemplate = TopicsTemplate.Replace("<div class=\"afcrumb\">[FORUMMAINLINK] > [FORUMGROUPLINK]</div>", string.Empty);
                            }
                            if (TopicsTemplate.Contains("[META]"))
                            {
                                MetaTemplate = TemplateUtils.GetTemplateSection(TopicsTemplate, "[META]", "[/META]");
                                TopicsTemplate = TemplateUtils.ReplaceSubSection(TopicsTemplate, string.Empty, "[META]", "[/META]");
                            }
                            //Parse Meta Template
                            if (!(string.IsNullOrEmpty(MetaTemplate)))
                            {
                                MetaTemplate = MetaTemplate.Replace("[FORUMNAME]", ForumName);
                                MetaTemplate = MetaTemplate.Replace("[GROUPNAME]", GroupName);
                                string pageName = string.Empty;
                                DotNetNuke.Entities.Portals.PortalSettings settings = DotNetNuke.Entities.Portals.PortalController.GetCurrentPortalSettings();
                                if (settings.ActiveTab.Title.Length == 0)
                                {
                                    pageName = Server.HtmlEncode(settings.ActiveTab.TabName);
                                }
                                else
                                {
                                    pageName = Server.HtmlEncode(settings.ActiveTab.Title);
                                }
                                MetaTemplate = MetaTemplate.Replace("[PAGENAME]", pageName);
                                MetaTemplate = MetaTemplate.Replace("[PORTALNAME]", settings.PortalName);
                                MetaTemplate = MetaTemplate.Replace("[TAGS]", string.Empty);
                                if (MetaTemplate.Contains("[TOPICSUBJECT:"))
                                {
                                    string pattern = "(\\[TOPICSUBJECT:(.+?)\\])";
                                    Regex regExp = new Regex(pattern);
                                    MatchCollection matches = null;
                                    matches = regExp.Matches(MetaTemplate);
                                    foreach (Match m in matches)
                                    {
                                        MetaTemplate = MetaTemplate.Replace(m.Value, string.Empty);
                                    }
                                }
                                MetaTemplate = MetaTemplate.Replace("[TOPICSUBJECT]", string.Empty);
                                if (MetaTemplate.Contains("[BODY:"))
                                {
                                    string pattern = "(\\[BODY:(.+?)\\])";
                                    Regex regExp = new Regex(pattern);
                                    MatchCollection matches = null;
                                    matches = regExp.Matches(MetaTemplate);
                                    foreach (Match m in matches)
                                    {
                                        int iLen = Convert.ToInt32(m.Groups[2].Value);
                                        if (ForumInfo.ForumDesc.Length > iLen)
                                        {
                                            MetaTemplate = MetaTemplate.Replace(m.Value, ForumInfo.ForumDesc.Substring(0, iLen) + "...");
                                        }
                                        else
                                        {
                                            MetaTemplate = MetaTemplate.Replace(m.Value, ForumInfo.ForumDesc);
                                        }
                                    }
                                }
                                MetaTemplate = MetaTemplate.Replace("[BODY]", Utilities.StripHTMLTag(ForumInfo.ForumDesc));

                                MetaTitle = TemplateUtils.GetTemplateSection(MetaTemplate, "[TITLE]", "[/TITLE]").Replace("[TITLE]", string.Empty).Replace("[/TITLE]", string.Empty);
                                MetaTitle = MetaTitle.TruncateAtWord(SEOConstants.MaxMetaTitleLength);
                                MetaDescription = TemplateUtils.GetTemplateSection(MetaTemplate, "[DESCRIPTION]", "[/DESCRIPTION]").Replace("[DESCRIPTION]", string.Empty).Replace("[/DESCRIPTION]", string.Empty);
                                MetaDescription = MetaDescription.TruncateAtWord(SEOConstants.MaxMetaDescriptionLength);
                                MetaKeywords = TemplateUtils.GetTemplateSection(MetaTemplate, "[KEYWORDS]", "[/KEYWORDS]").Replace("[KEYWORDS]", string.Empty).Replace("[/KEYWORDS]", string.Empty);
                            }
                            BindTopics(TopicsTemplate);
                        }
                        else
                        {
                            Response.Redirect(NavigateUrl(TabId), true);
                        }

                        try
                        {
                            DotNetNuke.Framework.CDefault tempVar = this.BasePage;
                            Environment.UpdateMeta(ref tempVar, MetaTitle, MetaDescription, MetaKeywords);
                        }
                        catch (Exception ex)
                        {

                        }
                    }
                    else
                    {
                        Response.Redirect(NavigateUrl(TabId), true);
                    }
                    if (Session["modal_View"] != null)
                    {
                        //LoadModal(Session["modal_View"].ToString(), Session["modal_options"].ToString());
                    }
                }
                else
                {
                    ForumController fc = new ForumController();
                    string fs = fc.GetForumsForUser(ForumUser.UserRoles, PortalId, ModuleId, "CanEdit");
                    if (!(string.IsNullOrEmpty(fs)))
                    {
                        bModEdit = true;
                    }
                    TopicsTemplate = ParseControls(TopicsTemplate);
                    TopicsTemplate = Utilities.LocalizeControl(TopicsTemplate);
                    this.Controls.Add(this.ParseControl(TopicsTemplate));
                    LinkControls(this.Controls);
                }

            }
            catch (Exception exc)
            {
                RenderMessage("[RESX:Error:LoadingTopics]", exc.Message, exc);
            }
        }
示例#44
0
		private void PropertySave()
		{

			PropertiesController pc = new PropertiesController();
			PropertiesInfo pi = new PropertiesInfo();
			pi.PropertyId = -1;
			pi.PortalId = PortalId;
			pi = (PropertiesInfo)(Utilities.ConvertFromHashTableToObject(Params, pi));
			pi.Name = Utilities.CleanName(pi.Name);
			if (! (string.IsNullOrEmpty(pi.ValidationExpression)))
			{
				pi.ValidationExpression = HttpUtility.UrlDecode(HttpUtility.HtmlDecode(pi.ValidationExpression));
			}
			if (pi.PropertyId == -1)
			{
				string lbl = Params["Label"].ToString();
				LocalizationUtils lcUtils = new LocalizationUtils();
				lcUtils.SaveResource("[RESX:" + pi.Name + "].Text", lbl, PortalId);
			}
			else
			{
				if (Utilities.GetSharedResource("[RESX:" + pi.Name + "]").ToLowerInvariant().Trim() != Params["Label"].ToString().ToLowerInvariant().Trim())
				{
					LocalizationUtils lcUtils = new LocalizationUtils();
					lcUtils.SaveResource("[RESX:" + pi.Name + "].Text", Params["Label"].ToString(), PortalId);
				}

			}
			pc.SaveProperty(pi);
			ForumController fc = new ForumController();
			Forum fi = fc.GetForum(PortalId, ModuleId, pi.ObjectOwnerId, true);
			fi.HasProperties = true;
			fc.Forums_Save(PortalId, fi, false, false);

		}
 private string PinTopic()
 {
     int topicId = -1;
     int forumId = -1;
     if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
     {
         topicId = int.Parse(Params["topicid"].ToString());
     }
     if (topicId > 0)
     {
         TopicsController tc = new TopicsController();
         TopicInfo t = tc.Topics_Get(PortalId, ModuleId, topicId);
         Data.ForumsDB db = new Data.ForumsDB();
         forumId = db.Forum_GetByTopicId(topicId);
         ForumController fc = new ForumController();
         Forum f = fc.Forums_Get(forumId, this.UserId, true);
         if (f != null)
         {
             if (Permissions.HasPerm(f.Security.ModPin, ForumUser.UserRoles) || (t.Author.AuthorId == this.UserId && Permissions.HasAccess(f.Security.Pin, ForumUser.UserRoles)))
             {
                 if (t.IsPinned)
                 {
                     t.IsPinned = false;
                 }
                 else
                 {
                     t.IsPinned = true;
                 }
                 tc.TopicSave(PortalId, t);
                 return BuildOutput(string.Empty, OutputCodes.Success, true);
             }
         }
     }
     return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
 }
示例#46
0
 protected override void Render(HtmlTextWriter writer)
 {
     User forumUser = null;
     if (string.IsNullOrEmpty(ForumIds))
     {
         UserController uc = new UserController();
         forumUser = uc.GetUser(PortalId, ModuleId);
         if (string.IsNullOrEmpty(forumUser.UserForums))
         {
             ForumController fc = new ForumController();
             ForumIds = fc.GetForumsForUser(forumUser.UserRoles, PortalId, ModuleId);
         }
         else
         {
             ForumIds = forumUser.UserForums;
         }
     }
     SettingsInfo _mainSettings = DataCache.MainSettings(ModuleId);
     Data.Common db = new Data.Common();
     IDataReader dr = db.TagCloud_Get(PortalId, ModuleId, ForumIds, TagCount);
     ControlUtils ctlUtils = new ControlUtils();
     string sURL = string.Empty;
     while (dr.Read())
     {
         int priority = 1;
         string tagName = string.Empty;
         string css = string.Empty;
         priority = int.Parse(dr["Priority"].ToString());
         tagName = dr["TagName"].ToString();
         switch (priority)
         {
             case 1:
                 css = CSSOne;
                 break;
             case 2:
                 css = CSSTwo;
                 break;
             case 3:
                 css = CSSThree;
                 break;
         }
         writer.Write("<span class=\"" + css + "\">");
         writer.Write("<a href=\"");
         sURL = ctlUtils.BuildUrl(TabId, ModuleId, string.Empty, string.Empty, -1, -1, int.Parse(dr["TagID"].ToString()), -1, Utilities.CleanName(tagName), 1, -1, -1);
         writer.Write(sURL);
         writer.Write("\" title=\"" + HttpUtility.HtmlAttributeEncode(tagName) + "\">" + tagName + "</a></span> ");
     }
     dr.Close();
     dr.Dispose();
 }
示例#47
0
        private string DeletePost()
        {
            int replyId = -1;
            int TopicId = -1;
            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                TopicId = int.Parse(Params["topicid"].ToString());
            }
            if (Params.ContainsKey("replyid") && SimulateIsNumeric.IsNumeric(Params["replyid"]))
            {
                replyId = int.Parse(Params["replyid"].ToString());
            }
            int forumId = -1;
            Data.ForumsDB db = new Data.ForumsDB();
            forumId = db.Forum_GetByTopicId(TopicId);
            ForumController fc = new ForumController();
            Forum f = fc.Forums_Get(forumId, this.UserId, true);
            if (TopicId > 0 & replyId < 1)
            {
                TopicsController tc = new TopicsController();
                TopicInfo ti = tc.Topics_Get(PortalId, ModuleId, TopicId);

                if (Permissions.HasAccess(f.Security.ModDelete, ForumUser.UserRoles) || (Permissions.HasAccess(f.Security.Delete, ForumUser.UserRoles) && ti.Content.AuthorId == UserId && ti.IsLocked == false))
                {
                    DataProvider.Instance().Topics_Delete(forumId, TopicId, MainSettings.DeleteBehavior);
                    string journalKey = string.Format("{0}:{1}", forumId.ToString(), TopicId.ToString());
                    JournalController.Instance.DeleteJournalItemByKey(PortalId, journalKey);
                }
                else
                {
                    return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
                }
            }
            else
            {
                ReplyController rc = new ReplyController();
                ReplyInfo ri = rc.Reply_Get(PortalId, ModuleId, TopicId, replyId);
                if (Permissions.HasAccess(f.Security.ModDelete, ForumUser.UserRoles) || (Permissions.HasAccess(f.Security.Delete, ForumUser.UserRoles) && ri.Content.AuthorId == UserId))
                {
                    DataProvider.Instance().Reply_Delete(forumId, TopicId, replyId, MainSettings.DeleteBehavior);
                    string journalKey = string.Format("{0}:{1}:{2}", forumId.ToString(), TopicId.ToString(), replyId.ToString());
                    JournalController.Instance.DeleteJournalItemByKey(PortalId, journalKey);

                }
                else
                {
                    return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
                }

            }
            string cachekey = string.Format("AF-FV-{0}-{1}", PortalId, ModuleId);
            DataCache.CacheClearPrefix(cachekey);
            return BuildOutput(TopicId + "|" + replyId, OutputCodes.Success, true);
        }
        private string SaveTopic()
        {
            int topicId = -1;
            int forumId = -1;
            if (Params.ContainsKey("topicid") && SimulateIsNumeric.IsNumeric(Params["topicid"]))
            {
                topicId = int.Parse(Params["topicid"].ToString());
            }
            if (topicId > 0)
            {
                TopicsController tc = new TopicsController();
                TopicInfo t = tc.Topics_Get(PortalId, ModuleId, topicId);
                Data.ForumsDB db = new Data.ForumsDB();
                forumId = db.Forum_GetByTopicId(topicId);
                ForumController fc = new ForumController();
                Forum f = fc.Forums_Get(PortalId, -1, forumId, this.UserId, true, false, -1);
                if (Permissions.HasPerm(f.Security.ModEdit, ForumUser.UserRoles))
                {
                    string subject = Params["subject"].ToString();
                    subject = Utilities.XSSFilter(subject, true);
                    if (! (string.IsNullOrEmpty(f.PrefixURL)))
                    {
                        string cleanSubject = Utilities.CleanName(subject).ToLowerInvariant();
                        if (SimulateIsNumeric.IsNumeric(cleanSubject))
                        {
                            cleanSubject = "Topic-" + cleanSubject;
                        }
                        string topicUrl = cleanSubject;
                        string urlPrefix = "/";
                        if (! (string.IsNullOrEmpty(f.ForumGroup.PrefixURL)))
                        {
                            urlPrefix += f.ForumGroup.PrefixURL + "/";
                        }
                        if (! (string.IsNullOrEmpty(f.PrefixURL)))
                        {
                            urlPrefix += f.PrefixURL + "/";
                        }
                        string urlToCheck = urlPrefix + cleanSubject;
                        Data.Topics topicsDb = new Data.Topics();
                        for (int u = 0; u <= 200; u++)
                        {
                            int tid = topicsDb.TopicIdByUrl(PortalId, f.ModuleId, urlToCheck);
                            if (tid > 0 && tid == topicId)
                            {
                                break;
                            }
                            else if (tid > 0)
                            {
                                topicUrl = (u + 1) + "-" + cleanSubject;
                                urlToCheck = urlPrefix + topicUrl;
                            }
                            else
                            {
                                break;
                            }
                        }
                        if (topicUrl.Length > 150)
                        {
                            topicUrl = topicUrl.Substring(0, 149);
                            topicUrl = topicUrl.Substring(0, topicUrl.LastIndexOf("-"));
                        }
                        t.TopicUrl = topicUrl;
                        //.URL = topicUrl
                    }
                    else
                    {
                        //.URL = String.Empty
                        t.TopicUrl = string.Empty;
                    }
                    t.Content.Subject = subject;
                    t.IsPinned = bool.Parse(Params["pinned"].ToString());
                    t.IsLocked = bool.Parse(Params["locked"].ToString());
                    t.Priority = int.Parse(Params["priority"].ToString());
                    t.StatusId = int.Parse(Params["status"].ToString());
                    if (f.Properties != null)
                    {
                        StringBuilder tData = new StringBuilder();
                        tData.Append("<topicdata>");
                        tData.Append("<properties>");
                        foreach (PropertiesInfo p in f.Properties)
                        {
                            string pkey = "prop-" + p.PropertyId.ToString();

                            tData.Append("<property id=\"" + p.PropertyId.ToString() + "\">");
                            tData.Append("<name><![CDATA[");
                            tData.Append(p.Name);
                            tData.Append("]]></name>");
                            if (Params[pkey] != null)
                            {
                                tData.Append("<value><![CDATA[");
                                tData.Append(Utilities.XSSFilter(Params[pkey].ToString()));
                                tData.Append("]]></value>");
                            }
                            else
                            {
                                tData.Append("<value></value>");
                            }
                            tData.Append("</property>");
                        }
                        tData.Append("</properties>");
                        tData.Append("</topicdata>");
                        t.TopicData = tData.ToString();
                    }
                }
                tc.TopicSave(PortalId, t);
                if (Params["tags"] != null)
                {
                    DataProvider.Instance().Tags_DeleteByTopicId(PortalId, f.ModuleId, topicId);
                    string tagForm = string.Empty;
                    if (Params["tags"] != null)
                    {
                        tagForm = Params["tags"].ToString();
                    }
                    if (! (tagForm == string.Empty))
                    {
                        string[] Tags = tagForm.Split(',');
                        foreach (string tag in Tags)
                        {
                            string sTag = Utilities.CleanString(PortalId, tag.Trim(), false, EditorTypes.TEXTBOX, false, false, f.ModuleId, string.Empty, false);
                            DataProvider.Instance().Tags_Save(PortalId, f.ModuleId, -1, sTag, 0, 1, 0, topicId, false, -1, -1);
                        }
                    }
                }

                if (Params["categories"] != null)
                {
                    string[] cats = Params["categories"].ToString().Split(';');
                    DataProvider.Instance().Tags_DeleteTopicToCategory(PortalId, f.ModuleId, -1, topicId);
                    foreach (string c in cats)
                    {
                        int cid = -1;
                        if (! (string.IsNullOrEmpty(c)) && SimulateIsNumeric.IsNumeric(c))
                        {
                            cid = Convert.ToInt32(c);
                            if (cid > 0)
                            {
                                DataProvider.Instance().Tags_AddTopicToCategory(PortalId, f.ModuleId, cid, topicId);
                            }
                        }
                    }
                }
            }

            return BuildOutput(string.Empty, OutputCodes.UnsupportedRequest, false);
        }
示例#49
0
        protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);

            try
            {
                if (ForumId > 0 && ForumModuleId == -1)
                {
                    ForumController fc = new ForumController();
                    fi = fc.Forums_Get(ForumId, UserId, true, true);
                    ForumModuleId = fi.ModuleId;
                }
                if (ForumModuleId > 0)
                {
                    //Dim mc As New DotNetNuke.Entities.Modules.ModuleController
                    //Dim arrMods As ArrayList = mc.GetModule(ForumModuleId)
                    //Dim modInfo As DotNetNuke.Entities.Modules.ModuleInfo = Nothing
                    //For Each mi As DotNetNuke.Entities.Modules.ModuleInfo In arrMods
                    //    If mi.ModuleID = ForumModuleId Then
                    //        modInfo = mi
                    //        Exit For
                    //    End If
                    //Next
                    DotNetNuke.Entities.Modules.ModuleInfo modInfo = new DotNetNuke.Entities.Modules.ModuleInfo();
                    modInfo.TabID = TabId;
                    modInfo.ModuleID = ForumModuleId;
                    modInfo.PortalID = PortalId;
                    modInfo.DesktopModule.Permissions = this.ModuleConfiguration.DesktopModule.Permissions;

                    //Dim mi As DotNetNuke.Entities.Modules.ModuleInfo = mc.GetModule(ForumModuleId, ForumTabId)
                    ForumBase objModule = (ForumBase)(LoadControl("~/desktopmodules/ActiveForums/classic.ascx"));
                    if (objModule != null)
                    {
                        objModule.ModuleConfiguration = modInfo;
                        objModule.ID = Path.GetFileNameWithoutExtension("~/desktopmodules/ActiveForums/classic.ascx");
                        objModule.ForumModuleId = ForumModuleId; //CType(Settings["AFForumModuleID"], Integer)
                        objModule.ForumInfo = fi;
                        objModule.ForumId = ForumId;
                        objModule.ForumGroupId = ForumGroupId;
                        objModule.DefaultForumViewTemplateId = DefaultForumViewTemplateId;
                        objModule.DefaultTopicsViewTemplateId = DefaultTopicsViewTemplateId;
                        objModule.DefaultTopicViewTemplateId = DefaultTopicViewTemplateId;
                        objModule.TemplatePath = TemplatePath;
                        objModule.UseTemplatePath = UseTemplatePath;
                        objModule.ParentForumId = ParentForumId;
                        objModule.ForumIds = ForumIds;
                        objModule.InheritModuleCSS = InheritModuleCSS;
                        //objModule.LoadGroupForumID = CType(Settings["AFForumGroupID"], Integer)
                        objModule.DefaultView = DefaultView; //CType(Settings["AFViewType"], String)
                        this.Controls.Add(objModule);
                    }
                }
                else
                {
                    Label lblMessage = new Label();
                    lblMessage.Text = "Please access the Module Settings page to configure this module.";
                    lblMessage.CssClass = "NormalRed";
                    this.Controls.Add(lblMessage);
                }
            }
            catch (Exception exc)
            {
                DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
示例#50
0
		internal void PropertyDelete()
		{
			PropertiesController pc = new PropertiesController();
			PropertiesInfo prop = pc.GetProperty(Convert.ToInt32(Params["propertyid"]), PortalId);
			if (prop != null)
			{
				pc.DeleteProperty(PortalId, Convert.ToInt32(Params["propertyid"]));
				if (! (pc.ListProperties(PortalId, prop.ObjectType, prop.ObjectOwnerId).Count > 0))
				{
					ForumController fc = new ForumController();
					Forum fi = fc.GetForum(PortalId, ModuleId, prop.ObjectOwnerId, true);
					fi.HasProperties = false;
					fc.Forums_Save(PortalId, fi, false, false);
				}
			}


		}
示例#51
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            var timeOffset = PortalSettings.TimeZoneOffset;
            if (UserId > 0)
            {
                var uc = new Entities.Users.UserController();
                var dnnUser = uc.GetUser(PortalId, UserId);
                timeOffset = dnnUser.Profile.TimeZone;
                if (timeOffset == 0)
                    timeOffset = PortalSettings.TimeZoneOffset;
            }

            var sHeaderTemplate = "<div style=\"padding:10px;padding-top:5px;\">";
            var sFooterTemplate = "</div>";

            if (HeaderTemplate != null)
                sHeaderTemplate = HeaderTemplate.Text;

            if (FooterTemplate != null)
                sFooterTemplate = FooterTemplate.Text;

            var sTemplate = "<div style=\"padding-bottom:2px;\" class=\"normal\">[SUBJECTLINK]</div><div style=\"padding-bottom:2px;border-bottom:solid 1px #AAA;\">by [AUTHORDISPLAYNAME]</div>";
            if (Template != null)
                sTemplate = Template.Text;

            if (ForumIds == string.Empty && FilterByUserId <= 0) 
                return;

            if (ForumIds.Contains(";"))
                ForumIds = ForumIds.Replace(";", ":");

            var sb = new StringBuilder(1024);
            sb.Append(sHeaderTemplate);

            var bodyLength = -1;
            var bodyTrim = string.Empty;
            if (sTemplate.Contains("[BODY:"))
            {
                var inStart = (sTemplate.IndexOf("[BODY:", StringComparison.Ordinal) + 1) + 5;
                var inEnd = (sTemplate.IndexOf("]", inStart - 1, StringComparison.Ordinal) + 1) - 1;
                var sLength = sTemplate.Substring(inStart, inEnd - inStart);
                bodyLength = Convert.ToInt32(sLength);
                bodyTrim = "[BODY:" + bodyLength + "]";
            }

            IDataReader dr;
            if (ForumIds == string.Empty && FilterByUserId > 0)
            {
                var fc = new ForumController();
                var uc = new UserController();
                var u = uc.DNNGetCurrentUser(PortalId, -1);
                ForumIds = fc.GetForumsForUser(u.UserRoles, PortalId, -1);
                ForumIds = ForumIds.Replace(";", ":");
                dr = DataProvider.Instance().GetPostsByUser(PortalId, Rows, UserInfo.IsSuperUser, UserInfo.UserID, FilterByUserId, TopicsOnly, ForumIds);
            }
            else
            {
                dr = DataProvider.Instance().GetPosts(PortalId, ForumIds, TopicsOnly, RandomOrder, Rows, Tags, FilterByUserId);
            }

            var useFriendly = Utilities.IsRewriteLoaded();
            var sHost = Utilities.GetHost();
            try
            {
                var sTempTemplate = sTemplate;
                string lastPostDate;
                while (dr.Read())
                {
                    var groupName = Convert.ToString(dr["GroupName"]);
                    var groupId = Convert.ToString(dr["ForumGroupId"]);
                    var topicTabId = Convert.ToString(dr["TabId"]);
                    var topicModuleId = Convert.ToString(dr["ModuleId"]);
                    var forumName = Convert.ToString(dr["ForumName"]);
                    var forumId = Convert.ToString(dr["ForumId"]);
                    var subject = Convert.ToString(dr["Subject"]);
                    var userName = Convert.ToString(dr["AuthorUserName"]);
                    var firstName = Convert.ToString(dr["AuthorFirstName"]);
                    var lastName = Convert.ToString(dr["AuthorLastName"]);
                    var authorId = Convert.ToString(dr["AuthorId"]);
                    var displayName = Convert.ToString(dr["AuthorDisplayName"]);
                    var postDate = Convert.ToString(dr["DateCreated"]);
                    var body = Utilities.StripHTMLTag(Convert.ToString(dr["Body"]));
                    var topicId = Convert.ToString(dr["TopicId"]);
                    var replyId = Convert.ToString(dr["ReplyId"]);
                    var bodyHTML = Convert.ToString(dr["Body"]);
                    var replyCount = Convert.ToString(dr["ReplyCount"]);
                    var sForumUrl = dr["PrefixURL"].ToString();
                    var sTopicURL = dr["TopicURL"].ToString();
                    var sGroupPrefixURL = dr["GroupPrefixURL"].ToString();
                    sTempTemplate = sTempTemplate.Replace("[FORUMGROUPNAME]", groupName);
                    sTempTemplate = sTempTemplate.Replace("[FORUMGROUPID]", groupId);
                    sTempTemplate = sTempTemplate.Replace("[TOPICTABID]", topicTabId);
                    sTempTemplate = sTempTemplate.Replace("[TOPICMODULEID]", topicModuleId);
                    sTempTemplate = sTempTemplate.Replace("[FORUMNAME]", forumName);
                    sTempTemplate = sTempTemplate.Replace("[FORUMID]", forumId);
                    sTempTemplate = sTempTemplate.Replace("[SUBJECT]", subject);
                    sTempTemplate = sTempTemplate.Replace("[AUTHORUSERNAME]", userName);
                    sTempTemplate = sTempTemplate.Replace("[AUTHORFIRSTNAME]", firstName);
                    sTempTemplate = sTempTemplate.Replace("[AUTHORLASTNAME]", lastName);
                    sTempTemplate = sTempTemplate.Replace("[AUTHORID]", authorId);
                    sTempTemplate = sTempTemplate.Replace("[AUTHORDISPLAYNAME]", displayName);
                    sTempTemplate = sTempTemplate.Replace("[DATE]", Utilities.GetDate(Convert.ToDateTime(postDate), Convert.ToInt32(topicModuleId), timeOffset));
                    sTempTemplate = sTempTemplate.Replace("[BODY]", body);
                    sTempTemplate = sTempTemplate.Replace("[BODYHTML]", bodyHTML);
                    sTempTemplate = sTempTemplate.Replace("[BODYTEXT]", Utilities.StripHTMLTag(bodyHTML));
                    
                    if (bodyTrim != string.Empty)
                    {
                        if (bodyLength > 0 & body.Length > bodyLength)
                            sTempTemplate = sTempTemplate.Replace(bodyTrim, body.Substring(0, bodyLength) + "...");
                        else
                            sTempTemplate = sTempTemplate.Replace(bodyTrim, body);
                    }

                    sTempTemplate = sTempTemplate.Replace("[TOPICID]", topicId);
                    sTempTemplate = sTempTemplate.Replace("[REPLYID]", replyId);
                    sTempTemplate = sTempTemplate.Replace("[REPLYCOUNT]", replyCount);

                    if (TabId == -1)
                        TabId = Convert.ToInt32(topicTabId);

                    if (useFriendly && !(string.IsNullOrEmpty(sForumUrl)) && !(string.IsNullOrEmpty(sTopicURL)))
                    {
                        var ctlUtils = new ControlUtils();
                        sTopicURL = ctlUtils.BuildUrl(Convert.ToInt32(topicTabId), Convert.ToInt32(topicModuleId), sGroupPrefixURL, sForumUrl, Convert.ToInt32(groupId), Convert.ToInt32(forumId), Convert.ToInt32(topicId), sTopicURL, -1, -1, string.Empty, 1, Convert.ToInt32(replyId), -1);

                        if (Convert.ToInt32(replyId) == 0)
                        {
                            sTempTemplate = sTempTemplate.Replace("[POSTURL]", sTopicURL);
                            sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\">" + subject + "</a>");
                        }
                        else
                        {
                            if (!(sTopicURL.EndsWith("/")))
                                sTopicURL += "/";

                            sTopicURL += "?afc=" + replyId;
                            sTempTemplate = sTempTemplate.Replace("[POSTURL]", sTopicURL);
                            if (Request.IsAuthenticated)
                                sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\">" + subject + "</a>");
                            else
                                sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\" rel=\"nofollow\">" + subject + "</a>");
                        }
                        sTempTemplate = sTempTemplate.Replace("[TOPICSURL]", sForumUrl);

                    }
                    else
                    {
                        List<string> @params;
                        if (Convert.ToInt32(replyId) == 0)
                        {
                            @params = new List<string>{ ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId };
                            if (AdditionalParams != string.Empty)
                                @params.Add(AdditionalParams);

                            sTempTemplate = sTempTemplate.Replace("[POSTURL]", Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray()));
                           
                            @params = new List<string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId };
                            if (AdditionalParams != string.Empty)
                                @params.Add(AdditionalParams);

                            sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + Utilities.NavigateUrl(TabId, "", @params.ToArray()) + "\">" + subject + "</a>");
                        }
                        else
                        {
                            @params = new List<string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId };
                            if (AdditionalParams != string.Empty)
                                @params.Add(AdditionalParams);

                            sTempTemplate = sTempTemplate.Replace("[POSTURL]", Utilities.NavigateUrl(TabId, "", @params.ToArray()));

                            @params = new List<string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId };
                            if (AdditionalParams != string.Empty)
                                @params.Add(AdditionalParams);

                            sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray()) + "\">" + subject + "</a>");
                        }
                        @params = new List<string> { ParamKeys.ViewType + "=" + Views.Topics, ParamKeys.ForumId + "=" + forumId };
                        if (AdditionalParams != string.Empty)
                            @params.Add(AdditionalParams);

                        sTempTemplate = sTempTemplate.Replace("[TOPICSURL]", Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray()));
                    }
                    sTempTemplate = sTempTemplate.Replace("[FORUMURL]", Utilities.NavigateUrl(TabId));
                    sb.Append(sTempTemplate);
                }

                dr.Close();

                var sRSSImage = "<img src=\"" + Page.ResolveUrl("~/DesktopModules/ActiveForums/images/feedicon.gif") + "\" border=\"0\" />";
                var sRSSURL = Page.ResolveUrl("~/desktopmodules/activeforumswhatsnew/feeds.aspx") + "?portalId=" + PortalId + "&tabid=" + TabId.ToString() + "&moduleid=" + ModuleId.ToString();
                var sRSSIconLink = "<a href=\"" + sRSSURL + "\">" + sRSSImage + "</a>";
                sFooterTemplate = sFooterTemplate.Replace("[RSSICON]", sRSSImage);
                sFooterTemplate = sFooterTemplate.Replace("[RSSURL]", sRSSURL);
                sFooterTemplate = sFooterTemplate.Replace("[RSSICONLINK]", sRSSIconLink);

                sb.Append(sFooterTemplate);
                var lit = new Literal {Text = sb.ToString()};
                Controls.Add(lit);

            }
            catch (Exception ex)
            {
                if (!dr.IsClosed)
                {
                    dr.Close();
                }
                sb.Append(ex.StackTrace);
                var lit = new Literal {Text = ex.Message};
                Controls.Add(lit);
            }
        }
示例#52
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if (ForumInfo == null)
                ForumInfo = new ForumController().Forums_Get(PortalId, ForumModuleId, ForumId, UserId, true, false, TopicId);
        }
示例#53
0
        public string RenderView()
        {
            StringBuilder sb = new StringBuilder();
            Forum forumInfo = null;
            string groupPrefix = string.Empty;
            string forumPrefix = string.Empty;
            if (ForumId > 0)
            {
                ForumController fc = new ForumController();
                forumInfo = fc.GetForum(PortalId, ModuleId, ForumId);
                if (forumInfo != null)
                {
                    groupPrefix = forumInfo.ForumGroup.PrefixURL;
                    forumPrefix = forumInfo.PrefixURL;
                }

            }
            ControlUtils cUtils = new ControlUtils();
            using (IDataReader dr = DataProvider.Instance().Tags_List(PortalId, ModuleId, true, 0, 200, "ASC", "TagName", ForumId, ForumGroupId))
            {
                dr.NextResult();
                while (dr.Read())
                {
                    string tmp = Template;
                    string categoryName = dr["TagName"].ToString();
                    tmp = tmp.Replace("[CATEGORYURL]", cUtils.BuildUrl(TabId, ModuleId, groupPrefix, forumPrefix, ForumGroupId, ForumId, -1, int.Parse(dr["TagId"].ToString()), Utilities.CleanName(categoryName), 1, -1));
                    tmp = tmp.Replace("[CATEGORYNAME]", categoryName);
                    if (int.Parse(dr["TagId"].ToString()) == SelectedCategory)
                    {
                        tmp = tmp.Replace("[CSSCLASS]", CSSClass + "-selected");
                    }
                    else
                    {
                        tmp = tmp.Replace("[CSSCLASS]", CSSClass);
                    }
                    sb.Append(tmp);
                }
                dr.Close();
            }
            if (sb.Length > 0)
            {
                sb.Insert(0, HeaderTemplate);
                sb.Append(FooterTemplate);
            }
            return sb.ToString();
        }