[Building Sakai] Roster Tool Issue

JOSE MARIANO LUJáN GONZáLEZ jmariano at um.es
Thu Jul 24 02:35:17 PDT 2014


Hi everyone!

At University of Murcia, we are working on the upgrade to Sakai 10. 
During our testing, we found some issues in Roster 2 and because of our 
limited timing, we have also decided to run Roster 1 with Sakai 10.x 
because its much faster than trying to fix all of them.

We've also tried to run R2 (Trunk version - Sakai 11) with Sakai 10.x 
but we also found some other things, here are the main issues for us in 
both versions:

    SAKAI - 10
    https://jira.sakaiproject.org/browse/SAK-27501 Roster 2 require
    roster.viewallmembers or roster.viewgroup to work
    https://jira.sakaiproject.org/browse/SAK-26265 Roster2 shows empty
    list in first attempt.
    SAKAI - 11
    https://jira.sakaiproject.org/browse/SAK-26290 Roster tool does not
    display latin characters properly
    https://jira.sakaiproject.org/browse/SAK-26260 Roster is not
    displayed in default site language but in user language
    https://jira.sakaiproject.org/browse/RSTR-67 Add paging capability
    to entity providers
    https://jira.sakaiproject.org/browse/SAK-27578 Roster2 should show a
    loading image (animated .gif) to advice user that is working on
    rendering the list of participants
    https://jira.sakaiproject.org/browse/SAK-17493 Permissions link
    should not be available to Instructor without realm.upd permission

Short video: Roster 2 (Trunk version) on a Sakai 10 instance loading 2k 
users

    https://aulavirtual.um.es/access/content/group/e2968dfa-2579-4afb-b87d-d6aacb502846/imagenes%20publicas%20para%20meetings%20s2u/roster2video/Roster2.html


Not huge problems but enough to cause some trouble to our users, 
specially in sites with large membership. Bear in mind that we were 
currently running Sakai 2.9.3 with a modified Roster 1 that includes 
pagination so we had minimized R1 performance problems.

Our plan is to try to upgrade to Roster 2 later this year when most 
issues are fixed. Our priority right now is to complete the upgrade to 
Sakai 10, after that, we might be able to work on solving some of the 
issues described above.

Best regards,
Mariano



