Beispiel #1
0
 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
     base.OnModelCreating(modelBuilder);
     CategoryConfiguration.ConfigureCategory(modelBuilder);
     BlogConfiguration.ConfigureBlog(modelBuilder);
     LikeConfiguration.ConfigureLike(modelBuilder);
     CommentConfiguration.ConfigureComment(modelBuilder);
 }
Beispiel #2
0
        public void UpdateConfiguration(BlogConfiguration configuration)
        {
            BlogConfiguration oldConfiguration;

            inMemoryDb.TryTake(out oldConfiguration);

            inMemoryDb.Add(configuration);
        }
Beispiel #3
0
        public IActionResult Post([FromBody] BlogConfiguration configuration)
        {
            if (configuration == null)
            {
                return(BadRequest());
            }

            this.blogConfigurationRepository.UpdateConfiguration(configuration);

            return(new EmptyResult());
        }
        private string FormatBlogUrl(string baseUrl, string itemUrl, int pageId, int moduleId, int itemId)
        {
            bool useFriendlyUrls = BlogConfiguration.UseFriendlyUrls(moduleId);

            if (useFriendlyUrls && (itemUrl.Length > 0))
            {
                return(baseUrl + itemUrl.Replace("~", string.Empty));
            }

            return(baseUrl + "/Blog/ViewPost.aspx?pageid=" + pageId.ToInvariantString()
                   + "&mid=" + moduleId.ToInvariantString()
                   + "&ItemID=" + itemId.ToInvariantString()
                   );
        }
Beispiel #5
0
        static BlogConfigurationRepository()
        {
            var conf = new BlogConfiguration()
            {
                Author         = "Ugo Lattanzi",
                Description    = "imperugo's blog",
                Title          = "This is the title of my blog engine",
                Tags           = new[] { ".NET", ".NET Core", "NodeJs" },
                SiteUri        = new Uri("http://www.tostring.it"),
                TwitterAccount = "@imperugo"
            };

            inMemoryDb.Add(conf);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="RedisCacheManager"/> class.
        /// </summary>
        /// <param name="perRequestCacheManager">perRequestCacheManager.</param>
        /// <param name="connectionWrapper">connectionWrapper.</param>
        /// <param name="config">config.</param>
        public RedisCacheManager(
            ICacheManager perRequestCacheManager,
            IRedisConnectionWrapper connectionWrapper,
            BlogConfiguration config)
        {
            if (string.IsNullOrEmpty(config.RedisCachingConnectionString))
            {
                throw new Exception("Redis connection string is empty");
            }

            this.perRequestCacheManager = perRequestCacheManager;

            // ConnectionMultiplexer.Connect should only be called once and shared between callers
            this.connectionWrapper = connectionWrapper;

            this.db = this.connectionWrapper.GetDatabase();
        }
        private static ISessionFactory CreateSessionFactory()
        {
            var configuration = new BlogConfiguration();

            var testing = Fluently
                .Configure().Database(SQLiteConfiguration.Standard.UsingFile(DbFile))

                .Mappings(m => m.AutoMappings.Add(
                    AutoMap.AssemblyOf<Post>(configuration)
                    .Conventions.Add(Table.Is(x => x.EntityType.Name + "Table"))
                    .Conventions.Add(DefaultCascade.All())
                    .Conventions.Add(PrimaryKey.Name.Is(x => "Id"))
                    .Conventions.Add(ConventionBuilder.Id.Always(id => id.GeneratedBy.Increment()))
                        ))
                .ExposeConfiguration(BuildSchema)
                .BuildSessionFactory();
            return testing;
        }
Beispiel #8
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(BlogResources.BlogFeatureName + " 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);
            //}
        }
Beispiel #9
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);
            }
        }
 public BlogContext(IServiceProvider serviceProvider, BlogConfiguration configuration)
     : base(serviceProvider, configuration)
 {
     Assert.NotNull(serviceProvider);
     Assert.NotNull(configuration);
 }
        public void CanSaveAllEntities()
        {
            using (var session = factory.OpenSession())
            {
                using (var tran = session.BeginTransaction())
                {
                    var blog = new Blog();
                    var user = new User();
                    var post = new Post();
                    var tag = new Tag();
                    var postComment = new PostComment();

                    var configuration = new BlogConfiguration();
                    configuration.PageSize = 3;
                    configuration["osman"] = "mahmut";

                    user.UserName = "******";
                    user.Password = "******";
                    user.Email = "*****@*****.**";
                    user.Blogs.Add(blog);

                    blog.Configuration = configuration;
                    blog.Writers.Add(user);
                    blog.Title = "my blog";
                    blog.Name = "My Blog";
                    blog.Founder = user;
                    blog.Posts.Add(post);
                    blog.Host = "localhost";

                    post.Blog = blog;
                    post.Content = "hello";
                    post.Publisher = user;
                    post.DateCreated = DateTime.Now;
                    post.DatePublished = DateTime.Now.AddMinutes(3);
                    post.Title = "post title";
                    post.FriendlyTitle = post.Title.Replace(' ', '_').ToLower();
                    post.AddComment(postComment, null);

                    postComment.Post = post;
                    postComment.Date = DateTime.Now.AddMinutes(6);
                    postComment.Email = "*****@*****.**";
                    postComment.Name = "Some One";
                    postComment.Comment = "Some One wrote here!!";

                    tag.Name = "Tag";
                    tag.FriendlyName = "Tagged";
                    tag.Posts.Add(post);
                    post.Tags.Add(tag);

                    var blogVal = new BlogValidator();
                    blogVal.ValidateAndThrowException(blog);

                    var postVal = new PostValidator();
                    postVal.ValidateAndThrowException(post);

                    var postCommVal = new PostCommentValidator();
                    postCommVal.ValidateAndThrowException(postComment);

                    var userVal = new UserValidator();
                    userVal.ValidateAndThrowException(user);

                    var tagVal = new TagValidator();
                    tagVal.ValidateAndThrowException(tag);

                    session.Save(user);
                    session.Save(blog);
                    session.Save(post);
                    session.Save(postComment);
                    session.Save(tag);

                    tran.Commit();
                }
            }

            using (var session = factory.OpenSession())
            {
                var item = session.CreateCriteria(typeof (Blog)).UniqueResult<Blog>();
                var pageSize = item.Configuration.PageSize;
                Assert.That(pageSize, Is.EqualTo(3));
            }
        }
