Open Atrium 是一套开源的团队协作和知识管理系统。它能提供团队交流、文档管理、日程安排、任务跟踪等功能。支持成员分组,支持权限划分,支持邮件提醒,支持版本控制。界面颜色和Logo可以自由更换。

作为 Drupal 针对内部网应用的一个发行版,Open Atrium 定义了一个极具扩展性的开发框架,这为企业采用 Drupal 量身定制自己的内部网提供了一个很好的范例,也为开发者打造成型的 Drupal 产品指明了方向。

Open Atrium是Drupal的第一个发行版,它的推出开创了以Drupal为基础构建互联网软件产品的先河。后来出现的几个发行版,如:Open Publish、Open Public、Acquia Commons、Commerce Kickstart等都或多或少的受到了Open Atrium开发思路的影响。随着Open Atrium的传播,Features模块及以此为基础的代码驱动的开发方式(Code Driven Develop)也在社区里逐渐流行起来,成为多人协作开发Drupal项目的常用方法。这篇文章是对Open Atrium的一个简单介绍以及一些常见问题的总结,供大家参考。

如何安装

Open Atrium 的安装和普通的 Drupal 安装类似,首先需要创建数据库,然后在 sites/default/ 目录下,复制 default.settings.php 并重命名为 settings.php ,还要确保web服务器对 sites/default/ 目录和 settings.php 文件拥有写权限。然后在浏览器地址栏中输入安装地址,按提示进行安装就可以。

需要注意的是,如果是用虚拟目录安装的话,虚拟目录后面要加斜线,如 http://localhost/alia/,否则可能无法正常访问。另外,用虚拟目录安装的时候,需要修改根目录下的 .htaccess 文件,以便使用简洁url。修改方法:找到 # RewriteBase /drupal 这一句,将最前面的注释号#去掉,然后将 drupal 改成你实际的虚拟目录名,然后保存。

本地安装,推荐使用Acquia Dev Desktop套件搭建运行环境,该套件专门针对drupal做了优化,能提供比较好的性能。下载地址: http://www.acquia.com/downloads,选择Drupal6版本下载。

如何使用

Open Atrium 是以群组为核心的,主要的功能都需要在群组中运行。所以安装完成之后,需要先创建群组,然后在群组中添加成员,开启需要的功能模块。完成这几步之后就可以使用了。各功能细节可以边使用边熟悉。

确认服务器支持邮件发送,linux主机一般都默认安装了sendmail,可以直接支持邮件发送。Windows主机可以自行配置邮件服务器,比较繁琐,如果嫌麻烦的话,可以安装drupal的smtp模块,配置好之后就可以让网站支持邮件发送了。

配置notifications,在admin/messaging/notifications,将 Immediate sending 和 User name, site data (Only the user name will be used) 这两项选上。

这样就配置好了,可以在发布内容的时候选上要通知的人,就能进行邮件通知了。准备一个用来发送和接收消息的邮箱,这个邮箱应该作为网站的主邮箱,最好和用户的邮箱区分开来。邮箱设置在 admin/settings/site-information,我用的是gmail的。

启用 mailhandler 和 Mail Comment 模块

在admin/content/mailhandler/add 添加mailhandler邮箱,几个必填项如下:- E-MAIL ADDRESS : 填写第1步准备的邮箱

- MAILBOX DOMAIN :pop.gmail.com

- MAILBOX PORT:995

- MAILBOX USERNAME:邮箱用户名

- MAILBOX PASSWORD:邮箱密码

- EXTRA COMMANDS:/ssl/novalidate-cert (linux主机下这么设置,Windows主机下没研究过)

- Delete messages after they are processed? 这项选中

- MESSAGE AUTHENTICATION METHOD:选择MailComment Default

在admin/messaging/mailcomment下配置mailcomment:- MASTER MAILCOMMENT MAILBOX:选择第4步中添加的邮箱

- MAIL COMMENT-ENABLED MAILBOXES:同上

- MAIL COMMENT CONTENT TYPES:选中Blog entry

配置cron

这样就配置好了,可以发一篇博客测试一下了。

