コード例 #1
0
        protected void btnCreateNewContent_Click(object sender, EventArgs e)
        {
            Page.Validate("contentcatalog");
            if (!Page.IsValid) { return; }

            int moduleDefID = int.Parse(ddModuleType.SelectedItem.Value, CultureInfo.InvariantCulture);
            ModuleDefinition moduleDefinition = new ModuleDefinition(moduleDefID);

            Module module = new Module();
            module.ModuleTitle = this.txtModuleTitle.Text;
            module.ModuleDefId = moduleDefID;
            module.FeatureGuid = moduleDefinition.FeatureGuid;
            module.Icon = moduleDefinition.Icon;
            module.SiteId = siteSettings.SiteId;
            module.SiteGuid = siteSettings.SiteGuid;
            module.CreatedByUserId = SiteUtils.GetCurrentSiteUser().UserId;
            module.CacheTime = moduleDefinition.DefaultCacheTime;
            module.ShowTitle = WebConfigSettings.ShowModuleTitlesByDefault;
            module.HeadElement = WebConfigSettings.ModuleTitleTag;
            module.Save();
            WebUtils.SetupRedirect(this, SiteRoot
                + "/Admin/ContentManagerPreview.aspx?mid="
                + module.ModuleId.ToInvariantString()
                );
        }
コード例 #2
0
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            if (module.ModuleId > -1)
            {
                DataTable pageIds = Module.GetPageModulesTable(module.ModuleId);

                foreach (DataRow row in pageIds.Rows)
                {
                    int pageId = Convert.ToInt32(row["PageID"]);
                    Module.DeleteModuleInstance(module.ModuleId, pageId);
                    mojoPortal.SearchIndex.IndexHelper.RebuildPageIndexAsync(new PageSettings(siteSettings.SiteId, pageId));
                }

                ModuleDefinition feature = new ModuleDefinition(module.ModuleDefId);

                if (feature.DeleteProvider.Length > 0)
                {
                    try
                    {
                        ContentDeleteHandlerProvider contentDeleter = ContentDeleteHandlerProviderManager.Providers[feature.DeleteProvider];
                        if (contentDeleter != null)
                        {
                            contentDeleter.DeleteContent(module.ModuleId, module.ModuleGuid);
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error("Failed to invoke content delete handler " + feature.DeleteProvider, ex);
                    }
                }

                if (WebConfigSettings.LogIpAddressForContentDeletions)
                {
                    string userName = string.Empty;
                    SiteUser currentUser = SiteUtils.GetCurrentSiteUser();
                    if (currentUser != null)
                    {
                        userName = currentUser.Name;
                    }

                    log.Info("user " + userName + " deleted module " + module.ModuleTitle + " from ip address " + SiteUtils.GetIP4Address());

                }

                Module.DeleteModule(module.ModuleId);
                //CacheHelper.TouchCacheDependencyFile(cacheDependencyKey);
                CacheHelper.ClearModuleCache(module.ModuleId);

            }

            WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl());
        }
コード例 #3
0
        protected void BindControls()
        {
            if (this.moduleDefId > -1)
            {
                ModuleDefinition moduleDef = new ModuleDefinition(moduleDefId);
                //if (moduleDef.SiteID != siteSettings.SiteID) return;
                lnkModuleDefinition.Text = ResourceHelper.GetResourceString(moduleDef.ResourceFile, moduleDef.FeatureName);

                heading.Text = string.Format(CultureInfo.InvariantCulture, Resource.FeatureSettingsFormat, lnkModuleDefinition.Text);

                lnkModuleDefinition.ToolTip = lnkModuleDefinition.Text;
                lnkModuleDefinition.NavigateUrl = SiteRoot + "/Admin/ModuleDefinitions.aspx?defid=" + moduleDefId.ToString();

                ArrayList defSettings = ModuleSettings.GetDefaultSettings(this.moduleDefId);
                this.grdSettings.DataSource = defSettings;
                this.grdSettings.DataBind();

            }
        }
コード例 #4
0
        protected void btnCreateNewSetting_Click(object sender, EventArgs e)
        {
            if (this.moduleDefId > -1)
            {
                ModuleDefinition featureDef = new ModuleDefinition(moduleDefId);
                ModuleDefinition.UpdateModuleDefinitionSetting(
                    featureDef.FeatureGuid,
                    this.moduleDefId,
                    this.txtNewResourceFile.Text,
                    txtGroupNameKey.Text,
                    this.txtNewSettingName.Text,
                    this.txtNewSettingValue.Text,
                    this.ddNewControlType.SelectedValue,
                    this.txtNewRegexValidationExpression.Text,
                    this.txtNewControlSrc.Text,
                    this.txtNewHelpKey.Text,
                    Convert.ToInt32(this.txtNewSortOrder.Text));
            }

            WebUtils.SetupRedirect(this, Request.RawUrl);
        }
コード例 #5
0
        public override void RebuildIndex(
            PageSettings pageSettings,
            string indexPath)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }

            if (pageSettings == null)
            {
                log.Error("pageSettings object passed to BlogIndexBuilderProvider.RebuildIndex was null");
                return;
            }

            //don't index pending/unpublished pages
            if (pageSettings.IsPending) { return; }

            log.Info("BlogIndexBuilderProvider indexing page - "
                + pageSettings.PageName);

            //try
            //{
            Guid blogFeatureGuid = new Guid("026cbead-2b80-4491-906d-b83e37179ccf");
            ModuleDefinition blogFeature = new ModuleDefinition(blogFeatureGuid);

            List<PageModule> pageModules
                    = PageModule.GetPageModulesByPage(pageSettings.PageId);

            DataTable dataTable
                = Blog.GetBlogsByPage(
                pageSettings.SiteId,
                pageSettings.PageId);

            foreach (DataRow row in dataTable.Rows)
            {
                bool includeInSearch = Convert.ToBoolean(row["IncludeInSearch"], CultureInfo.InvariantCulture);
                if (!includeInSearch) { continue; }

                DateTime postEndDate = DateTime.MaxValue;
                if(row["EndDate"] != DBNull.Value)
                {
                    postEndDate = Convert.ToDateTime(row["EndDate"]);

                    if (postEndDate < DateTime.UtcNow) { continue; }
                }

                bool excludeFromRecentContent = Convert.ToBoolean(row["ExcludeFromRecentContent"], CultureInfo.InvariantCulture);

                mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                indexItem.SiteId = pageSettings.SiteId;
                indexItem.PageId = pageSettings.PageId;
                indexItem.ExcludeFromRecentContent = excludeFromRecentContent;
                indexItem.PageName = pageSettings.PageName;
                indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                indexItem.ModuleViewRoles = row["ViewRoles"].ToString();
                indexItem.FeatureId = blogFeatureGuid.ToString();
                indexItem.FeatureName = blogFeature.FeatureName;
                indexItem.FeatureResourceFile = blogFeature.ResourceFile;

                indexItem.ItemId = Convert.ToInt32(row["ItemID"], CultureInfo.InvariantCulture);
                indexItem.ModuleId = Convert.ToInt32(row["ModuleID"], CultureInfo.InvariantCulture);
                indexItem.ModuleTitle = row["ModuleTitle"].ToString();
                indexItem.Title = row["Heading"].ToString();

                string authorName = row["Name"].ToString();
                string authorFirstName = row["FirstName"].ToString();
                string authorLastName = row["LastName"].ToString();

                if ((authorFirstName.Length > 0) && (authorLastName.Length > 0))
                {
                    indexItem.Author = string.Format(CultureInfo.InvariantCulture,
                        BlogResources.FirstLastFormat, authorFirstName, authorLastName);
                }
                else
                {
                    indexItem.Author = authorName;
                }

                if ((!WebConfigSettings.UseUrlReWriting) || (!BlogConfiguration.UseFriendlyUrls(indexItem.ModuleId)))
                {
                    indexItem.ViewPage = "Blog/ViewPost.aspx?pageid="
                        + indexItem.PageId.ToInvariantString()
                        + "&mid=" + indexItem.ModuleId.ToInvariantString()
                        + "&ItemID=" + indexItem.ItemId.ToInvariantString()
                        ;
                }
                else
                {
                    indexItem.ViewPage = row["ItemUrl"].ToString().Replace("~/", string.Empty);
                }

                indexItem.PageMetaDescription = row["MetaDescription"].ToString();
                indexItem.PageMetaKeywords = row["MetaKeywords"].ToString();

                DateTime blogStart = Convert.ToDateTime(row["StartDate"]);

                indexItem.CreatedUtc = blogStart;
                indexItem.LastModUtc = Convert.ToDateTime(row["LastModUtc"]);

                //if (indexItem.ViewPage.Length > 0)
                //{
                    indexItem.UseQueryStringParams = false;
                //}
                //else
                //{
                //    indexItem.ViewPage = "Blog/ViewPost.aspx";
                //}
                indexItem.Content = row["Description"].ToString();
                indexItem.ContentAbstract = row["Abstract"].ToString();
                int commentCount = Convert.ToInt32(row["CommentCount"]);

                if (commentCount > 0)
                {	// index comments
                    StringBuilder stringBuilder = new StringBuilder();
                    DataTable comments = Blog.GetBlogCommentsTable(indexItem.ModuleId, indexItem.ItemId);

                    foreach (DataRow commentRow in comments.Rows)
                    {
                        stringBuilder.Append("  " + commentRow["Comment"].ToString());
                        stringBuilder.Append("  " + commentRow["Name"].ToString());

                        if (debugLog) log.Debug("BlogIndexBuilderProvider.RebuildIndex add comment ");

                    }

                    indexItem.OtherContent = stringBuilder.ToString();

                }

                // lookup publish dates
                foreach (PageModule pageModule in pageModules)
                {
                    if (indexItem.ModuleId == pageModule.ModuleId)
                    {
                        indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                        indexItem.PublishEndDate = pageModule.PublishEndDate;
                    }
                }

                if (blogStart > indexItem.PublishBeginDate) { indexItem.PublishBeginDate = blogStart; }
                if (postEndDate < indexItem.PublishEndDate) { indexItem.PublishEndDate = postEndDate; }

                mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem, indexPath);

                if (debugLog) log.Debug("Indexed " + indexItem.Title);

            }
            //}
            //catch (Exception ex)
            //{
            //    log.Error(ex);
            //}
        }
