private void LoadPagesModules(int websiteId)
        {
            //get all webpages in the selected website.
            Website     website         = Website.Get(websiteId);
            WebpageInfo websiteRootPage = website.RootWebpage;

            _webpages = Webpage.GetDescendants(websiteRootPage);
            _webpages.Insert(0, websiteRootPage);

            //List<WebModuleType> moduleTypes = WebModuleType.GetModuleTypes();

            List <WebApplicationType> webappTypes = WebApplicationType.GetApplications();

            //sort alphabetically
            webappTypes.Sort(delegate(WebApplicationType app1, WebApplicationType app2)
                             { return(app1.Name.CompareTo(app2.Name)); });

            //get applications that have >=1 addable module.
            WebAppsList.DataSource = webappTypes.FindAll(delegate(WebApplicationType app)
            {
                foreach (WebModuleType m in app.Modules.Values)
                {
                    if (m.CanAddModule)
                    {
                        return(true);
                    }
                }
                return(false);
            });
            WebAppsList.DataBind();
        }
Пример #2
0
        private void LoadExistingModules()
        {
            ExistingModulesPagesSelect.Items.Clear();
            UseExistingModule.Enabled = true;

            ExistingModulePanel.Visible = UseExistingModule.Checked;
            if (UseExistingModule.Checked)
            {
                WebpageInfo        currentPage        = Webpage.GetWebpage(_instanceId);
                WebModuleType      selectedModuleType = GetSelectedModuleType();
                List <WebpageInfo> allPages           = Webpage.GetDescendants(
                    Webpage.GetWebpage(currentPage.Website.RootNavigationId));
                allPages.Add(currentPage.Website.RootWebpage);

                List <WebpageInfo> pagesWithSelectedModuleType =
                    PagesModulesList.GetPagesWithModuleType(selectedModuleType, allPages);

                //sort by path
                pagesWithSelectedModuleType.Sort(
                    delegate(WebpageInfo p1, WebpageInfo p2)
                {
                    return(p1.Path.CompareTo(p2.Path));
                });

                bool existingModules = (pagesWithSelectedModuleType.Count > 0);
                ExistingModulesPagesSelect.Visible = existingModules;
                UseExistingModule.Enabled          = existingModules;
                NoExistingModulesFoundCtl.Visible  = !existingModules;
                if (!existingModules)
                {
                    NoExistingModulesFoundCtl.Text = string.Format("There are no existing '{0}' modules.",
                                                                   selectedModuleType.Name);
                    UseExistingModule.Checked = false;
                }
                else
                {
                    foreach (WebpageInfo p in pagesWithSelectedModuleType)
                    {
                        //find all modules of the specified type
                        //(a page may have multiple modules of the same type).
                        List <WebModuleInfo> modules =
                            p.Modules.FindAll(delegate(WebModuleInfo m)
                        {
                            return(!m.IsAlias &&  //currently, we don't support "alias to alias".
                                   m.WebModuleType.Name == selectedModuleType.Name);
                        });
                        foreach (WebModuleInfo m in modules)
                        {
                            //page path + module name.
                            ExistingModulesPagesSelect.Items.Add(new ListItem(
                                                                     ResolveUrl(p.Path) + " - " + m.Name,
                                                                     m.Id.ToString()));
                        }
                    }
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            HtmlLink cssLink = new HtmlLink();

            cssLink.Href = "~/WebModules/MasterDetail/public/css/MasterDetail.css";
            cssLink.Attributes["rel"]  = "stylesheet";
            cssLink.Attributes["type"] = "text/css";
            this.Page.Header.Controls.AddAt(1, cssLink);

            // Add javscript reference to page
            this.Page.ClientScript.RegisterClientScriptInclude("masterdetail.js", ResolveUrl("~/WebModules/MasterDetail/public/js/masterdetail.js"));

            if (!IsPostBack)
            {
                //int instanceId;
                //int.TryParse(Request.QueryString["instanceId"], out instanceId);
                WebpageInfo startingPage;
                MasterDetailMiniSummarySetting settings = MasterDetailMiniSummarySetting.FetchByID(this.ModuleId);
                if ((settings != null) && (settings.StartingPageId != null))
                {
                    startingPage = Webpage.GetWebpage((int)settings.StartingPageId);
                }
                else
                {
                    WebpageInfo currentPage = Webpage.GetWebpage(Request.Url);
                    startingPage = currentPage.Website.RootWebpage;
                }

                List <WebpageInfo> webpages            = Webpage.GetDescendants(startingPage);
                List <WebpageInfo> pagesWithThisModule = GetPagesWithModuleType("Master Detail Item", webpages);

                StringBuilder pageIdList = new StringBuilder();
                foreach (WebpageInfo page in pagesWithThisModule)
                {
                    if (page.PostDate > DateTime.Now)
                    {
                        continue;
                    }
                    if ((page.RemoveDate != null) && (page.RemoveDate < DateTime.Now))
                    {
                        continue;
                    }

                    if (pageIdList.Length == 0)
                    {
                        pageIdList.Append(page.Id);
                    }
                    else
                    {
                        pageIdList.Append("," + page.Id);
                    }
                    // Maximum length of pageIdList for stored proc is 8000
                    if (pageIdList.Length > 7990)
                    {
                        break;
                    }
                }

                if (pageIdList.Length > 0)
                {
                    if (settings != null)
                    {
                        MiniSummaryRepeater.DataSource =
                            SPs.MasterDetailGetRecentItems(pageIdList.ToString(), settings.FeaturedOnly, settings.NumRows).GetDataSet();
                    }
                    else
                    {
                        MiniSummaryRepeater.DataSource =
                            SPs.MasterDetailGetRecentItems(pageIdList.ToString(), false, 10).GetDataSet();
                    }
                    MiniSummaryRepeater.DataBind();
                }
            }
        }