点这里进入ABP入门教程目录

菜单更新

在展示层(即JD.CRS.Web.Mvc)的Startup下打开CRSNavigationProvider.cs //用以存放菜单相关信息

修改如下

 using Abp.Application.Navigation;
using Abp.Localization;
using JD.CRS.Authorization; namespace JD.CRS.Web.Startup
{
/// <summary>
/// This class defines menus for the application.
/// </summary>
public class CRSNavigationProvider : NavigationProvider
{
public override void SetNavigation(INavigationProviderContext context)
{
context.Manager.MainMenu
.AddItem( //一级菜单 - 首页
new MenuItemDefinition(
PageNames.Home,
L("HomePage"),
url: "",
icon: "home",
requiredPermissionName: PermissionNames.Pages_Home
)
)
.AddItem( //一级菜单 - 基础数据
new MenuItemDefinition(
"Data",
L("Data"),
icon: "storage"
).AddItem( //二级菜单 - 办公室设置
new MenuItemDefinition(
PageNames.Office,
L("Office"),
url: "Office",
requiredPermissionName: PermissionNames.Pages_Office
)
).AddItem( //二级菜单 - 院系设置
new MenuItemDefinition(
PageNames.Department,
L("Department"),
url: "Department",
requiredPermissionName: PermissionNames.Pages_Department
)
).AddItem( //二级菜单 - 课程设置
new MenuItemDefinition(
PageNames.Course,
L("Course"),
url: "Course",
requiredPermissionName: PermissionNames.Pages_Course
)
).AddItem( //二级菜单 - 教职员设置
new MenuItemDefinition(
PageNames.Instructor,
L("Instructor"),
url: "Instructor",
requiredPermissionName: PermissionNames.Pages_Instructor
)
).AddItem( //二级菜单 - 学生设置
new MenuItemDefinition(
PageNames.Student,
L("Student"),
url: "Student",
requiredPermissionName: PermissionNames.Pages_Student
)
)
)
.AddItem( //一级菜单 - 综合服务
new MenuItemDefinition(
"Service",
L("Service"),
icon: "business"
).AddItem( //二级菜单 - 教职员办公室设置
new MenuItemDefinition(
PageNames.OfficeInstructor,
L("OfficeInstructor"),
url: "OfficeInstructor"
)
).AddItem( //二级菜单 - 院系主任设置
new MenuItemDefinition(
PageNames.DepartmentInstructor,
L("DepartmentInstructor"),
url: "DepartmentInstructor"
)
).AddItem( //二级菜单 - 院系课程设置
new MenuItemDefinition(
PageNames.DepartmentCourse,
L("DepartmentCourse"),
url: "DepartmentCourse"
)
).AddItem( //二级菜单 - 教职员课程设置
new MenuItemDefinition(
PageNames.InstructorCourse,
L("InstructorCourse"),
url: "InstructorCourse"
)
).AddItem( //二级菜单 - 学生课程设置
new MenuItemDefinition(
PageNames.StudentCourse,
L("StudentCourse"),
url: "StudentCourse"
)
)
)
.AddItem( //一级菜单 - 管理报表
new MenuItemDefinition(
"Report",
L("Report"),
icon: "poll"
).AddItem( //二级菜单 - 办公室报表
new MenuItemDefinition(
PageNames.OfficeReport,
L("OfficeReport"),
url: "OfficeReport",
requiredPermissionName: PermissionNames.Pages_OfficeReport
)
).AddItem( //二级菜单 - 院系报表
new MenuItemDefinition(
PageNames.DepartmentReport,
L("DepartmentReport"),
url: "DepartmentReport",
requiredPermissionName: PermissionNames.Pages_DepartmentReport
)
).AddItem( //二级菜单 - 课程报表
new MenuItemDefinition(
PageNames.CourseReport,
L("CourseReport"),
url: "CourseReport",
requiredPermissionName: PermissionNames.Pages_CourseReport
)
).AddItem( //二级菜单 - 教职员报表
new MenuItemDefinition(
PageNames.InstructorReport,
L("InstructorReport"),
url: "InstructorReport",
requiredPermissionName: PermissionNames.Pages_InstructorReport
)
).AddItem( //二级菜单 - 学生报表
new MenuItemDefinition(
PageNames.StudentReport,
L("StudentReport"),
url: "StudentReport",
requiredPermissionName: PermissionNames.Pages_StudentReport
)
)
)
.AddItem( //一级菜单 - 系统设置
new MenuItemDefinition(
"Setting",
L("Setting"),
icon: "settings"
).AddItem( //二级菜单 - 租户管理
new MenuItemDefinition(
PageNames.Tenants,
L("Tenants"),
url: "Tenants",
requiredPermissionName: PermissionNames.Pages_Tenants
)
).AddItem( //二级菜单 - 用户管理
new MenuItemDefinition(
PageNames.Users,
L("Users"),
url: "Users",
requiredPermissionName: PermissionNames.Pages_Users
)
).AddItem( //二级菜单 - 角色管理
new MenuItemDefinition(
PageNames.Roles,
L("Roles"),
url: "Roles",
requiredPermissionName: PermissionNames.Pages_Roles
)
)
)
.AddItem( //一级菜单 - 关于
new MenuItemDefinition(
PageNames.About,
L("About"),
url: "About",
icon: "info",
requiresAuthentication: true
)
);
} private static ILocalizableString L(string name)
{
return new LocalizableString(name, CRSConsts.LocalizationSourceName);
}
}
}