El 23/07/2014 23:03, Miller, Jeffrey escribió:
> Thanks a bunch, it's working now ...
>
>
> On Wed, Jul 23, 2014 at 4:00 PM, Stephen Marquard 
> <stephen.marquard at uct.ac.za <mailto:stephen.marquard at uct.ac.za>> wrote:
>
>     Hi Jeffrey
>
>     I'm assuming you want to run "roster classic" in Sakai 10.x.
>
>     The combination we have running is roster plus "profile class" or
>     legacy profile manager or whatever:
>
>     roster	     -r310589	https://source.sakaiproject.org/svn/roster/trunk
>     profile	     -r310589	https://source.sakaiproject.org/svn/profile/trunk
>
>     with these build patches:
>
>     http://source.cet.uct.ac.za/svn/sakai/patches/trunk/profile_build.diff
>     http://source.cet.uct.ac.za/svn/sakai/patches/trunk/roster_build.diff
>
>     and then you might needs this sakai.properties setting:
>
>     profile.manager.integration.bean=org.sakaiproject.api.app.profile.LegacyProfileManager
>
>     and you might need to add roster and profile sections to
>     dependencyManagement in your master/pom.xml. Ours is here:
>
>     https://source.sakaiproject.org/svn/msub/uct.ac.za/master/branches/vula-10.x/pom.xml
>
>     Regards
>     Stephen
>
>     ------------------------------------------------------------------------
>     *From:* sakai-dev-bounces at collab.sakaiproject.org
>     <mailto:sakai-dev-bounces at collab.sakaiproject.org>
>     [sakai-dev-bounces at collab.sakaiproject.org
>     <mailto:sakai-dev-bounces at collab.sakaiproject.org>] on behalf of
>     Miller, Jeffrey [jeffrey.miller.ctr at usuhs.edu
>     <mailto:jeffrey.miller.ctr at usuhs.edu>]
>     *Sent:* 23 July 2014 09:47 PM
>     *To:* sakai-dev at collab.sakaiproject.org
>     <mailto:sakai-dev at collab.sakaiproject.org>
>     *Subject:* [Building Sakai] Roster Tool Issue
>
>     I just built the roster tool from the same version that UCT is
>     using, svn co -r310589
>     https://source.sakaiproject.org/svn/roster/trunk roster-trunk.
>     After some pom tweaks to get it to build and then deploy, I'm
>     experiencing the following:
>
>     stack trace:
>
>
>     org.sakaiproject.portal.api.PortalHandlerException:
>     org.sakaiproject.tool.api.ToolException:
>     javax.servlet.ServletException: An exception occurred processing
>     JSP page /roster/main.jsp at line 16
>
>
>     13: <sakai:view title="#{msgs.facet_roster_list}"
>     toolCssHref="/sakai-roster-tool/css/roster.css">
>
>     14: <%="<script src=\"js/roster.js\"></script>"%>
>
>     15: <h:form id="nav_form">
>
>     16: <t:aliasBean alias="#{viewBean}" value="#{overview}">
>
>     17: <%@ include file="inc/nav.jspf" %>
>
>     18: </t:aliasBean>
>
>     19:
>
>
>
>     Stacktrace:
>
>     at
>     org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:905)
>
>     caused by: org.sakaiproject.tool.api.ToolException:
>     javax.servlet.ServletException: An exception occurred processing
>     JSP page /roster/main.jsp at line 16
>
>
>     13: <sakai:view title="#{msgs.facet_roster_list}"
>     toolCssHref="/sakai-roster-tool/css/roster.css">
>
>     14: <%="<script src=\"js/roster.js\"></script>"%>
>
>     15: <h:form id="nav_form">
>
>     16: <t:aliasBean alias="#{viewBean}" value="#{overview}">
>
>     17: <%@ include file="inc/nav.jspf" %>
>
>     18: </t:aliasBean>
>
>     19:
>
>
>
>     Stacktrace:
>
>     at
>     org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1570)
>
>     caused by: javax.servlet.ServletException: An exception occurred
>     processing JSP page /roster/main.jsp at line 16
>
>
>     13: <sakai:view title="#{msgs.facet_roster_list}"
>     toolCssHref="/sakai-roster-tool/css/roster.css">
>
>     14: <%="<script src=\"js/roster.js\"></script>"%>
>
>     15: <h:form id="nav_form">
>
>     16: <t:aliasBean alias="#{viewBean}" value="#{overview}">
>
>     17: <%@ include file="inc/nav.jspf" %>
>
>     18: </t:aliasBean>
>
>     19:
>
>
>
>     Stacktrace:
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>
>     caused by: javax.faces.FacesException: An exception occurred
>     processing JSP page /roster/main.jsp at line 16
>
>
>     13: <sakai:view title="#{msgs.facet_roster_list}"
>     toolCssHref="/sakai-roster-tool/css/roster.css">
>
>     14: <%="<script src=\"js/roster.js\"></script>"%>
>
>     15: <h:form id="nav_form">
>
>     16: <t:aliasBean alias="#{viewBean}" value="#{overview}">
>
>     17: <%@ include file="inc/nav.jspf" %>
>
>     18: </t:aliasBean>
>
>     19:
>
>
>
>     Stacktrace:
>
>     at
>     org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
>
>     caused by: org.apache.jasper.JasperException: An exception
>     occurred processing JSP page /roster/main.jsp at line 16
>
>
>     13: <sakai:view title="#{msgs.facet_roster_list}"
>     toolCssHref="/sakai-roster-tool/css/roster.css">
>
>     14: <%="<script src=\"js/roster.js\"></script>"%>
>
>     15: <h:form id="nav_form">
>
>     16: <t:aliasBean alias="#{viewBean}" value="#{overview}">
>
>     17: <%@ include file="inc/nav.jspf" %>
>
>     18: </t:aliasBean>
>
>     19:
>
>
>
>     Stacktrace:
>
>     at
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
>
>     caused by: javax.faces.el.EvaluationException: Cannot get value
>     for expression '#{overview}'
>
>     at
>     org.apache.myfaces.custom.aliasbean.Alias.computeEvaluatedExpression(Alias.java:91)
>
>     caused by: javax.faces.el.EvaluationException: Cannot get value
>     for expression '#{filter}'
>
>     at
>     org.apache.myfaces.config.impl.digester.elements.ManagedProperty.getRuntimeValue(ManagedProperty.java:130)
>
>     caused by: javax.faces.el.EvaluationException: Cannot get value
>     for expression '#{services}'
>
>     at
>     org.apache.myfaces.config.impl.digester.elements.ManagedProperty.getRuntimeValue(ManagedProperty.java:130)
>
>     caused by: javax.faces.FacesException: Cannot coerce
>     com.sun.proxy.$Proxy101 to
>     org.sakaiproject.api.app.roster.RosterManager
>
>     at
>     org.apache.myfaces.config.ManagedBeanBuilder.initializeProperties(ManagedBeanBuilder.java:188)
>
>     caused by: javax.servlet.jsp.el.ELException: Attempt to coerce a
>     value of type "com.sun.proxy.$Proxy101" to type
>     "org.sakaiproject.api.app.roster.RosterManager"
>
>     at org.apache.commons.el.Logger.logError(Logger.java:481)
>
>     at org.apache.commons.el.Logger.logError(Logger.java:498)
>
>     at org.apache.commons.el.Logger.logError(Logger.java:566)
>
>     at org.apache.commons.el.Coercions.coerceToObject(Coercions.java:799)
>
>     at org.apache.commons.el.Coercions.coerce(Coercions.java:343)
>
>     at
>     org.apache.myfaces.shared_impl.util.ClassUtils.convertToType(ClassUtils.java:304)
>
>     at
>     org.apache.myfaces.config.ManagedBeanBuilder.initializeProperties(ManagedBeanBuilder.java:188)
>
>     at
>     org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:55)
>
>     at
>     org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:314)
>
>     at
>     org.sakaiproject.jsf.app.SakaiVariableResolver.resolveVariable(SakaiVariableResolver.java:76)
>
>     at
>     org.sakaiproject.jsf.app.SakaiVariableResolver.resolveVariable(SakaiVariableResolver.java:76)
>
>     at
>     org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(ValueBindingImpl.java:570)
>
>     at org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124)
>
>     at
>     org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386)
>
>     at
>     org.apache.myfaces.config.impl.digester.elements.ManagedProperty.getRuntimeValue(ManagedProperty.java:130)
>
>     at
>     org.apache.myfaces.config.ManagedBeanBuilder.initializeProperties(ManagedBeanBuilder.java:170)
>
>     at
>     org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:55)
>
>     at
>     org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:314)
>
>     at
>     org.sakaiproject.jsf.app.SakaiVariableResolver.resolveVariable(SakaiVariableResolver.java:76)
>
>     at
>     org.sakaiproject.jsf.app.SakaiVariableResolver.resolveVariable(SakaiVariableResolver.java:76)
>
>     at
>     org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(ValueBindingImpl.java:570)
>
>     at org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124)
>
>     at
>     org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386)
>
>     at
>     org.apache.myfaces.config.impl.digester.elements.ManagedProperty.getRuntimeValue(ManagedProperty.java:130)
>
>     at
>     org.apache.myfaces.config.ManagedBeanBuilder.initializeProperties(ManagedBeanBuilder.java:170)
>
>     at
>     org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:55)
>
>     at
>     org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:314)
>
>     at
>     org.sakaiproject.jsf.app.SakaiVariableResolver.resolveVariable(SakaiVariableResolver.java:76)
>
>     at
>     org.sakaiproject.jsf.app.SakaiVariableResolver.resolveVariable(SakaiVariableResolver.java:76)
>
>     at
>     org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(ValueBindingImpl.java:570)
>
>     at org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124)
>
>     at
>     org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386)
>
>     at
>     org.apache.myfaces.custom.aliasbean.Alias.computeEvaluatedExpression(Alias.java:91)
>
>     at org.apache.myfaces.custom.aliasbean.Alias.make(Alias.java:111)
>
>     at
>     org.apache.myfaces.custom.aliasbean.AliasBean.makeAlias(AliasBean.java:310)
>
>     at
>     org.apache.myfaces.custom.aliasbean.AliasBean.makeAlias(AliasBean.java:295)
>
>     at
>     org.apache.myfaces.custom.aliasbean.AliasBean.encodeBegin(AliasBean.java:262)
>
>     at
>     javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:467)
>
>     at
>     javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:320)
>
>     at
>     org.apache.myfaces.custom.aliasbean.AliasBeanTag.doStartTag(AliasBeanTag.java:72)
>
>     at
>     org.apache.jsp.roster.main_jsp._jspx_meth_t_005faliasBean_005f0(main_jsp.java:328)
>
>     at
>     org.apache.jsp.roster.main_jsp._jspx_meth_h_005fform_005f0(main_jsp.java:297)
>
>     at org.apache.jsp.roster.main_jsp._jspService(main_jsp.java:240)
>
>     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>
>     at
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
>
>     at
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
>
>     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
>
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
>
>     at
>     org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:419)
>
>     at
>     org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
>
>     at
>     org.sakaiproject.jsf.app.SakaiViewHandler.renderView(SakaiViewHandler.java:162)
>
>     at
>     org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
>
>     at
>     org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
>
>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:394)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
>
>     at org.sakaiproject.jsf.util.JsfTool.dispatch(JsfTool.java:222)
>
>     at org.sakaiproject.jsf.util.JsfTool.doGet(JsfTool.java:242)
>
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
>
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:378)
>
>     at
>     org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
>
>     at
>     org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:513)
>
>     at
>     org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1570)
>
>     at
>     org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:215)
>
>     at
>     org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:98)
>
>     at
>     org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharonPortal.java:905)
>
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
>
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:455)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>
>     at
>     org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>
>     at
>     org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
>
>     at
>     org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>
>     at
>     org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
>
>     at
>     org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>
>     at
>     org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>
>     at
>     org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
>
>     at
>     org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>
>     at
>     org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>
>     at
>     org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
>
>     at
>     org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
>
>     at
>     org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
>
>     at
>     java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>
>     at
>     java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>
>     at
>     org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>
>       at java.lang.Thread.run(Thread.java:745)
>
>     Any ideas what may be causing this?  JSF and tomahawk versions all
>     appear to be consistent.
>
>     Thanks,
>     -jeb
>
>     -- 
>     Jeb Miller
>     Programmer Analyst - Sakai, HJF
>     USUHS/ATD
>     4301 Jones Bridge Road
>     Bethesda, MD 20814-4799
>     301-319-0442 <tel:301-319-0442>
>     ------------------------------------------------------------------------
>     UNIVERSITY OF CAPE TOWN
>
>     This e-mail is subject to the UCT ICT policies and e-mail
>     disclaimer published on our website at
>     http://www.uct.ac.za/about/policies/emaildisclaimer/ or obtainable
>     from +27 21 650 9111 <tel:%2B27%2021%20650%209111>. This e-mail is
>     intended only for the person(s) to whom it is addressed. If the
>     e-mail has reached you in error, please notify the author. If you
>     are not the intended recipient of the e-mail you may not use,
>     disclose, copy, redirect or print the content. If this e-mail is
>     not related to the business of UCT it is sent by the sender in the
>     sender's individual capacity.
>
>
>
>
> -- 
> Jeb Miller
> Programmer Analyst - Sakai, HJF
> USUHS/ATD
> 4301 Jones Bridge Road
> Bethesda, MD 20814-4799
> 301-319-0442
>
>
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>
> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"

-- 
******************************************
José Mariano Luján González - Aula Virtual
Area de Tecnologías de la Información
y las Comunicaciones Aplicadas (ATICA)
UNIVERSIDAD DE MURCIA - http://www.um.es

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20140724/e441ce94/attachment.html 


More information about the sakai-dev mailing list