Sistemi distribuiti 2015/2016
Failed to execute the [velocity] macro. Cause: [Error number 9001 in 9: Access denied in edit mode on document xwiki:Course.Sd1516.WebHome]. Click on this message for details.
org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Velocity Macro for content [{{html clean="false" wiki="true"}}
################################################################################
################################################################################
## Courses Class Sheet
################################################################################
################################################################################
#template("apice_macros.vm")
#setobjectspace("Courses")
#docobj()
#nolangpar()
#template('apice_course_macros.vm')
################################################################################
######## OVERALL GUI / START
################################################################################
## set $action
#if( $xcontext.action == "edit" && $xwiki.hasAccessLevel("edit") )
#set( $action = "edit" )
#else
#set( $action = "view" )
#end
## set $modeList
#set( $modeList = [ 'data' ] )
## set $mode
## default
#set( $mode = $modeList[0] )
## $dataMode set
## default
#set( $dataMode = $dataModeList[0] )
## set $modeGuestList
#set( $modeGuestList = [ 'data' ] )
## set $currentModeList
#if( $hasEdit )
#set( $currentModeList = $modeList )
#else
#set( $currentModeList = $modeGuestList )
#end
## get mode parameter
#if( $request.mode && $request.mode.trim() != "" && $modeList.contains($request.mode.trim().toLowerCase()) )
#set( $mode = $request.mode.trim().toLowerCase() )
#end
## draw bar
#themodebar( $currentModeList $mode $action )
## DATA MODE
## set $dataModeList
#set( $dataModeList = [ 'course','descriptors','apice' ] )
##
## set $dataMode
## default
#set( $dataMode = $dataModeList[0] )
## get mode parameter
#if( $request.data && $request.data.trim() != "" && $dataModeList.contains($request.data.trim().toLowerCase()) )
#set( $dataMode = $request.data.trim().toLowerCase() )
#end
## draw data bar
##
## data bar headers
#set( $databarHeaders = { 'course' : "$services.localization.render('data')", 'descriptors' : "$services.localization.render('descriptors')", 'apice' : 'APICe' } )
#if( $action == "edit" && $mode == "data" )
<table class="databar"><tr>
#foreach( $datamode in $dataModeList )
<td width="33%" class='#if( $datamode == $dataMode )modedataeditselected#{else}basebutton#end'><a href='$doc.getURL($action,"mode=data&data=$datamode")'>$databarHeaders[$datamode] [[image:$barActionImages["edit"]||height=$barHeight]]</a></td>
#end
</tr></table>
#end
##
################################################################################
######## OVERALL GUI / END
################################################################################
##
################################################################################
## DATA MODE / START
################################################################################
#if( $mode == "data" && $dataMode == 'course' )
## set $displayList
#set( $displayList = ['Main'] )
#foreach( $page in $coursePages )
#if( $xwiki.exists("${doc.space}.${page}") || $xwiki.exists("${doc.space}.${page}.WebHome") )
#set( $discard = $displayList.add($page) )
#end
#end
#set( $displaytabwidth = 100 / $displayList.size() )
## $displayMode set to 'Main'
## default
#set( $displayMode = $displayList[0] )
## get mode parameter
#if( $request.display && $request.display.trim() != "" && $displayList.contains($request.display.trim()) )
#set( $displayMode = $request.display.trim() )
#end
## draw data display bar
#if( $displayList.size() > 1 )
<table class="databar"><tr>
#foreach( $datadisplay in $displayList )
<td class='#if( $datadisplay == $displayMode )modedataeditselected#{else}basebutton#end' width="$displaytabwidth%">#if( $action == 'edit' && $datadisplay != 'Main' )<a href='$doc.getURL('edit',"mode=data&data=$dataMode&display=$datadisplay&viewer=attachments")'>[[image:icon:attach]]</a>#{else} #end  <a href='$doc.getURL($action,"mode=data&data=$dataMode&display=$datadisplay")'>$services.localization.render($datadisplay.toLowerCase())#if( $action == 'edit' && $datadisplay != 'Main' ) [[image:icon:page_white_text]]  #if( $coursePages.contains($datadisplay) )<a href='$doc.getURL('edit',"mode=data&data=$dataMode&display=$datadisplay&editor=inline")'>[[image:icon:pencil]]#{else} </a>#end#end</a></td>
#end
</tr></table>
#end
#end
#### VIEW MODE / START
#if( $mode == "data" && $action == "view" )
## check for language / default
#nodoclang()
## display info
#if( $displayMode == "Main" )
## COURSE STRUCTURE / START
#if( $doc.display("parentCourse","view") != "" || $doc.display("childCourses","view") != "" || $doc.display("siblingCourses","view") != "" || $doc.display("relatedCourses","view") != "" || $doc.display("proxyforCourse","view") != "" )
<div class="worksas">
{{stringEngIta eng="structure of the course" ita="struttura del corso"/}}
</div>
#end
## parent course
#if( $doc.display("parentCourse","view") != "" )
<div class="sheetseparator">
$services.localization.render("Courses.Class_parentCourse").toLowerCase()
</div>
<div class="iconedlist">
#courseicon() #courselinked($doc.getValue("parentCourse"))
</div>
#end
## child courses
#if( $doc.display("childCourses","view") != "" )
<div class="sheetseparator">
$services.localization.render("Courses.Class_childCourses").toLowerCase()
</div>
#foreach( $course in $doc.getValue("childCourses") )
<div class="iconedlist">
#courseicon() #courselinked($course)
</div>
#end
#end
## sibling courses
#if( $doc.display("siblingCourses","view") != "" )
<div class="sheetseparator">
$services.localization.render("Courses.Class_siblingCourses").toLowerCase()
</div>
#foreach( $course in $doc.getValue("siblingCourses") )
<div class="iconedlist">
#courseicon() #courselinked($course)
</div>
#end
#end
## related courses
#if( $doc.display("relatedCourses","view") != "" )
<div class="sheetseparator">
$services.localization.render("Courses.Class_relatedCourses").toLowerCase()
</div>
#set( $dot = false )
#foreach( $course in $doc.getValue("relatedCourses") )
<div class="iconedlist">
#courseicon() #courselinked($course)
</div>
#end
#end
## proxy for course
#if( $doc.display("proxyforCourse","view") != "" )
<div class="sheetseparator">
$services.localization.render("Courses.Class_proxyforCourse").toLowerCase()
</div>
<div class="iconedlist">
#courseicon() #courselinked($doc.getValue('proxyforCourse'))
</div>
#end
## COURSE STRUCTURE / END
##
## PAGES / START
#if( $displayList.size() > 1 )
<div class="sheetseparator">
$services.localization.render("pages").toLowerCase()
</div><div class="menumainbody" style="text-align: right; margin: 0 0 1.25em 0">
#foreach( $datadisplay in $displayList )
<a href='$doc.getURL($action,"mode=data&data=$dataMode$&display=$datadisplay")'>$services.localization.render($datadisplay.toLowerCase()).toLowerCase()</a>#if( !$foreach.last ) • #end
#end
</div>
#end
## PAGES / END
##
## check proxy
#set( $courseIsProxy = false )
#if( $doc.getValue('proxyforCourse') != "" )
#set( $proxiedCourse = $doc.getValue('proxyforCourse') )
#if( $xwiki.exists($proxiedCourse) )
#set( $courseIsProxy = true )
#set( $proxiedDoc = $xwiki.getDocument($proxiedCourse) )
#elseif( $xwiki.exists("${proxiedCourse}.WebHome") )
#set( $courseIsProxy = true )
#set( $proxiedDoc = $xwiki.getDocument("${proxiedCourse}.WebHome") )
#end
#end
#if( $courseIsProxy )
#set( $describedDoc = $proxiedDoc )
#else
#set( $describedDoc = $doc )
#end
## FORUM / START
#if( $describedDoc.getValue('vlegeneralforum') != "" || $describedDoc.getValue('vlenewsforum') != "" || $describedDoc.getValue('iolgeneralforum') != "" || $describedDoc.getValue('iolnewsforum') != "" )
<div class="sheetseparator">
{{stringEngIta eng='forums' ita='forum'/}}
#set( $dot = false )
</div>
<div class="menumainbody" style="text-align: right; margin: 0 0 1.25em 0">
#if( $describedDoc.getValue('vlegeneralforum') != "" )
#if( $dot ) • #end
{{virtuale res='forum' eng='general forum on VLE' ita='forum generale su VLE'}}$describedDoc.getValue('vlegeneralforum'){{/virtuale}}##
#set( $dot = true )
#end
#if( $describedDoc.getValue('vlenewsforum') != "" )
#if( $dot ) • #end
{{virtuale res='forum' eng='news forum on VLE' ita='forum annunci su VLE'}}$describedDoc.getValue('vlenewsforum'){{/virtuale}}##
#set( $dot = true )
#end
#if( $describedDoc.getValue('iolgeneralforum') != "" )
#if( $dot ) • #end
{{iol res='forum' eng='general forum on IoL)' ita='forum generale su IoL'}}$describedDoc.getValue('iolgeneralforum'){{/iol}}##
#set( $dot = true )
#end
#if( $describedDoc.getValue('iolnewsforum') != "" )
#if( $dot ) • #end
{{iol res='forum' eng='news forum on IoL' ita='forum annunci su IoL'}}$describedDoc.getValue('iolnewsforum'){{/iol}}##
#set( $dot = true )
#end
</div>
#end
## FORUM / END
##
## DESCRIPTION / START
#if( $doc.content != "" )
<div width=100% style="text-align: justify; text-justify: inter-word; border-color: $theme.borderColor; border-style: hidden hidden hidden hidden; border-width: thin">
$doc.content
</div>
#elseif( $courseIsProxy && $proxiedDoc.content != "" )
<div width=100% style="text-align: justify; text-justify: inter-word; border-color: $theme.borderColor; border-style: hidden hidden hidden hidden; border-width: thin">
$proxiedDoc.content
</div>
#end
#if( $services.localization.currentLocale == 'it' )
#set( $descriptorfields = $itadescriptorfields )
#else
#set( $descriptorfields = $engdescriptorfields )
#end
#foreach( $descriptorfield in $descriptorfields )
#if( $describedDoc.getValue($descriptorfield) != "" )
<div style="color: $theme.textSecondaryColor; font-size: smaller; text-align: left; margin: 0 0 0 0; border-color: $theme.borderColor; border-style: hidden hidden solid solid; border-width: thin; padding: .25em 0 .25em .5em">
$services.localization.render("Courses.Class_${descriptorfield}").toLowerCase()
</div><div class="borderhalftop" style="font-size: normal; text-align: justify; border-style: solid solid hidden hidden; padding: .5em .75em 0 0">
$describedDoc.display($descriptorfield,'view')
</div>
#end
#end
## DESCRIPTION / END
##
## SERIES / START
#template('apice_isa.vm')
#set( $query = ", BaseObject as objCourseSeries, DBStringListProperty as propCourses join propCourses.list courses
where objCourseSeries.name = doc.fullName and objCourseSeries.className = 'Courses.Series.Class' and objCourseSeries.name <> 'Courses.Series.Template.WebHome' and propCourses.id.id = objCourseSeries.id and propCourses.name = 'courses' and courses like '%$itemHome%'
")
#set( $seriesFound = $xwiki.searchDocuments($query) )
#if( $seriesFound.size() > 0 )
<div class="worksas">
$services.localization.render('courseseries').toLowerCase()
</div>
#foreach( $series in $seriesFound )
#set( $seriesDoc = $xwiki.getDocument($series) )
<div class="sheetseparator">
#courseseriesicon() #courseseries($series)
</div>
#set( $dot = false )
<div style='font-size: smaller; text-align: right; padding: .25em 0 .25em 0'>
#foreach( $course in $seriesDoc.getValue('courses') )
#set( $courseDoc = $xwiki.getDocument($course) )
#if( $xwiki.exists($courseDoc) )
#if( $dot ) • #end
#courseicon() [[$courseDoc.plainTitle>>$courseDoc]]##
#set( $dot = true )
#end
#end
</div>
#end
#end
## SERIES / END
##
## APICE TO HERE / START
## talks / as host
#set( $from = ", BaseObject as objTalk, DBStringListProperty as propCourse join propCourse.list course" )
#set( $where = "objTalk.name = doc.fullName and objTalk.className = 'Talks.Class' and objTalk.name <> 'Talk.Template' and propCourse.id.id = objTalk.id and propCourse.name = 'course' and course like '$doc.fullName' " )
#set( $query = $from + " where " + $where )
#set( $hostedtalkList = $xwiki.searchDocuments($query) )
##
## courses / as parent
#set( $from = ", BaseObject as objCourse, LargeStringProperty as propCourse" )
#set( $where = "objCourse.name = doc.fullName and objCourse.className = 'Courses.Class' and objCourse.name <> 'Course.Template' and propCourse.id.id = objCourse.id and propCourse.name = 'parentCourse' and propCourse.value = '$doc.fullName' " )
#set( $query = $from + " where " + $where )
#set( $parentcourseList = $xwiki.searchDocuments($query) )
##
## courses / as child
#set( $from = ", BaseObject as objCourse, DBStringListProperty as propCourse join propCourse.list course" )
#set( $where = "objCourse.name = doc.fullName and objCourse.className = 'Courses.Class' and objCourse.name <> 'Course.Template' and propCourse.id.id = objCourse.id and propCourse.name = 'childCourses' and course like '%$doc.fullName%' " )
#set( $query = $from + " where " + $where )
#set( $childcourseList = $xwiki.searchDocuments($query) )
##
## courses / as sibling
#set( $from = ", BaseObject as objCourse, DBStringListProperty as propCourse join propCourse.list course" )
#set( $where = "objCourse.name = doc.fullName and objCourse.className = 'Courses.Class' and objCourse.name <> 'Course.Template' and propCourse.id.id = objCourse.id and propCourse.name = 'siblingCourses' and course like '%$doc.fullName%' " )
#set( $query = $from + " where " + $where )
#set( $siblingcourseList = $xwiki.searchDocuments($query) )
##
## courses / as related
#set( $from = ", BaseObject as objCourse, DBStringListProperty as propCourse join propCourse.list course" )
#set( $where = "objCourse.name = doc.fullName and objCourse.className = 'Courses.Class' and objCourse.name <> 'Course.Template' and propCourse.id.id = objCourse.id and propCourse.name = 'relatedCourses' and course like '%$doc.fullName%' " )
#set( $query = $from + " where " + $where )
#set( $relatedcourseList = $xwiki.searchDocuments($query) )
##
## courses / as proxied
#set( $from = ", BaseObject as objCourse, LargeStringProperty as propCourse" )
#set( $where = "objCourse.name = doc.fullName and objCourse.className = 'Courses.Class' and objCourse.name <> 'Course.Template' and propCourse.id.id = objCourse.id and propCourse.name = 'proxyforCourse' and propCourse.value = '$doc.fullName' " )
#set( $query = $from + " where " + $where )
#set( $proxiedcourseList = $xwiki.searchDocuments($query) )
##
##<div style='background-color: $theme.buttonSecondaryBackgroundColor'>
## HEADER / START
#if( $hostedtalkList.size() > 0 || $parentcourseList.size() > 0 || $childcourseList.size() > 0 || $siblingcourseList.size() > 0 || $relatedcourseList.size() > 0 || $proxiedcourseList.size() > 0 )
<div class="worksas">
$services.localization.render('worksas').toLowerCase()
</div>
#end
## HEADER / END
##
## AS TALK HOSTING COURSE / START
#if( $hostedtalkList.size() > 0 )
#template('apice_talk_macros.vm')
<div class="sheetseparator">
$services.localization.render('Talks.Class_course').toLowerCase() / $services.localization.render('talk').toLowerCase()
</div>
#foreach( $talk in $hostedtalkList )
<div class="iconedlist">
#talkicon() #talklinked($talk)
</div>
#end
#end
## AS TALK HOSTING COURSE / END
##
## AS PARENT COURSE / START
#if( $parentcourseList.size() > 0 )
<div class="sheetseparator">
$services.localization.render("Courses.Class_parentCourse").toLowerCase()
</div>
#foreach( $course in $parentcourseList )
<div class="iconedlist">
#courseicon() #courselinked($course)
</div>
#end
#end
## AS PARENT COURSE / END
##
## AS CHILD COURSE / START
#if( $childcourseList.size() > 0 )
<div class="sheetseparator">
$services.localization.render("Courses.Class_childCourses_singular").toLowerCase()
</div>
#foreach( $course in $childcourseList )
<div class="iconedlist">
#courseicon() #courselinked($course)
</div>
#end
#end
## AS CHILD COURSE / END
##
## AS SIBLING COURSE / START
#if( $siblingcourseList.size() > 0 )
<div class="sheetseparator">
$services.localization.render("Courses.Class_siblingCourses_singular").toLowerCase()
</div>
#foreach( $course in $siblingcourseList )
<div class="iconedlist">
#courseicon() #courselinked($course)
</div>
#end
#end
## AS SIBLING COURSE / END
##
## AS RELATED COURSE / START
#if( $relatedcourseList.size() > 0 )
<div class="sheetseparator">
$services.localization.render("Courses.Class_relatedCourses_singular").toLowerCase()
</div>
#foreach( $course in $relatedcourseList )
<div class="iconedlist">
#courseicon() #courselinked($course)
</div>
#end
#end
## AS RELATED COURSE / END
##
## AS PROXIED COURSE / START
#if( $proxiedcourseList.size() > 0 )
<div class="sheetseparator">
$services.localization.render("Courses.Class_proxyforCourse").toLowerCase()
</div>
#foreach( $course in $proxiedcourseList )
<div class="iconedlist">
#courseicon() #courselinked($course)
</div>
#end
#end
## AS PROXIED COURSE / END
##
## APICE TO HERE / END
#else
#if( $xwiki.exists("${doc.space}.${displayMode}") )
{{display reference="${doc.space}.${displayMode}" excludeFirstHeading="true"/}}
#elseif( $xwiki.exists("${doc.space}.${displayMode}.WebHome") )
{{display reference="${doc.space}.${displayMode}.WebHome" excludeFirstHeading="true"/}}
#end
#end
#end
#### VIEW MODE / END
##
#### INLINE MODE / START
#if( $mode == "data" && $action == "edit" )
##
#newobjtitle()
##
#if( $dataMode == "course" )
## displayMode
#if( $displayMode == "Main" )
## COURSE / START
##
## NAMES / START
#if( $services.localization.currentLocale == 'it' )
#set( $titledatafields = [ 'ita', 'eng' ] )
#else
#set( $titledatafields = [ 'eng', 'ita' ] )
#end
<table style="font-size: smaller; text-align: left; margin-top: -.25em" width="100%">
#foreach( $titledatafield in $titledatafields )
<tr class="fieldrow1">
<td style="text-align: right; vertical-align: middle" width="20%">
#fieldlink($titledatafield)
</td><td style="vertical-align: middle">
$doc.display($titledatafield)
</td>
</tr>
#end
</table>
## NAMES / END
##
## STATUS / START
#set( $statusdatafields = [ 'language', 'ay', 'credits', 'hours' ] )
<table style="font-size: smaller; text-align: left; margin-top: -1.5em" width="100%">
#foreach( $statusdatafield in $statusdatafields )
<tr class="fieldrow2">
<td style="text-align: right; vertical-align: middle" width="20%">
#fieldlink($statusdatafield)
</td><td style="vertical-align: middle">
$doc.display($statusdatafield)
</td>
</tr>
#end
</table>
## STATUS / END
##
## PROFESSORS / START
#set( $whodatafields = [ 'professor', 'otherProfessors', 'tutors' ] )
<table style="font-size: smaller; text-align: left; margin-top: -1.25em" width="100%">
#foreach( $whodatafield in $whodatafields )
<tr class="fieldrow1">
<td style="text-align: right; vertical-align: middle" width="20%">
#fieldlink($whodatafield)
</td><td style="vertical-align: middle">
$doc.display($whodatafield)
</td>
</tr>
#end
</table>
## PROFESSORS / END
##
## CONTEXT / START
#set( $contextdatafields = [ 'university', 'campus', 'faculty', 'cycle' ] )
<table style="font-size: smaller; text-align: left; margin-top: -1.5em" width="100%">
#foreach( $contextdatafield in $contextdatafields )
<tr class="fieldrow2">
<td style="text-align: right; vertical-align: middle" width="20%">
#fieldlink($contextdatafield)
</td><td style="vertical-align: middle">
$doc.display($contextdatafield)
</td>
</tr>
#end
</table>
## CONTEXT / END
##
## CYCLE / START
#set( $cycledatafields = [ 'cycle1', 'cycle2', 'cycle3', 'cycleP', 'cycle0', 'cycleD', 'cycleM' ] )
<table style="font-size: smaller; text-align: left; margin-top: -1.5em" width="100%">
#foreach( $cycledatafield in $cycledatafields )
<tr class="fieldrow1">
<td style="text-align: right; vertical-align: middle" width="20%">
#fieldlink($cycledatafield)
</td><td style="vertical-align: middle">
$doc.display($cycledatafield)
</td>
</tr>
#end
</table>
## CYCLE / END
##
## IDS / START
#set( $iddatafields = [ 'courseId', 'amsId', 'amsModId', 'vleId', 'vlegeneralforum', 'vlenewsforum', 'virtualRoom' ] )
<table style="font-size: smaller; text-align: left; margin-top: -1.5em" width="100%">
#foreach( $iddatafield in $iddatafields )
<tr class="fieldrow2">
<td style="text-align: right; vertical-align: middle" width="20%">
#fieldlink($iddatafield)
</td><td style="vertical-align: middle">
$doc.display($iddatafield)
</td>
</tr>
#end
</table>
## IDS / END
##
## URL / START
#set( $urldatafields = [ 'courseUrl', 'scheduleUrl' ] )
<table style="font-size: smaller; text-align: left; margin-top: -1.5em" width="100%">
#foreach( $urldatafield in $urldatafields )
<tr class="fieldrow1">
<td style="text-align: right; vertical-align: middle" width="20%">
#fieldlink($urldatafield)
</td><td style="vertical-align: middle">
$doc.display($urldatafield)
</td>
</tr>
#end
</table>
## URL / END
##
## PAGE CONTENT / START
<div>
<a href='$xwiki.getDocument($doc).getURL($action,"editor=wiki")'>
[[image:icon:pencil]]
{{stringEngIta eng='edit content' ita='modifica il contenuto'/}}
</a>
{{stringEngIta eng="of the main page" ita="della pagina principale"/}}
</div>
## PAGE CONTENT / END
#else
#set( $pageParameters = 'mode=data&data=course' )
#set( $pageAction = 'edit' )
#if( $request.viewer )
#set( $pageParameters = $pageParameters + '&viewer=' + $request.viewer )
#set( $pageAction = 'view' )
#end
#if( $request.editor )
#set( $pageParameters = $pageParameters + '&editor=' + $request.editor )
#else
#set( $pageParameters = $pageParameters + '&editor=wiki' )
#end
#if( $xwiki.exists("${doc.space}.${displayMode}") )
$response.sendRedirect($xwiki.getURL("${doc.space}.${displayMode}", "$pageAction", "$pageParameters"))
#elseif( $xwiki.exists("${doc.space}.${displayMode}.WebHome") )
$response.sendRedirect($xwiki.getURL("${doc.space}.${displayMode}.WebHome", "$pageAction", "$pageParameters"))
$xwiki.getURL("${doc.space}.${displayMode}.WebHome", "$pageAction", "$pageParameters")
#end
#end
#end
## COURSE / END
##
## DESCRIPTORS / START
#if( $dataMode == "descriptors" )
<table style="font-size: smaller; text-align: left; margin-top: -.25em" width="100%">
#foreach( $itadescriptorfield in $itadescriptorfields )
#set( $engdescriptorfield = $engdescriptorfields[$foreach.index] )
<tr class="#if( $foreach.count % 2 == 0 )fieldrow1#{else}fieldrow2#{end}">
<td style="text-align: right; vertical-align: middle" width="10%">
#fieldlink($itadescriptorfield)
</td><td style="text-align: right; vertical-align: middle" width="40%">
$doc.display($itadescriptorfield)
</td><td style="text-align: right; vertical-align: middle" width="10%">
#fieldlink($engdescriptorfield)
</td><td style="text-align: right; vertical-align: middle" width="40%">
$doc.display($engdescriptorfield)
</td>
</tr>
#end
</table>
#end
## DESCRIPTORS / END
##
## APICE / START
#if( $dataMode == "apice" )
## RELATED COURSES / START
#set( $relateddatafields = [ 'parentCourse', 'relatedCourses', 'childCourses', 'siblingCourses', 'proxyforCourse' ] )
<table style="font-size: smaller; text-align: left; margin-top: -.25em" width="100%">
#foreach( $relateddatafield in $relateddatafields )
<tr class="fieldrow1">
<td style="text-align: right; vertical-align: middle" width="20%">
#fieldlink($relateddatafield)
</td><td style="vertical-align: middle">
$doc.display($relateddatafield)
</td>
</tr>
#end
</table>
## RELATED COURSES / END
#end
## APICE / END
#end
#### INLINE MODE / END
################################################################################
## DATA MODE / END
################################################################################
##
################################################################################
## PAGE MODE / START
################################################################################
#### VIEW MODE / START
#if( $mode == "page" && $action == "view" )
$doc.content
#end
#### VIEW MODE / END
##
#### INLINE MODE / START
#if( $mode == "page" && $action == "edit" )
##
#end
#### INLINE MODE / END
################################################################################
## PAGE MODE / END
################################################################################
{{/html}}]
at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:186)
at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:60)
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:311)
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:1366)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1503)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1452)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1421)
at com.xpn.xwiki.api.Document.displayDocument(Document.java:787)
at jdk.internal.reflect.GeneratedMethodAccessor747.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.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
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:904)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:866)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:853)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:808)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:800)
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.GeneratedMethodAccessor303.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.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.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
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:904)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:866)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:853)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:808)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:800)
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.GeneratedMethodAccessor303.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.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
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:904)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:866)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:846)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:832)
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:2565)
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:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:394)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
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:Courses.Sheet]
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:227)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:173)
at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:177)
... 188 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:Course.Sd1516.WebHome at xwiki:Classes.Skins.ObjectSkin^XWiki.XWikiSkinFileOverrideClass[6].content[line 164, column 8]
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.ASTIfStatement.render(ASTIfStatement.java:171)
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.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
... 190 more
Caused by: com.xpn.xwiki.XWikiException: Error number 9001 in 9: Access denied in edit mode on document xwiki:Course.Sd1516.WebHome
at com.xpn.xwiki.api.Document.save(Document.java:2614)
at com.xpn.xwiki.api.Document.save(Document.java:2585)
at jdk.internal.reflect.GeneratedMethodAccessor3321.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)
... 205 more