コード例 #6
0
        private void btnCreateNewContent_Click(Object sender, EventArgs e)
        {
            Page.Validate("pagelayout");
            if (!Page.IsValid) { return; }

            int moduleDefID = int.Parse(moduleType.SelectedItem.Value);
            ModuleDefinition moduleDefinition = new ModuleDefinition(moduleDefID);

            Module m = new Module();
            m.SiteId = siteSettings.SiteId;
            m.SiteGuid = siteSettings.SiteGuid;
            m.ModuleDefId = moduleDefID;
            m.FeatureGuid = moduleDefinition.FeatureGuid;
            m.Icon = moduleDefinition.Icon;
            m.CacheTime = moduleDefinition.DefaultCacheTime;
            m.PageId = pageID;
            m.ModuleTitle = moduleTitle.Text;
            m.PaneName = ddPaneNames.SelectedValue;
            //m.AuthorizedEditRoles = "Admins";
            SiteUser currentUser = SiteUtils.GetCurrentSiteUser();
            if (currentUser != null)
            {
                m.CreatedByUserId = currentUser.UserId;
            }
            m.ShowTitle = WebConfigSettings.ShowModuleTitlesByDefault;
            m.HeadElement = WebConfigSettings.ModuleTitleTag;
            m.Save();

            CurrentPage.RefreshModules();

            ArrayList modules = GetPaneModules(m.PaneName);
            OrderModules(modules);

            foreach (Module item in modules)
            {
                Module.UpdateModuleOrder(pageID, item.ModuleId, item.ModuleOrder, m.PaneName);
            }

            //WebUtils.SetupRedirect(this, Request.RawUrl);
            //return;

            CurrentPage.RefreshModules();
            BindPanes();
            upLayout.Update();
        }
コード例 #7
0
        private static void IndexItem(HtmlContent content)
        {
            bool disableSearchIndex = ConfigHelper.GetBoolProperty("DisableSearchIndex", false);
            if (disableSearchIndex) { return; }

            Module module = new Module(content.ModuleId);

            Guid htmlFeatureGuid
                = new Guid("881e4e00-93e4-444c-b7b0-6672fb55de10");
            ModuleDefinition htmlFeature
                = new ModuleDefinition(htmlFeatureGuid);

            // get list of pages where this module is published
            List<PageModule> pageModules
                = PageModule.GetPageModulesByModule(content.ModuleId);

            foreach (PageModule pageModule in pageModules)
            {
                PageSettings pageSettings
                    = new PageSettings(
                    content.SiteId,
                    pageModule.PageId);

                //don't index pending/unpublished pages
                if (pageSettings.IsPending) { continue; }

                IndexItem indexItem = new IndexItem();
                if (content.SearchIndexPath.Length > 0)
                {
                    indexItem.IndexPath = content.SearchIndexPath;
                }
                indexItem.SiteId = content.SiteId;
                indexItem.ExcludeFromRecentContent = content.ExcludeFromRecentContent;
                indexItem.PageId = pageModule.PageId;
                indexItem.PageName = pageSettings.PageName;
                indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                indexItem.ModuleViewRoles = module.ViewRoles;
                if (pageSettings.UseUrl)
                {
                    indexItem.ViewPage = pageSettings.Url.Replace("~/", string.Empty);
                    indexItem.UseQueryStringParams = false;
                }

                // generally we should not include the page meta because it can result in duplicate results
                // one for each instance of html content on the page because they all use the smae page meta.
                // since page meta should reflect the content of the page it is sufficient to just index the content
                if ((ConfigurationManager.AppSettings["IndexPageMeta"] != null) && (ConfigurationManager.AppSettings["IndexPageMeta"] == "true"))
                {
                    indexItem.PageMetaDescription = pageSettings.PageMetaDescription;
                    indexItem.PageMetaKeywords = pageSettings.PageMetaKeyWords;
                }

                indexItem.FeatureId = htmlFeatureGuid.ToString();
                indexItem.FeatureName = htmlFeature.FeatureName;
                indexItem.FeatureResourceFile = htmlFeature.ResourceFile;

                indexItem.ItemId = content.ItemId;
                indexItem.ModuleId = content.ModuleId;
                indexItem.ModuleTitle = module.ModuleTitle;
                indexItem.Title = content.Title;
                indexItem.Content = SecurityHelper.RemoveMarkup(content.Body);
                indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                indexItem.PublishEndDate = pageModule.PublishEndDate;

                if ((content.CreatedByFirstName.Length > 0) && (content.CreatedByLastName.Length > 0))
                {
                    indexItem.Author = string.Format(CultureInfo.InvariantCulture,
                        Resource.FirstLastFormat, content.CreatedByFirstName, content.CreatedByLastName);
                }
                else
                {
                    indexItem.Author = content.CreatedByName;
                }

                indexItem.CreatedUtc = content.CreatedDate;
                indexItem.LastModUtc = content.LastModUtc;

                if (!module.IncludeInSearch) { indexItem.RemoveOnly = true; }

                IndexHelper.RebuildIndex(indexItem);
            }

            log.Debug("Indexed " + content.Title);
        }
コード例 #8
0
        private void PopulateControls()
        {
            Module module = new Module(moduleId);
            if (module.SiteId != siteSettings.SiteId) { return; }
            if (module.ViewRoles == "Admins;")
            {
                if (!WebUser.IsAdmin)
                {
                    SiteUtils.RedirectToAccessDeniedPage(this);
                    return;
                }
            }

            ModuleDefinition feature = new ModuleDefinition(module.ModuleDefId);
            pnlWarning.Visible = !feature.SupportsPageReuse;
            lblModuleTitle.Text = module.ModuleTitle;
            String controlToLoad = "~/" + module.ControlSource;
            if (File.Exists(Server.MapPath(controlToLoad)))
            {
                Control c = Page.LoadControl("~/" + module.ControlSource);

                if (c is SiteModuleControl)
                {
                    SiteModuleControl siteModule = c as SiteModuleControl;

                    siteModule.SiteId = siteSettings.SiteId;
                    siteModule.ModuleConfiguration = module;
                    pnlViewModule.Controls.Add(siteModule);

                }
                else
                {
                    // plain UserControl
                    pnlViewModule.Controls.Add(c);
                }

                lnkPublish.Text = Resource.ContentManagerPublishContentLink;
                lnkPublish.NavigateUrl = SiteRoot + WebConfigSettings.ContentPublishPageRelativeUrl + "?mid=" + this.moduleId;
                if (pageId > -1)
                {
                    lnkPublish.NavigateUrl += "&pageid=" + pageId.ToString(CultureInfo.InvariantCulture);
                }

            }
            else
            {

                WebUtils.SetupRedirect(this, SiteRoot + "/Admin/ContentCatalog.aspx");

            }
        }
コード例 #9
0
        public override void RebuildIndex(
            PageSettings pageSettings,
            string indexPath)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }
            if (pageSettings == null) return;

            //don't index pending/unpublished pages
            if (pageSettings.IsPending) { return; }

            log.Info("CalendarEventIndexBuilderProvider indexing page - "
                + pageSettings.PageName);

            try
            {
                Guid calendarFeatureGuid = new Guid("c5e6a5df-ac2a-43d3-bb7f-9739bc47194e");
                ModuleDefinition calendarFeature = new ModuleDefinition(calendarFeatureGuid);

                List<PageModule> pageModules
                        = PageModule.GetPageModulesByPage(pageSettings.PageId);

                DataTable dataTable = CalendarEvent.GetEventsByPage(pageSettings.SiteId, pageSettings.PageId);

                foreach (DataRow row in dataTable.Rows)
                {
                    mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                    indexItem.SiteId = pageSettings.SiteId;
                    indexItem.PageId = pageSettings.PageId;
                    indexItem.PageName = pageSettings.PageName;
                    indexItem.PageIndex = pageSettings.PageIndex;
                    indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                    indexItem.ModuleViewRoles = row["ViewRoles"].ToString();
                    indexItem.FeatureId = calendarFeatureGuid.ToString();
                    indexItem.FeatureName = calendarFeature.FeatureName;
                    indexItem.FeatureResourceFile = calendarFeature.ResourceFile;

                    indexItem.ItemId = Convert.ToInt32(row["ItemID"], CultureInfo.InvariantCulture);
                    indexItem.ModuleId = Convert.ToInt32(row["ModuleID"], CultureInfo.InvariantCulture);
                    indexItem.ModuleTitle = row["ModuleTitle"].ToString();
                    indexItem.Title = row["Title"].ToString();
                    indexItem.Content = row["Description"].ToString();
                    indexItem.ViewPage = "EventCalendar/EventDetails.aspx";

                    indexItem.CreatedUtc = Convert.ToDateTime(row["CreatedDate"]);
                    indexItem.LastModUtc = Convert.ToDateTime(row["LastModUtc"]);

                    // lookup publish dates
                    foreach (PageModule pageModule in pageModules)
                    {
                        if (indexItem.ModuleId == pageModule.ModuleId)
                        {
                            indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                            indexItem.PublishEndDate = pageModule.PublishEndDate;
                        }
                    }

                    mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem, indexPath);

                    if (debugLog) log.Debug("Indexed " + indexItem.Title);

                }
            }
            catch (System.Data.Common.DbException ex)
            {
                log.Error(ex);
            }
        }
コード例 #10
0
        private void PopulateControls()
        {
            //if(moduleDefId < 0) { return;}

            ModuleDefinition moduleDef = new ModuleDefinition(moduleDefId);

            lnkModuleDefinition.Text = ResourceHelper.GetResourceString(moduleDef.ResourceFile, moduleDef.FeatureName);

            heading.Text = string.Format(CultureInfo.InvariantCulture, Resource.PermissionsFormat, lnkModuleDefinition.Text);

            lnkModuleDefinition.ToolTip = lnkModuleDefinition.Text;
            lnkModuleDefinition.NavigateUrl = SiteRoot + "/Admin/ModuleDefinitions.aspx?defid=" + moduleDefId.ToString();

            if (!IsPostBack) { BindRoles(); }
        }
コード例 #11
0
        private void UpdateBtn_Click(Object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                ModuleDefinition moduleDefinition = new ModuleDefinition(this.moduleDefinitionId);
                if (txtFeatureGuid.Text.Length == 36)
                {
                    moduleDefinition.FeatureGuid = new Guid(txtFeatureGuid.Text);
                }
                moduleDefinition.SiteId = siteSettings.SiteId;
                moduleDefinition.FeatureName = this.txtFeatureName.Text;
                moduleDefinition.ResourceFile = txtResourceFile.Text;
                moduleDefinition.ControlSrc = this.txtControlSource.Text;
                moduleDefinition.SortOrder = int.Parse(this.txtSortOrder.Text, CultureInfo.InvariantCulture);
                moduleDefinition.DefaultCacheTime = int.Parse(this.txtDefaultCacheDuration.Text, CultureInfo.InvariantCulture);
                moduleDefinition.IsAdmin = this.chkIsAdmin.Checked;
                moduleDefinition.Icon = this.ddIcons.SelectedValue;
                moduleDefinition.IsCacheable = chkIsCacheable.Checked;
                moduleDefinition.IsSearchable = chkIsSearchable.Checked;
                moduleDefinition.SearchListName = txtSearchListName.Text;

                moduleDefinition.Save();

                string redirectUrl = SiteRoot
                    + "/Admin/ModuleDefinitions.aspx?defid="
                    + moduleDefinition.ModuleDefId.ToString(CultureInfo.InvariantCulture);

                WebUtils.SetupRedirect(this, redirectUrl);
            }
        }
