IsLinkable() public method

This method currently verifies that the item is assigned to a display page. Future versions will eliminate this requirement all together but for now this is needed by ItemLink.aspx when linking occurs. This could be used to test other settings to be valid before displaying.
public IsLinkable ( ) : bool
return bool
 private void DisplayItem(Item item)
 {
     if (item != null && !item.IsLinkable() && Null.IsNull(ModuleBase.DefaultDisplayTabIdForPortal(item.PortalId)))
     {
         this.DisplayBrokenLinkMessage(item);
     }
     else
     {
         this.Response.Status = "301 Moved Permanently";
         this.Response.RedirectLocation = item != null ? UrlGenerator.GetItemLinkUrl(item, this.PortalSettings) : Globals.NavigateURL();
     }
 }
        private void DisplayItem(Item item)
        {
            //check if item.URL is populated, if so figure out where to redirect.
            if (Utility.HasValue(item.Url))
            {
                //do our redirect now
                Response.Status = "301 Moved Permanently";
                Response.RedirectLocation = item.GetItemExternalUrl;
            }
            else
            {
                int defaultTabId = -1;
                object o = HostController.Instance.GetString(Utility.PublishDefaultDisplayPage + item.PortalId);
                if (o != null && Utility.HasValue(o.ToString()))
                {
                    defaultTabId = Convert.ToInt32(o, CultureInfo.InvariantCulture);
                }

                //build language parameter
                string friendlyLanguageValue = string.Empty;
                string languageValue = string.Empty;
                if (!string.IsNullOrEmpty(_language))
                {
                    languageValue = "&language=" + _language;
                    friendlyLanguageValue = "/language/" + _language + "/";
                }

                if (item != null)
                {
                    if (item.IsLinkable())
                    {
                        if (HostController.Instance.GetString("UseFriendlyUrls") == "Y" && ModuleBase.EnablePublishFriendlyUrlsForPortal(item.PortalId))
                        {
                            string pageName = item.Name.Trim();
                            if (pageName.Length > 50)
                            {
                                pageName = item.Name.Substring(0, 50);
                            }
                            pageName = Utility.OnlyAlphanumericCharacters(pageName);
                            //Global.asax Application_BeginRequest checks for these values and will try to redirect to the non-existent page
                            if (pageName.EndsWith("install", StringComparison.CurrentCultureIgnoreCase) || pageName.EndsWith("installwizard", StringComparison.CurrentCultureIgnoreCase))
                            {
                                pageName = pageName.Substring(0, pageName.Length - 1);
                            }
                            pageName = pageName + ".aspx";

                            DotNetNuke.Entities.Portals.PortalSettings ps = Utility.GetPortalSettings(item.PortalId);

                            var tc = new TabController();
                            TabInfo ti;

                            //if the setting to "force display on this page" is set, be sure to send them there.
                            if (item.ForceDisplayOnPage())
                            {
                                ti = tc.GetTab(item.DisplayTabId, item.PortalId, false);
                                if (ti.IsDeleted)
                                {
                                    if (defaultTabId > 0)
                                    {
                                        ti = tc.GetTab(defaultTabId, item.PortalId, false);
                                    }
                                }
                                Response.Status = "301 Moved Permanently";
                                Response.RedirectLocation = DotNetNuke.Common.Globals.FriendlyUrl(ti,
                                     "/tabid/" + ti.TabID.ToString(CultureInfo.InvariantCulture) + "/itemid/"
                                     + item.ItemId.ToString(CultureInfo.InvariantCulture) + UsePageId(true), pageName, ps);

                            }
                            else if (_tabid > 0 && item.DisplayOnCurrentPage())
                            {

                                ti = tc.GetTab(_tabid, item.PortalId, false);
                                if (ti.IsDeleted)
                                {
                                    ti = tc.GetTab(defaultTabId, item.PortalId, false);
                                }
                                //check if there is a ModuleID passed in the querystring, if so then send it in the querystring as well
                                if (_modid > 0)
                                {

                                    Response.Status = "301 Moved Permanently";
                                    Response.RedirectLocation = DotNetNuke.Common.Globals.FriendlyUrl(ti, "/tabid/" + ti.TabID.ToString(CultureInfo.InvariantCulture) + "/itemid/" + item.ItemId.ToString(CultureInfo.InvariantCulture) + "/modid/" + _modid.ToString(CultureInfo.InvariantCulture) + UsePageId(true) + friendlyLanguageValue, pageName, ps);
                                }
                                else
                                {
                                    Response.Status = "301 Moved Permanently";
                                    Response.RedirectLocation = DotNetNuke.Common.Globals.FriendlyUrl(ti, "/tabid/" + ti.TabID.ToString(CultureInfo.InvariantCulture) + "/itemid/" + item.ItemId.ToString(CultureInfo.InvariantCulture) + UsePageId(true) + friendlyLanguageValue, pageName, ps);
                                }
                            }
                            else
                            {
                                ti = tc.GetTab(item.DisplayTabId, item.PortalId, false);
                                if (ti.IsDeleted)
                                {
                                    ti = tc.GetTab(defaultTabId, item.PortalId, false);
                                }
                                Response.Status = "301 Moved Permanently";
                                Response.RedirectLocation = DotNetNuke.Common.Globals.FriendlyUrl(ti, "/tabid/" + ti.TabID.ToString(CultureInfo.InvariantCulture) + "/itemid/" + item.ItemId.ToString(CultureInfo.InvariantCulture) + UsePageId(true) + friendlyLanguageValue, pageName, ps);
                            }
                        }
                        else
                        {
                            //we need to check for ForceOnCurrentPage
                            var tc = new TabController();
                            TabInfo ti;
                            DotNetNuke.Entities.Portals.PortalSettings ps = Utility.GetPortalSettings(item.PortalId);
                            //if we are passing in a TabId use it

                            if (item.ForceDisplayOnPage())
                            {
                                ti = tc.GetTab(item.DisplayTabId, item.PortalId, false);
                                Response.Status = "301 Moved Permanently";
                                Response.RedirectLocation = DotNetNuke.Common.Globals.NavigateURL(ti.TabID, ps, "", "itemid=" + item.ItemId.ToString(CultureInfo.InvariantCulture) + UsePageId(false) + languageValue);

                            }

                            if (_tabid > 0)
                            {

                                if (_modid > 0)
                                {
                                    Response.Status = "301 Moved Permanently";
                                    Response.RedirectLocation = DotNetNuke.Common.Globals.NavigateURL(_tabid, ps, "", "itemid=" + item.ItemId.ToString(CultureInfo.InvariantCulture) + "&modid=" + _modid.ToString(CultureInfo.InvariantCulture) + UsePageId(false) + languageValue);

                                }
                                else
                                {
                                    Response.Status = "301 Moved Permanently";
                                    Response.RedirectLocation = DotNetNuke.Common.Globals.NavigateURL(_tabid, ps, "", "itemid=" + item.ItemId + UsePageId(false) + languageValue);
                                }
                            }

                            Response.Status = "301 Moved Permanently";
                            Response.RedirectLocation = DotNetNuke.Common.Globals.NavigateURL(item.DisplayTabId, ps, "", "itemid=" + item.ItemId + UsePageId(false) + languageValue);
                        }
                    }
                    else
                    {
                        //display on the current page or send them elsewhere.
                        //display broken link information
                        //DisplayBrokenLinkMessage(item);

                        if (defaultTabId > -1)
                        {
                            //send them to the Default Display Page
                            Response.Status = "301 Moved Permanently";
                            Response.RedirectLocation = DotNetNuke.Common.Globals.NavigateURL(defaultTabId, PortalSettings, "", "itemid=" + item.ItemId.ToString(CultureInfo.InvariantCulture) + UsePageId(false) + languageValue);
                        }
                        else
                        {
                            DisplayBrokenLinkMessage(item);
                        }
                    }
                }
                else
                {
                    Response.Status = "301 Moved Permanently";
                    Response.RedirectLocation = DotNetNuke.Common.Globals.NavigateURL();
                }
            }
        }