Open Atrium 默认是需要注册登陆才能访问的,可以通过更改站点设置将站点访问方式改为公共访问。方法如下:用拥有管理员权限的账户登陆。

点击页面右上方的 设置 > 自定义特性。

在站点设置中将 "网站模式" 改为 "公共访问,开放注册"。

这样匿名用户也可以访问网站内容了,不过只能访问站点空间和公共群组中发布的内容,私有群组的内容仍然需要注册、登陆、加入该群组中才能访问。

以管理员身份登陆,在站点主界面(不要进入任何一个群组)点击右上方的“配置”,在下拉菜单中点击“自定义特性” 在打开的界面中将“站点设置”下的”通知“改为“社区:用户自主选择订阅”

这样 Notifications Team UI 模块就会被禁用,同时启用 Notifications UI 模块。文章页面上就会出现订阅链接。在admin/build/modules下启用drupal核心自带的locale模块

在admin/settings/language下添加语言,选择Chinese, Simplified,添加并设为默认语言

如果大家在安装的时候选择的是中文的话,那么1、2这两步应该已经设置好了,如果安装的是英文版,则需要手工开启

在admin/build/translate/search下搜索要翻译的字符串,然后翻译并保存即可。

如果想使用和我的演示站一样的中文语言包,可以点击这里下载在站点根目录下创建 Iirf.ini 文件

在 Iirf.ini 文件中加入如下代码:# Do not pass to drupal if the file or directory exists

RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^ - [L]

# Handle query strings on the end

RewriteRule /(.*)\?(.*)$ /index.php\?q=$1&$2 [I,L]

# now pass through to the generic handler

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^/(.*)$ /index.php?q=$1 [I,L]

Open Atrium 在匿名访问状态下,左上角只显示一个“登陆”链接,如何在旁边再显示一个“注册”链接呢,可以通过自定义主题来实现。方法如下:创建自定义主题(可以通过建Ginkgo的子主题来实现)。

在自定义主题的 template.php 文件中添加 THEME_preprocess_block 函数,示例代码:/**

* Preprocessor for theme_block().

*/

function YourThemeName_preprocess_block(&$vars) {

global $user;

if (!$user->uid) {

if ($vars['block']->delta == 'account') {

$item = menu_get_item('user/login');

$item2 = menu_get_item('user/register');

if ($item && $item['access']) {

$vars['content'] = l($item['title'], $item['href']);

$vars['content'] .= ' / ';

$vars['content'] .= l('注册', $item2['href']);

}

}

}

}

可以在自定义模块或feature中应用 hook_context_load_alter() 来实现。 在.module文件中添加以下代码:/**

* Implementation of hook_context_load_alter() for remove atrium-welcom_admin block.

*

* Alter a context directly after it has been loaded. Allows modules to alter

* a context object's reactions. While you may alter conditions, this will

* generally have no effect as conditions are cached for performance and

* contexts are loaded after conditions are checked, not before.

*

* @param &$context

* The context object by reference.

*/

function my_module_context_load_alter(&$context) {

if ($context->name === 'spaces_dashboard-custom-1' && isset($context->reactions['block'])) {

unset($context->reactions['block']['blocks']['atrium-welcome_admin']);

}

}

然后启用自定义模块或feature就可以了。

可以在自定义模块或feature中应用hook_spaces_presets_alter()来实现。

以私有群组(private group)为例,我们在自定义模块my_module中的my_module.module文件中应用hook_spaces_presets_alter()来去掉私有群组默认首页(dashborad)上的Welcome区块

示例代码:/**

* Implementation of hook_spaces_presets_alter()

*/

function my_module_spaces_presets_alter(&$items) {

// Store a reference to our target block section.

$blocks = &$items['atrium_groups_private']->value['context']['spaces_dashboard-custom-1:reaction:block']['blocks'];

// Remove "Welcome" block.

unset($blocks['atrium-welcome_member']);

}

若自定义模块未启用则需要启用模块,若模块已启用,如果不能看到效果,可以清一下缓存试试。

这个问题一般是因为相关内容类型设置里的 Organic group 选项没有更改配置造成的,

将 Organic groups usage: 设置为 Standard group post (typically only author may edit).

再发布新的内容就可以显示了。