コード例 #12
0
        private void PopulateControls()
        {
            if (moduleDefinitionId > -1)
            {
                ModuleDefinition moduleDefinition = new ModuleDefinition(this.moduleDefinitionId);
                txtFeatureName.Text = moduleDefinition.FeatureName;
                txtResourceFile.Text = moduleDefinition.ResourceFile;
                txtFeatureGuid.Text = moduleDefinition.FeatureGuid.ToString();
                this.txtControlSource.Text = moduleDefinition.ControlSrc;
                this.txtSortOrder.Text = moduleDefinition.SortOrder.ToString(CultureInfo.InvariantCulture);
                this.txtDefaultCacheDuration.Text = moduleDefinition.DefaultCacheTime.ToString(CultureInfo.InvariantCulture);
                this.chkIsAdmin.Checked = moduleDefinition.IsAdmin;
                if (moduleDefinition.Icon.Length > 0)
                {
                    ddIcons.SelectedValue = moduleDefinition.Icon;
                    imgIcon.Src = Page.ResolveUrl("~/Data/SiteImages/FeatureIcons/" + moduleDefinition.Icon);

                }
                else
                {
                    imgIcon.Src = Page.ResolveUrl("~/Data/SiteImages/FeatureIcons/blank.gif");
                }

                chkIsCacheable.Checked = moduleDefinition.IsCacheable;
                chkIsSearchable.Checked = moduleDefinition.IsSearchable;
                txtSearchListName.Text = moduleDefinition.SearchListName;

            }
            else
            {
                txtFeatureName.Text = Resource.ModuleDefinitionsDefaultModuleName;
                txtControlSource.Text = Resource.ModuleDefinitionsDefaultControlSource;
                txtFeatureGuid.Text = Guid.NewGuid().ToString();
                txtSortOrder.Text = "500";
                this.txtDefaultCacheDuration.Text = "0";
                this.lnkConfigureSettings.Visible = false;
                imgIcon.Src = Page.ResolveUrl("~/Data/SiteImages/FeatureIcons/blank.gif");
                this.deleteButton.Visible = false;

            }
        }
コード例 #13
0
        void btnDelete_Click(object sender, EventArgs e)
        {
            ArrayList pageIDs = new ArrayList();
            ArrayList sitePages = new ArrayList();
            PopulatePageArray(sitePages);
            List<ModuleDecoratedSiteMapNode> pageList
                = ModuleDecoratedSiteMapNode.GetDecoratedNodes(sitePages, moduleID);

            foreach (ModuleDecoratedSiteMapNode decoratedPage in pageList)
            {
                if (decoratedPage.IsPublished)
                {
                    pageIDs.Add(decoratedPage.PageId);
                }

            }

            foreach (int p in pageIDs)
            {
                Module.DeleteModuleInstance(this.moduleID, p);
                mojoPortal.SearchIndex.IndexHelper.RebuildPageIndexAsync(new PageSettings(siteSettings.SiteId, p));
            }

            Module m = new Module(moduleID);
            ModuleDefinition feature = new ModuleDefinition(m.ModuleDefId);

            if (feature.DeleteProvider.Length > 0)
            {
                try
                {
                    ContentDeleteHandlerProvider contentDeleter = ContentDeleteHandlerProviderManager.Providers[feature.DeleteProvider];
                    if (contentDeleter != null)
                    {
                        contentDeleter.DeleteContent(m.ModuleId, m.ModuleGuid);
                    }
                }
                catch (Exception ex)
                {
                    log.Error("Failed to invoke content delete handler " + feature.DeleteProvider, ex);
                }
            }

            if (WebConfigSettings.LogIpAddressForContentDeletions)
            {
                string userName = string.Empty;
                SiteUser currentUser = SiteUtils.GetCurrentSiteUser();
                if (currentUser != null)
                {
                    userName = currentUser.Name;
                }

                log.Info("user " + userName + " deleted module " + m.ModuleTitle + " from ip address " + SiteUtils.GetIP4Address());

            }

            Module.DeleteModule(this.moduleID);

            if (hdnReturnUrl.Value.Length > 0)
            {
                if (hdnReturnUrl.Value.Contains("ModuleSettings.aspx"))
                {
                    // redirecting back to module settings for a deleted module cuases an error
                    WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl());
                    return;
                }

                WebUtils.SetupRedirect(this, hdnReturnUrl.Value);
                return;
            }

            WebUtils.SetupRedirect(this, SiteUtils.GetNavigationSiteRoot());
        }
コード例 #14
0
        private void BindControls()
        {
            //lblModuleTitle.Text = string.Format(CultureInfo.InvariantCulture, Resource.PublishingForFormat, currentModule.ModuleTitle);
            heading.Text = string.Format(CultureInfo.InvariantCulture, Resource.PublishingForFormat, currentModule.ModuleTitle);
            publishLinkTitle = heading.Text;

            ModuleDefinition feature = new ModuleDefinition(currentModule.ModuleDefId);
            pnlWarning.Visible = !feature.SupportsPageReuse;

            ArrayList sitePages = new ArrayList();
            PopulatePageArray(sitePages);
            List<ModuleDecoratedSiteMapNode> pageList
             = ModuleDecoratedSiteMapNode.GetDecoratedNodes(sitePages, moduleID);

            if (pageList.Count > WebConfigSettings.TooManyPagesForGridEvents)
            {
                useDialogForEditing = true;
                grdPages.EnableViewState = false;
            }

            grdPages.DataSource = pageList;
            grdPages.DataBind();

            //log.Info("EditIndex was " + grdPages.EditIndex);
            //log.Info("bound grid " + pageList.Count);
        }
コード例 #15
0
        public override void RebuildIndex(
            PageSettings pageSettings,
            string indexPath)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }

            if (pageSettings == null)
            {
                log.Error("LinksIndexBuilderProvider.RebuildIndex error: pageSettings was null ");
                return;
            }

            //don't index pending/unpublished pages
            if (pageSettings.IsPending) { return; }

            log.Info("LinksIndexBuilderProvider indexing page - "
                + pageSettings.PageName);

            try
            {
                Guid linksFeatureGuid = new Guid("74bdbcc2-0e79-47ff-bcd4-a159270bf36e");
                ModuleDefinition linksFeature = new ModuleDefinition(linksFeatureGuid);

                List<PageModule> pageModules
                        = PageModule.GetPageModulesByPage(pageSettings.PageId);

                DataTable dataTable = Link.GetLinksByPage(
                    pageSettings.SiteId, pageSettings.PageId);

                foreach (DataRow row in dataTable.Rows)
                {
                    mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                    indexItem.SiteId = pageSettings.SiteId;
                    indexItem.PageId = pageSettings.PageId;
                    indexItem.PageName = pageSettings.PageName;
                    indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                    indexItem.ModuleViewRoles = row["ViewRoles"].ToString();
                    indexItem.CreatedUtc = Convert.ToDateTime(row["CreatedDate"]);
                    indexItem.LastModUtc = indexItem.CreatedUtc;

                    if (pageSettings.UseUrl)
                    {
                        if (pageSettings.UrlHasBeenAdjustedForFolderSites)
                        {
                            indexItem.ViewPage = pageSettings.UnmodifiedUrl.Replace("~/", string.Empty);
                        }
                        else
                        {
                            indexItem.ViewPage = pageSettings.Url.Replace("~/", string.Empty);
                        }
                        indexItem.UseQueryStringParams = false;
                    }

                    indexItem.FeatureId = linksFeatureGuid.ToString();
                    indexItem.FeatureName = linksFeature.FeatureName;
                    indexItem.FeatureResourceFile = linksFeature.ResourceFile;

                    indexItem.ItemId = Convert.ToInt32(row["ItemID"], CultureInfo.InvariantCulture);
                    indexItem.ModuleId = Convert.ToInt32(row["ModuleID"], CultureInfo.InvariantCulture);
                    indexItem.ModuleTitle = row["ModuleTitle"].ToString();
                    indexItem.Title = row["Title"].ToString();
                    indexItem.Content = row["Description"].ToString();
                    // lookup publish dates
                    foreach (PageModule pageModule in pageModules)
                    {
                        if (indexItem.ModuleId == pageModule.ModuleId)
                        {
                            indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                            indexItem.PublishEndDate = pageModule.PublishEndDate;
                        }
                    }

                    mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem, indexPath);

                    if (debugLog) log.Debug("Indexed " + indexItem.Title);

                }
            }
            catch (System.Data.Common.DbException ex)
            {
                log.Error(ex);
            }
        }
コード例 #16
0
        private static void IndexItem(Link link)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }

            SiteSettings siteSettings = CacheHelper.GetCurrentSiteSettings();
            if (siteSettings == null)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("Link object passed to Links.IndexItem was null");
                }

                return;
            }

            if (link == null) return;

            Guid linksFeatureGuid = new Guid("74bdbcc2-0e79-47ff-bcd4-a159270bf36e");
            ModuleDefinition linksFeature = new ModuleDefinition(linksFeatureGuid);
            Module module = new Module(link.ModuleId);

            // get list of pages where this module is published
            List<PageModule> pageModules
                = PageModule.GetPageModulesByModule(link.ModuleId);

            foreach (PageModule pageModule in pageModules)
            {
                PageSettings pageSettings
                    = new PageSettings(
                    siteSettings.SiteId,
                    pageModule.PageId);

                //don't index pending/unpublished pages
                if (pageSettings.IsPending) { continue; }

                mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                indexItem.SiteId = siteSettings.SiteId;
                indexItem.PageId = pageSettings.PageId;
                indexItem.PageName = pageSettings.PageName;
                indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                indexItem.ModuleViewRoles = module.ViewRoles;
                indexItem.FeatureId = linksFeatureGuid.ToString();
                indexItem.FeatureName = linksFeature.FeatureName;
                indexItem.FeatureResourceFile = linksFeature.ResourceFile;

                indexItem.ItemId = link.ItemId;
                indexItem.ModuleId = link.ModuleId;
                indexItem.ModuleTitle = module.ModuleTitle;
                indexItem.Title = link.Title;
                indexItem.Content = link.Description;
                indexItem.CreatedUtc = link.CreatedDate;
                indexItem.LastModUtc = link.CreatedDate;
                indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                indexItem.PublishEndDate = pageModule.PublishEndDate;

                mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem);
            }

            if (debugLog) log.Debug("Indexed " + link.Title);
        }