权限更新

在领域层(即JD.CRS.Core)的Authorization下打开CRSAuthorizationProvider.cs //用以存放权限相关信息

修改如下

 using Abp.Authorization;
using Abp.Localization;
using Abp.MultiTenancy; namespace JD.CRS.Authorization
{
public class CRSAuthorizationProvider : AuthorizationProvider
{
private static ILocalizableString L(string name)
{
return new LocalizableString(name, CRSConsts.LocalizationSourceName);
}
public override void SetPermissions(IPermissionDefinitionContext context)
{
context.CreatePermission(PermissionNames.Pages_Home, L("Home"));
context.CreatePermission(PermissionNames.Pages_Office, L("Office"));
context.CreatePermission(PermissionNames.Pages_Department, L("Department"));
context.CreatePermission(PermissionNames.Pages_Course, L("Course"));
context.CreatePermission(PermissionNames.Pages_Instructor, L("Instructor"));
context.CreatePermission(PermissionNames.Pages_Student, L("Student"));
context.CreatePermission(PermissionNames.Pages_OfficeInstructor, L("OfficeInstructor"));
context.CreatePermission(PermissionNames.Pages_DepartmentInstructor, L("DepartmentInstructor"));
context.CreatePermission(PermissionNames.Pages_DepartmentCourse, L("DepartmentCourse"));
context.CreatePermission(PermissionNames.Pages_InstructorCourse, L("InstructorCourse"));
context.CreatePermission(PermissionNames.Pages_StudentCourse, L("StudentCourse"));
context.CreatePermission(PermissionNames.Pages_OfficeReport, L("OfficeReport"));
context.CreatePermission(PermissionNames.Pages_DepartmentReport, L("DepartmentReport"));
context.CreatePermission(PermissionNames.Pages_CourseReport, L("CourseReport"));
context.CreatePermission(PermissionNames.Pages_InstructorReport, L("InstructorReport"));
context.CreatePermission(PermissionNames.Pages_StudentReport, L("StudentReport"));
context.CreatePermission(PermissionNames.Pages_Tenants, L("Tenants"), multiTenancySides: MultiTenancySides.Host);
context.CreatePermission(PermissionNames.Pages_Users, L("Users"));
context.CreatePermission(PermissionNames.Pages_Roles, L("Roles"));
}
}
}

关联更新

与菜单/权限关联的两个静态类也需要更新

JD.CRS.Web.Mvc\Startup\PageNames.cs //用以存放菜单相关静态信息

 namespace JD.CRS.Web.Startup
{
public class PageNames
{
public const string Home = "Home";
public const string Office = "Office";
public const string Department = "Department";
public const string Course = "Course";
public const string Instructor = "Instructor";
public const string Student = "Student";
public const string OfficeInstructor = "OfficeInstructor";
public const string DepartmentInstructor = "DepartmentInstructor";
public const string DepartmentCourse = "DepartmentCourse";
public const string InstructorCourse = "InstructorCourse";
public const string StudentCourse = "StudentCourse";
public const string OfficeReport = "OfficeReport";
public const string DepartmentReport = "DepartmentReport";
public const string CourseReport = "CourseReport";
public const string InstructorReport = "InstructorReport";
public const string StudentReport = "StudentReport";
public const string Tenants = "Tenants";
public const string Users = "Users";
public const string Roles = "Roles";
public const string About = "About";
}
}

