调整程序框架

This commit is contained in:
yubaolee 2015-05-23 12:10:53 +08:00
parent b4fc05a823
commit d2641d40fa
44 changed files with 434 additions and 635 deletions

View File

@ -9,7 +9,5 @@ namespace OpenAuth.App.DTO
{ {
public string UserId { get; set; } public string UserId { get; set; }
public string UserName { get; set; } public string UserName { get; set; }
public IList<string> UserRoleNames { get; set; }
} }
} }

View File

@ -26,12 +26,13 @@ namespace OpenAuth.App
{ {
_menuService = service; _menuService = service;
} }
public MenuForUserResponse LoadFor(MenuForUserRequest request) public MenuForUserResponse LoadMenus()
{ {
var response = new MenuForUserResponse(); var response = new MenuForUserResponse();
foreach (var menu in _menuService.GetMenuFor(request.UserId)) var user = LoginCacheApp.GetLogin();
if (user != null)
{ {
response.Menus.Add(menu); // response.Menus =
} }
return response; return response;
} }

View File

@ -55,6 +55,10 @@
<Project>{6108da8e-92a1-4abe-b9f5-26d64d55ca2c}</Project> <Project>{6108da8e-92a1-4abe-b9f5-26d64d55ca2c}</Project>
<Name>OpenAuth.Domain</Name> <Name>OpenAuth.Domain</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\OpenAuth.Infrastructure\OpenAuth.Infrastructure.csproj">
<Project>{adae08c0-de22-41f7-9f94-0e62ae327c25}</Project>
<Name>OpenAuth.Infrastructure</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@ -1,17 +1,16 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using OpenAuth.Domain.Utility;
namespace OpenAuth.Domain.Model namespace OpenAuth.Domain.Model
{ {
public partial class Button public partial class Button : EntityBase<string>, IAggregateRoot
{ {
public Button() public Button()
{ {
this.RoleMenuButtons = new List<RoleMenuButton>();
this.Menus = new List<Menu>(); this.Menus = new List<Menu>();
} }
public string ButtonId { get; set; }
public string FullName { get; set; } public string FullName { get; set; }
public string Img { get; set; } public string Img { get; set; }
public string Event { get; set; } public string Event { get; set; }
@ -20,7 +19,10 @@ namespace OpenAuth.Domain.Model
public string Description { get; set; } public string Description { get; set; }
public bool Enabled { get; set; } public bool Enabled { get; set; }
public Nullable<int> SortCode { get; set; } public Nullable<int> SortCode { get; set; }
public virtual ICollection<RoleMenuButton> RoleMenuButtons { get; set; } public virtual ICollection<Menu> Menus { get; set; }
public virtual ICollection<Menu> Menus { get; set; } protected override void Validate()
{
throw new NotImplementedException();
}
} }
} }

View File

@ -1,11 +1,16 @@
using OpenAuth.Domain.Utility;
namespace OpenAuth.Domain.Model namespace OpenAuth.Domain.Model
{ {
public partial class DataPermission public partial class DataPermission :EntityBase<string>, IAggregateRoot
{ {
public string Id { get; set; }
public string RoleId { get; set; } public string RoleId { get; set; }
public string ResourceId { get; set; } public string ResourceId { get; set; }
public string ObjectId { get; set; } public string ObjectId { get; set; }
public virtual Role Role { get; set; } public virtual Role Role { get; set; }
protected override void Validate()
{
throw new System.NotImplementedException();
}
} }
} }

View File

@ -1,9 +1,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using OpenAuth.Domain.Utility;
namespace OpenAuth.Domain.Model namespace OpenAuth.Domain.Model
{ {
public partial class Department public partial class Department : EntityBase<string>, IAggregateRoot
{ {
public Department() public Department()
{ {
@ -11,7 +12,6 @@ namespace OpenAuth.Domain.Model
this.Users = new List<User>(); this.Users = new List<User>();
} }
public string DepartmentId { get; set; }
public string ParentId { get; set; } public string ParentId { get; set; }
public string FullName { get; set; } public string FullName { get; set; }
public string Description { get; set; } public string Description { get; set; }
@ -20,5 +20,9 @@ namespace OpenAuth.Domain.Model
public bool DeleteMark { get; set; } public bool DeleteMark { get; set; }
public virtual ICollection<Role> Roles { get; set; } public virtual ICollection<Role> Roles { get; set; }
public virtual ICollection<User> Users { get; set; } public virtual ICollection<User> Users { get; set; }
protected override void Validate()
{
throw new NotImplementedException();
}
} }
} }

View File

@ -1,18 +1,22 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using OpenAuth.Domain.Utility;
namespace OpenAuth.Domain.Model namespace OpenAuth.Domain.Model
{ {
public partial class Menu public partial class Menu :EntityBase<string>, IAggregateRoot
{ {
public Menu() public Menu()
{ {
this.Buttons = new List<Button>(); this.Buttons = new List<Button>();
this.Roles = new List<Role>(); this.Roles = new List<Role>();
this.RoleMenuButtons = new List<RoleMenuButton>();
} }
public string MenuId { get; set; } protected override void Validate()
{
throw new NotImplementedException();
}
public string ParentId { get; set; } public string ParentId { get; set; }
public string FullName { get; set; } public string FullName { get; set; }
public string Description { get; set; } public string Description { get; set; }
@ -26,6 +30,5 @@ namespace OpenAuth.Domain.Model
public Nullable<int> SortCode { get; set; } public Nullable<int> SortCode { get; set; }
public virtual ICollection<Button> Buttons { get; set; } public virtual ICollection<Button> Buttons { get; set; }
public virtual ICollection<Role> Roles { get; set; } public virtual ICollection<Role> Roles { get; set; }
public virtual ICollection<RoleMenuButton> RoleMenuButtons { get; set; }
} }
} }

View File

@ -1,19 +1,23 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using OpenAuth.Domain.Utility;
namespace OpenAuth.Domain.Model namespace OpenAuth.Domain.Model
{ {
public partial class Role public partial class Role :EntityBase<string>, IAggregateRoot
{ {
public Role() public Role()
{ {
this.DataPermissions = new List<DataPermission>(); this.DataPermissions = new List<DataPermission>();
this.RoleMenus = new List<Menu>(); this.RoleMenus = new List<Menu>();
this.RoleMenuButtons = new List<RoleMenuButton>();
this.Users = new List<User>(); this.Users = new List<User>();
} }
public string RoleId { get; set; } protected override void Validate()
{
throw new NotImplementedException();
}
public string ParentId { get; set; } public string ParentId { get; set; }
public string FullName { get; set; } public string FullName { get; set; }
public string Category { get; set; } public string Category { get; set; }
@ -25,7 +29,6 @@ namespace OpenAuth.Domain.Model
public virtual ICollection<DataPermission> DataPermissions { get; set; } public virtual ICollection<DataPermission> DataPermissions { get; set; }
public virtual Department Department { get; set; } public virtual Department Department { get; set; }
public virtual ICollection<Menu> RoleMenus { get; set; } public virtual ICollection<Menu> RoleMenus { get; set; }
public virtual ICollection<RoleMenuButton> RoleMenuButtons { get; set; }
public virtual ICollection<User> Users { get; set; } public virtual ICollection<User> Users { get; set; }
} }
} }

