Limits on HTML in WIKI pages?

LabKey Support Forum (Inactive)
Limits on HTML in WIKI pages? tholzman  2008-04-25 11:48
Status: Closed
 
What are the limits on HTML in WIKI (and I assume, MESSAGE) pages? I tried to place an excel-converted spreadsheet on a wiki page. Initially it crashed the page display service and made the page very hard to delete. After removing external namespace references it displays properly on normal browsers (firefox, ie, safari) but loses all its formatting, color and fonts on the WIKI page.
 
 
Matthew Bellew responded:  2008-04-25 21:40
Well there aren't any intentional limitations (aside from security rules for script). You do have to remember that you will only have the labkey stylesheet by default (you have to inline any styles you use).

However, the MS apps used to be notorious for saving very complicated HTML. Some editors even have built-in "cleanup microsoft html" commands. Could you post an example or two (I'm concerned about the crash on display)
 
tholzman responded:  2008-04-29 11:16
I think my primary problem is the stylesheet. Is there any way of appending <head> </head> information to the Labkey header?

My secondary problem is more annoying. I find it very difficult to erase an HTML WIKI page once it starts generating errors.
If I delete the WIKI section from the folder, then re-attach "another" one, it ends up with the same pages. If I try to delete or edit the
broken page under [manage] section, CPAS tries to display page, I get an error message:

500: Unexpected server error
Home Back Folder
java.lang.RuntimeException: Namespace for prefix 'border' has not been declared.

[Show more details]

javax.xml.transform.TransformerException: java.lang.RuntimeException: Namespace for prefix 'border' has not been declared.
       at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:718)
       at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
       at org.labkey.api.util.PageFlowUtil.convertNodeToHtml(PageFlowUtil.java:1291)
       at org.labkey.wiki.renderer.HtmlRenderer.format(HtmlRenderer.java:111)
       at org.labkey.wiki.WikiManager.formatWiki(WikiManager.java:724)
       at org.labkey.wiki.model.WikiVersion.getHtml(WikiVersion.java:93)
       at org.labkey.wiki.model.BaseWikiView.init(BaseWikiView.java:110)
       at org.labkey.wiki.model.WikiView.<init>(WikiView.java:17)
       at org.labkey.wiki.WikiController$PageAction.getView(WikiController.java:1564)
       at org.labkey.wiki.WikiController$PageAction.getView(WikiController.java:1514)
       at org.labkey.api.action.SimpleViewAction.handleRequest(SimpleViewAction.java:43)
       at org.labkey.api.action.BaseViewAction.handleRequestInternal(BaseViewAction.java:142)
       at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
       at org.labkey.api.action.SpringActionController.handleRequest(SpringActionController.java:285)
       at org.labkey.api.view.ViewServlet.dispatchActionController(ViewServlet.java:315)
       at org.labkey.api.view.ViewServlet._dispatchActionURL(ViewServlet.java:152)
       at org.labkey.api.view.ViewServlet.service(ViewServlet.java:128)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.labkey.api.data.TransactionFilter.doFilter(TransactionFilter.java:36)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.labkey.core.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:124)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.labkey.api.module.ModuleLoader.doFilter(ModuleLoader.java:899)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.labkey.api.security.AuthFilter.doFilter(AuthFilter.java:94)
       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.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
       at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
       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.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
       at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException: Namespace for prefix 'border' has not been declared.
       at com.sun.org.apache.xml.internal.serializer.SerializerBase.getNamespaceURI(SerializerBase.java:895)
       at com.sun.org.apache.xml.internal.serializer.SerializerBase.addAttribute(SerializerBase.java:422)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:197)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:90)
       at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:663)
       at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:709)
       ... 44 more
---------
java.lang.RuntimeException: Namespace for prefix 'border' has not been declared.
       at com.sun.org.apache.xml.internal.serializer.SerializerBase.getNamespaceURI(SerializerBase.java:895)
       at com.sun.org.apache.xml.internal.serializer.SerializerBase.addAttribute(SerializerBase.java:422)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:197)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:226)
       at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:90)
       at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:663)
       at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:709)
       at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
       at org.labkey.api.util.PageFlowUtil.convertNodeToHtml(PageFlowUtil.java:1291)
       at org.labkey.wiki.renderer.HtmlRenderer.format(HtmlRenderer.java:111)
       at org.labkey.wiki.WikiManager.formatWiki(WikiManager.java:724)
       at org.labkey.wiki.model.WikiVersion.getHtml(WikiVersion.java:93)
       at org.labkey.wiki.model.BaseWikiView.init(BaseWikiView.java:110)
       at org.labkey.wiki.model.WikiView.<init>(WikiView.java:17)
       at org.labkey.wiki.WikiController$PageAction.getView(WikiController.java:1564)
       at org.labkey.wiki.WikiController$PageAction.getView(WikiController.java:1514)
       at org.labkey.api.action.SimpleViewAction.handleRequest(SimpleViewAction.java:43)
       at org.labkey.api.action.BaseViewAction.handleRequestInternal(BaseViewAction.java:142)
       at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
       at org.labkey.api.action.SpringActionController.handleRequest(SpringActionController.java:285)
       at org.labkey.api.view.ViewServlet.dispatchActionController(ViewServlet.java:315)
       at org.labkey.api.view.ViewServlet._dispatchActionURL(ViewServlet.java:152)
       at org.labkey.api.view.ViewServlet.service(ViewServlet.java:128)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.labkey.api.data.TransactionFilter.doFilter(TransactionFilter.java:36)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.labkey.core.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:124)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.labkey.api.module.ModuleLoader.doFilter(ModuleLoader.java:899)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.labkey.api.security.AuthFilter.doFilter(AuthFilter.java:94)
       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.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
       at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
       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.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
       at java.lang.Thread.run(Thread.java:619)

request attributes
LABKEY.StartTime = 1209492907581
javax.servlet.request.key_size = 0
javax.servlet.request.ssl_session = 48176491ff8a0a675e877c04a8f65d8729aa823e1d973ed30eb2e62fcb9a785d
LABKEY.container = /Allen Foundation Biomarker Grant/Allen Grant Data
javax.servlet.request.cipher_suite = TLS_DHE_RSA_WITH_AES_128_CBC_SHA
LABKEY.OriginalURL = https://proteomics.fhcrc.org/CPAS/wiki/Allen%20Foundation%20Biomarker%20Grant/Allen%20Grant%20Data/page.view?name=SampleStatus
LABKEY.action = page
LABKEY.controller = wiki
LABKEY.RequestURL = /CPAS/wiki/Allen%20Foundation%20Biomarker%20Grant/Allen%20Grant%20Data/page.view?name=SampleStatus

core schema database configuration
Server URL    jdbc:jtds:sqlserver://edi-sql2.fhcrc.org/cpas
Product Name    Microsoft SQL Server
Product Version    08.00.2039
Driver Name    jTDS Type 4 JDBC Driver for MS SQL Server and Sybase
Driver Version    1.2.2
 
Matthew Bellew responded:  2008-04-29 11:38
First for the stylesheet question. Even though HTML says the <style> tag has to be in the <head>, this is not actually true. The browsers will correctly read styles embedded in the body. I suspect that this is to solve exactly this sort of problem.

The javax.xml.transform.TransformerException error is more serious. I'll enter a bug about that.
 
eknelson responded:  2008-04-30 15:29
Matt already addressed your main challenge, but I thought it might be helpful to add one more tip. You say:

"If I delete the WIKI section from the folder, then re-attach "another" one, it ends up with the same pages."

In other words, you expect all wiki pages for a folder to be deleted when you close the webpart (aka "WIKI section") displaying them on a folder portal page. Not an unreasonable expectation.

Actually, your wiki pages are purposefully retained when you close/delete a wiki webpart. Britt gave me a great explanation for this behavior:

"Webparts are just windows onto underlying data- deleting a webpart will never delete actual data. That is, after deleting a webpart, you can always add the webpart again, and you'll see the pre-deletion data, assuming that the webparts have the same settings. "