Forum LAMS for Tech-Heads - General Forum: Changes to how we use the FCKEditor in 2.0


 
You may request notification for Changes to how we use the FCKEditor in 2.0.
Search: 

1: Changes to how we use the FCKEditor in 2.0
09/11/06 06:15 PM
[ Reply | Forward ]
Folks, we've made some changes in how we are using the FCKEditor in LAMS 2.0. The FCKEditor is the HTML editor that we are using.

If you are using the zip file on the wiki page, then you won't see these changes. But you will see them if you are using the server we set up from the translators, or if you are building from CVS.

Usage
=====
We originally had most of the fields in authoring as FCKEditors, sharing one instance of the editor across multiple fields (for performance reasons). The sharing was why we had the "HTMLEditor" button and the tick and cross icons to save the changes. But this has worked out very confusing for users.

So we have gone back to only one or two FCKEditors on the authoring page. The main heading will just be a normal text entry field, which is rendered as a heading in the learner screens. The online and offline instructions boxes on the instructions tab are now plain textareas, *not* FCKEditors.

The instructions box (on the basic tab) is an FCKEditor and it is is editing mode straight away - the "HTMLEditor" button and the tick and cross are gone.

Tools such as Forum, Question and Answer, which require a list of topics/items/entries will work the way Forum does. There will be a list of entries and if you want to edit an entry you click the entry in the list and an editing area appears. Within the editing area is an FCKEditor.

So we end up with no more than two editors on the screen, the performance is now okay and hopefully users will not be confused!

We've also added in a button that opens up a full page editor. In the attached screen shot, I've marked the button that will open the editor into full page mode. It will "replace" the current screen. Don't panic if you wonder where the rest of the screen went - just click on the button again and it will go back to normal mode.

For the Tool Writers
====================

So Ken and anyone else out there working on a tool, I'm afraid it's time for some code changes. Update your copy of LAMS from the cvs, then make the following changes.