コード例 #17
0
        private static void IndexItem(SharedFile sharedFile)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }

            SiteSettings siteSettings = CacheHelper.GetCurrentSiteSettings();

            if (
                (sharedFile == null)
                || (siteSettings == null)
                )
            {
                return;
            }

            Guid sharedFilesFeatureGuid = new Guid("dc873d76-5bf2-4ac5-bff7-434a87a3fc8e");
            ModuleDefinition sharedFilesFeature = new ModuleDefinition(sharedFilesFeatureGuid);

            Module module = new Module(sharedFile.ModuleId);

            // get list of pages where this module is published
            List<PageModule> pageModules
                = PageModule.GetPageModulesByModule(sharedFile.ModuleId);

            foreach (PageModule pageModule in pageModules)
            {
                PageSettings pageSettings
                    = new PageSettings(
                    siteSettings.SiteId,
                    pageModule.PageId);

                //don't index pending/unpublished pages
                if (pageSettings.IsPending) { continue; }

                mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                indexItem.SiteId = siteSettings.SiteId;
                indexItem.PageId = pageSettings.PageId;
                indexItem.PageName = pageSettings.PageName;
                indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                indexItem.ModuleViewRoles = module.ViewRoles;
                indexItem.FeatureId = sharedFilesFeatureGuid.ToString();
                indexItem.FeatureName = sharedFilesFeature.FeatureName;
                indexItem.FeatureResourceFile = sharedFilesFeature.ResourceFile;
                indexItem.CreatedUtc = sharedFile.UploadDate;
                indexItem.LastModUtc = sharedFile.UploadDate;

                indexItem.ItemId = sharedFile.ItemId;
                indexItem.ModuleId = sharedFile.ModuleId;
                indexItem.ModuleTitle = module.ModuleTitle;
                indexItem.Title = sharedFile.FriendlyName.Replace("_", " ").Replace("-", " ").Replace(".", " ") ;
                indexItem.Content = sharedFile.Description;
                indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                indexItem.PublishEndDate = pageModule.PublishEndDate;
                // make the search results a download link
                indexItem.ViewPage = "SharedFiles/Download.aspx?pageid=" + indexItem.PageId.ToInvariantString()
                    + "&fileid=" + indexItem.ItemId.ToInvariantString()
                    + "&mid=" + indexItem.ModuleId.ToInvariantString();
                indexItem.UseQueryStringParams = false;

                mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem);
            }

            if (debugLog) log.Debug("Indexed "  + sharedFile.FriendlyName);
        }
コード例 #18
0
        public override void RebuildIndex(
            PageSettings pageSettings,
            string indexPath)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }

            if ((pageSettings == null) || (indexPath == null))
            {
                return;
            }

            //don't index pending/unpublished pages
            if (pageSettings.IsPending) { return; }

            log.Info("SharedFilesIndexBuilderProvider indexing page - "
                + pageSettings.PageName);

            try
            {
                Guid sharedFilesFeatureGuid = new Guid("dc873d76-5bf2-4ac5-bff7-434a87a3fc8e");
                ModuleDefinition sharedFilesFeature = new ModuleDefinition(sharedFilesFeatureGuid);

                List<PageModule> pageModules
                        = PageModule.GetPageModulesByPage(pageSettings.PageId);

                DataTable dataTable = SharedFile.GetSharedFilesByPage(pageSettings.SiteId, pageSettings.PageId);

                foreach (DataRow row in dataTable.Rows)
                {
                    mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                    indexItem.SiteId = pageSettings.SiteId;
                    indexItem.PageId = pageSettings.PageId;
                    indexItem.PageName = pageSettings.PageName;
                    indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                    indexItem.ModuleViewRoles = row["ViewRoles"].ToString();
                    indexItem.CreatedUtc = Convert.ToDateTime(row["UploadDate"]);
                    indexItem.LastModUtc = indexItem.CreatedUtc;

                    //if (pageSettings.UseUrl)
                    //{
                    //    if (pageSettings.UrlHasBeenAdjustedForFolderSites)
                    //    {
                    //        indexItem.ViewPage = pageSettings.UnmodifiedUrl.Replace("~/", string.Empty);
                    //    }
                    //    else
                    //    {
                    //        indexItem.ViewPage = pageSettings.Url.Replace("~/", string.Empty);
                    //    }

                    //    indexItem.UseQueryStringParams = false;
                    //}

                    indexItem.FeatureId = sharedFilesFeatureGuid.ToString();
                    indexItem.FeatureName = sharedFilesFeature.FeatureName;
                    indexItem.FeatureResourceFile = sharedFilesFeature.ResourceFile;

                    indexItem.ItemId = Convert.ToInt32(row["ItemID"]);
                    indexItem.ModuleId = Convert.ToInt32(row["ModuleID"]);
                    indexItem.ModuleTitle = row["ModuleTitle"].ToString();

                    indexItem.Title = row["FriendlyName"].ToString().Replace("_", " ").Replace("-", " ").Replace(".", " ");
                    indexItem.Content = row["Description"].ToString();

                    // make the search results a download link
                    indexItem.ViewPage = "SharedFiles/Download.aspx?pageid=" + indexItem.PageId.ToInvariantString()
                        + "&fileid=" + indexItem.ItemId.ToInvariantString()
                        + "&mid=" + indexItem.ModuleId.ToInvariantString();

                    indexItem.UseQueryStringParams = false;

                    // lookup publish dates
                    foreach (PageModule pageModule in pageModules)
                    {
                        if (indexItem.ModuleId == pageModule.ModuleId)
                        {
                            indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                            indexItem.PublishEndDate = pageModule.PublishEndDate;
                        }
                    }

                    mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem, indexPath);

                    if (debugLog) log.Debug("Indexed " + indexItem.Title);

                }
            }
            catch (System.Data.Common.DbException ex)
            {
                log.Error(ex);
            }
        }
コード例 #19
0
        private static void IndexItem(CalendarEvent calendarEvent)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }
            if (calendarEvent == null) return;

            try
            {
                //SiteSettings siteSettings = CacheHelper.GetCurrentSiteSettings();

                //if ((siteSettings == null)
                //    || (calendarEvent == null))
                //{
                //    return;
                //}

                Module module = new Module(calendarEvent.ModuleId);
                Guid calendarFeatureGuid = new Guid("c5e6a5df-ac2a-43d3-bb7f-9739bc47194e");
                ModuleDefinition calendarFeature = new ModuleDefinition(calendarFeatureGuid);

                // get list of pages where this module is published
                List<PageModule> pageModules
                    = PageModule.GetPageModulesByModule(calendarEvent.ModuleId);

                foreach (PageModule pageModule in pageModules)
                {
                    PageSettings pageSettings
                    = new PageSettings(
                    calendarEvent.SiteId,
                    pageModule.PageId);

                    //don't index pending/unpublished pages
                    if (pageSettings.IsPending) { continue; }

                    mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                    if (calendarEvent.SearchIndexPath.Length > 0)
                    {
                        indexItem.IndexPath = calendarEvent.SearchIndexPath;
                    }
                    indexItem.SiteId = calendarEvent.SiteId;
                    indexItem.PageId = pageSettings.PageId;
                    indexItem.PageName = pageSettings.PageName;
                    indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                    indexItem.ModuleViewRoles = module.ViewRoles;
                    indexItem.ItemId = calendarEvent.ItemId;
                    indexItem.ModuleId = calendarEvent.ModuleId;
                    indexItem.ViewPage = "EventCalendar/EventDetails.aspx";
                    indexItem.FeatureId = calendarFeatureGuid.ToString();
                    indexItem.FeatureName = calendarFeature.FeatureName;
                    indexItem.FeatureResourceFile = calendarFeature.ResourceFile;
                    indexItem.ModuleTitle = module.ModuleTitle;
                    indexItem.Title = calendarEvent.Title;
                    indexItem.Content = calendarEvent.Description;
                    indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                    indexItem.PublishEndDate = pageModule.PublishEndDate;

                    indexItem.CreatedUtc = calendarEvent.CreatedDate;
                    indexItem.LastModUtc = calendarEvent.LastModUtc;

                    mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem);
                }

                if (debugLog) log.Debug("Indexed " + calendarEvent.Title);

            }
            catch (System.Data.Common.DbException ex)
            {
                log.Error("CalendarEventIndexBuilderProvider.IndexItem", ex);
            }
        }
コード例 #20
0
        /// <summary>
        /// wp.newPage method
        /// </summary>
        /// <param name="blogId">blogID in string format</param>
        /// <param name="userName">login username</param>
        /// <param name="password">login password</param>
        /// <param name="mwaPage">The mwa page.</param>
        /// <param name="publish">if set to <c>true</c> [publish].</param>
        /// <returns>The new page.</returns>
        internal string NewPage(string blogId, string userName, string password, MWAPage mwaPage, bool publish)
        {
            PageSettings page = new PageSettings();
            PageSettings parentPage = null;

            Guid parentGuid = Guid.Empty;
            if ((mwaPage.pageParentID != null)&&(mwaPage.pageParentID.Length == 36))
            {
                parentGuid = new Guid(mwaPage.pageParentID);
            }

            if (parentGuid == Guid.Empty) //root level page
            {
                if (!UserCanCreateRootLevelPages())
                {
                    throw new MetaWeblogException("11", MetaweblogResources.NotAllowedToCreateRootPages);
                }

                // TODO: promote these to site settings?
                //page.AuthorizedRoles = WebConfigSettings.DefaultPageRoles;
                //page.EditRoles = WebConfigSettings.DefaultRootPageEditRoles;
                //page.CreateChildPageRoles = WebConfigSettings.DefaultRootPageCreateChildPageRoles;

                page.AuthorizedRoles = siteSettings.DefaultRootPageViewRoles;
                page.EditRoles = siteSettings.DefaultRootPageEditRoles;
                page.CreateChildPageRoles = siteSettings.DefaultRootPageCreateChildPageRoles;
            }
            else
            {
                parentPage = new PageSettings(parentGuid);

                if (parentPage.PageId == -1)
                {
                    throw new MetaWeblogException("11", MetaweblogResources.ParentPageNotFound);
                }

                if (parentPage.SiteId != siteSettings.SiteId)
                {
                    throw new MetaWeblogException("11", MetaweblogResources.ParentPageNotFound);
                }

                if (!UserCanCreateChildPages(parentPage))
                {
                    throw new MetaWeblogException("11", MetaweblogResources.NotAllowedParentPage);
                }
            }

            if (parentPage != null)
            {
                page.ParentId = parentPage.PageId;
                page.ParentGuid = parentPage.PageGuid;
                page.PageOrder = PageSettings.GetNextPageOrder(siteSettings.SiteId, parentPage.PageId);

                // by default inherit settings from parent
                page.AuthorizedRoles = parentPage.AuthorizedRoles;
                page.EditRoles = parentPage.EditRoles;
                page.DraftEditOnlyRoles = parentPage.DraftEditOnlyRoles;
                page.CreateChildPageRoles = parentPage.CreateChildPageRoles;
                page.CreateChildDraftRoles = parentPage.CreateChildDraftRoles;
            }

            if ((mwaPage.pageOrder != null) && (mwaPage.pageOrder.Length > 0))
            {
                 page.PageOrder = Convert.ToInt32(mwaPage.pageOrder);
            }

            page.SiteId = siteSettings.SiteId;
            page.SiteGuid = siteSettings.SiteGuid;
            page.IsPending = !publish;

            page.PageName = mwaPage.title;
            //page.PageTitle = mwaPage.title; // this was the override page title it should not be set here
            if ((mwaPage.mt_keywords != null) && (mwaPage.mt_keywords.Length > 0))
            {
                page.PageMetaKeyWords = mwaPage.mt_keywords;
            }

            if (WebConfigSettings.AutoGeneratePageMetaDescriptionForMetaweblogNewPages)
            {
                page.PageMetaDescription = UIHelper.CreateExcerpt(mwaPage.description, WebConfigSettings.MetaweblogGeneratedMetaDescriptionMaxLength);
            }

            //if (WebConfigSettings.ShowUseUrlSettingInPageSettings)
            //{

            //}

            string friendlyUrlString = SiteUtils.SuggestFriendlyUrl(page.PageName, siteSettings);
            page.Url = "~/" + friendlyUrlString;
            page.UseUrl = true;

            switch (mwaPage.commentPolicy)
            {
                // open
                case "1":
                    // if the post was previously closed to comments
                    // re-open it using the default allowed days
                    page.EnableComments = true;

                    break;

                //closed
                case "0":
                case "2":
                default:
                    page.EnableComments = false;
                    break;

            }

            // I'm not sure we should support the page created event handler here, people may do redirects there
            // that would interupt our next steps
            // maybe need a config setting to decide

            // page.PageCreated += new PageCreatedEventHandler(PageCreated);

            page.Save();

            FriendlyUrl newFriendlyUrl = new FriendlyUrl();
            newFriendlyUrl.SiteId = siteSettings.SiteId;
            newFriendlyUrl.SiteGuid = siteSettings.SiteGuid;
            newFriendlyUrl.PageGuid = page.PageGuid;
            newFriendlyUrl.Url = friendlyUrlString;
            newFriendlyUrl.RealUrl = "~/Default.aspx?pageid=" + page.PageId.ToInvariantString();
            newFriendlyUrl.Save();

            // create html module in center pane
            ModuleDefinition moduleDefinition = new ModuleDefinition(HtmlContent.FeatureGuid);
            Module m = new Module();
            m.SiteId = siteSettings.SiteId;
            m.SiteGuid = siteSettings.SiteGuid;
            m.ModuleDefId = moduleDefinition.ModuleDefId;
            m.FeatureGuid = moduleDefinition.FeatureGuid;
            m.Icon = moduleDefinition.Icon;
            m.CacheTime = moduleDefinition.DefaultCacheTime;
            m.PageId = page.PageId;
            m.ModuleTitle = page.PageTitle;
            m.PaneName = "contentpane";
            m.CreatedByUserId = siteUser.UserId;
            m.ShowTitle = WebConfigSettings.ShowModuleTitlesByDefault;
            m.HeadElement = WebConfigSettings.ModuleTitleTag;
            m.ModuleOrder = 1;
            m.Save();

            HtmlRepository repository = new HtmlRepository();
            HtmlContent html = new HtmlContent();
            html.ModuleId = m.ModuleId;
            html.ModuleGuid = m.ModuleGuid;
            html.Body = mwaPage.description;
            //html.CreatedBy = siteUser.UserId;
            html.UserGuid = siteUser.UserGuid;
            html.CreatedDate = DateTime.UtcNow;
            html.LastModUserGuid = siteUser.UserGuid;
            html.LastModUtc = DateTime.UtcNow;

            html.ContentChanged += new ContentChangedEventHandler(html_ContentChanged);

            repository.Save(html);

            mojoPortal.SearchIndex.IndexHelper.RebuildPageIndexAsync(page);
            SiteUtils.QueueIndexing();

            CacheHelper.ResetSiteMapCache(siteSettings.SiteId);

            return page.PageGuid.ToString();
        }
