|
From: <dav...@us...> - 2010-04-09 14:01:28
|
Revision: 2441
http://qtitools.svn.sourceforge.net/qtitools/?rev=2441&view=rev
Author: davemckain
Date: 2010-04-09 14:01:22 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MAE: Some further tidying of rendering before 0.4.0:
* "Reset and replay" link now uses original query string, allowing rendering tweaks
to be maintained
* Tidied up the use of 'displayControls' in test rendering so that it works the same
way as items.
* Added 'embedded' param to rendering to control whether to include MAEngine header
gubbins
* Tweaked controllers to allow these parameters to be passe via query strings.
Modified Paths:
--------------
branches/mathassess/QTIEngine/grails-app/controllers/org/qtitools/mathassessengine/ArticleController.groovy
branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/standalone-item.xsl
branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/test-item.xsl
Modified: branches/mathassess/QTIEngine/grails-app/controllers/org/qtitools/mathassessengine/ArticleController.groovy
===================================================================
--- branches/mathassess/QTIEngine/grails-app/controllers/org/qtitools/mathassessengine/ArticleController.groovy 2010-04-09 13:58:38 UTC (rev 2440)
+++ branches/mathassess/QTIEngine/grails-app/controllers/org/qtitools/mathassessengine/ArticleController.groovy 2010-04-09 14:01:22 UTC (rev 2441)
@@ -214,10 +214,14 @@
if (!validationResult.getAllItems().isEmpty()) {
validation = validationResult.toString()
}
-
- def itemParams = [ showInternalState: true,
- displayTitle: true,
- 'article-id': key ]
+
+ /* Set up rendering parameters */
+ def itemParams = [ articleId: key,
+ queryString: request.queryString,
+ showInternalState: !('false'==params.showInternalState), // NB: no param -> true here
+ embedded: 'true'==params.embedded,
+ displayTitle: !('false'==params.displayTitle),
+ displayControls: !('false'==params.displayControls)]
if (validation) itemParams[validation] = validation
/* Pick the most appropriate web page output, according to Accept/UserAgent headers */
@@ -261,14 +265,17 @@
}
/* Set up rendering parameters */
- def renderingParams = [ displayTitle:true,
- showInternalState: true,
- displayControls: false,
- 'article-id': key ]
+ def renderingParams = [ articleId: key,
+ queryString: request.queryString,
+ showInternalState: !('false'==params.showInternalState), // NB: no param -> true here
+ embedded: 'true'==params.embedded,
+ displayTitle: !('false'==params.displayTitle),
+ displayControls: !('false'==params.displayControls)]
if (params.playrMode) {
log.info "Rendering for playr"
renderingParams.playrMode = true
}
+
/* Pick the most appropriate web page output, according to Accept/UserAgent headers */
def serializationMethod = renderingService.chooseSerializationMethod(request, params)
Modified: branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/standalone-item.xsl
===================================================================
--- branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/standalone-item.xsl 2010-04-09 13:58:38 UTC (rev 2440)
+++ branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/standalone-item.xsl 2010-04-09 14:01:22 UTC (rev 2441)
@@ -21,11 +21,14 @@
<!-- Import stylesheet to fix-up QTI 2.0 questions before processing -->
<xsl:import href="qti20-fixer.xsl"/>
- <xsl:param name="article-id" as="xs:string?"/>
+ <xsl:param name="articleId" as="xs:string?"/>
+ <xsl:param name="queryString" as="xs:string?"/>
<xsl:param name="isResponded" select="false()" as="xs:boolean"/>
+ <xsl:param name="validation" select="()" as="xs:string?"/>
+
<xsl:param name="displayTitle" select="true()" as="xs:boolean"/>
<xsl:param name="displayControls" select="true()" as="xs:boolean"/>
- <xsl:param name="validation" select="()" as="xs:string?"/>
+ <xsl:param name="embedded" select="false()" as="xs:boolean"/>
<!-- ************************************************************ -->
@@ -82,26 +85,30 @@
<script src="{$engineBasePath}/Jscript/BrowserCheck.js" type="text/javascript"/>
</xsl:if>
+ <!-- Styling for JQuery dialog -->
+ <link rel="stylesheet" href="{$engineBasePath}/css/ui-lightness/jquery-ui-1.7.2.custom.css" type="text/css"/>
+
<!-- Item styling -->
<link rel="stylesheet" href="{$engineBasePath}/css/item.css" type="text/css" media="screen"/>
<xsl:apply-templates select="qti:stylesheet"/>
<!-- MathAssessEngine template styling -->
- <link rel="stylesheet" href="{$engineBasePath}/css/item-layout.css" type="text/css" media="screen"/>
-
- <!-- Styling for JQuery dialog -->
- <link rel="stylesheet" href="{$engineBasePath}/css/ui-lightness/jquery-ui-1.7.2.custom.css" type="text/css"/>
+ <xsl:if test="not($embedded)">
+ <link rel="stylesheet" href="{$engineBasePath}/css/item-layout.css" type="text/css" media="screen"/>
+ </xsl:if>
</head>
<body class="mathassessengine qtiengine">
- <div class="logo">
- <img src="{$engineBasePath}/images/mathassessengine.png" alt="MathAssessEngine"/>
- </div>
- <div class="nav">
- <span class="menuButton"><a class="home" href="{$engineBasePath}">Home</a></span>
- <span class="menuButton"><a class="list" href="{$engineBasePath}/article/list">Item & Test list</a></span>
- <span class="menuButton"><a class="reset" href="{$engineBasePath}/article/reset/{$article-id}">Reset and replay</a></span>
- <span class="menuButton"><a class="source" href="{$engineBasePath}/article/source/{$article-id}">View source XML</a></span>
- </div>
+ <xsl:if test="not($embedded)">
+ <div class="logo">
+ <img src="{$engineBasePath}/images/mathassessengine.png" alt="MathAssessEngine"/>
+ </div>
+ <div class="nav">
+ <span class="menuButton"><a class="home" href="{$engineBasePath}">Home</a></span>
+ <span class="menuButton"><a class="list" href="{$engineBasePath}/article/list">Item & Test list</a></span>
+ <span class="menuButton"><a class="reset" href="{$engineBasePath}/article/reset/{$articleId}{if ($queryString) then concat('?', $queryString) else ''}">Reset and replay</a></span>
+ <span class="menuButton"><a class="source" href="{$engineBasePath}/article/source/{$articleId}">View source XML</a></span>
+ </div>
+ </xsl:if>
<div class="renderingBody">
<div class="qtiengine mathassessengine item">
<xsl:if test="$validation">
@@ -143,7 +150,7 @@
</div>
</div>
<!-- Optional debugging information -->
- <xsl:if test="$showInternalState">
+ <xsl:if test="not($embedded) and $showInternalState">
<div id="debug_panel">
<xsl:call-template name="internalState"/>
</div>
Modified: branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/test-item.xsl
===================================================================
--- branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/test-item.xsl 2010-04-09 13:58:38 UTC (rev 2440)
+++ branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/test-item.xsl 2010-04-09 14:01:22 UTC (rev 2441)
@@ -21,7 +21,8 @@
<!-- Import stylesheet to fix-up QTI 2.0 questions before processing -->
<xsl:import href="qti20-fixer.xsl"/>
- <xsl:param name="article-id" as="xs:string?"/>
+ <xsl:param name="articleId" as="xs:string?"/>
+ <xsl:param name="queryString" as="xs:string?"/>
<xsl:param name="isResponded" select="false()" as="xs:boolean"/>
<xsl:param name="title" select="''" as="xs:string"/> <!-- item title -->
<xsl:param name="timeRemaining" select="-1" as="xs:integer"/> <!-- time remaining -->
@@ -43,10 +44,12 @@
<xsl:param name="allowCandidateComment" select="false()" as="xs:boolean"/>
<xsl:param name="view" select="false()" as="xs:boolean"/> <!-- view mode (unset shows everthing) -->
<xsl:param name="flash" as="xs:string?"/>
+ <xsl:param name="validation" select="()" as="xs:string?"/> <!-- validation report, if required -->
+
<xsl:param name="displayTitle" select="true()" as="xs:boolean"/>
<xsl:param name="displayControls" select="true()" as="xs:boolean"/>
- <xsl:param name="validation" select="()" as="xs:string?"/> <!-- validation report, if required -->
- <xsl:param name="playrMode" select="false()" as="xs:boolean"/><!-- Enable QTIplayr output mode -->
+ <xsl:param name="embedded" select="false()" as="xs:boolean"/>
+ <xsl:param name="playrMode" select="false()" as="xs:boolean"/><!-- Enable special QTIplayr output mode -->
<!-- ************************************************************ -->
@@ -82,16 +85,22 @@
<script src="{$engineBasePath}/Jscript/controls.js" type="text/javascript"/>
<script src="{$engineBasePath}/Jscript/slider.js" type="text/javascript"/>
- <!-- Include JS for controlling test time limit -->
- <xsl:if test="not($playrMode) and $timeRemaining >= 0">
- <script src="{$engineBasePath}/Jscript/TimeLimit.js" type="text/javascript"/>
- </xsl:if>
-
- <!-- (The following are used for the MathEntryInteraction) -->
+ <!-- (The following are used for the MathEntryInteraction and time limits) -->
<script src="{$engineBasePath}/Jscript/jquery.js" type="text/javascript"/>
<script src="{$engineBasePath}/Jscript/jquery-ui.custom.min.js" type="text/javascript"/>
<script type="text/javascript">jQuery.noConflict();</script>
+ <!-- Timer setup (requires controls to be displayed) -->
+ <!-- (NB: This is not used in playMode, though I'm not entirely sure why!) -->
+ <xsl:if test="not($playrMode) and $displayControls and $timeRemaining >= 0">
+ <script src="{$engineBasePath}/Jscript/TimeLimit.js" type="text/javascript"/>
+ <script type="text/javascript">
+ jQuery(document).ready(function() {
+ initTimer('<xsl:value-of select="$timeRemaining"/>');
+ });
+ </script>
+ </xsl:if>
+
<!--
Import ASCIIMathML stuff if there are any MathEntryInteractions in the question.
(It would be quite nice if we could allow each interaction to hook into this
@@ -108,35 +117,35 @@
<script src="{$engineBasePath}/Jscript/BrowserCheck.js" type="text/javascript"/>
</xsl:if>
+ <!-- Styling for JQuery dialog -->
+ <link rel="stylesheet" href="{$engineBasePath}/css/ui-lightness/jquery-ui-1.7.2.custom.css" type="text/css"/>
+
<!-- Stylesheet(s) for this item -->
<link rel="stylesheet" href="{$engineBasePath}/css/item.css" type="text/css" media="screen"/>
<xsl:apply-templates select="qti:stylesheet"/>
<!-- Test styling -->
<link rel="stylesheet" href="{$engineBasePath}/css/test.css" type="text/css" media="screen"/>
- <link rel="stylesheet" href="{$engineBasePath}/css/item-layout.css" type="text/css" media="screen"/>
- <!-- Styling for JQuery dialog -->
- <link rel="stylesheet" href="{$engineBasePath}/css/ui-lightness/jquery-ui-1.7.2.custom.css" type="text/css"/>
+ <!-- MathAssessEngine template styling -->
+ <xsl:if test="not($embedded)">
+ <link rel="stylesheet" href="{$engineBasePath}/css/item-layout.css" type="text/css" media="screen"/>
+ </xsl:if>
</head>
<body class="mathassessengine qtiengine">
- <xsl:if test="not($playrMode)">
+ <xsl:if test="not($embedded) and not($playrMode)">
<div class="logo">
<img src="{$engineBasePath}/images/mathassessengine.png" alt="MathAssessEngine"/>
</div>
<div class="nav">
<span class="menuButton"><a class="home" href="{$engineBasePath}">Home</a></span>
<span class="menuButton"><a class="list" href="{$engineBasePath}/article/list">Item & Test list</a></span>
- <span class="menuButton"><a class="reset" href="{$engineBasePath}/article/reset/{$article-id}">Reset and replay</a></span>
- <span class="menuButton"><a class="source" href="{$engineBasePath}/article/source/{$article-id}">View source XML</a></span>
+ <span class="menuButton"><a class="reset" href="{$engineBasePath}/article/reset/{$articleId}{if ($queryString) then concat('?', $queryString) else ''}">Reset and replay</a></span>
+ <span class="menuButton"><a class="source" href="{$engineBasePath}/article/source/{$articleId}">View source XML</a></span>
</div>
</xsl:if>
<div class="renderingBody">
<div class="qtiengine mathassessengine test">
- <xsl:if test="not($playrMode) and $timeRemaining >= 0">
- <xsl:attribute name="onload" select="concat('initTimer(', $timeRemaining, ')')"/>
- </xsl:if>
-
<xsl:if test="exists($validation)">
<pre class="validation">
<xsl:value-of select="$validation"/>
@@ -157,7 +166,7 @@
</xsl:if>
<div id="navbar">
- <xsl:if test="$timeRemaining >= 0">
+ <xsl:if test="not($playrMode) and $displayControls and $timeRemaining >= 0">
<div id="controls">
Time to complete <b><xsl:value-of select="$numberRemaining"/></b> remaining items is <b id="timer">...</b>.
</div>
@@ -230,7 +239,7 @@
</div>
</div>
<!-- Optional debugging information -->
- <xsl:if test="not($playrMode) and $showInternalState">
+ <xsl:if test="not($embedded) and not($playrMode) and $showInternalState">
<div id="debug_panel">
<xsl:call-template name="internalState"/>
</div>
@@ -253,17 +262,6 @@
<!-- Do QTI body as usual -->
<xsl:apply-templates/>
-
- <xsl:if test="$displayControls">
- <table id="controls">
- <tr>
- <td width="100%" align="center">
- <input type="reset" value="RESET"/>
- <input id="submit_button" name="submit" type="submit" value="SUBMIT ANSWER"/>
- </td>
- </tr>
- </table>
- </xsl:if>
</div>
</div>
<div class="spacer"> </div>
@@ -273,8 +271,8 @@
<xsl:call-template name="test-feedback"/>
</xsl:if>
- <!-- if there are no controls yet, then add some -->
- <xsl:if test="not($displayControls)">
+ <!-- add controls. (NB: logic here is slightly different from QTIEngine) -->
+ <xsl:if test="$displayControls">
<xsl:call-template name="controls"/>
</xsl:if>
</form>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|