View File

@ -1,13 +0,0 @@
namespace OpenAuth.Domain.Model
{
public partial class RoleMenuButton
{
public string RoleMenuButtonId { get; set; }
public string RoleId { get; set; }
public string MenuId { get; set; }
public string ButtonId { get; set; }
public virtual Button Button { get; set; }
public virtual Menu Menu { get; set; }
public virtual Role Role { get; set; }
}
}

View File

@ -4,7 +4,7 @@ using OpenAuth.Domain.Utility;
namespace OpenAuth.Domain.Model namespace OpenAuth.Domain.Model
{ {
public partial class User :EntityBase<string> public partial class User :EntityBase<string>, IAggregateRoot
{ {
public User() public User()
{ {

View File

@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Linq;
namespace OpenAuth.Domain.Model
{
public partial class User
{
//加载用户的导航菜单项
public IEnumerable<Menu> LoadMenus()
{
var menus = new List<Menu>();
foreach (var role in Roles)
{
foreach (var menu in role.RoleMenus.Where(menu => !menus.Exists(e => e.Id == menu.Id)))
{
menus.Add(menu);
}
}
return menus;
}
}
}

View File

@ -41,11 +41,11 @@
<ItemGroup> <ItemGroup>
<Compile Include="Interface\IMenuRepository.cs" /> <Compile Include="Interface\IMenuRepository.cs" />
<Compile Include="Interface\IUserRepository.cs" /> <Compile Include="Interface\IUserRepository.cs" />
<Compile Include="ModelBehavior\User.cs" />
<Compile Include="Model\Button.cs" /> <Compile Include="Model\Button.cs" />
<Compile Include="Model\DataPermission.cs" /> <Compile Include="Model\DataPermission.cs" />
<Compile Include="Model\Department.cs" /> <Compile Include="Model\Department.cs" />
<Compile Include="Model\Menu.cs" /> <Compile Include="Model\Menu.cs" />
<Compile Include="Model\RoleMenuButton.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Model\Role.cs" /> <Compile Include="Model\Role.cs" />
<Compile Include="Model\User.cs" /> <Compile Include="Model\User.cs" />
@ -59,7 +59,6 @@
<Compile Include="Utility\ValueObjectBase.cs" /> <Compile Include="Utility\ValueObjectBase.cs" />
<Compile Include="Utility\ValueObjectIsInvalidException.cs" /> <Compile Include="Utility\ValueObjectIsInvalidException.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -7,28 +7,6 @@ namespace OpenAuth.Domain.Service
{ {
public class MenuService public class MenuService
{ {
private IUserRepository _userRepository;
public MenuService(IUserRepository repository)
{
_userRepository = repository;
}
public List<Menu> GetMenuFor(string userId)
{
var menus = new List<Menu>();
var user = _userRepository.FindById(userId);
if (user != null)
{
foreach (var role in user.Roles)
{
foreach (var menu in role.RoleMenus.Where(menu => !menus.Exists(e =>e.MenuId == menu.MenuId)))
{
menus.Add(menu);
}
}
}
return menus;
}
} }
} }

View File

@ -0,0 +1,27 @@
// ***********************************************************************
// Assembly : OpenAuth.Infrastructure
// Author : yubaolee
// Created : 05-23-2015
//
// Last Modified By : yubaolee
// Last Modified On : 05-23-2015
// ***********************************************************************
// <copyright file="ListExtention.cs" company="Microsoft">
// Copyright (c) Microsoft. All rights reserved.
// </copyright>
// <summary>两个相同结构List之间的复制</summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
namespace OpenAuth.Infrastructure
{
static class ListExtension
{
public static IList<T> Clone<T>(this IList<T> listToClone) where T : ICloneable
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
}
}

View File

@ -1,51 +0,0 @@
using System.Data.Entity.ModelConfiguration;
using OpenAuth.Domain;
using OpenAuth.Domain.Model;
namespace OpenAuth.Infrastructure.Mapping
{
public class RoleMenuButtonMap : EntityTypeConfiguration<RoleMenuButton>
{
public RoleMenuButtonMap()
{
// Primary Key
this.HasKey(t => t.RoleMenuButtonId);
// Properties
this.Property(t => t.RoleMenuButtonId)
.IsRequired()
.HasMaxLength(50);
this.Property(t => t.RoleId)
.IsRequired()
.HasMaxLength(50);
this.Property(t => t.MenuId)
.IsRequired()
.HasMaxLength(50);
this.Property(t => t.ButtonId)
.IsRequired()
.HasMaxLength(50);
// Table & Column Mappings
this.ToTable("RoleMenuButton");
this.Property(t => t.RoleMenuButtonId).HasColumnName("RoleMenuButtonId");
this.Property(t => t.RoleId).HasColumnName("RoleId");
this.Property(t => t.MenuId).HasColumnName("MenuId");
this.Property(t => t.ButtonId).HasColumnName("ButtonId");
// Relationships
this.HasRequired(t => t.Button)
.WithMany(t => t.RoleMenuButtons)
.HasForeignKey(d => d.ButtonId);
this.HasRequired(t => t.Menu)
.WithMany(t => t.RoleMenuButtons)
.HasForeignKey(d => d.MenuId);
this.HasRequired(t => t.Role)
.WithMany(t => t.RoleMenuButtons)
.HasForeignKey(d => d.RoleId);
}
}
}

View File

@ -30,52 +30,15 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="EntityFramework">
<HintPath>..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer">
<HintPath>..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Activities" /> <Reference Include="System.Activities" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Mapping\ButtonMap.cs" /> <Compile Include="ListExtention.cs" />
<Compile Include="Mapping\DataPermissionMap.cs" />
<Compile Include="Mapping\DepartmentMap.cs" />
<Compile Include="Mapping\MenuMap.cs" />
<Compile Include="Mapping\RoleMap.cs" />
<Compile Include="Mapping\RoleMenuButtonMap.cs" />
<Compile Include="Mapping\UserMap.cs" />
<Compile Include="OpenAuthDBContext.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Repository\BaseRepository.cs" />
<Compile Include="Repository\UserRepository.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenAuth.App\OpenAuth.App.csproj">
<Project>{0bbf2d65-fffd-4272-b138-8ea4fb6fec48}</Project>
<Name>OpenAuth.App</Name>
</ProjectReference>
<ProjectReference Include="..\OpenAuth.Domain\OpenAuth.Domain.csproj">
<Project>{6108da8e-92a1-4abe-b9f5-26d64d55ca2c}</Project>
<Name>OpenAuth.Domain</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="DB.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OpenAuth.Infrastructure.Repository
{
public class BaseRepository
{
protected OpenAuthDBContext _Context = new OpenAuthDBContext();
}
}

View File

@ -3,7 +3,7 @@
<configSections> <configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
<connectionStrings configSource="DB.config"></connectionStrings> <connectionStrings configSource="DB.config"></connectionStrings>
<entityFramework> <entityFramework>

View File

@ -1,18 +1,17 @@
using System.Data.Entity.ModelConfiguration; using System.Data.Entity.ModelConfiguration;
using OpenAuth.Domain;
using OpenAuth.Domain.Model; using OpenAuth.Domain.Model;
namespace OpenAuth.Infrastructure.Mapping namespace OpenAuth.Repository.Mapping
{ {
public class ButtonMap : EntityTypeConfiguration<Button> public class ButtonMap : EntityTypeConfiguration<Button>
{ {
public ButtonMap() public ButtonMap()
{ {
// Primary Key // Primary Key
this.HasKey(t => t.ButtonId); this.HasKey(t => t.Id);
// Properties // Properties
this.Property(t => t.ButtonId) this.Property(t => t.Id)
.IsRequired() .IsRequired()
.HasMaxLength(50); .HasMaxLength(50);
@ -36,7 +35,7 @@ namespace OpenAuth.Infrastructure.Mapping
// Table & Column Mappings // Table & Column Mappings
this.ToTable("Button"); this.ToTable("Button");
this.Property(t => t.ButtonId).HasColumnName("ButtonId"); this.Property(t => t.Id).HasColumnName("ButtonId");
this.Property(t => t.FullName).HasColumnName("FullName"); this.Property(t => t.FullName).HasColumnName("FullName");
this.Property(t => t.Img).HasColumnName("Img"); this.Property(t => t.Img).HasColumnName("Img");
this.Property(t => t.Event).HasColumnName("Event"); this.Property(t => t.Event).HasColumnName("Event");

View File

@ -1,8 +1,7 @@
using System.Data.Entity.ModelConfiguration; using System.Data.Entity.ModelConfiguration;
using OpenAuth.Domain;
using OpenAuth.Domain.Model; using OpenAuth.Domain.Model;
namespace OpenAuth.Infrastructure.Mapping namespace OpenAuth.Repository.Mapping
{ {
public class DataPermissionMap : EntityTypeConfiguration<DataPermission> public class DataPermissionMap : EntityTypeConfiguration<DataPermission>
{ {

View File

@ -1,18 +1,17 @@
using System.Data.Entity.ModelConfiguration; using System.Data.Entity.ModelConfiguration;
using OpenAuth.Domain;
using OpenAuth.Domain.Model; using OpenAuth.Domain.Model;
namespace OpenAuth.Infrastructure.Mapping namespace OpenAuth.Repository.Mapping
{ {
public class DepartmentMap : EntityTypeConfiguration<Department> public class DepartmentMap : EntityTypeConfiguration<Department>
{ {
public DepartmentMap() public DepartmentMap()
{ {
// Primary Key // Primary Key
this.HasKey(t => t.DepartmentId); this.HasKey(t => t.Id);
// Properties // Properties
this.Property(t => t.DepartmentId) this.Property(t => t.Id)
.IsRequired() .IsRequired()
.HasMaxLength(50); .HasMaxLength(50);
@ -40,7 +39,7 @@ namespace OpenAuth.Infrastructure.Mapping
// Table & Column Mappings // Table & Column Mappings
this.ToTable("Department"); this.ToTable("Department");
this.Property(t => t.DepartmentId).HasColumnName("DepartmentId"); this.Property(t => t.Id).HasColumnName("DepartmentId");
this.Property(t => t.ParentId).HasColumnName("ParentId"); this.Property(t => t.ParentId).HasColumnName("ParentId");
this.Property(t => t.FullName).HasColumnName("FullName"); this.Property(t => t.FullName).HasColumnName("FullName");
this.Property(t => t.Description).HasColumnName("Description"); this.Property(t => t.Description).HasColumnName("Description");

View File

@ -2,17 +2,17 @@ using System.Data.Entity.ModelConfiguration;
using OpenAuth.Domain; using OpenAuth.Domain;
using OpenAuth.Domain.Model; using OpenAuth.Domain.Model;
namespace OpenAuth.Infrastructure.Mapping namespace OpenAuth.Repository.Mapping
{ {
public class MenuMap : EntityTypeConfiguration<Menu> public class MenuMap : EntityTypeConfiguration<Menu>
{ {
public MenuMap() public MenuMap()
{ {
// Primary Key // Primary Key
this.HasKey(t => t.MenuId); this.HasKey(t => t.Id);
// Properties // Properties
this.Property(t => t.MenuId) this.Property(t => t.Id)
.IsRequired() .IsRequired()
.HasMaxLength(50); .HasMaxLength(50);
@ -58,7 +58,7 @@ namespace OpenAuth.Infrastructure.Mapping
// Table & Column Mappings // Table & Column Mappings
this.ToTable("Menu"); this.ToTable("Menu");
this.Property(t => t.MenuId).HasColumnName("MenuId"); this.Property(t => t.Id).HasColumnName("MenuId");
this.Property(t => t.ParentId).HasColumnName("ParentId"); this.Property(t => t.ParentId).HasColumnName("ParentId");
this.Property(t => t.FullName).HasColumnName("FullName"); this.Property(t => t.FullName).HasColumnName("FullName");
this.Property(t => t.Description).HasColumnName("Description"); this.Property(t => t.Description).HasColumnName("Description");

View File

@ -2,17 +2,17 @@ using System.Data.Entity.ModelConfiguration;
using OpenAuth.Domain; using OpenAuth.Domain;
using OpenAuth.Domain.Model; using OpenAuth.Domain.Model;
namespace OpenAuth.Infrastructure.Mapping namespace OpenAuth.Repository.Mapping
{ {
public class RoleMap : EntityTypeConfiguration<Role> public class RoleMap : EntityTypeConfiguration<Role>
{ {
public RoleMap() public RoleMap()
{ {
// Primary Key // Primary Key
this.HasKey(t => t.RoleId); this.HasKey(t => t.Id);
// Properties // Properties
this.Property(t => t.RoleId) this.Property(t => t.Id)
.IsRequired() .IsRequired()
.HasMaxLength(50); .HasMaxLength(50);
@ -55,7 +55,7 @@ namespace OpenAuth.Infrastructure.Mapping
// Table & Column Mappings // Table & Column Mappings
this.ToTable("Role"); this.ToTable("Role");
this.Property(t => t.RoleId).HasColumnName("RoleId"); this.Property(t => t.Id).HasColumnName("RoleId");
this.Property(t => t.ParentId).HasColumnName("ParentId"); this.Property(t => t.ParentId).HasColumnName("ParentId");
this.Property(t => t.FullName).HasColumnName("FullName"); this.Property(t => t.FullName).HasColumnName("FullName");
this.Property(t => t.Category).HasColumnName("Category"); this.Property(t => t.Category).HasColumnName("Category");

View File

@ -2,7 +2,7 @@ using System.Data.Entity.ModelConfiguration;
using OpenAuth.Domain; using OpenAuth.Domain;
using OpenAuth.Domain.Model; using OpenAuth.Domain.Model;
namespace OpenAuth.Infrastructure.Mapping namespace OpenAuth.Repository.Mapping
{ {
public class UserMap : EntityTypeConfiguration<User> public class UserMap : EntityTypeConfiguration<User>
{ {

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OpenAuth.Repository</RootNamespace>
<AssemblyName>OpenAuth.Repository</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="EntityFramework">
<HintPath>..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer">
<HintPath>..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Mapping\ButtonMap.cs" />
<Compile Include="Mapping\DataPermissionMap.cs" />
<Compile Include="Mapping\DepartmentMap.cs" />
<Compile Include="Mapping\MenuMap.cs" />
<Compile Include="Mapping\RoleMap.cs" />
<Compile Include="Mapping\UserMap.cs" />
<Compile Include="OpenAuthDBContext.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Repository\BaseRepository.cs" />
<Compile Include="Repository\UserRepository.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenAuth.Domain\OpenAuth.Domain.csproj">
<Project>{6108da8e-92a1-4abe-b9f5-26d64d55ca2c}</Project>
<Name>OpenAuth.Domain</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="DB.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -1,9 +1,8 @@
using System.Data.Entity; using System.Data.Entity;
using OpenAuth.Domain;
using OpenAuth.Domain.Model; using OpenAuth.Domain.Model;
using OpenAuth.Infrastructure.Mapping; using OpenAuth.Repository.Mapping;
namespace OpenAuth.Infrastructure namespace OpenAuth.Repository
{ {
public partial class OpenAuthDBContext : DbContext public partial class OpenAuthDBContext : DbContext
{ {
@ -22,7 +21,6 @@ namespace OpenAuth.Infrastructure
public DbSet<Department> Departments { get; set; } public DbSet<Department> Departments { get; set; }
public DbSet<Menu> Menus { get; set; } public DbSet<Menu> Menus { get; set; }
public DbSet<Role> Roles { get; set; } public DbSet<Role> Roles { get; set; }
// public DbSet<RoleMenuButton> RoleMenuButtons { get; set; }
public DbSet<User> Users { get; set; } public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) protected override void OnModelCreating(DbModelBuilder modelBuilder)
@ -32,7 +30,6 @@ namespace OpenAuth.Infrastructure
modelBuilder.Configurations.Add(new DepartmentMap()); modelBuilder.Configurations.Add(new DepartmentMap());
modelBuilder.Configurations.Add(new MenuMap()); modelBuilder.Configurations.Add(new MenuMap());
modelBuilder.Configurations.Add(new RoleMap()); modelBuilder.Configurations.Add(new RoleMap());
// modelBuilder.Configurations.Add(new RoleMenuButtonMap());
modelBuilder.Configurations.Add(new UserMap()); modelBuilder.Configurations.Add(new UserMap());
} }
} }

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("OpenAuth.Repository")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("OpenAuth.Repository")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("9d65fb39-6789-4fca-877b-85a106672986")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,7 @@
namespace OpenAuth.Repository.Repository
{
public class BaseRepository
{
protected OpenAuthDBContext _Context = new OpenAuthDBContext();
}
}

View File

@ -1,11 +1,9 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using OpenAuth.Domain.Interface; using OpenAuth.Domain.Interface;
using OpenAuth.Domain.Model; using OpenAuth.Domain.Model;
namespace OpenAuth.Infrastructure.Repository namespace OpenAuth.Repository.Repository
{ {
public class UserRepository :BaseRepository, IUserRepository public class UserRepository :BaseRepository, IUserRepository
{ {

View File

@ -1,7 +1,6 @@
using System; using System;
using System.Data.Entity;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenAuth.Infrastructure; using OpenAuth.Repository;
namespace OpenAuth.UnitTest namespace OpenAuth.UnitTest
{ {

View File

@ -1,7 +1,6 @@
using System; using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenAuth.Infrastructure; using OpenAuth.Repository;
namespace OpenAuth.UnitTest namespace OpenAuth.UnitTest
{ {

View File

@ -2,7 +2,7 @@
using OpenAuth.App; using OpenAuth.App;
using OpenAuth.App.DTO; using OpenAuth.App.DTO;
using OpenAuth.Domain.Service; using OpenAuth.Domain.Service;
using OpenAuth.Infrastructure.Repository; using OpenAuth.Repository.Repository;
namespace OpenAuth.UnitTest namespace OpenAuth.UnitTest
{ {

View File

@ -84,6 +84,10 @@
<Project>{ADAE08C0-DE22-41F7-9F94-0E62AE327C25}</Project> <Project>{ADAE08C0-DE22-41F7-9F94-0E62AE327C25}</Project>
<Name>OpenAuth.Infrastructure</Name> <Name>OpenAuth.Infrastructure</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\OpenAuth.Repository\OpenAuth.Repository.csproj">
<Project>{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A}</Project>
<Name>OpenAuth.Repository</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Choose> <Choose>
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'"> <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">

View File

@ -1,5 +1,4 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下特性集 // 有关程序集的常规信息通过以下特性集

View File

@ -1,12 +1,8 @@
using System; using System.Web.Mvc;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using OpenAuth.App; using OpenAuth.App;
using OpenAuth.App.DTO; using OpenAuth.App.DTO;
using OpenAuth.Domain.Service; using OpenAuth.Domain.Service;
using OpenAuth.Infrastructure.Repository; using OpenAuth.Repository.Repository;
namespace OpenAuth.Web.Controllers namespace OpenAuth.Web.Controllers
{ {

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace OpenAuth.Web.Controllers
{
public class ButtonController : Controller
{
//
// GET: /Button/
public ActionResult List()
{
return View();
}
}
}

View File

@ -1,11 +1,6 @@
using System.Collections.Generic; using System.Web.Mvc;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using OpenAuth.App; using OpenAuth.App;
using OpenAuth.App.DTO;
using OpenAuth.Domain.Service; using OpenAuth.Domain.Service;
using OpenAuth.Infrastructure.Repository;
namespace OpenAuth.Web.Controllers namespace OpenAuth.Web.Controllers
{ {
@ -16,10 +11,8 @@ namespace OpenAuth.Web.Controllers
public ActionResult LeftMenu() public ActionResult LeftMenu()
{ {
var service = new MenuService(new UserRepository()); MenuApp app = new MenuApp(new MenuService());
MenuApp app = new MenuApp(service); var response = app.LoadMenus();
var request = new MenuForUserRequest {UserId = LoginCacheApp.GetLogin().UserId};
var response = app.LoadFor(request);
return PartialView(response); return PartialView(response);
} }

View File

@ -122,6 +122,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Controllers\AccountController.cs" /> <Compile Include="Controllers\AccountController.cs" />
<Compile Include="Controllers\ButtonController.cs" />
<Compile Include="Controllers\HomeController.cs" /> <Compile Include="Controllers\HomeController.cs" />
<Compile Include="Controllers\MenuController.cs" /> <Compile Include="Controllers\MenuController.cs" />
<Compile Include="Global.asax.cs"> <Compile Include="Global.asax.cs">
@ -236,6 +237,10 @@
<Project>{adae08c0-de22-41f7-9f94-0e62ae327c25}</Project> <Project>{adae08c0-de22-41f7-9f94-0e62ae327c25}</Project>
<Name>OpenAuth.Infrastructure</Name> <Name>OpenAuth.Infrastructure</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\OpenAuth.Repository\OpenAuth.Repository.csproj">
<Project>{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A}</Project>
<Name>OpenAuth.Repository</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Content\font\cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff" /> <Content Include="Content\font\cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff" />
@ -260,6 +265,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="Views\Account\Login.cshtml" /> <None Include="Views\Account\Login.cshtml" />
<Content Include="Views\Button\List.cshtml" />
</ItemGroup> </ItemGroup>
<PropertyGroup> <PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>

View File

@ -0,0 +1,127 @@
<div id="breadcrumbs">
<ul class="breadcrumb">
<li><i class="icon-home"></i> <a href="#">菜单管理</a><span class="divider"><i class="icon-angle-right"></i></span></li>
</ul><!--.breadcrumb-->
</div><!--#breadcrumbs-->
<div id="page-content" class="clearfix">
<div class="row-fluid">
<!-- PAGE CONTENT BEGINS HERE -->
<div class="row-fluid">
<div class="span12">
<table id="table_bug_report" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th class="center">
<label><input type="checkbox" /><span class="lbl"></span></label>
</th>
<th>Domain</th>
<th>Price</th>
<th class="hidden-480">Clicks</th>
<th class="hidden-phone"><i class="icon-time hidden-phone"></i> Update</th>
<th class="hidden-480">Status</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td class='center'>
<label><input type='checkbox' /><span class="lbl"></span></label>
</td>
<td><a href='#'>ace.com</a></td>
<td>$45</td>
<td class='hidden-480'>3,330</td>
<td class='hidden-phone'>Feb 12</td>
<td class='hidden-480'><span class='label label-warning'>Expiring</span></td>
<td>
<div class="inline position-relative">
<button class="btn btn-minier btn-primary dropdown-toggle" data-toggle="dropdown"><i class="icon-cog icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-light pull-right dropdown-caret dropdown-close">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Edit" data-placement="left"><span class="green"><i class="icon-edit"></i></span></a></li>
<li><a href="#" class="tooltip-warning" data-rel="tooltip" title="Flag" data-placement="left"><span class="blue"><i class="icon-flag"></i></span> </a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="left"><span class="red"><i class="icon-trash"></i></span> </a></li>
</ul>
</div>
</td>
</tr>
<tr>
<td class='center'>
<label><input type='checkbox' /><span class="lbl"></span></label>
</td>
<td><a href='#'>base.com</a></td>
<td>$35</td>
<td class='hidden-480'>2,595</td>
<td class='hidden-phone'>Feb 18</td>
<td class='hidden-480'><span class='label label-success'>Registered</span></td>
<td>
<div class="inline position-relative">
<button class="btn btn-minier btn-primary dropdown-toggle" data-toggle="dropdown"><i class="icon-cog icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-light pull-right dropdown-caret dropdown-close">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Edit" data-placement="left"><span class="green"><i class="icon-edit"></i></span></a></li>
<li><a href="#" class="tooltip-warning" data-rel="tooltip" title="Flag" data-placement="left"><span class="blue"><i class="icon-flag"></i></span> </a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="left"><span class="red"><i class="icon-trash"></i></span> </a></li>
</ul>
</div>
</td>
</tr>
<tr>
<td class='center'>
<label><input type='checkbox' /><span class="lbl"></span></label>
</td>
<td><a href='#'>max.com</a></td>
<td>$60</td>
<td class='hidden-480'>4,400</td>
<td class='hidden-phone'>Mar 11</td>
<td class='hidden-480'><span class='label label-warning'>Expiring</span></td>
<td>
<div class="inline position-relative">
<button class="btn btn-minier btn-primary dropdown-toggle" data-toggle="dropdown"><i class="icon-cog icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-light pull-right dropdown-caret dropdown-close">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Edit" data-placement="left"><span class="green"><i class="icon-edit"></i></span></a></li>
<li><a href="#" class="tooltip-warning" data-rel="tooltip" title="Flag" data-placement="left"><span class="blue"><i class="icon-flag"></i></span> </a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="left"><span class="red"><i class="icon-trash"></i></span> </a></li>
</ul>
</div>
</td>
</tr>
<tr>
<td class='center'>
<label><input type='checkbox' /><span class="lbl"></span></label>
</td>
<td><a href='#'>best.com</a></td>
<td>$75</td>
<td class='hidden-480'>6,500</td>
<td class='hidden-phone'>Apr 03</td>
<td class='hidden-480'><span class='label label-inverse arrowed-in'>Flagged</span></td>
<td>
<div class="inline position-relative">
<button class="btn btn-minier btn-primary dropdown-toggle" data-toggle="dropdown"><i class="icon-cog icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-light pull-right dropdown-caret dropdown-close">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Edit" data-placement="left"><span class="green"><i class="icon-edit"></i></span></a></li>
<li><a href="#" class="tooltip-warning" data-rel="tooltip" title="Flag" data-placement="left"><span class="blue"><i class="icon-flag"></i></span> </a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="left"><span class="red"><i class="icon-trash"></i></span> </a></li>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
</div><!--/span-->
</div><!--/row-->
<!-- PAGE CONTENT ENDS HERE -->
</div><!--/row-->
</div><!--/#page-content-->

View File

@ -5,10 +5,10 @@
@RenderPage("~/Views/Home/Header.cshtml") @RenderPage("~/Views/Home/Header.cshtml")
<div class="container-fluid" id="main-container"> <div class="container-fluid" id="main-container">
<a href="#" id="menu-toggler"><span></span></a><!-- menu toggler --> <a href="#" id="menu-toggler"><span></span></a><!-- menu toggler -->
@{ @{
Html.RenderAction("LeftMenu","Menu"); Html.RenderAction("LeftMenu", "Menu");
} }
<div id="main-content" class="clearfix"> <div id="main-content" class="clearfix">
<div id="breadcrumbs"> <div id="breadcrumbs">
@ -23,422 +23,10 @@
<div id="page-content" class="clearfix"> <div id="page-content" class="clearfix">
<div class="row-fluid"> <div class="row-fluid">
<!-- 欢迎 -->
<div class="alert alert-block alert-success">
<button type="button" class="close" data-dismiss="alert"><i class="icon-remove"></i></button>
<i class="icon-ok green"></i> Welcome to <strong class="green">Ace <small>(v1)</small></strong>,
the lightweight, feature-rich, easy to use and well-documented admin template.
</div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span6">
<div class="widget-box transparent">
<div class="widget-header">
<h4 class="lighter smaller"><i class="icon-rss orange"></i>RECENT</h4>
<div class="widget-toolbar no-border">
<ul class="nav nav-tabs" id="recent-tab">
<li class="active"><a data-toggle="tab" href="#task-tab">Tasks</a></li>
<li><a data-toggle="tab" href="#member-tab">Members</a></li>
<li><a data-toggle="tab" href="#comment-tab">Comments</a></li>
</ul>
</div>
</div>
<div class="widget-body">
<div class="widget-main padding-5">
<div class="tab-content padding-8">
<div id="task-tab" class="tab-pane active">
<h4 class="smaller lighter green"><i class="icon-list"></i> Sortable Lists</h4>
<ul id="tasks" class="item-list">
<li class="item-orange clearfix">
<label class="inline"><input type="checkbox" /><span class="lbl"> Answering customer questions</span></label>
<div class="pull-right easy-pie-chart percentage" data-size="30" data-color="#ECCB71" data-percent="42">
<span class="percent">42</span>%
</div>
</li>
<li class="item-red clearfix">
<label class="inline"><input type="checkbox" /><span class="lbl"> Fixing bugs</span></label>
<div class="pull-right">
<div class="btn-group">
<button class="btn btn-mini btn-info"><i class="icon-edit"></i></button>
<button class="btn btn-mini btn-danger "><i class="icon-trash"></i></button>
<button class="btn btn-mini btn-yellow"><i class="icon-flag"></i></button>
</div>
</div>
</li>
<li class="item-default clearfix">
<label class="inline"><input type="checkbox" /><span class="lbl"> Adding new features</span></label>
<div class="inline pull-right position-relative">
<button class="btn btn-minier bigger btn-yellow dropdown-toggle" data-toggle="dropdown"><i class="icon-angle-down icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-yellow pull-right dropdown-caret dropdown-closer">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Mark&nbsp;as&nbsp;done" data-placement="left"><span class="green"><i class="icon-ok"></i></span></a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="left"><span class="red"><i class="icon-trash"></i></span></a></li>
</ul>
</div>
</li>
<li class="item-blue">
<label class="inline"><input type="checkbox" /><span class="lbl"> Upgrading scripts used in template</span></label>
</li>
<li class="item-grey">
<label class="inline"><input type="checkbox" /><span class="lbl"> Adding new skins</span></label>
</li>
<li class="item-green">
<label class="inline"><input type="checkbox" /><span class="lbl"> Updating server software up</span></label>
</li>
<li class="item-pink">
<label class="inline"><input type="checkbox" /><span class="lbl"> Cleaning up</span></label>
</li>
</ul>
</div>
<div id="member-tab" class="tab-pane">
<div class="clearfix">
<div class="itemdiv memberdiv">
<div class="user">
<img alt="Bob's avatar" src="avatars/user.jpg" />
</div>
<div class="body">
<div class="name"><a href="#">Bob Doe</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">20 min</span></div>
<div>
<span class="label label-warning">pending</span>
<div class="inline position-relative">
<button class="btn btn-minier bigger btn-yellow dropdown-toggle" data-toggle="dropdown"><i class="icon-angle-down icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-yellow pull-right dropdown-caret dropdown-close">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Approve" data-placement="right"><span class="green"><i class="icon-ok"></i></span></a></li>
<li><a href="#" class="tooltip-warning" data-rel="tooltip" title="Reject" data-placement="right"><span class="orange"><i class="icon-remove"></i></span> </a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="right"><span class="red"><i class="icon-trash"></i></span> </a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="itemdiv memberdiv">
<div class="user">
<img alt="Joe's Avatar" src="@Url.Content("~/Content/avatars/avatar.png")" />
</div>
<div class="body">
<div class="name"><a href="#">Joe Doe</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">1 hour</span></div>
<div>
<span class="label label-warning">pending</span>
<div class="inline position-relative">
<button class="btn btn-minier bigger btn-yellow dropdown-toggle" data-toggle="dropdown"><i class="icon-angle-down icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-yellow pull-right dropdown-caret dropdown-close">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Approve" data-placement="left"><span class="green"><i class="icon-ok"></i></span></a></li>
<li><a href="#" class="tooltip-warning" data-rel="tooltip" title="Reject" data-placement="left"><span class="orange"><i class="icon-remove"></i></span> </a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="left"><span class="red"><i class="icon-trash"></i></span> </a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="itemdiv memberdiv">
<div class="user">
<img alt="Jim's Avatar" src="avatars/avatar.png" />
</div>
<div class="body">
<div class="name"><a href="#">Jim Doe</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">2 hour</span></div>
<div>
<span class="label label-warning">pending</span>
<div class="inline position-relative">
<button class="btn btn-minier bigger btn-yellow dropdown-toggle" data-toggle="dropdown"><i class="icon-angle-down icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-yellow pull-right dropdown-caret dropdown-close">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Approve" data-placement="right"><span class="green"><i class="icon-ok"></i></span></a></li>
<li><a href="#" class="tooltip-warning" data-rel="tooltip" title="Reject" data-placement="right"><span class="orange"><i class="icon-remove"></i></span> </a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="right"><span class="red"><i class="icon-trash"></i></span> </a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="itemdiv memberdiv">
<div class="user">
<img alt="Alex's Avatar" src="avatars/avatar2.png" />
</div>
<div class="body">
<div class="name"><a href="#">Alex Doe</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">3 hour</span></div>
<div class="label label-important">blocked</div>
</div>
</div>
<div class="itemdiv memberdiv">
<div class="user">
<img alt="Bob's Avatar" src="avatars/avatar2.png" />
</div>
<div class="body">
<div class="name"><a href="#">Bob Doe</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">6 hour</span> </div>
<div class="label label-success arrowed-in">approved</div>
</div>
</div>
<div class="itemdiv memberdiv">
<div class="user">
<img alt="Susan's Avatar" src="avatars/avatar3.png" />
</div>
<div class="body">
<div class="name"><a href="#">Susan</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">yesterday</span></div>
<div class="label label-success arrowed-in">approved</div>
</div>
</div>
<div class="itemdiv memberdiv">
<div class="user">
<img alt="Phil's Avatar" src="avatars/avatar4.png" />
</div>
<div class="body">
<div class="name"><a href="#">Phil Doe</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">2 days ago</span></div>
<div class="label label-info arrowed-in arrowed-in-right">online</div>
</div>
</div>
<div class="itemdiv memberdiv">
<div class="user">
<img alt="Alexa's Avatar" src="avatars/avatar1.png" />
</div>
<div class="body">
<div class="name"><a href="#">Alexa Doe</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">3 days ago</span></div>
<div class="label label-success arrowed-in">approved</div>
</div>
</div>
</div>
<div class="center">
<i class="icon-group icon-2x green"></i> &nbsp; <a href="#">See all members &nbsp; <i class="icon-arrow-right"></i></a>
</div>
<div class="hr hr-double hr8"></div>
</div><!-- member-tab -->
<div id="comment-tab" class="tab-pane">
<div class="comments">
<div class="itemdiv commentdiv">
<div class="user">
<img alt="Bob's Avatar" src="avatars/avatar.png" />
</div>
<div class="body">
<div class="name"><a href="#">Bob Doe</a></div>
<div class="time"><i class="icon-time"></i> <span class="green">6 min</span></div>
<div class="text">
<i class="icon-quote-left"></i> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque commodo massa sed ipsum porttitor facilisis &hellip;
</div>
</div>
<div class="tools">
<div class="inline position-relative">
<button class="btn btn-minier bigger btn-yellow dropdown-toggle" data-toggle="dropdown"><i class="icon-angle-down icon-only"></i></button>
<ul class="dropdown-menu dropdown-icon-only dropdown-yellow pull-right dropdown-caret dropdown-close">
<li><a href="#" class="tooltip-success" data-rel="tooltip" title="Approve" data-placement="left"><span class="green"><i class="icon-ok"></i></span></a></li>
<li><a href="#" class="tooltip-warning" data-rel="tooltip" title="Reject" data-placement="left"><span class="orange"><i class="icon-remove"></i></span> </a></li>
<li><a href="#" class="tooltip-error" data-rel="tooltip" title="Delete" data-placement="left"><span class="red"><i class="icon-trash"></i></span> </a></li>
</ul>
</div>
</div>
</div>
<div class="itemdiv commentdiv">
<div class="user">
<img alt="Jennifer's Avatar" src="avatars/avatar1.png" />
</div>
<div class="body">
<div class="name"><a href="#">Jennifer</a></div>
<div class="time"><i class="icon-time"></i> <span class="blue">15 min</span></div>
<div class="text">
<i class="icon-quote-left"></i> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque commodo massa sed ipsum porttitor facilisis &hellip;
</div>
</div>
<div class="tools">
<a href="#" class="btn btn-minier btn-info"><i class="icon-only icon-pencil"></i></a>
<a href="#" class="btn btn-minier btn-danger"><i class="icon-only icon-trash"></i></a>
</div>
</div>
<div class="itemdiv commentdiv">
<div class="user">
<img alt="Joe's Avatar" src="avatars/avatar2.png" />
</div>
<div class="body">
<div class="name"><a href="#">Joe</a></div>
<div class="time"><i class="icon-time"></i> <span class="orange">22 min</span></div>
<div class="text">
<i class="icon-quote-left"></i> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque commodo massa sed ipsum porttitor facilisis &hellip;
</div>
</div>
<div class="tools">
<a href="#" class="btn btn-minier btn-info"><i class="icon-only icon-pencil"></i></a>
<a href="#" class="btn btn-minier btn-danger"><i class="icon-only icon-trash"></i></a>
</div>
</div>
<div class="itemdiv commentdiv">
<div class="user">
<img alt="Rita's Avatar" src="avatars/avatar3.png" />
</div>
<div class="body">
<div class="name"><a href="#">Rita</a></div>
<div class="time"><i class="icon-time"></i> <span class="red">50 min</span></div>
<div class="text">
<i class="icon-quote-left"></i> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque commodo massa sed ipsum porttitor facilisis &hellip;
</div>
</div>
<div class="tools">
<a href="#" class="btn btn-minier btn-info"><i class="icon-only icon-pencil"></i></a>
<a href="#" class="btn btn-minier btn-danger"><i class="icon-only icon-trash"></i></a>
</div>
</div>
</div>
<div class="hr hr8"></div>
<div class="center">
<i class="icon-comments-alt icon-2x green"></i> &nbsp; <a href="#">See all comments &nbsp; <i class="icon-arrow-right"></i></a>
</div>
<div class="hr hr-double hr8"></div>
</div>
</div>
</div><!--/widget-main-->
</div><!--/widget-body-->
</div><!--/widget-box-->
</div><!--/span-->
<div class="span6">
<div class="widget-box ">
<div class="widget-header">
<h4 class="lighter smaller"><i class="icon-comment blue"></i>Conversation</h4>
</div>
<div class="widget-body">
<div class="widget-main no-padding">
<div class="dialogs">
<div class="itemdiv dialogdiv">
<div class="user">
<img alt="Alexa's Avatar" src="avatars/avatar1.png" />
</div>
<div class="body">
<div class="time"><i class="icon-time"></i> <span class="green">4 sec</span></div>
<div class="name"><a href="#">Alexa</a></div>
<div class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque commodo massa sed ipsum porttitor facilisis. </div>
<div class="tools">
<a href="#" class="btn btn-minier btn-info"><i class="icon-only icon-share-alt"></i></a>
</div>
</div>
</div>
<div class="itemdiv dialogdiv">
<div class="user">
<img alt="John's Avatar" src="avatars/avatar.png" />
</div>
<div class="body">
<div class="time"><i class="icon-time"></i> <span class="blue">38 sec</span></div>
<div class="name"><a href="#">John</a></div>
<div class="text">Raw denim you probably haven't heard of them jean shorts Austin.</div>
<div class="tools">
<a href="#" class="btn btn-minier btn-info"><i class="icon-only icon-share-alt"></i></a>
</div>
</div>
</div>
<div class="itemdiv dialogdiv">
<div class="user">
<img alt="Bob's avatar" src="avatars/user.jpg" />
</div>
<div class="body">
<div class="time"><i class="icon-time"></i> <span class="orange">2 min</span></div>
<div class="name"><a href="#">Bob</a> <span class="label label-info arrowed arrowed-in-right">admin</span></div>
<div class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque commodo massa sed ipsum porttitor facilisis. </div>
<div class="tools">
<a href="#" class="btn btn-minier btn-info"><i class="icon-only icon-share-alt"></i></a>
</div>
</div>
</div>
<div class="itemdiv dialogdiv">
<div class="user">
<img alt="Jim's Avatar" src="avatars/avatar4.png" />
</div>
<div class="body">
<div class="time"><i class="icon-time"></i> <span class="muted">3 min</span></div>
<div class="name"><a href="#">Jim</a></div>
<div class="text">Raw denim you probably haven't heard of them jean shorts Austin.</div>
<div class="tools">
<a href="#" class="btn btn-minier btn-info"><i class="icon-only icon-share-alt"></i></a>
</div>
</div>
</div>
<div class="itemdiv dialogdiv">
<div class="user">
<img alt="Alexa's Avatar" src="avatars/avatar1.png" />
</div>
<div class="body">
<div class="time"><i class="icon-time"></i> <span class="green">4 min</span></div>
<div class="name"><a href="#">Alexa</a></div>
<div class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
<div class="tools">
<a href="#" class="btn btn-minier btn-info"><i class="icon-only icon-share-alt"></i></a>
</div>
</div>
</div>
</div>
<form>
<div class="form-actions input-append">
<input placeholder="Type your message here ..." type="text" class="width-75" name="message" />
<button class="btn btn-small btn-info no-radius" onclick="return false;"><i class="icon-share-alt"></i> <span class="hidden-phone">Send</span></button>
</div>
</form>
</div><!--/widget-main-->
</div><!--/widget-body-->
</div><!--/widget-box-->
</div><!--/span-->
</div><!--/row--> </div><!--/row-->
<div class="hr hr32 hr-dotted"></div> <div class="hr hr32 hr-dotted"></div>

View File

@ -34,8 +34,8 @@
<b class="arrow icon-angle-down"></b> <b class="arrow icon-angle-down"></b>
</a> </a>
<ul class="submenu"> <ul class="submenu">
<li><a href="pricing.html"><i class="icon-double-angle-right"></i> Pricing Tables</a></li> <li><a href="#" onclick="loadMenus();"><i class="icon-double-angle-right"></i> 菜单管理</a></li>
<li><a href="invoice.html"><i class="icon-double-angle-right"></i> Invoice</a></li> <li><a href="invoice.html"><i class="icon-double-angle-right"></i> 按钮管理</a></li>
<li><a href="login.html"><i class="icon-double-angle-right"></i> Login & Register</a></li> <li><a href="login.html"><i class="icon-double-angle-right"></i> Login & Register</a></li>
<li><a href="error-404.html"><i class="icon-double-angle-right"></i> Error 404</a></li> <li><a href="error-404.html"><i class="icon-double-angle-right"></i> Error 404</a></li>
<li><a href="error-500.html"><i class="icon-double-angle-right"></i> Error 500</a></li> <li><a href="error-500.html"><i class="icon-double-angle-right"></i> Error 500</a></li>
@ -45,4 +45,12 @@
</ul><!--/.nav-list--> </ul><!--/.nav-list-->
<div id="sidebar-collapse"><i class="icon-double-angle-left"></i></div> <div id="sidebar-collapse"><i class="icon-double-angle-left"></i></div>
</div><!--/#sidebar--> </div><!--/#sidebar-->
<script type="text/javascript">
function loadMenus() {
$.get('@Url.Action("List","Button")', function (data, status) {
$("#main-content").html(data);
});
}
</script>

View File

@ -11,7 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3 Domain(领域层)", "3 Do
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "4 Infrastructure(基础设施层)", "4 Infrastructure(基础设施层)", "{EE008F5F-FD7F-407F-B201-6486BDE6B9F1}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "4 Infrastructure(基础设施层)", "4 Infrastructure(基础设施层)", "{EE008F5F-FD7F-407F-B201-6486BDE6B9F1}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "5 Test(测试)", "5 Test(测试)", "{C59DF46D-7815-462B-9FFF-750B2120B75B}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "6 Test(测试)", "6 Test(测试)", "{C59DF46D-7815-462B-9FFF-750B2120B75B}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAuth.Web", "OpenAuth.Web\OpenAuth.Web.csproj", "{814246F3-BC71-43CC-8CD4-2A107F2B3B52}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAuth.Web", "OpenAuth.Web\OpenAuth.Web.csproj", "{814246F3-BC71-43CC-8CD4-2A107F2B3B52}"
EndProject EndProject
@ -23,6 +23,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAuth.Infrastructure", "
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAuth.UnitTest", "OpenAuth.UnitTest\OpenAuth.UnitTest.csproj", "{2E6B5B73-7757-43F0-8AC8-3030F7C191B8}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAuth.UnitTest", "OpenAuth.UnitTest\OpenAuth.UnitTest.csproj", "{2E6B5B73-7757-43F0-8AC8-3030F7C191B8}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "5 Repository", "5 Repository", "{7A38939E-FC9B-44A9-BD3D-E0CE438624E6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAuth.Repository", "OpenAuth.Repository\OpenAuth.Repository.csproj", "{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -49,6 +53,10 @@ Global
{2E6B5B73-7757-43F0-8AC8-3030F7C191B8}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E6B5B73-7757-43F0-8AC8-3030F7C191B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E6B5B73-7757-43F0-8AC8-3030F7C191B8}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E6B5B73-7757-43F0-8AC8-3030F7C191B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E6B5B73-7757-43F0-8AC8-3030F7C191B8}.Release|Any CPU.Build.0 = Release|Any CPU {2E6B5B73-7757-43F0-8AC8-3030F7C191B8}.Release|Any CPU.Build.0 = Release|Any CPU
{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -59,6 +67,7 @@ Global
{6108DA8E-92A1-4ABE-B9F5-26D64D55CA2C} = {7618C0B1-D556-40C2-B2DD-CCECDC4E46B6} {6108DA8E-92A1-4ABE-B9F5-26D64D55CA2C} = {7618C0B1-D556-40C2-B2DD-CCECDC4E46B6}
{ADAE08C0-DE22-41F7-9F94-0E62AE327C25} = {EE008F5F-FD7F-407F-B201-6486BDE6B9F1} {ADAE08C0-DE22-41F7-9F94-0E62AE327C25} = {EE008F5F-FD7F-407F-B201-6486BDE6B9F1}
{2E6B5B73-7757-43F0-8AC8-3030F7C191B8} = {C59DF46D-7815-462B-9FFF-750B2120B75B} {2E6B5B73-7757-43F0-8AC8-3030F7C191B8} = {C59DF46D-7815-462B-9FFF-750B2120B75B}
{E8DF8DEA-E2CF-4BDB-8F4F-3F8205B0E03A} = {7A38939E-FC9B-44A9-BD3D-E0CE438624E6}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.2\lib\NET35 EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.2\lib\NET35