mirror of https://github.com/abpframework/abp.git
65 changed files with 2165 additions and 756 deletions
@ -0,0 +1,625 @@ |
|||
// <auto-generated />
|
|||
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<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<string>("ConcurrencyStamp"); |
|||
|
|||
b.Property<string>("Name") |
|||
.IsRequired() |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<string>("NormalizedName") |
|||
.IsRequired() |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<Guid?>("TenantId"); |
|||
|
|||
b.HasKey("Id"); |
|||
|
|||
b.HasIndex("NormalizedName"); |
|||
|
|||
b.ToTable("AbpRoles"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => |
|||
{ |
|||
b.Property<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<string>("ClaimType") |
|||
.IsRequired() |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<string>("ClaimValue") |
|||
.HasMaxLength(1024); |
|||
|
|||
b.Property<Guid>("RoleId"); |
|||
|
|||
b.Property<Guid?>("TenantId"); |
|||
|
|||
b.HasKey("Id"); |
|||
|
|||
b.HasIndex("RoleId"); |
|||
|
|||
b.ToTable("AbpRoleClaims"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => |
|||
{ |
|||
b.Property<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<int>("AccessFailedCount") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("AccessFailedCount") |
|||
.HasDefaultValue(0); |
|||
|
|||
b.Property<string>("ConcurrencyStamp") |
|||
.IsRequired() |
|||
.HasColumnName("ConcurrencyStamp") |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<string>("Email") |
|||
.HasColumnName("Email") |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<bool>("EmailConfirmed") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("EmailConfirmed") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<string>("ExtraProperties") |
|||
.HasColumnName("ExtraProperties"); |
|||
|
|||
b.Property<bool>("LockoutEnabled") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("LockoutEnabled") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<DateTimeOffset?>("LockoutEnd"); |
|||
|
|||
b.Property<string>("NormalizedEmail") |
|||
.HasColumnName("NormalizedEmail") |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<string>("NormalizedUserName") |
|||
.IsRequired() |
|||
.HasColumnName("NormalizedUserName") |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<string>("PasswordHash") |
|||
.HasColumnName("PasswordHash") |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<string>("PhoneNumber") |
|||
.HasColumnName("PhoneNumber") |
|||
.HasMaxLength(16); |
|||
|
|||
b.Property<bool>("PhoneNumberConfirmed") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("PhoneNumberConfirmed") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<string>("SecurityStamp") |
|||
.IsRequired() |
|||
.HasColumnName("SecurityStamp") |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<Guid?>("TenantId") |
|||
.HasColumnName("TenantId"); |
|||
|
|||
b.Property<bool>("TwoFactorEnabled") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("TwoFactorEnabled") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<string>("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<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<string>("ClaimType") |
|||
.IsRequired() |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<string>("ClaimValue") |
|||
.HasMaxLength(1024); |
|||
|
|||
b.Property<Guid?>("TenantId"); |
|||
|
|||
b.Property<Guid>("UserId"); |
|||
|
|||
b.HasKey("Id"); |
|||
|
|||
b.HasIndex("UserId"); |
|||
|
|||
b.ToTable("AbpUserClaims"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => |
|||
{ |
|||
b.Property<Guid>("UserId"); |
|||
|
|||
b.Property<string>("LoginProvider") |
|||
.HasMaxLength(64); |
|||
|
|||
b.Property<string>("ProviderDisplayName") |
|||
.HasMaxLength(128); |
|||
|
|||
b.Property<string>("ProviderKey") |
|||
.IsRequired() |
|||
.HasMaxLength(196); |
|||
|
|||
b.Property<Guid?>("TenantId"); |
|||
|
|||
b.HasKey("UserId", "LoginProvider"); |
|||
|
|||
b.HasIndex("LoginProvider", "ProviderKey"); |
|||
|
|||
b.ToTable("AbpUserLogins"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => |
|||
{ |
|||
b.Property<Guid>("UserId"); |
|||
|
|||
b.Property<Guid>("RoleId"); |
|||
|
|||
b.Property<Guid?>("TenantId"); |
|||
|
|||
b.HasKey("UserId", "RoleId"); |
|||
|
|||
b.HasIndex("RoleId", "UserId"); |
|||
|
|||
b.ToTable("AbpUserRoles"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => |
|||
{ |
|||
b.Property<Guid>("UserId"); |
|||
|
|||
b.Property<string>("LoginProvider") |
|||
.HasMaxLength(128); |
|||
|
|||
b.Property<string>("Name"); |
|||
|
|||
b.Property<Guid?>("TenantId"); |
|||
|
|||
b.Property<string>("Value"); |
|||
|
|||
b.HasKey("UserId", "LoginProvider", "Name"); |
|||
|
|||
b.ToTable("AbpUserTokens"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => |
|||
{ |
|||
b.Property<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<string>("Name") |
|||
.IsRequired() |
|||
.HasMaxLength(128); |
|||
|
|||
b.Property<string>("ProviderKey") |
|||
.IsRequired() |
|||
.HasMaxLength(64); |
|||
|
|||
b.Property<string>("ProviderName") |
|||
.IsRequired() |
|||
.HasMaxLength(64); |
|||
|
|||
b.Property<Guid?>("TenantId"); |
|||
|
|||
b.HasKey("Id"); |
|||
|
|||
b.HasIndex("Name", "ProviderName", "ProviderKey"); |
|||
|
|||
b.ToTable("AbpPermissionGrants"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => |
|||
{ |
|||
b.Property<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<string>("Name") |
|||
.IsRequired() |
|||
.HasMaxLength(128); |
|||
|
|||
b.Property<string>("ProviderKey") |
|||
.HasMaxLength(64); |
|||
|
|||
b.Property<string>("ProviderName") |
|||
.HasMaxLength(64); |
|||
|
|||
b.Property<string>("Value") |
|||
.IsRequired() |
|||
.HasMaxLength(2048); |
|||
|
|||
b.HasKey("Id"); |
|||
|
|||
b.HasIndex("Name", "ProviderName", "ProviderKey"); |
|||
|
|||
b.ToTable("AbpSettings"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Blogging.Blogs.Blog", b => |
|||
{ |
|||
b.Property<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<DateTime>("CreationTime") |
|||
.HasColumnName("CreationTime"); |
|||
|
|||
b.Property<Guid?>("CreatorId") |
|||
.HasColumnName("CreatorId"); |
|||
|
|||
b.Property<Guid?>("DeleterId") |
|||
.HasColumnName("DeleterId"); |
|||
|
|||
b.Property<DateTime?>("DeletionTime") |
|||
.HasColumnName("DeletionTime"); |
|||
|
|||
b.Property<string>("Description") |
|||
.HasColumnName("Description") |
|||
.HasMaxLength(1024); |
|||
|
|||
b.Property<bool>("IsDeleted") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("IsDeleted") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<DateTime?>("LastModificationTime") |
|||
.HasColumnName("LastModificationTime"); |
|||
|
|||
b.Property<Guid?>("LastModifierId") |
|||
.HasColumnName("LastModifierId"); |
|||
|
|||
b.Property<string>("Name") |
|||
.IsRequired() |
|||
.HasColumnName("Name") |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<string>("ShortName") |
|||
.IsRequired() |
|||
.HasColumnName("ShortName") |
|||
.HasMaxLength(32); |
|||
|
|||
b.HasKey("Id"); |
|||
|
|||
b.ToTable("BlgBlogs"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Blogging.Comments.Comment", b => |
|||
{ |
|||
b.Property<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<DateTime>("CreationTime") |
|||
.HasColumnName("CreationTime"); |
|||
|
|||
b.Property<Guid?>("CreatorId") |
|||
.HasColumnName("CreatorId"); |
|||
|
|||
b.Property<Guid?>("DeleterId") |
|||
.HasColumnName("DeleterId"); |
|||
|
|||
b.Property<DateTime?>("DeletionTime") |
|||
.HasColumnName("DeletionTime"); |
|||
|
|||
b.Property<bool>("IsDeleted") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("IsDeleted") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<DateTime?>("LastModificationTime") |
|||
.HasColumnName("LastModificationTime"); |
|||
|
|||
b.Property<Guid?>("LastModifierId") |
|||
.HasColumnName("LastModifierId"); |
|||
|
|||
b.Property<Guid>("PostId") |
|||
.HasColumnName("PostId"); |
|||
|
|||
b.Property<Guid?>("RepliedCommentId") |
|||
.HasColumnName("RepliedCommentId"); |
|||
|
|||
b.Property<string>("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<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<Guid>("BlogId") |
|||
.HasColumnName("BlogId"); |
|||
|
|||
b.Property<string>("Content") |
|||
.HasColumnName("Content") |
|||
.HasMaxLength(1048576); |
|||
|
|||
b.Property<string>("CoverImage") |
|||
.IsRequired() |
|||
.HasColumnName("CoverImage"); |
|||
|
|||
b.Property<DateTime>("CreationTime") |
|||
.HasColumnName("CreationTime"); |
|||
|
|||
b.Property<Guid?>("CreatorId") |
|||
.HasColumnName("CreatorId"); |
|||
|
|||
b.Property<Guid?>("DeleterId") |
|||
.HasColumnName("DeleterId"); |
|||
|
|||
b.Property<DateTime?>("DeletionTime") |
|||
.HasColumnName("DeletionTime"); |
|||
|
|||
b.Property<bool>("IsDeleted") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("IsDeleted") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<DateTime?>("LastModificationTime") |
|||
.HasColumnName("LastModificationTime"); |
|||
|
|||
b.Property<Guid?>("LastModifierId") |
|||
.HasColumnName("LastModifierId"); |
|||
|
|||
b.Property<int>("ReadCount"); |
|||
|
|||
b.Property<string>("Title") |
|||
.IsRequired() |
|||
.HasColumnName("Title") |
|||
.HasMaxLength(512); |
|||
|
|||
b.Property<string>("Url") |
|||
.IsRequired() |
|||
.HasColumnName("Url") |
|||
.HasMaxLength(64); |
|||
|
|||
b.HasKey("Id"); |
|||
|
|||
b.HasIndex("BlogId"); |
|||
|
|||
b.ToTable("BlgPosts"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Blogging.Posts.PostTag", b => |
|||
{ |
|||
b.Property<Guid>("PostId") |
|||
.HasColumnName("PostId"); |
|||
|
|||
b.Property<Guid>("TagId") |
|||
.HasColumnName("TagId"); |
|||
|
|||
b.Property<DateTime>("CreationTime"); |
|||
|
|||
b.Property<Guid?>("CreatorId"); |
|||
|
|||
b.HasKey("PostId", "TagId"); |
|||
|
|||
b.HasIndex("TagId"); |
|||
|
|||
b.ToTable("BlgPostTags"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Blogging.Tagging.Tag", b => |
|||
{ |
|||
b.Property<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<DateTime>("CreationTime") |
|||
.HasColumnName("CreationTime"); |
|||
|
|||
b.Property<Guid?>("CreatorId") |
|||
.HasColumnName("CreatorId"); |
|||
|
|||
b.Property<Guid?>("DeleterId") |
|||
.HasColumnName("DeleterId"); |
|||
|
|||
b.Property<DateTime?>("DeletionTime") |
|||
.HasColumnName("DeletionTime"); |
|||
|
|||
b.Property<string>("Description") |
|||
.HasColumnName("Description") |
|||
.HasMaxLength(512); |
|||
|
|||
b.Property<bool>("IsDeleted") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("IsDeleted") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<DateTime?>("LastModificationTime") |
|||
.HasColumnName("LastModificationTime"); |
|||
|
|||
b.Property<Guid?>("LastModifierId") |
|||
.HasColumnName("LastModifierId"); |
|||
|
|||
b.Property<string>("Name") |
|||
.IsRequired() |
|||
.HasColumnName("Name") |
|||
.HasMaxLength(64); |
|||
|
|||
b.Property<int>("UsageCount") |
|||
.HasColumnName("UsageCount"); |
|||
|
|||
b.HasKey("Id"); |
|||
|
|||
b.ToTable("BlgTags"); |
|||
}); |
|||
|
|||
modelBuilder.Entity("Volo.Blogging.Users.BlogUser", b => |
|||
{ |
|||
b.Property<Guid>("Id") |
|||
.ValueGeneratedOnAdd(); |
|||
|
|||
b.Property<string>("Email") |
|||
.HasColumnName("Email") |
|||
.HasMaxLength(256); |
|||
|
|||
b.Property<bool>("EmailConfirmed") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("EmailConfirmed") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<string>("ExtraProperties") |
|||
.HasColumnName("ExtraProperties"); |
|||
|
|||
b.Property<string>("PhoneNumber") |
|||
.HasColumnName("PhoneNumber") |
|||
.HasMaxLength(16); |
|||
|
|||
b.Property<bool>("PhoneNumberConfirmed") |
|||
.ValueGeneratedOnAdd() |
|||
.HasColumnName("PhoneNumberConfirmed") |
|||
.HasDefaultValue(false); |
|||
|
|||
b.Property<Guid?>("TenantId") |
|||
.HasColumnName("TenantId"); |
|||
|
|||
b.Property<string>("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
|
|||
} |
|||
} |
|||
} |
|||
@ -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<Guid>(nullable: false), |
|||
TenantId = table.Column<Guid>(nullable: true), |
|||
UserName = table.Column<string>(maxLength: 256, nullable: false), |
|||
Email = table.Column<string>(maxLength: 256, nullable: true), |
|||
EmailConfirmed = table.Column<bool>(nullable: false, defaultValue: false), |
|||
PhoneNumber = table.Column<string>(maxLength: 16, nullable: true), |
|||
PhoneNumberConfirmed = table.Column<bool>(nullable: false, defaultValue: false), |
|||
ExtraProperties = table.Column<string>(nullable: true) |
|||
}, |
|||
constraints: table => |
|||
{ |
|||
table.PrimaryKey("PK_BlgUsers", x => x.Id); |
|||
}); |
|||
} |
|||
|
|||
protected override void Down(MigrationBuilder migrationBuilder) |
|||
{ |
|||
migrationBuilder.DropTable( |
|||
name: "BlgUsers"); |
|||
} |
|||
} |
|||
} |
|||
@ -1,9 +1,9 @@ |
|||
using System; |
|||
using Volo.Abp.Application.Dtos; |
|||
|
|||
namespace Volo.Blogging.Blogs |
|||
namespace Volo.Blogging.Blogs.Dtos |
|||
{ |
|||
public class BlogDto : EntityDto<Guid> |
|||
public class BlogDto : FullAuditedEntityDto<Guid> |
|||
{ |
|||
public string Name { get; set; } |
|||
|
|||
@ -1,7 +1,4 @@ |
|||
using System; |
|||
using Volo.Abp.Application.Dtos; |
|||
|
|||
namespace Volo.Blogging.Blogs |
|||
namespace Volo.Blogging.Blogs.Dtos |
|||
{ |
|||
public class CreateBlogDto |
|||
{ |
|||
@ -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; } |
|||
} |
|||
} |
|||
@ -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<Guid>, 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<string, object> ExtraProperties { get; protected set; } |
|||
|
|||
protected BlogUser() |
|||
{ |
|||
ExtraProperties = new Dictionary<string, object>(); |
|||
} |
|||
|
|||
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<string, object>(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
using Volo.Abp.Uow; |
|||
using Volo.Abp.Users; |
|||
|
|||
namespace Volo.Blogging.Users |
|||
{ |
|||
public class BlogUserLookupService : UserLookupService<BlogUser, IBlogUserRepository>, IBlogUserLookupService |
|||
{ |
|||
public BlogUserLookupService( |
|||
IBlogUserRepository userRepository, |
|||
IUnitOfWorkManager unitOfWorkManager) |
|||
: base( |
|||
userRepository, |
|||
unitOfWorkManager) |
|||
{ |
|||
} |
|||
|
|||
protected override BlogUser CreateUser(IUserData externalUser) |
|||
{ |
|||
return new BlogUser(externalUser); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
using Volo.Abp.Users; |
|||
|
|||
namespace Volo.Blogging.Users |
|||
{ |
|||
public interface IBlogUserLookupService : IUserLookupService<BlogUser> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -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<BlogUser, Guid>, IUserRepository<BlogUser> |
|||
{ |
|||
Task<List<BlogUser>> GetUsersAsync(int maxCount, string filter, CancellationToken cancellationToken = default); |
|||
} |
|||
} |
|||
@ -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<IBloggingDbContext, BlogUser>, IBlogUserRepository |
|||
{ |
|||
public EfCoreBlogUserRepository(IDbContextProvider<IBloggingDbContext> dbContextProvider) |
|||
: base(dbContextProvider) |
|||
{ |
|||
|
|||
} |
|||
|
|||
public async Task<List<BlogUser>> GetUsersAsync(int maxCount, string filter, CancellationToken cancellationToken = default) |
|||
{ |
|||
return await DbSet |
|||
.WhereIf( !string.IsNullOrWhiteSpace( filter), x=>x.UserName.Contains(filter)) |
|||
.Take(maxCount).ToListAsync(cancellationToken); |
|||
} |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
@ -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<PagedResultDto<BlogDto>> GetListPagedAsync(PagedAndSortedResultRequestDto input) |
|||
{ |
|||
return await _blogAppService.GetListPagedAsync(input); |
|||
} |
|||
|
|||
[HttpGet] |
|||
[Route("/all")] |
|||
public async Task<ListResultDto<BlogDto>> GetListAsync() |
|||
{ |
|||
return await _blogAppService.GetListAsync(); |
|||
} |
|||
|
|||
[HttpGet] |
|||
[Route("{shortName}")] |
|||
public async Task<BlogDto> GetByShortNameAsync(string shortName) |
|||
{ |
|||
return await _blogAppService.GetByShortNameAsync(shortName); |
|||
} |
|||
|
|||
[HttpGet] |
|||
[Route("{id}")] |
|||
public async Task<BlogDto> GetAsync(Guid id) |
|||
{ |
|||
return await _blogAppService.GetAsync(id); |
|||
} |
|||
|
|||
[HttpPost] |
|||
public async Task<BlogDto> Create(CreateBlogDto input) |
|||
{ |
|||
return await _blogAppService.Create(input); |
|||
} |
|||
|
|||
[HttpPut] |
|||
[Route("{id}")] |
|||
public async Task<BlogDto> Update(Guid id, UpdateBlogDto input) |
|||
{ |
|||
throw new NotImplementedException(); |
|||
} |
|||
|
|||
[HttpDelete] |
|||
public async Task Delete(Guid id) |
|||
{ |
|||
await _blogAppService.Delete(id); |
|||
} |
|||
} |
|||
} |
|||
@ -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; |
|||
} |
|||
|
|||
|
|||
<abp-dynamic-form submit-button="false" abp-model="Blog" asp-page="/Admin/Blogs/Create"> |
|||
<abp-modal size="@(AbpModalSize.Large)"> |
|||
<abp-modal-header title="@L["Create"].Value"></abp-modal-header> |
|||
<abp-modal-body> |
|||
<abp-form-content/> |
|||
</abp-modal-body> |
|||
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"> |
|||
</abp-modal-footer> |
|||
</abp-modal> |
|||
</abp-dynamic-form> |
|||
@ -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<BlogCreateModalView, CreateBlogDto>(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; } |
|||
|
|||
} |
|||
} |
|||
} |
|||
@ -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; |
|||
} |
|||
|
|||
|
|||
<abp-dynamic-form submit-button="false" abp-model="Blog" asp-page="/Admin/Blogs/Edit"> |
|||
<abp-modal size="@(AbpModalSize.Large)"> |
|||
<abp-modal-header title="@L["Create"].Value"></abp-modal-header> |
|||
<abp-modal-body> |
|||
<abp-form-content /> |
|||
</abp-modal-body> |
|||
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"> |
|||
</abp-modal-footer> |
|||
</abp-modal> |
|||
</abp-dynamic-form> |
|||
@ -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<BlogDto, BlogEditViewModel>(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; } |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
|||
@ -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 { |
|||
<abp-script src="/Pages/Admin/Blogs/index.js" /> |
|||
<abp-script src="/Pages/Admin/Blogs/create.js" /> |
|||
} |
|||
|
|||
<abp-card> |
|||
<abp-card-header> |
|||
<abp-row> |
|||
<abp-column size-md="_6"> |
|||
<h2>@L["Blogs"]</h2> |
|||
</abp-column> |
|||
<abp-column size-md="_6" class="text-right"> |
|||
@if (await Authorization.IsGrantedAsync(BloggingPermissions.Blogs.Create)) |
|||
{ |
|||
<abp-button icon="plus" text="@L["CreateNewBlog"].Value" button-type="Primary" id="CreateNewBlogButtonId"></abp-button> |
|||
} |
|||
</abp-column> |
|||
</abp-row> |
|||
</abp-card-header> |
|||
<abp-card-body> |
|||
<abp-table striped-rows="true" id="BlogsTable" class="nowrap"> |
|||
<thead> |
|||
<tr> |
|||
<th>@L["Actions"]</th> |
|||
<th>@L["Name"]</th> |
|||
<th>@L["ShortName"]</th> |
|||
<th>@L["CreationTime"]</th> |
|||
<th>@L["Description"]</th> |
|||
</tr> |
|||
</thead> |
|||
</abp-table> |
|||
</abp-card-body> |
|||
</abp-card> |
|||
@ -0,0 +1,12 @@ |
|||
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; |
|||
|
|||
namespace Volo.Blogging.Pages.Admin.Blogs |
|||
{ |
|||
public class IndexModel : AbpPageModel |
|||
{ |
|||
public void OnGet() |
|||
{ |
|||
|
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
var abp = abp || {}; |
|||
$(function () { |
|||
abp.modals.blogCreate = function () { |
|||
var initModal = function (publicApi, args) { |
|||
var $form = publicApi.getForm(); |
|||
|
|||
|
|||
}; |
|||
|
|||
return { |
|||
initModal: initModal |
|||
} |
|||
}; |
|||
}); |
|||
@ -0,0 +1,14 @@ |
|||
var abp = abp || {}; |
|||
$(function () { |
|||
abp.modals.blogEdit = function () { |
|||
var initModal = function (publicApi, args) { |
|||
var $form = publicApi.getForm(); |
|||
|
|||
|
|||
}; |
|||
|
|||
return { |
|||
initModal: initModal |
|||
} |
|||
}; |
|||
}); |
|||
@ -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(); |
|||
}); |
|||
|
|||
}); |
|||
@ -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": [] |
|||
} |
|||
@ -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 */ |
|||
@ -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; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.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; |
|||
} |
|||
@ -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; } |
|||
|
|||
@ -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;} |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -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"; |
|||
} |
|||
|
|||
Loading…
Reference in new issue