private static void Initialize() { if (!_initialized) { lock (_lock) { if (!_initialized) { try { ForumSection section = ConfigurationManager.GetSection("lionsguard/forum") as ForumSection; if (section != null) { _providers = new ForumProviderCollection(); ProvidersHelper.InstantiateProviders(section.Providers, _providers, typeof(ForumProvider)); _provider = _providers[section.DefaultProvider]; if (_provider == null) { throw new ConfigurationErrorsException("Default ForumProvider not found in application configuration file.", section.ElementInformation.Properties["defaultProvider"].Source, section.ElementInformation.Properties["defaultProvider"].LineNumber); } if (!String.IsNullOrEmpty(section.BoardName)) { _boardName = section.BoardName; } } } catch (Exception ex) { _initException = ex; } _initialized = true; } } } if (_initException != null) { throw _initException; } }
private void LoadCommentForumsDropDown() { if (IsCommentsEnabled && !IsPublishCommentType) { ddlCommentForum.Items.Clear(); foreach (KeyValuePair <int, string> pair in ForumProvider.GetInstance(PortalId).GetForums()) { ddlCommentForum.Items.Add(new ListItem(pair.Value, pair.Key.ToString(CultureInfo.InvariantCulture))); } ddlCommentForum.Items.Insert(0, (new ListItem(Localization.GetString("NoForum", LocalResourceFile), "-1"))); ItemVersionSetting commentForumSetting = ItemVersionSetting.GetItemVersionSetting(VersionInfoObject.ItemVersionId, "CategorySettings", "CommentForumId", PortalId); if (commentForumSetting != null) { ddlCommentForum.SelectedValue = commentForumSetting.PropertyValue; } } else { rowCommentForum.Visible = false; } }
private void ConfigureChildControls() { if (VersionInfoObject.IsNew) { return; } //check if items are enabled. if (DisplayEmailAFriend && VersionInfoObject.IsNew == false) { ea = (EmailAFriend)LoadControl(EmailControlToLoad); ea.ModuleConfiguration = ModuleConfiguration; ea.ID = Path.GetFileNameWithoutExtension(EmailControlToLoad); ea.VersionInfoObject = VersionInfoObject; phEmailAFriend.Controls.Add(ea); } if (DisplayPrinterFriendly && VersionInfoObject.IsNew == false) { pf = (PrinterFriendlyButton)LoadControl(PrinterControlToLoad); pf.ModuleConfiguration = ModuleConfiguration; pf.ID = Path.GetFileNameWithoutExtension(PrinterControlToLoad); phPrinterFriendly.Controls.Add(pf); } if (DisplayRelatedLinks) { ral = (RelatedArticleLinksBase)LoadControl(RelatedArticlesControlToLoad); ral.ModuleConfiguration = ModuleConfiguration; ral.ID = Path.GetFileNameWithoutExtension(RelatedArticlesControlToLoad); phRelatedArticles.Controls.Add(ral); } if (DisplayRelatedArticle) { Article a = VersionInfoObject.GetRelatedArticle(PortalId); if (a != null) { ad = (ArticleDisplay)LoadControl(ArticleControlToLoad); ad.ModuleConfiguration = ModuleConfiguration; ad.ID = Path.GetFileNameWithoutExtension(ArticleControlToLoad); ad.Overrideable = false; ad.UseCache = true; ad.DisplayPrinterFriendly = false; ad.DisplayRelatedArticle = false; ad.DisplayRelatedLinks = false; ad.DisplayEmailAFriend = false; ad.SetItemId(a.ItemId); ad.DisplayTitle = false; phRelatedArticle.Controls.Add(ad); divRelatedArticle.Visible = true; } else { divRelatedArticle.Visible = false; } } if (RatingDisplayOption.Equals(RatingDisplayOption.Enable) || RatingDisplayOption.Equals(RatingDisplayOption.ReadOnly)) { //get the upnlRating setting ItemVersionSetting rtSetting = ItemVersionSetting.GetItemVersionSetting(VersionInfoObject.ItemVersionId, "upnlRating", "Visible", PortalId); if (rtSetting != null) { upnlRating.Visible = Convert.ToBoolean(rtSetting.PropertyValue, CultureInfo.InvariantCulture); } if (upnlRating.Visible) { //lblRatingMessage.Visible = true; //TODO: re-enable ratings lblRatingMessage.Visible = false; //TODO: re-enable ratings //ajaxRating.MaxRating = MaximumRating; var avgRating = (int)Math.Round(((Article)VersionInfoObject).AverageRating); //ajaxRating.CurrentRating = (avgRating > MaximumRating ? MaximumRating : (avgRating < 0 ? 0 : avgRating)); //ajaxRating.ReadOnly = RatingDisplayOption.Equals(RatingDisplayOption.ReadOnly); } } btnComment.Visible = DisplayCommentsLink; if (IsCommentsEnabled) { btnComment.NavigateUrl = Request.RawUrl + "#CommentEntry"; if (!UseForumComments || (DisplayPublishComments && !VersionInfoObject.IsNew)) { pnlComments.Visible = pnlCommentDisplay.Visible = true; commentDisplay = (CommentDisplayBase)LoadControl(CommentsControlToLoad); commentDisplay.ModuleConfiguration = ModuleConfiguration; commentDisplay.ID = Path.GetFileNameWithoutExtension(CommentsControlToLoad); commentDisplay.ArticleId = VersionInfoObject.ItemId; phCommentsDisplay.Controls.Add(commentDisplay); } if (UseForumComments) { pnlComments.Visible = true; mvCommentDisplay.SetActiveView(vwForumComments); ItemVersionSetting forumThreadIdSetting = ItemVersionSetting.GetItemVersionSetting(VersionInfoObject.ItemVersionId, "ArticleSetting", "CommentForumThreadId", PortalId); if (forumThreadIdSetting != null) { lnkGoToForum.Visible = true; lnkGoToForum.NavigateUrl = ForumProvider.GetInstance(PortalId).GetThreadUrl(Convert.ToInt32(forumThreadIdSetting.PropertyValue, CultureInfo.InvariantCulture)); } else { btnForumComment.Visible = true; } } } ConfigureTags(); }
protected void btnSubmitComment_Click(object sender, EventArgs e) { if (Page.IsValid) { //TODO: we're allowing anonymous comments, we should have a setting for this. var objSecurity = new DotNetNuke.Security.PortalSecurity(); if (UseForumComments) { int?categoryForumId = GetCategoryForumId(); if (categoryForumId.HasValue) { int threadId = ForumProvider.GetInstance(PortalId).AddComment(categoryForumId.Value, VersionInfoObject.AuthorUserId, VersionInfoObject.Name, VersionInfoObject.Description, GetItemLinkUrl(VersionInfoObject.ItemId, PortalId), objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), UserId, Request.UserHostAddress); var threadIdSetting = new ItemVersionSetting(Setting.CommentForumThreadId) { PropertyValue = threadId.ToString(CultureInfo.InvariantCulture), ItemVersionId = VersionInfoObject.ItemVersionId }; threadIdSetting.Save(); //VersionInfoObject.VersionSettings.Add(threadIdSetting); //VersionInfoObject.Save(VersionInfoObject.AuthorUserId); Response.Redirect(ForumProvider.GetInstance(PortalId).GetThreadUrl(threadId), true); } } else { if (txtHumanTest.Text.Trim().ToLower() == "human") { string urlText = txtUrlComment.Text; if (urlText.Trim().Length > 0 && !urlText.StartsWith("http://", StringComparison.OrdinalIgnoreCase) && !urlText.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) { urlText = "http://" + urlText; } int approvalStatusId = ApprovalStatus.Waiting.GetId(); if (IsAdmin) {//automatically approve admin comments approvalStatusId = ApprovalStatus.Approved.GetId(); } //TODO: format the comment text UserFeedback.Comment.AddComment(VersionInfoObject.ItemVersionId, (UserId == -1 ? null : (int?)UserId), objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), approvalStatusId, null, objSecurity.InputFilter(txtFirstNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), objSecurity.InputFilter(txtLastNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), objSecurity.InputFilter(txtEmailAddressComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), objSecurity.InputFilter(urlText, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting), DataProvider.ModuleQualifier); //see if comment notification is turned on. Notify the ItemVersion.Author if (IsCommentAuthorNotificationEnabled) { var uc = new UserController(); UserInfo ui = uc.GetUser(PortalId, VersionInfoObject.AuthorUserId); if (ui != null) { string emailBody = Localization.GetString("CommentNotificationEmail.Text", LocalResourceFile); emailBody = String.Format(emailBody , VersionInfoObject.Name , GetItemLinkUrlExternal(VersionInfoObject.ItemId) , objSecurity.InputFilter(txtFirstNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting) , objSecurity.InputFilter(txtLastNameComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting) , objSecurity.InputFilter(txtEmailAddressComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting) , objSecurity.InputFilter(txtComment.Text, DotNetNuke.Security.PortalSecurity.FilterFlag.NoScripting) ); string emailSubject = Localization.GetString("CommentNotificationEmailSubject.Text", LocalResourceFile); emailSubject = String.Format(emailSubject, VersionInfoObject.Name); Mail.SendMail(PortalSettings.Email, ui.Email, string.Empty, emailSubject, emailBody, string.Empty, "HTML", string.Empty, string.Empty, string.Empty, string.Empty); } } ConfigureComments(); pnlCommentEntry.Visible = false; pnlCommentConfirmation.Visible = true; } } } }