Beispiel #1
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;
            }
        }
Beispiel #2
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);
            }
        }