1. Copy the lams.tld file from lams_central to your project (web/WEB-INF)
2. Delete HTMLEditor.tag and SetEditor.tag files from <tool name>www/WEB-INF/tags
3. Copy all the .tag files from lams_central to your project file - ie copy lams_central/web/WEB-INF/tags/*.tag to <tool name>www/WEB-INF/tags. (There are a number of updates here, in particular a couple of new tags and a change to AuthoringButton - so its easier just to copy the whole lot.)

4. Remove the  <lams:HTMLEditor/> tag from the authoring pages.
5. There are 4 instances of <lams:SetEditor> in the authoring page. These need to be changed as follows:
- title          => <html:text>
- instruction          => <lams:fckeditor>
- online instructions     => <html:textarea>
- offline instructions     => <html:textarea>

One of the new additions is a parameter contentFolderId. This is used within the FCKEditor to upload files to correct location on the LAMS server.

The contentFolderId is passed as a parameter to the Authoring page URL.  This value needs to be saved via the SessionMap OR by placing it in the AuthoringForm with a hidden field in the authoring.jsp.

The contentFolderId needs to be passed in to the AuthoringButton tag and the FckEditor tag.

So far we have updated Noticeboard, Forum, Submit and Share Resources. Do not look at Multiple Choice, Q&A or Voting for ideas as these three tools are having their user interface overhauled at the moment.

Regards,

Fiona Malikoff

Posted by Fiona Malikoff

Attachments:
2: Re: Changes to how we use the FCKEditor in 2.0
In response to 1 09/15/06 05:01 AM
[ Reply | Forward ]
Hi.

I tried to update my tool as you suggested but too many things had changed since I ran RenameTool on the Submit Files tool. I decided to try RenameTool on the NoticeBoard tool and it deployed fine. (I was surprised that substituting "nb" didn't cause problems -- at least any I've encountered so far unless the following is one.)

I created it with:

Rename lanb11 kkbc10
Rename noticeboard behaviourComposer
Rename Noticeboard BehaviourComposer
Rename nb behaviourComposer
Rename Nb BehaviourComposer

Now JBOSS produces the following error. So I found that there was a file named ApplicationContext.xml but not behaviourComposerApplicationContext.xml so I tried renaming it in C:\LAMS2.0\lams-source\lams_tool_behaviourComposer\build\classes\java\org\lamsfoundation\lams\tool\behaviourComposer to behaviourComposerApplicationContext.xml but I still get error message.

Best,

-ken

11:37:54,723 INFO  [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [org/lamsfoundation/lams/tool/behaviourComposer/behaviourComposerApplicationContext.xml]
11:37:54,723 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [org/lamsfoundation/lams/tool/behaviourComposer/behaviourComposerApplicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [org/lamsfoundation/lams/tool/behaviourComposer/behaviourComposerApplicationContext.xml] cannot be opened because it does not exist
java.io.FileNotFoundException: class path resource [org/lamsfoundation/lams/tool/behaviourComposer/behaviourComposerApplicationContext.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:137)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:167)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:129)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:145)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:126)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:262)
    at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3669)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:503)
    at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:150)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.apache.catalina.core.StandardContext.init(StandardContext.java:5005)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:503)
    at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:150)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeployInternal(TomcatDeployer.java:274)
    at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeploy(TomcatDeployer.java:91)
    at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:357)
    at org.jboss.web.WebModule.startModule(WebModule.java:68)
    at org.jboss.web.WebModule.startService(WebModule.java:46)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:272)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:222)
    at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:897)
    at $Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:418)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    at $Proxy28.start(Unknown Source)
    at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:394)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:964)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:956)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:775)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738)
    at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    at $Proxy8.deploy(Unknown Source)
    at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:325)
    at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:501)
    at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:204)
    at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:277)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:272)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:222)
    at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:897)
    at $Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:418)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    at $Proxy4.start(Unknown Source)
    at org.jboss.deployment.SARDeployer.start(SARDeployer.java:273)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:964)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:775)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:722)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    at $Proxy5.deploy(Unknown Source)
    at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:434)
    at org.jboss.system.server.ServerImpl.start(ServerImpl.java:315)
    at org.jboss.Main.boot(Main.java:195)
    at org.jboss.Main$1.run(Main.java:463)
    at java.lang.Thread.run(Thread.java:595)

Posted by Ken Kahn

3: Re: Re: Changes to how we use the FCKEditor in 2.0
In response to 2 09/16/06 02:07 AM
[ Reply | Forward ]
Ken,

Try renaming the one in:

lams_tool_behaviourComposer\src\java\org\lamsfoundation\lams\tool\behaviourComposer

Everything in the build directory is wiped when you do build-jar, build-war, deploy-war, deploy-tool, etc. So your nicely renamed file in the build directory will have been deleted and the one from the src directory would have been copied to build and then deployed.

Fiona

Posted by Fiona Malikoff

5: Re: Re: Re: Changes to how we use the FCKEditor in 2.0
In response to 3 09/17/06 07:19 AM
[ Reply | Forward ]
Hi. Thanks.

Turns out I did rename both the src and build one (but good to know that the build one didn't help at all).

So I tried to rebuild all of LAMS and this time I got the "opposite error" (see below).

So I renamed the file back to what it was. And I was able to sucessfully launch JBOSS. But after I dragged out a BehaviourComposer tool instance while authoring, I double clicked on it and got the following error. Was this caused by RenameTool finding nb is some other context?

Best,

-ken

Sorry, there as been an error.
There is a problem processing this request. Close the browser window and try again. If the problem persists please contact your system administrator or the technical forums on http://lamscommunity.org/.

org.lamsfoundation.lams.tool.behaviourComposer.BehaviourComposerApplicationException: An exception has occured when trying to retrieve behaviourComposer content: Hibernate operation: could not execute query; bad SQL grammar [select behaviourc0_.uid as uid, behaviourc0_.content as content391_, behaviourc0_.creator_user_id as creator3_391_, behaviourc0_.date_created as date4_391_, behaviourc0_.date_updated as date5_391_, behaviourc0_.define_later as define6_391_, behaviourc0_.force_offline as force7_391_, behaviourc0_.content_in_use as content8_391_, behaviourc0_.behaviourComposer_content_id as behaviou9_391_, behaviourc0_.offline_instructions as offline10_391_, behaviourc0_.online_instructions as online11_391_, behaviourc0_.title as title391_ from tl_kkbc10_content behaviourc0_ where behaviourc0_.behaviourComposer_content_id=?]; nested exception is java.sql.SQLException: Unknown column 'behaviourc0_.uid' in 'field list'
Hide detail
org.lamsfoundation.lams.tool.behaviourComposer.BehaviourComposerApplicationException: An exception has occured when trying to retrieve behaviourComposer content: Hibernate operation: could not execute query; bad SQL grammar [select behaviourc0_.uid as uid, behaviourc0_.content as content391_, behaviourc0_.creator_user_id as creator3_391_, behaviourc0_.date_created as date4_391_, behaviourc0_.date_updated as date5_391_, behaviourc0_.define_later as define6_391_, behaviourc0_.force_offline as force7_391_, behaviourc0_.content_in_use as content8_391_, behaviourc0_.behaviourComposer_content_id as behaviou9_391_, behaviourc0_.offline_instructions as offline10_391_, behaviourc0_.online_instructions as online11_391_, behaviourc0_.title as title391_ from tl_kkbc10_content behaviourc0_ where behaviourc0_.behaviourComposer_content_id=?]; nested exception is java.sql.SQLException: Unknown column 'behaviourc0_.uid' in 'field list' at org.lamsfoundation.lams.tool.behaviourComposer.service.BehaviourComposerServicePOJO.retrieveBehaviourComposer(BehaviourComposerServicePOJO.java:120) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176) at $Proxy108.retrieveBehaviourComposer(Unknown Source) at org.lamsfoundation.lams.tool.behaviourComposer.web.BehaviourComposerAuthoringAction.contentExists(BehaviourComposerAuthoringAction.java:220) at org.lamsfoundation.lams.tool.behaviourComposer.web.BehaviourComposerAuthoringAction.unspecified(BehaviourComposerAuthoringAction.java:142) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:256) at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:160) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.lamsfoundation.lams.web.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:130) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.lamsfoundation.lams.web.session.SystemSessionFilter.doFilter(SystemSessionFilter.java:64) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:392) at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:481) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:595) Caused by: org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not execute query; bad SQL grammar [select behaviourc0_.uid as uid, behaviourc0_.content as content391_, behaviourc0_.creator_user_id as creator3_391_, behaviourc0_.date_created as date4_391_, behaviourc0_.date_updated as date5_391_, behaviourc0_.define_later as define6_391_, behaviourc0_.force_offline as force7_391_, behaviourc0_.content_in_use as content8_391_, behaviourc0_.behaviourComposer_content_id as behaviou9_391_, behaviourc0_.offline_instructions as offline10_391_, behaviourc0_.online_instructions as online11_391_, behaviourc0_.title as title391_ from tl_kkbc10_content behaviourc0_ where behaviourc0_.behaviourComposer_content_id=?]; nested exception is java.sql.SQLException: Unknown column 'behaviourc0_.uid' in 'field list' at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:224) at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424) at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:411) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:371) at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:844) at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840) at org.lamsfoundation.lams.tool.behaviourComposer.dao.hibernate.BehaviourComposerContentDAO.findBehaviourComposerContentById(BehaviourComposerContentDAO.java:65) at org.lamsfoundation.lams.tool.behaviourComposer.service.BehaviourComposerServicePOJO.retrieveBehaviourComposer(BehaviourComposerServicePOJO.java:115) ... 55 more Caused by: java.sql.SQLException: Unknown column 'behaviourc0_.uid' in 'field list' at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666) at com.mysql.jdbc.Connection.execSQL(Connection.java:2994) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:936) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1030) at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:296) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:118) at org.hibernate.loader.Loader.getResultSet(Loader.java:1237) at org.hibernate.loader.Loader.doQuery(Loader.java:374) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:210) at org.hibernate.loader.Loader.doList(Loader.java:1561) at org.hibernate.loader.Loader.list(Loader.java:1544) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:830) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74) at org.springframework.orm.hibernate3.HibernateTemplate$31.doInHibernate(HibernateTemplate.java:853) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366) ... 59 more


JBOSS log (problem fixed since but odd that this time it wants the other name for the XML file):

14:01:25,341 INFO  [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [org/lamsfoundation/lams/tool/behaviourComposer/applicationContext.xml]
14:01:25,356 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [org/lamsfoundation/lams/tool/behaviourComposer/applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [org/lamsfoundation/lams/tool/behaviourComposer/applicationContext.xml] cannot be opened because it does not exist
java.io.FileNotFoundException: class path resource [org/lamsfoundation/lams/tool/behaviourComposer/applicationContext.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:137)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:167)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:129)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:145)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:126)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:262)
    at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3669)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:503)
    at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:150)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.apache.catalina.core.StandardContext.init(StandardContext.java:5005)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:503)
    at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:150)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeployInternal(TomcatDeployer.java:274)
    at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeploy(TomcatDeployer.java:91)
    at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:357)
    at org.jboss.web.WebModule.startModule(WebModule.java:68)
    at org.jboss.web.WebModule.startService(WebModule.java:46)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:272)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:222)
    at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:897)
    at $Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:418)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    at $Proxy28.start(Unknown Source)
    at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:394)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:964)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:956)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:775)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738)
    at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    at $Proxy8.deploy(Unknown Source)
    at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:325)
    at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:501)
    at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:204)
    at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:277)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:272)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:222)
    at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:897)
    at $Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:418)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    at $Proxy4.start(Unknown Source)
    at org.jboss.deployment.SARDeployer.start(SARDeployer.java:273)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:964)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:775)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:722)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
    at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
    at $Proxy5.deploy(Unknown Source)
    at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:434)
    at org.jboss.system.server.ServerImpl.start(ServerImpl.java:315)
    at org.jboss.Main.boot(Main.java:195)
    at org.jboss.Main$1.run(Main.java:463)
    at java.lang.Thread.run(Thread.java:595)

Posted by Ken Kahn

6: Re: Re: Re: Re: Changes to how we use the FCKEditor in 2.0
In response to 5 09/18/06 04:58 AM
[ Reply | Forward ]
Ken,

Sorry for not replying earlier but I only just saw this post just before dinner. I think my spam filter was filtering out your postings and I hadn't noticed - I found one in my spam list today.

Anyway, reading this error I suspect either the table names or the the column names in the tool's tables don't match the column names in the *.hbm.xml file. The table at fault is probably your main table.

I've run rename tool and I'll try deploying it and seeing if I can reproduce the error.

Fiona

Posted by Fiona Malikoff

7: Re: Re: Re: Re: Re: Changes to how we use the FCKEditor in 2.0
In response to 6 09/18/06 05:12 AM
[ Reply | Forward ]
Can't reproduce the problem I'm afraid. I've run the rename with the configuration you gave and I did deploy-tool, ran JBOSS, logged in and opened up the authoring screen without a problem.

Can you attach a zip of your source files?

Fiona

Posted by Fiona Malikoff

8: Re: Re: Re: Re: Re: Re: Changes to how we use the FCKEditor in 2.0
In response to 7 09/18/06 05:27 AM
[ Reply | Forward ]
Here is is.

Thanks.

-ken

Posted by Ken Kahn

Attachments:
10: Re: Re: Re: Re: Re: Re: Re: Changes to how we use the FCKEditor in 2.0
In response to 8 09/18/06 06:01 AM
[ Reply | Forward ]
I've got bad news for you Ken.

You are trying to work with tables based on the submit tool and code based on the noticeboard tool. Unfortunately, the column names across our tools aren't consistent enough to do that. So you have to pick one and stay with it for the data side.

The file db/sql/create_lams_tool_behaviourComposer.sql contains the tables for your tool. It defines tl_kkbc10_content as:

create table tl_kkbc10_content (
  content_id bigint not null,
  title varchar(64) not null,
  instruction text,
  define_later bit not null,
  run_offline bit not null,
  offline_instruction text,
  online_instruction text,
  content_in_use bit,
  lock_on_finished bit,
  primary key (content_id)
);

Now looking at BehaviourComposerContent.hbm.xml (which is the file that maps the tl_kkbc10_content table to a BehaviourComposerContent object, it expects the table to be something like

create table tl_kkbc10_content (
    uid bigint not null,
    content text,
    creator_user_id bigint,
    date_created date,
    date_updated date,
    define_later bit
    force_offline bit
    content_in_use bit
    behaviourComposer_content_id bigint not null,
    offline_instructions text,
    online_instructions text,
    title text,
    primary key (uid)
);


I say like as I've just quickly hacked that up manually - it may not be valid code. My sql syntax tends to not be brillant 9:49pm at night!

Trying to take your existing database and align it with the code manually would take some time. I think it would be better to either use the database tables created from the rename of the noticeboard tool, or you would have to go back to the submit codebase again.

Is it possible for you to use the tables that were generated from the copy of the noticeboard tool. Only the create_lams_tool_behaviourComposer.sql and drop_lams_tool_behaviourComposer.sql shuold need to be replaced - the rest of the sql scripts are updated to other tables rather than defining the tool's tables.

I've attached a version of the two files, taken from what the rename tool produced and updated so the default tool content has your title and text. I haven't tested the code since I updated the title and text but hopefully I haven't typed anything wrong.

I could run the rename tool over submit again and send you that with the jsp's fixed up for the submit text replacement problems in the jsp files. But that won't be till tomorrow - I can't see me getting it done tonight. And then you will have lost another day.

Fiona

Posted by Fiona Malikoff

Attachments:
11: Re: Re: Re: Re: Re: Re: Re: Re: Changes to how we use the FCKEditor in 2.0
In response to 10 09/18/06 06:59 AM
[ Reply | Forward ]
Hi. Thanks.

It seems to be working fine now!

The reason I had the inconsistent create_lams_tool_behaviourComposer.sql file is that I had a problem with it a couple weeks ago and you sent me an edited version that fixed the problem. So I stuck with it without noticing that it was tied to the old version. Replacing it with the version you attached worked fine.

Now the real really begins!

-ken

Posted by Ken Kahn

4: behaviourComposer documentation?
In response to 1 09/16/06 04:40 AM
[ Reply | Forward ]
Hi Ken,

Is there any documentation about the behaviourComposer? Also, it seems for the exchange you've been having with Fiona and the rest that you are going great with the tool creation process :-) Really glad to hear about this.

As you might know, Alex Little from the Open University (UK), while here in Sydney working at MELCOE on another LAMS 1.0.x related project, was also working on creating a LAMS 2.0 tool as well.

I was wondering if you also have been documenting some of the steps you've been going thru while putting your tool together? I'm sure it will be of great help for other people attempting to do this in the future.

Let us know if that's the case.

Thanks,

Ernie

Posted by Ernie Ghiglione

9: Re: behaviourComposer documentation?
In response to 4 09/18/06 05:32 AM
[ Reply | Forward ]
Hi.

Yes, I met Alex at the LAMS 2 workshop at the London Knowledge Lab and did find his posting very helpful.

The behaviourComposer is part of a larger project called Constructing2Learn which is described at

http://dfl.cetis.ac.uk/wiki/index.php/Constructing2Learn

and the behaviourComposer is described at

http://dfl.cetis.ac.uk/wiki/index.php/Simulation_construction_kit

(at the end are the plans for LAMS integration).

My documenting of the process of building a LAMS tool has been pretty sketchy -- I'll try to do better.

Best,

-ken

Posted by Ken Kahn

Reply to first post on this page
Back to LAMS for Tech-Heads - General Forum