在 EVALSYS 的安装指南中,它说“该工具应添加到所有我的工作区”,但它没有提供有关如何执行此操作的任何详细信息。这似乎是一件很常见的事情,有没有最佳实践?
2 回答
最简单的方法是将工具添加到!user站点(使用特殊的管理站点工具)。找到 !user 站点,然后添加一个页面(使用“页面”按钮),然后将一个工具添加到该页面,然后从列表中选择要添加到所有工作区的工具。完成此操作后,所有新的“我的工作区”都会在用户首次登录 Sakai 时自动创建时包含该工具。
关于现有工作区的注意事项:
如果您还希望所有现有的“我的工作区”都包含该工具,那么您必须实际删除它们,以便在下次用户登录时重新创建它们(这将导致当前登录的用户出现问题)。最好在系统未运行(或至少没有被积极使用)时完成。为此,您需要在数据库上运行这样的 SQL:
delete from sakai_site where SITE_ID like '~%' AND SITE_ID <> '~admin';
通过 Sakai 网络服务的替代方法:
还有一个 SOAP 网络服务可以向所有“我的工作区”添加一个工具,该工具位于:http://{your.sakai.server}/sakai-axis/SakaiScript.jws?wsdl
如果您使用的是 Sakai 10+,那么同样的功能也可以通过 CXF 网络服务使用。有关文档和其他方法,请参见此处的源代码:https ://source.sakaiproject.org/svn/webservices/branches/sakai-10.x/axis/src/webapp/SakaiScript.jws
public String addNewToolToAllWorkspaces(
String sessionid, String toolid, String pagetitle, String tooltitle,
int pagelayout, int position, boolean popup);
有关使用 Sakai SOAP Web 服务的更多详细信息,请访问: https ://confluence.sakaiproject.org/display/WEBSVCS/How+to+use+the+Sakai+Web+Services
当您导航到http://your.server/sakai-axis/SakaiScript.jws?wsdl时,还有一个 Axis Web 服务可以执行此操作。如果您使用的是 Sakai 10+,那么同样的呼叫也可以通过 CXF 获得。
/**
* Adds a tool to all My Workspace sites
*
* @param sessionid the id of a valid session for the admin user
* @param toolid the id of the tool you want to add (ie sakai.profile2)
* @param pagetitle the title of the page shown in the site navigation
* @param tooltitle the title of the tool shown in the main portlet
* @param pagelayout single or double column (0 or 1). Any other value will revert to 0.
* @param position integer specifying the position within other pages on the site (0 means top, for right at the bottom a large enough number, ie 99)
* @param popup boolean for if it should be a popup window or not
*
* @return success or exception
* @throws AxisFault
*
* Sakai properties:
* #specify the list of users to ignore separated by a comma, no spaces. Defaults to 'admin,postmaster'.
* webservice.specialUsers=admin,postmaster
*
*/
public String addNewToolToAllWorkspaces(String sessionid, String toolid, String pagetitle, String tooltitle, int pagelayout, int position, boolean popup) throws AxisFault