Page tree
Skip to end of metadata
Go to start of metadata

 

关于Sakai

发布日期:待定

发布日期

Sakai 10 发布日期

10.0 - 2014年6月27日

关于Sakai

Sakai是使用Java编写的,服务导向的网络应用程序,支持教学、学档、科研、项目协作等功能。Sakai一般部署在Tomcat集群上,其中每一个Tomcat节点部署一份Sakai。Sakai可以集成多种外部认证系统,包括CAS,Kerberos,LDAP,Shibboleth,WebAuth。Sakai使用MySQL或Oracle作为后台数据库,用户文件一般存放于NAS或SAN上。对于多数生产环境,Sakai需要一个后台学生信息系统(SIS)来提供学生、课程信息,然后Sakai通过API进行调用。

Sakai 10 概览

Sakai 10 概览

Sakai 10 在Sakai 2.9.3的基础上发展而来。Sakai 10中增加了2个新工具;提供了HTML 5的音频、视频支持;架构改进;约50个安全补丁;性能改进;一些列新功能;以及仅2000个补丁!其中最突出的部分包括:

  • 预约工具,曾经是第三方工具,现在成为Sakai核心工具,由耶鲁大学开发
  • 授权访问工具,曾经是第三方工具,现在成为Sakai核心工具,由密歇根大学开发
  • 在线页面指导教程更新,更容易修改。
  • IMS LTI - 第一个支持LTI 2.0 的学习管理系统(LMS)
  • IMS Common Cartridge (CC) 改进支持。支持CC文件版本1.0,1.1,1.2;并且基于用户选择,可以导出CC格式1.1,1.2。

  • 作业:学生互评作业,小组作业
  • 练习与测验:支持新的问题类型(计算题和扩展匹配),改进数字答案精度,设置界面改进。
  • 课程组织:重新设计工具栏并简化,更好支持音频和视频,新增内容表格,提供内联调查,更友好的界面。
  • 资源:支持通过拖拽的方式直接添加文件;如果使用Chrome,可以直接拖拽文件夹。
  • 大纲:新的用户界面,批量更新大纲内容,更好的链接集成。
  • 成绩册:支持附加分。
  • 分布缓存:支持 JCache/JSR-107,优化默认缓存大小,简化配置。无丢失地从一台服务器到另一台服务器进行会话复制。提升大型Sakai部署的性能(此功能默认不开启)。

  • Keitai项目:增强Sakai在移动设备上的可用性。
  • 支持 Google Analytics.
  • 安全更新:Sakai社区修补了大约50个安全问题,包括XSS,CSRF。AntiSamy在2.9.3和10中默认开启。AntiSamy保证用户上传的HTML/CSS符合相应规则。
  • 学生成功门户 - 新增集成。
  • Java - 支持JDK 7.x,JDK 8.x 的支持正在进行
  • 简化Sakai技术组织。 合并大量“独立”工具来简化Sakai发布和问题反馈。

Sakai 10 致谢

 点击展开

以下学校按学校英文名排序
  • 美国开放大学 - American Public University 
  • Apereo基金会 - Apereo Foundation
  • AsahiNet International

  • 波士顿大学 - Boston University

  • 布鲁克大学 - Brock University

  • 哥伦比亚大学 - Columbia University

  • 杜克大学 - Duke University

  • Educlever

  • Flying Kite Australia

  • 复旦大学 - Fudan University

  • 印第安那大学 - Indiana University

  • Longsight

  • 芝加哥洛约拉大学 - Loyola University Chicago

  • 曼利斯特学院 - Marist College

  • 纽约大学 - New York University

  • OpenCollab

  • 牛津大学 - Oxford University
  • 佩珀代因大学 - Pepperdine University
  • 罗格斯大学 - Rutgers University

  • Samoo

  • 塞米诺尔佛罗里达州立学院 - Seminole State College of Florida

  • 西班牙Sakai用户组 - Spanish Sakai Users Group (S2U)

  • 斯坦福大学 - Stanford University

  • Three Canoes
  • 塔夫斯大学 - Tufts University
  • Unicon

  • 拉里奥哈国际大学 - Universidad Internacional de La Rioja

  • 莫夕亚大学 - Universidad de Murcia
  • 瓦伦西亚理工大学 - Universidad Politécnica de Valencia

  • 纳瓦拉公立大学 - Universidad Pública de Navarra

  • 莱里达大学 - Universitat de Lleida

  • 滨海大学 - Université du Littoral Côte d'Opale

  • 巴黎第六大学 - Université Pierre et Marie Curie

  • 加州大学默塞德分校 - University of California - Merced

  • 开普顿大学 - University of Cape Town

  • 戴顿大学(俄亥俄) - University of Dayton (Ohio)
  • 佛罗里达大学 - University of Florida
  • 密歇根大学 - University of Michigan

  • 北卡罗来纳州大学教堂山分校 - University of North Carolina - Chapel Hill

  • 弗吉尼亚大学 - University of Virginia

  • 怀俄明大学 - University of Wyoming

  • Western University
  • 耶鲁大学 - Yale University

Sakai 10 新功能详细列表

 点击展开
新功能说明和展示可以参考:http://www.unicon.net/sakai10-whatsnew
工具
对应JIRA
备注及配置说明
系统管理员
  SAK-19952 - Getting issue details... STATUS  

通知

  SAK-23298 - Getting issue details... STATUS

  SAK-25484 - Getting issue details... STATUS

作业

  SAK-24338 - Getting issue details... STATUS

  SAK-22282 - Getting issue details... STATUS  
  SAK-23812 - Getting issue details... STATUS  
  SAK-19147 - Getting issue details... STATUS  
  SAK-23904 - Getting issue details... STATUS  
  SAK-23872 - Getting issue details... STATUS  
  SAK-23787 - Getting issue details... STATUS  
  SAK-23232 - Getting issue details... STATUS  
  SAK-20723 - Getting issue details... STATUS  
聊天室
  SAK-24207 - Getting issue details... STATUS  
富文本编辑器
  SAK-24415 - Getting issue details... STATUS

  SAK-26044 - Getting issue details... STATUS

  SAK-22001 - Getting issue details... STATUS

投递箱

  SAK-5350 - Getting issue details... STATUS

  SAK-25433 - Getting issue details... STATUS

讨论区

  SAK-24854 - Getting issue details... STATUS

根据站点角色查看发帖,根据发帖数量查看。

  SAK-24866 - Getting issue details... STATUS msgcntr.forums.defaultAvailabilityTime (例如 
msgcntr.forums.defaultAvailabilityTime=8:00am)
  SAK-24865 - Getting issue details... STATUS

  SAK-24862 - Getting issue details... STATUS

默认关闭

msgcntr.forums.import.openCloseDates=true (默认)

  SAK-24861 - Getting issue details... STATUS

  SAK-24859 - Getting issue details... STATUS

  SAK-24855 - Getting issue details... STATUS

  SAK-24858 - Getting issue details... STATUS

默认关闭

mc.alwaysShowFullDesc=true (默认false)

  SAK-24856 - Getting issue details... STATUS

成绩册

  SAK-25700 - Getting issue details... STATUS



  SAK-25546 - Getting issue details... STATUS

  SAK-23193 - Getting issue details... STATUS
属性:
gradebook.defaultMaxDisplayedScoreRows 

选项:
gradebook.defaultMaxDisplayedScoreRows=5 
gradebook.defaultMaxDisplayedScoreRows=10 
gradebook.defaultMaxDisplayedScoreRows=15 
gradebook.defaultMaxDisplayedScoreRows=20 
gradebook.defaultMaxDisplayedScoreRows=50 
gradebook.defaultMaxDisplayedScoreRows=100 
gradebook.defaultMaxDisplayedScoreRows=0 (this means "all") 

如果不进行设置,默认为50。
  SAK-22205 - Getting issue details... STATUS

  SAK-21225 - Getting issue details... STATUS

  SAK-18398 - Getting issue details... STATUS

  SAK-14519 - Getting issue details... STATUS gradebook.display.total.points=true (默认false)

课程组织

  LSNBLDR-355 - Getting issue details... STATUS

  LSNBLDR-345 - Getting issue details... STATUS

  LSNBLDR-344 - Getting issue details... STATUS

  LSNBLDR-328 - Getting issue details... STATUS

  LSNBLDR-326 - Getting issue details... STATUS

  LSNBLDR-289 - Getting issue details... STATUS

  LSNBLDR-287 - Getting issue details... STATUS

  LSNBLDR-286 - Getting issue details... STATUS

  LSNBLDR-234 - Getting issue details... STATUS

  LSNBLDR-208 - Getting issue details... STATUS lb-notes.pdf
  LSNBLDR-190 - Getting issue details... STATUS

从Sakai 10中移除链接工具

 提案:废弃链接工具 (从trunk .externals移除)  

邮件发送

  SAK-25393 - Getting issue details... STATUS

通过sakai.properties中的两个属性配置发信地址的本地部分和机构部分:

smtp.postmaster.address.local-part 
smtp.postmaster.address.domain

消息

  SAK-25643 - Getting issue details... STATUS

  SAK-25257 - Getting issue details... STATUS

  SAK-24871 - Getting issue details... STATUS

  SAK-24869 - Getting issue details... STATUS

  SAK-24860 - Getting issue details... STATUS

  SAK-24857 - Getting issue details... STATUS

OSP (学档)

 默认关闭学档类型的创建。Sakai 11中将移除OSP。

调查工具

  SAK-25399 - Getting issue details... STATUS showPublicAccess@org.sakaiproject.tool.poll.api.PollListManager=true 
默认 false

信息发布

  SAK-22780 - Getting issue details... STATUS 使用标准Sakai文件选择器

个人信息

 提案:将roster2加入核心工具,移除roster和profile1 
  PRFL-846 - Getting issue details... STATUS  
  PRFL-834 - Getting issue details... STATUS  
  PRFL-807 - Getting issue details... STATUS  
  PRFL-746 - Getting issue details... STATUS  
  PRFL-740 - Getting issue details... STATUS  
  PRFL-682 - Getting issue details... STATUS  
  PRFL-840 - Getting issue details... STATUS  

Project Keitai - improved support for mobile applications

   

密码重置 和 账户验证

  SAK-24427 - Getting issue details... STATUS  
  SAK-24366 - Getting issue details... STATUS account-validator.terms={包含学期和条件的URL}
  SAK-24365 - Getting issue details... STATUS

需要在sakai.properties中添加: 

#resetAllRoles 允许所有角色 (默认false) 
resetAllRoles=false 
#允许重置系统管理员密码(默认false) 
resetSuperusers=false 

例如:允许除系统管理员外的所有用户
resetAllRoles=true 
resetSuperusers=false 

To have it as the sakai actual behaviour (because if a superuser is included in

the allowed user types it can be changed) 

resetAllRoles=false 
resetSuperusers=true 

资源

  SAK-25868 - Getting issue details... STATUS  
  SAK-25455 - Getting issue details... STATUS  
  SAK-25371 - Getting issue details... STATUS  
  SAK-23587 - Getting issue details... STATUS

# list of macros that will be expanded when used in a web link in resources. 
content.allowed.macros=${USER_ID},${USER_EID},${USER_FIRST_NAME},

${USER_LAST_NAME}

  SAK-23305 - Getting issue details... STATUS # Control the default hidden status of imported resources content 
# when using Import from Site > Re-use Content feature in Site Info (SAK-23305
# Default: false (visible) 
# Since: 2.10 
#content.import.hidden=true
  SAK-23044 - Getting issue details... STATUS  
  SAK-23306 - Getting issue details... STATUS content.upload.dragndrop=true (默认开启)
  SAK-22004 - Getting issue details... STATUS  
  SAK-21855 - Getting issue details... STATUS content.make.site.page (默认false)

花名册

 

提案:将roster2加入核心工具,移除roster和profile1

 
  RSTR-65 - Getting issue details... STATUS  
  RSTR-64 - Getting issue details... STATUS  
  RSTR-59 - Getting issue details... STATUS  
  RSTR-55 - Getting issue details... STATUS  

搜索

  SRCH-130 - Getting issue details... STATUS 必须设置search.enable=true来启用搜索功能
  SRCH-119 - Getting issue details... STATUS search.service.impl=org.sakaiproject.search.elasticsearch.ElasticSearchService 
search.indexbuilder.impl=org.sakaiproject.search.elasticsearch.ElasticSearchIndexBuilder
  SRCH-111 - Getting issue details... STATUS  
 

预约工具

 Sakai新工具 

Statistics

 No new capabilities 

大纲

 升级大纲工具 
  SAK-22283 - Getting issue details... STATUS  
  SAK-23451 - Getting issue details... STATUS  
  SAK-23441 - Getting issue details... STATUS  
  SAK-23342 - Getting issue details... STATUS  
  SAK-23303 - Getting issue details... STATUS  
  SAK-23270 - Getting issue details... STATUS  
 

练习与测验

  SAM-2296 - Getting issue details... STATUS samigo.question.show.extendedmatchingitems 
samigo.question.show.fileupload 
samigo.question.show.essay 
samigo.question.show.audio 
samigo.question.show.matching 
samigo.question.show.truefalse 
samigo.question.show.multiplechoicesinglecorrect 
samigo.question.show.multiplechoicemultiplecorrect 
samigo.question.show.fillintheblank 
samigo.question.show.fillinnumeric 
samigo.question.show.survey 
samigo.question.show.matrixsurvey 
samigo.question.show.calculatedquestion
  SAM-2151 - Getting issue details... STATUS  
  SAM-2087 - Getting issue details... STATUS  
  SAM-1943 - Getting issue details... STATUS  
  SAM-1733 - Getting issue details... STATUS  
  SAM-1660 - Getting issue details... STATUS  
  SAM-1604 - Getting issue details... STATUS  
  SAM-1566 - Getting issue details... STATUS  
  SAM-1457 - Getting issue details... STATUS  
  SAM-1402 - Getting issue details... STATUS  
  SAM-1368 - Getting issue details... STATUS  
  SAM-1139 - Getting issue details... STATUS  
  SAM-658 - Getting issue details... STATUS  
  SAM-1709 - Getting issue details... STATUS  
  SAM-2166 - Getting issue details... STATUS  

批量上传/下载资源 (WebDav)

  SAK-26072 - Getting issue details... STATUS  

视频聊天

  SAK-23349 - Getting issue details... STATUS  

Wiki

  SAK-23566 - Getting issue details... STATUS  
 

新功能特殊说明

 点击展开

下面的说明描述了如何在Sakai中使用部分新功能。

Sakai 10 测试功能(默认关闭):

实时聊天 (Sakai 2.9)

视频聊天 (新增)

响应式设计

Elasticsearch 是新的默认搜索工具。在Sakai配置文件中,通过设置 search.enable=true 启用搜索工具。 ElasticSearch 会消除旧有的搜索索引。默认情况下,搜索功能是关闭的,只有启用搜索工具的站点才会被索引。搜索工具使用标准文本分析器,并可以通过配置文件进行详细配置。此外,还有另一个新的第三方工具 SOLR 。在Sakai 10中有2个新的配置项。

学档站点默认不能选择


SAK-25587 - Getting issue details... STATUS

默认情况下,站点设置工具中不能创建学档站点;所有OSP工具也将被隐藏,但已有的学档站点依旧可以添加、删除OSP工具。

通过在sakai.propertis中进行下列配置,可以在Sakai中继续创建学档站点、使用OSP工具:

site.types = course,project,portfolio

在Sakai 11中,OSP可能会被彻底移除。

练习与测验现在允许编辑已发布测验的成绩


SAM-1457 - Getting issue details... STATUS

这个功能允许教师编辑已发布作业的成绩,然后再发布。此功能可以通过管理员为特定站点进行设置,由此管理员可以根据教师的需要进行特定设置。

* 已管理员身份登录,进入Administration Workspace

* 通过站点管理工具为编辑特定站点

* 添加属性,名称:samigo.editPubAssessment.restricted ,值'false'

* 保存修改

* 然后就可以在此站点内修改已发布测验了

 

逻辑流程:

* 如果站点属性存在,遵从站点属性。

* 如果没有站点属性,那么使用sakai.properties中的"samigo.editPubAssessment.restricted"设置。

CAS login configuration

在Sakai 10中配置CAS比以前更容易了。只需要在sakai.home中使用这里的样例配置即可(https://source.sakaiproject.org/svn/login/trunk/login-tool/tool/xlogin-context.xml)。其它登录系统也可以使用类似方式配置。参考: SAK-23187 - Getting issue details... STATUS

更多关于此设置的配置信息,可以参考:https://wiki.jasig.org/display/CASC/Configuring+the+Jasig+CAS+Client+for+Java+in+the+web.xml

 

Sakai 11 的计划
ReleaseTool/ServiceTicketIssue
10.0Events SAM-658 - Getting issue details... STATUS 事件模型变化。

系统需求

 点击展开

操作系统选择

Sakai是操作系统中立的。可以安装在绝大多数的Linux发行版上。常见的Linux发行版包括CentOS,Debian GNU/Linux,Fedora,Gentoo Linux,Red Hat Enterprise Linux (RHEL),SUSE Linux,Ubuntu。Sakai也可以运行在Mac OS X服务器,Microsoft Windows以及Sun Solaris上。Linux意外的操作系统没有被充分测试过,所有的社区测试服务器都是部署在Linux上,所以一般也建议使用Linux来部署Sakai。

Java

Sakai 10 主要在Oracle Java 7下进行测试. 但应该在Java 6(Java 1.6)环境下也可以正常运行。但编译系统至少需要JDK 6或以上版本;JDK 8环境应该也可以运行。有些文件(例如*.jsp和*.jws)需要在部署后进行编译,所以仅仅安装JRE是不够的,必须要安装JDK。

Sakai 10 (2014发布)

版本要求 Java 6+。基于 Java 7进行测试。需要使用 Java 6-8进行编译。

Sakai 11 可能需求 (2015发布)

版本要求 Java 7+。可能基于 Java 8进行测试。可能需要使用Java 7-8进行编译。

影响JRE兼容性的主要原因是引入了Java语言的新功能或新函数。

 

Oracle Sun Java J2SE 5.0 (Java 1.5) 已经结束了生命周期,不再被官方维护。如果您还在使用 Java 1.5,请注意相关安全问题,并升级到1.5.0_17或更新版本。

应用服务器选择

推荐使用Apache Tomcat 7,这是被充分测试的应用服务器,一般会与Apache HTTP Server这样的Web服务器一起使用。有些学校也成功使用了Windows IIS或Nginx作为Web服务器。还有一些学校(香港科技大学和瓜达拉哈拉大学)使用JBoss运行Sakai,但这里不提供相关的安装指导。在Sakai 10完成开发时,Tomcat 8依旧处于beta状态,所以没有进行过相关测试。

Sakai 2.8.0和之前版本需要Tomcat 5.5,但可以通过修改配置运行在Tomcat 7中。Sakai 2.9.0及以后版本需要运行Tomcat 7,并需要修改Tomcat的配置来使其正常运行。具体信息请参考这篇文档。

不再支持Websphere

Sakai 2.7.0中包含Websphere模块来支持Websphere/DB2生产环境,然而由于缺乏维护,Websphere已不被支持。

 

数据库选择

现有Sakai生产环境中,使用最多的是MySql 5.5或更新版本,Oracle其次;已知的使用Oracle版本包括10g,11g,12c。Sakai并不局限于这两种数据库,与其它关系型数据库的集成也不是很困难。曾经有学校使用Microsoft SQL Server作为数据库,Sakai开发者中也偶尔有人建议支持PostgreSQL。但是,目前Sakai社区中没有人支持除MySQL和Oracle以外的数据库。

不再支持IBM DB2

Sakai 2.7.0中增加了IBM DB2支持,但是在2.8.0中,数据库更新脚本没有被更新和测试。所以Sakai不再支持DB2,包括此后的2.9.x。
Sakai demo版使用HSQLDB作为数据库,但请不要在生产环境中进行使用。

集群,文件存储和负载均衡策略

典型的Sakai集群使用多台服务器,每个服务器上部署一个或多个Tomcat,然后还可以将这些服务器部署在Apache HTTP Server之后。其中,每个Tomcat中部署一份完整的Sakai。另外还需要部署一台数据库服务器。

将用户文件保存在数据库外是推荐的做法,但需要在Sakai的配置文件中进行设置。多数部署Sakai的学校使用NAS或SAN来存储文件。负载均衡通过Apache HTTP Server(通过mod_jk,mod_proxy,mod_proxy_balancer或mod_proxy_ajp等模块)或者负载均衡硬件(如F5 BIG-IP,NetScaler或Zeus)实现。 

外部认证

Sakai可以与许多外部认证系统集成,如CAS,Kerberos,LDAP,Shibboleth,WebAuth。

与学生信息系统集成

Sakai社区中的高校成功集成过Datatel,Peoplesoft和其它高校自己编写的学生信息系统。

Sakai有几种基本的集成外部系统的方法。这几种方法可以混合使用。第一种是使用Sakai "provider" API,Sakai在运行时可以通过调用这些API获取信息,包括用户帐号,用户信息,课程信息,用户角色等。

用户帐号 API:Sakai用来确定用户是否可以登录到系统。可以用于Kerberos,Active Directory或者LDAP来进行验证用户身份。

用户信息 API: Sakai用来获取用户姓名、email等信息,获取的来源可以是LDAP或X.509。通过选择性地展示用户信息,可以保护用户隐私。

开课成信息API:Sakai用来获取课程信息、选课信息。

用户角色API:Sakai用来判定特定用户在响应站点中所处的角色。

以上API都是“拉取”API,只有在Sakai系统需要相关信息的时候,才会被调用。

如果需要将数据“推送”到Sakai,有2种方案 - 计划任务和Web Services。

Sakai通过内部叫做Quartz的系统执行批量计划任务,通过创建相关的Java类,执行数据同步任务,并通过类似cron表达式的方法按周期运行相关任务。

另一种更加普遍的方法是将相关数据通过Web Services的方法推送到Sakai。通过Web Services,可以简介访问很多Sakai的API。REST和SOAP接口可以被多种语言调用。系统管理员也可以根据实际需要创建自己的Web Services。但这种方法在数据量大时,可能会产生一定的性能问题。

 

浏览器兼容性

 点击展开

Sakai 10 支持主流浏览器的最新版本

完全支持:(大多数Sakai 10发布时的最新主流浏览器版本)

  • IE 11
  • Safari 7+
  • Firefox 29+
  • Chrome 35+ 

部分支持:

  • IE 8,9,10
  • Safari 4-6
  • Firefox 3.5+

不支持:

  • IE 7 及更早版本
  • Safari 3.2
  • Firefox 3.0

 

 

说明

完全支持:在这些浏览器上进行了充分的测试。开发人员使用这些浏览器进行开发确认,测试人员专注于这些浏览器上的测试。如果遇到问题,请在jira.sakaiproject.org 提交问题。

部分支持:只有少数测试人员使用这些浏览器,但基于浏览器兼容性的考量,这些版本应该被支持。有些功能可能不能100%工作。如果遇到问题,建议您先升级浏览器。

不支持:没有测试人员使用这些浏览器,可能存在兼容性问题。所有这些浏览器上遇到的问题将不会被社区解决。

下载

 点击展开

 

下载信息

关于下载信息,请查看发布页面:http://source.sakaiproject.org/release/10.0/

 

要获得Sakai源代码有两种方法。您可以从发布页面中下载打包的*zip或*tar.gz文件,也可以直接通过Subversion(SVN)从代码库中签出。

Demo版本
Sakai Demo是一个包含Apache Tomcat的预编译、配置Sakai版本,非常适合用于展示Sakai的功能。不建议将Demo用于大规模应用,仅适合用于体验Sakai的功能。

二进制版本
Sakai二进制版本是一个不包含Apache Tomcat的预编译Sakai版本,其中还包含了依赖的jar、配置文件。您可以将此版本中的文件直接复制到Tomcat中进行试用。

源代码版本
Sakai源代码版本包含Sakai的源代码。如果您希望修改Sakai的源代码,那么请使用这个版本。

签出源代码
Sakai的源代码可以直接匿名从SVN代码库中签出。最新的代码在/trunk中,稳定版本在/tags中,维护、试验以及其它工作在/branches中。

例如,可以通过下面的命令签出稳定版Sakai 10:

# svn co https://source.sakaiproject.org/svn/sakai/tags/sakai-10.0/ sakai-10.0

维护分支
特定版本的最新修补可以在维护分支中找到。请注意,有些分支补丁可能需要更新数据库表结构。您可以通过下面的命令签出维护分支中的Sakai 10:

svn co https://source.sakaiproject.org/svn/sakai/branches/sakai-10.x/ sakai-10.x

Sakai 10 与独立工具(Indies)

Sakai 10在主版本中不再包含独立工具(indie)。(几乎)所有的内容都是下载后编译,其中的例外包括RSF,Generic DAO这样的库,以及通过maven中央库进行部署的类包。

 

安装

 点击展开

 

安装技巧

Sakai可以通过高度定制来满足您的本地需求。所以建议您阅读Sakai的配置文件了解如何根据自己学校的情况来进行定制。比配置文件更详细的说明一般可以在Sakai Jira中找到。

Sakai 10.0 默认配置

Demo版安装

安装Sakai 10 Demo版

Binary版安装

安装Sakai 10 Binary版

Source版安装

安装Sakai 10 Source版

Sakai 10 中已知问题

 

版本
工具/服务
JIRA编号
10.0Samigo 练习与测验  SAK-26292 - Getting issue details... STATUS
10.0资源 SAK-26294 - Getting issue details... STATUS


Sakai 10中事件的主要变化

 

版本
工具/服务
JIRA编号
说明
10事件SAM-658 - Update events in assessments ( Closed)事件主要变化。


未解决 Jira 问题

如要显示为解决问题列表,请点击下列链接:

Blocker Critical Major Minor, trivial

Sakai 10 皮肤

TBD

 

升级

 点击展开

 

Sakai 升级一般包括数据库更新,皮肤更新以及自定义代码的更新。

1.0 数据库升级

A database conversion is typically required in order to upgrade from one Sakai version to another. Database conversion scripts - in distinct versions for MySQL and Oracle, respectively - are found in the reference/docs/conversion folder of the release or in our SVN repository.

In the same directory you will also find conversion scripts for earlier Sakai releases. Migration from an earlier version will require the successive application of all intermediate scripts (see the following table). You cannot, for example, move from 2.6.1 to 2.9.0 by applying a single script. You will need to run 6 or 7 scripts all in a row.

(warning) Note for oracle, some of the scripts will leave your indexes in an invalid state because of LONG->CLOB conversion. You will need to run this script to find the invalid/unusable indexes, THEN run the result of this script to alter these indexes.

select 'alter index '||index_name||' rebuild online;' from user_indexes where status = 'INVALID' or status = 'UNUSABLE'; 
-- Run the resulting SQL commands this script generates if any)

(warning) As a general rule, be sure to read through the conversion scripts before applying them. The conversion scripts are generic in the sense that they do not take into account any special customizations you may have made - such as new roles, or the deployment of additional tools or if you are migrating from 2.4.x - and they may complicate your migration with unintended consequences if you execute them blindly.

(minus) For conversions prior to 2.6 please see the 2.8 install guide. Conversions from much older are not very well supported or tested but should still work.

 

Upgrade Step

MySQL

Oracle

Notes

2.6.0

sakai_2_6_0_mysql_conversion.sql

sakai_2_6_0_oracle_conversion.sql

Use scripts updated in 2.6.x branch (r65964+). Include fixes for SAK-16751 - Getting issue details... STATUS , SAK-16753 - Getting issue details... STATUS and SAK-16809 - Getting issue details... STATUS . If you are upgrading from 2.5 please review SAK-15597 - Getting issue details... STATUS for an important property setting issue (not a database conversion issue).

2.6.0 to 2.6.x

sakai_2_6_0-2_6_x_mysql_conversion001_SAK-16668.sql

sakai_2_6_0-2_6_x_oracle_conversion001_SAK-16668.sql

SAK-16668 - Getting issue details... STATUS : if you upgraded to Sakai 2.6.0 PRIOR to 1 Sept 2009 you must run this conversion to update data types in ASN_MA_ITEM_T and ASN_NOTE_ITEM_T.

2.6.0 to 2.6.x

sakai_2_6_0-2_6_x_mysql_conversion002_SAK-16548.sql

sakai_2_6_0-2_6_x_oracle_conversion002_SAK-16548.sql

SAK-17219 - Getting issue details... STATUS , SAK-16548 - Getting issue details... STATUS : Matt Jones (UMich) reports that the original 2.6.0 to 2.6.1 conversion script for the assignment_content table "is inefficient, potentially locks tables and performs too many scans, especially if there are hundreds of thousands of rows." Matt has revised both the MySQL and Oracle conversion scripts to improve their performance.

2.6.0 to 2.6.x

sakai_2_6_0-2_6_x_mysql_conversion003_SAK-16847.sql

sakai_2_6_0-2_6_x_oracle_conversion003_SAK-16847.sql

SAK-16847 - Getting issue details... STATUS : adds asn.share.drafts to SAKAI_REALM_FUNCTION.

2.6.0 to 2.6.x

sakai_2_6_0-2_6_x_mysql_conversion004_SAK-10512.sql

sakai_2_6_0-2_6_x_oracle_conversion004_SAK-10512.sql

SAK-10512 - Getting issue details... STATUS : updates existing entries in SAKAI_PERSON_T setting the field locked to false if currently NULL.

2.6.0 to 2.6.1

sakai_2_6_0-2_6_1_mysql_conversion.sql

sakai_2_6_0-2_6_1_oracle_conversion.sql

Rollup of 2.6.0-2.6.x conversion scripts 001-004 above.

2.6.1 to 2.6.2

 

 

no schema changes

2.6.0 to 2.6.x

sakai_2_6_0-2_6_x_mysql_conversion005_SAK-14482.sql

sakai_2_6_0-2_6_x_oracle_conversion005_SAK-14482.sql

SAK-14482 - Getting issue details... STATUS : replace the "mercury" site's sakai.assignment tool (deprecated since 2.5.0) with the sakai.assignment.grades tool.

2.6.2-2.7.0

sakai_2_7_0_mysql_conversion.sql

sakai_2_7_0_oracle_conversion.sql

 

2.7.0-2.7.1

sakai_2_7_0-2_7_1_mysql_conversion.sql

sakai_2_7_0-2_7_1_oracle_conversion.sql

 

2.7.1-2.7.2

sakai_2_7_1-2_7_2_mysql_conversion.sql

sakai_2_7_1-2_7_2_oracle_conversion.sql

 

2.8.0

sakai_2_8_0_mysql_conversion.sql

sakai_2_8_0_oracle_conversion.sql

2.7.1 to 2.8.0 database conversion.

2.8.0

sakai_2_8_0_mysql_hbm_indexes.sql

sakai_2_8_0_oracle_hbm_indexes.sql

Starting up sakai-2.8.0 in order to populate an empty database (auto.ddl=true) can result in certain tools relying on Hibernate 3.2.7.ga to generate indexes to fail to do so. Check database and then run this script to add missing indexes.

2.8.1sakai_2_8_0-2_8_1_mysql_conversion.sqlsakai_2_8_0-2_8_1_oracle_conversion.sqlConversion from 2.8.0 to 2.8.1 can result in lost mail messages. See SAK-21305 - Getting issue details... STATUS for details on how to fix.This should only affect cases for which 2.8.0 was actually RUN in production, not if 2.8.0 is just one step in your upgrade process.
2.8.2sakai_2_8_1-2_8_2_mysql_conversion.sqlsakai_2_8_1-2_8_2_oracle_conversion.sql 
2.8.3sakai_2_8_2-2_8_3_mysql_conversion.sqlsakai_2_8_2-2_8_3_oracle_conversion.sql 
2.9.0sakai_2_9_0_mysql_conversion.sqlsakai_2_9_0_oracle_conversion.sqlFor languages other than English, Catalan and Spanish please see SAM-787 - Getting issue details... STATUS .
2.9.1

sakai_2_9_1_mysql_conversion.sql

sakai_2_9_1_oracle_conversion.sql

 

 
2.9.2

sakai_2_9_2_mysql.sql

LTI 2_1_0_mysql_conversion.sql

 

sakai_2_9_2_oracle.sql

LTI_2_1_0_oracle_conversion.sql

 
2.9.3

sakai_2_9_3_mysql.sql

 

sakai_2_9_3_oracle.sql 
10.0sakai_10_mysql.sqlsakai_10_oracle.sqlPlease note, the Oracle conversion scripts should be taken from trunk at the moment, including for the conversion to 10.0 - Neal Caidin - 14-October-2014
10.1sakai_10_0-10_1_mysql_conversion.sqlsakai_10_0-10_1_oracle_conversion.sql 
10.2no conversion needed for MySqlsakai_10_1-10_2_oracle_conversion.sql 
10.3no conversion needed for MySqlsakai_10_2-10_3_oracle_conversion.sql 
10.4no conversion needed for MySqlno conversion needed for Oracle 
10.5sakai_10_1-10_5_mysql_conversion.sqlsakai_10_3-10_5_oracle_conversion.sql 

2.0 其它数据库升级

Sakai还包括一些在标准脚本之外的数据库升级脚本,包括作业,文件存储和邮件存档,下面是关于这些工具的说明。

2.1邮件存档 (2.5 -> 2.6)

SAK-13584 - Getting issue details... STATUS , SAK-16554 - Getting issue details... STATUS : Sakai 2.6 improvements to the Message API require that implementers upgrading from a pre-2.6 version of Sakai run both the 2.6.0 conversion scripts and a second mailarchive-runconversion.sh script that can be found in the mailarchive module in order to update your existing mail archive data to take advantage of the 2.6 Email Archive performance improvements.

-- SAK-13584 Further Improve the Performance of the Email Archive and Message API. Note you have to run a bash conversion script on your old mail archive data for it to
-- appear in the new mail archive. The script is in the source as mailarchive-runconversion.sh. Please see the SAK for more information on this script or SAK-16554 for
-- updates to this script.
	  	 
	  	 CREATE INDEX IE_MAILARC_SUBJECT ON MAILARCHIVE_MESSAGE
 	  	 (
 	  	        SUBJECT                   ASC
 	  	 );
	  	 ALTER TABLE MAILARCHIVE_MESSAGE ADD COLUMN (
 	  	        SUBJECT           VARCHAR (255) NULL,
	  	        BODY              LONGTEXT NULL
 	  	 );

2.2 作业工具 (2.4之前版本)

(warning) This conversion was a part of the post-2.4 assignments branch so those migrating from a version already running this can disregard this step.

SAK-11821 - Getting issue details... STATUS : The assignment service previously permitted the creation of duplicate submission objects (i.e. two or more submissions for the same student and assignment). While the UI should prevent this from happening, at various stages in the evolution of the Assignments code, bugs, race conditions or other failures have led to duplicate objects being created. This conversion seeks to reconcile those duplicates and add database constraints to prevent this is the future.

In summary, the conversion script is necessary to

  1. Remove existing duplicate submission records, if any
  2. Prevent future submission duplicates by applying unique constraint on the ASSIGNMENT_SUBMISSION table
  3. Improve performance of the Assignment tool

The conversion script does the following to the existing ASSIGNMENT_SUBMISSION table in Sakai database:

  1. read in all tuples as AssignmentSubmission object, parse out data such as submitter_id, submit_time, submitted, and graded, and stores those attributes as separate columns in the ASSIGNMENT_SUBMISSION table;
  2. Runs though the table, combine and remove submission duplicates (tuples with same "context" and "submitter_id" combination);
  3. apply the unique constraint of "context" + "submitter_id" to ASSIGNMENT_SUBMISSION table.

There is a README file with detailed instructions on this process at https://source.sakaiproject.org/svn/assignment/tags/sakai_2-7-0.

2.3 文件存储 (2.4 -> 2.5)

Migrating from 2.4 to 2.5 requires adding several columns to the database tables used by the Content Hosting Service (the service used by the Resources tool, Dropbox, filepicker and WebDAV). The conversion scripts contain DDL statements to accomplish those changes. You need to run these conversions scripts (or perform the equivalent operations manually) and then convert your existing Resources via one of the methods outlined below, before you will gain the performance improvements Sakai 2.5 offers.

The new columns added to the database tables support a switch from XML serialization to "binary-entity" serialization, and enable Resources to perform faster and use less memory. One of the key areas this impacts is improving the performance of quota calculations.

There are two methods for converting existing Resources, with the first being the recommended option, as it enables all performance improvements when completed:

  1. Run the conversion utility, which can be run on a live system. (See readme for more details.)
    • (warning) Systems running oracle should read the email threads copied to the comments section below.
  2. Let the code convert each Resource as it is accessed.
    • (warning) This is only recommended for implementations with small datasets, such as pilot deployments; otherwise you should use the above conversion utility.
    • (warning) While some performance benefits from the binary-entity serialization can be realized immediately using this method, others, such as the quota calculation improvements will not be available until all Resources have been accessed and converted.

Based on the state of the data in the Content Hosting Service tables, it will start up in one of two modes:

  1. Binary only - If the code detects on start-up that all of the XML fields are null – as would be the case after running the conversion utility – it will run in binary mode. The means the system will only read and write using binary-entity serialization, and you will be able to fully realize all the performance enhancements that it offers.
  2. Dual mode - If the code detects there is still data in the XML fields – as would be the case if the conversion utility has not be run – it will run in dual mode. This means the system will be capable of reading both XML-serialized and binary-entity-serialized resources, but will write using only binary, and will convert any XML data it encounters into binary data. This gives you some of the performance benefits of binary-entity serialization without running the conversion utility, but you will never get the quota-calculation improvements unless all Resources end up converted.

3.0 学档 (OSP) 权限设置 (2.5之前版本)

OSP was turned off by default in Sakai 10 and removed entirely in Sakai 11.

SAK-13205 - Getting issue details... STATUS : if you are upgrading from a pre-2.5.0 version of Sakai, then you need to force conversion of the OSP permissions by setting osp.upgrade25=true in your sakai.properties file. (See also discussion.)

4.0 Sakai 10 中移除了 链接工具

5.0 升级 Sakai 皮肤

TBD

 

配置

 点击展开

 

1.0 创建 sakai.properties 文件 

sakai.properties 是Sakai的配置文件,一般存放在Tomcat安装目录的/sakai目录中,文件已简单的 键/值 方式存储配置,并通过 java.util.properties 进行加载。所有的配置在启动时读取,所以,对于此文件的修改只有在重启Tomcat之后才会生效。

如果通过源代码安装Sakai,默认的 default.sakai.properties 文件在如下位置,其中也包括了对于这些参数的说明:

sakai-src/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties

(warning) bin和demo版本不包括此文件。

如果您向覆盖默认值,您必须自己创建 sakai.properties 文件,并在其中进行相应设置。

在设置完成后,将这些文件复制到相应的位置。