コード例 #21
0
        void btnCreateNewContent_Click(object sender, EventArgs e)
        {
            Page.Validate("contentwizard");
            if (!Page.IsValid) { return; }

            int moduleDefID = int.Parse(moduleType.SelectedItem.Value);
            ModuleDefinition moduleDefinition = new ModuleDefinition(moduleDefID);
            PageSettings CurrentPage = CacheHelper.GetCurrentPage();

            Module m = new Module();
            m.SiteId = siteSettings.SiteId;
            m.SiteGuid = siteSettings.SiteGuid;
            m.ModuleDefId = moduleDefID;
            m.FeatureGuid = moduleDefinition.FeatureGuid;
            m.Icon = moduleDefinition.Icon;
            m.CacheTime = moduleDefinition.DefaultCacheTime;
            m.PageId = CurrentPage.PageId;
            m.ModuleTitle = moduleTitle.Text;
            m.PaneName = "contentpane";
            //m.AuthorizedEditRoles = "Admins";
            SiteUser currentUser = SiteUtils.GetCurrentSiteUser();
            if (currentUser != null)
            {
                m.CreatedByUserId = currentUser.UserId;
            }
            m.ShowTitle = WebConfigSettings.ShowModuleTitlesByDefault;
            m.HeadElement = WebConfigSettings.ModuleTitleTag;
            m.Save();

            WebUtils.SetupRedirect(this, Request.RawUrl);
        }
コード例 #22
0
        public override void RebuildIndex(
            PageSettings pageSettings,
            string indexPath)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }

            if ((pageSettings == null) || (indexPath == null))
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("pageSettings object or index path passed to ForumThreadIndexBuilderProvider.RebuildIndex was null");
                }
                return;

            }

            //don't index pending/unpublished pages
            if (pageSettings.IsPending) { return; }

            log.Info("ForumThreadIndexBuilderProvider indexing page - "
                + pageSettings.PageName);

            try
            {
                List<PageModule> pageModules
                        = PageModule.GetPageModulesByPage(pageSettings.PageId);

                Guid forumFeatureGuid = new Guid("38aa5a84-9f5c-42eb-8f4c-105983d419fb");
                ModuleDefinition forumFeature = new ModuleDefinition(forumFeatureGuid);

                // new implementation 2012-05-22: get threads by page, then for each thread concat the posts into one item for indexing
                // previously were indexing individual posts but this makes multiple results in search results for the same thread

                if (ForumConfiguration.AggregateSearchIndexPerThread)
                {
                    DataTable threads = ForumThread.GetThreadsByPage(
                        pageSettings.SiteId,
                        pageSettings.PageId);

                    foreach (DataRow row in threads.Rows)
                    {
                        StringBuilder threadContent = new StringBuilder();

                        int threadId = Convert.ToInt32(row["ThreadID"]);
                        DateTime threadDate = Convert.ToDateTime(row["ThreadDate"]);

                        DataTable threadPosts = ForumThread.GetPostsByThread(threadId);

                        foreach (DataRow r in threadPosts.Rows)
                        {
                            threadContent.Append(r["Post"].ToString());
                        }

                        mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();

                        // lookup publish dates
                        foreach (PageModule pageModule in pageModules)
                        {
                            if (indexItem.ModuleId == pageModule.ModuleId)
                            {
                                indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                                indexItem.PublishEndDate = pageModule.PublishEndDate;
                            }
                        }

                        indexItem.CreatedUtc = threadDate;

                        if (row["MostRecentPostDate"] != DBNull.Value)
                        {
                            indexItem.LastModUtc = Convert.ToDateTime(row["MostRecentPostDate"]);
                        }
                        else
                        {
                            indexItem.LastModUtc = threadDate;
                        }

                        indexItem.SiteId = pageSettings.SiteId;
                        indexItem.PageId = pageSettings.PageId;
                        indexItem.PageName = pageSettings.PageName;
                        indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                        indexItem.ModuleViewRoles = row["ViewRoles"].ToString();
                        indexItem.FeatureId = forumFeatureGuid.ToString();
                        indexItem.FeatureName = forumFeature.FeatureName;
                        indexItem.FeatureResourceFile = forumFeature.ResourceFile;

                        indexItem.ItemId = Convert.ToInt32(row["ItemID"]);
                        indexItem.ModuleId = Convert.ToInt32(row["ModuleID"]);
                        indexItem.ModuleTitle = row["ModuleTitle"].ToString();
                        indexItem.Title = row["Subject"].ToString();

                        indexItem.Content = threadContent.ToString();

                        if (ForumConfiguration.CombineUrlParams)
                        {
                            indexItem.ViewPage = "Forums/Thread.aspx?pageid=" + pageSettings.PageId.ToInvariantString()
                                + "&t=" + row["ThreadID"].ToString() + "~1";
                            indexItem.UseQueryStringParams = false;
                            // still need this since it is aprt of the key
                            indexItem.QueryStringAddendum = "&thread=" + row["ThreadID"].ToString();
                        }
                        else
                        {

                            indexItem.ViewPage = "Forums/Thread.aspx";
                            indexItem.QueryStringAddendum = "&thread=" + row["ThreadID"].ToString();
                        }

                        mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem, indexPath);

                        if (debugLog) log.Debug("Indexed " + indexItem.Title);

                    }

                }
                else
                {

                    //older implementation indexed posts individually

                    DataTable dataTable = ForumThread.GetPostsByPage(
                        pageSettings.SiteId,
                        pageSettings.PageId);

                    foreach (DataRow row in dataTable.Rows)
                    {
                        mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                        indexItem.SiteId = pageSettings.SiteId;
                        indexItem.PageId = pageSettings.PageId;
                        indexItem.PageName = pageSettings.PageName;
                        indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                        indexItem.ModuleViewRoles = row["ViewRoles"].ToString();
                        indexItem.FeatureId = forumFeatureGuid.ToString();
                        indexItem.FeatureName = forumFeature.FeatureName;
                        indexItem.FeatureResourceFile = forumFeature.ResourceFile;

                        indexItem.ItemId = Convert.ToInt32(row["ItemID"]);
                        indexItem.ModuleId = Convert.ToInt32(row["ModuleID"]);
                        indexItem.ModuleTitle = row["ModuleTitle"].ToString();
                        indexItem.Title = row["Subject"].ToString();
                        indexItem.Content = row["Post"].ToString();
                        indexItem.ViewPage = "Forums/Thread.aspx";
                        indexItem.QueryStringAddendum = "&thread="
                            + row["ThreadID"].ToString()
                            + "&postid=" + row["PostID"].ToString();

                        // lookup publish dates
                        foreach (PageModule pageModule in pageModules)
                        {
                            if (indexItem.ModuleId == pageModule.ModuleId)
                            {
                                indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                                indexItem.PublishEndDate = pageModule.PublishEndDate;
                            }
                        }

                        //indexItem.PublishBeginDate = Convert.ToDateTime(row["PostDate"]);
                        //indexItem.PublishEndDate = DateTime.MaxValue;

                        mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem, indexPath);

                       if (debugLog) log.Debug("Indexed " + indexItem.Title);

                     }
                }

            }
            catch (System.Data.Common.DbException ex)
            {
                log.Error(ex);
            }
        }
