您的位置:首页 > 运维架构 > 网站架构

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

2008-10-25 00:17 253 查看
在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的实现机制还没有仔细研究,估计是可能要和用户添加的一些事件进行关联的了,日后弄明白了可以添加上该功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: