qtoClass
Create / Maintain a questionnaire
The questionnaires are an special version of the standard wiki Data Applications (App-Within-Minutes).
They are created by a number of building blocks;
- A class that describes the individual questions in a questionnaire
- A sheet that will create a nice form that you can fill in
- A template that allows you to set some defaults, but must always be available
- A translation that will create the readable questions in as many languages as desired
- A space to contain all the questionnaire data of the families
- A introduction where you tell the family about the goal of this specific questionairre
To achieve the nice and user-friendly design of the questionnaires you have to walk ste-by-step, from top to bottom . But don't worry, it is not that hard and I will help you in every way I can.
Failed to execute the [velocity] macro. Cause: [Error number 9001 in 9: Access denied in edit mode on document xwiki:WaihonaCode.qtoClass]. Click on this message for details.
org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Velocity Macro for content [#if (!$isSheet)
#set($className = $stringtool.removeEnd($doc.name, 'Class'))
## Determine the class sheets.
#set($classSheetReferences = $services.sheet.getClassSheets($doc))
Not found a classSheet: $classSheetReferences.isEmpty()
#if ($classSheetReferences.isEmpty())
## There is no class sheet explicitly bound to this class. Fall-back on naming convention.
## Before XWiki 2.0, the default class sheet was suffixed with "ClassSheet". Since 2.0, the suffix is just "Sheet".
#set($defaultClassSheetReference = $services.model.createDocumentReference($doc.wiki, $doc.space, "${className}ClassSheet"))
default class sheet reference exist: $xwiki.exists($defaultClassSheetReference)
#if(!$xwiki.exists($defaultClassSheetReference))
#set($defaultClassSheetReference = $services.model.createDocumentReference($doc.wiki, $doc.space, "${className}Sheet"))
#end
default class sheet reference: $defaultClassSheetReference
#end
## Determine the template using naming convention.
## Before XWiki 2.0, the default class template was suffixed with "ClassTemplate". Since 2.0, the suffix is just "Template".
#set($classTemplateReference = $services.model.createDocumentReference($doc.wiki, $doc.space, "${className}ClassTemplate"))
#if(!$xwiki.exists($classTemplateReference))
#set($classTemplateReference = $services.model.createDocumentReference($doc.wiki, $doc.space, "${className}Template"))
#end
#set($classTemplateDoc = $xwiki.getDocument($classTemplateReference))
#set($hasClassSheets = !$classSheetReferences.isEmpty() || $xwiki.exists($defaultClassSheetReference))
#set($hasClassTemplate = !$classTemplateDoc.isNew())
#set($classTranslationReference = $services.model.createDocumentReference($doc.wiki, $doc.space, "${className}Translations"))
#set($classTranslateDoc = $xwiki.getDocument($classTranslationReference))
#set($hasClassTranslation = !$classTranslateDoc.isNew())
## Set the location to store the questions by setting a SPACE. The space is stored in a object of AppWithinMinutes.MetadataClass on this page
#if(!$defaultSpace)
## Read the metadata object to find where default new instances of classes should be created
#set($defaultSpace = 'Main')
#set ($hasMetaObject = $doc.getObject('AppWithinMinutes.MetadataClass'))
#if($hasMetaObject)
#set($defaultSpace = $hasMetaObject.dataSpaceName)
#else
##Create MetaObject to define space for storing objects of class
#set($hasMetaObject.dataSpaceName = $className)
$doc.save('set Meta data')
#set($defaultSpace = $className)
#end
#end
#if(!$defaultParent)
#set($defaultParent = ${doc.fullName})
#end
#if($doc.getxWikiClass().properties.size() == 0)
{{warning}}The class does not have any properties yet. You can use the {{html}}<a href="$doc.getURL('edit', 'editor=class')">class editor</a>{{/html}} to define them.{{/warning}}
#else
== Class properties ==
#foreach($property in $doc.getxWikiClass().properties)
* $property.prettyName (${property.name}: $xwiki.metaclass.get($property.classType).prettyName)
#end
* //You can use the class editor to {{html}}<a href="$doc.getURL('edit', 'editor=class')">add or modify the class properties</a>{{/html}}.//
#end
#if ($hasClassSheets && $hasClassTemplate && $hasClassTranslation)
#createDocumentSpace($className)
{{info}}By successfully creating a **Sheet**, **Template** and a **Translation** it is now time to create the introduction page{{/info}}
{{error}}**To do: we should create the introduction page and create a link to it{{/error}}
(%class="bg-success"%)(((
{{html}}
#includeTopic("${className}.introduction")
{{/html}}
By successfully creating a **Sheet**, **Template** and a **Translation** you can test the questionnaire
)))
== Create a new test questionnaire ==
#if("$!targetDocName" != '' && $xwiki.exists($targetDocName))
{{warning}}The target document already exists. Please choose a different name, or [[view the existing document>>$targetDocName]]{{/warning}}
#elseif("$!targetDocName" != '')
{{warning}}You don't have permission to create that document{{/warning}}
#end
{{html}}
<form action="" id="newdoc" method="post">
<div>
<input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
<input type="hidden" name="parent" value="${defaultParent}"/>
<input type="hidden" name="template" value="${classTemplateDoc}"/>
<input type="hidden" name="sheet" value="1"/>
<label for="spaceName">Space: </label><input type="text" id="spaceName" name="spaceName" value="${defaultSpace}" size="8"/>
<label for="docName">Document: </label><input type="text" id="docName" name="docName" value="Document name" class="withTip"'/>
<span class="buttonwrapper"><input type="submit" value="Create this document" class="button"/></span>
</div>
</form>
{{/html}}
#end ## has class sheet and class template
=== Existing documents ===
#set($sql = ", BaseObject as obj where obj.name=doc.fullName and obj.className=? and obj.name<>?")
#foreach ($item in $services.query.hql($sql).bindValues([$doc.fullName, $classTemplateDoc.fullName]).execute())
* [[$item]]
#end
== The class sheets ==
#if (!$hasClassSheets || !$hasClassTemplate)
Before using this class you must first create a sheet and a template for it. Follow the instructions below to do this.
#end
{{info}}The //Sheet// allows to control the presentation of documents of this data type. You can use the default presentation, which enumerates all the available fields, or you can design your own presentation. You can also choose different presentations for the viewing and for the editing modes.{{/info}}
#if(!$hasClassSheets)
{{html}}
<form action="$xwiki.getURL($defaultClassSheetReference, 'save', 'editor=wiki')" method="post">
<div>
<input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
<input type="hidden" name="parent" value="${doc.fullName}"/>
<input type="hidden" name="xredirect" value="${doc.URL}"/>
#set ($sheetContent = $xwiki.getDocument('WaihonaCode.qObjectSheet').getContent().replace('XWiki.MyClass', $doc.fullName))
#set ($sheetContent = $sheetContent.replace('ClassTranslation', 'Translation'))
## We have to encode the new line characters in order to preserve them, otherwise they are replace with a
## space when the HTML is cleaned.
## FIXME: Use a dedicated escape tool method when XCOMMONS-405 is implemented.
#set ($sheetContent = $escapetool.xml($sheetContent).replaceAll("\n", ' '))
<input type="hidden" name="content" value="$sheetContent"/>
<input type="hidden" name="title" value="${escapetool.h}if(${escapetool.d}doc.name == '$escapetool.xml($defaultClassSheetReference.name)')$escapetool.xml($className) Sheet${escapetool.h}{else}${escapetool.d}services.display.title(${escapetool.d}doc, {'displayerHint': 'default'})${escapetool.h}end"/>
<span class="buttonwrapper"><input type="submit" value="Create the document sheet" class="button"/></span>
</div>
</form>
{{/html}}
#else
#set($defaultClassSheetDoc = $xwiki.getDocument($defaultClassSheetReference))
#if($classSheetReferences.isEmpty() && !$defaultClassSheetDoc.getObject('XWiki.SheetClass'))
## The sheet is not bound to the class.
#set($xredirect = $xwiki.relativeRequestURL)
#set($defaultClassSheetStringReference = $services.model.serialize($defaultClassSheetReference, "default"))
#set($bindURL = $doc.getURL('view', "bindSheet=${escapetool.url($defaultClassSheetStringReference)}&xredirect=${escapetool.url($xredirect)}&form_token=$!{services.csrf.getToken()}"))
{{warning}}
The sheet is not bound to the class so it won't be applied automatically when a document that has an object of this class is displayed.#if ($hasEdit) {{html}}<a href="$bindURL">Bind the sheet to the class »</a>.{{/html}}#end
{{/warning}}
#end
#if ($classSheetReferences.size() < 2)
#set($classSheetDoc = $defaultClassSheetDoc)
#if(!$classSheetReferences.isEmpty())
#set($classSheetDoc = $xwiki.getDocument($classSheetReferences.get(0)))
#end
[[View the sheet document (${classSheetDoc.fullName}) »>>${classSheetDoc.fullName}]]
#else
The following class sheets are bound to this class:
#foreach($classSheetReference in $classSheetReferences)
* [[$services.model.serialize($classSheetReference, "default")]]
#end
#end
#end
== The translation =
{{info}}The //Translation// is the page used to translate the labels of the class into nice readable questions. It contains an instance of XWiki.TranslationDocumentClass (On demand){{/info}}
#if (!$hasClassTranslation)
No translation found, creating one... Refresh if you see this text
## Create the page, unconditionally
#updateAndSaveTranslations
#else
[[View the translation (${classTranslateDoc.fullName})>>${classTranslateDoc.fullName}]]
#end
== The class template ==
{{info}}The //Template// is the document used as the model for documents of this data type. It contains an instance of your //Class//.{{/info}}
#if (!$hasClassTemplate)
{{html}}
<form action="$classTemplateDoc.getURL('save', 'editor=wiki')" method="post">
<div>
<input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
<input type="hidden" name="parent" value="${doc.fullName}"/>
<input type="hidden" name="xredirect" value="${doc.URL}"/>
<input type="hidden" name="title" value="$className Template"/>
<span class="buttonwrapper"><input type="submit" value="Create the document template" class="button"/></span>
</div>
</form>
{{/html}}
#else
#if(!$classTemplateDoc.getObject(${doc.fullName}))
#set($xredirect = $xwiki.relativeRequestURL)
#set($createUrl = $classTemplateDoc.getURL('objectadd', "classname=${escapetool.url($doc.fullName)}&xredirect=${escapetool.url($xredirect)}&form_token=$!{services.csrf.getToken()}"))
{{warning}}
The template does not contain an object of type //$doc.fullName//. {{html}}<a href="$createUrl">Add a ${className} object to the template »</a>.{{/html}}
{{/warning}}
#end
[[View the template document (${classTemplateDoc.fullName}) »>>${classTemplateDoc.fullName}]]
#end
#end ## !$isSheet
#macro(updateAndSaveTranslations)
#set($minorEdit = "$!request.minorEdit" != '')
#set($classShort = $stringtool.removeEnd($doc.name, 'Class'))
#set($translationsRef = $services.model.createDocumentReference($doc.wiki, $doc.space, "${classShort}Translations"))
#set($translationsDoc = $xwiki.getDocument($translationsRef))
#set($translationsObj = $translationsDoc.getObject('XWiki.TranslationDocumentClass', true))
## We use the translation bundle on demand because none of the available scopes suits our needs. Simple users can't
## register document translation bundles at WIKI level and the SPACE scope doesn't remove the need to create a
## custom live table results page in the same space as the application.
#set($discard = $translationsObj.set('scope', 'ON_DEMAND'))
#set($discard = $translationsDoc.setParent($doc.name))
#set($translationsGeneratorDoc = $xwiki.getDocument('AppWithinMinutes.ClassTranslationsGenerator'))
#set($discard = $translationsDoc.setContent($doc.getRenderedContent($translationsGeneratorDoc.content, $translationsGeneratorDoc.syntax.toIdString(), 'plain/1.0')))
#set($discard = $translationsDoc.setHidden(true))
#set($discard = $translationsDoc.save($services.localization.render('platform.appwithinminutes.classEditorTranslationsSaveComment'), $minorEdit))
#end
#macro(createDocumentSpace $pSpaceName)
## If space already exist we should not over write since it will rest some parameters that might have been set
##
##Creating the DataSpace and pages programmatically
## space.WebHome including the right objects as created by AppWithinMinutes, but configures for WaihonaPedia
## space.introduction; the page that parent groups, researchers,.. can work on to present the questionnaire
## space.spaceInfo; the page that will allow the support group to present extra information about a single question
## space.spaceLiveTableResults, a page that will allow special overviews, currently not activated, so content of page is default AppWinthinMinutes
##===WebHome Page ==================
##Start by using a template to copy and create the data space homepage
#set($vHomePage = "WebHome")
#set($spaceHomeTemplateReference = $services.model.createDocumentReference($doc.wiki, "WaihonaCode", "qHomeTemplate"))
#set($newSpaceHomePageReference = $services.model.createDocumentReference($doc.wiki, $pSpaceName, "WebHome"))
#set($originalPage = $xwiki.getDocument($spaceHomeTemplateReference))
##
## Prevent overwriting if space already is created!
##
#if(not $xwiki.getSpaces().contains($pSpaceName))
#set($discard = $xwiki.copyDocument($originalPage.documentReference, $newSpaceHomePageReference, $null, false, false))
#set($newPage = $xwiki.getDocument($newSpaceHomePageReference))
#set($discard = $newPage.setParent("WaihonaPedia.WebHome"))
##Set a title
#set($discard = $newPage.setTitle("${pSpaceName}") )
## set a livable as the content of the home-page
#set ($vPageContent = $xwiki.getDocument('WaihonaCode.qHomeContentTemplate').getContent().replace('zzz', $pSpaceName))
#set($discard = $newPage.setContent("${vPageContent}") )
## Update the object UIEXtension to the new questionaire
#set($ltObject = $newPage.getObject("AppWithinMinutes.LiveTableClass"))
#set($discard = $ltObject.set("class", "WaihonaCode.${pSpaceName}Class") )
#set($discard = $ltObject.set("description", "{{include reference='${pSpaceName}.introduction'/}}") )
#set($uiObject = $newPage.getObject("XWiki.UIExtensionClass"))
#set($discard = $uiObject.set("extensionPointId", "waihonapedia.questions") )
#set($discard = $uiObject.set("name", "waihonapedia.questions.${pSpaceName}") )
#set($vParameters = $xwiki.getDocument('WaihonaCode.qHomeParametersTemplate').getContent().replace('zzz', $pSpaceName))
#set($discard = $uiObject.set("parameters", $vParameters) )
#set($discard = $newPage.save('Created by Class sheet', true))
##===introduction Page ==================
#set($vIntroductionPage = "introduction")
#set($vIntroductionPageTemplateReference = $services.model.createDocumentReference($doc.wiki, "WaihonaCode", "qIntroductionTemplate"))
#set($vIntroductionPageReference = $services.model.createDocumentReference($doc.wiki, $pSpaceName, $vIntroductionPage))
#set($originalPage = $xwiki.getDocument($vIntroductionPageTemplateReference))
#set($discard = $xwiki.copyDocument($originalPage.documentReference, $vIntroductionPageReference, $null, false, false))
##===introduction Page ==================
#else
#set($newPage = $xwiki.getDocument($newSpaceHomePageReference))
#end
[[We will keep a index of all questionnaires of class $pSpaceName>>$newPage]]
#end]
at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:135)
at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:51)
at org.xwiki.rendering.macro.script.AbstractScriptMacro.evaluateBlock(AbstractScriptMacro.java:279)
at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:182)
at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:58)
at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:309)
at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:88)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.executeInCurrentExecutionContext(DocumentContentAsyncExecutor.java:395)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.execute(DocumentContentAsyncExecutor.java:268)
at org.xwiki.display.internal.DocumentContentAsyncRenderer.execute(DocumentContentAsyncRenderer.java:112)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:157)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:290)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.execute(DefaultBlockAsyncRendererExecutor.java:125)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:67)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:43)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:96)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:39)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:245)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.applySheet(SheetDocumentDisplayer.java:225)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.maybeDisplayWithSheet(SheetDocumentDisplayer.java:180)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:111)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:52)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:68)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:42)
at com.xpn.xwiki.doc.XWikiDocument.display(XWikiDocument.java:1355)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1492)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1441)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1410)
at com.xpn.xwiki.api.Document.displayDocument(Document.java:786)
at jdk.internal.reflect.GeneratedMethodAccessor504.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:704)
at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:75)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:242)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.xwiki.velocity.internal.directive.TryCatchDirective.render(TryCatchDirective.java:86)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:280)
at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:328)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:95)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:222)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:177)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:138)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:843)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:805)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:792)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:747)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:739)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at jdk.internal.reflect.GeneratedMethodAccessor294.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:280)
at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:328)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:95)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:222)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:177)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:138)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:843)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:805)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:792)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:747)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:739)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at jdk.internal.reflect.GeneratedMethodAccessor294.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:280)
at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:328)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:95)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:222)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:177)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:138)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:843)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:805)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:785)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:771)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:91)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:85)
at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2563)
at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:180)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:651)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:232)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1651)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.xwiki.velocity.XWikiVelocityException: Failed to evaluate content with namespace [xwiki:WaihonaCode.ClassQSheet]
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:289)
at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:328)
at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:127)
... 193 more
Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'save' in class com.xpn.xwiki.api.Document threw exception com.xpn.xwiki.XWikiException: Error number 9001 in 9: Access denied in edit mode on document xwiki:WaihonaCode.qtoClass at xwiki:WaihonaCode.ClassQSheet[line 38, column 6]
at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:308)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:235)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:280)
... 195 more
Caused by: com.xpn.xwiki.XWikiException: Error number 9001 in 9: Access denied in edit mode on document xwiki:WaihonaCode.qtoClass
at com.xpn.xwiki.api.Document.save(Document.java:2613)
at com.xpn.xwiki.api.Document.save(Document.java:2589)
at jdk.internal.reflect.GeneratedMethodAccessor2343.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
... 208 more
O zawartości strony
Wszystkie informacje zawarte na tej stronie służą wyłącznie celom edukacyjnym. Miejscem, w którym można uzyskać konkretne porady medyczne, diagnozy i leczenie jest lekarz. Korzystanie z tej strony odbywa się wyłącznie na własne ryzyko. Jeśli znajdziesz coś, co Twoim zdaniem wymaga korekty lub wyjaśnienia, proszę daj nam znać na:
Wyślij e-mail: wiki@waihonapedia.org