コード例 #23
0
        private void PopulateControls()
        {
            if (module.ModuleId > -1)
            {
                ModuleDefinition moduleDefinition = new ModuleDefinition(module.ModuleDefId);
                lblFeatureName.Text
                    = ResourceHelper.GetResourceString(
                    moduleDefinition.ResourceFile,
                    moduleDefinition.FeatureName);

                litFeatureSpecificSettingsTab.Text = string.Format(CultureInfo.InvariantCulture, Resource.FeatureSettingsTabFormat, lblFeatureName.Text);

                divCacheTimeout.Visible = (!WebConfigSettings.DisableContentCache && moduleDefinition.IsCacheable);

                divIsGlobal.Visible = (moduleDefinition.SupportsPageReuse && (!WebConfigSettings.DisableGlobalContent));

                PopulatePageList();
                lblModuleId.Text = module.ModuleId.ToInvariantString();
                moduleTitle.Text = module.ModuleTitle;
                cacheTime.Text = module.CacheTime.ToString();
                chkShowTitle.Checked = module.ShowTitle;
                txtTitleElement.Text = module.HeadElement;
                publishType.SetValue(module.PublishMode.ToInvariantString());
                chkIncludeInSearch.Checked = module.IncludeInSearch;
                chkHideFromAuth.Checked = module.HideFromAuthenticated;
                chkIsGlobal.Checked = module.IsGlobal;
                chkHideFromUnauth.Checked = module.HideFromUnauthenticated;
                chkAvailableForMyPage.Checked = module.AvailableForMyPage;
                chkAllowMultipleInstancesOnMyPage.Checked = module.AllowMultipleInstancesOnMyPage;
                if(isAdmin || isContentAdmin || isSiteEditor)
                {
                    divEditUser.Visible = true;

                    if(module.EditUserId > 0)
                    {
                        SiteUser siteUser = new SiteUser(this.siteSettings ,module.EditUserId);
                        acUser.Text = siteUser.Name;
                        //scUser.Value = siteUser.UserId.ToString();
                        txtEditUserId.Text = siteUser.UserId.ToInvariantString();

                    }
                }

                if (divParentPage.Visible)
                {
                    ListItem listItem = ddPages.Items.FindByValue(module.PageId.ToString());
                    if (listItem != null)
                    {
                        ddPages.ClearSelection();
                        listItem.Selected = true;
                    }

                }

                if (module.Icon.Length > 0)
                {
                    ddIcons.SelectedValue = module.Icon;
                    imgIcon.Src = ImageSiteRoot + "/Data/SiteImages/FeatureIcons/" + module.Icon;

                }
                else
                {
                    imgIcon.Src = ImageSiteRoot + "/Data/SiteImages/FeatureIcons/blank.gif";
                }

                if (!useSeparatePagesForRoles)
                {

                    if (module.ViewRoles == "Admins;")
                    {
                        rbViewAdminOnly.Checked = true;
                        rbViewUseRoles.Checked = false;
                    }
                    else
                    {
                        rbViewAdminOnly.Checked = false;
                        rbViewUseRoles.Checked = true;
                        foreach (ListItem item in cblViewRoles.Items)
                        {
                            if ((module.ViewRoles.LastIndexOf(item.Value + ";")) > -1)
                            {
                                item.Selected = true;
                            }
                        }
                    }

                    if (module.AuthorizedEditRoles == "Admins;")
                    {
                        rbEditAdminsOnly.Checked = true;
                        rbEditUseRoles.Checked = false;
                    }
                    else
                    {
                        rbEditAdminsOnly.Checked = false;
                        rbEditUseRoles.Checked = true;

                        foreach (ListItem item in authEditRoles.Items)
                        {
                            if ((module.AuthorizedEditRoles.LastIndexOf(item.Value + ";")) > -1)
                            {
                                item.Selected = true;
                            }
                        }
                    }

                    //if (module.DraftEditRoles == "Admins;")
                    //{
                    //    rbDraftAdminsOnly.Checked = true;
                    //    rbDraftUseRoles.Checked = false;
                    //}
                    //else
                    //{
                    //    rbDraftAdminsOnly.Checked = false;
                    //    rbDraftUseRoles.Checked = true;

                    foreach (ListItem item in draftEditRoles.Items)
                    {
                        if ((module.DraftEditRoles.LastIndexOf(item.Value + ";")) > -1)
                        {
                            item.Selected = true;
                        }
                    }

                    if (use3LevelWorkFlow)
                    {
                        //joe davis
                        foreach (ListItem item in draftApprovalRoles.Items)
                        {
                            if ((module.DraftApprovalRoles.LastIndexOf(item.Value + ";")) > -1)
                            {
                                item.Selected = true;
                            }
                        }
                    }
                    //}
                }

                cblViewRoles.Enabled = isAdmin || isContentAdmin || isSiteEditor;
                authEditRoles.Enabled = isAdmin || isContentAdmin || isSiteEditor;

            }
        }
コード例 #24
0
        private static void IndexItem(ForumThread forumThread)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }

            if (forumThread == null)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("forumThread object passed in ForumThreadIndexBuilderProvider.IndexItem was null");
                }
                return;

            }

            Forum forum = new Forum(forumThread.ForumId);
            Module module = new Module(forum.ModuleId);
            Guid forumFeatureGuid = new Guid("38aa5a84-9f5c-42eb-8f4c-105983d419fb");
            ModuleDefinition forumFeature = new ModuleDefinition(forumFeatureGuid);

            // get list of pages where this module is published
            List<PageModule> pageModules
                = PageModule.GetPageModulesByModule(forum.ModuleId);

            // must update index for all pages containing
            // this module
            foreach (PageModule pageModule in pageModules)
            {
                PageSettings pageSettings
                    = new PageSettings(
                    forumThread.SiteId,
                    pageModule.PageId);

                //don't index pending/unpublished pages
                if (pageSettings.IsPending) { continue; }

                mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                if (forumThread.SearchIndexPath.Length > 0)
                {
                    indexItem.IndexPath = forumThread.SearchIndexPath;
                }
                indexItem.SiteId = forumThread.SiteId;
                indexItem.PageId = pageModule.PageId;
                indexItem.PageName = pageSettings.PageName;
                // permissions are kept in sync in search index
                // so that results are filtered by role correctly
                indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                indexItem.ModuleViewRoles = module.ViewRoles;
                indexItem.ItemId = forumThread.ForumId;
                indexItem.ModuleId = forum.ModuleId;
                indexItem.ModuleTitle = module.ModuleTitle;
                indexItem.FeatureId = forumFeatureGuid.ToString();
                indexItem.FeatureName = forumFeature.FeatureName;
                indexItem.FeatureResourceFile = forumFeature.ResourceFile;
                indexItem.Title = forumThread.Subject;

                indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                indexItem.PublishEndDate = pageModule.PublishEndDate;
                indexItem.ViewPage = "Forums/Thread.aspx";

                indexItem.CreatedUtc = forumThread.ThreadDate;
                indexItem.LastModUtc = forumThread.MostRecentPostDate;

                if (ForumConfiguration.AggregateSearchIndexPerThread)
                {
                    indexItem.PublishBeginDate = forumThread.MostRecentPostDate;
                    StringBuilder threadContent = new StringBuilder();

                    DataTable threadPosts = ForumThread.GetPostsByThread(forumThread.ThreadId);

                    foreach (DataRow r in threadPosts.Rows)
                    {
                        threadContent.Append(r["Post"].ToString());
                    }

                    //aggregate contents of posts into one indexable content item
                    indexItem.Content = threadContent.ToString();

                    if (ForumConfiguration.CombineUrlParams)
                    {
                        indexItem.ViewPage = "Forums/Thread.aspx?pageid=" + pageModule.PageId.ToInvariantString()
                            + "&t=" + forumThread.ThreadId.ToInvariantString() + "~1";
                        indexItem.UseQueryStringParams = false;
                    }

                    indexItem.QueryStringAddendum = "&thread=" + forumThread.ThreadId.ToInvariantString();

                }
                else
                {
                    //older implementation

                    indexItem.Content = forumThread.PostMessage;

                    indexItem.QueryStringAddendum = "&thread="
                        + forumThread.ThreadId.ToString()
                        + "&postid=" + forumThread.PostId.ToString();
                }

                mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem);

                if (debugLog) { log.Debug("Indexed " + forumThread.Subject); }

            }
        }
コード例 #25
0
        public override void RebuildIndex(
            PageSettings pageSettings,
            string indexPath)
        {
            bool disableSearchIndex = ConfigHelper.GetBoolProperty("DisableSearchIndex", false);
            if (disableSearchIndex) { return; }

            if (pageSettings == null)
            {
                log.Error("pageSettings passed in to HtmlContentIndexBuilderProvider.RebuildIndex was null");
                return;
            }

            //don't index pending/unpublished pages
            if (pageSettings.IsPending) { return; }

            log.Info("HtmlContentIndexBuilderProvider indexing page - "
                + pageSettings.PageName);

            try
            {
                Guid htmlFeatureGuid
                    = new Guid("881e4e00-93e4-444c-b7b0-6672fb55de10");
                ModuleDefinition htmlFeature
                    = new ModuleDefinition(htmlFeatureGuid);

                List<PageModule> pageModules
                        = PageModule.GetPageModulesByPage(pageSettings.PageId);

                HtmlRepository repository = new HtmlRepository();

                DataTable dataTable = repository.GetHtmlContentByPage(
                    pageSettings.SiteId,
                    pageSettings.PageId);

                foreach (DataRow row in dataTable.Rows)
                {
                    bool includeInSearch = Convert.ToBoolean(row["IncludeInSearch"]);
                    bool excludeFromRecentContent = Convert.ToBoolean(row["ExcludeFromRecentContent"]);

                    IndexItem indexItem = new IndexItem();
                    indexItem.ExcludeFromRecentContent = excludeFromRecentContent;
                    indexItem.SiteId = pageSettings.SiteId;
                    indexItem.PageId = pageSettings.PageId;
                    indexItem.PageName = pageSettings.PageName;

                    string authorName = row["CreatedByName"].ToString();
                    string authorFirstName = row["CreatedByFirstName"].ToString();
                    string authorLastName = row["CreatedByLastName"].ToString();

                    if ((authorFirstName.Length > 0) && (authorLastName.Length > 0))
                    {
                        indexItem.Author = string.Format(CultureInfo.InvariantCulture,
                            Resource.FirstNameLastNameFormat, authorFirstName, authorLastName);
                    }
                    else
                    {
                        indexItem.Author = authorName;
                    }

                    if (!includeInSearch) { indexItem.RemoveOnly = true; }

                    // generally we should not include the page meta because it can result in duplicate results
                    // one for each instance of html content on the page because they all use the smae page meta.
                    // since page meta should reflect the content of the page it is sufficient to just index the content
                    if (WebConfigSettings.IndexPageKeywordsWithHtmlArticleContent)
                    {
                        indexItem.PageMetaDescription = pageSettings.PageMetaDescription;
                        indexItem.PageMetaKeywords = pageSettings.PageMetaKeyWords;
                    }

                    indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                    indexItem.ModuleViewRoles = row["ViewRoles"].ToString();
                    if (pageSettings.UseUrl)
                    {
                        if (pageSettings.UrlHasBeenAdjustedForFolderSites)
                        {
                            indexItem.ViewPage = pageSettings.UnmodifiedUrl.Replace("~/", string.Empty);
                        }
                        else
                        {
                            indexItem.ViewPage = pageSettings.Url.Replace("~/", string.Empty);
                        }
                        indexItem.UseQueryStringParams = false;
                    }
                    indexItem.FeatureId = htmlFeatureGuid.ToString();
                    indexItem.FeatureName = htmlFeature.FeatureName;
                    indexItem.FeatureResourceFile = htmlFeature.ResourceFile;

                    indexItem.ItemId = Convert.ToInt32(row["ItemID"]);
                    indexItem.ModuleId = Convert.ToInt32(row["ModuleID"]);
                    indexItem.ModuleTitle = row["ModuleTitle"].ToString();
                    indexItem.Title = row["Title"].ToString();
                    // added the remove markup 2010-01-30 because some javascript strings like ]]> were apearing in search results if the content conatined jacvascript
                    indexItem.Content = SecurityHelper.RemoveMarkup(row["Body"].ToString());

                    indexItem.CreatedUtc = Convert.ToDateTime(row["CreatedDate"]);
                    indexItem.LastModUtc = Convert.ToDateTime(row["LastModUtc"]);

                    // lookup publish dates
                    foreach (PageModule pageModule in pageModules)
                    {
                        if (indexItem.ModuleId == pageModule.ModuleId)
                        {
                            indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                            indexItem.PublishEndDate = pageModule.PublishEndDate;
                        }
                    }

                    IndexHelper.RebuildIndex(indexItem, indexPath);

                    log.Debug("Indexed " + indexItem.Title);

                }
            }
            catch (System.Data.Common.DbException ex)
            {
                log.Error(ex);
            }
        }
