public List<TabInfo> GetTabsToLocalize(int portalId, string code)
        {
            var results = new List<TabInfo>();
            var portalTabs = new TabController().GetTabsByPortal(portalId);
            foreach (var kvp in portalTabs.Where(kvp => kvp.Value.CultureCode == PortalSettings.DefaultLanguage && !kvp.Value.IsDeleted))
            {
                if (kvp.Value.LocalizedTabs.Count == 0)
                {
                    results.Add(kvp.Value);
                }
                else
                {
                    bool tabLocalizedInCulture = kvp.Value.LocalizedTabs.Any(localizedTab => localizedTab.Value.CultureCode == code);
                    if (!tabLocalizedInCulture)
                    {
                        results.Add(kvp.Value);
                    }
                }
            }
            return results;

        }
        /// <summary>
        /// Deletes all redirection rules that were set for pages that have been soft or hard deleted.
        /// </summary>
        /// <param name="portalId"></param>
        public void PurgeInvalidRedirections(int portalId)
        {
            var allTabs = new TabController().GetTabsByPortal(portalId);
            var redirects = GetRedirectionsByPortal(portalId);

            //remove rules for deleted source tabs
            foreach (var r in redirects.Where(r => r.SourceTabId != Null.NullInteger && allTabs.Where(t => t.Key == r.SourceTabId).Count() < 1))
            {
                Delete(portalId, r.Id);
            }
            
            //remove rules for deleted target tabs
            redirects = GetRedirectionsByPortal(portalId); //fresh get of rules in case some were deleted above                       
            foreach (var r in redirects.Where(r => r.TargetType == TargetType.Tab && allTabs.Where(t => t.Key == int.Parse(r.TargetValue.ToString())).Count() < 1))
            {
                Delete(portalId, r.Id);
            }

            //remove rules for deleted target portals
            redirects = GetRedirectionsByPortal(portalId); //fresh get of rules in case some were deleted above                       
            var allPortals = new PortalController().GetPortals();            
            foreach (var r in redirects.Where(r => r.TargetType == TargetType.Portal))
            {
                bool found = false;
                foreach (PortalInfo portal in allPortals)
                {
                    if (portal.PortalID == int.Parse(r.TargetValue.ToString()))
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)                               
                    Delete(portalId, r.Id);
            }
        }
Example #3
0
        private void BindSettingControls()
        {
			// Toggle fields if a redirect already exists for the Portal Home Page
			var defaultRedirect = HomePageRedirectExists();

            // Populate Pages dropdowns            
            var tabs = new TabController().GetTabsByPortal(ModuleContext.PortalId).AsList().Where(IsVisible);
            cboSourcePage.DataTextField = "IndentedTabName";
            cboSourcePage.DataValueField = "TabID";
            cboSourcePage.DataSource = tabs;
            cboSourcePage.DataBind();
            cboTargetPage.DataTextField = "IndentedTabName";
            cboTargetPage.DataValueField = "TabID";

			//if set a default redirect then hide home page in target page list.
			if(!defaultRedirect)
			{
				cboTargetPage.DataSource = tabs.Where(t => t.TabID != ModuleContext.PortalSettings.HomeTabId);
			}
			else
			{
				cboTargetPage.DataSource = tabs;
			}

            cboTargetPage.DataBind();

            // Populating Portals dropdown
            var portalController = new PortalController();
        	var portals = portalController.GetPortals().Cast<PortalInfo>().Where(p => p.PortalID != ModuleContext.PortalId).ToList();
            if (portals.Count > 0)
            {
                cboPortal.DataSource = portals;
                cboPortal.DataTextField = "PortalName";
                cboPortal.DataValueField = "PortalID";
                cboPortal.DataBind();
            }
            else
            {
                optRedirectTarget.Items[0].Enabled = false;
                optRedirectTarget.Items[0].Selected = false;
                optRedirectTarget.Items[1].Selected = true;
            }

            cboSourcePage.Visible = defaultRedirect;
            lblHomePage.Visible = !defaultRedirect;
            lblRedirectName.Visible = defaultRedirect;
            txtRedirectName.Visible = defaultRedirect;
        }