在DotNetNuke中加入组织架构(三)


当我们将组织架构的功能开发完成之后,就可以在系统中添加组织架构了。

  在这里,有一点需要抱怨一下DotNetNuke,并且赞扬一下Joomla等CMS,Joomla和Drupal都是可以比较方便的增加管理模块的,也就是非普通模块,而是后台管理的模块,如果大家到Joomla的网站上去看一下它的Extentions的话,就可以发现Joomla有多少管理模块了;但是——,也可能是因为我的无知,我还不知道如何将我的某一个功能添加到DotNetNuke的“主机管理”或者“网站管理”的菜单下面,使之堂而皇之的成为后台管理的一部分。当然,并不是DotNetNuke没有这部分的功能,我们在页面的继承IActionable.ModuleActions的时候,完全可以指定某个菜单的权限为DotNetNuke.Security.SecurityAccessLevel.Admin或者是 DotNetNuke.Security.SecurityAccessLevel.Host,这样,就限定我们添加的菜单的权限只有主机管理员或者是网站管理员才能够使用。但是,对于门户内统一的架构,其实不必从某一个模块进入,从“网站管理”进入,似乎更为合理一些。

  在(二)中,我们给出了Department的数据结构(以下结构只是一部分,如果需要完整的数据结构,请参照《在DotNetNuke中加入组织架构(二)》:

  CREATE TABLE {databaseOwner}[{objectQualifier}RedStart_Department]

  (

  [DeptID] [int] NOT NULL IDENTITY(1, 1),

  [PortalID] [int] NOT NULL,

  [ParentID] [int] NULL,

  [DeptName] [nvarchar] (50) NOT NULL,

  [DeptDescribe] [nvarchar] (200) NULL,

  [DeptOrder] [int] NOT NULL,

  [IsValid] [bit] NOT NULL DEFAULT(1),

  [IsDept] [bit] NOT NULL DEFAULT(1),

  [CreateDate] [datetime] NULL ,

  [CreateUser] [int] NULL ,

  )

   大家可以看到,和一般的模块不同,在我们的数据结构中,没有一般模块都会有的ModuleID,而有 PortalID,这就说明了,我们的组织架构的数据结构,是整个Portal通用的,和某个模块完全无关,因为我们希望我们的这个结构可以为所有的模块所用(如果可以的话),相对来说,比模块的数据结构要高一个级别,这就是为什么我们希望这个功能(如果单独列为一个功能的话)可以在网站管理中出现。

  类似的需求应该是很多的,所以,DotNetNuke的后台管理的模块,应该也可以由程序员自行添加才对。

  好了,以上只是一点牢骚而已,为了使用这个功能,我们仍然从模块的菜单进入,也就是说,为了使用这个功能,我们要有至少一个模块,然后点击模块的快捷菜单,调出此功能。

  

  由于功能较多,所以,我在进入之后,又增加了一层功能的选择

  

  我们最终出现的组织架构,可能是如下图所示这样:

  

  在进行管理的时候,可以无限层级的增加,并且可以将暂时不需要的机构禁用掉。树形的架构比DotNetNuke的安全角色更符合我们的实际情况。

  而用户管理则是要对我们的另外一个数据结构,也就是“组织结构—用户表”进行维护了,如下图所示:

  

  (人员管理,为了体现DNN的多语言,我们特意截取了一个E文版界面)

   有了这几个界面,我们基本上就完成了从组织架构,到人员从属的整个管理功能了。

  这个模块仍然有改进的空间,我很喜欢DotNetNuke的这个功能

  

  Auto Assignment,也就是自动分配功能。假设我们有一个“全体用户”的组,如果有这个功能的话,那么新增加的用户(无论是管理员添加还是用户自行注册)都可以自动放到这个组中,那岂不是对我们来说方便了很多?不过,Auto Assignment的实现机制还没有仔细研究,估计是可能要和用户添加的一些事件进行关联的了,日后弄明白了可以添加上该功能


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3