From 09b336aaa4feac565e8a832b7b17597093a70e1f Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 13 Sep 2018 09:06:13 +0300 Subject: [PATCH] blogging module : Added blog management page --- .../Volo/Abp/Modularity/AbpModule.cs | 25 + ...20180912113852_Added_BlogUsers.Designer.cs | 625 ++++++++++++++++++ .../20180912113852_Added_BlogUsers.cs | 35 + .../BloggingTestAppDbContextModelSnapshot.cs | 39 ++ .../BloggingApplicationContractsModule.cs | 16 +- .../Volo/Blogging/BloggingPermissions.cs | 1 + .../Volo/Blogging/Blogs/{ => Dtos}/BlogDto.cs | 4 +- .../Blogs/{ => Dtos}/CreateBlogDto.cs | 5 +- .../Volo/Blogging/Blogs/Dtos/UpdateBlogDto.cs | 15 + .../Volo/Blogging/Blogs/IBlogAppService.cs | 13 +- .../BloggingApplicationAutoMapperProfile.cs | 1 + .../Volo/Blogging/Blogs/BlogAppService.cs | 29 + .../Volo/Blogging/Posts/PostAppService.cs | 14 +- .../Volo.Blogging.Domain.csproj | 1 + .../Volo/Blogging/Blogs/Blog.cs | 6 + .../Volo/Blogging/Blogs/IBlogRepository.cs | 5 + .../Volo/Blogging/Users/BlogUser.cs | 43 ++ .../Blogging/Users/BlogUserLookupService.cs | 22 + .../Blogging/Users/IBlogUserLookupService.cs | 9 + .../Blogging/Users/IBlogUserRepository.cs | 14 + .../Volo.Blogging.EntityFrameworkCore.csproj | 1 + .../Blogging/Blogs/EfCoreBlogRepository.cs | 17 + .../EntityFrameworkCore/BloggingDbContext.cs | 3 + ...BloggingDbContextModelBuilderExtensions.cs | 10 + .../EntityFrameworkCore/IBloggingDbContext.cs | 3 + .../Blogging/Users/EfCoreQaUserRepository.cs | 27 + .../Volo.Blogging.HttpApi.Client.csproj | 1 + .../Blogging/BloggingHttpApiClientModule.cs | 10 +- .../Volo.Blogging.HttpApi.csproj | 1 + .../Volo/Blogging/BloggingHttpApiModule.cs | 5 +- .../Volo/Blogging/BlogsController.cs | 77 +++ .../AbpBloggingWebAutoMapperProfile.cs | 5 + .../BloggingMenuContributor.cs | 7 + .../Volo.Blogging.Web/BloggingWebModule.cs | 8 +- .../Resources/Blogging/Web/en.json | 1 + .../Resources/Blogging/Web/tr.json | 1 + .../Pages/Admin/Blogs/Create.cshtml | 20 + .../Pages/Admin/Blogs/Create.cshtml.cs | 50 ++ .../Pages/Admin/Blogs/Edit.cshtml | 20 + .../Pages/Admin/Blogs/Edit.cshtml.cs | 65 ++ .../Pages/Admin/Blogs/Index.cshtml | 44 ++ .../Pages/Admin/Blogs/Index.cshtml.cs | 12 + .../Pages/Admin/Blogs/create.js | 14 + .../Pages/Admin/Blogs/edit.js | 14 + .../Pages/Admin/Blogs/index.js | 85 +++ .../Pages/Blog/Index.cshtml.cs | 1 + .../Pages/Blog/Posts/Detail.cshtml | 385 ++++++----- .../Pages/Blog/Posts/Detail.cshtml.cs | 1 + .../Pages/Blog/Posts/Index.cshtml | 289 ++++---- .../Pages/Blog/Posts/New.cshtml.cs | 1 + .../Pages/Blog/Posts/new.css.map | 9 + .../Pages/Blog/Posts/new.min.css | 3 + .../Pages/Blog/Shared/Scripts/blog.js | 2 +- .../Shared/Styles/_bootstrap-overwrite.scss | 169 +---- .../Pages/Blog/Shared/Styles/_header.scss | 40 +- .../Pages/Blog/Shared/Styles/_home.css | 140 ++++ .../Pages/Blog/Shared/Styles/_home.min.css | 1 + .../Pages/Blog/Shared/Styles/_home.scss | 88 +-- .../Pages/Blog/Shared/Styles/_post.scss | 30 +- .../Pages/Blog/Shared/Styles/blog.css | 289 +++----- .../Pages/Blog/Shared/Styles/blog.css.map | 24 +- .../Pages/Blog/Shared/Styles/blog.min.css | 2 +- .../Pages/Blog/Shared/Styles/blog.scss | 18 +- .../Volo.Blogging.Web.csproj | 2 + .../src/Volo.Blogging.Web/compilerconfig.json | 4 + 65 files changed, 2165 insertions(+), 756 deletions(-) create mode 100644 modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20180912113852_Added_BlogUsers.Designer.cs create mode 100644 modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20180912113852_Added_BlogUsers.cs rename modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/{ => Dtos}/BlogDto.cs (68%) rename modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/{ => Dtos}/CreateBlogDto.cs (69%) create mode 100644 modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/UpdateBlogDto.cs create mode 100644 modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs create mode 100644 modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUserLookupService.cs create mode 100644 modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/IBlogUserLookupService.cs create mode 100644 modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/IBlogUserRepository.cs create mode 100644 modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Users/EfCoreQaUserRepository.cs create mode 100644 modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BlogsController.cs create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Create.cshtml create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Create.cshtml.cs create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Edit.cshtml create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Edit.cshtml.cs create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Index.cshtml create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Index.cshtml.cs create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/create.js create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/edit.js create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/index.js create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.css.map create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.min.css create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.css create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.min.css diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/AbpModule.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/AbpModule.cs index a430a4b6f2..1b4a8ba5c8 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/AbpModule.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/AbpModule.cs @@ -1,5 +1,6 @@ using System; using System.Reflection; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace Volo.Abp.Modularity @@ -91,6 +92,30 @@ namespace Volo.Abp.Modularity ServiceConfigurationContext.Services.Configure(configureOptions); } + protected void Configure(string name, Action configureOptions) + where TOptions : class + { + ServiceConfigurationContext.Services.Configure(name, configureOptions); + } + + protected void Configure(IConfiguration configuration) + where TOptions : class + { + ServiceConfigurationContext.Services.Configure(configuration); + } + + protected void Configure(IConfiguration configuration, Action configureBinder) + where TOptions : class + { + ServiceConfigurationContext.Services.Configure(configuration, configureBinder); + } + + protected void Configure(string name, IConfiguration configuration) + where TOptions : class + { + ServiceConfigurationContext.Services.Configure(name, configuration); + } + protected void PreConfigure(Action configureOptions) where TOptions : class { diff --git a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20180912113852_Added_BlogUsers.Designer.cs b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20180912113852_Added_BlogUsers.Designer.cs new file mode 100644 index 0000000000..d48f6a9b05 --- /dev/null +++ b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20180912113852_Added_BlogUsers.Designer.cs @@ -0,0 +1,625 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.BloggingTestApp.EntityFrameworkCore; + +namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations +{ + [DbContext(typeof(BloggingTestAppDbContext))] + [Migration("20180912113852_Added_BlogUsers")] + partial class Added_BlogUsers + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.1-rtm-30846") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ConcurrencyStamp"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256); + + b.Property("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256); + + b.Property("ClaimValue") + .HasMaxLength(1024); + + b.Property("RoleId"); + + b.Property("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnName("AccessFailedCount") + .HasDefaultValue(0); + + b.Property("ConcurrencyStamp") + .IsRequired() + .HasColumnName("ConcurrencyStamp") + .HasMaxLength(256); + + b.Property("Email") + .HasColumnName("Email") + .HasMaxLength(256); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnName("EmailConfirmed") + .HasDefaultValue(false); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnName("LockoutEnabled") + .HasDefaultValue(false); + + b.Property("LockoutEnd"); + + b.Property("NormalizedEmail") + .HasColumnName("NormalizedEmail") + .HasMaxLength(256); + + b.Property("NormalizedUserName") + .IsRequired() + .HasColumnName("NormalizedUserName") + .HasMaxLength(256); + + b.Property("PasswordHash") + .HasColumnName("PasswordHash") + .HasMaxLength(256); + + b.Property("PhoneNumber") + .HasColumnName("PhoneNumber") + .HasMaxLength(16); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnName("PhoneNumberConfirmed") + .HasDefaultValue(false); + + b.Property("SecurityStamp") + .IsRequired() + .HasColumnName("SecurityStamp") + .HasMaxLength(256); + + b.Property("TenantId") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnName("TwoFactorEnabled") + .HasDefaultValue(false); + + b.Property("UserName") + .IsRequired() + .HasColumnName("UserName") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256); + + b.Property("ClaimValue") + .HasMaxLength(1024); + + b.Property("TenantId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId"); + + b.Property("LoginProvider") + .HasMaxLength(64); + + b.Property("ProviderDisplayName") + .HasMaxLength(128); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196); + + b.Property("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId"); + + b.Property("RoleId"); + + b.Property("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId"); + + b.Property("LoginProvider") + .HasMaxLength(128); + + b.Property("Name"); + + b.Property("TenantId"); + + b.Property("Value"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens"); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64); + + b.Property("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpPermissionGrants"); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpSettings"); + }); + + modelBuilder.Entity("Volo.Blogging.Blogs.Blog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreationTime") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnName("Description") + .HasMaxLength(1024); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnName("IsDeleted") + .HasDefaultValue(false); + + b.Property("LastModificationTime") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnName("Name") + .HasMaxLength(256); + + b.Property("ShortName") + .IsRequired() + .HasColumnName("ShortName") + .HasMaxLength(32); + + b.HasKey("Id"); + + b.ToTable("BlgBlogs"); + }); + + modelBuilder.Entity("Volo.Blogging.Comments.Comment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreationTime") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnName("IsDeleted") + .HasDefaultValue(false); + + b.Property("LastModificationTime") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnName("LastModifierId"); + + b.Property("PostId") + .HasColumnName("PostId"); + + b.Property("RepliedCommentId") + .HasColumnName("RepliedCommentId"); + + b.Property("Text") + .IsRequired() + .HasColumnName("Text") + .HasMaxLength(1024); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.HasIndex("RepliedCommentId"); + + b.ToTable("BlgComments"); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.Post", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BlogId") + .HasColumnName("BlogId"); + + b.Property("Content") + .HasColumnName("Content") + .HasMaxLength(1048576); + + b.Property("CoverImage") + .IsRequired() + .HasColumnName("CoverImage"); + + b.Property("CreationTime") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnName("IsDeleted") + .HasDefaultValue(false); + + b.Property("LastModificationTime") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnName("LastModifierId"); + + b.Property("ReadCount"); + + b.Property("Title") + .IsRequired() + .HasColumnName("Title") + .HasMaxLength(512); + + b.Property("Url") + .IsRequired() + .HasColumnName("Url") + .HasMaxLength(64); + + b.HasKey("Id"); + + b.HasIndex("BlogId"); + + b.ToTable("BlgPosts"); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.PostTag", b => + { + b.Property("PostId") + .HasColumnName("PostId"); + + b.Property("TagId") + .HasColumnName("TagId"); + + b.Property("CreationTime"); + + b.Property("CreatorId"); + + b.HasKey("PostId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("BlgPostTags"); + }); + + modelBuilder.Entity("Volo.Blogging.Tagging.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CreationTime") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnName("Description") + .HasMaxLength(512); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnName("IsDeleted") + .HasDefaultValue(false); + + b.Property("LastModificationTime") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnName("Name") + .HasMaxLength(64); + + b.Property("UsageCount") + .HasColumnName("UsageCount"); + + b.HasKey("Id"); + + b.ToTable("BlgTags"); + }); + + modelBuilder.Entity("Volo.Blogging.Users.BlogUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Email") + .HasColumnName("Email") + .HasMaxLength(256); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnName("EmailConfirmed") + .HasDefaultValue(false); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties"); + + b.Property("PhoneNumber") + .HasColumnName("PhoneNumber") + .HasMaxLength(16); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnName("PhoneNumberConfirmed") + .HasDefaultValue(false); + + b.Property("TenantId") + .HasColumnName("TenantId"); + + b.Property("UserName") + .IsRequired() + .HasColumnName("UserName") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.ToTable("BlgUsers"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole") + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser") + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser") + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Volo.Abp.Identity.IdentityUser") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser") + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Blogging.Comments.Comment", b => + { + b.HasOne("Volo.Blogging.Posts.Post") + .WithMany() + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Volo.Blogging.Comments.Comment") + .WithMany() + .HasForeignKey("RepliedCommentId"); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.Post", b => + { + b.HasOne("Volo.Blogging.Blogs.Blog") + .WithMany() + .HasForeignKey("BlogId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.PostTag", b => + { + b.HasOne("Volo.Blogging.Posts.Post") + .WithMany("Tags") + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Volo.Blogging.Tagging.Tag") + .WithMany() + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20180912113852_Added_BlogUsers.cs b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20180912113852_Added_BlogUsers.cs new file mode 100644 index 0000000000..b2b3c76022 --- /dev/null +++ b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20180912113852_Added_BlogUsers.cs @@ -0,0 +1,35 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations +{ + public partial class Added_BlogUsers : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "BlgUsers", + columns: table => new + { + Id = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + UserName = table.Column(maxLength: 256, nullable: false), + Email = table.Column(maxLength: 256, nullable: true), + EmailConfirmed = table.Column(nullable: false, defaultValue: false), + PhoneNumber = table.Column(maxLength: 16, nullable: true), + PhoneNumberConfirmed = table.Column(nullable: false, defaultValue: false), + ExtraProperties = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BlgUsers", x => x.Id); + }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BlgUsers"); + } + } +} diff --git a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/BloggingTestAppDbContextModelSnapshot.cs b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/BloggingTestAppDbContextModelSnapshot.cs index 81bed0042d..b59ab48a69 100644 --- a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/BloggingTestAppDbContextModelSnapshot.cs +++ b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/BloggingTestAppDbContextModelSnapshot.cs @@ -501,6 +501,45 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations b.ToTable("BlgTags"); }); + modelBuilder.Entity("Volo.Blogging.Users.BlogUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Email") + .HasColumnName("Email") + .HasMaxLength(256); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnName("EmailConfirmed") + .HasDefaultValue(false); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties"); + + b.Property("PhoneNumber") + .HasColumnName("PhoneNumber") + .HasMaxLength(16); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnName("PhoneNumberConfirmed") + .HasDefaultValue(false); + + b.Property("TenantId") + .HasColumnName("TenantId"); + + b.Property("UserName") + .IsRequired() + .HasColumnName("UserName") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.ToTable("BlgUsers"); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => { b.HasOne("Volo.Abp.Identity.IdentityRole") diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingApplicationContractsModule.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingApplicationContractsModule.cs index 6cfdb45214..3dc4962a37 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingApplicationContractsModule.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingApplicationContractsModule.cs @@ -1,8 +1,8 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Localization; -using Volo.Abp.Localization.Resources.AbpValidation; using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; using Volo.Blogging.Localization; namespace Volo.Blogging @@ -12,17 +12,21 @@ namespace Volo.Blogging { public override void ConfigureServices(ServiceConfigurationContext context) { + context.Services.Configure(options => + { + options.DefinitionProviders.Add(); + }); + + context.Services.Configure(options => + { + options.FileSets.AddEmbedded(); + }); Configure(options => { options.Resources .Get() .AddVirtualJson("/Localization/Resources/Blogging/ApplicationContracts"); }); - - context.Services.Configure(options => - { - options.DefinitionProviders.Add(); - }); } } } diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingPermissions.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingPermissions.cs index 22a2b09745..f87e04963d 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingPermissions.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/BloggingPermissions.cs @@ -10,6 +10,7 @@ public const string Delete = Default + ".Delete"; public const string Update = Default + ".Update"; public const string Create = Default + ".Create"; + } public static class Posts diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/BlogDto.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/BlogDto.cs similarity index 68% rename from modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/BlogDto.cs rename to modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/BlogDto.cs index b43c42be70..45aa60e171 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/BlogDto.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/BlogDto.cs @@ -1,9 +1,9 @@ using System; using Volo.Abp.Application.Dtos; -namespace Volo.Blogging.Blogs +namespace Volo.Blogging.Blogs.Dtos { - public class BlogDto : EntityDto + public class BlogDto : FullAuditedEntityDto { public string Name { get; set; } diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/CreateBlogDto.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/CreateBlogDto.cs similarity index 69% rename from modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/CreateBlogDto.cs rename to modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/CreateBlogDto.cs index b0f4318401..802e271e33 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/CreateBlogDto.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/CreateBlogDto.cs @@ -1,7 +1,4 @@ -using System; -using Volo.Abp.Application.Dtos; - -namespace Volo.Blogging.Blogs +namespace Volo.Blogging.Blogs.Dtos { public class CreateBlogDto { diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/UpdateBlogDto.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/UpdateBlogDto.cs new file mode 100644 index 0000000000..94546f6898 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/Dtos/UpdateBlogDto.cs @@ -0,0 +1,15 @@ +using System; + +namespace Volo.Blogging.Blogs.Dtos +{ + public class UpdateBlogDto + { + public Guid Id { get; set; } + + public string Name { get; set; } + + public string ShortName { get; set; } + + public string Description { get; set; } + } +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/IBlogAppService.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/IBlogAppService.cs index 5d57440a22..cd20dd6374 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/IBlogAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Blogs/IBlogAppService.cs @@ -2,17 +2,28 @@ using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Blogging.Blogs.Dtos; namespace Volo.Blogging.Blogs { public interface IBlogAppService : IApplicationService { + Task> GetListPagedAsync(PagedAndSortedResultRequestDto input); + Task> GetListAsync(); Task GetByShortNameAsync(string shortName); Task GetAsync(Guid id); - Task Create(CreateBlogDto blog); +<<<<<<< HEAD + Task Create(CreateBlogDto input); + + Task Update(Guid id, UpdateBlogDto input); + + Task Delete(Guid id); +======= + Task Create(CreateBlogDto blog); +>>>>>>> 5023d9202b64c4367e1234ad5e5f7acb76c592e3 } } diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs index d3fc477b7b..d769e3e248 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs @@ -1,6 +1,7 @@ using AutoMapper; using Volo.Abp.AutoMapper; using Volo.Blogging.Blogs; +using Volo.Blogging.Blogs.Dtos; using Volo.Blogging.Comments; using Volo.Blogging.Comments.Dtos; using Volo.Blogging.Posts; diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Blogs/BlogAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Blogs/BlogAppService.cs index adce94c9ab..03a20c8324 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Blogs/BlogAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Blogs/BlogAppService.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Entities; +using Volo.Blogging.Blogs.Dtos; namespace Volo.Blogging.Blogs { @@ -15,6 +16,18 @@ namespace Volo.Blogging.Blogs { _blogRepository = blogRepository; } + + public async Task> GetListPagedAsync(PagedAndSortedResultRequestDto input) + { + var blogs = await _blogRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount ); + + var totalCount = await _blogRepository.GetTotalBlogCount(); + + var dtos = ObjectMapper.Map, List>(blogs); + + return new PagedResultDto(totalCount, dtos); + } + public async Task> GetListAsync() { var blogs = await _blogRepository.GetListAsync(); @@ -49,5 +62,21 @@ namespace Volo.Blogging.Blogs return ObjectMapper.Map(newBlog); } + + public async Task Update(Guid id, UpdateBlogDto input) + { + var blog = await _blogRepository.GetAsync(id); + + blog.SetName(input.Name); + blog.SetShortName(input.ShortName); + blog.Description = input.Description; + + return ObjectMapper.Map(blog); + } + + public async Task Delete(Guid id) + { + await _blogRepository.DeleteAsync(id); + } } } diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs index 1629c6e351..a7d6014a49 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs @@ -5,10 +5,12 @@ using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using System.Collections.Generic; using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Logging; using Volo.Abp.Users; using Volo.Blogging.Comments; using Volo.Blogging.Tagging; using Volo.Blogging.Tagging.Dtos; +using Volo.Blogging.Users; namespace Volo.Blogging.Posts { @@ -19,13 +21,16 @@ namespace Volo.Blogging.Posts //[Authorize(BloggingPermissions.Posts.Default)] public class PostAppService : ApplicationService, IPostAppService { + protected IBlogUserLookupService UserLookupService { get; } + private readonly IPostRepository _postRepository; private readonly ITagRepository _tagRepository; private readonly IPostTagRepository _postTagRepository; private readonly ICommentRepository _commentRepository; - public PostAppService(IPostRepository postRepository, ITagRepository tagRepository, IPostTagRepository postTagRepository, ICommentRepository commentRepository) + public PostAppService(IPostRepository postRepository, ITagRepository tagRepository, IPostTagRepository postTagRepository, ICommentRepository commentRepository, IBlogUserLookupService userLookupService) { + UserLookupService = userLookupService; _postRepository = postRepository; _tagRepository = tagRepository; _postTagRepository = postTagRepository; @@ -44,6 +49,13 @@ namespace Volo.Blogging.Posts postDto.Tags = await GetTagsOfPost(postDto.Id); postDto.CommentCount = await _commentRepository.GetCommentCountOfPostAsync(postDto.Id); + + if (postDto.CreatorId.HasValue) + { + var creatorUser = await UserLookupService.FindByIdAsync(postDto.CreatorId.Value); + //TODO: Check if creatorUser is null! + Logger.LogWarning($"Creator of post {postDto.Id} is {creatorUser.UserName}"); + } } if (!tagName.IsNullOrWhiteSpace()) diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo.Blogging.Domain.csproj b/modules/blogging/src/Volo.Blogging.Domain/Volo.Blogging.Domain.csproj index e3c9755d94..b30b54fede 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo.Blogging.Domain.csproj +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo.Blogging.Domain.csproj @@ -11,6 +11,7 @@ + diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Blogs/Blog.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Blogs/Blog.cs index 3a54727d92..473f28ae48 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Blogs/Blog.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Blogs/Blog.cs @@ -33,5 +33,11 @@ namespace Volo.Blogging.Blogs Name = Check.NotNullOrWhiteSpace(name, nameof(name)); return this; } + + public virtual Blog SetShortName(string shortName) + { + ShortName = Check.NotNullOrWhiteSpace(shortName, nameof(shortName)); + return this; + } } } diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Blogs/IBlogRepository.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Blogs/IBlogRepository.cs index ade8d1be0e..e695f808c4 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Blogs/IBlogRepository.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Blogs/IBlogRepository.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Domain.Repositories; @@ -7,5 +8,9 @@ namespace Volo.Blogging.Blogs public interface IBlogRepository : IBasicRepository { Task FindByShortNameAsync(string shortName); + + Task> GetListAsync(string sorting, int maxResultCount, int skipCount); + + Task GetTotalBlogCount(); } } diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs new file mode 100644 index 0000000000..cde09cdb4d --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using Volo.Abp.Data; +using Volo.Abp.Domain.Entities; +using Volo.Abp.Users; + +namespace Volo.Blogging.Users +{ + public class BlogUser : AggregateRoot, IUser, IHasExtraProperties + { + public virtual Guid? TenantId { get; protected set; } + + public virtual string UserName { get; protected set; } + + public virtual string Email { get; protected set; } + + public virtual bool EmailConfirmed { get; protected set; } + + public virtual string PhoneNumber { get; protected set; } + + public virtual bool PhoneNumberConfirmed { get; protected set; } + + public virtual Dictionary ExtraProperties { get; protected set; } + + protected BlogUser() + { + ExtraProperties = new Dictionary(); + } + + public BlogUser(IUserData user) + { + Id = user.Id; + Email = user.Email; + EmailConfirmed = user.EmailConfirmed; + PhoneNumber = user.PhoneNumber; + PhoneNumberConfirmed = user.PhoneNumberConfirmed; + UserName = user.UserName; + TenantId = user.TenantId; + + ExtraProperties = new Dictionary(); + } + } +} diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUserLookupService.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUserLookupService.cs new file mode 100644 index 0000000000..7ef29a026d --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUserLookupService.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Uow; +using Volo.Abp.Users; + +namespace Volo.Blogging.Users +{ + public class BlogUserLookupService : UserLookupService, IBlogUserLookupService + { + public BlogUserLookupService( + IBlogUserRepository userRepository, + IUnitOfWorkManager unitOfWorkManager) + : base( + userRepository, + unitOfWorkManager) + { + } + + protected override BlogUser CreateUser(IUserData externalUser) + { + return new BlogUser(externalUser); + } + } +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/IBlogUserLookupService.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/IBlogUserLookupService.cs new file mode 100644 index 0000000000..602d718d89 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/IBlogUserLookupService.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Users; + +namespace Volo.Blogging.Users +{ + public interface IBlogUserLookupService : IUserLookupService + { + + } +} diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/IBlogUserRepository.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/IBlogUserRepository.cs new file mode 100644 index 0000000000..f8c764cffa --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/IBlogUserRepository.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Users; + +namespace Volo.Blogging.Users +{ + public interface IBlogUserRepository : IBasicRepository, IUserRepository + { + Task> GetUsersAsync(int maxCount, string filter, CancellationToken cancellationToken = default); + } +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo.Blogging.EntityFrameworkCore.csproj b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo.Blogging.EntityFrameworkCore.csproj index 9620b68029..77f25274f0 100644 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo.Blogging.EntityFrameworkCore.csproj +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo.Blogging.EntityFrameworkCore.csproj @@ -12,6 +12,7 @@ + diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Blogs/EfCoreBlogRepository.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Blogs/EfCoreBlogRepository.cs index 604f7ca8b5..f3b927a1e8 100644 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Blogs/EfCoreBlogRepository.cs +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Blogs/EfCoreBlogRepository.cs @@ -1,4 +1,7 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Dynamic.Core; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; @@ -19,5 +22,19 @@ namespace Volo.Blogging.Blogs { return await DbSet.FirstOrDefaultAsync(p => p.ShortName == shortName); } + + public async Task> GetListAsync(string sorting, int maxResultCount, int skipCount) + { + var auditLogs = await DbSet.OrderBy(sorting ?? "creationTime desc") + .PageBy(skipCount, maxResultCount) + .ToListAsync(); + + return auditLogs; + } + + public async Task GetTotalBlogCount() + { + return await DbSet.CountAsync(); + } } } diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContext.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContext.cs index 636b0d77ab..74e4ae9041 100644 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContext.cs +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContext.cs @@ -5,6 +5,7 @@ using Volo.Blogging.Blogs; using Volo.Blogging.Comments; using Volo.Blogging.Posts; using Volo.Blogging.Tagging; +using Volo.Blogging.Users; namespace Volo.Blogging.EntityFrameworkCore { @@ -14,6 +15,8 @@ namespace Volo.Blogging.EntityFrameworkCore public static string TablePrefix { get; set; } = BloggingConsts.DefaultDbTablePrefix; public static string Schema { get; set; } = BloggingConsts.DefaultDbSchema; + public DbSet Users { get; set; } + public DbSet Blogs { get; set; } public DbSet Posts { get; set; } diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs index f2c31fa9c6..529c6b3e6f 100644 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs @@ -3,10 +3,12 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Volo.Abp; using Volo.Abp.EntityFrameworkCore.Modeling; +using Volo.Abp.Users.EntityFrameworkCore; using Volo.Blogging.Blogs; using Volo.Blogging.Comments; using Volo.Blogging.Posts; using Volo.Blogging.Tagging; +using Volo.Blogging.Users; namespace Volo.Blogging.EntityFrameworkCore { @@ -21,6 +23,14 @@ namespace Volo.Blogging.EntityFrameworkCore var options = new BloggingModelBuilderConfigurationOptions(); optionsAction?.Invoke(options); + builder.Entity(b => + { + b.ToTable(options.TablePrefix + "Users", options.Schema); + + b.ConfigureAbpUser(options); + b.ConfigureExtraProperties(); + }); + builder.Entity(b => { b.ToTable(options.TablePrefix + "Blogs", options.Schema); diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/IBloggingDbContext.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/IBloggingDbContext.cs index 1f126a30ee..8751252277 100644 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/IBloggingDbContext.cs +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/IBloggingDbContext.cs @@ -5,12 +5,15 @@ using Volo.Blogging.Blogs; using Volo.Blogging.Comments; using Volo.Blogging.Posts; using Volo.Blogging.Tagging; +using Volo.Blogging.Users; namespace Volo.Blogging.EntityFrameworkCore { [ConnectionStringName("Blogging")] public interface IBloggingDbContext : IEfCoreDbContext { + DbSet Users { get; } + DbSet Blogs { get; set; } DbSet Posts { get; set; } diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Users/EfCoreQaUserRepository.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Users/EfCoreQaUserRepository.cs new file mode 100644 index 0000000000..fcc46a95cc --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Users/EfCoreQaUserRepository.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.Users.EntityFrameworkCore; +using Volo.Blogging.EntityFrameworkCore; + +namespace Volo.Blogging.Users +{ + public class EfCoreBlogUserRepository : EfCoreUserRepositoryBase, IBlogUserRepository + { + public EfCoreBlogUserRepository(IDbContextProvider dbContextProvider) + : base(dbContextProvider) + { + + } + + public async Task> GetUsersAsync(int maxCount, string filter, CancellationToken cancellationToken = default) + { + return await DbSet + .WhereIf( !string.IsNullOrWhiteSpace( filter), x=>x.UserName.Contains(filter)) + .Take(maxCount).ToListAsync(cancellationToken); + } + } +} diff --git a/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo.Blogging.HttpApi.Client.csproj b/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo.Blogging.HttpApi.Client.csproj index fb4725f019..a0ac8349e2 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo.Blogging.HttpApi.Client.csproj +++ b/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo.Blogging.HttpApi.Client.csproj @@ -11,6 +11,7 @@ + diff --git a/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo/Blogging/BloggingHttpApiClientModule.cs b/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo/Blogging/BloggingHttpApiClientModule.cs index e82b038c8e..7e1418cbb0 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo/Blogging/BloggingHttpApiClientModule.cs +++ b/modules/blogging/src/Volo.Blogging.HttpApi.Client/Volo/Blogging/BloggingHttpApiClientModule.cs @@ -1,12 +1,20 @@ using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Http.Client; using Volo.Abp.Modularity; namespace Volo.Blogging { [DependsOn( - typeof(BloggingApplicationContractsModule))] + typeof(BloggingApplicationContractsModule), + typeof(AbpHttpClientModule))] public class BloggingHttpApiClientModule : AbpModule { + public const string RemoteServiceName = "Blogging"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddHttpClientProxies(typeof(BloggingApplicationContractsModule).Assembly, RemoteServiceName); + } } } diff --git a/modules/blogging/src/Volo.Blogging.HttpApi/Volo.Blogging.HttpApi.csproj b/modules/blogging/src/Volo.Blogging.HttpApi/Volo.Blogging.HttpApi.csproj index 3e813eee21..dc82611952 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi/Volo.Blogging.HttpApi.csproj +++ b/modules/blogging/src/Volo.Blogging.HttpApi/Volo.Blogging.HttpApi.csproj @@ -11,6 +11,7 @@ + diff --git a/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BloggingHttpApiModule.cs b/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BloggingHttpApiModule.cs index 56c657ba6b..8233ad3253 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BloggingHttpApiModule.cs +++ b/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BloggingHttpApiModule.cs @@ -1,10 +1,11 @@ -using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Modularity; namespace Volo.Blogging { [DependsOn( - typeof(BloggingApplicationContractsModule))] + typeof(BloggingApplicationContractsModule), + typeof(AbpAspNetCoreMvcModule))] public class BloggingHttpApiModule : AbpModule { diff --git a/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BlogsController.cs b/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BlogsController.cs new file mode 100644 index 0000000000..6e74d4f65b --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/BlogsController.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Auditing; +using Volo.Blogging.Blogs; +using Volo.Blogging.Blogs.Dtos; + +namespace Volo.Blogging +{ + [RemoteService] + [Area("blogging")] + [Controller] + [ControllerName("Blogs")] + [Route("api/blogging/blogs")] + [DisableAuditing] + public class BlogsController : AbpController, IBlogAppService + { + private readonly IBlogAppService _blogAppService; + + public BlogsController(IBlogAppService blogAppService) + { + _blogAppService = blogAppService; + } + + [HttpGet] + [Route("")] + public async Task> GetListPagedAsync(PagedAndSortedResultRequestDto input) + { + return await _blogAppService.GetListPagedAsync(input); + } + + [HttpGet] + [Route("/all")] + public async Task> GetListAsync() + { + return await _blogAppService.GetListAsync(); + } + + [HttpGet] + [Route("{shortName}")] + public async Task GetByShortNameAsync(string shortName) + { + return await _blogAppService.GetByShortNameAsync(shortName); + } + + [HttpGet] + [Route("{id}")] + public async Task GetAsync(Guid id) + { + return await _blogAppService.GetAsync(id); + } + + [HttpPost] + public async Task Create(CreateBlogDto input) + { + return await _blogAppService.Create(input); + } + + [HttpPut] + [Route("{id}")] + public async Task Update(Guid id, UpdateBlogDto input) + { + throw new NotImplementedException(); + } + + [HttpDelete] + public async Task Delete(Guid id) + { + await _blogAppService.Delete(id); + } + } +} diff --git a/modules/blogging/src/Volo.Blogging.Web/AbpBloggingWebAutoMapperProfile.cs b/modules/blogging/src/Volo.Blogging.Web/AbpBloggingWebAutoMapperProfile.cs index aa100bf8e0..3a95f05aab 100644 --- a/modules/blogging/src/Volo.Blogging.Web/AbpBloggingWebAutoMapperProfile.cs +++ b/modules/blogging/src/Volo.Blogging.Web/AbpBloggingWebAutoMapperProfile.cs @@ -1,8 +1,11 @@ using AutoMapper; using Volo.Abp.AutoMapper; using Volo.Blogging.Blogs; +using Volo.Blogging.Blogs.Dtos; +using Volo.Blogging.Pages.Admin.Blogs; using Volo.Blogging.Pages.Blog.Posts; using Volo.Blogging.Posts; +using EditModel = Volo.Blogging.Pages.Admin.Blogs.EditModel; using IndexModel = Volo.Blogging.Pages.Blog.IndexModel; namespace Volo.Blogging @@ -14,6 +17,8 @@ namespace Volo.Blogging CreateMap().Ignore(x=>x.Tags); CreateMap(); CreateMap(); + CreateMap(); + CreateMap(); } } } diff --git a/modules/blogging/src/Volo.Blogging.Web/BloggingMenuContributor.cs b/modules/blogging/src/Volo.Blogging.Web/BloggingMenuContributor.cs index 6169fdd4b0..311f222f89 100644 --- a/modules/blogging/src/Volo.Blogging.Web/BloggingMenuContributor.cs +++ b/modules/blogging/src/Volo.Blogging.Web/BloggingMenuContributor.cs @@ -27,7 +27,14 @@ namespace Volo.Blogging var rootMenuItem = new ApplicationMenuItem("Blogs", l["Menu:Blogs"], "/Blog"); context.Menu.AddItem(rootMenuItem); + + var managementRootMenuItem = new ApplicationMenuItem("BlogManagement", l["Menu:BlogManagement"]); + managementRootMenuItem.AddItem(new ApplicationMenuItem("Blogs", l["Menu:Blogs"], "/Admin/Blogs")); + + context.Menu.AddItem(managementRootMenuItem); } + + } } } diff --git a/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs b/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs index 87777203d6..5c212b03e1 100644 --- a/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs +++ b/modules/blogging/src/Volo.Blogging.Web/BloggingWebModule.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.AutoMapper; using Volo.Abp.Localization; using Volo.Abp.Localization.Resources.AbpValidation; @@ -15,8 +16,9 @@ namespace Volo.Blogging { [DependsOn( typeof(BloggingHttpApiModule), - typeof(AbpAutoMapperModule), - typeof(AbpAspNetCoreMvcUiBootstrapModule) + typeof(AbpAspNetCoreMvcUiBootstrapModule), + typeof(AbpAspNetCoreMvcUiBundlingModule), + typeof(AbpAutoMapperModule) )] public class BloggingWebModule : AbpModule { @@ -37,7 +39,7 @@ namespace Volo.Blogging Configure(options => { - options.FileSets.AddEmbedded("Volo.Blogging"); + options.FileSets.AddEmbedded("Volo.Blogging.Web"); }); Configure(options => diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json index 6bacdd88c9..c3ecfe95f9 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json +++ b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/en.json @@ -2,6 +2,7 @@ "culture": "en", "texts": { "Menu:Blogs": "Blog", + "Menu:BlogManagement": "Blog Management", "Title": "Title", "ContinueReading": "Continue Reading", "DaysAgo": "days ago", diff --git a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json index e1d12d1349..a703e70465 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json +++ b/modules/blogging/src/Volo.Blogging.Web/Localization/Resources/Blogging/Web/tr.json @@ -3,6 +3,7 @@ "texts": { "Menu:Blogs": "Blog", "Title": "Başlık", + "Menu:BlogManagement": "Blog Yönetimi", "ContinueReading": "Devamı...", "DaysAgo": "Gün Önce", "YearsAgo": "yıl önce", diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Create.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Create.cshtml new file mode 100644 index 0000000000..3cccd4b277 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Create.cshtml @@ -0,0 +1,20 @@ +@page +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal +@using Volo.Blogging.Pages.Blog +@inherits BloggingPage +@model Volo.Blogging.Pages.Admin.Blogs.CreateModel +@{ + Layout = null; +} + + + + + + + + + + + + diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Create.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Create.cshtml.cs new file mode 100644 index 0000000000..0826c0600b --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Create.cshtml.cs @@ -0,0 +1,50 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Blogging.Blogs; +using Volo.Blogging.Blogs.Dtos; + +namespace Volo.Blogging.Pages.Admin.Blogs +{ + public class CreateModel : AbpPageModel + { + private readonly IBlogAppService _blogAppService; + + [BindProperty] + public BlogCreateModalView Blog { get; set; } = new BlogCreateModalView(); + + public CreateModel(IBlogAppService blogAppService) + { + _blogAppService = blogAppService; + } + + public void OnGet() + { + + } + + public async void OnPostAsync() + { + var language = ObjectMapper.Map(Blog); + + await _blogAppService.Create(language); + } + + + public class BlogCreateModalView + { + [Required] + [StringLength(BlogConsts.MaxNameLength)] + public string Name { get; set; } + + [Required] + [StringLength(BlogConsts.MaxShortNameLength)] + public string ShortName { get; set; } + + [StringLength(BlogConsts.MaxDescriptionLength)] + public string Description { get; set; } + + } + } +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Edit.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Edit.cshtml new file mode 100644 index 0000000000..d3290b7917 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Edit.cshtml @@ -0,0 +1,20 @@ +@page +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal +@using Volo.Blogging.Pages.Blog +@inherits BloggingPage +@model Volo.Blogging.Pages.Admin.Blogs.EditModel +@{ + Layout = null; +} + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Edit.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Edit.cshtml.cs new file mode 100644 index 0000000000..4759429236 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Edit.cshtml.cs @@ -0,0 +1,65 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Blogging.Blogs; +using Volo.Blogging.Blogs.Dtos; +using Volo.Blogging.Posts; + +namespace Volo.Blogging.Pages.Admin.Blogs +{ + public class EditModel : AbpPageModel + { + private readonly IBlogAppService _blogAppService; + + [BindProperty(SupportsGet = true)] + public Guid BlogId { get; set; } + + [BindProperty] + public BlogEditViewModel Blog { get; set; } = new BlogEditViewModel(); + + public EditModel(IBlogAppService blogAppService) + { + _blogAppService = blogAppService; + } + + public async Task OnGet() + { + var blog = await _blogAppService.GetAsync(BlogId); + + Blog = ObjectMapper.Map(blog); + } + + public async Task OnPost() + { + await _blogAppService.Update(Blog.Id, new UpdateBlogDto() + { + Name = Blog.Name, + ShortName = Blog.ShortName, + Description = Blog.Description + }); + } + + public class BlogEditViewModel + { + [HiddenInput] + [Required] + public Guid Id { get; set; } + + [Required] + [StringLength(BlogConsts.MaxNameLength)] + public string Name { get; set; } + + [Required] + [StringLength(BlogConsts.MaxShortNameLength)] + public string ShortName { get; set; } + + [StringLength(BlogConsts.MaxDescriptionLength)] + public string Description { get; set; } + } + } + + +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Index.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Index.cshtml new file mode 100644 index 0000000000..c3fc8e9c30 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Index.cshtml @@ -0,0 +1,44 @@ +@page +@using Microsoft.AspNetCore.Authorization +@using Volo.Blogging +@using Volo.Blogging.Pages.Blog +@inherits BloggingPage +@model IndexModel +@inject IAuthorizationService Authorization +@{ + ViewBag.PageTitle = "Blogs"; +} + +@section scripts { + + +} + + + + + +

