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() ); }
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()); }
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(); } }
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); }
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); //} }
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(); }
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); }
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"); } }
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); } }
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(); } }
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); } }
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; } }
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()); }
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); }
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); } }
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); }
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); }
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); } }
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); } }
/// <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(); }
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); }
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); } }
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; } }
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); } } }
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); } }
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); }
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); } }
/// <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 { } }
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); } }
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); }