Beispiel #12
0
        public void Configure()
        {
            BlogDB.Reset();

            using (OpenRastaConfiguration.Manual)
            {
                ResourceSpace.Has.ResourcesOfType <SyndicationFeed>()
                .AtUri(Constants.AtomFeedPath)
                .HandledBy <FeedHandler>()
                .TranscodedBy <AtomFeedCodec>();

                ResourceSpace.Has.ResourcesOfType <SyndicationItem>()
                .AtUri(Constants.AtomItemPath)
                .HandledBy <FeedHandler>()
                .TranscodedBy <AtomItemCodec>();

                ResourceSpace.Has.ResourcesOfType <string>()
                .AtUri("/texts/plain")
                .HandledBy <TextHandler>()
                .TranscodedBy <TextCodec>()
                .ForMediaType("text/plain");

                ResourceSpace.Has.ResourcesOfType <Cat>()
                .AtUri(Constants.CatPath)
                .And.AtUri(Constants.CatsPath)
                .HandledBy <CatHandler>()
                .TranscodedBy <CatAsTextCodec>()
                .And.TranscodedBy <CatAsHtmlCodec>()
                .And.TranscodedBy <CatAsXmlCodec>()
                .And.TranscodedBy <CatAsJsonCodec>()
                .And.TranscodedBy <CatsAsJsonCodec>();

                ResourceSpace.Has.ResourcesOfType <Dog2>()
                .AtUri(Constants.DogPath)
                .HandledBy <DogHandler>()
                .TranscodedBy <Dog2AsXmlCodec>();

                ResourceSpace.Has.ResourcesOfType <Person>()
                .AtUri(Constants.PersonPath)
                .HandledBy <PersonHandler>()
                .RenderedByAspx("~/Views/Person.aspx");

                ResourceSpace.Has.ResourcesOfType <EncodingData>()
                .AtUri(Constants.EncodingPath)
                .HandledBy <EncodingHandler>()
                .TranscodedBy <EncodingCodec>();

                ResourceSpace.Has.ResourcesOfType <MyFileResource>()
                .AtUri(Constants.FilePath)
                .HandledBy <FileHandler>()
                .TranscodedBy <ApplicationOctetStreamCodec>();

                ResourceSpace.Has.ResourcesOfType <MultipartData>()
                .AtUri(Constants.MultipartFormDataPath).Named("SimpleData")
                .And.AtUri(Constants.MultipartFormDataFilePath).Named("FileData")
                .HandledBy <MultipartFormDataHandler>()
                .TranscodedBy <EncodingCodec>();

                ResourceSpace.Has.ResourcesOfType <FormUrlEncodedData>()
                .AtUri(Constants.FormUrlEncodedPath)
                .HandledBy <FormUrlEncodedHandler>()
                .TranscodedBy <FormUrlencodedCodec>();

                ResourceSpace.Has.ResourcesOfType <HeaderList>()
                .AtUri(Constants.HeaderEchoPath)
                .HandledBy <HeaderEchoHandler>()
                .TranscodedBy <HeaderEchoCodec>();

                ResourceSpace.Has.ResourcesOfType <XmlEcho>()
                .AtUri(Constants.XmlEchoPath)
                .HandledBy <XmlEchoHandler>()
                .TranscodedBy <XmlEchoCodec>();

                ResourceSpace.Has.ResourcesOfType <AnyEcho>()
                .AtUri(Constants.AnyEchoPath)
                .HandledBy <AnyEchoHandler>()
                .TranscodedBy <AnyEchoCodec>();

                ResourceSpace.Has.ResourcesOfType <ComplexClassForOpenRastaSerializationTests>()
                .AtUri(Constants.ComplexClassPath)
                .HandledBy <ComplexClassHandler>()
                .TranscodedBy <TextCodec>()
                .ForMediaType("application/x-www-form-urlencoded");

                ResourceSpace.Has.ResourcesOfType <TestForm>()
                .AtUri(Constants.FormPath)
                .And.AtUri(Constants.FormSimplePath)
                .HandledBy <FormHandler>()
                .RenderedByAspx("~/Views/Form.aspx")
                .And.TranscodedBy <FormUrlencodedCodec>();

                ResourceSpace.Has.ResourcesOfType <FileDownload>()
                .AtUri(Constants.FileDownloadPath)
                .HandledBy <FileDownloadHandler>()
                .TranscodedBy <FileDownloadCodec>();

                ResourceSpace.Has.ResourcesOfType <LinkHeader>()
                .AtUri(Constants.LinkHeaderPath)
                .HandledBy <LinkHeaderHandler>()
                .TranscodedBy <LinkHeaderCodec>();

                ResourceSpace.Has.ResourcesOfType <JsonPatchDocument>()
                .AtUri(Constants.PatchPath)
                .HandledBy <PatchHandler>()
                .TranscodedBy <Ramone.Tests.Server.Codecs.JsonPatchDocumentCodec>();


                ResourceSpace.Has.ResourcesOfType <SlowResource>()
                .AtUri(Constants.SlowPath)
                .HandledBy <SlowHandler>()
                .TranscodedBy <JsonSerializerCodec <SlowResource> >();

                CMSConfiguration.Configure();
                ResourceSpace.Has.ResourcesOfType <RedirectArgs>()
                .AtUri(Constants.RedirectPath)
                .HandledBy <RedirectHandler>()
                .TranscodedBy <FormUrlencodedCodec>();

                ResourceSpace.Has.ResourcesOfType <HtmlPageResource>()
                .AtUri(Constants.HtmlPath)
                .HandledBy <HtmlHandler>()
                .RenderedByAspx("~/Views/Html.aspx");

                ResourceSpace.Has.ResourcesOfType <ApplicationError>()
                .AtUri(Constants.ApplicationErrorPath)
                .HandledBy <ApplicationErrorHandler>()
                .TranscodedBy <JsonSerializerCodec <ApplicationError> >();

                BlogConfiguration.Configure();
                OAuth2Configuration.Configure();
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="RedisConnectionWrapper"/> class.
 /// </summary>
 /// <param name="config">config.</param>
 public RedisConnectionWrapper(BlogConfiguration config)
 {
     this.config           = config;
     this.connectionString = new Lazy <string>(this.GetConnectionString);
     this.redisLockFactory = this.CreateRedisLockFactory();
 }