ABP入门教程13 - 更新菜单
菜单更新
在展示层(即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 - 更新菜单的更多相关文章
- ABP入门教程14 - 更新多语言
点这里进入ABP入门教程目录 设置语种 新增语种 数据库操作 打开多语言表AbpLanguages,添加一条记录. 程序操作 在基础设施层(即JD.CRS.EntityFrameworkCore)的\ ...
- ABP入门教程0 - 目录
ABP入门教程 本教程主要讲解如何基于ABP实现CURD(增删改查)示例. 源码已分享: GitHub Gitee ABP入门教程0 - 目录 ABP入门教程1 - 开篇 ABP入门教程2 - ...
- ABP入门教程7 - 基础设施层更新数据库
点这里进入ABP入门教程目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityF ...
- ABP入门教程12 - 展示层实现增删改查-脚本
点这里进入ABP入门教程目录 创建目录 在展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\下新建文件夹Course //用以存放Course相关脚 ...
- ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程
基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...
- ABP入门教程
ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...
- ABP入门教程5 - 界面调整
点这里进入ABP入门教程目录 调整前 调整后 调整项 页面标题 把favicon.ico替换为指定Logo JD.CRS.Web.Mvc\wwwroot\favicon.ico 顶部工具栏 把logo ...
- ABP入门教程8 - 应用层创建应用服务
点这里进入ABP入门教程目录 创建目录 在应用层(即JD.CRS.Application)下创建文件夹Course //用以存放Course相关应用服务 在JD.CRS.Application/Cou ...
随机推荐
- Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言
今年 5 月,谷歌在 I/O 大会上宣布,Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言. Kotlin 是一种面向现代多平台应用程序的编程语言,成为谷歌开发 Android ...
- 阿里云esc 安装 mysql8.0
打开 连接工具,我用的是 MobaXterm_Personal_12.1 (官网下载地址:https://moba.en.softonic.com/) 连接到 ecs,然后移除 默认的 mariadb ...
- linux bash变量作用域
linux bash变量作用域 一,思考一个问题,当在shell里执行某个程序时,shell是怎么找到这个程序的? shell会去$PATH环境变量定义的目录里去找这个命令.环境变量里一般包括/usr ...
- Netty面试题和解答(一)
基础 TCP和UDP的区别? TCP是面向连接的(在客户端和服务器之间传输数据之前要先建立连接),UDP是无连接的(发送数据之前不需要先建立连接) TCP提供可靠的服务(通过TCP传输的数据.无差错, ...
- pandas 初识(五)
1. 如何实现把一个属性(列)拆分成多列,产生pivot,形成向量信息,计算相关性? 例: class_ timestamp count 0 10 2019-01-20 13:23:00 1 1 10 ...
- How to: Supply Initial Data for the Entity Framework Data Model 如何:为EF数据模型提供初始数据
After you have introduced a data model, you may need to have the application populate the database w ...
- 松软科技web课堂:JavaScript If...Else 语句
条件语句用于基于不同条件执行不同的动作. 条件语句 在您写代码时,经常会需要基于不同判断执行不同的动作. 您可以在代码中使用条件语句来实现这一点. 在 JavaScript 中,我们可使用如下条件语句 ...
- 「SAP技术」如何看Z移动类型是复制哪个标准移动类型而创建的?
[SAP技术]SAP MM 如何看一个自定义移动类型是复制哪个标准移动类型而创建的? 比如项目上有一个自定义移动类型Z59,是复制551移动类型而定义的. OMJJ配置界面里,是有一个Ref字段.如下 ...
- 批发市场收记账管理系统(iPad与手机版)水产批发市场客户欠账、还款管理水产宝介绍 第八章 财务(应收账款,应付账款,已收账款,已付账款)
1.财务 ① 财务模块主功能(收支记账,记账类别,应收账款,应付账款,支付方式管理,账期管理) ② 支付设置 a 系统内置支付方式有6种 b 新增支付方式 新增支付方式 主要上传支付方式图标. ...
- Android 使用 aapt 命令查看 apk 包名
一.aapt 是什么 aapt 即Android Asset Packaging Tool,在SDK的build-tools目录下.该工具可以查看,创建, 更新ZIP格式的文档附件(zip, jar, ...