コード例 #26
0
        private static void IndexItem(Product product)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }
            if (product == null)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("product object passed to ProductSearchIndexBuilder.IndexItem was null");
                }
                return;
            }

            Store store = new Store(product.StoreGuid);

            Module module = new Module(store.ModuleId);
            Guid webStoreFeatureGuid = new Guid("0cefbf18-56de-11dc-8f36-bac755d89593");
            ModuleDefinition webStoreFeature = new ModuleDefinition(webStoreFeatureGuid);

            //// get list of pages where this module is published
            List<PageModule> pageModules
                = PageModule.GetPageModulesByModule(store.ModuleId);

            foreach (PageModule pageModule in pageModules)
            {
                PageSettings pageSettings
                    = new PageSettings(
                    product.SiteId,
                    pageModule.PageId);

                //don't index pending/unpublished pages
                if (pageSettings.IsPending) { continue; }

                mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                if (product.SearchIndexPath.Length > 0)
                {
                    indexItem.IndexPath = product.SearchIndexPath;
                }
                indexItem.SiteId = product.SiteId;
                indexItem.PageId = pageSettings.PageId;
                indexItem.PageName = pageSettings.PageName;
                indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                indexItem.ModuleViewRoles = module.ViewRoles;
                if (product.Url.Length > 0)
                {
                    indexItem.ViewPage = product.Url.Replace("~/", string.Empty);
                    indexItem.UseQueryStringParams = false;
                }
                else
                {
                    indexItem.ViewPage = "/WebStore/ProductDetail.aspx";
                }
                indexItem.ItemKey = product.Guid.ToString();
                indexItem.ModuleId = store.ModuleId;
                indexItem.ModuleTitle = module.ModuleTitle;
                indexItem.Title = product.Name;
                indexItem.PageMetaDescription = product.MetaDescription;
                indexItem.PageMetaKeywords = product.MetaKeywords;

                indexItem.CreatedUtc = product.Created;
                indexItem.LastModUtc = product.LastModified;

                indexItem.Content
                    = product.Teaser
                    + " " + product.Description.Replace(tabScript, string.Empty)
                    + " " + product.MetaDescription
                    + " " + product.MetaKeywords;

                indexItem.FeatureId = webStoreFeatureGuid.ToString();
                indexItem.FeatureName = webStoreFeature.FeatureName;
                indexItem.FeatureResourceFile = webStoreFeature.ResourceFile;
                indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                indexItem.PublishEndDate = pageModule.PublishEndDate;

                mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem);
            }

            if (debugLog) log.Debug("Indexed " + product.Name);
        }
コード例 #27
0
ファイル: Default.aspx.cs プロジェクト: saiesh86/TravelBlog
        private void SetupFeature(ContentFeature feature)
        {
            WritePageContent(
                    string.Format(SetupResource.ConfigureFeatureMessage,
                    ResourceHelper.GetResourceString(
                    feature.ResourceFile,
                    feature.FeatureNameReasourceKey))
                    , true);

            ModuleDefinition moduleDefinition = new ModuleDefinition(feature.FeatureGuid);
            moduleDefinition.ControlSrc = feature.ControlSource;
            moduleDefinition.DefaultCacheTime = feature.DefaultCacheTime;
            moduleDefinition.FeatureName = feature.FeatureNameReasourceKey;
            moduleDefinition.Icon = feature.Icon;
            moduleDefinition.IsAdmin = feature.ExcludeFromFeatureList;
            moduleDefinition.SortOrder = feature.SortOrder;
            moduleDefinition.ResourceFile = feature.ResourceFile;
            moduleDefinition.IsCacheable = feature.IsCacheable;
            moduleDefinition.IsSearchable = feature.IsSearchable;
            moduleDefinition.SearchListName = feature.SearchListNameResourceKey;
            moduleDefinition.SupportsPageReuse = feature.SupportsPageReuse;
            moduleDefinition.DeleteProvider = feature.DeleteProvider;
            moduleDefinition.PartialView = feature.PartialView;
            moduleDefinition.Save();

            foreach (ContentFeatureSetting featureSetting in feature.Settings)
            {

                ModuleDefinition.UpdateModuleDefinitionSetting(
                    moduleDefinition.FeatureGuid,
                    moduleDefinition.ModuleDefId,
                    featureSetting.ResourceFile,
                    featureSetting.GroupNameKey,
                    featureSetting.ResourceKey,
                    featureSetting.DefaultValue,
                    featureSetting.ControlType,
                    featureSetting.RegexValidationExpression,
                    featureSetting.ControlSrc,
                    featureSetting.HelpKey,
                    featureSetting.SortOrder);

            }
        }
コード例 #28
0
        /// <summary>
        /// This method is called when the site index is rebuilt
        /// </summary>
        /// <param name="pageSettings"></param>
        /// <param name="indexPath"></param>
        public override void RebuildIndex(
            PageSettings pageSettings,
            string indexPath)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }
            if (pageSettings == null)
            {
                log.Error("pageSettings object passed to ProductSearchIndexBuilder.RebuildIndex was null");
                return;
            }

            //don't index pending/unpublished pages
            if (pageSettings.IsPending) { return; }

            log.Info("ProductSearchIndexBuilder indexing page - "
                + pageSettings.PageName);

            Guid webStoreFeatureGuid = new Guid("0cefbf18-56de-11dc-8f36-bac755d89593");
            ModuleDefinition webStoreFeature = new ModuleDefinition(webStoreFeatureGuid);

            List<PageModule> pageModules
                    = PageModule.GetPageModulesByPage(pageSettings.PageId);

            // adding a try catch here because this is invoked even for non-implemented db platforms and it causes an error
            try
            {
                DataTable dataTable
                    = Product.GetBySitePage(
                    pageSettings.SiteId,
                    pageSettings.PageId);

                foreach (DataRow row in dataTable.Rows)
                {
                    mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                    indexItem.SiteId = pageSettings.SiteId;
                    indexItem.PageId = pageSettings.PageId;
                    indexItem.PageName = pageSettings.PageName;
                    indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                    indexItem.ModuleViewRoles = row["ViewRoles"].ToString();
                    indexItem.FeatureId = webStoreFeatureGuid.ToString();
                    indexItem.FeatureName = webStoreFeature.FeatureName;
                    indexItem.FeatureResourceFile = webStoreFeature.ResourceFile;

                    indexItem.ItemKey = row["Guid"].ToString();
                    indexItem.ModuleId = Convert.ToInt32(row["ModuleID"], CultureInfo.InvariantCulture);
                    indexItem.ModuleTitle = row["ModuleTitle"].ToString();
                    indexItem.Title = row["Name"].ToString();
                    indexItem.ViewPage = row["Url"].ToString().Replace("/", string.Empty);
                    if (indexItem.ViewPage.Length > 0)
                    {
                        indexItem.UseQueryStringParams = false;
                    }
                    else
                    {
                        indexItem.ViewPage = "WebStore/ProductDetail.aspx";
                    }

                    indexItem.PageMetaDescription = row["MetaDescription"].ToString();
                    indexItem.PageMetaKeywords = row["MetaKeywords"].ToString();

                    indexItem.CreatedUtc = Convert.ToDateTime(row["Created"]);
                    indexItem.LastModUtc = Convert.ToDateTime(row["LastModified"]);

                    indexItem.Content = row["Abstract"].ToString()
                        + " " + row["Description"].ToString()
                        + " " + row["MetaDescription"].ToString()
                        + " " + row["MetaKeywords"].ToString();

                    // lookup publish dates
                    foreach (PageModule pageModule in pageModules)
                    {
                        if (indexItem.ModuleId == pageModule.ModuleId)
                        {
                            indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                            indexItem.PublishEndDate = pageModule.PublishEndDate;
                        }
                    }

                    mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem, indexPath);

                    if (debugLog) log.Debug("Indexed " + indexItem.Title);

                }

            }
            catch { }
        }