在Open Atrium中,几乎所有的内容显示都是用views来实现的,最新动态区块也不例外。要调整该区块的显示条数和内容,需要在对应的view里进行修改。

首先需要在/admin/build/modules下开启views_ui模块,该模块默认是不开启的。

然后到/admin/build/views下,找到activity_listing这个view,然后点击Edit

在打开的页面上,找到 Items per page: 15 ,点击

在下方出现的编辑框中将默认值15改成你想每页想显示的条数,然后点击Update

最后别忘了点击Save保存view,否则修改不会生效。

修改显示的内容,可以通过调整Fields下的字段来实现。$ drush vdel cron_semaphore

$ drush cc all

Open Atrium里用户资料是一个单独的内容类型,所以可以在内容类型管理里面添加自定义字段,地址是:admin/content/node-type/profile/fields

比如要添加QQ字段,就可以在页面下方的New Field栏进行添加,Label里输入"QQ",Field name里输入"qq",Type of data to store 选择"Text",Form element to edit the data 选择"Text field",然后点击保存,进入字段属性设置界面,这里的属性一般保持默认的就行,点击底部的Save field settings 完成字段添加。

这样添加好了之后,用户的个人资料编辑表单上就会出现QQ一栏,但是现在填写上之后该字段并不能在用户面板上显示出来,还需要改一下views。

启用views_ui模块,然后在views列表里找到profile_display这个view,进入编辑页面,点击左侧Add display上方的Profile fields,在中间一栏最下方的fields中,加上新添加的QQ字段,然后保存,这样再到用户面板上,就可以看到QQ字段已经可以显示了。

由于Open Atrium的一个bug,用户资料上的Telephone等字段名称在显示的时候不能应用自定义翻译,这个就需要在内容类型的字段管理里面把字段名改成中文就可以了。

这个问题是prul模块对后台路径进行了转移造成的,可以通过为该模块打补丁,然后配置一下路径排除就可以。如果是用的我的中文修正版的话,补丁已经打上了,这步就可以略过,直接进行下面的配置就行。

补丁地址:https://raw.github.com/wannianchuan/open-atrium-patches/master/purl_diable_path.patch

下载之后,放到站点根目录下,然后用 git apply purl_diable_path.patch 打上就可以。

打上之后需要再清一下系统缓存。这样purl就会多了一个排除路径的功能,可以通过这个地址访问到: /admin/settings/purl/disabled

