/// <summary> /// /// </summary> /// <param name="colSettings"></param> /// <param name="portalId"></param> /// <returns></returns> public static List <QaSettingInfo> GetOpThresholdCollection(List <SettingInfo> colSettings, int portalId) { // determine if operational threshold settings exist for this portal var colOpThreshSettings = (from t in colSettings where t.TypeId == (int)Constants.SettingTypes.OperationalThresholds select t); var colOpThresholds = new List <QaSettingInfo>(); switch (colOpThreshSettings.Count()) { case 0: colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.PostChangeVoteWindowMinutes.ToString(), Constants.DefaultOpPostChangeVoteWindowMinutes)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.PostFlagCompleteCount.ToString(), Constants.DefaultOpPostFlagCompleteCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.PostFlagWindowHours.ToString(), Constants.DefaultOpPostFlagWindowHours)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.QuestionCloseCompleteVoteCount.ToString(), Constants.DefaultOpQuestionCloseCompleteVoteCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.QuestionCloseWindowDays.ToString(), Constants.DefaultOpQuestionCloseWindowDays)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.QuestionFlagHomeRemoveCount.ToString(), Constants.DefaultOpQuestionFlagHomeRemoveCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.TagCloseWindowDays.ToString(), Constants.DefaultOpTagCloseWindowDays)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.TagFlagCompleteCount.ToString(), Constants.DefaultOpTagFlagCompleteCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.TagFlagWindowHours.ToString(), Constants.DefaultOpTagFlagWindowHours)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.TermSynonymApproveCount.ToString(), Constants.DefaultOpTermSynonymApproveCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.TermSynonymRejectCount.ToString(), Constants.DefaultOpTermSynonymRejectCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.TermSynonymMaxCount.ToString(), Constants.DefaultOpTermSynonymMaxCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.UserCloseVoteCount.ToString(), Constants.DefaultOpUserCloseVoteCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.UserFlagPostModerateCount.ToString(), Constants.DefaultOpUserFlagPostModerateCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.UserFlagPostSpamCount.ToString(), Constants.DefaultOpUserFlagPostSpamCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.UserTermSynonymCreateMinAnswerCount.ToString(), Constants.DefaultOpUserTermSynonymCreateMinAnswerCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.UserTermSynonymVoteMinAnswerScoreCount.ToString(), Constants.DefaultOpUserTermSynonymVoteMinAnswerScoreCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.UserUpVoteAnswerCount.ToString(), Constants.DefaultOpUserUpVoteAnswerCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.UserUpVoteQuestionCount.ToString(), Constants.DefaultOpUserUpVoteQuestionCount)); colOpThresholds.Add(BuildOpThreshold(Constants.OpThresholds.QuestionHomeMinScore.ToString(), Constants.DefaultOpHomeQuestionMinScore)); break; case 19: var objNewSetting = new SettingInfo { PortalId = portalId, TypeId = (int)Constants.SettingTypes.OperationalThresholds, Key = Constants.OpThresholds.QuestionHomeMinScore.ToString(), Value = Constants.DefaultOpHomeQuestionMinScore.ToString() }; var cntQa = new DnnqaController(); cntQa.UpdateQaPortalSetting(objNewSetting); DataCache.RemoveCache(Constants.ModuleCacheKey + Constants.QaSettingsCacheKey + portalId); colOpThreshSettings = (from t in colSettings where t.TypeId == (int)Constants.SettingTypes.OperationalThresholds select t); colOpThresholds.AddRange(colOpThreshSettings.Select(objSetting => BuildOpThreshold(objSetting.Key, Convert.ToInt32(objSetting.Value)))); break; default: colOpThresholds.AddRange(colOpThreshSettings.Select(objSetting => BuildOpThreshold(objSetting.Key, Convert.ToInt32(objSetting.Value)))); break; } return(colOpThresholds); }
private static IDnnqaController GetQaController(IDataProvider repository) { var ctl = ComponentFactory.GetComponent <IDnnqaController>(); if (ctl == null) { ctl = new DnnqaController(repository); ComponentFactory.RegisterComponentInstance <IDnnqaController>(ctl); } return(ctl); }
/// <summary> /// This is used to populate a list of active questions to include in the SEO sitemap. /// </summary> /// <param name="portalID"></param> /// <param name="ps"></param> /// <param name="version"></param> /// <returns></returns> public override List <SitemapUrl> GetUrls(int portalID, PortalSettings ps, string version) { var cntQa = new DnnqaController(); var colEntries = cntQa.GetSitemapQuestions(portalID); var urls = new List <SitemapUrl>(); foreach (var objQuestion in colEntries) { urls.Add(GetQuestionUrl(objQuestion, ps)); } return(urls); }
/// <summary> /// /// </summary> private void BuildQaPortalSettings() { var cntQa = new DnnqaController(); var colOpThresholds = QaSettings.GetOpThresholdCollection(cntQa.GetQaPortalSettings(ModuleContext.PortalId), ModuleContext.PortalId); dntbQCCVC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.QuestionCloseCompleteVoteCount.ToString()).Value.ToString(); dntbQCWD.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.QuestionCloseWindowDays.ToString()).Value.ToString(); dntbQFHRC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.QuestionFlagHomeRemoveCount.ToString()).Value.ToString(); dntbPCVWM.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.PostChangeVoteWindowMinutes.ToString()).Value.ToString(); dntbPFCC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.PostFlagCompleteCount.ToString()).Value.ToString(); dntbPFWH.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.PostFlagWindowHours.ToString()).Value.ToString(); dntbTCWD.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.TagCloseWindowDays.ToString()).Value.ToString(); dntbTFWH.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.TagFlagWindowHours.ToString()).Value.ToString(); dntbTFCC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.TagFlagCompleteCount.ToString()).Value.ToString(); dntbTSAC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.TermSynonymApproveCount.ToString()).Value.ToString(); dntbTSRC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.TermSynonymRejectCount.ToString()).Value.ToString(); dntbTSMC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.TermSynonymMaxCount.ToString()).Value.ToString(); dntbUCVC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.UserCloseVoteCount.ToString()).Value.ToString(); dntbUFPMC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.UserFlagPostModerateCount.ToString()).Value.ToString(); dntbFPSC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.UserFlagPostSpamCount.ToString()).Value.ToString(); dntbUTSCMAC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.UserTermSynonymCreateMinAnswerCount.ToString()).Value.ToString(); dntbUTSVMASC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.UserTermSynonymVoteMinAnswerScoreCount.ToString()).Value.ToString(); dntbUUVAC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.UserUpVoteAnswerCount.ToString()).Value.ToString(); dntbUUVQC.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.UserUpVoteQuestionCount.ToString()).Value.ToString(); dntbQHMS.Text = colOpThresholds.Single(s => s.Key == Constants.OpThresholds.QuestionHomeMinScore.ToString()).Value.ToString(); var colEmail = QaSettings.GetEmailCollection(cntQa.GetQaPortalSettings(ModuleContext.PortalId), ModuleContext.PortalId); var currentEmail = colEmail.Single(s => s.Key == Constants.EmailSettings.FromAddress.ToString()).Value; txtbxFromEmail.Text = currentEmail != @"*****@*****.**" ? currentEmail : ModuleContext.PortalSettings.Email; var commentTemplate = colEmail.Single(s => s.Key == Constants.EmailSettings.CommentTemplate.ToString()).Value; txtbxCommentEmailTemplate.Text = commentTemplate; var singleQuestion = colEmail.Single(s => s.Key == Constants.EmailSettings.SingleQuestionTemplate.ToString()).Value; txtbxQuestionEmailTemplate.Text = singleQuestion; var answerTemplate = colEmail.Single(s => s.Key == Constants.EmailSettings.AnswerTemplate.ToString()).Value; txtAnswerEmailTemplate.Text = answerTemplate; var summaryTemplate = colEmail.Single(s => s.Key == Constants.EmailSettings.SummaryTemplate.ToString()).Value; txtbxSummaryEmailTemplate.Text = summaryTemplate; }
/// <summary> /// /// </summary> private void UpdateQaPortalSettings() { var cntQa = new DnnqaController(); var objSetting = new SettingInfo { PortalId = ModuleContext.PortalId, TypeId = (int)Constants.SettingTypes.OperationalThresholds, Key = Constants.OpThresholds.QuestionCloseCompleteVoteCount.ToString(), Value = dntbQCCVC.Text }; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.QuestionCloseWindowDays.ToString(); objSetting.Value = dntbQCWD.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.QuestionFlagHomeRemoveCount.ToString(); objSetting.Value = dntbQFHRC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.PostChangeVoteWindowMinutes.ToString(); objSetting.Value = dntbPCVWM.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.PostFlagCompleteCount.ToString(); objSetting.Value = dntbPFCC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.PostFlagWindowHours.ToString(); objSetting.Value = dntbPFWH.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.TagCloseWindowDays.ToString(); objSetting.Value = dntbTCWD.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.TagFlagWindowHours.ToString(); objSetting.Value = dntbTFWH.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.TagFlagCompleteCount.ToString(); objSetting.Value = dntbTFCC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.TermSynonymApproveCount.ToString(); objSetting.Value = dntbTSAC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.TermSynonymRejectCount.ToString(); objSetting.Value = dntbTSRC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.TermSynonymMaxCount.ToString(); objSetting.Value = dntbTSMC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.UserCloseVoteCount.ToString(); objSetting.Value = dntbUCVC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.UserFlagPostModerateCount.ToString(); objSetting.Value = dntbUFPMC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.UserFlagPostSpamCount.ToString(); objSetting.Value = dntbFPSC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.UserTermSynonymCreateMinAnswerCount.ToString(); objSetting.Value = dntbUTSCMAC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.UserTermSynonymVoteMinAnswerScoreCount.ToString(); objSetting.Value = dntbUTSVMASC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.UserUpVoteAnswerCount.ToString(); objSetting.Value = dntbUUVAC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.UserUpVoteQuestionCount.ToString(); objSetting.Value = dntbUUVQC.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.OpThresholds.QuestionHomeMinScore.ToString(); objSetting.Value = dntbQHMS.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.TypeId = (int)Constants.SettingTypes.Email; objSetting.Key = Constants.EmailSettings.FromAddress.ToString(); objSetting.Value = txtbxFromEmail.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.EmailSettings.CommentTemplate.ToString(); objSetting.Value = txtbxCommentEmailTemplate.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.EmailSettings.SingleQuestionTemplate.ToString(); objSetting.Value = txtbxQuestionEmailTemplate.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.EmailSettings.AnswerTemplate.ToString(); objSetting.Value = txtAnswerEmailTemplate.Text; cntQa.UpdateQaPortalSetting(objSetting); objSetting.Key = Constants.EmailSettings.SummaryTemplate.ToString(); objSetting.Value = txtbxSummaryEmailTemplate.Text; cntQa.UpdateQaPortalSetting(objSetting); // handle cache clearing DataCache.RemoveCache(Constants.ModuleCacheKey + Constants.QaSettingsCacheKey + ModuleContext.PortalId); DataCache.RemoveCache(Constants.ModuleCacheKey + Constants.HomeQuestionsCacheKey + ModuleContext.ModuleId); DataCache.RemoveCache(Constants.ModuleCacheKey + Constants.HomeTermsCacheKey + ModuleContext.ModuleId); }
public List<TermInfo> QaTerms(int vocabularyId) { var controller = new DnnqaController(); return controller.GetTermsByContentItem(ContentItemId, vocabularyId); }
public List <TermInfo> QaTerms(int vocabularyId) { var controller = new DnnqaController(); return(controller.GetTermsByContentItem(ContentItemId, vocabularyId)); }
/// <summary> /// /// </summary> /// <param name="colSettings"></param> /// <param name="portalId"></param> /// <returns></returns> public static List <QaSettingInfo> GetUserScoringCollection(List <SettingInfo> colSettings, int portalId) { // determine if user scoring action settings exist for this portal var colUserScoringSettings = (from t in colSettings where t.TypeId == (int)Constants.SettingTypes.UserScoringActionValue select t); var x = colUserScoringSettings.Count(); var colScoringActions = new List <QaSettingInfo>(); switch (colUserScoringSettings.Count()) { case 0: colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.AdminEntered.ToString(), Constants.DefaultScoreAdminEntered)); // static 0 colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.ApprovedPostEdit.ToString(), Constants.DefaultScoreApprovedPostEdit)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.ApprovedTagEdit.ToString(), Constants.DefaultScoreApprovedTagEdit)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.AskedFlaggedQuestion.ToString(), Constants.DefaultScoreAskedFlaggedQuestion)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.AskedQuestion.ToString(), Constants.DefaultScoreAskedQuestion)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.AskedQuestionVotedDown.ToString(), Constants.DefaultScoreAskedQuestionVotedDown)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.AskedQuestionVotedUp.ToString(), Constants.DefaultScoreAskedQuestionVotedUp)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.BountyPaid.ToString(), Constants.DefaultScoreBountyPaid)); // static 0 colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.BountyReceived.ToString(), Constants.DefaultScoreBountyReceived)); // static 0 //createtag colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.CreatedTagSynonym.ToString(), Constants.DefaultScoreCreatedTagSynonym)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.Commented.ToString(), Constants.DefaultScoreCommented)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.EditedPost.ToString(), Constants.DefaultScoreEditedPost)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.EditedTag.ToString(), Constants.DefaultScoreEditedTag)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.EditedTagVotedDown.ToString(), Constants.DefaultScoreEditedTagVotedDown)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.EditedTagVotedUp.ToString(), Constants.DefaultScoreEditedTagVotedUp)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.FirstLoggedInView.ToString(), Constants.DefaultScoreFirstLoggedInView)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.ProvidedAcceptedAnswer.ToString(), Constants.DefaultScoreProvidedAcceptedAnswer)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.ProvidedAnswer.ToString(), Constants.DefaultScoreProvidedAnswer)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.ProvidedAnswerVotedDown.ToString(), Constants.DefaultScoreProvidedAnswerVotedDown)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.ProvidedAnswerVotedUp.ToString(), Constants.DefaultScoreProvidedAnswerVotedUp)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.ProvidedFlaggedAnswer.ToString(), Constants.DefaultScoreProvidedFlaggedAnswer)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.VotedDownAnswer.ToString(), Constants.DefaultScoreVotedDownAnswer)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.VotedDownQuestion.ToString(), Constants.DefaultScoreVotedDownQuestion)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.VotedSynonymDown.ToString(), Constants.DefaultScoreVotedSynonymDown)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.VotedSynonymUp.ToString(), Constants.DefaultScoreVotedSynonymUp)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.VotedTagDown.ToString(), Constants.DefaultScoreVotedTagDown)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.VotedTagUp.ToString(), Constants.DefaultScoreVotedTagUp)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.VotedUpAnswer.ToString(), Constants.DefaultScoreVotedUpAnswer)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.VotedUpQuestion.ToString(), Constants.DefaultScoreVotedUpQuestion)); colScoringActions.Add(BuildUserScore(Constants.UserScoringActions.AcceptedQuestionAnswer.ToString(), Constants.DefaultScoreAcceptedAnswer)); // new break; case 29: var objNewSetting = new SettingInfo { PortalId = portalId, TypeId = (int)Constants.SettingTypes.UserScoringActionValue, Key = Constants.UserScoringActions.AcceptedQuestionAnswer.ToString(), Value = Constants.DefaultScoreAcceptedAnswer.ToString() }; var cntQa = new DnnqaController(); cntQa.UpdateQaPortalSetting(objNewSetting); DataCache.RemoveCache(Constants.ModuleCacheKey + Constants.QaSettingsCacheKey + portalId); colUserScoringSettings = (from t in colSettings where t.TypeId == (int)Constants.SettingTypes.UserScoringActionValue select t); colScoringActions.AddRange(colUserScoringSettings.Select(objSetting => BuildUserScore(objSetting.Key, Convert.ToInt32(objSetting.Value)))); break; default: colScoringActions.AddRange(colUserScoringSettings.Select(objSetting => BuildUserScore(objSetting.Key, Convert.ToInt32(objSetting.Value)))); break; } return(colScoringActions); }
/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="e"></param> public void OnBeginRequest(Object source, EventArgs e) { try { var app = (HttpApplication)source; var context = app.Context; PortalSettings portalSettings; PortalAliasController pac = new PortalAliasController(); PortalInfo portalInfo; //var requestedPath = app.Request.Url.AbsoluteUri; PortalAliasInfo objPortalAlias; var url = context.Request.RawUrl.Replace("?" + context.Request.QueryString, "").ToLower(); if (Utils.UseFriendlyUrls && (url.EndsWith(".aspx") || url.EndsWith("/"))) { var myAlias = DotNetNuke.Common.Globals.GetDomainName(app.Request, true); do { objPortalAlias = PortalAliasController.GetPortalAliasInfo(myAlias); if (objPortalAlias != null) { break; } var slashIndex = myAlias.LastIndexOf('/'); myAlias = slashIndex > 1 ? myAlias.Substring(0, slashIndex) : ""; } while (myAlias.Length > 0); if (objPortalAlias == null) { //portalSettings = new PortalSettings(Host.HostPortalID); //var portalAlias = app.Request.Url.Host; //objPortalAlias = PortalAliasController.GetPortalAliasInfo(portalAlias); return; //if (Host.HostPortalID > Null.NullInteger) //{ // var portalAliasInfo = new PortalAliasInfo // { // PortalID = Host.HostPortalID, // HTTPAlias = portalAlias // }; // pac.AddPortalAlias(portalAliasInfo); //objPortalAlias = PortalAliasController.GetPortalAliasInfo(portalAlias); //} } else { portalInfo = new PortalController().GetPortal(objPortalAlias.PortalID); portalSettings = new PortalSettings(portalInfo.PortalID); } if (portalSettings != null) { portalSettings.PortalAlias = objPortalAlias; Regex questionRegEx; Regex tagRegEx; questionRegEx = new Regex("/" + Utils.GetQuestionUrlName(portalSettings).ToLower() + "/([0-9]+)/(.+)(\\.aspx$|\\.aspx?.+)", RegexOptions.IgnoreCase); tagRegEx = new Regex("/" + Utils.GetTagUrlName(portalSettings).ToLower() + "/(.+)(\\.aspx$|\\.aspx?.+)", RegexOptions.IgnoreCase); if ((questionRegEx.IsMatch(url.ToLower()) && !questionRegEx.Match(url.ToLower()).Groups[1].Value.Contains("/")) || (tagRegEx.IsMatch(url.ToLower()) && !tagRegEx.Match(url.ToLower()).Groups[1].Value.Contains("/"))) { string questionTitle; string tagName; // JS 1/25/12: This check is for removing the .aspx from the question and tags. // There appears to be conflicts between IIS7.5 installations that need to be address //if (HttpRuntime.UsingIntegratedPipeline) //{ // questionRegEx = new Regex("/Question/([0-9]+)/(.+)", RegexOptions.IgnoreCase); // tagRegEx = new Regex("/Tag/(.+)", RegexOptions.IgnoreCase); //} //else //{ // questionRegEx = new Regex("/Question/([0-9]+)/(.+)\\.aspx$", RegexOptions.IgnoreCase); // tagRegEx = new Regex("/Tag/(.+)\\.aspx$", RegexOptions.IgnoreCase); //} var dnnqa = new DnnqaController(); var tInfo = Utils.GetTabFromUrl(portalSettings); if (tInfo != null && Utils.IsModuleOnTab(tInfo.TabID)) { var match = questionRegEx.Match(url); String relativePath; if (match.Success) { var questionId = Int32.Parse(match.Groups[1].Value); questionTitle = match.Groups[2].Value; if (tInfo != null) { QuestionInfo qInfo = dnnqa.GetQuestion(questionId, portalSettings.PortalId); if (qInfo != null) { if (Utils.CreateFriendlySlug(qInfo.Title).ToLower() == questionTitle.ToLower()) { relativePath = Links.ViewQuestion(questionId, tInfo.TabID, portalSettings).Replace("http://", "").Replace("https://", "").Replace(objPortalAlias.HTTPAlias.Contains("/") ? objPortalAlias.HTTPAlias.Substring(0, objPortalAlias.HTTPAlias.IndexOf("/")) : objPortalAlias.HTTPAlias, ""); context.RewritePath(relativePath); return; } context.Response.Status = "301 Moved Permanently"; context.Response.RedirectLocation = Links.ViewQuestion(questionId, qInfo.Title, tInfo, portalSettings); } } } match = tagRegEx.Match(url); if (match.Success) { tagName = match.Groups[1].Value; tagName = tagName.Replace("-", " "); relativePath = Links.ViewTaggedQuestions(tagName, tInfo.TabID, portalSettings).Replace("http://", "").Replace("https://", "").Replace(objPortalAlias.HTTPAlias.Contains("/") ? objPortalAlias.HTTPAlias.Substring(0, objPortalAlias.HTTPAlias.IndexOf("/")) : objPortalAlias.HTTPAlias, ""); context.RewritePath(relativePath); return; } } } } } } catch (Exception ex) { DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); } }