在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的实现机制还没有仔细研究,估计是可能要和用户添加的一些事件进行关联的了,日后弄明白了可以添加上该功能。

时间: 2024-08-22 14:23:17

在DotNetNuke中加入组织架构(三)的相关文章

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

组织架构首先一定是树状的,这就是为什么我们要抛弃DotNetNuke原有的安全角色而重新另建一套的一个最主要的原因--当然,并不是抛弃,在之前说过,我们希望"安全角色"和"组织架构"可以各司其职,在我们的系统里面各自发挥作用而已. 除了体现上下级关系的"部门"之外,我们还希望仍然保留一个"组"的概念.部门体现的是层级关系,而Group则是体现一种横向的关系,比如,把所有的"部门"的负责人都放到一个"

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

稍微解释一下:我希望用DotNetNuke不但可以做Internet的东西,而且也可以做Intranet的业务:从目前的情况来看,一般来说,Intranet的业务逻辑可能比Internet的业务逻辑要稍微复杂一点--当然,这并不是确定的事情.在这方面做了一些探索,希望将之分享出来. 对于DotNetNuke来说,已经有了"安全角色","安全角色"在DotNetNuke中非常重要,是用来控制页面和模块权限非常重要的概念,在我们的系统中,安全角色和权限,形成了一个权限矩

网站运营中活动组织的三项注意

上周给大家分享了网站运营中组织活动的三个技巧,今天再跟大家讲解活动组织的三项注意.如果说组织技巧可以使活动收到更好的效果,注意事项就是保证活动能够成功举行的基础. 第一,活动主题要符合http://www.aliyun.com/zixun/aggregation/8982.html">网站定位. 定位的重要性几乎没有争议,一个网站,抑或是一个品牌,其所有的市场及推广活动都应该符合网站或者品牌的定位,只有这样,才能在网站运营的过程中提升自己的识别度,相反,如果组织活动的主题跟自己的定位大相径

笙淋:网络推广团队中的组织架构分析

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近利用一点时间,把我们网络推广团队的大概组织架构与大家分享一下,希望做网络推广的朋友可以利用一下. 电子商务主管: 负责整个网络推广中心的管理,进行工作分工与协调.监督.考核.所有网络推广中心账号密码的 管理.负责管理所有网络推广方案.网络广告标准.电子杂志.负责网络培训与交流经验. 数据分析部: 每日填写百度竞价监测表及其他网络广告监测数

网站运营中活动组织的三个技巧

在网站运营中,有一项非常重要的工作,那就是组织活动.不管是社交网站还是电商平台,甚至是官方微博,日常运营都离不开活动的组织,活动可以有效的提升用户的活跃度.提高网站粘性,对于电商平台还可以直接促进销售.活动如此重要,那在组织活动的过程中有哪些技巧呢? 首先,活动主题及奖品可以融入品牌及http://www.aliyun.com/zixun/aggregation/9241.html">情感因素. 人类是情感动物,赋予活动情感因素,一方面能够提高用户的参与热情,另一方面还可以让用户在活动结束

企业微信组织架构同步优化的思路与实操演练

作为企业级的微信,在业务快速发展的背景下,迭代优化的要求也越发急迫.企业微信初版的全量同步方案在快速的业务增长面前已经捉襟见肘,针对其遇到的问题,怎样做好组织架构同步优化?这是又一篇来自微信团队的技术实战. 写在前面 企业微信在快速发展过程中,陆续有大企业加入使用,企业微信初版采用全量同步方案,该方案在大企业下存在流量和性能两方面的问题,每次同步消耗大量流量,且在 iPhone 5s 上拉取 10w+ 成员架构包解压时会提示 memory warning 而应用崩溃. 全量同步方案难以支撑业务的

三人谈:哪种IT组织架构更合适?

组织架构是管理学中最基本的概念之一,也是许多年来改变最多最快的领域之一.如果把经营一个组织比喻成盖房子,那么组织架构就是房子的框架,只有具备稳固的框架才能添砖加瓦,建成坚固的房子.如果组织架构不合理,就可能导致房子不牢固,甚至有倒塌的危险. 当面临重新对企业内部的IT团队组织架构进行思考时,需要设立多少个部门.每个部门的岗位如何设置.每个具体岗位的http://www.aliyun.com/zixun/aggregation/7131.html">工作职责是什么.具体需要多少人员等问题,会

三大运营商岁末调整组织架构终端部门级别提高

(记者 焦立坤)面对激荡的3G变局,三大电信运营商在岁末年初不约而同进行了内部组织架构的调整. 记者昨日获悉,中国移动提高了手机终端部门在公司组织架构中的位置,新近设立"终端部".这是一个独立的二级部门,也是中移动多年来首次设立专门的终端部门.此前,该公司的终端管理业务从属于市场经营部和数据部,前者设有终端营销中心,后者设有终端管理处.新设的终端部功能更加集中,职能更加灵活.业内人士分析认为,中移动此举再度表明其狠抓终端手机的决心与力度.该公司总裁王建宙上月公开表示,今年将加大对平价3

MySQL中数据目录的组织架构

归根到底,MySQL是运行在操作系统上的一个软件,它需要借助于文件系统存储数据,本文主要介绍MySQL数据目录的 组织架构. 数据目录的位置 可以通过以下几个方法查看MySQL数据目录的位置: 1)对于一个正在运行的MySQL服务器来说,可以通过查看mysqld的进程获取MySQL数据目录的位置,如下所示: [root@lx202 /data/mysql/data ]# ps -ef|grep mysqld root 5841 7337 0 15:09 pts/1 00:00:00 grep -