在Sakai中,可以通过几个配置文件来进行设置,当这些文件中的配置项不同时,将通过下列顺序进行读取(后面文件中的设置会覆盖前面文件的设置)

  1. 源文件中的default.sakai.properties
  2. ${sakai.home}/sakai.properties  (如果环境变量sakai.home没有额外设置,默认为${CATALINA_HOME/sakai}
  3. ${sakai.home}/local.properties
  4. ${sakai.security}/security.properties

如果需要指定sakai.home的值,可以通过下面的JAVA_OPTS参数进行:

-Dsakai.home=/path/to/desired/sakai/home/
 

2.0 为 我的工作空间 配置工具

每种类型站点主页中的工具可以通过下面的方式进行设置。如果相关属性没有设置,那么默认值为:sakai.iframe.sitesakai.summary.calendarsakai.synoptic.announcementsakai.synoptic.chatsakai.synoptic.messagecenter。如果不存在对应工具,相关部分在显示时会被略去。更多信息参考 SAK-15504 - Getting issue details... STATUS  和  SAK-16747 - Getting issue details... STATUS
wsetup.home.toolids.count=5
wsetup.home.toolids.1=sakai.privacy
wsetup.home.toolids.2=sakai.iframe
wsetup.home.toolids.3=sakai.synoptic.announcement
wsetup.home.toolids.4=sakai.synoptic.chat
wsetup.home.toolids.5=sakai.synoptic.messagecenter

3.0 会话过期警告

Sakai有一个属性 inactiveInterval@org.sakaiproject.tool.api.SessionManager,通过这个属性设定当用户在停止操作后多少时间自动结束会话。当用户会话结束时间小于警告时间(例如10分钟)时,会自动弹出提示窗口。当会话过期时,会自动跳转到登出页面。详细信息参考  SAK-13987 - Getting issue details... STATUS   SAK-8152 - Getting issue details... STATUS

此属性默认开启,您可以通过指定下面参数进行进一步设置:

timeoutDialogEnabled=true
timeoutDialogWarningSeconds=600

4.0 配置email 

如果需要让Sakai收发邮件,需要在 sakai.properties 中进行一系列设置。要让Sakai发送邮件,需要设定SMTP服务器地址:
smtp@org.sakaiproject.email.api.EmailService=some.smtp.org

Sakai's SMTP server is Apache James. Most sys admins prefer running a standard mailer like Postfix on port 25 (rather than James directly) and configuring it to forward requests to Sakai. You may also currently have a mailer service running on port 25 (Linux usually has it running by default). So consider setting James to run on a different port (e.g., 8025) in order to avoid conflicts.

To enable Sakai to receive mail you'll need to set the following properties:

# flag to enable or disable James for incoming email (true | false)
#Default=false.
smtp.enabled=true

# dns addresses used by James for incoming email.
smtp.dns.1=255.255.255.1
smtp.dns.2=255.255.255.2

# SMTP port on which James runs.  
# Recommend running on 8025, and using a standard mailer on 25 to forward mail to Sakai.
# Default=25.
smtp.port=8025

Additional settings can be enabled to add support emails for a variety of tasks.

# Email support address used in incoming email rejection messages.
mail.support=address@somedomain

# Email address to send errors caught by the portal, and user bug reports in response.
portal.error.email=address@somedomain

# Email address used as the "from" address for any email sent by Worksite Setup tool or Site Info tool.
setup.request=address@somedomain

# Send an email to the user when the user is added.
notifyNewUserEmail=true

5.0 配置日志 

Once you have Sakai installed, configured and started, you can monitor Sakai by watching the logs. The log level for the standard Sakai source code and the demo is set to show info and warnings only. Watch for the WARN: messages. There are going to be some "normal" ones at startup, and some will likely slip by at runtime, but any warning is potentially something you might want to check out.

Logging levels can be specified in sakai.properties. This augments and overrides the levels set in the default config file. Example:

log.config.count=3
log.config.1 = ALL.org.sakaiproject.log.impl
log.config.2 = OFF.org.sakaiproject
log.config.3 = DEBUG.org.sakaiproject.db.impl

This uses the established (if awkward) method of having a name.count followed by name.1name.2 etc. to form an array of strings for the value "name". In this case, the name is "log.config". The values are of the form LEVEL.logger, and the possible levels are: OFF TRACE DEBUG INFO WARN ERROR FATAL ALL.

Sakai uses log4j for logging. See the official log4j documentation for more information about how to configure it if you have questions, but a few notes are collected here below.

To change the logging for Sakai in the source modify kernel/kernel-common/src/main/config/log4j.properties the following property:

log4j.logger.org.sakaiproject=INFO

To turn on debug logging for all of Sakai, change the value from INFO to DEBUG. In order to enable debug logging for a single Sakai components, add a line such as in the following example, which will leave most of Sakai at INFO, but generate DEBUG level messages for the SQL service:

log4j.logger.org.sakaiproject=INFO
log4j.logger.org.sakaiproject.component.framework.sql.BasicSqlService=DEBUG

The logging controls are part of the LogConfigurationManager, implemented as a component in the Kernel. It can be disabled, if that's desired, with an entry in sakai.properties:

enabled@org.sakaiproject.log.api.LogConfigurationManager = false

For Mac and *nix systems, the most important log is found in Tomcat's logs/catalina.out. It can be instructive to watch this log as Tomcat is starting up, by using a startup command like the following:

bin/startup.sh; tail -f logs/catalina.out

Tomcat on Windows tends to be a little more puzzling about its logs, and it includes more of them, but its default behavior is to open catalina.out in a new window as soon as you start Tomcat. If you need more information about the logs in Windows, we'll refer you to the official Tomcat documentation.

(info) The SMTP server logs from Sakai will be written to the $CATALINA_HOME/sakai/logs directory.

6.0 管理临时文件

根据不同的使用情况,Sakai可能在系统临时目录(例如 /tmp)中创建大量临时文件。建议周期性地删除存在一天以上的文件,这个方法对大量使用email存档功能的部署尤为重要。注意,请不要将所有的文件都移除,因为其中有的文件可能正在使用中。

新增配置项、权限

 点击展开

 

Sakai 10 新属性  SAK-25283 - Getting issue details... STATUS

新功能

1.0 新增属性及属性变化

 

版本

工具/服务

属性

JIRA编号

变化

10.0搜索

Sakai 10中使用ElasticSearch,下列参数用于使用原有的搜索方式,此属性不推荐使用。

search.service.impl=org.sakaiproject.search.component.service.impl.ConcurrentSearchServiceImpl
search.indexbuilder.impl=org.sakaiproject.search.component.service.impl.SearchIndexBuilderImpl

SRCH-130 - Getting issue details... STATUS ElasticSearch是新的搜索方式,不推荐使用原有的搜索方式。
10.0搜索  SRCH-119 - Getting issue details... STATUS  
10.0Samigo (练习与测验)

所有问题类型默认全部启用。

注意,因为历史原因,多项选择(multiple choice)对应2个属性。

samigo.question.show.extendedmatchingitems 
samigo.question.show.fileupload 
samigo.question.show.essay 
samigo.question.show.audio 
samigo.question.show.matching 
samigo.question.show.truefalse 
samigo.question.show.multiplechoicesinglecorrect 
samigo.question.show.multiplechoicemultiplecorrect 
samigo.question.show.fillintheblank 
samigo.question.show.fillinnumeric 
samigo.question.show.survey 
samigo.question.show.matrixsurvey 
samigo.question.show.calculatedquestion

SAM-2296 - Getting issue details... STATUS Sakai 10 新功能,管理员可以设置在练习与测验中使用哪些题型。
10.0OSP (学档)osp.freeform.disabled=true OSP 格式默认关闭。在咨询Sakai社区的开发者之前,请不要开启(换言之,强烈建议使用默认值)
10.0Google Analytics 支持

样例:

portal.google.analytics_id=UA-12345-5 
portal.google.analytics_domain=http://www.dr-chuck.com/ 
portal.google.analytics_detail=true 

当设置了analytics_id后,门户页面将包含GA (ga.js)代码,如果analytics_detail的值为true,用户的eid和站点ID将以自定义值1和2发送。


https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingCustomVariables

SAK-25634 - Getting issue details... STATUS This JIRA will add support to Sakai's portal to include JavaScript to add Google analytics to all of the pages served by Sakai.
10.0调查工具新属性:poll.allow.public.access(默认false) SAK-25399 - Getting issue details... STATUS Polls can now be made public more easily.
10.0邮件发送

默认为 "postmaster@"+网址.

This can be problematic for institutions that need to configure this value for dev/qat environments. 

smtp.postmaster.address.local-part 
smtp.postmaster.address.domain

SAK-25393 - Getting issue details... STATUS Allow configuration of mail "from:"
10.0门户bottom.copyrighttext is "currentYearFromServer", SAK-25293 - Getting issue details... STATUS To save system administrators' time, the copyright end date should automatically update to the current year, if the institution chooses.
10.0消息

The new feature to display profile images will be disabled by default.

msgcntr.pvtmsg.showProfileInfo = true 

Additionally, if profile images are enabled and you do not want to allow linking to the profile information, you can utilize the following profile2 property. If absent, this defaults to true: 

profile2.profile.link.enabled

SAK-24869 - Getting issue details... STATUS Just like Forums is displaying the profile picture [1], our users can see the sender's picture when reading their messages
10.0讨论区

example:

msgcntr.forums.defaultAvailabilityTime=8:00am

SAK-24866 - Getting issue details... STATUS Instead of using the current time as default for availability.
10.0讨论区
msgcntr.forums.import.openCloseDates=true (false by default)
SAK-24862 - Getting issue details... STATUS Supports a case where instructors create parent sites and import the information into section sites for the same semester.
10.0讨论区mc.alwaysShowFullDesc=true (default false) SAK-24858 - Getting issue details... STATUS When you load the main forum's page, let there be a property that will allow an institution to decide whether the full description is shown or hidden. 
10.0讨论区msgcntr.forum.rankimage.maxsize SAK-24854 - Getting issue details... STATUS  
10.0消息

Default is false.

mc.messages.forwardEmailDisabled=true/false

 

SAK-24850 - Getting issue details... STATUS This can turn on/off the "CC" option when sending a message in the "Message" tool for all sites (institution level). If the property is true, then all sites will not have this option, otherwise, it defers to site level settings.
10.0消息mc.messages.ccEmailDisabled=true/false SAK-24849 - Getting issue details... STATUS An institution can not disable the CC option, until now. They can set the default to false (mc.messages.ccEmailDefault=false) but an instructor could change it at the site level. This property completely removes this from the UI and force the value to false: 
10.0移动门户portal.pda.iframesuppress=:all: (new default) SAK-25494 - Getting issue details... STATUS  
10.0配置#How many days to retain deleted content 
content.keep.deleted.files.days=30
SAK-24426 - Getting issue details... STATUS  
10.0站点信息The sakai.properties introduced by this patch are: 
- sitemanage.join.joinerGroup.enabled=[true/false]  - default is false
- sitemanage.join.notification.enabled=[true/false] 
- sitemanage.join.excludeFromPublicList.enabled=[true/false] 
- sitemanage.join.limitAccountTypes.enabled=[true/false 
- sitebrowser.join.enabled=[true/false] 
- sitemanage.join.allowedJoinableAccountTypeCategories (count + list) 
- sitemanage.join.allowedJoinableAccountTypes (count + list) 
- sitemanage.join.allowedJoinableAccountTypeLabels (count + list)
SAK-24423 - Getting issue details... STATUS  
10.0密码验证account-validator.terms - default is null SAK-24366 - Getting issue details... STATUS Required checkbox on the signup page which is only shown if account-validator.terms is set to a URL which contains the terms and conditions.
10.0密码验证Updating the default props 

# Role that can use the password reset tool by default. 
# guest users are ones that are created by Site Info when adding external participants. 
# registered users are ones the are created by the New Account tool on the Gateway site. 
# Default: guest 
#resetRoles=guest,registered 

# resetAllRoles allows this to work for any roles in the system (overrides resetRoles above) 
# Default: false 
#resetPass.resetAllRoles=true
SAK-24365 - Getting issue details... STATUS  
10.0 # If you are running Sakai in a cluster behind a load balancer and the load balancer is changing the 
# scheme during forwarding, oauth validation will fail because the scheme is taken into account during the 
# signature comparison. Set this to the scheme that your load balancer is running under and the 
# launch request will be validated, or at least the scheme won't break it. 
# basiclti.provider.forcedurischeme=
SAK-23997 - Getting issue details... STATUS  
10.0作业property: (default true) 
assignment.usePeerAssessment=(true|false)
SAK-23812 - Getting issue details... STATUS  
10.0密码验证

 ## SAK-23737 - User types allowed to bypass password validation when editing account details
# An empty list (no property set) indicates that all types require password validation (default behavior)
# Which user types are provided and will therefore be allowed to bypass the password validation step
#user.type.provided=asdf,qwerty

SAK-23737 - Getting issue details... STATUS  
10.0站点创建In the default SectionFieldProviderImpl the sizes are limited to subject=8, course=3, section=3. This should be configurable, since most places use this default implementation. 

Adding 3 new properties 

wsetup.sectionfield.required_fields_subject.max 
wsetup.sectionfield.required_fields_course.max 
wsetup.sectionfield.required_fields_section.max
SAK-23652 - Getting issue details... STATUS  
10.0门户

default

portal.title.shortdescription.show=false

SAK-23597 - Getting issue details... STATUS  
10.0Turnitinproperty: 

turnitin.forceSingleAttachment (false by default) 

to turn on property: 

turnitin.forceSingleAttachment=true 


This forces the UI to select "Single File Upload Only" and disable the other options. Toggling re-enables the options.
SAK-23592 - Getting issue details... STATUS  
10.0资源# list of macros that will be expanded when used in a web link in resources. 
content.allowed.macros=${USER_ID},${USER_EID},${USER_FIRST_NAME},${USER_LAST_NAME} 

Note that site related properties will not work because the resolver code is actually called from access which has no context. 
It may be possible to pass in the context since the original resource has context, then site properties would work, however this may have security implications where the link is embedded in another site and that aspect needs to be fully explored. As such it has not been included. It is a trivial exercise to add this though, see BaseContentService in the kernel.
SAK-23587 - Getting issue details... STATUS  
10.0站点
The property site.title.maxlength allow long site titles fix the UI by cutting the end of the title in tabs. 

We've got many long site titles and very similar, for example, "This is the subject part I", "This is the subject part II". In these cases both cutted titles appears to be the same "This is the subj...". 

We want a more flexible way to do it. With 2 new properties: 

   site.title.cut.method = customize the cut method. Default 100:0. 
   site.title.cut.separator = separator string. Default ... 

The value has the format X:Y, wich means X percent of maxlength at the beginning and Y percent of maxlength at the end. Now if you choose 50:50 and [...], the above example, will get something like "This is[...]part I" and "This is[...]part II". 

# Max length for site title display 
# Default 25 characters 
#site.title.maxlength=25 

# Cut method for site title display 
# Default 100:0 display the first site.title.maxlength characters and the separator string at the end 
# Other values: 
# 0:100 display the last site.title.maxlength characters and the separator string at the beginning 
# 50:50 display first site.title.maxlength*50% characters the separator string and the last site.title.maxlength*50% 
#site.title.cut.method=100:0 

# Separator string used to separate characters in cut method 
# Default ... 
#site.title.cut.separator= ... 
SAK-23567 - Getting issue details... STATUS  
10.0Student Success PortalConfiguration will work like so: 
# SSP Early Alert integration 
# Allow Early Alerts integration? (default: false) 
ssp.allowed.alerts=true 
# URL to the SSP server 
ssp.server.url=http://ssp.unicon.net/ssp-platform/sso 
# the shared password between SSP and Sakai 
ssp.alerts.shared.password=********* 
# roles allowed to have SSP Early Alerts (default: access,Student) 
ssp.allowed.alert.roles=access,Student
SAK-23562 - Getting issue details... STATUS  
10.0站点班组管理

# Allow instructors to create and manage sections by themselves while also
# having some types of sections locked (read only). With this configuration
# (and MANUAL type set) an Instructor can create and manage sections except
# with the configured readonly categories.
# Defines the category codes of sections that are readonly (e.g. 01.lct,02.lab)
# Default: "" (empty) - all sections can be edited
#section.info.readonly.section.categories=

SAK-23495 - Getting issue details... STATUS  
10.0站点创建# Sites with non-editable title (by site type) 
# Example: course - course sites will have read only title. 
# Set as empty "site.type.titleNotEditable=", every site title would be modified. 
# Default: course 
#site.type.titleNotEditable=course,project
SAK-23469 - Getting issue details... STATUS  
10.0门户聊天

# Specifies the amount of time, in milliseconds, between latestData requests sent by the javascript client.
#portal.chat.pollInterval=5000

SAK-23374 - Getting issue details... STATUS  
10.0门户聊天与视频

# Set this to true and video calling will be enabled on portal chat.
# DEFAULT: false
# portal.chat.video=true

# A list of nat traversal servers to try during portal chat video calling.
# DEFAULT: stun:stun.l.google.com:19302
# portal.chat.video.servers={list of ice servers}

# The timeout, in seconds, for operations like waiting for a call to be answered.
# DEFAULT: 25
# portal.chat.video.timeout=50

SAK-23349 - Getting issue details... STATUS  
10.0 

# Control the default hidden status of imported resources content
# when using Import from Site > Re-use Content feature in Site Info (SAK-23305)
# Default: false (visible)
# Since: 2.10
#content.import.hidden=true

SAK-23305 - Getting issue details... STATUS  
10.0门户聊天

# Set this to true and portal chat will be disabled for a user UNLESS portal.chat.permitted is set
# in their MyWorkspace site. Defaults to false.
#portal.chat.securedByUser=false

SAK-23259 - Getting issue details... STATUS  
10.0 

#### SAK-23257: Restrict site maintainer from adding or elevating users to certain roles.
#### For example, prevent the Instructor of a course site from adding new Instructor users
# DEFAULT: empty (no restricted roles)
# You can narrow the restriction to a specific type of site by appending .sitetype
# sitemanage.addParticipants.restrictedRoles=CustomRole
# sitemanage.addParticipants.restrictedRoles.course=Instructor
# sitemanage.addParticipants.restrictedRoles.project=maintain

SAK-23257 - Getting issue details... STATUS  
10.0   SAK-23237 - Getting issue details... STATUS  
10.0成绩册
property: 

gradebook.defaultMaxDisplayedScoreRows 

options: 

gradebook.defaultMaxDisplayedScoreRows=5 
gradebook.defaultMaxDisplayedScoreRows=10 
gradebook.defaultMaxDisplayedScoreRows=15 
gradebook.defaultMaxDisplayedScoreRows=20 
gradebook.defaultMaxDisplayedScoreRows=50 
gradebook.defaultMaxDisplayedScoreRows=100 
gradebook.defaultMaxDisplayedScoreRows=0 (this means "all") 

By default, the option stays at 50. Also, if you put an option not listed above, it will default to 50
SAK-23193 - Getting issue details... STATUS  
10.0班组管理

# SAK-22537: How many sections can be added at one time?
# DEFAULT: 10
#sections.maxgroups.category=20

SAK-22537 - Getting issue details... STATUS  
10.0登录

# Log failed login attempts? Defaults to true.
#login.log-failed=true

SAK-22430 - Getting issue details... STATUS  
10.0资源

defaults to true

content.upload.dragndrop=(true|false)

SAK-22306 - Getting issue details... STATUS  
10.0引文citations.default.list.page.size=50 SAK-22297 - Getting issue details... STATUS  
10.0作业assignment.group.submission.enabled=true SAK-22282 - Getting issue details... STATUS  
10.0门户

HTML code for branding the Sakai online help

help.header 
help.footer

SAK-22245 - Getting issue details... STATUS  
10.0站点信息/小组管理We would preferrer not to show the group summary to people on the front page of Site Info, but would still like the group management pages to be available (Manage Groups link). So to support this we allow the groups to be hidden on the front page through a configuration property.

wsetup.group.support.summary=false

This defaults to true so unless set no changes should be seen.
SAK-21989 - Getting issue details... STATUS  
10.0短链接The attached work adds a link next to the help icon in the header of every tool in the portal. When clicked it presents a small 'clue tip' window with the direct tool URL to that particular tool. There is also the option to shorten that URL on the fly. A user can then distribute the URL for that tool.

Two patches attached, one for portal, one for reference.

To activate set:
portal.tool.direct.url.enabled=true

To enabled/disable short URLs:
shortenedurl.portal.tool.enabled=true

Of course, if using the short URLs, you'll want to have the shortened url service configured:
shortenedurl.implementation=org.sakaiproject.shortenedurl.api.RandomisedUrlService

(or the bit.ly implementation, or any other. See also: https://confluence.sakaiproject.org/display/SHRTURL/Home)

Then, once enabled, every tool gets the link icon which gives the little window when clicked. If you didn't want to have this on a certain tool, set this property on the tool:
sakai:tool-directurl-enabled=false
SAK-21865 - Getting issue details... STATUS  
10.0资源/Web 内容content.make.site.page which is set to false SAK-21855 - Getting issue details... STATUS
Allow users to quickly create a Web Content tool in a site from within the resource tool of the site.
10.0站点创建
The properties introduced by this patch are "worksiteSetup.omitSiteCreateLink" and "worksiteSetup.omitCourseSectionLink". Valid values are "true" and "false", where true will hide the links, and false will show them as normal. If the properties are not found, or an invalid value is provided, it defaults to original functionality (links are shown as normal).
SAK-21706 - Getting issue details... STATUS  
10.0登录# Enable the auth choice page. Only set this if container.login=true 
login.auth.choice=true 

And configure it with these properties: 

# Set the icon or text you want for each. Generally you wouldn't use both. 
container.login.choice.icon=http://path/to/image/for/container/login/cas.jpg 
#container.login.choice.text=ANU Users 
xlogin.choice.icon=http://path/to/image/for/container/login/sakai.jpg 
#xlogin.choice.text = Guest Users 

login.use.xlogin.to.relogin=false
SAK-21706 - Getting issue details... STATUS

If you use container login and hit the gateway page, then you get the ability to login with either a CAS account or an internal account.

There should be an intermediate page where users can choose which auth to use.

 

10.0日程To enable this you set the Sakai property: 

ical.opaqueurl.subscribe=true 

this is set to false by default
SAK-21497 - Getting issue details... STATUS This patch implements "private URLs" for all site calendars. These are unique non guessable URLs (one per user) that one can subscribe to in all calendaring clients (including MS Outlook). This means that a calendar does not have to be exported (ie, made public) in order to subscribe to it. Marge calendars will appears in the ical feed and there is a link on the synoptic view.
10.0 This patch allows an admin to specify additional user attributes when creating or editing a user.

This is configured via sakai.properties as below.

The first section specifies the number of attributes and their keys. The second maps the key to the display value. There can be any number of attributes.

The user is then presented with a text box to fill in the value of the attribute.

user.additional.attribute.count=3
user.additional.attribute.1=att1
user.additional.attribute.2=att2
user.additional.attribute.3=att3

user.additional.attribute.display.att1=Attribute 1
user.additional.attribute.display.att2=Attribute 2
user.additional.attribute.display.att3=Attribute 3

For example:

user.additional.attribute.count=2
user.additional.attribute.1=college
user.additional.attribute.2=room

user.additional.attribute.display.college=College
user.additional.attribute.display.room=Room No

These tie directly in with the user properties for a user, so then show up in the (new for 2.9) 'Properties section' at the bottom. You can also remove the attributes using the X.
SAK-21406 - Getting issue details... STATUS  
10.0通知sakai.announcement.reorder=true (default) SAK-21109 - Getting issue details... STATUS  
10.0Quartz 配置
qrtzPropFileSakai@org.sakaiproject.api.app.scheduler.SchedulerManager 

which defaults to "sakai.quartz.properties" and is loaded relative to the sakai.home folder.
SAK-20885 - Getting issue details... STATUS
We still always load quartz.properties from the classpath which is included in the JAR, if there are any problems loading this file we stop (as before). 
Then we look for sakai.quartz.properties in the sakai.home folder and if found load that as well replacing any already loaded properties, if the file exists and there is a problem loading this it is logged but startup continues. 

We still have: 

qrtzPropFile@org.sakaiproject.api.app.scheduler.SchedulerManager 

which sets the file to load from the classpath but we also now have 

qrtzPropFileSakai@org.sakaiproject.api.app.scheduler.SchedulerManager 

which defaults to "sakai.quartz.properties" and is loaded relative to the sakai.home folder.
10.0站点管理
qrtzPropFileSakai@org.sakaiproject.api.app.scheduler.SchedulerManager 

which defaults to "sakai.quartz.properties" and is loaded relative to the sakai.home folder.
SAK-20885 - Getting issue details... STATUS  
10.0站点管理The sakai.properties: 
# enable soft site deletions when a site is deleted normally 
# if true, they will be softly delete and then purged after 30 days 
# if false, thet will be deleted immediately 
# defaults to false. 
site.soft.deletion=true 

# the number of days to keep softly deleted sites until they are purged. 
# if not set and site.soft.deletion=true, defaults to 30 days. 
site.soft.deletion.gracetime=30 
SAK-19952 - Getting issue details... STATUS  
10.0Email 存档

default is true

wsetup.mailarchive.prepopulate.email=(true|false)

SAK-19298 - Getting issue details... STATUS  
10.0作业This adds an extra checkbox to the download assignments page when "assignment.download.flat=true" is added to the sakai.properties. Otherwise it has no real impact.  SAK-19147 - Getting issue details... STATUS  
10.0站点信息1. sakai.properties (see new properties below) 
2. toolOrder.xml (see attached example) 
3. tools.properties -- (optional) sakai/config/localization/bundles/src/bundle/org/sakaiproject/localization/bundle/tool/tools.properties (see attached example) 
    ** tools.properties in sakai trunk currently has tool group pre-defined, you only need to modify this in order to customize 


Additions to sakai.propeties, with default values specified: 

# Enable tool groups 
config.sitemanage.useToolGroup=false|true 

# OPTIONAL: Directory for tool 'more info' link. HTML(<body> content) file must have the same name as the tool registration id, with any extension (e.g. sakai.siteinfo.html) 
config.sitemanage.moreInfoDir=library/image/ 
SAK-16600 - Getting issue details... STATUS On the edit tools page for site info, there is potential to have a long, unorganized list of tools. This will increase as new tools are added from contrib or Basic LTI.

This proposal describes how Sakai core tools, contrib tools, and dynamically added Basic LTI ('external') tools can be ordered into pre-defined tool groups. A "more info" link can optionally be added to each tool description, where a tool-specific screenshot can provide additional information. 

Different sets of groups can be configured for different site types (e.g. course, project). The category keyword is required. 
    <group name="core-c" category="course"> 
           ... 
    </group> 
    <group name="core-p" category="project"> 
           ... 
    </group> 

A sample toolOrder.xml file leveraging the new format is attached, along with an sample tools.properties file, updated with tool group localizations. The changes are backward compatible; i.e. if the original toolOrder.xml file format is used, none of the new toolGroup enhancements are displayed. 
10.0登录

### 
 # Url to redirect the user to when they have been disabled. If you do not specify a disabledSiteUrl then the system will use /portal/disabled by default


 ### 
 disabledSiteUrl=https://this.user.is.disabled/disabled

SAK-16499 - Getting issue details... STATUS

It has been requested that a user account should be able to be locked to prevent login, rather than deleting the user. A flag could be added to the User object to track this. The login tools and UserDirectoryService methods could then read this and deny access if a user account is locked.

Currently a new column has been added to the sakai_user table for disabled. This is either 1 or 0, 1 = disabled.

If a user is disabled, then you can select where to have the user redirected to via this sakai.property

###
# Url to redirect the user to when they have been disabled
###
disabledSiteUrl=https://this.user.is.disabled/disabled

If you do not specify a disabledSiteUrl then the system will use /portal/disabled by default. You can go and create a public /portal/disabled site/page for this purpose.

10.0可加入站点When directly visiting a joinable site allow the user to join. 

This means if a user visits a site which they aren't currently a member of, but the site is joinable then they will be given the option to join the site. If they choose to they will be added to the site and then taken to the site they have just joined. 

To disable this functionality set portal.redirectJoin=false in sakai.properties. 
SAK-15832 - Getting issue details... STATUS  
10.0成绩册# Controls the display of the "Total Points" column on the overview screen. 
# DEFAULT: false (Total Points column is not shown) 
#gradebook.display.total.points=false
SAK-14519 - Getting issue details... STATUS  
10.0门户

Changing property flag, added property to enable/disable 

 Default is true
portal.show.time=false 

SAK-7802 - Getting issue details... STATUS  
10.0花名册roster_view_email=true  RSTR-64 - Getting issue details... STATUS Email addresses can be sensitive in some institutions and should be able to be turned off completely. Once enabled, the instructor can enable permissions based on role.
10.0花名册# Set the list of roles that are visible in the tool. 
# This is useful for filtering the list from helpdesk roles, for example. 
# Access to the tool is not affected, ie the helpdesk user would still have access. 
# If not set, all roles will be visible. 
roster2.visibleroles.count=1 
roster2.visibleroles.1=access 
RSTR-55 - Getting issue details... STATUS Hide certain roles, for example helpdesk roles. They will still have access to the tool if their permission allows, but not be visible in the list for students to see.
10.0个人资料

Messaging enabled is the default.

profile2.messaging.enabled=(true|false) 

PRFL-840 - Getting issue details... STATUS Some schools may be concerned about the potential for cheating via private messaging in Profile2. The tool can be configured to disable messaging globally in a Sakai instance.
10.0个人资料

Now supports ONE_DEEP which is of the form BASEDIR/s/steve.jpg, which is additive to previous property (from PRFL-682)

# If you are using filesystem as your photo source you need to set this to the base directory where you store 
# them. Profile looks them up by appending the first letter of a user's eid then a slash, then the second 
# letter of the eid followed by a slash and finally the eid suffixed by '.jpg'. 
# Like this: 
# /official-photos/a/d/adrian.jpg 
#profile2.official.image.directory=/official-photos

PRFL-834 - Getting issue details... STATUS

(see PRFL-831)

The filesystem storage of official images added in PRFL-682 requires a certain layout. Some people dont have this layout so we need to be able to support more types of layouts. We wont go so far as to make this fully customisable as it is overkill, but make it easy for different layouts to be used. 

Adding a new layout for 'one deep'.
10.0个人资料

#default is profile.official.image.enabled=false . See completed documentation in Sakai default properties.

profile2.official.image.enabled=true 
profile2.picture.type=official 
profile2.official.image.source=filesystem 
profile2.official.image.directory=/Users/steve/dev/sakai/official-images 
profile2.official.image.directory.pattern = ALL_IN_ONE

PRFL-831 - Getting issue details... STATUS You can now override the pattern for storing official images on the filesystem. 

First, enable official images. 
profile2.official.image.enabled=true 

In this case we want the default to be official and the user cannot change the image (for different settings seeProfile2-Settings) 
profile2.picture.type=official 

Now set the source: 
profile2.official.image.source=filesystem 

Now set the base directory. Defaults to /profile-images if not set 
profile2.official.image.directory=/Users/steve/dev/sakai/official-images 

Now set the pattern we want to use. We have all of our images in one directory and all images are of the form eid.jpg (ie jsmith26.jpg) so we choose the ALL_IN_ONE pattern. 
profile2.official.image.directory.pattern = ALL_IN_ONE 

This defaults to DEFAULT which means the pattern /j/s/jsmith26.jpg (ie two sub directories, one character each being the first two letters of the user eid. 

So all together we get: 
profile2.official.image.enabled=true 
profile2.picture.type=official 
profile2.official.image.source=filesystem 
profile2.official.image.directory=/Users/steve/dev/sakai/official-images 
profile2.official.image.directory.pattern = ALL_IN_ONE
10.0个人资料
################################
## Available as of version 1.6:
################################
 
# Enable/disable the staff profile feature? (true/false, default true)
profile2.profile.staff.enabled=true

# Enable/disable the student profile feature? (true/false, default true)
profile2.profile.student.enabled=true

# Enable/disable the social profile feature? (true/false, default true)
profile2.profile.social.enabled=true

# Enable/disable the interests profile feature? (true/false, default true)
profile2.profile.interests.enabled=true
PRFL-807 - Getting issue details... STATUS  
10.0个人资料
# Convert images from URL to local storage (added in PRFL-740)
profile2.import.images=true
PRFL-740 - Getting issue details... STATUS  
10.0缓存# Events and Role Caching - uses a distributed cache to propagate events and roles, rather than reading from the database 
# Data is still persisted to the database 
# Enable distributed caching 
# DEFAULT: false 
#cluster.cache.enabled=false 

# The URLs of the distributed cache servers 
#cluster.cache.server.urls.count=2 
#cluster.cache.server.urls.1={CACHE_SERVER_URL_1}:9510 
#cluster.cache.server.urls.2={CACHE_SERVER_URL_2}:9511 
  
# The caches that will be using the distributed cache. 
# The only ones allowed are eventsCache, eventLastCache, and org.sakaiproject.authz.impl.DbAuthzGroupService.realmRoleGroupCache 
#cluster.cache.names.count=2 
#cluster.cache.names.1=org.sakaiproject.event.impl.ClusterEventTracking.eventsCache 
#cluster.cache.names.2=org.sakaiproject.event.impl.ClusterEventTracking.eventLastCache 
  
# Any Cache properties below that are not set will use the default value 
  
# Events caching properties 
#org.sakaiproject.event.impl.ClusterEventTracking.eventsCache.cache.maxEntriesLocalHeap=100000 
#org.sakaiproject.event.impl.ClusterEventTracking.eventsCache.cache.timeToIdle=120 
#org.sakaiproject.event.impl.ClusterEventTracking.eventsCache.cache.timeToLive=120 

# eventLastCache caching properties (only needs to ever store 1 entry) 
#org.sakaiproject.event.impl.ClusterEventTracking.eventLastCache.cache.maxEntriesLocalHeap=1 
#org.sakaiproject.event.impl.ClusterEventTracking.eventLastCache.cache.timeToIdle=400 
#org.sakaiproject.event.impl.ClusterEventTracking.eventLastCache.cache.timeToLive=800 

# Role and Group caching properties 
#org.sakaiproject.authz.impl.DbAuthzGroupService.realmRoleGroupCache.cache.maxEntriesLocalHeap=100000 
#org.sakaiproject.authz.impl.DbAuthzGroupService.realmRoleGroupCache.cache.timeToIdle=2000 
#org.sakaiproject.authz.impl.DbAuthzGroupService.realmRoleGroupCache.cache.timeToLive=2400 
KNL-1184 - Getting issue details... STATUS  
10.0序列化对象
## Session Replication settings 
## WARNING: This requires a distribution mechanism of some kind (currently requires a distributed cache) 
## NOTES: 
## cache: org.sakaiproject.tool.impl.RebuildBreakdownService.cache must be set to a distributed cache (see memory.cluster) 
## cache: org.sakaiproject.tool.impl.RebuildBreakdownService.stash should be configured to last as long 
## as your user might need to navigate to JSF or other on-demand session tools after landing on a new server 
# Enable session cluster replication (see notes above) 
# Default: false 
#session.cluster.replication=true 
## Performance tuning settings below - be careful with these numbers as adjusting them downward can create heavy load 
# Tuning setting, minimum seconds old the session must be before it will be replicated 
# Default: 20 
#session.cluster.minSecsOldToStore=20 
# Tuning setting, minimum seconds that must pass before session data is updated (since last store) 
# NOTE: certain events will cause the session data to be updated in the store regardless of this setting 
# Default: 10 
#session.cluster.minSecsBetweenStores=10 
# Tuning setting, minimum seconds after a session has been rebuilt from the store before it can be updated in the storage again 
# Default: 30 
#session.cluster.minSecsAfterRebuild=30
KNL-1163 - Getting issue details... STATUS  
10.0格式化文本检查Added options to default config 

KNL-1075: allow Sakai to behave more like other LMSes and silently clean the user-entered HTML, 
# valid options are listed below: 
# - none - errors are completely ignored and not even stored at all 
# - logged - errors are output in the logs only 
# - return - errors are returned to the tool (legacy behavior) 
# - notify - user notified about errors using a non-blocking JS popup 
# - display - errors are displayed to the user using the new and fancy JS popup 
# Default: notify 
#content.cleaner.errors.handling = return 
# Force the logging of errors despite the handling setting 
# (useful for debugging but can get very noisy) 
# Default: false 
#content.cleaner.errors.display = true
KNL-1075 - Getting issue details... STATUS  
10.0学习记录存储

# Default: false 
#lrs.enabled=true 

 

# Default: No filters (all statements processed) 
#lrs.origins.filter=tool1,tool2,tool3

 

KNL-1042 - Getting issue details... STATUS #########################################################################
# LRS (TinCanAPI / Experience API) 
# ######################################################################## 

# Enable LRS processing 
# Default: false 
#lrs.enabled=true 

# Enable statement origin filters (cause certain statements to be skipped based on their origin) 
# NOTE: most origins are the names of the tools. e.g. assignments, announcement, calendar, chat, content, gradebook, lessonbuilder, news, podcast, syllabus, webcontent, rwiki 
# Default: No filters (all statements processed) 
#lrs.origins.filter=tool1,tool2,tool3
10.0Sakai 属性

# Example: tool.categories.append.sakai.announcements=course 
# Default: use the categories defined in the tool xml file 
# tool.categories.append.{toolid}=category1,category2,category3 

## (2) Override the current tool categories with a new set of categories (removes all categories if it is blank) 
# Example: tool.categories.sakai.announcements=course,project 
# Default: use the categories defined in the tool xml file 
# tool.categories.{toolid}=category1,category2,category3

KNL-1031 - Getting issue details... STATUS ## Override/Append Sakai Tool categories 
# NOTE: categories are also set in the sakai tool xml files in each tool 
# Normally, if you want to add a new category (site type) to a tool, you have to change the /tools/toolid.xml file. 
# This config option adds 2 ways to adjust the categories. The first is to append new categories to any 
# already defined for the tool. The second is to override any categories set for the tool with a new set. 
## (1) Append the categories to the existing set of categories (has no effect if it is blank) 
# Example: tool.categories.append.sakai.announcements=course 
# Default: use the categories defined in the tool xml file 
# tool.categories.append.{toolid}=category1,category2,category3 
## (2) Override the current tool categories with a new set of categories (removes all categories if it is blank) 
# Example: tool.categories.sakai.announcements=course,project 
# Default: use the categories defined in the tool xml file 
# tool.categories.{toolid}=category1,category2,category3
10.0登录disabledSiteUrl = default to blank. If blank, then redirects user to xlogin with warning message. If set, it will redirect to this URL after the disabled user attempts to log in KNL-994 - Getting issue details... STATUS  
10.0Sakai属性# ######################################################################## 
# CONFIGURATION 
# ######################################################################## 

... 

# Control the dereferencing of configuration values on initial load 
# (values are always dereferenced but this affects whether they are done on config load or not) 
# Dereferencing values means that all values like "${property.name}" are replaced 
# with the value from the config item of that name (unmatched ones are left as is) 
# Default: true (dereference all values loaded from the config properties files) 
#config.dereference.on.load.initial=false 
# Default: false (do not dereference all values including those loaded from other sources - e.g. database) 
#config.dereference.on.load.all=true
KNL-924 - Getting issue details... STATUS  
10.0SSL

# Otherwise, the URLs will reflect the attributes of the request URL. (443 | 8443 | or any other port)
# Default: no secure port or protocol (https) will be used, setting this to 0 will have the same effect as not setting it
#force.url.secure=443

KNL-895 - Getting issue details... STATUS  
10.0Mime 类型

# Turn on mime type detection
# DEFAULT: true (on)
# content.useMimeMagic=false

KNL-101 - Getting issue details... STATUS Useful for downloading files which are missing extensions/file typing from Resources and other tools in Sakai.

 

2.0 New/changed permissions

Release

Tool/Service

Permission

Notes

    

 

3.0 隐藏工具

OSP (学档) 工具未隐藏,但是学档站点默认不能创建。OSP将在Sakai 11中被移除,变成第三方工具。

 

 

 

数据库支持

 点击展开

 

The Sakai CLE supports the following production-grade databases:

Database

Driver

Notes

MySQL 5.5.xMySQL Connector/J 5.1.13+

(minus) Sakai requires transaction support. In the case of MySQL you must implement the InnoDB storage engine to ensure proper transaction handling.

(green star) QA for Sakai 10 MySQL was using Connector/J 5.1.27 and MySQL 5.5.34

MySQL 5.1.x

MySQL Connector/J 5.1.13+

(minus) Sakai requires transaction support. In the case of MySQL you must implement the InnoDB storage engine to ensure proper transaction handling.

Oracle 11g

OJDBC

(warning) Oracle recommends using the latest 11g driver if you are using Java 6 with either 10g or 11g; with Java 6 in combination with the 11g driver,

(green star) Recommend but not required - convert longs to clobs - SAK-7977 - Getting issue details... STATUS Only tested on Oracle 11.2.0.3 - https://github.com/daveadams/sakai-tools/blob/master/convert-longs-to-lobs.sql . By default it will scan your tables for LONG and LONG RAW fields but it won't change anything. Add "CONVERT" to the command line to actually perform the conversion and rebuild the indexes in the involved tables. Please be sure you understand what the script will be doing before you run it, and always always test thoroughly on a non-production environment before you attempt to run this on your production system.

Oracle 10g

OJDBC

(warning) Both Oracle 10g AND 9i users must use the 10g driver; the latest 10g "Release 2" (10.2.x) or higher is recommended.
(warning) Oracle recommends using the latest 11g driver if you are using Java 6 with either 10g or 11g; with Java 6 in combination with the 11g driver

DB2

 

Deprecated

The Sakai CLE have official support for Mysql with production-grade databases, but MariaDB is a binary drop in replacement for Mysql (source : https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/) and should work with Sakai but it is not officially supported.

Database

Driver

Notes

MariaDB 5.5.x (Not officially supported but works)MySQL Connector/J 5.1.13+

(minus) Sakai requires transaction support. In the case of MariaDB, you must implement the XtraDB storage engine to ensure proper transaction handling.

Check the Incompatibilities between MariaDB 5.5 and MariaDB 5.3 and MySQL 5.5 to configure your MariaDB server correctly if you want to use the "INSERT IGNORE" parameter:

https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/#incompatibilities-between-mariadb-55-and-mariadb-53-and-mysql-55

Rutgers University, The State University of New Jersey, use Sakai 2.9.x with MariaDB 5.5 and the XtraDB storage engine (previously MariaDB 5.1 and Sakai 2.9.x)

Source 1 : https://sakai.rutgers.edu/access/content/public/technical.html

Source 2 : http://collab.sakaiproject.org/pipermail/production/2013-January/001962.html

 

Choose the appropriate MySQL or Oracle JDBC driver (or connector) for your installation. For MySQL, download the *zip/*tar.gz archive, extract its contents and copy the mysql-connector-java-<version>-bin.jar to $CATALINA_HOME/common/lib. For Oracle download the ojdbc14.jar file and copy it to $CATALINA_HOME/common/lib.

(info) You will not need to create Sakai database objects (tables, indices, etc) when setting up your database. Sakai generates its own database schema automatically during the Tomcat setup process via the autoDDL setting in sakai.properties.

In actuality, Sakai is not limited to these database choices and integration with other RDBMS systems is not difficult. In the past at least one installation used Microsoft SQL Server while requests for PostgreSQL integration are occasionally raised on the Sakai developers list. However, to date no one in the Sakai Community has stepped forward to support alternatives to either Oracle or MySQL, a prerequisite for adding additional database options to the release.

 

(minus) Irrespective of whether you utilize MySQL or Oracle, be sure you have configured your database to use the UTF-8 character set. Failure to do so will result in range of issues when attempting to use Unicode characters in Sakai. Consult your database documentation or a local DBA for instructions on how to set your database up properly.

If you are uncertain as to how your database is currently configured, you can check with a query. Here is a sample query for checking an Oracle instance:

SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';

VALUE
--------------------------------------------------------------------------------
AL32UTF8

For MySQL, the command to see what encoding your database is currently set to is "show create database sakai", assuming, of course, that your database is named "sakai". e.g.:

mysql> show create database sakai;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| sakai | CREATE DATABASE `sakai` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)

Converting a database from one character set to another is a non-trivial operation, particularly if it is a large production database. We recommend strongly that you verify this aspect of the database creation and configuration process before deploying Sakai.

1.0配置数据库

 

By default, all Sakai distributions are configured to use an in-memory version of HSQLDB. HSQLDB is provided for testing/demo purposes only and should not be run in production.

Whatever database you choose to use you will need to modify at a minimum the following connection settings in sakai.properties:

url@javax.sql.BaseDataSource
username@javax.sql.BaseDataSource
password@javax.sql.BaseDataSource

2.0 设置数据库用户名和密码

 

Set your database username and password:

# DATABASE CONFIGURATION - make sure to modify details to match your particular setup

# The username and password. The defaults are for the out-of-the-box HSQLDB. Change to match your setup.
username@javax.sql.BaseDataSource=yourDbUserName
password@javax.sql.BaseDataSource=yourDbPassword

3.0 设置数据库连接

 

MySQL Sample Configuration

Locate the MySQL configuration block, uncomment the settings and save your changes. Make sure you modify the data source, username and password settings to match your local environment. Do not forget to comment out the HSQLDB and Oracle settings.

# MySQL settings - make sure to alter as appropriate
vendor@org.sakaiproject.db.api.SqlService=mysql
driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/sakai?useUnicode=true&characterEncoding=UTF-8
validationQuery@javax.sql.BaseDataSource=
defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED

Oracle Sample Configuration

Locate the Oracle configuration block, uncomment the settings and save your changes. Make sure you modify the data source, username and password settings to match your local environment. Do not forget to comment out the HSQLDB and MySQL settings.

# Oracle settings - make sure to alter as appropriate
vendor@org.sakaiproject.db.api.SqlService=oracle
driverClassName@javax.sql.BaseDataSource=oracle.jdbc.driver.OracleDriver
#hibernate.dialect=org.hibernate.dialect.Oracle9iDialect
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
url@javax.sql.BaseDataSource=jdbc:oracle:thin:@your.oracle.dns:1521:SID
validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED

(warning) Oracle users may experience performance issues with certain of the SQL settings that work for MySQL. Oracle users can reduce Db load by uncommenting the following settings:

# For improved Oracle performance (from the University of Michigan)
#validationQuery@javax.sql.BaseDataSource=
#defaultTransactionIsolationString@javax.sql.BaseDataSource=
#testOnBorrow@javax.sql.BaseDataSource=false

4.0 设置auto.ddl=true

 

(info) On startup, Sakai will generate all database objects (tables, keys, constraints, etc.) automatically, obviating the need to run DDL scripts manually per the sakai.properties setting auto.ddl.

# establish auto.ddl - on by default
auto.ddl=true
#auto.ddl=false

(warning) Once the database schema is created you should set auto.ddl=false.

5.0 安装MySQL 5.5 / 5.1

 

Configuring the Sakai CLE to use MySQL is an excellent option both for local development and production purposes.

(minus) Sakai requires transaction support. In the case of MySQL you must implement the InnoDB storage engine to ensure proper transaction handling.

(warning) Users upgrading from MySQL 5.0 to MySQL 5.1 on a Mac have reported name comparison problems on startup (for more info see http://collab.sakaiproject.org/pipermail/sakai-dev/2010-June/008066.html. This issue is solved by specifying the following property in a local my.cnf configuration file:

lower_case_table_names=1

(info) You will not need to create Sakai database objects (tables, indices, etc) when setting up your database. Sakai generates its own database schema automatically during the Tomcat setup process via the autoDDL setting in sakai.properties.

(info) Case sensitivity. In most varieties of UNIX, MySQL is case sensitive since the underlying operating system determines the case sensitivity of database and table names. This is not the case for MySQL running in Windows which is case insensitive. Previous MySQL conversion scripts contained a mixture of upper case and lower case statements which occasionally caused problems for upgraders; for 2.8 we opted for lower case for the syntax while leaving the table and field names upper case. Testing on MySQL 5.1 did not reveal any issues with this choice.

Before installing MySQL, confirm whether or not it is already installed on your system by checking the version from the command line:

mysql --version
mysql  Ver 14.14 Distrib 5.1.52, for apple-darwin10.3.0 (i386) using readline 5.1

If MySQL is not installed download MySQL 5.1/5.5 binaries or source from http://dev.mysql.com/downloads/. Linux users should install MySQL using a package or binaries if possible. Choose the standard configuration. Windows users should consider installing MySQL as a service. Remember to include MySQL's /bin directory in your PATH statement.

MySQL 5.5: http://dev.mysql.com/downloads/mysql/5.5.html

MySQL 5.1: http://dev.mysql.com/downloads/mysql/5.1.html

Assign a password for the root account:

mysql -u root -pmysqlpassword

5.1 设置MySQL环境变量

 

MYSQL_HOME

Set the MYSQL_HOME environment variable to point to the base directory of your MySQL installation. In the example below, the path points to a symbolic link file rather than the actual MySQL installation directory. You can create a symbolic link ("sym link") in Unix using the ln -s command (e.g., ln -s mysql-5.1.46-osx10.6-x86_64 mysql).

Unix/Mac:

export MYSQL_HOME=/usr/local/mysql

Windows:

set MYSQL_HOME=C:\mysql
PATH

Add MySQL's /bin directory to your PATH variable.

Unix/Mac:

export PATH=$PATH:$CATALINA_HOME/bin:$JAVA_HOME/bin:$M2_HOME/bin:$MYSQL_HOME/bin:$PHP_HOME/bin:$SUBVERSION_HOME/bin:$USR_LOCAL/bin

Windows:

;C:\mysql\bin

5.2 创建 my.cnf/my.ini 配置文件

 

You can configure MySQL to read a wide variety of startup options from a file named my.cnf. Settings are scoped and can be overridden by file location:

Scope

Location

Override

global

/etc/my.cnf

 

server-specific

binary install: /usr/local/mysql/data/my.cnf; source install: /usr/local/var/my.cnf

global

user

~/my.cnf

global, server-specific

Below is a minimalist MySQL 5.1 configuration file for a development laptop /etc/my.cnf:

[mysqld]
default-storage-engine=InnoDB
lower_case_table_names=1

(warning) Restart MySQL in order for the new settings to take effect.

5.3 创建 "sakai" 数据库已经用户帐号

 

Create a Sakai database with a default character set of UTF-8. Create a user account to which you will assign all permissions.

Use any database name and username you wish and then update your sakai.properties file (or even better, create a local.properties file, which has precedence).

In the example below the database is named "sakaidatabase" and the user account is "sakaiuser".

Excerpt from sakai.properties

username@javax.sql.BaseDataSource=sakaiuser
password@javax.sql.BaseDataSource=sakaipassword

## MySQL settings
# vendor@org.sakaiproject.db.api.SqlService=mysql
# driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
# hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/sakaidatabase?useUnicode=true&characterEncoding=UTF-8
# validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
# defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED

 

mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 272
Server version: 5.1.46 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database sakaidatabase default character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on sakaidatabase.* to sakaiuser@'localhost' identified by 'sakaipassword';
Query OK, 0 rows affected (0.00 sec

mysql> grant all on sakaidatabase.* to sakaiuser@'127.0.0.1' identified by 'sakaipassword';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit

已知问题

 点击展开

Sakai 10 中已知问题

 

版本
工具/服务
JIRA编号
10.0Samigo 练习与测验  SAK-26292 - Getting issue details... STATUS
10.0资源 SAK-26294 - Getting issue details... STATUS


Sakai 10中事件的主要变化

 

版本
工具/服务
JIRA编号
说明
10事件SAM-658 - Update events in assessments ( Closed)事件主要变化。


未解决 Jira 问题

如要显示为解决问题列表,请点击下列链接:

Blocker Critical Major Minor, trivial

安全策略

 点击展开

Sakai Project Security Policy

version 3.1

NOTICE: If you uncover a security vulnerability in Sakai software please do not voice your concerns on any public listserv, blog or other open communication channel but instead notify the Sakai Security Working Group immediately at sakai-security@apereo.org . Please provide a callback telephone number so that we can contact you by telephone if it is deemed necessary.

INTRODUCTION

Sakai is an open-source software initiative that promotes knowledge sharing and information transparency. However, when dealing with security vulnerabilities the integrity of existing Sakai installations can be compromised by the premature public disclosure of security threats before the Sakai Community has had time to analyze, develop and distribute countermeasures through private channels to institutions and organizations that have implemented Sakai software. Recognizing this danger, the Sakai Security Working Group (WG) has developed a security policy that seeks to safeguard the security of existing Sakai installations as well as provide full public disclosure of Sakai security vulnerabilities in a timely manner.

REPORTING SECURITY ISSUES

Security vulnerabilities in Sakai should be reported immediately to the Sakai Security WG at sakai-security@apereo.org . When contacting the WG, please provide a callback telephone number so that we can contact you by phone if it is deemed necessary. Sakai Security WG and community developers, working with the original reporter of the vulnerability, will investigate the issue, determine versions affected, and, if necessary, develop and distribute as quickly as is possible a security update for the Sakai Community and general public.

GENERAL POLICIES

Issues identified as security-related are prioritized and addressed differently than functionality or other issues classified as bugs. Access to issues flagged as security vulnerabilities in Sakai's JIRA issue tracking system will be restricted to Sakai security contacts and members of the Sakai Security Work Group (see below). Discussion, analysis, code development and testing relevant to reported security vulnerabilities will be treated as confidential information.

The Sakai Security WG will work with Sakai Community members to develop fixes for both vulnerable released versions and vulnerable branches (up to a particular date or release number). Code commits for security-related fixes will seek to mask the nature of the vulnerability. This usually takes one of two forms: (1) the commit is held until a patch can be tested, distributed and implemented in known sites or (2) in the case of a fix to a less significant threat the commit may be checked in with limited commentary.

During our QA and release cycles security-related issues will receive priority. At a minimum, the Sakai Security WG will review outstanding security issues before the start of each QA cycle.

The Sakai Security WG will issue security advisories and security updates to the general public once existing Sakai installations have been notified and given time to patch their systems.

SECURITY WORK GROUP

The Sakai Community has instituted a Security Work Group (WG) composed of senior members of the community to respond to reports of security vulnerabilities and who operate using private channels of communication. Besides working to resolve known security vulnerabilities the Security WG will also operate in a pro-active manner, reviewing existing tools and services from a security perspective; defining Sakai security requirements; devising QA/testing models that identify potential security weaknesses; producing security-related documentation; and helping educate developers on web-related security vulnerabilities.

SECURITY DOCUMENTATION

Public information regarding security vulnerabilities will be documented in security advisories, Sakai software release notes and readme files included in demo, binary and source distributions as well as online at the following locations:

Sakai Issues Tracking: http://jira.sakaiproject.org/jira/
Sakai Release page: http://source.sakaiproject.org/release

Release documentation for security updates will identify the Sakai version affected including code branches and provide information on how to close the vulnerability. Security vulnerabilities will be ranked by the threat level index listed below:

Critical Risk

Security vulnerabilities classified as a critical risk involve the possible exposure of data to unauthorized viewing, modification, deletion or acquisition as well as attacks that could result in data corruption.

Major Risk

Security vulnerabilities classified as a major risk involve logical attacks that could compromise the availability of Sakai or otherwise degrade system performance, disrupt or circumvent normal application flow control of Sakai tools and services or use Sakai as a platform for attacks on other systems.

Minor Risk

Security vulnerabilities classified as a minor risk involve threats that (1) can be eliminated by updating existing configuration files to reflect a default secure state (e.g., sakai.properties), (2) are considered extremely difficult for attackers to exploit and/or (3), if exploited, are of minor consequence to the operation of Sakai installations.

SECURITY ADVISORIES

Whenever Sakai security vulnerabilities surface, the Sakai Security WG will execute a three-step security advisory protocol in order to alert (1) Apereo Foundation partners and designated security contacts associated with known Sakai implementations, (2) the wider Sakai Community, and (3) the public at large regarding security issues.

The first step in our protocol involves providing alerts to our partner institutions and organizations as well as to our security contacts throughout the Sakai Community via the use of private communication channels. We delay deliberately the issuance of community-wide and public security advisories in order to allow time for security updates to be devised, tested, distributed and, if necessary, applied to Sakai installations that are known to the Foundation. Once these systems are patched the wider Sakai Community is alerted and time provided for Sakai implementers unknown to the Sakai Security WG to identify themselves, designate security contacts, and patch their systems before we proceed to the third and final step in our security advisory protocol, the general public announcement.

SECURITY CONTACTS

The Sakai Secuirty WG encourages institutions and organizations that download and install Sakai software to consider contacting the Sakai Security WG and providing the name(s) and contact details of one or more individuals to serve as security contacts. Security contact information should be emailed to sakai-security@apereo.org.

As noted above, Sakai security contacts receive security updates in advance of public release in order their institution or organization time to patch their Sakai installation before any Sakai security vulnerability becomes general knowledge. Designated security contacts are also provided access rights to view, comment and address issues flagged as security items in Sakai's JIRA issue tracking application. Security-related JIRA issues are hidden from public view. We do not grant access to these JIRA items lightly and we verify the identity and role of each person who is designated as a security contact.

Email traffic sent to sakai-security-contacts@collab.sakaiproject.org should be treated confidentially and should not be forwarded to other Sakai or public email lists or discussed elsewhere in order to help protect institutions and organizations running Sakai from security-related exploits or attacks.

此前版本

随着Sakai 10发布,Sakai 2.8正式的社区支持将终止。强烈建议运行Sakai 2.8(或更老版本)的学校升级到Sakai 10或Sakai 2.9。

许可证

Sakai 10使用Educational Community License version 2.0许可证

  • No labels