在输入框里填上 admin/* ,然后点击 Add pathset ,这样下方就会多出一行配置,在那行配置后面选中 “群组空间” , 然后保存就可以了。

这样再访问手册排序页面就不会出错了。

社区的开发文档 https://community.openatrium.com/documentation-en/node/440

nuvole团队写了一些很棒的开发心得 也很值得学习 http://nuvole.org/blog/open-atrium

api文档 http://api.acquia.com/api/open_atrium

用atrim创建对外项目站点的案例: http://www.agileapproach.com/blog-entry/creating-public-facing-program-sites-open-atrium

在代码里或者菜单管理界面将自定义的菜单指定到features菜单下,自定义菜单就可以显示在主导航里了。

是因为Open Atrium应用了og模块,如果发布的node是属于某个群组的话,在该node显示的时候调用的是:profiles/openatrium/modules/contrib/og/theme/node-og-group-post.tpl.php 这个模板。

要想在自定义主题中覆盖该模板,首先必须保证自定义主题中存在node.tpl.php,然后把node-og-group-post.tpl.php 这个模板复制到你的自定义主题目录下,然后修改它,就可以了。

在自定义模块中应用 hook_views_data 定义[table][group]

不同之处在于:站点的区块设置里设置的会对所有的页面起作用,不只是主面板,而在Spaces Dashboard里设置的只对面板起作用。

这是因为博客页面上的“最新评论”区块是在context里单独设置的,可以到context管理界面找到blog_listing这个context,看一下它的Reactions下的Blocks。

区别就是:盒子是个特别的区块,可以提供就地编辑功能,不过得在创建的时候就填上内容保存了,以后才能编辑,否则不显示。

这是因为有的区块是只能出现在群组中而不能出现在站点的主面板上,而有的区块是在没有内容的时候不显示,当拖拽这类栏目时,都会出现这个提示。

可以用任务跟踪页面右侧的搜索表单来进行搜索,搜索的时候把“显示已关闭的任务”这个选项选上就可以了。

可能是因为没有运行cron的原因,因为任务跟踪的搜索表单用的是搜索模块建立的索引来和输入的关键词进行匹配的,而搜索索引是在运行cron任务的时候建立的,如果cron没有运行过,搜索索引就没有建立,这样输入的关键词就没法被匹配到,也就搜不到结果了。

解决方法是:可以在网站状态管理页面(admin/reports/status),手动运行一下cron; 也可以配置一下cron自动运行,这个在drupal官方文档里详细的介绍,可参见cron配置说明。

一般是因为没有配置整洁链接(clean url)的缘故,配置好了就不会出现这个错误了。

Open Atrium可以和多种所见即所得编辑器集成,如CKeditor、TinyMCE等,下面以TinyMCE例,介绍一下集成方法。

1.下载并安装wysiwyg模块

2.在sites/all 目录下新建 libriaries 目录

3.从TinyMCE官方网站上下载TineMCE安装包

4.将TinyMCE安装包解压到我们第2步创建的 libriaries 目录下,并重命名为 tinymce

5.到wysiwyg配置界面(admin/settings/wysiwyg) 将Full HTML的Editor指定为Tiny MCE

6.还是在同一界面,点击Operations下面的Edit,然后在Buttons and plugins配置项里选择想要的按钮

7.到输入格式配置界面(admin/settings/filters)将Full HTML设置为默认格式

8.到性能管理界面(admin/settings/performance)清空一下缓存

有一个值得注意的地方,就是如果站点安装的模块很多的话,编辑器可能在IE8下面不能正常显示,这是因为页面加载的css数量超过31个时,超出的css不被IE识别造成的。解决这个问题,可以在性能管理界面(admin/settings/performance)启用css优化,这样css文件就被整合到一个文件中,数量限制的问题也就解决了。

1.下载最新的中文语言包

2.解压后将语言包中的所有zh-cn.js重命名为zh-hans.js,这是因为drupal能识别的中文标识为zh-hans

3.将语言包中所有文件中出现的 zh-cn 替换为 zh-hans

4.复制语言包中的所有文件到TinyMCE库所在目录,drupal6下该目录应该为 sites/all/libraries/tinymce/jscripts/tine_mce

5.如果启用了css或js优化的话,需要清空一下缓存

1.下载并安装IMCE模块,下载地址:http://drupal.org/project/imce

2.下载并安装IMCE Wysiwyg brige模块,下载地址:http://drupal.org/project/imce_wysiwyg

3.到IMCE配置界面(admin/settings/imce) ,将特定的IMCE profile 赋给需要使用图片管理的用户角色,IMCE profile 可以用默认的,也可以创建新的

4.到Wysiwyg配置界面(admin/settings/wysiwyg),编辑TinyMCE 配置,在按钮选项那里把imce选上,然后保存

5.这样再用TinyMCE编辑内容的时候,点开图片按钮,会发现图片url输入框后面多了个浏览按钮,点击这个按钮会出现一个图片管理窗口,使用户可以选择已经上传的图片也可以上传新图片,不管是选择已存在的还是上传完新的图片,完成之后,点击图片管理窗口顶部的Insert file,就可以把图片路径自动填充到TinyMCE图片url输入框中了,剩下的操作就和默认的TinyMCE编辑器图片操作一样了。

团队协助 开源项目_Open Atrium 是一套开源的团队协作和知识管理系统相关推荐

  1. 开源项目_可能使用到的开源项目集合

    可能会使用到的开源项目集合: http://www.oschina.net/news/69808/2015-annual-ranking-top-100-new-open-source-softwar ...

  2. java的开源项目哪里找,我想参加开源项目的开发,请问在网上去哪找这样的项目? 纯C语言的(非C++或JAVA)...

    我想参加开源项目的开发,请问在网上去哪找这样的项目? 纯C语言的(非C++或JAVA)以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

  3. python开源项目贡献_如何通过为开源项目做贡献来发展自己的职业

    python开源项目贡献 我16岁的儿子Prahlad刚走进我们的公寓. "他说什么???" 我问. "他说'是'." 轻描淡写,玩起来很酷,就像许多青少年与父 ...

  4. vs2017c#开源项目_2017年值得关注的开源项目

    vs2017c#开源项目 没有人拥有水晶球可以看到技术的未来. 即使是对于公开​​开发的项目,仅凭代码也无法告诉我们项目是否注定要成功,但在此过程中仍存在一些提示. 例如,假设将有助于塑造我们未来的项 ...

  5. 如何充分利用开源项目_5个技巧:在开源项目中利用以用户为中心的设计

    如何充分利用开源项目 当我刚开始在开放技术学院 (OTI)工作时,我始终受到以下问题的挑战:"为什么UX设计师为什么要在开源组织工作?" 在我看来,事实是几乎所有设计和可用性工作本 ...

  6. github上 开源项目_在GitHub上组织开源项目的工作流程的3个技巧

    github上 开源项目 管理开源项目是一项艰巨的工作,挑战随着项目的发展而增长. 最终,一个项目可能需要满足不同的需求并跨越多个存储库. 这些问题不是技术问题,但对于解决扩展技术项目很重要. 诸如敏 ...

  7. 项目众包 开源项目_人们离开时保持开源项目的活力

    项目众包 开源项目 假设您有一天醒来,并决定最终使用您一直在社交媒体上观看的食谱视频. 您获得了食材,整理了必要的器皿,然后开始按照食谱步骤操作. 您将其切开,再切开,然后在将黄油和洋葱放入锅中的同时 ...

  8. 如何从0开始开源项目参与_如何开始一个开源项目

    如何从0开始开源项目参与 by Dmitriy Strukov 德米特里·斯特鲁科夫(Dmitriy Strukov) 如何开始一个开源项目 (How to start an Open Source ...

  9. ssm架构 开源项目_如何为您的开源项目选择正确的品牌架构

    ssm架构 开源项目 启动开源软件项目的大多数人并不是在等人与他们讨论品牌架构模型,而是很多人确实为他们的项目制定了长期目标,包括最终使其成为付费产品甚至是基础产品.一家为项目代码提供服务和支持的公司 ...

最新文章

  1. Python3.x(windows系统)安装libxml2库
  2. 手把手教你D2C,走向前端智能化
  3. 调整selinux状态为disabled
  4. Keras-2 Keras Mnist
  5. Zeppelie连接jdbc的使用
  6. 精业科技(天津)有限公司 Game Over
  7. 传智播客黑马程序员之JAVA基础深入浅出精华版
  8. 通过gps计算间距(WGS84坐标系)
  9. iconfont矢量图标库的引用方法
  10. css3直线运动_纯css3动画--边框线条动画
  11. BZOJ 1513 [POI2006]Tet-Tetris 3D 二维线段树
  12. 【实战系列】intel 8代I5 8400+H310完美装WIN7系统
  13. LVI-SAM imuPreintegration代码解析
  14. c语言 取余 % 和除法 / 的应用技巧 (在取位数方面的)
  15. CPU使用率达到100%
  16. 与 CSDN 大咖安晓辉的交流录
  17. 斜率优化之凸包优化与李超线段树
  18. CentOS7快速搭建DNS中转服务器
  19. C语言小程序——数的重组
  20. 谷粒商城商品规格数据结构学习笔记(SPUSKU)

热门文章

  1. CANVAS drawImage 绘图图片模糊已解决
  2. 3.22 42. 接雨水
  3. 【单片机】汇编指令入门学习|单片机启动代码汇编
  4. 保密工作人员计算机方面知识,【保密知识】个人,如何做好保密工作?4个方面...
  5. 【复变函数与积分变换】05. 留数
  6. 【无标题】大一学生HTML5期末大作业——基于HTML+CSS制作女装商城 6页
  7. PTA 数据结构 修理牧场
  8. 图案输出(二)----输出平行四边形图案:(难度系数:小于半颗星)
  9. 写给那些进步缓慢却全然不知的IT人
  10. app下载统计 php,如何统计app在各个渠道的下载量?