@L["Blogs"]

+
+ + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Blogs.Create)) + { + + } + +
+
+ + + + + @L["Actions"] + @L["Name"] + @L["ShortName"] + @L["CreationTime"] + @L["Description"] + + + + +
diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Index.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Index.cshtml.cs new file mode 100644 index 0000000000..a01cf8fbee --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/Index.cshtml.cs @@ -0,0 +1,12 @@ +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; + +namespace Volo.Blogging.Pages.Admin.Blogs +{ + public class IndexModel : AbpPageModel + { + public void OnGet() + { + + } + } +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/create.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/create.js new file mode 100644 index 0000000000..276523c14d --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/create.js @@ -0,0 +1,14 @@ +var abp = abp || {}; +$(function () { + abp.modals.blogCreate = function () { + var initModal = function (publicApi, args) { + var $form = publicApi.getForm(); + + + }; + + return { + initModal: initModal + } + }; +}); \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/edit.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/edit.js new file mode 100644 index 0000000000..8d3cffb6c8 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/edit.js @@ -0,0 +1,14 @@ +var abp = abp || {}; +$(function () { + abp.modals.blogEdit = function () { + var initModal = function (publicApi, args) { + var $form = publicApi.getForm(); + + + }; + + return { + initModal: initModal + } + }; +}); \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/index.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/index.js new file mode 100644 index 0000000000..859179235b --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Admin/Blogs/index.js @@ -0,0 +1,85 @@ +$(function () { + + var _createModal = new abp.ModalManager(abp.appPath + 'Admin/Blogs/Create'); + var _editModal = new abp.ModalManager(abp.appPath + 'Admin/Blogs/Edit'); + + var _dataTable = $('#BlogsTable').DataTable(abp.libs.datatables.normalizeConfiguration({ + processing: true, + serverSide: true, + paging: true, + searching: false, + autoWidth: false, + scrollX: true, + scrollCollapse: true, + order: [[3, "desc"]], + ajax: abp.libs.datatables.createAjax(volo.blogging.blogs.getListPaged), + columnDefs: [ + { + targets: 0, //optional + rowAction: { + items: + [ + { + text: 'Edit', + visible: function () { + return true; //TODO: Check permission + }, + action: function (data) { + _editModal.open({ + blogId: data.record.id + }); + } + }, + { + text: 'Delete', + visible: function () { + return true; //TODO: Check permission + }, + confirmMessage: function (data) { return 'Todo: fill this message' }, + action: function (data) { + volo.blogging.blogs + .delete(data.record.id) + .then(function () { + _dataTable.ajax.reload(); + }); + } + } + ] + } + }, + { + target: 1, + data: "name" + }, + { + target: 2, + data: "shortName" + }, + { + target: 3, + data: "creationTime", + render: function (date) { + return date; + } + }, + { + target: 4, + data: "description" + } + ] + })); + + + $("#CreateNewBlogButtonId").click(function () { + _createModal.open(); + }); + + _createModal.onClose(function () { + _dataTable.ajax.reload(); + }); + + _editModal.onResult(function () { + _dataTable.ajax.reload(); + }); + +}); \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Index.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Index.cshtml.cs index d33e3bdb29..672b1434ad 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Index.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Index.cshtml.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.Blogging.Blogs; +using Volo.Blogging.Blogs.Dtos; namespace Volo.Blogging.Pages.Blog { diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Detail.cshtml index d76b392b5b..43e9bf5d5c 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Detail.cshtml @@ -19,24 +19,19 @@ } -
-
-
-
-
-
-
-
-

- @foreach (var tag in Model.Post.Tags) - { - @tag.Name - } -

-

- @Model.Post.Title +
+
+
+
+
+

+ @L["Volosoft"] + + BLOG +

+<<<<<<< HEAD

+
-
+
+
+
+
+
+
+
+

+ @foreach (var tag in Model.Post.Tags) + { + @tag.Name + } +

+

+ @Model.Post.Title +

+
+
+ +
+
- -
-
-
-
@L["TagsInThisArticle"]
- @foreach (var tag in Model.Post.Tags) - { - @tag.Name - } +
+
+
+

@Html.Raw(Model.FormattedContent)

+ +
-
-
-

@L["LeaveComment"]

-
-
- - -
- -
- - +
+ +
+
+
+
@L["TagsInThisArticle"]
+ @foreach (var tag in Model.Post.Tags) + { + @tag.Name + } +
+
+
+

@L["LeaveComment"]

+
+
+
+
+ + +
+ +
+ + +
-
-
+
- @foreach (var commentWithRepliesDto in Model.CommentsWithReplies) - { -
- -
-
- Armağan Ünlü - @ConvertDatetimeToTimeAgo(commentWithRepliesDto.Comment.CreationTime) -
-

- @commentWithRepliesDto.Comment.Text -

-
+ @foreach (var commentWithRepliesDto in Model.CommentsWithReplies) + { +
+ +
+
+ Armağan Ünlü + @ConvertDatetimeToTimeAgo(commentWithRepliesDto.Comment.CreationTime) +
+

+ @commentWithRepliesDto.Comment.Text +

+
- - @L["Reply"] - - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete)) - { - | - - @L["Delete"] + + @L["Reply"] - } - - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { - | - - @L["Edit"] - - } -
- -
-
-

@L["ReplyTo"] Armağan Ünlü

-
-
- - + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete)) + { + | + + @L["Delete"] + + } -
- -
- - -
+ @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + { + | + + @L["Edit"] + + }
-
- - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { -
+ +
+

@L["ReplyTo"] Armağan Ünlü

-
- + + + +
- +
- +
- } - @foreach (var reply in commentWithRepliesDto.Replies) - { -
- -
-
- Zlatan Ibrahimovic - @ConvertDatetimeToTimeAgo(reply.CreationTime) -
-

- @reply.Text -

-
- - @L["Reply"] - + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + { +
+
+
+
+ +
+ +
+ + +
+
+
+ } - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { - | - - @L["Delete"] + @foreach (var reply in commentWithRepliesDto.Replies) + { +
+ +
+
+ Zlatan Ibrahimovic + @ConvertDatetimeToTimeAgo(reply.CreationTime) +
+

+ @reply.Text +

+
+ + @L["Reply"] - } - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { - | - - @L["Edit"] - - } -
+ @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + { + | + + @L["Delete"] + + } -
-
-

@L["ReplyTo"] Armağan Ünlü

-
-
- - -
- -
- - -
+ @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + { + | + + @L["Edit"] + + }
-
- - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { -
+ +
+

@L["ReplyTo"] Armağan Ünlü

-
- + + +
- +
- +
- } + + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + { +
+
+
+
+ +
+ +
+ + +
+
+
+ } +
-
- } + } +
-
- } + } +
-
diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Detail.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Detail.cshtml.cs index 3424bfaf93..05344dcac8 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Detail.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Detail.cshtml.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Volo.Blogging.Blogs; +using Volo.Blogging.Blogs.Dtos; using Volo.Blogging.Comments; using Volo.Blogging.Comments.Dtos; using Volo.Blogging.Posts; diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Index.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Index.cshtml index e42531459c..6d134c874b 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Index.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/Index.cshtml @@ -24,72 +24,96 @@ }
- -
- +
+
+
+
+

+ @L["Volosoft"] + + BLOG + +

+
+
+
+ @if (await Authorization.IsGrantedAsync(BloggingPermissions.Posts.Create)) + { + @L["CreateANewPost"] + } + | + + + + | + + + + | + + + +
+
+
+
+
-
- -

@L["WhatIsNew"]

- @for (var index = 0; index < Model.Posts.Count && index < 3; index++) { var post = Model.Posts[index]; @@ -104,7 +128,7 @@
-

+

@post.Title

@@ -122,116 +146,99 @@
}
- - - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Posts.Create)) - { - @L["CreateANewPost"] - }
-
+
-
-
-
-
-

@L["LastPosts"]

-
-
+
+
+

@L["LastPosts"]

+
+ @for (var index = 3; index < Model.Posts.Count; index++) + { + var post = Model.Posts[index]; + var oddPost = index % 2 == 1; - @for (var index = 3; index < Model.Posts.Count; index++) - { - var post = Model.Posts[index]; - var oddPost = index % 2 == 1; - -
-
-
-
- - - +
+
+
+
+ + + +
-
-
-

- @foreach (var tag in post.Tags) - { - @tag.Name - } -

-

- @post.Title -

-

- @(post.Content == null ? "" : (post.Content.Length > 250 ? post.Content.Substring(0, 150) : post.Content))... -

-
- -
- } - + } +
-
- - -
\ No newline at end of file +
diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs index 6dd861e364..14bcfd444f 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/New.cshtml.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.Blogging.Blogs; +using Volo.Blogging.Blogs.Dtos; using Volo.Blogging.Posts; namespace Volo.Blogging.Pages.Blog.Posts diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.css.map b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.css.map new file mode 100644 index 0000000000..d05f08f1e3 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.css.map @@ -0,0 +1,9 @@ +{ + "version": 3, + "file": "new.css", + "sources": [ + "new.scss" + ], + "mappings": "AAAA,AACI,sBADkB,CAClB,gBAAgB,AAAC,CACb,gBAAgB,CAAE,OAAQ,CAC1B,UAAU,CAAE,MAAO,CAKtB,AARL,AAKQ,sBALc,CAClB,gBAAgB,CAIZ,kBAAkB,AAAC,CACf,UAAU,CAAE,IAAK,CACpB,AAPT,AAUI,sBAVkB,CAUlB,KAAK,AAAC,CACF,gBAAgB,CAAE,OAAQ,CAC7B,AAZL,AAcI,sBAdkB,CAclB,cAAc,AAAC,CACX,UAAU,CAAE,MAAO,CACtB", + "names": [] +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.min.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.min.css new file mode 100644 index 0000000000..4c3d2abf44 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Posts/new.min.css @@ -0,0 +1,3 @@ +#qa-new-post-container .new-post-editor{background-color:#F9F9F9;min-height:19.5em}#qa-new-post-container .new-post-editor .CodeMirror-scroll{min-height:20em}#qa-new-post-container .card{background-color:#f6f8fa}#qa-new-post-container .loading-cover{min-height:19.5em} + +/*# sourceMappingURL=new.css.map */ \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Scripts/blog.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Scripts/blog.js index 64282d87eb..68b758e59a 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Scripts/blog.js +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Scripts/blog.js @@ -28,7 +28,7 @@ autoplay: true, autoHeight: true, autoplaySpeed: 1000, - items: 1 + items: 1, }); $('.card-article-container .owl-carousel').owlCarousel({ loop: true, diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_bootstrap-overwrite.scss b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_bootstrap-overwrite.scss index f9573a4c7c..7bd3d4d08d 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_bootstrap-overwrite.scss +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_bootstrap-overwrite.scss @@ -1,4 +1,3 @@ - a, a:hover { text-decoration: none; color: #000000; @@ -12,15 +11,15 @@ h1,h2,h3,h4,h5,h6,.tab-title { font-weight: 700; } h1 { - font-size: 2.0em; + font-size: 2.25em; margin: 1.5rem 0 .75rem; } h2, .tab-title { - font-size: 1.5em; + font-size: 1.75em; margin: 1.5rem 0 .75rem; } h3 { - font-size: 1.25em; + font-size: 1.5em; margin: 1.5rem 0 .75rem; } h4 { @@ -48,155 +47,57 @@ input, select, textarea, .form-control , .btn { } .no-border { border: 0; -} -/* Owl overwrite */ - -.owl-theme .owl-nav { - margin-top: 0 !important; - text-align: center; - -webkit-tap-highlight-color: transparent; - position: absolute; - bottom: 120px; - left: 0; - right: 0; - font-size: 3em; - color: white; - > button { - width: 40px; - height: 40px; - padding: 0 !important; - display: inline-block !important; - line-height: 27px !important; - text-align: center; - background: none !important; - transition: .3s; - &.owl-next { - position: absolute; - right: 10%; - } - &.owl-prev { - position: absolute; - left: 10%; - } - > span { - width: 40px; - height: 40px; - padding: 0; - border: 2px solid white; - border-radius: 40px; - display: inline-block; - line-height: 29px; - text-align: center; - } - } -} - - +} .btn-rounded { border-radius: 30px; } -.list-group { + +.list-group { .list-group-item { position: relative; display: block; - padding: 21px 0 21px 0; - margin-bottom: -1px; - background-color: #fff; - font-size: .8em; + padding: 0 0 20px 0; + background: none; + border-radius: 0; border: 0; - border: 1px solid #f5f5f5; - border-width: 1px 0; + &:hover { background: none; } - &+.list-group-item { - margin-top: -1px; + + & + .list-group-item { + border-top: 1px solid #f5f5f5; + padding: 20px 0; } + h3 { margin-top: 0; } } -} -.tab-content { - padding: 30px 0px 0; -} -.container { - padding-right: 20px; - padding-left: 20px; -} -.row { - margin-right: -20px; - margin-left: -20px; -} -.col, .col-1, .col-10, .col-11, .col-12, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-auto, .col-lg, .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-auto, .col-md, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-auto, .col-sm, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-auto, .col-xl, .col-xl-1, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-auto { - padding-right: 20px; - padding-left: 20px; -} -@media (min-width: 1200px) { - .container { - max-width: 1080px; + &.small-list { + .list-group-item { + padding: 10px 0; + & + .list-group-item { + padding: 10px 0; + } + } } +} + +.font-75 { + font-size: .75em; } -/* -.hero-container { - width: 96%; - max-width: 1440px; -} -*/ -.f-85 { +.font-85 { font-size: .85em; } - -.nav-tabs { - margin-bottom: 20px; - border-bottom: 3px solid #000; - .nav-item { - margin-bottom: -16px; - background: white; - border-left: 5px solid #fff; - .tab-title { - font-weight: 700; - line-height: 1.1; - padding: 7px; - margin-left: -14px; - } - } - - .nav-link { - font-size: .8em; - border-radius: 50px; - padding: .25rem .5rem; - font-weight: 700; - color: grey; - &:hover, &:focus { - background:#eee; - } - } - - .nav-link.active, - .nav-item.show .nav-link { - background: black; - border-color: white; - color: white; - border-radius: 50px; - } - } - - - -.pb-5, .py-5 { - padding-bottom: 4rem!important; +.font-92 { + font-size: .92em; } - -.pt-5, .py-5 { - padding-top: 4rem!important; +.font-100 { + font-size: 1em; } -footer { - font-size: .8em; - line-height: 2; - .seperator { - padding: 0 5px; - opacity: .5; - } -} \ No newline at end of file +.font-125 { + font-size: 1.25em; +} + \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_header.scss b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_header.scss index 7300564da2..d68cec899f 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_header.scss +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_header.scss @@ -1,19 +1,21 @@ - header { - position: fixed; - width: 100%; - top: 0; - left: 0; - z-index: 100; - background:#f8f9fa; - .navbar-blog { - padding: 20px 0; - - ul { - li { - a { - color: black; - } - } - } - } - } \ No newline at end of file +.vs-blog-title { + padding-bottom: 15px; + margin-bottom: 25px; + border-bottom: 1px solid #ddd; + h1,h2,h3,h4,h5, h6 { + margin: 0; + padding: 0; + } +} + + +.vs-footer { + padding-top: 15px; + margin-top: 25px; + border-top: 1px solid #ddd; +} + +.vs-seperator { + padding: 0 4px; + opacity: .3; +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.css new file mode 100644 index 0000000000..cb11960907 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.css @@ -0,0 +1,140 @@ +.hero-section { + padding: 0; } + .hero-section .hero-articles { + position: relative; + overflow: hidden; } + .hero-section .hero-articles .hero-content { + position: absolute; + left: 12%; + right: 12%; + bottom: 80px; + z-index: 4; + text-align: center; } + .hero-section .hero-articles .hero-content h2 { + margin-top: 0; + font-size: 2.5em; + font-weight: bold; } + .hero-section .hero-articles .hero-content a { + color: white; + text-shadow: 0px 0px 20px rgba(0, 0, 0, 0.5); } + .hero-section .hero-articles .hero-content p { + color: white; } + .hero-section .hero-articles .tags .tag { + background: rgba(208, 208, 208, 0.3); + color: #fff !important; } + .hero-section .hero-articles .tags .tag:hover { + background: white; + color: black !important; } + .hero-section .hero-articles .article-owner { + text-align: center; + position: relative; + z-index: 12; } + .hero-section .hero-articles .article-owner .article-infos { + color: black; } + .hero-section .hero-articles .article-owner .article-infos a { + color: black; } + .hero-section .hero-articles .article-owner .article-infos .seperator { + margin: 0 4px; + color: rgba(255, 255, 255, 0.2); } + .hero-section .hero-articles .article-owner .article-infos img.article-avatar { + width: 64px; + margin: -25px 10px 0px 0; + border: 3px solid #fff; + display: inline-block; + border-radius: 50%; } + .hero-section .hero-articles .img-container { + background: black; } + .hero-section .hero-articles .img-container img { + filter: grayscale(10%); } + .hero-section .hero-articles .img-container::after { + content: ""; + display: block; + position: absolute; + z-index: 1; + bottom: 0px; + width: 100%; + top: 1% !important; + background: linear-gradient(to bottom, transparent 0, rgba(0, 0, 0, 0.91) 89%, rgba(0, 0, 0, 0.93) 93%) !important; + transition: .2s all ease-in-out; + opacity: .9; } + .hero-section .hero-articles:hover .img-container::after { + opacity: 1; } + +.article-owner .article-infos { + color: #000; } + .article-owner .article-infos a { + color: rgba(0, 0, 0, 0.6); } + .article-owner .article-infos .seperator { + margin: 0 4px; + color: rgba(0, 0, 0, 0.2); } + .article-owner .article-infos img.article-avatar { + width: 30px; + margin: -1px 4px 0 0; + display: inline-block; + border-radius: 50%; } + +.card-articles .card-content { + padding: 10px 0px 10px; } + .card-articles .card-content h3 { + margin: 10px 0; } + .card-articles .card-content h3 a { + font-weight: 700; } + +.card-articles .article-owner { + text-align: left; } + .card-articles .article-owner .article-infos { + color: #000; } + .card-articles .article-owner .article-infos a { + color: rgba(0, 0, 0, 0.6); } + .card-articles .article-owner .article-infos .seperator { + margin: 0 4px; + color: rgba(0, 0, 0, 0.2); } + .card-articles .article-owner .article-infos img.article-avatar { + width: 30px; + margin: -1px 4px 0 0; + display: inline-block; + border-radius: 50%; } + +.article-owner { + font-size: .85em; } + +.user-link-icons { + position: absolute; + right: 18px; + top: 15px; + z-index: 3; } + .user-link-icons a { + display: inline-block; + color: #eee; + margin-left: 12px; + font-size: 1.25em; } + .user-link-icons a:hover { + color: #fff; } + +.tags .tag { + display: inline-block; + padding: 2px 8px; + background: rgba(208, 208, 208, 0.3); + border-radius: 30px; + margin: 0 1px 3px 0; + color: #b1b1b1 !important; + font-size: .7em; + line-height: 1.6em; + text-transform: uppercase; } + .tags .tag:hover { + background: black; + color: white !important; } + +.popular-tags a { + display: block; + font-size: .9em; } + .popular-tags a span { + float: right; + opacity: .3; + font-size: .9em; } + +.img-container { + position: relative; + overflow: hidden; + border-radius: 4px; } + diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.min.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.min.css new file mode 100644 index 0000000000..b01dc9344d --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.min.css @@ -0,0 +1 @@ +.hero-section{padding:0;}.hero-section .hero-articles{position:relative;overflow:hidden;}.hero-section .hero-articles .hero-content{position:absolute;left:12%;right:12%;bottom:80px;z-index:4;text-align:center;}.hero-section .hero-articles .hero-content h2{margin-top:0;font-size:2.5em;font-weight:bold;}.hero-section .hero-articles .hero-content a{color:#fff;text-shadow:0 0 20px rgba(0,0,0,.5);}.hero-section .hero-articles .hero-content p{color:#fff;}.hero-section .hero-articles .tags .tag{background:rgba(208,208,208,.3);color:#fff !important;}.hero-section .hero-articles .tags .tag:hover{background:#fff;color:#000 !important;}.hero-section .hero-articles .article-owner{text-align:center;position:relative;z-index:12;}.hero-section .hero-articles .article-owner .article-infos{color:#000;}.hero-section .hero-articles .article-owner .article-infos a{color:#000;}.hero-section .hero-articles .article-owner .article-infos .seperator{margin:0 4px;color:rgba(255,255,255,.2);}.hero-section .hero-articles .article-owner .article-infos img.article-avatar{width:64px;margin:-25px 10px 0 0;border:3px solid #fff;display:inline-block;border-radius:50%;}.hero-section .hero-articles .img-container{background:#000;}.hero-section .hero-articles .img-container img{filter:grayscale(10%);}.hero-section .hero-articles .img-container::after{content:"";display:block;position:absolute;z-index:1;bottom:0;width:100%;top:1% !important;background:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.91) 89%,rgba(0,0,0,.93) 93%) !important;transition:.2s all ease-in-out;opacity:.9;}.hero-section .hero-articles:hover .img-container::after{opacity:1;}.article-owner .article-infos{color:#000;}.article-owner .article-infos a{color:rgba(0,0,0,.6);}.article-owner .article-infos .seperator{margin:0 4px;color:rgba(0,0,0,.2);}.article-owner .article-infos img.article-avatar{width:30px;margin:-1px 4px 0 0;display:inline-block;border-radius:50%;}.card-articles .card-content{padding:10px 0 10px;}.card-articles .card-content h3{margin:10px 0;}.card-articles .card-content h3 a{font-weight:700;}.card-articles .article-owner{text-align:left;}.card-articles .article-owner .article-infos{color:#000;}.card-articles .article-owner .article-infos a{color:rgba(0,0,0,.6);}.card-articles .article-owner .article-infos .seperator{margin:0 4px;color:rgba(0,0,0,.2);}.card-articles .article-owner .article-infos img.article-avatar{width:30px;margin:-1px 4px 0 0;display:inline-block;border-radius:50%;}.article-owner{font-size:.85em;}.user-link-icons{position:absolute;right:18px;top:15px;z-index:3;}.user-link-icons a{display:inline-block;color:#eee;margin-left:12px;font-size:1.25em;}.user-link-icons a:hover{color:#fff;}.tags .tag{display:inline-block;padding:2px 8px;background:rgba(208,208,208,.3);border-radius:30px;margin:0 1px 3px 0;color:#b1b1b1 !important;font-size:.7em;line-height:1.6em;text-transform:uppercase;}.tags .tag:hover{background:#000;color:#fff !important;}.popular-tags a{display:block;font-size:.9em;}.popular-tags a span{float:right;opacity:.3;font-size:.9em;}.img-container{position:relative;overflow:hidden;border-radius:4px;} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.scss b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.scss index 8b303788ae..42f1adb3bb 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.scss +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_home.scss @@ -1,4 +1,4 @@ -section.hero-section { +.hero-section { padding: 0; .hero-articles { position: relative; @@ -57,9 +57,7 @@ section.hero-section { } } .img-container { - background: black; - border-top-left-radius: 0; - border-top-right-radius: 0; + background: black; img { filter: grayscale(10%); } @@ -85,39 +83,26 @@ section.hero-section { } } } -.box-articles { - padding: 0 0 40px 0; - &+.box-articles { - padding: 40px 0; - border-top: 1px solid #f5f5f5; - border-bottom: 1px solid #f5f5f5; - margin-top: -1px; - } - h3 { - margin: 10px 0; + +.article-owner { + .article-infos { + color: #000; a { - font-weight: 700; + color: rgba(0, 0, 0, 0.6); } - } - .article-owner { - .article-infos { - color: #000; - a { - color: rgba(0, 0, 0, 0.6); - } - .seperator { - margin: 0 4px; - color: rgba(0, 0, 0, 0.2); - } - img.article-avatar { - width: 30px; - margin: -1px 4px 0 0; - display: inline-block; - border-radius: 50%; - } + .seperator { + margin: 0 4px; + color: rgba(0, 0, 0, 0.2); } - } -} + img.article-avatar { + width: 30px; + margin: -1px 4px 0 0; + display: inline-block; + border-radius: 50%; + } + } +} + .card-articles { .card-content @@ -172,37 +157,32 @@ section.hero-section { } .tags { - margin:5px 0; .tag { display: inline-block; - padding: 0px 6px; + padding: 2px 8px; background: rgba(208, 208, 208, 0.3); border-radius: 30px; - margin: 4px 1px; + margin: 0 1px 3px 0; color: #b1b1b1 !important; - font-size: .64em; + font-size: .7em; line-height: 1.6em; text-transform: uppercase; - &:hover { - background: black; + + &:hover { + background: black; color: white !important; } - } -} + } +} .popular-tags { a { display: block; - padding: 10px 15px; - background: white; - margin-bottom: 2px; - font-size: .85em; - &:hover { - background: #f5f5f5; - } + font-size: .9em; + span { float: right; opacity: .3; - font-size: .85em; + font-size: .9em; } } } @@ -213,10 +193,4 @@ section.hero-section { overflow: hidden; border-radius: 4px; } - -.sidebox { - .sideboxes { - padding: 30px; - background: #fafafa; - } -} \ No newline at end of file + \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_post.scss b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_post.scss index 4daede6ab4..de45e096e6 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_post.scss +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/_post.scss @@ -52,32 +52,36 @@ .media { font-size: .95em; } -} +} .comment-area { .comment-owner { + margin-bottom: 2px; + span { font-weight: 300; color: #999; font-size: .8em; } } - >.media { - padding: 30px 0; + + > .media { + padding: 30px 0; border-bottom: 1px solid #f1f1f1; + .media { - padding: 20px 0; + padding: 20px 0; } } + .comment-buttons { - background: #f8f9fa ; - border-bottom: 1px solid #f1f1f1; - padding: 6px 10px; - font-size: .85em; + padding: 4px 8px; + .seperator { color: #ddd; margin: 0 8px; } + .count { color: #fff; background: #ddd; @@ -85,17 +89,27 @@ padding: 1px 3px; font-size: 10px; border-radius: 3px; + &.count-up { background: #999; } } + a { + opacity: .5; + &:hover { + opacity: .75; + } + } } + p { margin-bottom: 6px; } + .comment-avatar { width: 64px; } + .answer-avatar { width: 48px; } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.css index 160c2227df..9d5951e962 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.css +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.css @@ -1,15 +1,9 @@ div.vs-blog { position: relative; - background: #fff; - font-family: Helvetica, sans-serif; - font-size: 15px; - /* Owl overwrite */ - /* -.hero-container { - width: 96%; - max-width: 1440px; -} -*/ } + background: white; + padding: 0 30px; + font-family: 'Open Sans', Helvetica, Arial, sans-serif; + font-size: 14px; } div.vs-blog a, div.vs-blog a:hover { text-decoration: none; color: #000000; } @@ -20,13 +14,13 @@ font-family: Helvetica, Roboto, sans-serif; font-weight: 700; } div.vs-blog h1 { - font-size: 2.0em; + font-size: 2.25em; margin: 1.5rem 0 .75rem; } div.vs-blog h2, div.vs-blog .tab-title { - font-size: 1.5em; + font-size: 1.75em; margin: 1.5rem 0 .75rem; } div.vs-blog h3 { - font-size: 1.25em; + font-size: 1.5em; margin: 1.5rem 0 .75rem; } div.vs-blog h4 { font-size: 1.25em; @@ -46,172 +40,99 @@ background: aqua; } div.vs-blog .no-border { border: 0; } - div.vs-blog .owl-theme .owl-nav { - margin-top: 0 !important; - text-align: center; - -webkit-tap-highlight-color: transparent; - position: absolute; - bottom: 120px; - left: 0; - right: 0; - font-size: 3em; - color: white; } - div.vs-blog .owl-theme .owl-nav > button { - width: 40px; - height: 40px; - padding: 0 !important; - display: inline-block !important; - line-height: 27px !important; - text-align: center; - background: none !important; - transition: .3s; } - div.vs-blog .owl-theme .owl-nav > button.owl-next { - position: absolute; - right: 10%; } - div.vs-blog .owl-theme .owl-nav > button.owl-prev { - position: absolute; - left: 10%; } - div.vs-blog .owl-theme .owl-nav > button > span { - width: 40px; - height: 40px; - padding: 0; - border: 2px solid white; - border-radius: 40px; - display: inline-block; - line-height: 29px; - text-align: center; } div.vs-blog .btn-rounded { border-radius: 30px; } div.vs-blog .list-group .list-group-item { position: relative; display: block; - padding: 21px 0 21px 0; - margin-bottom: -1px; - background-color: #fff; - font-size: .8em; - border: 0; - border: 1px solid #f5f5f5; - border-width: 1px 0; } + padding: 0 0 20px 0; + background: none; + border-radius: 0; + border: 0; } div.vs-blog .list-group .list-group-item:hover { background: none; } div.vs-blog .list-group .list-group-item + .list-group-item { - margin-top: -1px; } + border-top: 1px solid #f5f5f5; + padding: 20px 0; } div.vs-blog .list-group .list-group-item h3 { margin-top: 0; } - div.vs-blog .tab-content { - padding: 30px 0px 0; } - div.vs-blog .container { - padding-right: 20px; - padding-left: 20px; } - div.vs-blog .row { - margin-right: -20px; - margin-left: -20px; } - div.vs-blog .col, div.vs-blog .col-1, div.vs-blog .col-10, div.vs-blog .col-11, div.vs-blog .col-12, div.vs-blog .col-2, div.vs-blog .col-3, div.vs-blog .col-4, div.vs-blog .col-5, div.vs-blog .col-6, div.vs-blog .col-7, div.vs-blog .col-8, div.vs-blog .col-9, div.vs-blog .col-auto, div.vs-blog .col-lg, div.vs-blog .col-lg-1, div.vs-blog .col-lg-10, div.vs-blog .col-lg-11, div.vs-blog .col-lg-12, div.vs-blog .col-lg-2, div.vs-blog .col-lg-3, div.vs-blog .col-lg-4, div.vs-blog .col-lg-5, div.vs-blog .col-lg-6, div.vs-blog .col-lg-7, div.vs-blog .col-lg-8, div.vs-blog .col-lg-9, div.vs-blog .col-lg-auto, div.vs-blog .col-md, div.vs-blog .col-md-1, div.vs-blog .col-md-10, div.vs-blog .col-md-11, div.vs-blog .col-md-12, div.vs-blog .col-md-2, div.vs-blog .col-md-3, div.vs-blog .col-md-4, div.vs-blog .col-md-5, div.vs-blog .col-md-6, div.vs-blog .col-md-7, div.vs-blog .col-md-8, div.vs-blog .col-md-9, div.vs-blog .col-md-auto, div.vs-blog .col-sm, div.vs-blog .col-sm-1, div.vs-blog .col-sm-10, div.vs-blog .col-sm-11, div.vs-blog .col-sm-12, div.vs-blog .col-sm-2, div.vs-blog .col-sm-3, div.vs-blog .col-sm-4, div.vs-blog .col-sm-5, div.vs-blog .col-sm-6, div.vs-blog .col-sm-7, div.vs-blog .col-sm-8, div.vs-blog .col-sm-9, div.vs-blog .col-sm-auto, div.vs-blog .col-xl, div.vs-blog .col-xl-1, div.vs-blog .col-xl-10, div.vs-blog .col-xl-11, div.vs-blog .col-xl-12, div.vs-blog .col-xl-2, div.vs-blog .col-xl-3, div.vs-blog .col-xl-4, div.vs-blog .col-xl-5, div.vs-blog .col-xl-6, div.vs-blog .col-xl-7, div.vs-blog .col-xl-8, div.vs-blog .col-xl-9, div.vs-blog .col-xl-auto { - padding-right: 20px; - padding-left: 20px; } - @media (min-width: 1200px) { - div.vs-blog .container { - max-width: 1080px; } } - div.vs-blog .f-85 { + div.vs-blog .list-group.small-list .list-group-item { + padding: 10px 0; } + div.vs-blog .list-group.small-list .list-group-item + .list-group-item { + padding: 10px 0; } + div.vs-blog .font-75 { + font-size: .75em; } + div.vs-blog .font-85 { font-size: .85em; } - div.vs-blog .nav-tabs { - margin-bottom: 20px; - border-bottom: 3px solid #000; } - div.vs-blog .nav-tabs .nav-item { - margin-bottom: -16px; - background: white; - border-left: 5px solid #fff; } - div.vs-blog .nav-tabs .nav-item .tab-title { - font-weight: 700; - line-height: 1.1; - padding: 7px; - margin-left: -14px; } - div.vs-blog .nav-tabs .nav-link { - font-size: .8em; - border-radius: 50px; - padding: .25rem .5rem; - font-weight: 700; - color: grey; } - div.vs-blog .nav-tabs .nav-link:hover, div.vs-blog .nav-tabs .nav-link:focus { - background: #eee; } - div.vs-blog .nav-tabs .nav-link.active, - div.vs-blog .nav-tabs .nav-item.show .nav-link { - background: black; - border-color: white; - color: white; - border-radius: 50px; } - div.vs-blog .pb-5, div.vs-blog .py-5 { - padding-bottom: 4rem !important; } - div.vs-blog .pt-5, div.vs-blog .py-5 { - padding-top: 4rem !important; } - div.vs-blog footer { - font-size: .8em; - line-height: 2; } - div.vs-blog footer .seperator { - padding: 0 5px; - opacity: .5; } - div.vs-blog header { - position: fixed; - width: 100%; - top: 0; - left: 0; - z-index: 100; - background: #f8f9fa; } - div.vs-blog header .navbar-blog { - padding: 20px 0; } - div.vs-blog header .navbar-blog ul li a { - color: black; } - div.vs-blog section.hero-section { + div.vs-blog .font-92 { + font-size: .92em; } + div.vs-blog .font-100 { + font-size: 1em; } + div.vs-blog .font-125 { + font-size: 1.25em; } + div.vs-blog .vs-blog-title { + padding-bottom: 15px; + margin-bottom: 25px; + border-bottom: 1px solid #ddd; } + div.vs-blog .vs-blog-title h1, div.vs-blog .vs-blog-title h2, div.vs-blog .vs-blog-title h3, div.vs-blog .vs-blog-title h4, div.vs-blog .vs-blog-title h5, div.vs-blog .vs-blog-title h6 { + margin: 0; + padding: 0; } + div.vs-blog .vs-footer { + padding-top: 15px; + margin-top: 25px; + border-top: 1px solid #ddd; } + div.vs-blog .vs-seperator { + padding: 0 4px; + opacity: .3; } + div.vs-blog .hero-section { padding: 0; } - div.vs-blog section.hero-section .hero-articles { + div.vs-blog .hero-section .hero-articles { position: relative; overflow: hidden; } - div.vs-blog section.hero-section .hero-articles .hero-content { + div.vs-blog .hero-section .hero-articles .hero-content { position: absolute; left: 12%; right: 12%; bottom: 80px; z-index: 4; text-align: center; } - div.vs-blog section.hero-section .hero-articles .hero-content h2 { + div.vs-blog .hero-section .hero-articles .hero-content h2 { margin-top: 0; font-size: 2.5em; font-weight: bold; } - div.vs-blog section.hero-section .hero-articles .hero-content a { + div.vs-blog .hero-section .hero-articles .hero-content a { color: white; text-shadow: 0px 0px 20px rgba(0, 0, 0, 0.5); } - div.vs-blog section.hero-section .hero-articles .hero-content p { + div.vs-blog .hero-section .hero-articles .hero-content p { color: white; } - div.vs-blog section.hero-section .hero-articles .tags .tag { + div.vs-blog .hero-section .hero-articles .tags .tag { background: rgba(208, 208, 208, 0.3); color: #fff !important; } - div.vs-blog section.hero-section .hero-articles .tags .tag:hover { + div.vs-blog .hero-section .hero-articles .tags .tag:hover { background: white; color: black !important; } - div.vs-blog section.hero-section .hero-articles .article-owner { + div.vs-blog .hero-section .hero-articles .article-owner { text-align: center; position: relative; z-index: 12; } - div.vs-blog section.hero-section .hero-articles .article-owner .article-infos { + div.vs-blog .hero-section .hero-articles .article-owner .article-infos { color: black; } - div.vs-blog section.hero-section .hero-articles .article-owner .article-infos a { + div.vs-blog .hero-section .hero-articles .article-owner .article-infos a { color: black; } - div.vs-blog section.hero-section .hero-articles .article-owner .article-infos .seperator { + div.vs-blog .hero-section .hero-articles .article-owner .article-infos .seperator { margin: 0 4px; color: rgba(255, 255, 255, 0.2); } - div.vs-blog section.hero-section .hero-articles .article-owner .article-infos img.article-avatar { + div.vs-blog .hero-section .hero-articles .article-owner .article-infos img.article-avatar { width: 64px; margin: -25px 10px 0px 0; border: 3px solid #fff; display: inline-block; border-radius: 50%; } - div.vs-blog section.hero-section .hero-articles .img-container { - background: black; - border-top-left-radius: 0; - border-top-right-radius: 0; } - div.vs-blog section.hero-section .hero-articles .img-container img { + div.vs-blog .hero-section .hero-articles .img-container { + background: black; } + div.vs-blog .hero-section .hero-articles .img-container img { filter: grayscale(10%); } - div.vs-blog section.hero-section .hero-articles .img-container::after { + div.vs-blog .hero-section .hero-articles .img-container::after { content: ""; display: block; position: absolute; @@ -222,31 +143,20 @@ background: linear-gradient(to bottom, transparent 0, rgba(0, 0, 0, 0.91) 89%, rgba(0, 0, 0, 0.93) 93%) !important; transition: .2s all ease-in-out; opacity: .9; } - div.vs-blog section.hero-section .hero-articles:hover .img-container::after { + div.vs-blog .hero-section .hero-articles:hover .img-container::after { opacity: 1; } - div.vs-blog .box-articles { - padding: 0 0 40px 0; } - div.vs-blog .box-articles + .box-articles { - padding: 40px 0; - border-top: 1px solid #f5f5f5; - border-bottom: 1px solid #f5f5f5; - margin-top: -1px; } - div.vs-blog .box-articles h3 { - margin: 10px 0; } - div.vs-blog .box-articles h3 a { - font-weight: 700; } - div.vs-blog .box-articles .article-owner .article-infos { - color: #000; } - div.vs-blog .box-articles .article-owner .article-infos a { - color: rgba(0, 0, 0, 0.6); } - div.vs-blog .box-articles .article-owner .article-infos .seperator { - margin: 0 4px; - color: rgba(0, 0, 0, 0.2); } - div.vs-blog .box-articles .article-owner .article-infos img.article-avatar { - width: 30px; - margin: -1px 4px 0 0; - display: inline-block; - border-radius: 50%; } + div.vs-blog .article-owner .article-infos { + color: #000; } + div.vs-blog .article-owner .article-infos a { + color: rgba(0, 0, 0, 0.6); } + div.vs-blog .article-owner .article-infos .seperator { + margin: 0 4px; + color: rgba(0, 0, 0, 0.2); } + div.vs-blog .article-owner .article-infos img.article-avatar { + width: 30px; + margin: -1px 4px 0 0; + display: inline-block; + border-radius: 50%; } div.vs-blog .card-articles .card-content { padding: 10px 0px 10px; } div.vs-blog .card-articles .card-content h3 { @@ -281,40 +191,30 @@ font-size: 1.25em; } div.vs-blog .user-link-icons a:hover { color: #fff; } - div.vs-blog .tags { - margin: 5px 0; } - div.vs-blog .tags .tag { - display: inline-block; - padding: 0px 6px; - background: rgba(208, 208, 208, 0.3); - border-radius: 30px; - margin: 4px 1px; - color: #b1b1b1 !important; - font-size: .64em; - line-height: 1.6em; - text-transform: uppercase; } - div.vs-blog .tags .tag:hover { - background: black; - color: white !important; } + div.vs-blog .tags .tag { + display: inline-block; + padding: 2px 8px; + background: rgba(208, 208, 208, 0.3); + border-radius: 30px; + margin: 0 1px 3px 0; + color: #b1b1b1 !important; + font-size: .7em; + line-height: 1.6em; + text-transform: uppercase; } + div.vs-blog .tags .tag:hover { + background: black; + color: white !important; } div.vs-blog .popular-tags a { display: block; - padding: 10px 15px; - background: white; - margin-bottom: 2px; - font-size: .85em; } - div.vs-blog .popular-tags a:hover { - background: #f5f5f5; } + font-size: .9em; } div.vs-blog .popular-tags a span { float: right; opacity: .3; - font-size: .85em; } + font-size: .9em; } div.vs-blog .img-container { position: relative; overflow: hidden; border-radius: 4px; } - div.vs-blog .sidebox .sideboxes { - padding: 30px; - background: #fafafa; } div.vs-blog .post-detail h1 { padding: 0px 0; line-height: 1.25em; @@ -354,20 +254,19 @@ font-size: .95em; } div.vs-blog .media .media { font-size: .95em; } - div.vs-blog .comment-area .comment-owner span { - font-weight: 300; - color: #999; - font-size: .8em; } + div.vs-blog .comment-area .comment-owner { + margin-bottom: 2px; } + div.vs-blog .comment-area .comment-owner span { + font-weight: 300; + color: #999; + font-size: .8em; } div.vs-blog .comment-area > .media { padding: 30px 0; border-bottom: 1px solid #f1f1f1; } div.vs-blog .comment-area > .media .media { padding: 20px 0; } div.vs-blog .comment-area .comment-buttons { - background: #f8f9fa; - border-bottom: 1px solid #f1f1f1; - padding: 6px 10px; - font-size: .85em; } + padding: 4px 8px; } div.vs-blog .comment-area .comment-buttons .seperator { color: #ddd; margin: 0 8px; } @@ -380,6 +279,10 @@ border-radius: 3px; } div.vs-blog .comment-area .comment-buttons .count.count-up { background: #999; } + div.vs-blog .comment-area .comment-buttons a { + opacity: .5; } + div.vs-blog .comment-area .comment-buttons a:hover { + opacity: .75; } div.vs-blog .comment-area p { margin-bottom: 6px; } div.vs-blog .comment-area .comment-avatar { diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.css.map b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.css.map index f68e5fabcf..8ac035c026 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.css.map +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.css.map @@ -1,14 +1,14 @@ { - "version": 3, - "mappings": "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AI,AAAA,QAAQ,CCmIE,OAAO,EDnIrB,IAAI,AAAA,QAAQ,CCmIW,OAAO,EDnI9B,IAAI,AAAA,QAAQ,CCmIoB,OAAO,EDnIvC,IAAI,AAAA,QAAQ,CCmI6B,MAAM,EDnI/C,IAAI,AAAA,QAAQ,CCmIqC,MAAM,EDnIvD,IAAI,AAAA,QAAQ,CCmI6C,MAAM,EDnI/D,IAAI,AAAA,QAAQ,CCmIqD,MAAM,EDnIvE,IAAI,AAAA,QAAQ,CCmI6D,MAAM,EDnI/E,IAAI,AAAA,QAAQ,CCmIqE,MAAM,EDnIvF,IAAI,AAAA,QAAQ,CCmI6E,MAAM,EDnI/F,IAAI,AAAA,QAAQ,CCmIqF,MAAM,EDnIvG,IAAI,AAAA,QAAQ,CCmI6F,SAAS,EDnIlH,IAAI,AAAA,QAAQ,CCmIwG,OAAO,EDnI3H,IAAI,AAAA,QAAQ,CCmIiH,SAAS,EDnItI,IAAI,AAAA,QAAQ,CCmI4H,UAAU,EDnIlJ,IAAI,AAAA,QAAQ,CCmIwI,UAAU,EDnI9J,IAAI,AAAA,QAAQ,CCmIoJ,UAAU,EDnI1K,IAAI,AAAA,QAAQ,CCmIgK,SAAS,EDnIrL,IAAI,AAAA,QAAQ,CCmI2K,SAAS,EDnIhM,IAAI,AAAA,QAAQ,CCmIsL,SAAS,EDnI3M,IAAI,AAAA,QAAQ,CCmIiM,SAAS,EDnItN,IAAI,AAAA,QAAQ,CCmI4M,SAAS,EDnIjO,IAAI,AAAA,QAAQ,CCmIuN,SAAS,EDnI5O,IAAI,AAAA,QAAQ,CCmIkO,SAAS,EDnIvP,IAAI,AAAA,QAAQ,CCmI6O,SAAS,EDnIlQ,IAAI,AAAA,QAAQ,CCmIwP,YAAY,EDnIhR,IAAI,AAAA,QAAQ,CCmIsQ,OAAO,EDnIzR,IAAI,AAAA,QAAQ,CCmI+Q,SAAS,EDnIpS,IAAI,AAAA,QAAQ,CCmI0R,UAAU,EDnIhT,IAAI,AAAA,QAAQ,CCmIsS,UAAU,EDnI5T,IAAI,AAAA,QAAQ,CCmIkT,UAAU,EDnIxU,IAAI,AAAA,QAAQ,CCmI8T,SAAS,EDnInV,IAAI,AAAA,QAAQ,CCmIyU,SAAS,EDnI9V,IAAI,AAAA,QAAQ,CCmIoV,SAAS,EDnIzW,IAAI,AAAA,QAAQ,CCmI+V,SAAS,EDnIpX,IAAI,AAAA,QAAQ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", - "sources": [ - "blog.scss", - "_bootstrap-overwrite.scss", - "_header.scss", - "_home.scss", - "_post.scss", - "_custom.scss" - ], - "names": [], - "file": "blog.css" + "version": 3, + "file": "blog.css", + "sources": [ + "blog.scss", + "_bootstrap-overwrite.scss", + "_header.scss", + "_home.scss", + "_post.scss", + "_custom.scss" + ], + "mappings": "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nIH,AAAA,QAAQ,CCmIL,MAAM,CDnIZ,ACmIc,GDnIX,AAAA,QAAQ,CCmIG,OAAO,CDnIrB,ACmIuB,GDnIpB,AAAA,QAAQ,CCmIY,OAAO,CDnI9B,ACmIgC,GDnI7B,AAAA,QAAQ,CCmIqB,OAAO,CDnIvC,ACmIyC,GDnItC,AAAA,QAAQ,CCmI8B,MAAM,CDnI/C,ACmIiD,GDnI9C,AAAA,QAAQ,CCmIsC,MAAM,CDnIvD,ACmIyD,GDnItD,AAAA,QAAQ,CCmI8C,MAAM,CDnI/D,ACmIiE,GDnI9D,AAAA,QAAQ,CCmIsD,MAAM,CDnIvE,ACmIyE,GDnItE,AAAA,QAAQ,CCmI8D,MAAM,CDnI/E,ACmIiF,GDnI9E,AAAA,QAAQ,CCmIsE,MAAM,CDnIvF,ACmIyF,GDnItF,AAAA,QAAQ,CCmI8E,MAAM,CDnI/F,ACmIiG,GDnI9F,AAAA,QAAQ,CCmIsF,MAAM,CDnIvG,ACmIyG,GDnItG,AAAA,QAAQ,CCmI8F,SAAS,CDnIlH,ACmIoH,GDnIjH,AAAA,QAAQ,CCmIyG,OAAO,CDnI3H,ACmI6H,GDnI1H,AAAA,QAAQ,CCmIkH,SAAS,CDnItI,ACmIwI,GDnIrI,AAAA,QAAQ,CCmI6H,UAAU,CDnIlJ,ACmIoJ,GDnIjJ,AAAA,QAAQ,CCmIyI,UAAU,CDnI9J,ACmIgK,GDnI7J,AAAA,QAAQ,CCmIqJ,UAAU,CDnI1K,ACmI4K,GDnIzK,AAAA,QAAQ,CCmIiK,SAAS,CDnIrL,ACmIuL,GDnIpL,AAAA,QAAQ,CCmI4K,SAAS,CDnIhM,ACmIkM,GDnI/L,AAAA,QAAQ,CCmIuL,SAAS,CDnI3M,ACmI6M,GDnI1M,AAAA,QAAQ,CCmIkM,SAAS,CDnItN,ACmIwN,GDnIrN,AAAA,QAAQ,CCmI6M,SAAS,CDnIjO,ACmImO,GDnIhO,AAAA,QAAQ,CCmIwN,SAAS,CDnI5O,ACmI8O,GDnI3O,AAAA,QAAQ,CCmImO,SAAS,CDnIvP,ACmIyP,GDnItP,AAAA,QAAQ,CCmI8O,SAAS,CDnIlQ,ACmIoQ,GDnIjQ,AAAA,QAAQ,CCmIyP,YAAY,CDnIhR,ACmIkR,GDnI/Q,AAAA,QAAQ,CCmIuQ,OAAO,CDnIzR,ACmI2R,GDnIxR,AAAA,QAAQ,CCmIgR,SAAS,CDnIpS,ACmIsS,GDnInS,AAAA,QAAQ,CCmI2R,UAAU,CDnIhT,ACmIkT,GDnI/S,AAAA,QAAQ,CCmIuS,UAAU,CDnI5T,ACmI8T,GDnI3T,AAAA,QAAQ,CCmImT,UAAU,CDnIxU,ACmI0U,GDnIvU,AAAA,QAAQ,CCmI+T,SAAS,CDnInV,ACmIqV,GDnIlV,AAAA,QAAQ,CCmI0U,SAAS,CDnI9V,ACmIgW,GDnI7V,AAAA,QAAQ,CCmIqV,SAAS,CDnIzW,ACmI2W,GDnIxW,AAAA,QAAQ,CCmIgW,SAAS,CDnIpX,ACmIsX,GDnInX,AAAA,QAAQ,CCmI2W,SAAS,CDnI/X,ACmIiY,GDnI9X,AAAA,QAAQ,CCmIsX,SAAS,CDnI1Y,ACmI4Y,GDnIzY,AAAA,QAAQ,CCmIiY,SAAS,CDnIrZ,ACmIuZ,GDnIpZ,AAAA,QAAQ,CCmI4Y,SAAS,CDnIha,ACmIka,GDnI/Z,AAAA,QAAQ,CCmIuZ,YAAY,CDnI9a,ACmIgb,GDnI7a,AAAA,QAAQ,CCmIqa,OAAO,CDnIvb,ACmIyb,GDnItb,AAAA,QAAQ,CCmI8a,SAAS,CDnIlc,ACmIoc,GDnIjc,AAAA,QAAQ,CCmIyb,UAAU,CDnI9c,ACmIgd,GDnI7c,AAAA,QAAQ,CCmIqc,UAAU,CDnI1d,ACmI4d,GDnIzd,AAAA,QAAQ,CCmIid,UAAU,CDnIte,ACmIwe,GDnIre,AAAA,QAAQ,CCmI6d,SAAS,CDnIjf,ACmImf,GDnIhf,AAAA,QAAQ,CCmIwe,SAAS,CDnI5f,ACmI8f,GDnI3f,AAAA,QAAQ,CCmImf,SAAS,CDnIvgB,ACmIygB,GDnItgB,AAAA,QAAQ,CCmI8f,SAAS,CDnIlhB,ACmIohB,GDnIjhB,AAAA,QAAQ,CCmIygB,SAAS,CDnI7hB,ACmI+hB,GDnI5hB,AAAA,QAAQ,CCmIohB,SAAS,CDnIxiB,ACmI0iB,GDnIviB,AAAA,QAAQ,CCmI+hB,SAAS,CDnInjB,ACmIqjB,GDnIljB,AAAA,QAAQ,CCmI0iB,SAAS,CDnI9jB,ACmIgkB,GDnI7jB,AAAA,QAAQ,CCmIqjB,YAAY,CDnI5kB,ACmI8kB,GDnI3kB,AAAA,QAAQ,C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", + "names": [] } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.min.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.min.css index 3a347e0dc2..6399209a3e 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.min.css +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.min.css @@ -1 +1 @@ -div.vs-blog{position:relative;background:#fff;font-family:Helvetica,sans-serif;font-size:15px;}div.vs-blog a,div.vs-blog a:hover{text-decoration:none;color:#000;}div.vs-blog p{color:#444;font-family:'PT Sans','Times New Roman',Times,serif;}div.vs-blog h1,div.vs-blog h2,div.vs-blog h3,div.vs-blog h4,div.vs-blog h5,div.vs-blog h6,div.vs-blog .tab-title{font-family:Helvetica,Roboto,sans-serif;font-weight:700;}div.vs-blog h1{font-size:2em;margin:1.5rem 0 .75rem;}div.vs-blog h2,div.vs-blog .tab-title{font-size:1.5em;margin:1.5rem 0 .75rem;}div.vs-blog h3{font-size:1.25em;margin:1.5rem 0 .75rem;}div.vs-blog h4{font-size:1.25em;margin:1.5rem 0 .75rem;}div.vs-blog h5{font-size:1em;}div.vs-blog h6{font-size:1em;}div.vs-blog .lead{font-size:1.1rem;font-weight:300;}div.vs-blog img{max-width:100%;}div.vs-blog input,div.vs-blog select,div.vs-blog textarea,div.vs-blog .form-control,div.vs-blog .btn{border-radius:0;}div.vs-blog .navbar-toggler{background:#0ff;}div.vs-blog .no-border{border:0;}div.vs-blog .owl-theme .owl-nav{margin-top:0 !important;text-align:center;-webkit-tap-highlight-color:transparent;position:absolute;bottom:120px;left:0;right:0;font-size:3em;color:#fff;}div.vs-blog .owl-theme .owl-nav>button{width:40px;height:40px;padding:0 !important;display:inline-block !important;line-height:27px !important;text-align:center;background:none !important;transition:.3s;}div.vs-blog .owl-theme .owl-nav>button.owl-next{position:absolute;right:10%;}div.vs-blog .owl-theme .owl-nav>button.owl-prev{position:absolute;left:10%;}div.vs-blog .owl-theme .owl-nav>button>span{width:40px;height:40px;padding:0;border:2px solid #fff;border-radius:40px;display:inline-block;line-height:29px;text-align:center;}div.vs-blog .btn-rounded{border-radius:30px;}div.vs-blog .list-group .list-group-item{position:relative;display:block;padding:21px 0 21px 0;margin-bottom:-1px;background-color:#fff;font-size:.8em;border:0;border:1px solid #f5f5f5;border-width:1px 0;}div.vs-blog .list-group .list-group-item:hover{background:none;}div.vs-blog .list-group .list-group-item+.list-group-item{margin-top:-1px;}div.vs-blog .list-group .list-group-item h3{margin-top:0;}div.vs-blog .tab-content{padding:30px 0 0;}div.vs-blog .container{padding-right:20px;padding-left:20px;}div.vs-blog .row{margin-right:-20px;margin-left:-20px;}div.vs-blog .col,div.vs-blog .col-1,div.vs-blog .col-10,div.vs-blog .col-11,div.vs-blog .col-12,div.vs-blog .col-2,div.vs-blog .col-3,div.vs-blog .col-4,div.vs-blog .col-5,div.vs-blog .col-6,div.vs-blog .col-7,div.vs-blog .col-8,div.vs-blog .col-9,div.vs-blog .col-auto,div.vs-blog .col-lg,div.vs-blog .col-lg-1,div.vs-blog .col-lg-10,div.vs-blog .col-lg-11,div.vs-blog .col-lg-12,div.vs-blog .col-lg-2,div.vs-blog .col-lg-3,div.vs-blog .col-lg-4,div.vs-blog .col-lg-5,div.vs-blog .col-lg-6,div.vs-blog .col-lg-7,div.vs-blog .col-lg-8,div.vs-blog .col-lg-9,div.vs-blog .col-lg-auto,div.vs-blog .col-md,div.vs-blog .col-md-1,div.vs-blog .col-md-10,div.vs-blog .col-md-11,div.vs-blog .col-md-12,div.vs-blog .col-md-2,div.vs-blog .col-md-3,div.vs-blog .col-md-4,div.vs-blog .col-md-5,div.vs-blog .col-md-6,div.vs-blog .col-md-7,div.vs-blog .col-md-8,div.vs-blog .col-md-9,div.vs-blog .col-md-auto,div.vs-blog .col-sm,div.vs-blog .col-sm-1,div.vs-blog .col-sm-10,div.vs-blog .col-sm-11,div.vs-blog .col-sm-12,div.vs-blog .col-sm-2,div.vs-blog .col-sm-3,div.vs-blog .col-sm-4,div.vs-blog .col-sm-5,div.vs-blog .col-sm-6,div.vs-blog .col-sm-7,div.vs-blog .col-sm-8,div.vs-blog .col-sm-9,div.vs-blog .col-sm-auto,div.vs-blog .col-xl,div.vs-blog .col-xl-1,div.vs-blog .col-xl-10,div.vs-blog .col-xl-11,div.vs-blog .col-xl-12,div.vs-blog .col-xl-2,div.vs-blog .col-xl-3,div.vs-blog .col-xl-4,div.vs-blog .col-xl-5,div.vs-blog .col-xl-6,div.vs-blog .col-xl-7,div.vs-blog .col-xl-8,div.vs-blog .col-xl-9,div.vs-blog .col-xl-auto{padding-right:20px;padding-left:20px;}@media(min-width:1200px){div.vs-blog .container{max-width:1080px;}}div.vs-blog .f-85{font-size:.85em;}div.vs-blog .nav-tabs{margin-bottom:20px;border-bottom:3px solid #000;}div.vs-blog .nav-tabs .nav-item{margin-bottom:-16px;background:#fff;border-left:5px solid #fff;}div.vs-blog .nav-tabs .nav-item .tab-title{font-weight:700;line-height:1.1;padding:7px;margin-left:-14px;}div.vs-blog .nav-tabs .nav-link{font-size:.8em;border-radius:50px;padding:.25rem .5rem;font-weight:700;color:#808080;}div.vs-blog .nav-tabs .nav-link:hover,div.vs-blog .nav-tabs .nav-link:focus{background:#eee;}div.vs-blog .nav-tabs .nav-link.active,div.vs-blog .nav-tabs .nav-item.show .nav-link{background:#000;border-color:#fff;color:#fff;border-radius:50px;}div.vs-blog .pb-5,div.vs-blog .py-5{padding-bottom:4rem !important;}div.vs-blog .pt-5,div.vs-blog .py-5{padding-top:4rem !important;}div.vs-blog footer{font-size:.8em;line-height:2;}div.vs-blog footer .seperator{padding:0 5px;opacity:.5;}div.vs-blog header{position:fixed;width:100%;top:0;left:0;z-index:100;background:#f8f9fa;}div.vs-blog header .navbar-blog{padding:20px 0;}div.vs-blog header .navbar-blog ul li a{color:#000;}div.vs-blog section.hero-section{padding:0;}div.vs-blog section.hero-section .hero-articles{position:relative;overflow:hidden;}div.vs-blog section.hero-section .hero-articles .hero-content{position:absolute;left:12%;right:12%;bottom:80px;z-index:4;text-align:center;}div.vs-blog section.hero-section .hero-articles .hero-content h2{margin-top:0;font-size:2.5em;font-weight:bold;}div.vs-blog section.hero-section .hero-articles .hero-content a{color:#fff;text-shadow:0 0 20px rgba(0,0,0,.5);}div.vs-blog section.hero-section .hero-articles .hero-content p{color:#fff;}div.vs-blog section.hero-section .hero-articles .tags .tag{background:rgba(208,208,208,.3);color:#fff !important;}div.vs-blog section.hero-section .hero-articles .tags .tag:hover{background:#fff;color:#000 !important;}div.vs-blog section.hero-section .hero-articles .article-owner{text-align:center;position:relative;z-index:12;}div.vs-blog section.hero-section .hero-articles .article-owner .article-infos{color:#000;}div.vs-blog section.hero-section .hero-articles .article-owner .article-infos a{color:#000;}div.vs-blog section.hero-section .hero-articles .article-owner .article-infos .seperator{margin:0 4px;color:rgba(255,255,255,.2);}div.vs-blog section.hero-section .hero-articles .article-owner .article-infos img.article-avatar{width:64px;margin:-25px 10px 0 0;border:3px solid #fff;display:inline-block;border-radius:50%;}div.vs-blog section.hero-section .hero-articles .img-container{background:#000;border-top-left-radius:0;border-top-right-radius:0;}div.vs-blog section.hero-section .hero-articles .img-container img{filter:grayscale(10%);}div.vs-blog section.hero-section .hero-articles .img-container::after{content:"";display:block;position:absolute;z-index:1;bottom:0;width:100%;top:1% !important;background:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.91) 89%,rgba(0,0,0,.93) 93%) !important;transition:.2s all ease-in-out;opacity:.9;}div.vs-blog section.hero-section .hero-articles:hover .img-container::after{opacity:1;}div.vs-blog .box-articles{padding:0 0 40px 0;}div.vs-blog .box-articles+.box-articles{padding:40px 0;border-top:1px solid #f5f5f5;border-bottom:1px solid #f5f5f5;margin-top:-1px;}div.vs-blog .box-articles h3{margin:10px 0;}div.vs-blog .box-articles h3 a{font-weight:700;}div.vs-blog .box-articles .article-owner .article-infos{color:#000;}div.vs-blog .box-articles .article-owner .article-infos a{color:rgba(0,0,0,.6);}div.vs-blog .box-articles .article-owner .article-infos .seperator{margin:0 4px;color:rgba(0,0,0,.2);}div.vs-blog .box-articles .article-owner .article-infos img.article-avatar{width:30px;margin:-1px 4px 0 0;display:inline-block;border-radius:50%;}div.vs-blog .card-articles .card-content{padding:10px 0 10px;}div.vs-blog .card-articles .card-content h3{margin:10px 0;}div.vs-blog .card-articles .card-content h3 a{font-weight:700;}div.vs-blog .card-articles .article-owner{text-align:left;}div.vs-blog .card-articles .article-owner .article-infos{color:#000;}div.vs-blog .card-articles .article-owner .article-infos a{color:rgba(0,0,0,.6);}div.vs-blog .card-articles .article-owner .article-infos .seperator{margin:0 4px;color:rgba(0,0,0,.2);}div.vs-blog .card-articles .article-owner .article-infos img.article-avatar{width:30px;margin:-1px 4px 0 0;display:inline-block;border-radius:50%;}div.vs-blog .article-owner{font-size:.85em;}div.vs-blog .user-link-icons{position:absolute;right:18px;top:15px;z-index:3;}div.vs-blog .user-link-icons a{display:inline-block;color:#eee;margin-left:12px;font-size:1.25em;}div.vs-blog .user-link-icons a:hover{color:#fff;}div.vs-blog .tags{margin:5px 0;}div.vs-blog .tags .tag{display:inline-block;padding:0 6px;background:rgba(208,208,208,.3);border-radius:30px;margin:4px 1px;color:#b1b1b1 !important;font-size:.64em;line-height:1.6em;text-transform:uppercase;}div.vs-blog .tags .tag:hover{background:#000;color:#fff !important;}div.vs-blog .popular-tags a{display:block;padding:10px 15px;background:#fff;margin-bottom:2px;font-size:.85em;}div.vs-blog .popular-tags a:hover{background:#f5f5f5;}div.vs-blog .popular-tags a span{float:right;opacity:.3;font-size:.85em;}div.vs-blog .img-container{position:relative;overflow:hidden;border-radius:4px;}div.vs-blog .sidebox .sideboxes{padding:30px;background:#fafafa;}div.vs-blog .post-detail h1{padding:0 0;line-height:1.25em;font-size:3.5em;}div.vs-blog .post-detail .article-owner{text-align:center;position:relative;z-index:12;}div.vs-blog .post-detail .article-owner .article-infos{color:#000;}div.vs-blog .post-detail .article-owner .article-infos a{color:#000;color:rgba(0,0,0,.8);}div.vs-blog .post-detail .article-owner .article-infos .seperator{margin:0 4px;color:rgba(0,0,0,.2);}div.vs-blog .post-detail .article-owner .article-infos img.article-avatar{width:64px;margin:-20px 10px 0 0;display:inline-block;border-radius:50%;border:3px solid #fff;}div.vs-blog .post-detail .post-content{font-size:1.125em;}div.vs-blog .post-detail .post-content .post-img-container{margin:50px -80px 20px;overflow:hidden;border-radius:4px;}div.vs-blog .post-detail .post-content .lead{font-size:1.125em;color:#111;}div.vs-blog .comment-avatar{max-width:64px;}div.vs-blog .answer-avatar{max-width:48px;}div.vs-blog .media{font-size:.95em;}div.vs-blog .media .media{font-size:.95em;}div.vs-blog .comment-area .comment-owner span{font-weight:300;color:#999;font-size:.8em;}div.vs-blog .comment-area>.media{padding:30px 0;border-bottom:1px solid #f1f1f1;}div.vs-blog .comment-area>.media .media{padding:20px 0;}div.vs-blog .comment-area .comment-buttons{background:#f8f9fa;border-bottom:1px solid #f1f1f1;padding:6px 10px;font-size:.85em;}div.vs-blog .comment-area .comment-buttons .seperator{color:#ddd;margin:0 8px;}div.vs-blog .comment-area .comment-buttons .count{color:#fff;background:#ddd;margin-left:5px;padding:1px 3px;font-size:10px;border-radius:3px;}div.vs-blog .comment-area .comment-buttons .count.count-up{background:#999;}div.vs-blog .comment-area p{margin-bottom:6px;}div.vs-blog .comment-area .comment-avatar{width:64px;}div.vs-blog .comment-area .answer-avatar{width:48px;}@media(min-width:767px){div.vs-blog .box-articles .img-container{position:relative;overflow:hidden;}div.vs-blog .box-articles .img-container img{position:absolute;left:50%;top:50%;height:100%;width:auto;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);max-width:initial;}div.vs-blog .box-articles .img-container img.portrait{width:100%;height:auto;}} \ No newline at end of file +div.vs-blog{position:relative;background:#fff;padding:0 30px;font-family:'Open Sans',Helvetica,Arial,sans-serif;font-size:14px;}div.vs-blog a,div.vs-blog a:hover{text-decoration:none;color:#000;}div.vs-blog p{color:#444;font-family:'PT Sans','Times New Roman',Times,serif;}div.vs-blog h1,div.vs-blog h2,div.vs-blog h3,div.vs-blog h4,div.vs-blog h5,div.vs-blog h6,div.vs-blog .tab-title{font-family:Helvetica,Roboto,sans-serif;font-weight:700;}div.vs-blog h1{font-size:2.25em;margin:1.5rem 0 .75rem;}div.vs-blog h2,div.vs-blog .tab-title{font-size:1.75em;margin:1.5rem 0 .75rem;}div.vs-blog h3{font-size:1.5em;margin:1.5rem 0 .75rem;}div.vs-blog h4{font-size:1.25em;margin:1.5rem 0 .75rem;}div.vs-blog h5{font-size:1em;}div.vs-blog h6{font-size:1em;}div.vs-blog .lead{font-size:1.1rem;font-weight:300;}div.vs-blog img{max-width:100%;}div.vs-blog input,div.vs-blog select,div.vs-blog textarea,div.vs-blog .form-control,div.vs-blog .btn{border-radius:0;}div.vs-blog .navbar-toggler{background:#0ff;}div.vs-blog .no-border{border:0;}div.vs-blog .btn-rounded{border-radius:30px;}div.vs-blog .list-group .list-group-item{position:relative;display:block;padding:0 0 20px 0;background:none;border-radius:0;border:0;}div.vs-blog .list-group .list-group-item:hover{background:none;}div.vs-blog .list-group .list-group-item+.list-group-item{border-top:1px solid #f5f5f5;padding:20px 0;}div.vs-blog .list-group .list-group-item h3{margin-top:0;}div.vs-blog .list-group.small-list .list-group-item{padding:10px 0;}div.vs-blog .list-group.small-list .list-group-item+.list-group-item{padding:10px 0;}div.vs-blog .font-75{font-size:.75em;}div.vs-blog .font-85{font-size:.85em;}div.vs-blog .font-92{font-size:.92em;}div.vs-blog .font-100{font-size:1em;}div.vs-blog .font-125{font-size:1.25em;}div.vs-blog .vs-blog-title{padding-bottom:15px;margin-bottom:25px;border-bottom:1px solid #ddd;}div.vs-blog .vs-blog-title h1,div.vs-blog .vs-blog-title h2,div.vs-blog .vs-blog-title h3,div.vs-blog .vs-blog-title h4,div.vs-blog .vs-blog-title h5,div.vs-blog .vs-blog-title h6{margin:0;padding:0;}div.vs-blog .vs-footer{padding-top:15px;margin-top:25px;border-top:1px solid #ddd;}div.vs-blog .vs-seperator{padding:0 4px;opacity:.3;}div.vs-blog .hero-section{padding:0;}div.vs-blog .hero-section .hero-articles{position:relative;overflow:hidden;}div.vs-blog .hero-section .hero-articles .hero-content{position:absolute;left:12%;right:12%;bottom:80px;z-index:4;text-align:center;}div.vs-blog .hero-section .hero-articles .hero-content h2{margin-top:0;font-size:2.5em;font-weight:bold;}div.vs-blog .hero-section .hero-articles .hero-content a{color:#fff;text-shadow:0 0 20px rgba(0,0,0,.5);}div.vs-blog .hero-section .hero-articles .hero-content p{color:#fff;}div.vs-blog .hero-section .hero-articles .tags .tag{background:rgba(208,208,208,.3);color:#fff !important;}div.vs-blog .hero-section .hero-articles .tags .tag:hover{background:#fff;color:#000 !important;}div.vs-blog .hero-section .hero-articles .article-owner{text-align:center;position:relative;z-index:12;}div.vs-blog .hero-section .hero-articles .article-owner .article-infos{color:#000;}div.vs-blog .hero-section .hero-articles .article-owner .article-infos a{color:#000;}div.vs-blog .hero-section .hero-articles .article-owner .article-infos .seperator{margin:0 4px;color:rgba(255,255,255,.2);}div.vs-blog .hero-section .hero-articles .article-owner .article-infos img.article-avatar{width:64px;margin:-25px 10px 0 0;border:3px solid #fff;display:inline-block;border-radius:50%;}div.vs-blog .hero-section .hero-articles .img-container{background:#000;}div.vs-blog .hero-section .hero-articles .img-container img{filter:grayscale(10%);}div.vs-blog .hero-section .hero-articles .img-container::after{content:"";display:block;position:absolute;z-index:1;bottom:0;width:100%;top:1% !important;background:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.91) 89%,rgba(0,0,0,.93) 93%) !important;transition:.2s all ease-in-out;opacity:.9;}div.vs-blog .hero-section .hero-articles:hover .img-container::after{opacity:1;}div.vs-blog .article-owner .article-infos{color:#000;}div.vs-blog .article-owner .article-infos a{color:rgba(0,0,0,.6);}div.vs-blog .article-owner .article-infos .seperator{margin:0 4px;color:rgba(0,0,0,.2);}div.vs-blog .article-owner .article-infos img.article-avatar{width:30px;margin:-1px 4px 0 0;display:inline-block;border-radius:50%;}div.vs-blog .card-articles .card-content{padding:10px 0 10px;}div.vs-blog .card-articles .card-content h3{margin:10px 0;}div.vs-blog .card-articles .card-content h3 a{font-weight:700;}div.vs-blog .card-articles .article-owner{text-align:left;}div.vs-blog .card-articles .article-owner .article-infos{color:#000;}div.vs-blog .card-articles .article-owner .article-infos a{color:rgba(0,0,0,.6);}div.vs-blog .card-articles .article-owner .article-infos .seperator{margin:0 4px;color:rgba(0,0,0,.2);}div.vs-blog .card-articles .article-owner .article-infos img.article-avatar{width:30px;margin:-1px 4px 0 0;display:inline-block;border-radius:50%;}div.vs-blog .article-owner{font-size:.85em;}div.vs-blog .user-link-icons{position:absolute;right:18px;top:15px;z-index:3;}div.vs-blog .user-link-icons a{display:inline-block;color:#eee;margin-left:12px;font-size:1.25em;}div.vs-blog .user-link-icons a:hover{color:#fff;}div.vs-blog .tags .tag{display:inline-block;padding:2px 8px;background:rgba(208,208,208,.3);border-radius:30px;margin:0 1px 3px 0;color:#b1b1b1 !important;font-size:.7em;line-height:1.6em;text-transform:uppercase;}div.vs-blog .tags .tag:hover{background:#000;color:#fff !important;}div.vs-blog .popular-tags a{display:block;font-size:.9em;}div.vs-blog .popular-tags a span{float:right;opacity:.3;font-size:.9em;}div.vs-blog .img-container{position:relative;overflow:hidden;border-radius:4px;}div.vs-blog .post-detail h1{padding:0 0;line-height:1.25em;font-size:3.5em;}div.vs-blog .post-detail .article-owner{text-align:center;position:relative;z-index:12;}div.vs-blog .post-detail .article-owner .article-infos{color:#000;}div.vs-blog .post-detail .article-owner .article-infos a{color:#000;color:rgba(0,0,0,.8);}div.vs-blog .post-detail .article-owner .article-infos .seperator{margin:0 4px;color:rgba(0,0,0,.2);}div.vs-blog .post-detail .article-owner .article-infos img.article-avatar{width:64px;margin:-20px 10px 0 0;display:inline-block;border-radius:50%;border:3px solid #fff;}div.vs-blog .post-detail .post-content{font-size:1.125em;}div.vs-blog .post-detail .post-content .post-img-container{margin:50px -80px 20px;overflow:hidden;border-radius:4px;}div.vs-blog .post-detail .post-content .lead{font-size:1.125em;color:#111;}div.vs-blog .comment-avatar{max-width:64px;}div.vs-blog .answer-avatar{max-width:48px;}div.vs-blog .media{font-size:.95em;}div.vs-blog .media .media{font-size:.95em;}div.vs-blog .comment-area .comment-owner{margin-bottom:2px;}div.vs-blog .comment-area .comment-owner span{font-weight:300;color:#999;font-size:.8em;}div.vs-blog .comment-area>.media{padding:30px 0;border-bottom:1px solid #f1f1f1;}div.vs-blog .comment-area>.media .media{padding:20px 0;}div.vs-blog .comment-area .comment-buttons{padding:4px 8px;}div.vs-blog .comment-area .comment-buttons .seperator{color:#ddd;margin:0 8px;}div.vs-blog .comment-area .comment-buttons .count{color:#fff;background:#ddd;margin-left:5px;padding:1px 3px;font-size:10px;border-radius:3px;}div.vs-blog .comment-area .comment-buttons .count.count-up{background:#999;}div.vs-blog .comment-area .comment-buttons a{opacity:.5;}div.vs-blog .comment-area .comment-buttons a:hover{opacity:.75;}div.vs-blog .comment-area p{margin-bottom:6px;}div.vs-blog .comment-area .comment-avatar{width:64px;}div.vs-blog .comment-area .answer-avatar{width:48px;}@media(min-width:767px){div.vs-blog .box-articles .img-container{position:relative;overflow:hidden;}div.vs-blog .box-articles .img-container img{position:absolute;left:50%;top:50%;height:100%;width:auto;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);max-width:initial;}div.vs-blog .box-articles .img-container img.portrait{width:100%;height:auto;}} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.scss b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.scss index adc46bb45a..83d17292d5 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.scss +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blog/Shared/Styles/blog.scss @@ -1,11 +1,13 @@ div.vs-blog { position: relative; - background: #fff; - font-family: Helvetica, sans-serif; - font-size: 15px; + background: white; + padding: 0 30px; + font-family: 'Open Sans', Helvetica, Arial, sans-serif; + font-size: 14px; @import "bootstrap-overwrite.scss"; - @import "header.scss"; - @import "home.scss"; - @import "post.scss"; - @import "custom.scss"; -} + @import "header.scss"; + @import "home.scss"; + @import "post.scss"; + @import "custom.scss"; +} + \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj index 1895099fdb..7fedec3f33 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj +++ b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj @@ -36,6 +36,8 @@ + + diff --git a/modules/blogging/src/Volo.Blogging.Web/compilerconfig.json b/modules/blogging/src/Volo.Blogging.Web/compilerconfig.json index 68749f502f..bda7a0c0bd 100644 --- a/modules/blogging/src/Volo.Blogging.Web/compilerconfig.json +++ b/modules/blogging/src/Volo.Blogging.Web/compilerconfig.json @@ -2,5 +2,9 @@ { "outputFile": "Pages/Blog/Shared/Styles/blog.css", "inputFile": "Pages/Blog/Shared/Styles/blog.scss" + }, + { + "outputFile": "Pages/Blog/Shared/Styles/_home.css", + "inputFile": "Pages/Blog/Shared/Styles/_home.scss" } ] \ No newline at end of file