コード例 #29
0
ファイル: mojoSetup.cs プロジェクト: joedavis01/mojoportal
        public static void CreatePage(SiteSettings siteSettings, ContentPage contentPage, PageSettings parentPage)
        {
            PageSettings pageSettings = new PageSettings();
            pageSettings.PageGuid = Guid.NewGuid();

            if (parentPage != null)
            {
                pageSettings.ParentGuid = parentPage.PageGuid;
                pageSettings.ParentId = parentPage.PageId;
            }

            pageSettings.SiteId = siteSettings.SiteId;
            pageSettings.SiteGuid = siteSettings.SiteGuid;
            pageSettings.AuthorizedRoles = contentPage.VisibleToRoles;
            pageSettings.EditRoles = contentPage.EditRoles;
            pageSettings.DraftEditOnlyRoles = contentPage.DraftEditRoles;
            pageSettings.CreateChildPageRoles = contentPage.CreateChildPageRoles;
            pageSettings.MenuImage = contentPage.MenuImage;
            pageSettings.PageMetaKeyWords = contentPage.PageMetaKeyWords;
            pageSettings.PageMetaDescription = contentPage.PageMetaDescription;

            CultureInfo uiCulture = Thread.CurrentThread.CurrentUICulture;
            if (WebConfigSettings.UseCultureOverride)
            {
                uiCulture = SiteUtils.GetDefaultUICulture(siteSettings.SiteId);
            }

            if (contentPage.ResourceFile.Length > 0)
            {
                pageSettings.PageName = ResourceHelper.GetResourceString(contentPage.ResourceFile, contentPage.Name, uiCulture, false);
                if (contentPage.Title.Length > 0)
                {
                    pageSettings.PageTitle = ResourceHelper.GetResourceString(contentPage.ResourceFile, contentPage.Title, uiCulture, false);
                }
            }
            else
            {
                pageSettings.PageName = contentPage.Name;
                pageSettings.PageTitle = contentPage.Title;
            }

            pageSettings.PageOrder = contentPage.PageOrder;
            pageSettings.Url = contentPage.Url;
            pageSettings.RequireSsl = contentPage.RequireSsl;
            pageSettings.ShowBreadcrumbs = contentPage.ShowBreadcrumbs;

            pageSettings.BodyCssClass = contentPage.BodyCssClass;
            pageSettings.MenuCssClass = contentPage.MenuCssClass;
            pageSettings.IncludeInMenu = contentPage.IncludeInMenu;
            pageSettings.IsClickable = contentPage.IsClickable;
            pageSettings.IncludeInSiteMap = contentPage.IncludeInSiteMap;
            pageSettings.IncludeInChildSiteMap = contentPage.IncludeInChildPagesSiteMap;
            pageSettings.AllowBrowserCache = contentPage.AllowBrowserCaching;
            pageSettings.ShowChildPageBreadcrumbs = contentPage.ShowChildPageBreadcrumbs;
            pageSettings.ShowHomeCrumb = contentPage.ShowHomeCrumb;
            pageSettings.ShowChildPageMenu = contentPage.ShowChildPagesSiteMap;
            pageSettings.HideAfterLogin = contentPage.HideFromAuthenticated;
            pageSettings.EnableComments = contentPage.EnableComments;

            pageSettings.Save();

            if (!FriendlyUrl.Exists(siteSettings.SiteId, pageSettings.Url))
            {
                if (!WebPageInfo.IsPhysicalWebPage(pageSettings.Url))
                {
                    FriendlyUrl friendlyUrl = new FriendlyUrl();
                    friendlyUrl.SiteId = siteSettings.SiteId;
                    friendlyUrl.SiteGuid = siteSettings.SiteGuid;
                    friendlyUrl.PageGuid = pageSettings.PageGuid;
                    friendlyUrl.Url = pageSettings.Url.Replace("~/", string.Empty);
                    friendlyUrl.RealUrl = "~/Default.aspx?pageid=" + pageSettings.PageId.ToInvariantString();
                    friendlyUrl.Save();
                }
            }

            foreach (ContentPageItem pageItem in contentPage.PageItems)
            {

                // tni-20130624: moduleGuidxxxx handling
                Guid moduleGuid2Use = Guid.Empty;
                bool updateModule = false;

                Module findModule = null;

                if (pageItem.ModuleGuidToPublish != Guid.Empty)
                {
                    Module existingModule = new Module(pageItem.ModuleGuidToPublish);
                    if (existingModule.ModuleGuid == pageItem.ModuleGuidToPublish && existingModule.SiteId == siteSettings.SiteId)
                    {
                        Module.Publish(pageSettings.PageGuid, existingModule.ModuleGuid, existingModule.ModuleId, pageSettings.PageId,
                            pageItem.Location, pageItem.SortOrder, DateTime.UtcNow, DateTime.MinValue);

                        // tni: I assume there's nothing else to do now so let's go to the next content...
                        continue;
                    }
                }
                else if (pageItem.ModuleGuid != Guid.Empty)
                {
                    findModule = new Module(pageItem.ModuleGuid);
                    if (findModule.ModuleGuid == Guid.Empty)
                    {
                        // Module does not exist, we can create new one with the specified Guid
                        moduleGuid2Use = pageItem.ModuleGuid;
                    }

                    if (findModule.ModuleGuid == pageItem.ModuleGuid && findModule.SiteId == siteSettings.SiteId)
                    {
                        // The module already exist, we'll update existing one
                        updateModule = true;
                        moduleGuid2Use = findModule.ModuleGuid;
                    }
                }
                //

                ModuleDefinition moduleDef = new ModuleDefinition(pageItem.FeatureGuid);

                // this only adds if its not already there
                try
                {
                    SiteSettings.AddFeature(siteSettings.SiteGuid, pageItem.FeatureGuid);
                }
                catch (Exception ex)
                {
                    log.Error(ex);
                }

                if (moduleDef.ModuleDefId > -1)
                {

                    Module module = null;
                    if (updateModule && (findModule != null))
                    {
                        module = findModule;
                    }
                    else
                    {
                        module = new Module();
                        module.ModuleGuid = moduleGuid2Use;
                    }

                    module.SiteId = siteSettings.SiteId;
                    module.SiteGuid = siteSettings.SiteGuid;
                    module.PageId = pageSettings.PageId;
                    module.ModuleDefId = moduleDef.ModuleDefId;
                    module.FeatureGuid = moduleDef.FeatureGuid;
                    module.PaneName = pageItem.Location;
                    if (contentPage.ResourceFile.Length > 0)
                    {
                        module.ModuleTitle
                            = ResourceHelper.GetResourceString(contentPage.ResourceFile, pageItem.ContentTitle, uiCulture, false);
                    }
                    else
                    {
                        module.ModuleTitle = pageItem.ContentTitle;
                    }
                    module.ModuleOrder = pageItem.SortOrder;
                    module.CacheTime = pageItem.CacheTimeInSeconds;
                    module.Icon = moduleDef.Icon;
                    module.ShowTitle = pageItem.ShowTitle;
                    module.AuthorizedEditRoles = pageItem.EditRoles;
                    module.DraftEditRoles = pageItem.DraftEditRoles;
                    module.ViewRoles = pageItem.ViewRoles;
                    module.IsGlobal = pageItem.IsGlobal;
                    module.HeadElement = pageItem.HeadElement;
                    module.HideFromAuthenticated = pageItem.HideFromAuthenticated;
                    module.HideFromUnauthenticated = pageItem.HideFromAnonymous;

                    module.Save();

                    if ((pageItem.Installer != null) && (pageItem.ConfigInfo.Length > 0))
                    {
                        //this is the newer implementation for populating feature content
                        pageItem.Installer.InstallContent(module, pageItem.ConfigInfo);
                    }
                    else
                    {
                        // legacy implementation for backward compatibility
                        if (
                            (pageItem.FeatureGuid == HtmlContent.FeatureGuid)
                            && (pageItem.ContentTemplate.EndsWith(".config"))
                            )
                        {
                            HtmlContent htmlContent = new HtmlContent();
                            htmlContent.ModuleId = module.ModuleId;
                            htmlContent.Body = ResourceHelper.GetMessageTemplate(uiCulture, pageItem.ContentTemplate);
                            htmlContent.ModuleGuid = module.ModuleGuid;
                            HtmlRepository repository = new HtmlRepository();
                            repository.Save(htmlContent);

                        }
                    }

                    // tni-20130624: handling module settings
                    foreach (KeyValuePair<string, string> item in pageItem.ModuleSettings)
                    {
                        ModuleSettings.UpdateModuleSetting(module.ModuleGuid, module.ModuleId, item.Key, item.Value);
                    }

                }
            }

            foreach (ContentPage childPage in contentPage.ChildPages)
            {
                CreatePage(siteSettings, childPage, pageSettings);
            }
        }
コード例 #30
0
        private static void IndexItem(Blog blog)
        {
            if (WebConfigSettings.DisableSearchIndex) { return; }

            if (blog == null)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("blog object passed to BlogIndexBuilderProvider.IndexItem was null");
                }
                return;
            }

            if (!blog.IncludeInSearch) { return; }

            Module module = new Module(blog.ModuleId);
            Guid blogFeatureGuid = new Guid("026cbead-2b80-4491-906d-b83e37179ccf");
            ModuleDefinition blogFeature = new ModuleDefinition(blogFeatureGuid);

            // get comments so  they can be indexed too
            StringBuilder stringBuilder = new StringBuilder();
            using (IDataReader comments = Blog.GetBlogComments(blog.ModuleId, blog.ItemId))
            {
                while (comments.Read())
                {
                    stringBuilder.Append("  " + comments["Comment"].ToString());
                    stringBuilder.Append("  " + comments["Name"].ToString());

                    if (debugLog) log.Debug("BlogIndexBuilderProvider.IndexItem add comment ");

                }
            }

            // get list of pages where this module is published
            List<PageModule> pageModules
                = PageModule.GetPageModulesByModule(blog.ModuleId);

            foreach (PageModule pageModule in pageModules)
            {
                PageSettings pageSettings
                    = new PageSettings(
                    blog.SiteId,
                    pageModule.PageId);

                //don't index pending/unpublished pages
                if (pageSettings.IsPending) { continue; }

                mojoPortal.SearchIndex.IndexItem indexItem = new mojoPortal.SearchIndex.IndexItem();
                if (blog.SearchIndexPath.Length > 0)
                {
                    indexItem.IndexPath = blog.SearchIndexPath;
                }
                indexItem.SiteId = blog.SiteId;
                indexItem.ExcludeFromRecentContent = blog.ExcludeFromRecentContent;
                indexItem.PageId = pageSettings.PageId;
                indexItem.PageName = pageSettings.PageName;
                indexItem.ViewRoles = pageSettings.AuthorizedRoles;
                indexItem.ModuleViewRoles = module.ViewRoles;

                indexItem.PageMetaDescription = blog.MetaDescription;
                indexItem.PageMetaKeywords = blog.MetaKeywords;
                indexItem.ItemId = blog.ItemId;
                indexItem.ModuleId = blog.ModuleId;
                indexItem.ModuleTitle = module.ModuleTitle;
                indexItem.Title = blog.Title;
                indexItem.Content = blog.Description + " " + blog.MetaDescription + " " + blog.MetaKeywords;
                indexItem.ContentAbstract = blog.Excerpt;
                indexItem.FeatureId = blogFeatureGuid.ToString();
                indexItem.FeatureName = blogFeature.FeatureName;
                indexItem.FeatureResourceFile = blogFeature.ResourceFile;

                indexItem.OtherContent = stringBuilder.ToString();

                indexItem.PublishBeginDate = pageModule.PublishBeginDate;
                if (blog.StartDate > pageModule.PublishBeginDate) { indexItem.PublishBeginDate = blog.StartDate; }

                indexItem.PublishEndDate = pageModule.PublishEndDate;
                if (blog.EndDate < pageModule.PublishEndDate) { indexItem.PublishEndDate = blog.EndDate; }

                if ((blog.UserFirstName.Length > 0) && (blog.UserLastName.Length > 0))
                {
                    indexItem.Author = string.Format(CultureInfo.InvariantCulture,
                        BlogResources.FirstLastFormat, blog.UserFirstName, blog.UserLastName);
                }
                else
                {
                    indexItem.Author = blog.UserName;
                }

                indexItem.CreatedUtc = blog.StartDate;
                indexItem.LastModUtc = blog.LastModUtc;

                if ((!WebConfigSettings.UseUrlReWriting) || (!BlogConfiguration.UseFriendlyUrls(indexItem.ModuleId)))
                {
                    indexItem.ViewPage = "Blog/ViewPost.aspx?pageid="
                        + indexItem.PageId.ToInvariantString()
                        + "&mid=" + indexItem.ModuleId.ToInvariantString()
                        + "&ItemID=" + indexItem.ItemId.ToInvariantString()
                        ;
                }
                else
                {
                    indexItem.ViewPage = blog.ItemUrl.Replace("~/", string.Empty);

                }

                indexItem.UseQueryStringParams = false;

                mojoPortal.SearchIndex.IndexHelper.RebuildIndex(indexItem);
            }

            if (debugLog) log.Debug("Indexed " + blog.Title);
        }