JD.CRS.Core\Authorization\PermissionNames.cs //用以存放权限相关静态信息

 namespace JD.CRS.Authorization
{
public static class PermissionNames
{
public const string Pages_Home = "Pages.Home";
public const string Pages_Data = "Menu.Data";
public const string Pages_Operation = "Menu.Operation";
public const string Pages_Report = "Menu.Report";
public const string Pages_Setting = "Menu.Setting";
public const string Pages_About = "Pages.About";
public const string Pages_Office = "Pages.Office";
public const string Pages_Department = "Pages.Department";
public const string Pages_Course = "Pages.Course";
public const string Pages_Instructor = "Pages.Instructor";
public const string Pages_Student = "Pages.Student";
public const string Pages_OfficeInstructor = "Pages.OfficeInstructor";
public const string Pages_DepartmentInstructor = "Pages.DepartmentInstructor";
public const string Pages_DepartmentCourse = "Pages.DepartmentCourse";
public const string Pages_InstructorCourse = "Pages.InstructorCourse";
public const string Pages_StudentCourse = "Pages.StudentCourse";
public const string Pages_OfficeReport = "Pages.OfficeReport";
public const string Pages_DepartmentReport = "Pages.DepartmentReport";
public const string Pages_CourseReport = "Pages.CourseReport";
public const string Pages_InstructorReport = "Pages.InstructorReport";
public const string Pages_StudentReport = "Pages.StudentReport";
public const string Pages_Tenants = "Pages.Tenants";
public const string Pages_Users = "Pages.Users";
public const string Pages_Roles = "Pages.Roles";
}
}

ABP入门教程13 - 更新菜单的更多相关文章

  1. ABP入门教程14 - 更新多语言

    点这里进入ABP入门教程目录 设置语种 新增语种 数据库操作 打开多语言表AbpLanguages,添加一条记录. 程序操作 在基础设施层(即JD.CRS.EntityFrameworkCore)的\ ...

  2. ABP入门教程0 - 目录

    ABP入门教程 本教程主要讲解如何基于ABP实现CURD(增删改查)示例. 源码已分享:   GitHub   Gitee ABP入门教程0 - 目录 ABP入门教程1 - 开篇 ABP入门教程2 - ...

  3. ABP入门教程7 - 基础设施层更新数据库

    点这里进入ABP入门教程目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityF ...

  4. ABP入门教程12 - 展示层实现增删改查-脚本

    点这里进入ABP入门教程目录 创建目录 在展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\下新建文件夹Course //用以存放Course相关脚 ...

  5. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  6. 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程

    基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...

  7. ABP入门教程

    ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...

  8. ABP入门教程5 - 界面调整

    点这里进入ABP入门教程目录 调整前 调整后 调整项 页面标题 把favicon.ico替换为指定Logo JD.CRS.Web.Mvc\wwwroot\favicon.ico 顶部工具栏 把logo ...

  9. ABP入门教程8 - 应用层创建应用服务

    点这里进入ABP入门教程目录 创建目录 在应用层(即JD.CRS.Application)下创建文件夹Course //用以存放Course相关应用服务 在JD.CRS.Application/Cou ...

随机推荐

  1. 微服务与敏捷开发(Scrum/Kanban)的核心思想之我见

    微服务与敏捷开发(Scrum/Kanban)的核心思想之我见   关于"微服务"和"敏捷开发"的文章网络上有很多,所以这里不再重复叙述这些概念的解释和特点,而是 ...

  2. sql server中取交集、差集和并集的语法

    这里简单总结下在SQL Server中取交集.差集和并集的语法. 交集:INTERSECT(适用于两个结果集) SELECT ID, NAME FROM YANGGB1 INTERSECT SELEC ...

  3. 一起学SpringMVC之异常处理

    在系统开发过程中,异常处理是不可避免,如果异常处理不好,会给用户造成很差的体验,本文主要讲解在SpringMVC开发过程中,异常处理的相关知识点,仅供学习分享使用,如有不足之处,还请指正. 概述 在S ...

  4. python实现智能语音天气预报

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 飞奔的帅帅 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  5. AES加密原理和AOE工程实践

    在AI业务的开发的过程中,我们常常需要对模型文件进行加密.我们从以下几个方面来说一说AES的加密原理以及AOE里的工程实践. 常见的加密算法 AOE对模型加密需求的思考 AES的加密原理 AOE工程实 ...

  6. leaflet 结合 Echarts4 实现统计图(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

  7. mybatis+sqlServer 实现insertOrUpdate

    这两天遇到一个头疼的问题,我们系统需要请求第三方数据,第三方收到请求后会生成相应的数据并入库,我们通过定时任务将第三方数据同步到我们数据库.当我们发送请求后第三方会立即返回一个值,我们会根据返回值去数 ...

  8. 快速排序 Vs. 归并排序 Vs. 堆排序——谁才是最强的排序算法

    知乎上有一个问题是这样的: 堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序? 昨 ...

  9. No package gcc48-c++ available

    yum install gcc48-c++ linux 下编译安装 rocksdb,发现没有这个 gcc48-c++,感觉这个48 应该是版本号,于是在 yum install gcc-c++,安装成 ...

  10. sass参考手册

    http://sass.bootcss.com/docs/sass-reference/