You can subscribe to this list here.
| 2008 |
Jan
(28) |
Feb
(32) |
Mar
(67) |
Apr
(35) |
May
(34) |
Jun
(17) |
Jul
(10) |
Aug
(3) |
Sep
(6) |
Oct
(1) |
Nov
(2) |
Dec
(47) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 |
Jan
(85) |
Feb
(66) |
Mar
(72) |
Apr
(11) |
May
(6) |
Jun
(45) |
Jul
(13) |
Aug
(13) |
Sep
(9) |
Oct
(27) |
Nov
(18) |
Dec
(9) |
| 2010 |
Jan
(77) |
Feb
(80) |
Mar
(95) |
Apr
(38) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <jo...@us...> - 2011-04-11 12:40:59
|
Revision: 2458
http://qtitools.svn.sourceforge.net/qtitools/?rev=2458&view=rev
Author: jonhare
Date: 2011-04-11 12:40:53 +0000 (Mon, 11 Apr 2011)
Log Message:
-----------
added custominteractions, fix for and and match
Modified Paths:
--------------
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/AbstractNode.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/And.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/Match.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/interaction/CustomInteraction.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/interaction/Interaction.java
branches/lifeguide/JQTI/src/test/java/org/qtitools/qti/node/expression/operator/AndAcceptTest.java
Added Paths:
-----------
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/BranchRuleProxy.java
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/AbstractNode.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/AbstractNode.java 2010-10-04 13:22:19 UTC (rev 2457)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/AbstractNode.java 2011-04-11 12:40:53 UTC (rev 2458)
@@ -47,6 +47,7 @@
import org.qtitools.qti.group.NodeGroupList;
import org.qtitools.qti.node.expression.AbstractExpression;
import org.qtitools.qti.node.expression.operator.CustomOperator;
+import org.qtitools.qti.node.item.interaction.CustomInteraction;
import org.qtitools.qti.validation.ValidationResult;
import org.w3c.dom.Node;
@@ -448,6 +449,8 @@
//String c = this.getClass().getName();
if (this.getClassTag().equals(CustomOperator.CLASS_TAG))
JQTISerializer.writeString(dos, "org.qtitools.qti.node.expression.operator.CustomOperator");
+ else if (this.getClassTag().equals(CustomInteraction.CLASS_TAG))
+ JQTISerializer.writeString(dos, "org.qtitools.qti.node.item.interaction.CustomInteraction");
else
JQTISerializer.writeString(dos, this.getClass().getName());
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/And.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/And.java 2010-10-04 13:22:19 UTC (rev 2457)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/And.java 2011-04-11 12:40:53 UTC (rev 2458)
@@ -107,8 +107,6 @@
@Override
protected Value evaluateSelf(int depth)
{
- boolean containsNulls = false;
-
for (Expression subExpression : getChildren())
{
if (subExpression instanceof AbstractExpression)
@@ -118,15 +116,10 @@
Value value = subExpression.getValue();
- if (value.isNull())
- containsNulls = true;
- else if (!((BooleanValue) value).booleanValue())
+ if (value.isNull() || !((BooleanValue) value).booleanValue())
return new BooleanValue(false);
}
- if (containsNulls)
- return new NullValue();
-
return new BooleanValue(true);
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/Match.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/Match.java 2010-10-04 13:22:19 UTC (rev 2457)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/Match.java 2011-04-11 12:40:53 UTC (rev 2458)
@@ -46,6 +46,7 @@
import org.qtitools.qti.value.BooleanValue;
import org.qtitools.qti.value.Cardinality;
import org.qtitools.qti.value.NullValue;
+import org.qtitools.qti.value.NumberValue;
import org.qtitools.qti.value.Value;
/**
@@ -127,8 +128,15 @@
Value firstValue = getFirstChild().getValue();
Value secondValue = getSecondChild().getValue();
-
- return new BooleanValue(firstValue.equals(secondValue));
+
+ if (firstValue instanceof NumberValue && secondValue instanceof NumberValue)
+ {
+ return new BooleanValue(((NumberValue) getFirstChild().getValue()).doubleValue() == ((NumberValue) getSecondChild().getValue()).doubleValue());
+ }
+ else
+ {
+ return new BooleanValue(firstValue.equals(secondValue));
+ }
}
@Override
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/interaction/CustomInteraction.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/interaction/CustomInteraction.java 2010-10-04 13:22:19 UTC (rev 2457)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/interaction/CustomInteraction.java 2011-04-11 12:40:53 UTC (rev 2458)
@@ -93,7 +93,6 @@
interaction = (Interaction) constructor.newInstance(this.getParent()); //point the interactions' parent at our parent
//TODO: custom interactions that have children are not yet supported!
-
for (Attribute attribute : getAttributes()) {
Attribute interAttribute = null;
try {
@@ -112,28 +111,65 @@
}
}
- getAttributes().clear();
+ /*getAttributes().clear();
for (Attribute attribute : interaction.getAttributes())
+ {
+ //if (attribute.valueToString().equals("")) continue;
getAttributes().add(attribute);
+ }
+ System.out.println("Loaded " + getClassAttr() + " :: " + getAttributes().size() + " attribtues");
+ System.out.println( " " + getAttributes());*/
}
@Override
public void beforeProcessResponse() {
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
interaction.beforeProcessResponse();
}
@Override
public ResponseDeclaration getResponseDeclaration() {
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
return interaction.getResponseDeclaration();
}
@Override
public String getResponseIdentifier() {
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
return interaction.getResponseIdentifier();
}
@Override
public List<String> getShuffledOrder() {
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
return interaction.getShuffledOrder();
}
@@ -149,16 +185,40 @@
@Override
public void processResponse(List<String> responseList) {
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
interaction.processResponse(responseList);
}
@Override
public void processResponse(String responseString) {
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
interaction.processResponse(responseString);
}
@Override
public void setResponseIdentifier(String responseIdentifier) {
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
interaction.setResponseIdentifier(responseIdentifier);
}
@@ -184,19 +244,42 @@
return result;
}
+
+ @Override
+ public String toXmlString(int depth, boolean printDefaultAttributes) {
+ // TODO Auto-generated method stub
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "";
+ }
+ }
+ return interaction.toXmlString(depth, printDefaultAttributes);
+ }
@Override
public boolean validateResponse() {
+ if (interaction == null)
+ {
+ try {
+ loadInteraction();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
return interaction.validateResponse();
}
@Override
protected void writeInstanceVars(DataOutputStream dos) {
- this.interaction.writeBinary(dos);
+ //this.interaction.writeBinary(dos);
}
@Override
protected void readInstanceVars(DataInputStream dis) {
- this.interaction = (Interaction) AbstractNode.readBinary(dis, this);
+ //this.interaction = (Interaction) AbstractNode.readBinary(dis, this);
}
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/interaction/Interaction.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/interaction/Interaction.java 2010-10-04 13:22:19 UTC (rev 2457)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/interaction/Interaction.java 2011-04-11 12:40:53 UTC (rev 2458)
@@ -48,6 +48,7 @@
import org.qtitools.qti.value.FloatValue;
import org.qtitools.qti.value.IntegerValue;
import org.qtitools.qti.value.MultipleValue;
+import org.qtitools.qti.value.NullValue;
import org.qtitools.qti.value.OrderedValue;
import org.qtitools.qti.value.SingleValue;
import org.qtitools.qti.value.Value;
@@ -190,13 +191,13 @@
protected Value processResponse(List<String> responseList, ResponseDeclaration responseDeclaration) {
Value value = null;
-
if (responseDeclaration.getCardinality() == Cardinality.SINGLE) {
if (responseList == null || responseList.size() == 0 || responseList.get(0).length() == 0) {
+ //In LifeGuide, we'll let numeric interactions return null, so that responses can be forced
if (responseDeclaration.getBaseType().isFloat()) {
- value = new FloatValue(0);
+ value = new NullValue();//FloatValue(0);
} else if (responseDeclaration.getBaseType().isInteger()) {
- value = new IntegerValue(0);
+ value = new NullValue();//IntegerValue(0);
}
} else {
value = responseDeclaration.getBaseType().parseSingleValue(responseList.get(0));
Added: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/BranchRuleProxy.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/BranchRuleProxy.java (rev 0)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/BranchRuleProxy.java 2011-04-11 12:40:53 UTC (rev 2458)
@@ -0,0 +1,41 @@
+package org.qtitools.qti.node.test;
+
+import org.qtitools.qti.attribute.AttributeList;
+import org.qtitools.qti.group.NodeGroupList;
+import org.qtitools.qti.node.AbstractNode;
+
+public class BranchRuleProxy extends BranchRule {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private int index;
+ private boolean loaded = false;
+ private AssessmentItemRef realParent = null;
+
+ public BranchRuleProxy(int index, AssessmentItemRef parent) {
+ super(parent);
+ this.index = index;
+ this.loaded=true;
+ this.realParent = parent;
+ }
+ private BranchRule loadBranchRule()
+ {
+ //System.out.println(this.getParent().getBranchRules());
+ return realParent.getBranchRules().get(index);
+ }
+
+ public AttributeList getAttributes()
+ {
+ if (!loaded) return super.getAttributes();
+ return this.loadBranchRule().getAttributes();
+ }
+
+ public NodeGroupList getNodeGroups()
+ {
+ if (!loaded) return super.getNodeGroups();
+ return this.loadBranchRule().getNodeGroups();
+ }
+
+}
Modified: branches/lifeguide/JQTI/src/test/java/org/qtitools/qti/node/expression/operator/AndAcceptTest.java
===================================================================
--- branches/lifeguide/JQTI/src/test/java/org/qtitools/qti/node/expression/operator/AndAcceptTest.java 2010-10-04 13:22:19 UTC (rev 2457)
+++ branches/lifeguide/JQTI/src/test/java/org/qtitools/qti/node/expression/operator/AndAcceptTest.java 2011-04-11 12:40:53 UTC (rev 2458)
@@ -62,15 +62,16 @@
{
return Arrays.asList(new Object[][]
{
- // null
+ // null
+ // For LifeGuide, changed it so ands should return false.
{"<and>" +
"<null/>" +
- "</and>", null},
+ "</and>", false},
{"<and>" +
"<baseValue baseType='boolean'>true</baseValue>" +
"<null/>" +
"<baseValue baseType='boolean'>true</baseValue>" +
- "</and>", null},
+ "</and>", false},
// false
{"<and>" +
"<baseValue baseType='boolean'>false</baseValue>" +
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jo...@us...> - 2010-10-04 13:22:27
|
Revision: 2457
http://qtitools.svn.sourceforge.net/qtitools/?rev=2457&view=rev
Author: jonhare
Date: 2010-10-04 13:22:19 +0000 (Mon, 04 Oct 2010)
Log Message:
-----------
more updates for lifeguide
Modified Paths:
--------------
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/JQTISerializer.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/group/content/InlineStaticGroup.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/group/item/ItemBodyGroup.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/AbstractNode.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/XmlUtils.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/content/BodyElement.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/content/xhtml/object/Param.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/AbstractExpression.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/Expression.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/general/Variable.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/And.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/CustomOperator.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/AssessmentItem.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/shared/FieldValue.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentItemRef.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentSection.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentTest.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/TimeRecord.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/flow/DefaultItemFlow.java
branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/value/FloatValue.java
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/JQTISerializer.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/JQTISerializer.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/JQTISerializer.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -29,8 +29,7 @@
public final class JQTISerializer {
public static void writeString(DataOutputStream dos, String s) {
try {
- dos.writeChars(s);
- dos.writeChar('\0');
+ dos.writeUTF(s);
}
catch(IOException e) {
throw new QTIEvaluationException(e);
@@ -39,14 +38,7 @@
public static String readString(DataInputStream dis) {
try {
- String s = "";
- char c = dis.readChar();
- while (c != '\0')
- {
- s = s+c;
- c = dis.readChar();
- }
- return s;
+ return dis.readUTF();
}
catch(IOException e) {
throw new QTIEvaluationException(e);
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/group/content/InlineStaticGroup.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/group/content/InlineStaticGroup.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/group/content/InlineStaticGroup.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -55,6 +55,8 @@
static {
for (ContentType type : ContentType.inlineStaticValues())
supportedClasses.add(type.getClassTag());
+
+ //supportedClasses.add(XInclude.CLASS_TAG);
}
/**
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/group/item/ItemBodyGroup.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/group/item/ItemBodyGroup.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/group/item/ItemBodyGroup.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -88,7 +88,7 @@
setChild(itemBody);
}
- @Override
+ /*@Override
public List<XmlNode> getChildren()
{
List<XmlNode> c = super.getChildren();
@@ -99,15 +99,13 @@
{
AssessmentItem ai = new AssessmentItem();
ai.loadWithoutClear(ib.getSourceFile());
- //c.clear();
- //c
List<XmlNode> realNodes = new ArrayList<XmlNode>(1);
realNodes.add((XmlNode)ai.getItemBody());
return realNodes;
}
}
return c;
- }
+ }*/
/**
* Creates child with given QTI class name.
@@ -126,17 +124,6 @@
public List<String> getAllSupportedClasses() {
return ItemBodyGroup.supportedClasses;
}
-
- /*@Override
- public String toXmlString(int depth, boolean printDefaultAttributes)
- {
- ItemBody ib = getItemBody();
- if (ib != null && ib.getSourceFile() != null)
- {
- AssessmentItem ai = new AssessmentItem();
- ai.loadWithoutClear(ib.getSourceFile());
- return ai.getItemBody().toXmlString(depth, printDefaultAttributes);
- }
- return super.toXmlString(depth, printDefaultAttributes);
- }*/
+
+
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/AbstractNode.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/AbstractNode.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/AbstractNode.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -45,6 +45,8 @@
import org.qtitools.qti.exception.QTIParseException;
import org.qtitools.qti.group.NodeGroup;
import org.qtitools.qti.group.NodeGroupList;
+import org.qtitools.qti.node.expression.AbstractExpression;
+import org.qtitools.qti.node.expression.operator.CustomOperator;
import org.qtitools.qti.validation.ValidationResult;
import org.w3c.dom.Node;
@@ -103,7 +105,7 @@
* @param parent new parent of this node
* @see #getParent
*/
- protected void setParent(XmlNode parent)
+ public void setParent(XmlNode parent)
{
this.parent = parent;
}
@@ -144,6 +146,20 @@
this.sourceUrl = sourceUrl;
}
+ public void loadIncludeUnaware(File sourceFile)
+ {
+ this.sourceFile = sourceFile;
+
+ load(getNodeIncludeUnaware(sourceFile));
+ }
+
+ public void loadIncludeUnaware(String sourceString)
+ {
+ this.sourceString = sourceString;
+
+ load(getNodeIncludeUnaware(sourceString));
+ }
+
public void load(File sourceFile)
{
this.sourceFile = sourceFile;
@@ -358,7 +374,7 @@
*/
public static Node getNode(URL url)
{
- return XmlUtils.getFirstElementNode(url, false);
+ return XmlUtils.getFirstElementNode(url, false, true);
}
/**
@@ -369,8 +385,13 @@
*/
public static Node getNode(File file)
{
- return XmlUtils.getFirstElementNode(file, false);
+ return XmlUtils.getFirstElementNode(file, false, true);
}
+
+ public static Node getNodeIncludeUnaware(File file)
+ {
+ return XmlUtils.getFirstElementNode(file, false, false);
+ }
/**
* Gets node from given source string.
@@ -380,8 +401,13 @@
*/
public static Node getNode(String string)
{
- return XmlUtils.getFirstElementNode(string, false);
+ return XmlUtils.getFirstElementNode(string, false, true);
}
+
+ public static Node getNodeIncludeUnaware(String string)
+ {
+ return XmlUtils.getFirstElementNode(string, false, false);
+ }
/**
* Prints indent into xml string.
@@ -418,7 +444,12 @@
private void writeClassMarker(DataOutputStream dos) {
JQTISerializer.writeString(dos, "__class__");
//System.out.println("CLASS: " + this.getClass().getName());
- JQTISerializer.writeString(dos, this.getClass().getName());
+
+ //String c = this.getClass().getName();
+ if (this.getClassTag().equals(CustomOperator.CLASS_TAG))
+ JQTISerializer.writeString(dos, "org.qtitools.qti.node.expression.operator.CustomOperator");
+ else
+ JQTISerializer.writeString(dos, this.getClass().getName());
}
protected abstract void writeInstanceVars(DataOutputStream dos);
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/XmlUtils.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/XmlUtils.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/XmlUtils.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -177,13 +177,13 @@
* @param validate whether validate document
* @return document builder factory
*/
- public static DocumentBuilderFactory getFactory(boolean validate)
+ public static DocumentBuilderFactory getFactory(boolean validate, boolean includeAware)
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(validate);
factory.setNamespaceAware(true);
- factory.setXIncludeAware(true);
+ factory.setXIncludeAware(includeAware);
factory.setExpandEntityReferences(false);
factory.setAttribute(ATTRIBUTE_SCHEMA_LANGUAGE_NAME, ATTRIBUTE_SCHEMA_LANGUAGE_VALUE);
@@ -199,11 +199,11 @@
* @return document builder
* @throws QTIParseException if any parsing error occurs
*/
- public static DocumentBuilder getBuilder(boolean validate) throws QTIParseException
+ public static DocumentBuilder getBuilder(boolean validate, boolean namespaceAware) throws QTIParseException
{
try
{
- DocumentBuilderFactory factory = getFactory(validate);
+ DocumentBuilderFactory factory = getFactory(validate, namespaceAware);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(new ErrorHandler()
@@ -240,7 +240,7 @@
* @return document from given source file
* @throws QTIParseException if any parsing error occurs
*/
- public static Document getDocument(File file, boolean validate) throws QTIParseException
+ public static Document getDocument(File file, boolean validate, boolean namespaceAware) throws QTIParseException
{
try {
BufferedReader reader = new BufferedReader(new UnicodeReader(new FileInputStream(file), "utf-8"));
@@ -252,7 +252,7 @@
reader.close();
- return getDocument(builder.toString(), validate, file.getParentFile().toURL().toString());
+ return getDocument(builder.toString(), validate, namespaceAware, file.getParentFile().toURL().toString());
// return getBuilder(validate).parse(file);
} catch (IOException ex) {
@@ -272,12 +272,12 @@
* @return document from given source string
* @throws QTIParseException if any parsing error occurs
*/
- public static Document getDocument(String string, boolean validate) throws QTIParseException
+ public static Document getDocument(String string, boolean validate, boolean namespaceAware) throws QTIParseException
{
- return getDocument(string, validate, null);
+ return getDocument(string, validate, namespaceAware, null);
}
- private static Document getDocument(String string, boolean validate, String systemId) throws QTIParseException
+ private static Document getDocument(String string, boolean validate, boolean namespaceAware, String systemId) throws QTIParseException
{
try
{
@@ -286,9 +286,9 @@
ByteArrayInputStream input = new ByteArrayInputStream(string.getBytes("UTF-8"));
Document document;
if (systemId != null)
- document = getBuilder(validate).parse(input, systemId);
+ document = getBuilder(validate, namespaceAware).parse(input, systemId);
else
- document = getBuilder(validate).parse(input);
+ document = getBuilder(validate, namespaceAware).parse(input);
input.close();
return document;
@@ -311,7 +311,7 @@
* @return first element node from given source url
* @throws QTIParseException if any parsing error occurs
*/
- public static Node getFirstElementNode(URL url, boolean validate) throws QTIParseException
+ public static Node getFirstElementNode(URL url, boolean validate, boolean includeAware) throws QTIParseException
{
try
{
@@ -325,7 +325,7 @@
input.close();
- return getFirstElementNode(builder.toString(), validate);
+ return getFirstElementNode(builder.toString(), validate, includeAware);
}
catch (IOException ex)
{
@@ -341,9 +341,9 @@
* @return first element node from given source file
* @throws QTIParseException if any parsing error occurs
*/
- public static Node getFirstElementNode(File file, boolean validate) throws QTIParseException
+ public static Node getFirstElementNode(File file, boolean validate, boolean includeAware) throws QTIParseException
{
- Document document = getDocument(file, validate);
+ Document document = getDocument(file, validate, includeAware);
return getFirstElementNode(document);
}
@@ -356,9 +356,9 @@
* @return first element node from given source string
* @throws QTIParseException if any parsing error occurs
*/
- public static Node getFirstElementNode(String string, boolean validate) throws QTIParseException
+ public static Node getFirstElementNode(String string, boolean validate, boolean includeAware) throws QTIParseException
{
- Document document = getDocument(string, validate);
+ Document document = getDocument(string, validate, includeAware);
return getFirstElementNode(document);
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/content/BodyElement.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/content/BodyElement.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/content/BodyElement.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -216,7 +216,7 @@
*/
public String getLabel()
{
- return getAttributes().getStringAttribute(ATTR_LANG_NAME).getValue();
+ return getAttributes().getStringAttribute(ATTR_LABEL_NAME).getValue();
}
/**
@@ -227,7 +227,7 @@
*/
public void setLabel(String label)
{
- getAttributes().getStringAttribute(ATTR_LANG_NAME).setValue(label);
+ getAttributes().getStringAttribute(ATTR_LABEL_NAME).setValue(label);
}
/**
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/content/xhtml/object/Param.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/content/xhtml/object/Param.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/content/xhtml/object/Param.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -91,7 +91,7 @@
public static final String ATTR_VALUE_NAME = "value";
/** Name of valuetype attribute in xml schema. */
- public static final String ATTR_VALUETYPE_NAME = "valuetype";
+ //public static final String ATTR_VALUETYPE_NAME = "valuetype";
/** Name of type attribute in xml schema. */
public static final String ATTR_TYPE_NAME = "type";
@@ -106,7 +106,7 @@
getAttributes().add(new StringAttribute(this, ATTR_NAME_NAME));
getAttributes().add(new StringAttribute(this, ATTR_VALUE_NAME));
- getAttributes().add(new ParamTypeAttribute(this, ATTR_VALUETYPE_NAME));
+ //getAttributes().add(new ParamTypeAttribute(this, ATTR_VALUETYPE_NAME));
getAttributes().add(new StringAttribute(this, ATTR_TYPE_NAME, null, null, false));
}
@@ -165,10 +165,10 @@
* @return value of valuetype attribute
* @see #setValuetype
*/
- public ParamType getValuetype()
+ /*public ParamType getValuetype()
{
return getAttributes().getParamTypeAttribute(ATTR_VALUETYPE_NAME).getValue();
- }
+ }*/
/**
* Sets new value of valuetype attribute.
@@ -176,10 +176,10 @@
* @param valuetype new value of valuetype attribute
* @see #getValuetype
*/
- public void setValuetype(ParamType valuetype)
+ /*public void setValuetype(ParamType valuetype)
{
getAttributes().getParamTypeAttribute(ATTR_VALUETYPE_NAME).setValue(valuetype);
- }
+ }*/
/**
* Gets value of type attribute.
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/AbstractExpression.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/AbstractExpression.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/AbstractExpression.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -406,13 +406,13 @@
logger.debug("{}Value of {} was already evaluated.", getIndent(depth), getClass().getSimpleName());
// Logs result of evaluation.
- String format = "{}{} -> {}({})";
- Object[] arguments = new Object[] {getIndent(depth), getClass().getSimpleName(), value.getBaseType(), value};
+// String format = "{}{} -> {}({})";
+// Object[] arguments = new Object[] {getIndent(depth), getClass().getSimpleName(), value.getBaseType(), value};
- if (!(getParent() instanceof Expression))
- logger.info(format, arguments);
- else
- logger.debug(format, arguments);
+// if (!(getParent() instanceof Expression))
+// logger.info(format, arguments);
+// else
+// logger.debug(format, arguments);
return value;
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/Expression.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/Expression.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/Expression.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -161,4 +161,8 @@
* @return evaluated result or null if this expression is not evaluated yet
*/
public Value getValue();
+
+ public Integer getMaximumChildren();
+
+ public Integer getMinimumChildren();
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/general/Variable.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/general/Variable.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/general/Variable.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -255,7 +255,7 @@
}
else
{
- logger.error("{}Root parent {} is not supported. Returning NULL value.", getIndent(depth), getParentRoot().getClassTag());
+ //logger.error("{}Root parent {} is not supported. Returning NULL value.", getIndent(depth), getParentRoot().getClassTag());
return new NullValue();
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/And.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/And.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/And.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -93,14 +93,14 @@
logger.debug("{}Value of {} was already evaluated.", getIndent(depth), getClass().getSimpleName());
// Logs result of evaluation.
- String format = "{}{} -> {}({})";
- Object[] arguments = new Object[] {getIndent(depth), getClass().getSimpleName(), value.getBaseType(), value};
+// String format = "{}{} -> {}({})";
+// Object[] arguments = new Object[] {getIndent(depth), getClass().getSimpleName(), value.getBaseType(), value};
+//
+// if (!(getParent() instanceof Expression))
+// logger.info(format, arguments);
+// else
+// logger.debug(format, arguments);
- if (!(getParent() instanceof Expression))
- logger.info(format, arguments);
- else
- logger.debug(format, arguments);
-
return value;
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/CustomOperator.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/CustomOperator.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/expression/operator/CustomOperator.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -69,7 +69,7 @@
*
* @author Jonathon Hare
*/
-public class CustomOperator extends AbstractExpression
+public final class CustomOperator extends AbstractExpression
{
private static final long serialVersionUID = 1L;
@@ -245,7 +245,23 @@
}
}
method.setAccessible(true);
- return (Value) method.invoke(expression, depth);
+ try {
+ return (Value) method.invoke(expression, depth);
+ } catch (java.lang.reflect.InvocationTargetException e3) {
+ String errMsg = "CustomOperator '" + getClassAttr() + "' failed with input: [";
+ boolean first=true;
+ for (Expression x : expression.getChildren()) {
+ if (!first) errMsg += ", ";
+ if (x.getValue() == null)
+ errMsg += x.toXmlString();
+ else
+ errMsg += x.getValue();
+ first=false;
+ }
+ errMsg+="]";
+ throw new QTIEvaluationException(errMsg);
+ }
+
} catch (Exception e) {
throw new QTIEvaluationException(e);
}
@@ -312,13 +328,13 @@
@Override
protected void writeInstanceVars(DataOutputStream dos) {
super.writeInstanceVars(dos);
- if (this.expression == null)
+ //if (this.expression == null)
JQTISerializer.writeString(dos, "__nullValue");
- else
+ /*else
{
JQTISerializer.writeString(dos, "__customOperatorExpression");
this.expression.writeBinary(dos);
- }
+ }*/
}
@Override
@@ -330,10 +346,47 @@
this.expression = null;
return;
}
- s = JQTISerializer.readString(dis);
- if (s.equals("__customOperatorExpression"))
+
+ if (s.equals("__customOperatorExpression")) {
this.expression = (Expression)AbstractNode.readBinary(dis, this);
+ this.expression = null;
+ }
else
throw new QTIEvaluationException("Expected Expression for CustomOperator");
}
+
+ //should be overridden in customoperators to provide the real minimum number of children
+ @Override
+ public Integer getMinimumChildren() {
+ if (expression == null)
+ try {
+ loadExpression();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ if (expression != null && expression instanceof AbstractExpression) {
+ return ((AbstractExpression)expression).getMinimumChildren();
+ } else {
+ return super.getMinimumChildren();
+ }
+ }
+
+
+ //should be overridden in customoperators to provide the real maximum number of children
+ @Override
+ public Integer getMaximumChildren() {
+ if (expression == null)
+ try {
+ loadExpression();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ if (expression != null && expression instanceof AbstractExpression) {
+ return ((AbstractExpression)expression).getMaximumChildren();
+ } else {
+ return super.getMaximumChildren();
+ }
+ }
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/AssessmentItem.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/AssessmentItem.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/item/AssessmentItem.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -44,6 +44,7 @@
import java.util.Map;
import org.qtitools.qti.JQTI;
+import org.qtitools.qti.JQTISerializer;
import org.qtitools.qti.attribute.value.BooleanAttribute;
import org.qtitools.qti.attribute.value.IdentifierAttribute;
import org.qtitools.qti.attribute.value.StringAttribute;
@@ -595,14 +596,14 @@
* @see #setItemBody
*/
public ItemBody getItemBody() {
- File itemFile = this.getSourceFile();
+ /*File itemFile = this.getSourceFile();
if (itemFile != null && itemFile.exists())
{
AssessmentItem item = new AssessmentItem();
item.loadWithoutClear(itemFile);
item.getNodeGroups().getItemBodyGroup().getItemBody().setParent(this);
return item.getNodeGroups().getItemBodyGroup().getItemBody();
- }
+ }*/
return getNodeGroups().getItemBodyGroup().getItemBody();
}
@@ -960,7 +961,7 @@
- @Override
+ /*@Override
public void load(File sourceFile)
{
super.load(sourceFile);
@@ -977,7 +978,7 @@
{
super.load(sourceFile);
this.setSourceFile(null);
- }
+ }*/
@Override
protected void writeInstanceVars(DataOutputStream dos) {
@@ -987,7 +988,12 @@
this.durationResponse.writeBinary(dos);
- this.timeRecord.writeBinary(dos);
+ if (this.timeRecord==null) JQTISerializer.writeString(dos, "__nullTimeRecord");
+ else
+ {
+ JQTISerializer.writeString(dos, "__notNullTimeRecord");
+ this.timeRecord.writeBinary(dos);
+ }
try {
dos.writeBoolean(this.isInitialized);
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/shared/FieldValue.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/shared/FieldValue.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/shared/FieldValue.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -212,7 +212,7 @@
@Override
protected String bodyToXmlString(int depth, boolean printDefaultAttributes)
{
- return (singleValue != null) ? singleValue.toString() : "";
+ return (singleValue != null) ? singleValue.toString().replaceAll("&", "&").replaceAll("<", "<") : "";
}
@Override
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentItemRef.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentItemRef.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentItemRef.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -34,9 +34,14 @@
package org.qtitools.qti.node.test;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.net.URI;
@@ -57,6 +62,7 @@
import org.qtitools.qti.attribute.value.UriAttribute;
import org.qtitools.qti.exception.QTIEvaluationException;
import org.qtitools.qti.exception.QTIItemFlowException;
+import org.qtitools.qti.group.NodeGroup;
import org.qtitools.qti.group.NodeGroupList;
import org.qtitools.qti.group.test.TemplateDefaultGroup;
import org.qtitools.qti.group.test.VariableMappingGroup;
@@ -114,6 +120,8 @@
private AssessmentItem item;
+ private File binaryAssessmentItem=null;
+
private class ItemState implements Serializable {
private static final long serialVersionUID = 1L;
@@ -309,6 +317,8 @@
{
AssessmentItemRef realItemRef = this.getRealItemRef();
if (realItemRef == null) return super.getNodeGroups();
+ realItemRef.setItem(this.item);
+ //System.out.println("got " + realItemRef.getIdentifier() + ", item=" + this.item);
return realItemRef.getSuperNodeGroups();
}
@@ -318,6 +328,7 @@
{
AssessmentItemRef realItemRef = this.getRealItemRef();
if (realItemRef == null) return super.getAttributes();
+ realItemRef.setItem(this.item);
return realItemRef.getSuperAttributes();
}
@@ -437,24 +448,62 @@
if (item != null)
return this.item;
+ AssessmentItem localItem = null;
- AssessmentItem localItem = null;
- File sourceFile = null;
- if(this.getParentTest().getSourceFile() != null)
+ if (binaryAssessmentItem != null && binaryAssessmentItem.exists())
{
- sourceFile = new File(getParentTest().getSourceFile().getParentFile(), getHref().getPath());
+ try {
+ DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(binaryAssessmentItem)));
+ localItem = (AssessmentItem) AbstractNode.readBinary(dis, null);
+ dis.close();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
}
- if(this.getParentTest().getSourceUrl() != null)
+ else
{
- sourceFile = new File(this.getParentTest().getSourceUrl().getFile());
- sourceFile = new File(sourceFile.getParentFile(), getHref().getPath());
+ File sourceFile = null;
+ if(this.getParentTest().getSourceFile() != null)
+ {
+ sourceFile = new File(getParentTest().getSourceFile().getParentFile(), getHref().getPath());
+ }
+ if(this.getParentTest().getSourceUrl() != null)
+ {
+ sourceFile = new File(this.getParentTest().getSourceUrl().getFile());
+ sourceFile = new File(sourceFile.getParentFile(), getHref().getPath());
+ }
+
+ File binaryItem = new File(sourceFile.getParentFile(), "InnerFiles" + File.separator + this.getIdentifier() + ".aibf");
+
+ if (binaryItem.exists())
+ {
+ try {
+ //long a,b;
+ DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(binaryItem.getAbsolutePath())));
+ //a=System.currentTimeMillis();
+ localItem = (AssessmentItem) AbstractNode.readBinary(dis, null);
+ //b=System.currentTimeMillis();
+ dis.close();
+ //System.out.println((b-a));
+ localItem.setTimeRecord(getCurrentState().getTimeRecord());
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ else
+ {
+ localItem = new AssessmentItem();
+ localItem.load(sourceFile);
+
+ localItem.setTimeRecord(getCurrentState().getTimeRecord());
+ }
}
-
- localItem = new AssessmentItem();
- localItem.load(sourceFile);
-
- localItem.setTimeRecord(getCurrentState().getTimeRecord());
-
+
if(refresh)
{
this.item = localItem;
@@ -462,6 +511,32 @@
return localItem;
}
+
+ public void setBinaryAssessmentItem(File biaf)
+ {
+ this.binaryAssessmentItem = biaf;
+ }
+
+ public void writeItemToBinary() {
+ if (this.binaryAssessmentItem != null && this.item != null)
+ {
+ //binaryAssessmentItem.mkdirs();
+ binaryAssessmentItem.getParentFile().mkdirs();
+
+ try {
+ if (!binaryAssessmentItem.exists()) binaryAssessmentItem.createNewFile();
+ DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(binaryAssessmentItem)));
+ this.item.writeBinary(dos);
+ dos.flush();
+ dos.close();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ this.item=null;
+ }
+ }
/**
* Sets new referenced item.
@@ -1044,23 +1119,25 @@
if (getStates().get(state).candidateComment != null && getStates().get(state).candidateComment.length() > 0)
result.setCandidateComment(new CandidateComment(result, getStates().get(state).candidateComment));
- for (OutcomeDeclaration declaration : getItem(false).getOutcomeDeclarations())
+ AssessmentItem ai = getItem(false);
+
+ for (OutcomeDeclaration declaration : ai.getOutcomeDeclarations())
{
//declaration.resetValue();
Value value = lookupValue(declaration.getIdentifier(), state);
OutcomeVariable variable = new OutcomeVariable(result, declaration, value);
result.getItemVariables().add(variable);
}
- result.getItemVariables().add(new OutcomeVariable(result, AssessmentItem.VARIABLE_COMPLETION_STATUS, getItem(false).getOutcomeValue(AssessmentItem.VARIABLE_COMPLETION_STATUS)));
-
- for (String identifier : getItem(false).getResponseValues().keySet())
+ result.getItemVariables().add(new OutcomeVariable(result, AssessmentItem.VARIABLE_COMPLETION_STATUS, ai.getOutcomeValue(AssessmentItem.VARIABLE_COMPLETION_STATUS)));
+
+ for (String identifier : ai.getResponseValues().keySet())
{
- ResponseDeclaration declaration = getItem(false).getResponseDeclaration(identifier);
+ ResponseDeclaration declaration = ai.getResponseDeclaration(identifier);
ResponseVariable variable = new ResponseVariable(result, declaration);
result.getItemVariables().add(variable);
}
- for (TemplateDeclaration declaration : getItem(false).getTemplateDeclarations())
+ for (TemplateDeclaration declaration : ai.getTemplateDeclarations())
{
TemplateVariable variable = new TemplateVariable(result, declaration);
result.getItemVariables().add(variable);
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentSection.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentSection.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentSection.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -36,20 +36,15 @@
import java.io.DataInputStream;
import java.io.DataOutputStream;
-import java.io.File;
import java.util.List;
-import org.qtitools.qti.attribute.AttributeList;
import org.qtitools.qti.attribute.value.BooleanAttribute;
-import org.qtitools.qti.attribute.value.IdentifierAttribute;
import org.qtitools.qti.attribute.value.StringAttribute;
-import org.qtitools.qti.group.NodeGroupList;
import org.qtitools.qti.group.test.OrderingGroup;
import org.qtitools.qti.group.test.RubricBlockGroup;
import org.qtitools.qti.group.test.SectionPartGroup;
import org.qtitools.qti.group.test.SelectionGroup;
import org.qtitools.qti.node.content.variable.RubricBlock;
-import org.w3c.dom.Node;
/**
* Sections group together individual item references and/or sub-sections.
@@ -74,8 +69,6 @@
public static final String ATTR_KEEP_TOGETHER_NAME = "keepTogether";
/** Default value of keepTogether attribute. */
public static final boolean ATTR_KEEP_TOGETHER_DEFAULT_VALUE = true;
-
- boolean cleared = false;
/**
* Constructs section.
@@ -207,114 +200,6 @@
return getNodeGroups().getOrderingGroup().getOrdering();
}
- private AssessmentSection getRealAssessmentSection()
- {
- File assessmentSectionFile = getAssessmentSectionFile();
- if (assessmentSectionFile.exists())
- {
- AssessmentSection temp = new AssessmentSection(this.getParent());
- temp.load(assessmentSectionFile, false);
- return temp;
- }
- return null;
- }
-
- private File getAssessmentSectionFile()
- {
- if (this.getIdentifier() != null && this.getParentTest() != null && this.getParentTest().getSourceFile() != null && this.getParentTest().getSourceFile().exists())
- {
- //System.out.println("Got section file - " + this.getIdentifier());
- File realAssessmentSection = new File(this.getParentTest().getSourceFile().getAbsolutePath().substring(0, this.getParentTest().getSourceFile().getAbsolutePath().lastIndexOf(File.separator)) + File.separator + "InnerFiles" + File.separator + this.getIdentifier() + ".xml");
- return realAssessmentSection;
- }
- return new File("/definitely/does/not/exist/");
- }
-
- private boolean assessmentSectionFileExists()
- {
- return getAssessmentSectionFile().exists();
- }
-
-
- public void load(File sourceFile, boolean clear)
- {
- this.setSourceFile(sourceFile);
-
- load(getNode(sourceFile),clear);
- }
-
- @Override
- public void load(File sourceFile)
- {
- this.load(sourceFile, true);
- }
-
- public void load(Node sourceNode, boolean clear)
- {
- super.load(sourceNode);
-
-// IdentifierAttribute ident = ((IdentifierAttribute)super.getAttributes().get(true,ATTR_IDENTIFIER_NAME));
-// if (ident == null) this.id = null;
-// else this.id = ident.valueToString();
-
- if (clear && this.assessmentSectionFileExists())
- {
- //super.getNodeGroups().clear();
- //super.getNodeGroups().clearAndNullify();
- //super.getAttributes().clearAndNullify();
- //super.getAttributes().add(id);
- this.cleared=true;
- }
-
- }
-
- @Override
- public void load(Node sourceNode)
- {
- this.load(sourceNode, true);
- }
-
- @Override
- public NodeGroupList getNodeGroups()
- {
- if (this.cleared)
- {
- AssessmentSection realSection = this.getRealAssessmentSection();
- if (realSection != null) return realSection.getSuperNodeGroups();
- }
- return super.getNodeGroups();
- }
-
-
- @Override
- public AttributeList getAttributes()
- {
- AssessmentSection realSection = this.getRealAssessmentSection();
- if (realSection == null) return super.getAttributes();
- return realSection.getSuperAttributes();
- }
-
- public NodeGroupList getSuperNodeGroups()
- {
- return super.getNodeGroups();
- }
-
-
- public AttributeList getSuperAttributes()
- {
- return super.getAttributes();
- }
-
- @Override
- public String getIdentifier() {
- IdentifierAttribute id = ((IdentifierAttribute)super.getAttributes().get(true,ATTR_IDENTIFIER_NAME));
- if(id == null)
- return null;
- else
- return id.getValue();
- //return this.id;
- }
-
/**
* Sets new ordering child.
*
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentTest.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentTest.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/AssessmentTest.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -487,13 +487,18 @@
public AssessmentResult getAssessmentResult()
{
AssessmentResult result = new AssessmentResult();
-
result.setTestResult(getTestResult(result));
-
List<AssessmentItemRef> itemRefs = lookupItemRefs(null);
int sequenceIndex = 1;
+ //long a,b;
+ //a=System.currentTimeMillis();
for (AssessmentItemRef itemRef : itemRefs)
+ {
result.getItemResults().addAll(itemRef.getItemResult(result, sequenceIndex++, null));
+// b=System.currentTimeMillis();
+// if (b-a > 100) System.out.println(" == Done " + sequenceIndex + " ("+ itemRef.getIdentifier() + ") : " + (b-a));
+// a=b;
+ }
return result;
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/TimeRecord.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/TimeRecord.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/TimeRecord.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -41,6 +41,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.qtitools.qti.JQTISerializer;
import org.qtitools.qti.exception.QTIEvaluationException;
import org.qtitools.qti.node.item.ItemTimeRecord;
@@ -154,8 +155,12 @@
public long getTotal()
{
long last = 0;
- if (entered.size() == (exited.size() + 1))
- last = parent.getParentTest().getTimer().getCurrentTime() - getLastEntered();
+ //Don't add the time if it's entered but not exited. Since we no longer write the report
+ //after every request in lifeguide, you get the half an hour (or whatever) between the
+ //user finishing and the session writing added to the duration if you do this.
+
+ //if (entered.size() == (exited.size() + 1))
+ // last = parent.getParentTest().getTimer().getCurrentTime() - getLastEntered();
return total + last;
}
@@ -293,39 +298,43 @@
public static TimeRecord readTimeRecord(DataInputStream dis)
{
//AssessmentItemRef parent = (AssessmentItemRef)AbstractNode.readBinary(dis, parent);
- TimeRecord tr = new TimeRecord();
- try {
- int enteredSize = dis.readInt();
- for (int i=0; i< enteredSize; i++)
- {
- tr.entered.add(dis.readLong());
+ if (JQTISerializer.readString(dis).equals("__notNullTimeRecord"))
+ {
+ TimeRecord tr = new TimeRecord();
+ try {
+ int enteredSize = dis.readInt();
+ for (int i=0; i< enteredSize; i++)
+ {
+ tr.entered.add(dis.readLong());
+ }
+
+ int exitedSize = dis.readInt();
+ for (int i=0; i< exitedSize; i++)
+ {
+ tr.exited.add(dis.readLong());
+ }
+
+ int submittedSize = dis.readInt();
+ for (int i=0; i< submittedSize; i++)
+ {
+ tr.submitted.add(dis.readLong());
+ }
+
+ tr.skipped = dis.readLong();
+ if (tr.skipped == -1) tr.skipped = null;
+
+ tr.timedOut = dis.readLong();
+ if (tr.timedOut == -1) tr.timedOut = null;
+
+ tr.total = dis.readLong();
+ tr.duration = dis.readLong();
+ tr.increaseDuration = dis.readBoolean();
+
+ } catch (IOException e) {
+ throw new QTIEvaluationException(e);
}
-
- int exitedSize = dis.readInt();
- for (int i=0; i< exitedSize; i++)
- {
- tr.exited.add(dis.readLong());
- }
-
- int submittedSize = dis.readInt();
- for (int i=0; i< submittedSize; i++)
- {
- tr.submitted.add(dis.readLong());
- }
-
- tr.skipped = dis.readLong();
- if (tr.skipped == -1) tr.skipped = null;
-
- tr.timedOut = dis.readLong();
- if (tr.timedOut == -1) tr.timedOut = null;
-
- tr.total = dis.readLong();
- tr.duration = dis.readLong();
- tr.increaseDuration = dis.readBoolean();
-
- } catch (IOException e) {
- throw new QTIEvaluationException(e);
+ return tr;
}
- return tr;
+ else return null;
}
}
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/flow/DefaultItemFlow.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/flow/DefaultItemFlow.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/node/test/flow/DefaultItemFlow.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -105,6 +105,7 @@
if (currentIndex >= 0)
{
currentItem = this.itemRefOrder.get(currentIndex);
+ if (currentItem.getIdentifier().equals(nextItem.getIdentifier())) return nextItem;
}
else
{
Modified: branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/value/FloatValue.java
===================================================================
--- branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/value/FloatValue.java 2010-04-14 17:35:29 UTC (rev 2456)
+++ branches/lifeguide/JQTI/src/main/java/org/qtitools/qti/value/FloatValue.java 2010-10-04 13:22:19 UTC (rev 2457)
@@ -123,7 +123,8 @@
@Override
public String toString()
- {
+ {
+ if (doubleValue - Math.floor(doubleValue) < 0.00001) return "" + ((int)doubleValue);
return Double.toString(doubleValue);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bar...@us...> - 2010-04-14 17:35:36
|
Revision: 2456
http://qtitools.svn.sourceforge.net/qtitools/?rev=2456&view=rev
Author: bartnagel
Date: 2010-04-14 17:35:29 +0000 (Wed, 14 Apr 2010)
Log Message:
-----------
set default serverURL strings
Modified Paths:
--------------
trunk/projects/QTIEngine/grails-app/conf/Config.groovy
trunk/projects/QTIEngine/grails-app/controllers/RestController.groovy
trunk/projects/QTIEngine/grails-app/services/RestService.groovy
Modified: trunk/projects/QTIEngine/grails-app/conf/Config.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/conf/Config.groovy 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/QTIEngine/grails-app/conf/Config.groovy 2010-04-14 17:35:29 UTC (rev 2456)
@@ -35,8 +35,11 @@
// set per-environment serverURL stem for creating absolute links
environments {
production {
- grails.serverURL = "http://www.changeme.com"
+ grails.serverURL = "http://qtiengine.qtitools.org"
}
+ development {
+ grails.serverURL = "http://localhost:8080"
+ }
}
// log4j configuration
Modified: trunk/projects/QTIEngine/grails-app/controllers/RestController.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/controllers/RestController.groovy 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/QTIEngine/grails-app/controllers/RestController.groovy 2010-04-14 17:35:29 UTC (rev 2456)
@@ -218,7 +218,7 @@
Map itemParams = new HashMap();
itemParams.put("showInternalState", true);
itemParams.put("displayTitle", true);
- itemParams.put("appletCodebase", grailsApplication.config.server.url.toString()+"/applets");
+ itemParams.put("appletCodebase", grailsApplication.config.grails.serverURL.toString()+"/applets");
if (validation) itemParams.put("validation", validation)
Map assessmentParams = new HashMap();
Modified: trunk/projects/QTIEngine/grails-app/services/RestService.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/services/RestService.groovy 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/QTIEngine/grails-app/services/RestService.groovy 2010-04-14 17:35:29 UTC (rev 2456)
@@ -86,12 +86,12 @@
//change script src
xml.head.script.each {
- it.@src = it...@sr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.server.url.toString())
+ it.@src = it...@sr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.grails.serverURL.toString())
}
//change link href
xml.head.link.each {
- it.@href = it...@hr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.server.url.toString())
+ it.@href = it...@hr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.grails.serverURL.toString())
}
//We may also need javascript later
@@ -126,7 +126,7 @@
{
xml.body.'**'.findAll{it.name() == "img"}.each {
println "img"
- it.@sr...@sr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.server.url.toString())
+ it.@sr...@sr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.grails.serverURL.toString())
}
}
@@ -138,10 +138,10 @@
//change java applet codedbase
xml.body.'**'.findAll{it.name() == "applet"}.each{ applet->
- applet.@codebase = ap...@co...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.server.url.toString())
+ applet.@codebase = ap...@co...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.grails.serverURL.toString())
applet.'**'.findAll{it.name() == "param"}.each{ param->
//replace .. with server url, this might now be correct in some cases
- param.@value = pa...@va...().replaceAll("\\.\\.", grailsApplication.config.server.url.toString())
+ param.@value = pa...@va...().replaceAll("\\.\\.", grailsApplication.config.grails.serverURL.toString())
}
}
return xml
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lo...@us...> - 2010-04-13 13:33:33
|
Revision: 2456
http://qtitools.svn.sourceforge.net/qtitools/?rev=2456&view=rev
Author: loccy
Date: 2010-04-13 13:33:27 +0000 (Tue, 13 Apr 2010)
Log Message:
-----------
Validatr: MQ-specific alterations for Validatr added.
Modified Paths:
--------------
trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributePanel.java
trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributeTable.java
trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/SourcePanel.java
trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/TreePanel.java
Modified: trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributePanel.java
===================================================================
--- trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributePanel.java 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributePanel.java 2010-04-13 13:33:27 UTC (rev 2456)
@@ -35,6 +35,7 @@
package org.qtitools.validatr.panel;
import java.awt.BorderLayout;
+import java.io.StringWriter;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
@@ -44,8 +45,15 @@
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
import org.qtitools.qti.attribute.Attribute;
+import org.qtitools.qti.node.XmlNode;
import org.qtitools.validatr.model.AssessmentDocument;
import org.qtitools.validatr.model.AssessmentDocumentAdapter;
import org.qtitools.validatr.model.AssessmentDocumentEvent;
@@ -54,6 +62,7 @@
import org.qtitools.validatr.settings.Settings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.w3c.dom.Node;
/**
* This panel handles attributes.
@@ -184,8 +193,11 @@
if (row != -1)
{
String attrName = (String) table.getModel().getValueAt(row, AttributeTable.COLUMN_NAME_INDEX);
- Attribute attribute = getSelectedDocument().getSelectedNode().getAttributes().get(attrName);
- getSelectedDocument().setSelectedAttribute(this, attribute);
+ if (!attrName.equals("*value*"))
+ {
+ Attribute attribute = getSelectedDocument().getSelectedNode().getAttributes().get(attrName);
+ getSelectedDocument().setSelectedAttribute(this, attribute);
+ }
}
}
@@ -194,10 +206,50 @@
String attrName = (String) model.getValueAt(row, AttributeTable.COLUMN_NAME_INDEX);
String attrValue = (String) model.getValueAt(row, AttributeTable.COLUMN_VALUE_INDEX);
+
try
{
- if (attrValue != null)
+ // it's not really a real attribute - it's a fake one representing the text value of the
+ // node
+ if (attrName.equals("*value*"))
{
+ XmlNode currentNode = getSelectedDocument().getSelectedNode();
+ Node realNode = currentNode.getSourceNode();
+
+
+ // empty node - no existing text, no attributes
+ if (realNode == null)
+ {
+ getSelectedDocument().loadNode(AttributePanel.this, currentNode, "<baseValue>"+attrValue+"</baseValue>");
+ }
+ else // not empty node
+ {
+ realNode.setTextContent(attrValue);
+ // there has to be a less convoluted way of doing this. Hey ho.
+
+
+ // turn realNode into an XML string
+ StringWriter sw = new StringWriter();
+ try {
+ Transformer t = TransformerFactory.newInstance().newTransformer();
+ t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ t.transform(new DOMSource(realNode), new StreamResult(sw));
+ } catch (TransformerException te) {
+ // should never happen
+ }
+ String finalXml = sw.toString();
+
+
+ // we end up with the bloody QTI namespace in our XML fragment, so strip it
+ finalXml = finalXml.replace(" xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\"","");
+
+
+ // and finally we can load the node with the new XML value. Whew.
+ getSelectedDocument().loadNode(AttributePanel.this, currentNode, finalXml);
+ }
+ }
+ else if (attrValue != null)
+ {
Attribute attribute = getSelectedDocument().getSelectedNode().getAttributes().get(attrName);
getSelectedDocument().loadAttribute(AttributePanel.this, attribute, attrValue);
@@ -214,4 +266,4 @@
JOptionPane.showMessageDialog(AttributePanel.this, message, "Error", JOptionPane.ERROR_MESSAGE);
}
}
-}
+}
\ No newline at end of file
Modified: trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributeTable.java
===================================================================
--- trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributeTable.java 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributeTable.java 2010-04-13 13:33:27 UTC (rev 2456)
@@ -218,18 +218,30 @@
SingleEnumAttributeEditor editor = new SingleEnumAttributeEditor((EnumerateAttribute) attribute);
editors.put(i, editor);
// Different height for all rows. Looks ugly.
-// setRowHeight(i, editor.getComponent().getPreferredSize().height);
+ // setRowHeight(i, editor.getComponent().getPreferredSize().height);
// Same height for all rows. Looks even more ugly.
-// int height = getRowHeight();
-// int newHeight = editor.getComponent().getPreferredSize().height;
-// if (newHeight > height)
-// setRowHeight(newHeight);
+ // int height = getRowHeight();
+ // int newHeight = editor.getComponent().getPreferredSize().height;
+ // if (newHeight > height)
+ // setRowHeight(newHeight);
}
if (document.getSelectedAttribute() == attribute)
getSelectionModel().setSelectionInterval(i, i);
}
+ if (!actualNode.hasChildNodes())
+ {
+ String value = "";
+ try
+ {
+ value = actualNode.getSourceNode().getTextContent();
+ } catch (NullPointerException e)
+ {
+ // do nothing - we know
+ }
+ model.addRow(new Object[] {null, "*value*",value, false});
+ }
}
}
Modified: trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/SourcePanel.java
===================================================================
--- trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/SourcePanel.java 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/SourcePanel.java 2010-04-13 13:33:27 UTC (rev 2456)
@@ -151,7 +151,17 @@
{
try
{
- getSelectedDocument().loadNode(SourcePanel.this, sourceEditor.getActualNode(), sourceEditor.getText());
+ String changeValue = sourceEditor.getText();
+ if (changeValue.contains("baseValue baseType=\"string\""))
+ {
+ changeValue = changeValue.replace("baseValue baseType=\"string\">","baseValue baseType=\"string\"><![CDATA[");
+ changeValue = changeValue.replace("</baseValue>","]]></baseValue>");
+
+ //changeValue = "<![CDATA["+changeValue+"]]>";
+ }
+ System.out.println(changeValue);
+ getSelectedDocument().loadNode(SourcePanel.this, sourceEditor.getActualNode(), /* sourceEditor.getText() */ changeValue);
+ //System.out.println(changeValue);
}
catch (Throwable ex)
{
Modified: trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/TreePanel.java
===================================================================
--- trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/TreePanel.java 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/TreePanel.java 2010-04-13 13:33:27 UTC (rev 2456)
@@ -180,9 +180,20 @@
NodeGroup group = parentXmlNode.getNodeGroups().get(i);
for (XmlNode childXmlNode : group.getChildren())
{
- XmlTreeNode childTreeNode = new XmlTreeNode(childXmlNode);
- parentTreeNode.add(childTreeNode);
- updateTreeNode(childTreeNode);
+ // MQ-specific tweak - for the purposes of MQ, we're only interested in
+ // template processing and response processing. Anything else would
+ // just be noise.
+
+ if ((childXmlNode.getFullName().contains("templateProcessing")) ||
+ (childXmlNode.getFullName().contains("responseProcessing")))
+
+ // uncomment below and comment out above two IF lines for original Validatr behaviour
+ //if (true)
+ {
+ XmlTreeNode childTreeNode = new XmlTreeNode(childXmlNode);
+ parentTreeNode.add(childTreeNode);
+ updateTreeNode(childTreeNode);
+ }
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-13 10:18:05
|
Revision: 2455
http://qtitools.svn.sourceforge.net/qtitools/?rev=2455&view=rev
Author: davemckain
Date: 2010-04-13 10:17:59 +0000 (Tue, 13 Apr 2010)
Log Message:
-----------
Mathqurate now links to the fetlar repo
Added Paths:
-----------
Mathqurate/README.txt
Removed Paths:
-------------
Mathqurate/branches/
Mathqurate/tags/
Mathqurate/trunk/
Added: Mathqurate/README.txt
===================================================================
--- Mathqurate/README.txt (rev 0)
+++ Mathqurate/README.txt 2010-04-13 10:17:59 UTC (rev 2455)
@@ -0,0 +1,3 @@
+Mathqurate can now be found at:
+
+https://fetlar.svn.sourceforge.net/svnroot/fetlar/Mathqurate
Property changes on: Mathqurate/README.txt
___________________________________________________________________
Added: svn:keywords
+ Id Date Revision Author
Added: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-13 10:16:56
|
Revision: 2454
http://qtitools.svn.sourceforge.net/qtitools/?rev=2454&view=rev
Author: davemckain
Date: 2010-04-13 10:16:50 +0000 (Tue, 13 Apr 2010)
Log Message:
-----------
Forgot to remove these in rev 2451!
Revision Links:
--------------
http://qtitools.svn.sourceforge.net/qtitools/?rev=2451&view=rev
Removed Paths:
-------------
MathAssessTools/branches/
MathAssessTools/tags/
MathAssessTools/trunk/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-13 09:49:44
|
Revision: 2453
http://qtitools.svn.sourceforge.net/qtitools/?rev=2453&view=rev
Author: davemckain
Date: 2010-04-13 09:49:38 +0000 (Tue, 13 Apr 2010)
Log Message:
-----------
JAssess has been moved to the fetlar repo
Added Paths:
-----------
JAssess/README.txt
Removed Paths:
-------------
JAssess/Desktop/
JAssess/QTIV2demo/
JAssess/XMLtestsite/
Added: JAssess/README.txt
===================================================================
--- JAssess/README.txt (rev 0)
+++ JAssess/README.txt 2010-04-13 09:49:38 UTC (rev 2453)
@@ -0,0 +1,3 @@
+JAssess can now be found at:
+
+https://fetlar.svn.sourceforge.net/svnroot/fetlar/JAssess
Property changes on: JAssess/README.txt
___________________________________________________________________
Added: svn:keywords
+ Id Date Revision Author
Added: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-12 16:38:22
|
Revision: 2452
http://qtitools.svn.sourceforge.net/qtitools/?rev=2452&view=rev
Author: davemckain
Date: 2010-04-12 16:38:15 +0000 (Mon, 12 Apr 2010)
Log Message:
-----------
Added links to FETLAR repo for our forks of QTIEngine, qtiplayr and JQTI
Added Paths:
-----------
branches/mathassess/JQTI/README.txt
branches/mathassess/QTIEngine/README.txt
branches/mathassess/qtiplayr/README.txt
Removed Paths:
-------------
branches/mathassess/JQTI/AUTHORS
branches/mathassess/JQTI/COPYING
branches/mathassess/JQTI/README
branches/mathassess/JQTI/docs/
branches/mathassess/JQTI/pom.xml
branches/mathassess/JQTI/src/
branches/mathassess/QTIEngine/.classpath
branches/mathassess/QTIEngine/.project
branches/mathassess/QTIEngine/.settings/
branches/mathassess/QTIEngine/application.properties
branches/mathassess/QTIEngine/grails-app/
branches/mathassess/QTIEngine/plugins/
branches/mathassess/QTIEngine/scripts/
branches/mathassess/QTIEngine/src/
branches/mathassess/QTIEngine/test/
branches/mathassess/QTIEngine/web-app/
branches/mathassess/qtiplayr/AUTHORS
branches/mathassess/qtiplayr/COPYING
branches/mathassess/qtiplayr/MathAssessEngine-support/
branches/mathassess/qtiplayr/README.txt
branches/mathassess/qtiplayr/config.html
branches/mathassess/qtiplayr/db/
branches/mathassess/qtiplayr/detail.inc.php
branches/mathassess/qtiplayr/download.php
branches/mathassess/qtiplayr/http.inc
branches/mathassess/qtiplayr/icon.gif
branches/mathassess/qtiplayr/index.php
branches/mathassess/qtiplayr/lang/
branches/mathassess/qtiplayr/lib.php
branches/mathassess/qtiplayr/media.php
branches/mathassess/qtiplayr/mod_form.php
branches/mathassess/qtiplayr/playr.inc.php
branches/mathassess/qtiplayr/playrlib.inc.php
branches/mathassess/qtiplayr/report.inc.php
branches/mathassess/qtiplayr/reports.inc.php
branches/mathassess/qtiplayr/showattempts.inc.php
branches/mathassess/qtiplayr/testresource.php
branches/mathassess/qtiplayr/version.php
branches/mathassess/qtiplayr/view.php
branches/mathassess/qtiplayr/viewlib.php
branches/mathassess/qtiplayr/xsl/
Deleted: branches/mathassess/JQTI/AUTHORS
===================================================================
--- branches/mathassess/JQTI/AUTHORS 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/JQTI/AUTHORS 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,6 +0,0 @@
-JQTI authors:
-
-Jiri Kajaba <jk...@ec...>
-Jonathon Hare <js...@ec...>
-
-Funded by JISC -- http://www.jisc.ac.uk
Deleted: branches/mathassess/JQTI/COPYING
===================================================================
--- branches/mathassess/JQTI/COPYING 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/JQTI/COPYING 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,27 +0,0 @@
-Copyright (c) 2008, University of Southampton
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- * Neither the name of the University of Southampton nor the names of its
- contributors may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Deleted: branches/mathassess/JQTI/README
===================================================================
Added: branches/mathassess/JQTI/README.txt
===================================================================
--- branches/mathassess/JQTI/README.txt (rev 0)
+++ branches/mathassess/JQTI/README.txt 2010-04-12 16:38:15 UTC (rev 2452)
@@ -0,0 +1,3 @@
+This can now be found at:
+
+https://fetlar.svn.sourceforge.net/svnroot/fetlar/JQTI-MathAssess
Deleted: branches/mathassess/JQTI/pom.xml
===================================================================
--- branches/mathassess/JQTI/pom.xml 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/JQTI/pom.xml 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,142 +0,0 @@
-<!--
-<LICENCE>
-
-Copyright (c) 2008, University of Southampton
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- * Neither the name of the University of Southampton nor the names of its
- contributors may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-</LICENCE>
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-<!--
- <parent>
- <artifactId>QTItools</artifactId>
- <groupId>org.qtitools</groupId>
- <version>1.0-SNAPSHOT</version>
- </parent>
--->
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.qtitools.qti</groupId>
- <artifactId>JQTI-MathAssess</artifactId>
- <packaging>jar</packaging>
- <version>2.0</version>
- <name>JQTI</name>
- <url>http://qtitools.org</url>
- <description>
- This is a minor fork of the trunk JQTI, which is available at:
- https://qtitools.svn.sourceforge.net/svnroot/qtitools/trunk/projects/JQTI
- This was branched at revision 2241.
- </description>
- <dependencies>
- <!-- (Added by DM to fix problems with decoding XML before parsing) -->
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- <version>2.0.1</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.5.11</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.5.11</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.3.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <distributionManagement>
- <!-- (This is for the MathAssess fork only) -->
- <repository>
- <id>www2.ph.ed.ac.uk</id>
- <url>file:///Disk/lust3/maven2</url>
- </repository>
- <snapshotRepository>
- <id>www2.ph.ed.ac.uk</id>
- <url>file:///Disk/lust3/maven2</url>
- </snapshotRepository>
- </distributionManagement>
- <!-- (This is for trunk deployments only) -->
- <!--
- <distributionManagement>
- <repository>
- <id>qtitools</id>
- <name>QTITools Repository</name>
- <url>http://maven.qtitools.org</url>
- </repository>
- </distributionManagement>
- -->
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.3</version>
- </plugin>
- </plugins>
- </build>
- <reporting>
- <plugins>
- <!--
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <doclet>com.sun.tools.doclets.doccheck.DocCheck</doclet>
- <docletArtifact>
- <groupId>com.sun.tools.doclets</groupId>
- <artifactId>doccheck</artifactId>
- <version>1.2b2</version>
- </docletArtifact>
- <additionalparam>-d .</additionalparam>
- <destDir>doccheck</destDir>
- </configuration>
- </plugin>
- -->
- </plugins>
- </reporting>
-</project>
Deleted: branches/mathassess/QTIEngine/.classpath
===================================================================
--- branches/mathassess/QTIEngine/.classpath 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/QTIEngine/.classpath 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/java"/>
- <classpathentry kind="src" path="src/groovy"/>
- <classpathentry kind="src" path="grails-app/conf"/>
- <classpathentry kind="src" path="grails-app/controllers"/>
- <classpathentry kind="src" path="grails-app/domain"/>
- <classpathentry kind="src" path="grails-app/services"/>
- <classpathentry kind="src" path="grails-app/taglib"/>
- <classpathentry kind="src" path="test/integration"/>
- <classpathentry kind="src" path="test/unit"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="com.springsource.sts.grails.core.CLASSPATH_CONTAINER"/>
- <classpathentry kind="output" path="web-app/WEB-INF/classes"/>
-</classpath>
Deleted: branches/mathassess/QTIEngine/.project
===================================================================
--- branches/mathassess/QTIEngine/.project 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/QTIEngine/.project 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>MathAssessEngine</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>com.springsource.sts.grails.core.nature</nature>
- <nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
Added: branches/mathassess/QTIEngine/README.txt
===================================================================
--- branches/mathassess/QTIEngine/README.txt (rev 0)
+++ branches/mathassess/QTIEngine/README.txt 2010-04-12 16:38:15 UTC (rev 2452)
@@ -0,0 +1,3 @@
+This can now be found at:
+
+https://fetlar.svn.sourceforge.net/svnroot/fetlar/MathAssessEngine
Deleted: branches/mathassess/QTIEngine/application.properties
===================================================================
--- branches/mathassess/QTIEngine/application.properties 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/QTIEngine/application.properties 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,8 +0,0 @@
-#Grails Metadata file
-#Thu Apr 08 14:51:51 BST 2010
-app.grails.version=1.2.2
-app.name=MathAssessEngine
-app.servlet.version=2.4
-app.version=0.4.0
-plugins.hibernate=1.2.2
-plugins.tomcat=1.2.2
Deleted: branches/mathassess/qtiplayr/AUTHORS
===================================================================
--- branches/mathassess/qtiplayr/AUTHORS 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/qtiplayr/AUTHORS 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,5 +0,0 @@
-moodle-qtiplayr-plugin authors:
-
-Jonathon Hare <js...@ec...>
-
-Funded by JISC -- http://www.jisc.ac.uk
Deleted: branches/mathassess/qtiplayr/COPYING
===================================================================
--- branches/mathassess/qtiplayr/COPYING 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/qtiplayr/COPYING 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,27 +0,0 @@
-Copyright (c) 2008, University of Southampton
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- * Neither the name of the University of Southampton nor the names of its
- contributors may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Deleted: branches/mathassess/qtiplayr/README.txt
===================================================================
--- branches/mathassess/qtiplayr/README.txt 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/qtiplayr/README.txt 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,46 +0,0 @@
-QTIEngine Playr Plugin for Moodle
----------------------------------
-
-Installation:
--------------
-
-Move the "qtiplayr" folder to the "mod" folder of your Moodle installation. In your Web browser, log in as a user with administrator privileges and click "Notifications" in the left-hand menu. The plugin should install automatically, setting up all necessary database tables. Click "Continue" at the bottom of the page to be returned to the Moodle main page.
-
-Configuration:
---------------
-
-While logged in as an administrator, click Modules->Activities->qtiplayr from the left-hand "Site Administration" menu. On the "qtiplayr" configuration page, enter the following details:
- - the hostname and network port used to access your qtiengine playr
- - the hostname of the server containing your minibix installation
- - the server address used to define "deposit" keys in the minibix repository
- - the playr template name (this will typically be left as "moodle")
-
-Once these details have been entered, click "Save Changes" to return to the main page.
-
-Adding QTIPlayr to a Course:
-----------------------------
-
-Navigate to the required course "Weekly Outline" page, and choose "qtiplayr" from the "Add an activity..." drop-down box. The setup page is formed of 4 sections:
-
-- General:
- This section includes the assessment activity name, and some basic scheduling information (when the test first becomes accessible, when it expires, and how many attempts each student can make). In addition, there is the option to give students access to a limited report for each attempt they make.
-- Content Package:
- There are two options for choosing a content package: either by uploading a file from your local machine to moodle, or by choosing one from the minibix repository configured earlier. If a file is uploaded to moodle, it will be used. If the box is left blank, the file from the minibix drop-down list will be used instead.
-- Gradebook Options:
- Typically, the only values that might need to be changed are "Grade Type", "Maximum possible grade" and "Minimum possible grade".
-- Common Module Settings:
- These options are usually the same for all modules, and will probably not need to be changed.
-
-Click "Save and return to course" to go back to the "Weekly Outline" page, or "Save and display" to preview the activity.
-
-Running the Activity:
----------------------
-
-The run the activity, click on its name on the "Weekly Outline" page. As an instructor, the user can preview the assessment (completing an assessment this way does not add anything to the gradebook), and view question-by-question reports for every student who has attempted the activity.
-
-As a student, the user can attempt the test, storing a grade in the Moodle gradebook upon completion. In addition, a grade will be saved after each question, so if the user stops the assessment early, they will receive a grade based on the questions they did answer. If a student attempts to continue an assessment which they previously gave up on, the qtiengine will allow them to do so, providing their session on the server has not timed out. If the session has timed out, the student will be notified, and will have to use another attempt (if available) to start again. Also, if the instructor has allowed it, students can view a limited overall report for any attempts they have already made.
-
-Reviewing Students' Progress:
------------------------------
-
-In addition to the qtiengine reports, instructors can view the students' grades for each activity in the Moodle gradebook in the usual way.
\ No newline at end of file
Added: branches/mathassess/qtiplayr/README.txt
===================================================================
--- branches/mathassess/qtiplayr/README.txt (rev 0)
+++ branches/mathassess/qtiplayr/README.txt 2010-04-12 16:38:15 UTC (rev 2452)
@@ -0,0 +1,3 @@
+This can now be found at:
+
+https://fetlar.svn.sourceforge.net/svnroot/fetlar/qtiplayr
Deleted: branches/mathassess/qtiplayr/config.html
===================================================================
--- branches/mathassess/qtiplayr/config.html 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/qtiplayr/config.html 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,30 +0,0 @@
-<form method="post" action="module.php" id="form">
-<div style="text-align: center">
-<input type="hidden" name="sesskey" value="<?php echo sesskey(); ?>" />
-
-Please enter the hostname and port number of the playr webservice api below: <br />
-
-http://<input type="text" name="qtiplayr_hostname" value="<?php p($CFG->qtiplayr_hostname ? $CFG->qtiplayr_hostname : 'playr.qtitools.org') ?>" />
-:<input type="text" name="qtiplayr_hostport" size="5" value="<?php p($CFG->qtiplayr_hostport ? $CFG->qtiplayr_hostport : '80') ?>" /><br />
-<br />
-<?php
-//if (!class_exists('DOMDocument') || !class_exists('XSLTProcessor')) {
- echo '<br />';
- echo '<em>The PHP5 DOMDocument and/or XSLTProcessor classes could not be found. Reports will be disabled unless you allow client-side XSLT for reports by checking the following check box. Note: this option is insecure because it could allow candidates to view the raw XML report rather than the transformed version.</em><br />';
- echo '<label for="qtiplayr_allowclientsidexslt">Allow client-side XSLT</label>';
- echo '<input type="checkbox" name="qtiplayr_allowclientsidexslt" size="5" value="false" /><br />';
- echo '</emph><br /><br />';
-//}
-?>
-<br />
-Enter the hostname of the server containing your minibix installation (e.g. qtitools.caret.cam.ac.uk): <br />
-<input type="text" size="50" name="minibix_hostname" value="<?php p($CFG->minibix_hostname ? $CFG->minibix_hostname : '') ?>" /> <br />
-Enter the server address used to define "deposit" keys in the Minibix repository (e.g. www.caret.cam.ac.uk): <br />
-<input type="text" size="50" name="minibix_xpath" value="<?php p($CFG->minibix_xpath ? $CFG->minibix_xpath : '') ?>" />
-<p />
-<label for="qtiplayr_template">playr template name:</label><input type="text" name="qtiplayr_template" value="<?php p($CFG->qtiplayr_template ? $CFG->qtiplayr_template : 'moodle') ?>" />
-<br />
-<br />
-<input type="submit" value="<?php print_string("savechanges") ?>" />
-</div>
-</form>
Deleted: branches/mathassess/qtiplayr/detail.inc.php
===================================================================
--- branches/mathassess/qtiplayr/detail.inc.php 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/qtiplayr/detail.inc.php 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,77 +0,0 @@
-<?php
-
- //
- require_once("../../config.php");
- require_once("lib.php");
-
- $id = optional_param('id', 0, PARAM_INT); // Course Module ID, or
- $a = optional_param('a', 0, PARAM_INT); // qtiplayr ID
-
- if ($id) {
- if (! $cm = get_record("course_modules", "id", $id)) {
- error("Course Module ID was incorrect");
- }
-
- if (! $course = get_record("course", "id", $cm->course)) {
- error("Course is misconfigured");
- }
-
- if (! $qtiplayr = get_record("qtiplayr", "id", $cm->instance)) {
- error("Course module is incorrect");
- }
-
- } else {
- if (! $qtiplayr = get_record("qtiplayr", "id", $a)) {
- error("Course module is incorrect");
- }
- if (! $course = get_record("course", "id", $qtiplayr->course)) {
- error("Course is misconfigured");
- }
- if (! $cm = get_coursemodule_from_instance("qtiplayr", $qtiplayr->id, $course->id)) {
- error("Course Module ID was incorrect");
- }
- }
-
- require_login($course->id);
- if (!$id) $id = $cm->id;
-
- $context = get_context_instance(CONTEXT_MODULE, $cm->id);
- //
-
-require_capability('mod/qtiplayr:allreports', $context);
-
-$assessment = get_record('qtiplayr_assessment_attempts', 'id', $_REQUEST['detail']);
-$c = get_record('user', 'id', $assessment->userid);
-$xml = $assessment->report;
-
-echo "<a href=\"view.php?showattempts=$assessment->userid&id=$id\">Back to the attempts list</a><br />";
-
-echo "<br />\n";
-echo "Candidate name: $c->firstname $c->lastname <br />\n";
-echo "Attempt number:". (intval($assessment->attempt)+1)." <br />\n";
-
-if (class_exists('DOMDocument') && class_exists('XSLTProcessor')) {
- $xsl_filename = "xsl/full_report.xsl";
-
- $doc = new DOMDocument();
- $xsl = new XSLTProcessor();
-
- $doc->load($xsl_filename);
- $xsl->importStyleSheet($doc);
-
- $doc->loadXML($xml);
- echo $xsl->transformToXML($doc);
-} else {
- //do the xslt client side (perhaps make it optional, as it is a security risk in that the xml doc might contain things that you don't want made public)
-/* if ($CFG->qtiplayr_allowclientsidexslt) {
- echo '<?xml version="1.0" encoding="UTF-8"?>';
- echo '<?xml-stylesheet type="text/xsl" href="xsl/full_report.xsl"?>';
- echo $xml;
- } else {
-*/ ?>
- Configuration error: no php xslt class found and client-side xslt is disabled
- <?php
-// }
-
-}
-?>
\ No newline at end of file
Deleted: branches/mathassess/qtiplayr/download.php
===================================================================
--- branches/mathassess/qtiplayr/download.php 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/qtiplayr/download.php 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,38 +0,0 @@
-<?php
- require_once("../../config.php");
- require_once("lib.php");
-
- $id = required_param('id', PARAM_INT); // Course Module ID, or
-
- if ($id) {
- if (! $cm = get_record("course_modules", "id", $id)) {
- error("Course Module ID was incorrect");
- }
-
- if (! $course = get_record("course", "id", $cm->course)) {
- error("Course is misconfigured");
- }
-
- if (! $qtiplayr = get_record("qtiplayr", "id", $cm->instance)) {
- error("Course module is incorrect");
- }
-
- }
- require_login($course->id);
-
- if (!$id) $id = $cm->id;
- $context = get_context_instance(CONTEXT_MODULE, $cm->id);
-
- require_capability('mod/qtiplayr:allreports', $context);
-
- $aid = required_param('aid', PARAM_INT); // assessment
-
- if (! $assessment = get_record("qtiplayr_assessment_attempts", "id", $aid)) {
- error("Assessment ID is incorrect");
- }
-
- header("Content-type: application/octet-stream");
- header("Content-Disposition: attachment; filename=\"$assessment->name_$assessment->id.xml\"");
- echo $assessment->report;
-
-?>
\ No newline at end of file
Deleted: branches/mathassess/qtiplayr/http.inc
===================================================================
--- branches/mathassess/qtiplayr/http.inc 2010-04-12 16:32:58 UTC (rev 2451)
+++ branches/mathassess/qtiplayr/http.inc 2010-04-12 16:38:15 UTC (rev 2452)
@@ -1,932 +0,0 @@
-<?php
-/**************************************************************************************************
-* Class: Advanced HTTP Client
-***************************************************************************************************
-* Version : 1.1
-* Released : 06-20-2002
-* Last Modified : 06-10-2003
-* Author : GuinuX <gu...@co...>
-*
-***************************************************************************************************
-* Changes
-***************************************************************************************************
-* 2003-06-10 : GuinuX
-* - Fixed a bug with multiple gets and basic auth
-* - Added support for Basic proxy Authentification
-* 2003-05-25: By Michael Mauch <mic...@gm...>
-* - Fixed two occurences of the former "status" member which is now deprecated
-* 2002-09-23: GuinuX
-* - Fixed a bug to the post method with some HTTP servers
-* - Thanx to l0rd jenci <lor...@bi...> for reporting this bug.
-* 2002-09-07: Dirk Fokken <fo...@cr...>
-* - Deleted trailing characters at the end of the file, right after the php closing tag, in order
-* to fix a bug with binary requests.
-* 2002-20-06: GuinuX, Major changes
-* - Turned to a more OOP style => added class http_header, http_response_header,
-* http_request_message, http_response_message.
-* The members : status, body, response_headers, cookies, _request_headers of the http class
-* are Deprecated.
-* 2002-19-06: GuinuX, fixed some bugs in the http::_get_response() method
-* 2002-18-06: By Mate Jovic <jo...@ma...>
-* - Added support for Basic Authentification
-* usage: $http_client = new http( HTTP_V11, false, Array('user','pass') );
-*
-***************************************************************************************************
-* Description:
-***************************************************************************************************
-* A HTTP client class
-* Supports :
-* - GET, HEAD and POST methods
-* - Http cookies
-* - multipart/form-data AND application/x-www-form-urlencoded
-* - Chunked Transfer-Encoding
-* - HTTP 1.0 and 1.1 protocols
-* - Keep-Alive Connections
-* - Proxy
-* - Basic WWW-Authentification and Proxy-Authentification
-*
-***************************************************************************************************
-* TODO :
-***************************************************************************************************
-* - Read trailing headers for Chunked Transfer-Encoding
-***************************************************************************************************
-* usage
-***************************************************************************************************
-* See example scripts.
-*
-***************************************************************************************************
-* License
-***************************************************************************************************
-* GNU Lesser General Public License (LGPL)
-* http://www.opensource.org/licenses/lgpl-license.html
-*
-* For any suggestions or bug report please contact me : gu...@co...
-***************************************************************************************************/
-
- if ( !defined('HTTP_CRLF') ) define( 'HTTP_CRLF', chr(13) . chr(10));
- define( 'HTTP_V10', '1.0');
- define( 'HTTP_V11', '1.1');
- define( 'HTTP_STATUS_CONTINUE', 100 );
- define( 'HTTP_STATUS_SWITCHING_PROTOCOLS', 101 );
- define( 'HTTP_STATUS_OK', 200 );
- define( 'HTTP_STATUS_CREATED', 201 );
- define( 'HTTP_STATUS_ACCEPTED', 202 );
- define( 'HTTP_STATUS_NON_AUTHORITATIVE', 203 );
- define( 'HTTP_STATUS_NO_CONTENT', 204 );
- define( 'HTTP_STATUS_RESET_CONTENT', 205 );
- define( 'HTTP_STATUS_PARTIAL_CONTENT', 206 );
- define( 'HTTP_STATUS_MULTIPLE_CHOICES', 300 );
- define( 'HTTP_STATUS_MOVED_PERMANENTLY', 301 );
- define( 'HTTP_STATUS_FOUND', 302 );
- define( 'HTTP_STATUS_SEE_OTHER', 303 );
- define( 'HTTP_STATUS_NOT_MODIFIED', 304 );
- define( 'HTTP_STATUS_USE_PROXY', 305 );
- define( 'HTTP_STATUS_TEMPORARY_REDIRECT', 307 );
- define( 'HTTP_STATUS_BAD_REQUEST', 400 );
- define( 'HTTP_STATUS_UNAUTHORIZED', 401 );
- define( 'HTTP_STATUS_FORBIDDEN', 403 );
- define( 'HTTP_STATUS_NOT_FOUND', 404 );
- define( 'HTTP_STATUS_METHOD_NOT_ALLOWED', 405 );
- define( 'HTTP_STATUS_NOT_ACCEPTABLE', 406 );
- define( 'HTTP_STATUS_PROXY_AUTH_REQUIRED', 407 );
- define( 'HTTP_STATUS_REQUEST_TIMEOUT', 408 );
- define( 'HTTP_STATUS_CONFLICT', 409 );
- define( 'HTTP_STATUS_GONE', 410 );
- define( 'HTTP_STATUS_REQUEST_TOO_LARGE', 413 );
- define( 'HTTP_STATUS_URI_TOO_LONG', 414 );
- define( 'HTTP_STATUS_SERVER_ERROR', 500 );
- define( 'HTTP_STATUS_NOT_IMPLEMENTED', 501 );
- define( 'HTTP_STATUS_BAD_GATEWAY', 502 );
- define( 'HTTP_STATUS_SERVICE_UNAVAILABLE', 503 );
- define( 'HTTP_STATUS_VERSION_NOT_SUPPORTED', 505 );
-
-
-/******************************************************************************************
-* class http_header
-******************************************************************************************/
- class http_header {
- var $_headers;
- var $_debug;
-
- function http_header() {
- $this->_headers = Array();
- $this->_debug = '';
- } // End Of function http_header()
-
- function get_header( $header_name ) {
- $header_name = $this->_format_header_name( $header_name );
- if (isset($this->_headers[$header_name]))
- return $this->_headers[$header_name];
- else
- return null;
- } // End of function get()
-
- function set_header( $header_name, $value ) {
- if ($value != '') {
- $header_name = $this->_format_header_name( $header_name );
- $this->_headers[$header_name] = $value;
- }
- } // End of function set()
-
- function reset() {
- if ( count( $this->_headers ) > 0 ) $this->_headers = array();
- $this->_debug .= "\n--------------- RESETED ---------------\n";
- } // End of function clear()
-
- function serialize_headers() {
- $str = '';
- foreach ( $this->_headers as $name=>$value) {
- $str .= "$name: $value" . HTTP_CRLF;
- }
- return $str;
- } // End of function serialize_headers()
-
- function _format_header_name( $header_name ) {
- $formatted = str_replace( '-', ' ', strtolower( $header_name ) );
- $formatted = ucwords( $formatted );
- $formatted = str_replace( ' ', '-', $formatted );
- return $formatted;
- }
-
- function add_debug_info( $data ) {
- $this->_debug .= $data;
- }
-
- function get_debug_info() {
- return $this->_debug;
- }
-
- } // End Of Class http_header
-
-/******************************************************************************************
-* class http_response_header
-******************************************************************************************/
- class http_response_header extends http_header {
- var $cookies_headers;
-
- function http_response_header() {
- $this->cookies_headers = array();
- http_header::http_header();
- } // End of function http_response_header()
-
- function deserialize_headers( $flat_headers ) {
- $flat_headers = preg_replace( "/^" . HTTP_CRLF . "/", '', $flat_headers );
- $tmp_headers = split( HTTP_CRLF, $flat_headers );
- if (preg_match("'HTTP/(\d\.\d)\s+(\d+).*'i", $tmp_headers[0], $matches )) {
- $this->set_header( 'Protocol-Version', $matches[1] );
- $this->set_header( 'Status', $matches[2] );
- }
- array_shift( $tmp_headers );
- foreach( $tmp_headers as $index=>$value ) {
- $pos = strpos( $value, ':' );
- if ( $pos ) {
- $key = substr( $value, 0, $pos );
- $value = trim( substr( $value, $pos +1) );
- if ( strtoupper($key) == 'SET-COOKIE' )
- $this->cookies_headers[] = $value;
- else
- $this->set_header( $key, $value );
- }
- }
- } // End of function deserialize_headers()
-
- function reset() {
- if ( count( $this->cookies_headers ) > 0 ) $this->cookies_headers = array();
- http_header::reset();
- }
-
- } // End of class http_response_header
-
-
-/******************************************************************************************
-* class http_request_message
-******************************************************************************************/
- class http_request_message extends http_header {
- var $body;
-
- function http_request_message() {
- $this->body = '';
- http_header::http_header();
- } // End of function http_message()
-
- function reset() {
- $this->body = '';
- http_header::reset();
- }
- }
-
-/******************************************************************************************
-* class http_response_message
-******************************************************************************************/
- class http_response_message extends http_response_header {
- var $body;
- var $cookies;
-
- function http_response_message() {
- $this->cookies = new http_cookie();
- $this->body = '';
- http_response_header::http_response_header();
- } // End of function http_response_message()
-
- function get_status() {
- if ( $this->get_header( 'Status' ) != null )
- return /*(integer)*/$this->get_header( 'Status' );
- else
- return -1;
- }
-
- function get_protocol_version() {
- if ( $this->get_header( 'Protocol-Version' ) != null )
- return $this->get_header( 'Protocol-Version' );
- else
- return HTTP_V10;
- }
-
- function get_content_type() {
- return $this->get_header( 'Content-Type' );
- }
-
- function get_content_length() {
- return $this->get_header( 'Content-Length' );
- }
-
- function get_body() {
- return $this->body;
- }
-
- function reset() {
- $this->body = '';
- http_response_header::reset();
- }
-
- function parse_cookies( $host ) {
- for ( $i = 0; $i < count( $this->cookies_headers ); $i++ )
- $this->cookies->parse( $this->cookies_headers[$i], $host );
- }
- }
-
-/******************************************************************************************
-* class http_cookie
-******************************************************************************************/
- class http_cookie {
- var $cookies;
-
- function http_cookie() {
- $this->cookies = array();
- } // End of function http_cookies()
-
- function _now() {
- return strtotime( gmdate( "l, d-F-Y H:i:s", time() ) );
- } // End of function _now()
-
- function _timestamp( $date ) {
- if ( $date == '' ) return $this->_now()+3600;
- $time = strtotime( $date );
- return ($time>0?$time:$this->_now()+3600);
- } // End of function _timestamp()
-
- function get( $current_domain, $current_path ) {
- $cookie_str = '';
- $now = $this->_now();
- $new_cookies = array();
-
- foreach( $this->cookies as $cookie_name => $cookie_data ) {
- if ($cookie_data['expires'] > $now) {
- $new_cookies[$cookie_name] = $cookie_data;
- $domain = preg_quote( $cookie_data['domain'] );
- $path = preg_quote( $cookie_data['path'] );
- if ( preg_match( "'.*$domain$'i", $current_domain ) && preg_match( "'^$path.*'i", $current_path ) )
- {
- $cookie_str .= $cookie_name . '=' . $cookie_data['value'];// . '; ';
- }
- }
- }
- $this->cookies = $new_cookies;
- return $cookie_str;
- } // End of function get()
-
- function set( $name, $value, $domain, $path, $expires ) {
- $this->cookies[$name] = array( 'value' => $value,
- 'domain' => $domain,
- 'path' => $path,
- 'expires' => $this->_timestamp( $expires )
- );
- } // End of function set()
-
- function parse( $cookie_str, $host ) {
- $cookie_str = str_replace( '; ', ';', $cookie_str ) . ';';
- $data = split( ';', $cookie_str );
- $value_str = $data[0];
-
- $cookie_param = 'domain=';
- $start = strpos( $cookie_str, $cookie_param );
- if ( $start > 0 ) {
- $domain = substr( $cookie_str, $start + strlen( $cookie_param ) );
- $domain = substr( $domain, 0, strpos( $domain, ';' ) );
- } else
- $domain = $host;
-
- $cookie_param = 'expires=';
- $start = strpos( $cookie_str, $cookie_param );
- if ( $start > 0 ) {
- $expires = substr( $cookie_str, $start + strlen( $cookie_param ) );
- $expires = substr( $expires, 0, strpos( $expires, ';' ) );
- } else
- $expires = '';
-
- $cookie_param = 'path=';
- $start = strpos( $cookie_str, $cookie_param );
- if ( $start > 0 ) {
- $path = substr( $cookie_str, $start + strlen( $cookie_param ) );
- $path = substr( $path, 0, strpos( $path, ';' ) );
- } else
- $path = '/';
-
- $sep_pos = strpos( $value_str, '=');
-
- if ($sep_pos){
- $name = substr( $value_str, 0, $sep_pos );
- $value = substr( $value_str, $sep_pos+1 );
- $this->set( $name, $value, $domain, $path, $expires );
- }
- } // End of function parse()
-
- } // End of class http_cookie
-
-/******************************************************************************************
-* class http
-******************************************************************************************/
- class http {
- var $_socket;
- var $host;
- var $port;
- var $http_version;
- var $user_agent;
- var $errstr;
- var $connected;
- var $uri;
- var $_proxy_host;
- var $_proxy_port;
- var $_proxy_login;
- var $_proxy_pwd;
- var $_use_proxy;
- var $_auth_login;
- var $_auth_pwd;
- var $_response;
- var $_request;
- var $_keep_alive;
-
- function http( $http_version = HTTP_V10, $keep_alive = false, $auth = false ) {
- $this->http_version = $http_version;
- $this->connected = false;
- $this->user_agent = 'CosmoHttp/1.1 (compatible; MSIE 5.5; Linux)';
- $this->host = '';
- $this->port = 80;
- $this->errstr = '';
-
- $this->_keep_alive = $keep_alive;
- $this->_proxy_host = '';
- $this->_proxy_port = -1;
- $this->_proxy_login = '';
- $this->_proxy_pwd = '';
- $this->_auth_login = '';
- $this->_auth_pwd = '';
- $this->_use_proxy = false;
- $this->_response = new http_response_message();
- $this->_request = new http_request_message();
-
- // Basic Authentification added by Mate Jovic, 2002-18-06, jo...@ma...
- if( is_array($auth) && count($auth) == 2 ){
- $this->_auth_login = $auth[0];
- $this->_auth_pwd = $auth[1];
- }
- } // End of Constuctor
-
- function use_proxy( $host, $port, $proxy_login = null, $proxy_pwd = null ) {
- // Proxy auth not yet supported
- $this->http_version = HTTP_V10;
- $this->_keep_alive = false;
- $this->_proxy_host = $host;
- $this->_proxy_port = $port;
- $this->_proxy_login = $proxy_login;
- $this->_proxy_pwd = $proxy_pwd;
- $this->_use_proxy = true;
- }
-
- function set_request_header( $name, $value ) {
- $this->_request->set_header( $name, $value );
- }
-
- function get_response_body() {
- return $this->_response->body;
- }
-
- function get_response() {
- return $this->_response;
- }
-
- function head( $uri ) {
- $this->uri = $uri;
-
- if ( ($this->_keep_alive && !$this->connected) || !$this->_keep_alive ) {
- if ( !$this->_connect() ) {
- $this->errstr = 'Could not connect to ' . $this->host;
- return -1;
- }
- }
- $http_cookie = $this->_response->cookies->get( $this->host, $this->_current_directory( $uri ) );
-
- if ($this->_use_proxy) {
- $this->_request->set_header( 'Host', $this->host . ':' . $this->port );
- $this->_request->set_header( 'Proxy-Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- if ( $this->_proxy_login != '' ) $this->_request->set_header( 'Proxy-Authorization', "Basic " . base64_encode( $this->_proxy_login . ":" . $this->_proxy_pwd ) );
- $uri = 'http://' . $this->host . ':' . $this->port . $uri;
- } else {
- $this->_request->set_header( 'Host', $this->host );
- $this->_request->set_header( 'Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- }
-
- if ( $this->_auth_login != '' ) $this->_request->set_header( 'Authorization', "Basic " . base64_encode( $this->_auth_login . ":" . $this->_auth_pwd ) );
- $this->_request->set_header( 'User-Agent', $this->user_agent );
- $this->_request->set_header( 'Accept', '*/*' );
- $this->_request->set_header( 'Cookie', $http_cookie );
-
- $cmd = "HEAD $uri HTTP/" . $this->http_version . HTTP_CRLF .
- $this->_request->serialize_headers() .
- HTTP_CRLF;
- fwrite( $this->_socket, $cmd );
-
- $this->_request->add_debug_info( $cmd );
- $this->_get_response( false );
-
- if ($this->_socket && !$this->_keep_alive) $this->disconnect();
- if ( $this->_response->get_header( 'Connection' ) != null ) {
- if ( $this->_keep_alive && strtolower( $this->_response->get_header( 'Connection' ) ) == 'close' ) {
- $this->_keep_alive = false;
- $this->disconnect();
- }
- }
-
- if ( $this->_response->get_status() == HTTP_STATUS_USE_PROXY ) {
- $location = $this->_parse_location( $this->_response->get_header( 'Location' ) );
- $this->disconnect();
- $this->use_proxy( $location['host'], $location['port'] );
- $this->head( $this->uri );
- }
-
- return $this->_response->get_header( 'Status' );
- } // End of function head()
-
-
- function get( $uri, $follow_redirects = true, $referer = '' ) {
- $this->uri = $uri;
-
- if ( ($this->_keep_alive && !$this->connected) || !$this->_keep_alive ) {
- if ( !$this->_connect() ) {
- $this->errstr = 'Could not connect to ' . $this->host;
- return -1;
- }
- }
-
- if ($this->_use_proxy) {
- $this->_request->set_header( 'Host', $this->host . ':' . $this->port );
- $this->_request->set_header( 'Proxy-Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- if ( $this->_proxy_login != '' ) $this->_request->set_header( 'Proxy-Authorization', "Basic " . base64_encode( $this->_proxy_login . ":" . $this->_proxy_pwd ) );
- $uri = 'http://' . $this->host . ':' . $this->port . $uri;
- } else {
- $this->_request->set_header( 'Host', $this->host );
- $this->_request->set_header( 'Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- $this->_request->set_header( 'Pragma', 'no-cache' );
- $this->_request->set_header( 'Cache-Control', 'no-cache' );
- }
-
- if ( $this->_auth_login != '' ) $this->_request->set_header( 'Authorization', "Basic " . base64_encode( $this->_auth_login . ":" . $this->_auth_pwd ) );
- $http_cookie = $this->_response->cookies->get( $this->host, $this->_current_directory( $uri ) );
- $this->_request->set_header( 'User-Agent', $this->user_agent );
- $this->_request->set_header( 'Accept', '*/*' );
- $this->_request->set_header( 'Referer', $referer );
- $this->_request->set_header( 'Cookie', $http_cookie );
-//
- $this->_request->set_header( 'Keep-Alive', '300' );
-//
-
- $cmd = "GET $uri HTTP/" . $this->http_version . HTTP_CRLF .
- $this->_request->serialize_headers() .
- HTTP_CRLF;
- fwrite( $this->_socket, $cmd );
-
- $this->_request->add_debug_info( $cmd );
- $this->_get_response();
-
- if ($this->_socket && !$this->_keep_alive) $this->disconnect();
- if ( $this->_response->get_header( 'Connection' ) != null ) {
- if ( $this->_keep_alive && strtolower( $this->_response->get_header( 'Connection' ) ) == 'close' ) {
- $this->_keep_alive = false;
- $this->disconnect();
- }
- }
- if ( $follow_redirects && ($this->_response->get_status() == HTTP_STATUS_MOVED_PERMANENTLY || $this->_response->get_status() == HTTP_STATUS_FOUND || $this->_response->get_status() == HTTP_STATUS_SEE_OTHER ) ) {
- if ( $this->_response->get_header( 'Location' ) != null ) {
- $this->_redirect( $this->_response->get_header( 'Location' ) );
- }
- }
-
- if ( $this->_response->get_status() == HTTP_STATUS_USE_PROXY ) {
- $location = $this->_parse_location( $this->_response->get_header( 'Location' ) );
- $this->disconnect();
- $this->use_proxy( $location['host'], $location['port'] );
- $this->get( $this->uri, $referer );
- }
-
- return $this->_response->get_status();
- } // End of function get()
-
-
-
- function multipart_post( $uri, &$form_fields, $form_files = null, $follow_redirects = true, $referer = '' ) {
- $this->uri = $uri;
-
- if ( ($this->_keep_alive && !$this->connected) || !$this->_keep_alive ) {
- if ( !$this->_connect() ) {
- $this->errstr = 'Could not connect to ' . $this->host;
- return -1;
- }
- }
- $boundary = uniqid('------------------');
- $http_cookie = $this->_response->cookies->get( $this->host, $this->_current_directory( $uri ) );
- $body = $this->_merge_multipart_form_data( $boundary, $form_fields, $form_files );
- $this->_request->body = $body . HTTP_CRLF;
- $content_length = strlen( $body );
-
-
- if ($this->_use_proxy) {
- $this->_request->set_header( 'Host', $this->host . ':' . $this->port );
- $this->_request->set_header( 'Proxy-Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- if ( $this->_proxy_login != '' ) $this->_request->set_header( 'Proxy-Authorization', "Basic " . base64_encode( $this->_proxy_login . ":" . $this->_proxy_pwd ) );
- $uri = 'http://' . $this->host . ':' . $this->port . $uri;
- } else {
- $this->_request->set_header( 'Host', $this->host );
- $this->_request->set_header( 'Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- $this->_request->set_header( 'Pragma', 'no-cache' );
- $this->_request->set_header( 'Cache-Control', 'no-cache' );
- }
-
- if ( $this->_auth_login != '' ) $this->_request->set_header( 'Authorization', "Basic " . base64_encode( $this->_auth_login . ":" . $this->_auth_pwd ) );
- $this->_request->set_header( 'Accept', '*/*' );
- $this->_request->set_header( 'Content-Type', 'multipart/form-data; boundary=' . $boundary );
- $this->_request->set_header( 'User-Agent', $this->user_agent );
- $this->_request->set_header( 'Content-Length', $content_length );
- $this->_request->set_header( 'Cookie', $http_cookie );
- $this->_request->set_header( 'Referer', $referer );
-//
- $this->_request->set_header( 'Keep-Alive', '300' );
-//
- $req_header = "POST $uri HTTP/" . $this->http_version . HTTP_CRLF .
- $this->_request->serialize_headers() .
- HTTP_CRLF;
-
- fwrite( $this->_socket, $req_header );
- usleep(10);
- fwrite( $this->_socket, $this->_request->body );
-
- $this->_request->add_debug_info( $req_header );
- $this->_get_response();
-
- if ($this->_socket && !$this->_keep_alive) $this->disconnect();
- if ( $this->_response->get_header( 'Connection' ) != null ) {
- if ( $this->_keep_alive && strtolower( $this->_response->get_header( 'Connection' ) ) == 'close' ) {
- $this->_keep_alive = false;
- $this->disconnect();
- }
- }
-
- if ( $follow_redirects && ($this->_response->get_status() == HTTP_STATUS_MOVED_PERMANENTLY || $this->_response->get_status() == HTTP_STATUS_FOUND || $this->_response->get_status() == HTTP_STATUS_SEE_OTHER ) ) {
- if ( $this->_response->get_header( 'Location') != null ) {
- $this->_redirect( $this->_response->get_header( 'Location') );
- }
- }
-
- if ( $this->_response->get_status() == HTTP_STATUS_USE_PROXY ) {
- $location = $this->_parse_location( $this->_response->get_header( 'Location') );
- $this->disconnect();
- $this->use_proxy( $location['host'], $location['port'] );
- $this->multipart_post( $this->uri, $form_fields, $form_files, $referer );
- }
-
- return $this->_response->get_status();
- } // End of function multipart_post()
-
-
-
- function post( $uri, &$form_data, $follow_redirects = true, $referer = '' ) {
- $this->uri = $uri;
-
- if ( ($this->_keep_alive && !$this->connected) || !$this->_keep_alive ) {
- if ( !$this->_connect() ) {
- $this->errstr = 'Could not connect to ' . $this->host;
- return -1;
- }
- }
- $http_cookie = $this->_response->cookies->get( $this->host, $this->_current_directory( $uri ) );
- $body = substr( $this->_merge_form_data( $form_data ), 1 );
- $this->_request->body = $body . HTTP_CRLF . HTTP_CRLF;
- $content_length = strlen( $body );
-
- if ($this->_use_proxy) {
- $this->_request->set_header( 'Host', $this->host . ':' . $this->port );
- $this->_request->set_header( 'Proxy-Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- if ( $this->_proxy_login != '' ) $this->_request->set_header( 'Proxy-Authorization', "Basic " . base64_encode( $this->_proxy_login . ":" . $this->_proxy_pwd ) );
- $uri = 'http://' . $this->host . ':' . $this->port . $uri;
- } else {
- $this->_request->set_header( 'Host', $this->host );
- $this->_request->set_header( 'Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- $this->_request->set_header( 'Pragma', 'no-cache' );
- $this->_request->set_header( 'Cache-Control', 'no-cache' );
- }
-
- if ( $this->_auth_login != '' ) $this->_request->set_header( 'Authorization', "Basic " . base64_encode( $this->_auth_login . ":" . $this->_auth_pwd ) );
- $this->_request->set_header( 'Accept', '*/*' );
- $this->_request->set_header( 'Content-Type', 'application/x-www-form-urlencoded' );
- $this->_request->set_header( 'User-Agent', $this->user_agent );
- $this->_request->set_header( 'Content-Length', $content_length );
- $this->_request->set_header( 'Cookie', $http_cookie );
- $this->_request->set_header( 'Referer', $referer );
-
- $req_header = "POST $uri HTTP/" . $this->http_version . HTTP_CRLF .
- $this->_request->serialize_headers() .
- HTTP_CRLF;
- fwrite( $this->_socket, $req_header );
- usleep( 10 );
- fwrite( $this->_socket, $this->_request->body );
-
- $this->_request->add_debug_info( $req_header );
- $this->_get_response();
-
- if ($this->_socket && !$this->_keep_alive) $this->disconnect();
- if ( $this->_response->get_header( 'Connection' ) != null ) {
- if ( $this->_keep_alive && strtolower( $this->_response->get_header( 'Connection' ) ) == 'close' ) {
- $this->_keep_alive = false;
- $this->disconnect();
- }
- }
-
- if ( $follow_redirects && ($this->_response->get_status() == HTTP_STATUS_MOVED_PERMANENTLY || $this->_response->get_status() == HTTP_STATUS_FOUND || $this->_response->get_status() == HTTP_STATUS_SEE_OTHER ) ) {
- if ( $this->_response->get_header( 'Location' ) != null ) {
- $this->_redirect( $this->_response->get_header( 'Location' ) );
- }
- }
-
- if ( $this->_response->get_status() == HTTP_STATUS_USE_PROXY ) {
- $location = $this->_parse_location( $this->_response->get_header( 'Location' ) );
- $this->disconnect();
- $this->use_proxy( $location['host'], $location['port'] );
- $this->post( $this->uri, $form_data, $referer );
- }
-
- return $this->_response->get_status();
- } // End of function post()
-
-
-
- function post_xml( $uri, $xml_data, $follow_redirects = true, $referer = '' ) {
- $this->uri = $uri;
-
- if ( ($this->_keep_alive && !$this->connected) || !$this->_keep_alive ) {
- if ( !$this->_connect() ) {
- $this->errstr = 'Could not connect to ' . $this->host;
- return -1;
- }
- }
- $http_cookie = $this->_response->cookies->get( $this->host, $this->_current_directory( $uri ) );
- $body = $xml_data;
- $this->_request->body = $body . HTTP_CRLF . HTTP_CRLF;
- $content_length = strlen( $body );
-
- if ($this->_use_proxy) {
- $this->_request->set_header( 'Host', $this->host . ':' . $this->port );
- $this->_request->set_header( 'Proxy-Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- if ( $this->_proxy_login != '' ) $this->_request->set_header( 'Proxy-Authorization', "Basic " . base64_encode( $this->_proxy_login . ":" . $this->_proxy_pwd ) );
- $uri = 'http://' . $this->host . ':' . $this->port . $uri;
- } else {
- $this->_request->set_header( 'Host', $this->host );
- $this->_request->set_header( 'Connection', ($this->_keep_alive?'Keep-Alive':'Close') );
- $this->_request->set_header( 'Pragma', 'no-cache' );
- $this->_request->set_header( 'Cache-Control', 'no-cache' );
- }
-
- if ( $this->_auth_login != '' ) $this->_request->set_header( 'Authorization', "Basic " . base64_encode( $this->_auth_login . ":" . $this->_auth_pwd ) );
- $this->_request->set_header( 'Accept', '*/*' );
- $this->_request->set_header( 'Content-Type', 'text/xml; charset=utf-8' );
- $this->_request->set_header( 'User-Agent', $this->user_agent );
- $this->_request->set_header( 'Content-Length', $content_length );
- $this->_request->set_header( 'Cookie', $http_cookie );
- $this->_request->set_header( 'Referer', $referer );
-
- $req_header = "POST $uri HTTP/" . $this->http_version . HTTP_CRLF .
- $this->_request->serialize_headers() .
- HTTP_CRLF;
-
- fwrite( $this->_socket, $req_header );
- usleep( 10 );
- fwrite( $this->_socket, $this->_request->body );
-
- $this->_request->add_debug_info( $req_header );
- $this->_get_response();
-
- if ($this->_socket && !$this->_keep_alive) $this->disconnect();
- if ( $this->_response->get_header( 'Connection' ) != null ) {
- if ( $this->_keep_alive && strtolower( $this->_response->get_header( 'Connection' ) ) == 'close' ) {
- $this->_keep_alive = false;
- $this->disconnect();
- }
- }
-
- if ( $follow_redirects && ($this->_response->get_status() == HTTP_STATUS_MOVED_PERMANENTLY || $this->_response->get_status() == HTTP_STATUS_FOUND || $this->_response->get_status() == HTTP_STATUS_SEE_OTHER ) ) {
- if ( $this->_response->get_header( 'Location' ) != null ) {
- $this->_redirect( $this->_response->get_header( 'Location' ) );
- }
- }
-
- if ( $this->_response->get_status() == HTTP_STATUS_USE_PROXY ) {
- $location = $this->_parse_location( $this->_response->get_header( 'Location' ) );
- $this->disconnect();
- $this->use_proxy( $location['host'], $location['port'] );
- $this->post( $this->uri, $form_data, $referer );
- }
-
- return $this->_response->get_status();
- } // End of function post_xml()
-
-
- function disconnect() {
- if ($this->_socket && $this->connected) {
- fclose($this->_socket);
- $this->connected = false;
- }
- } // End of function disconnect()
-
-
- /********************************************************************************
- * Private functions
- ********************************************************************************/
-
- function _connect( ) {
- if ( $this->host == '' ) user_error( 'Class HTTP->_connect() : host property not set !' , E_ERROR );
- if (!$this->_use_proxy)
- $this->_socket = fsockopen( $this->host, $this->port, $errno, $errstr, 10 );
- else
- $this->_socket = fsockopen( $this->_proxy_host, $this->_proxy_port, $errno, $errstr, 10 );
- $this->errstr = $errstr;
- $this->connected = ($this->_socket == true);
- return $this->connected;
- } // End of function connect()
-
-
- function _merge_multipart_form_data( $boundary, &$form_fields, &$form_files ) {
- $boundary = '--' . $boundary;
- $multipart_body = '';
-
- // 13/03/09, ajf06r - changed to explode array into separate form fields, rather than submitting the array itself
- foreach ( $form_fields as $name => $data) {
- if(!is_array($data)) {
- $multipart_body .= $boundary . HTTP_CRLF;
- $multipart_body .= 'Content-Disposition: form-data; name="' . $name . '"' . HTTP_CRLF;
- $multipart_body .= HTTP_CRLF;
- $multipart_body .= $data . HTTP_CRLF;
- }
- else {
- foreach ( $data as $subname => $subdata) {
- $multipart_body .= $boundary . HTTP_CRLF;
- $multipart_body .= 'Content-Disposition: form-data; name="' . $name . '"' . HTTP_CRLF;
- $multipart_body .= HTTP_CRLF;
- $multipart_body .= stripslashes($subdata) . HTTP_CRLF;
- }
- }
- }
- if ( isset($form_files) ) {
- foreach ( $form_files as $data) {
- $multipart_body .= $boundary . HTTP_CRLF;
- $multipart_body .= 'Content-Disposition: form-data; name="' . $data['name'] . '"; filename="' . $data['filename'] . '"' . HTTP_CRLF;
- if ($data['content-type']!='')
- $multipart_body .= 'Content-Type: ' . $data['content-type'] . HTTP_CRLF;
- else
- $multipart_body .= 'Content-Type: application/octet-stream' . HTTP_CRLF;
- $multipart_body .= HTTP_CRLF;
- $multipart_body .= $data['data'] . HTTP_CRLF;
- }
- }
- $multipart_body .= $boundary . '--' . HTTP_CRLF;
-
- return $multipart_body;
- } // End of function _merge_multipart_form_data()
-
-
- // 13/02/09, ajf06r - changed this function to return arrays in the format 'arrayname[]', rather than 'arrayname[i]'
- function _merge_form_data( &$param_array, $param_name = '' ) {
- $params = '';
- $format = ($param_name !=''?'&'.$param_name.'[]=%2$s':'&%s=%s');
- //$format = ($param_name !=''?'&'.$param_name.'[%s]=%s':'&%s=%s');
- foreach ( $param_array as $key=>$value ) {
- if ( !is_array( $value ) )
- $params .= sprintf( $format, $key, urlencode( $value ) );
- else
- $params .= $this->_merge_form_data( $param_array[$key], $key );
- }
-
- return $params;
-
- } // End of function _merge_form_data()
-
- function _current_directory( $uri ) {
- $tmp = split( '/', $uri );
- array_pop($tmp);
- $current_dir = implode( '/', $tmp ) . '/';
- return ($current_dir!=''?$current_dir:'/');
- } // End of function _current_directory()
-
- function _get_response( $get_body = true ) {
- $this->_response->reset();
- $this->_request->reset();
- $header = '';
- $body = '';
- $continue = true;
-
- while ($continue) {
- $header = '';
-
- // Read the Response Headers
- while ( (($line = fgets( $this->_socket, 4096 )) != HTTP_CRLF || $header == '') && !feof( $this->_socket ) ) {
- if ($line != HTTP_CRLF) $header .= $line;
- }
- $this->_response->deserialize_headers( $header );
- $this->_response->parse_cookies( $this->host );
-
- $this->_response->add_debug_info( $header );
- $continue = ($this->_response->get_status() == HTTP_STATUS_CONTINUE);
- if ($continue) fwrite( $this->_socket, HTTP_CRLF );
- }
-
- if ( !$get_body ) return;
-
- // Read the Response Body
- if ( strtolower( $this->_response->get_header( 'Transfer-Encoding' ) ) != 'chunked' && !$this->_keep_alive ) {
- while ( !feof( $this->_socket ) ) {
- $body .= stream_get_contents( $this->_socket, 4096 );
- }
- } else {
- if ( $this->_...
[truncated message content] |
|
From: <dav...@us...> - 2010-04-12 16:33:04
|
Revision: 2451
http://qtitools.svn.sourceforge.net/qtitools/?rev=2451&view=rev
Author: davemckain
Date: 2010-04-12 16:32:58 +0000 (Mon, 12 Apr 2010)
Log Message:
-----------
MathAssessTools: Added link to FETLAR repo
Added Paths:
-----------
MathAssessTools/README.txt
Added: MathAssessTools/README.txt
===================================================================
--- MathAssessTools/README.txt (rev 0)
+++ MathAssessTools/README.txt 2010-04-12 16:32:58 UTC (rev 2451)
@@ -0,0 +1,3 @@
+This can now be found at:
+
+https://fetlar.svn.sourceforge.net/svnroot/fetlar/MathAssessTools
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-12 16:31:31
|
Revision: 2450
http://qtitools.svn.sourceforge.net/qtitools/?rev=2450&view=rev
Author: davemckain
Date: 2010-04-12 16:31:24 +0000 (Mon, 12 Apr 2010)
Log Message:
-----------
Forgot to remove this
Removed Paths:
-------------
trunk/projects/MathAssess/.project
Deleted: trunk/projects/MathAssess/.project
===================================================================
--- trunk/projects/MathAssess/.project 2010-04-12 16:29:42 UTC (rev 2449)
+++ trunk/projects/MathAssess/.project 2010-04-12 16:31:24 UTC (rev 2450)
@@ -1,13 +0,0 @@
-<projectDescription>
- <name>MathAssess</name>
- <comment/>
- <projects/>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-12 16:29:48
|
Revision: 2449
http://qtitools.svn.sourceforge.net/qtitools/?rev=2449&view=rev
Author: davemckain
Date: 2010-04-12 16:29:42 +0000 (Mon, 12 Apr 2010)
Log Message:
-----------
MathAssess(trunk): Updated to point to MathAssessEngine
Added Paths:
-----------
trunk/projects/MathAssess/README.txt
Removed Paths:
-------------
trunk/projects/MathAssess/pom.xml
trunk/projects/MathAssess/src/
Added: trunk/projects/MathAssess/README.txt
===================================================================
--- trunk/projects/MathAssess/README.txt (rev 0)
+++ trunk/projects/MathAssess/README.txt 2010-04-12 16:29:42 UTC (rev 2449)
@@ -0,0 +1,3 @@
+This is now part of MathAssessEngine, which can be found at:
+
+https://fetlar.svn.sourceforge.net/svnroot/fetlar/MathAssessEngine
Deleted: trunk/projects/MathAssess/pom.xml
===================================================================
--- trunk/projects/MathAssess/pom.xml 2010-04-12 12:38:44 UTC (rev 2448)
+++ trunk/projects/MathAssess/pom.xml 2010-04-12 16:29:42 UTC (rev 2449)
@@ -1,85 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.qtitools</groupId>
- <artifactId>MathAssess</artifactId>
- <packaging>jar</packaging>
- <version>1.0-SNAPSHOT</version>
- <name>MathAssess</name>
- <url>http://maven.apache.org</url>
- <!-- (This is where SnuggleTeX currently lives) -->
- <repositories>
- <repository>
- <id>www.ph.ed.ac.uk-snapshots</id>
- <url>http://www.ph.ed.ac.uk/maven2</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>www.ph.ed.ac.uk-releases</id>
- <url>http://www.ph.ed.ac.uk/maven2</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
- </repositories>
- <dependencies>
- <dependency>
- <groupId>org.qtitools.qti</groupId>
- <artifactId>JQTI</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>uk.ac.ed.ph.snuggletex</groupId>
- <artifactId>snuggletex-core</artifactId>
- <version>1.1.0</version>
- </dependency>
- <dependency>
- <groupId>uk.ac.ed.ph.snuggletex</groupId>
- <artifactId>snuggletex-upconversion</artifactId>
- <version>1.1.0</version>
- </dependency>
- <dependency>
- <groupId>org.qtitools.mathassess</groupId>
- <artifactId>MathAssessTools</artifactId>
- <version>1.0-RELEASE</version>
- </dependency>
- <dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>saxon9</artifactId>
- <version>9.1.0.6</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>saxon9-dom</artifactId>
- <version>9.1.0.6</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <distributionManagement>
- <repository>
- <id>qtitools</id>
- <name>QTITools Repository</name>
- <url>http://maven.qtitools.org</url>
- </repository>
- </distributionManagement>
-</project>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lo...@us...> - 2010-04-12 12:38:57
|
Revision: 2448
http://qtitools.svn.sourceforge.net/qtitools/?rev=2448&view=rev
Author: loccy
Date: 2010-04-12 12:38:44 +0000 (Mon, 12 Apr 2010)
Log Message:
-----------
Added Mac installer dir including known good version of tiny_mce.
Modified Paths:
--------------
Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/utilities/JAXBCommentFactory.java
Added Paths:
-----------
Mathqurate/trunk/mathqurate/macinstaller/
Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/
Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/01mathqurate-contents.xml
Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/01mathqurate.xml
Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/02tiny-contents.xml
Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/02tiny.xml
Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/03mozilla-contents.xml
Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/03mozilla.xml
Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/index.xml
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/base/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/base/base.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/eventmapping.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/bridgeFunctions.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/bridgeFunctions.js.bak
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/blank.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/langs/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/license.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/css/advhr.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advhr/rule.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/css/advimage.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/image.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/images/sample.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advimage/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/css/advlink.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/link.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/advlink/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/autosave/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/autosave/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/autosave/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/autosave/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/cleanup/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/cleanup/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/cleanup/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/contextmenu/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/contextmenu/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/contextmenu/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/contextmenu/images/spacer.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/contextmenu/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/css/devkit.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/devkit.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/images/flip_down.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/images/flip_up.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/devkit/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/images/ltr.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/images/rtl.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/directionality/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/eclipsebase/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/eclipsebase/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/eclipselayers/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/eclipselayers/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/eclipsetable/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/eclipsetable/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/emotions.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/emotions.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-cry.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-frown.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/images/smiley-yell.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/emotions/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/css/content.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/css/flash.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/flash.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/images/flash.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/jscripts/flash.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/flash/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/blank.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/images/add.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/images/fullpage.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/images/move_down.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/images/move_up.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/images/remove.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullpage/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/css/content.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/fullscreen/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/iespell/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/iespell/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/iespell/images/iespell.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/iespell/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/iespell/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/iespell/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/images/spacer.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/images/window_close.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/inlinepopups/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/images/insertdate.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/images/inserttime.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/insertdatetime/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/images/absolute.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/images/backward.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/images/forward.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/images/insertlayer.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/images/movebackward.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/images/moveforward.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/layer/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/css/content.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/css/media.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/images/flash.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/images/media.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/images/quicktime.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/images/realmedia.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/images/shockwave.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/images/windowsmedia.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/jscripts/embed.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/jscripts/media.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/media/media.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/nonbreaking/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/nonbreaking/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/nonbreaking/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/noneditable/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/noneditable/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/noneditable/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/blank.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/css/blank.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/css/pasteword.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/images/pastetext.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/images/pasteword.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/images/selectall.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/jscripts/pastetext.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/jscripts/pasteword.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/pastetext.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/pasteword.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/paste/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/example.html
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/images/preview.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/preview/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/print/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/print/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/print/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/print/images/print.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/print/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/print/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/print/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/save/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/save/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/save/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/save/images/save.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/save/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/save/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/save/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/images/replace.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/images/search.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/css/props.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/images/style_info.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/images/styleprops.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/jscripts/props.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/props.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/style/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/cell.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/css/cell.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/css/row.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/css/table.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/buttons.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_cell_props.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_delete.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_delete_col.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_delete_row.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_insert_col_after.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_insert_col_before.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_insert_row_after.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_insert_row_before.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_merge_cells.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_row_props.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/images/table_split_cells.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/jscripts/cell.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/jscripts/merge_cells.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/jscripts/row.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/jscripts/table.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/merge_cells.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/row.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/table/table.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/visualchars/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/visualchars/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/visualchars/images/visualchars.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/visualchars/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/visualchars/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/images/del.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/zoom/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/zoom/editor_plugin.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/zoom/editor_plugin_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/plugins/zoom/readme.txt
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/about.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/anchor.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/charmap.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/color_picker.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/css/editor_content.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/css/editor_popup.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/css/editor_ui.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/about.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/index.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/docs/en/style.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/editor_template.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/image.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/anchor.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/anchor_symbol.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/bold.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/bold_de_se.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/bold_es.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/bold_fr.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/bold_ru.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/bold_tw.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/browse.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/bullist.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/button_menu.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/buttons.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/charmap.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/cleanup.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/close.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/code.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/color.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/copy.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/custom_1.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/cut.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/help.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/hr.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/image.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/indent.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/insert_button_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/italic.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/italic_de_se.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/italic_es.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/italic_ru.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/italic_tw.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/justifycenter.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/justifyfull.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/justifyleft.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/justifyright.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/link.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/menu_check.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/newdocument.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/numlist.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/opacity.png
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/outdent.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/paste.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/redo.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/removeformat.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/separator.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/spacer.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/statusbar_resize.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/strikethrough.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/sub.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/sup.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/underline.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/underline_es.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/underline_fr.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/underline_ru.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/underline_tw.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/undo.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/unlink.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/visualaid.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/xp/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/xp/tab_end.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/jscripts/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/jscripts/about.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/jscripts/image.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/jscripts/link.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/jscripts/source_editor.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/langs/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/langs/en.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/link.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/advanced/source_editor.htm
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/css/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/css/editor_content.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/css/editor_popup.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/css/editor_ui.css
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/editor_template.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/editor_template_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/bold.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/bold_de_se.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/bold_fr.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/bold_ru.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/bold_tw.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/bullist.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/buttons.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/cleanup.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/italic.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/italic_de_se.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/italic_ru.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/italic_tw.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/numlist.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/redo.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/separator.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/spacer.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/strikethrough.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/underline.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/underline_fr.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/underline_ru.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/underline_tw.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/themes/simple/images/undo.gif
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/tiny_mce.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/tiny_mce_popup.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/tiny_mce_src.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/utils/
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/utils/editable_selects.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/utils/form_utils.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/utils/mclayer.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/utils/mctabs.js
Mathqurate/trunk/mathqurate/macinstaller/tiny_mce/jscripts/tiny_mce/utils/validate.js
Added: Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/01mathqurate-contents.xml
===================================================================
--- Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/01mathqurate-contents.xml (rev 0)
+++ Mathqurate/trunk/mathqurate/macinstaller/Mathqurate-Installer.pmdoc/01mathqurate-contents.xml 2010-04-12 12:38:44 UTC (rev 2448)
@@ -0,0 +1 @@
+<pkg-contents spec="1.12"><f n="MathQurate.app" o="paulneve" g="staff" p="16877" pt="/Users/paulneve/Documents/eclipse-workspace/qtitools/Mathqurate/trunk/mathqurate/macinstaller/MathQurate.app" m="false" t="file"><f n=".svn" o="paulneve" g="staff" p="16877"><f n="all-wcprops" o="paulneve" g="staff" p="33060"/><f n="entries" o="paulneve" g="staff" p="33060"/><f n="prop-base" o="paulneve" g="staff" p="16877"/><f n="props" o="paulneve" g="staff" p="16877"/><f n="text-base" o="paulneve" g="staff" p="16877"/><f n="tmp" o="paulneve" g="staff" p="16877"><f n="prop-base" o="paulneve" g="staff" p="16877"/><f n="props" o="paulneve" g="staff" p="16877"/><f n="text-base" o="paulneve" g="staff" p="16877"/></f></f><f n="Contents" o="paulneve" g="staff" p="16877"><f n=".svn" o="paulneve" g="staff" p="16877"><f n="all-wcprops" o="paulneve" g="staff" p="33060"/><f n="entries" o="paulneve" g="staff" p="33060"/><f n="prop-base" o="paulneve" g="staff" p="16877"/><f n="props" o="paulneve" g="staff" p="16877"/><f n="text-base" o="paulneve" g="staff" p="16877"><f n="Info.plist.svn-base" o="paulneve" g="staff" p="33060"/></f><f n="tmp" o="paulneve" g="staff" p="16877"><f n="prop-base" o="paulneve" g="staff" p="16877"/><f n="props" o="paulneve" g="staff" p="16877"/><f n="text-base" o="paulneve" g="staff" p="16877"/></f></f><f n="Info.plist" o="paulneve" g="staff" p="33188"/><f n="MacOS" o="paulneve" g="staff" p="16877"><f n=".svn" o="paulneve" g="staff" p="16877"><f n="all-wcprops" o="paulneve" g="staff" p="33060"/><f n="entries" o="paulneve" g="staff" p="33060"/><f n="prop-base" o="paulneve" g="staff" p="16877"><f n="swtrun.svn-base" o="paulneve" g="staff" p="33060"/></f><f n="props" o="paulneve" g="staff" p="16877"/><f n="text-base" o="paulneve" g="staff" p="16877"><f n="mathqurate-jar-with-dependencies.jar.svn-base" o="paulneve" g="staff" p="33060"/><f n="placeholder.svn-base" o="paulneve" g="staff" p="33060"/><f n="swtrun.svn-base" o="paulneve" g="staff" p="33060"/></f><f n="tmp" o="paulneve" g="staff" p="16877"><f n="prop-base" o="paulneve" g="staff" p="16877"/><f n="props" o="paulneve" g="staff" p="16877"/><f n="text-base" o="paulneve" g="staff" p="16877"/></f></f><f n="mathqurate-jar-with-dependencies.jar" o="paulneve" g="staff" p="33188"/><f n="placeholder" o="paulneve" g="staff" p="33188"/><f n="swtrun" o="paulneve" g="staff" p="33261"/></f><f n="Resources" o="paulneve" g="staff" p="16877"><f n=".svn" o="paulneve" g="staff" p="16877"><f n="all-wcprops" o="paulneve" g="staff" p="33060"/><f n="entries" o="paulneve" g="staff" p="33060"/><f n="prop-base" o="paulneve" g="staff" p="16877"><f n="swthello.icns.svn-base" o="paulneve" g="staff" p="33060"/></f><f n="props" o="paulneve" g="staff" p="16877"/><f n="text-base" o="paulneve" g="staff" p="16877"><f n="swthello.icns.svn-base" o="paulneve" g="staff" p="33060"/></f><f n="tmp" o="paulneve" g="staff" p="16877"><f n="prop-base" o="paulneve" g="staff" p="16877"/><f n="props" o="paulneve" g="staff" p="16877"/><f n="text-base" o="paulneve" g="staff" p="16877"/></f></f><f n="swthello.icns" o="paulneve" g="staff" p="33188"/></f></f></f></pkg-contents>
\ No newline at end of file
Added: Mathqurate/trunk/mathqurate...
[truncated message content] |
|
From: <bar...@us...> - 2010-04-09 17:09:17
|
Revision: 2447
http://qtitools.svn.sourceforge.net/qtitools/?rev=2447&view=rev
Author: bartnagel
Date: 2010-04-09 17:09:10 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
added Rest API (written by Pei Zhang)
Added Paths:
-----------
trunk/projects/QTIEngine/docs_api/
trunk/projects/QTIEngine/docs_api/Deployment.pdf
trunk/projects/QTIEngine/docs_api/Known_Issues.pdf
trunk/projects/QTIEngine/docs_api/playItem.pdf
trunk/projects/QTIEngine/docs_api/playItem.xml
trunk/projects/QTIEngine/docs_api/playItemPost.txt
trunk/projects/QTIEngine/docs_api/playTest.pdf
trunk/projects/QTIEngine/docs_api/playTest.xml
trunk/projects/QTIEngine/docs_api/playTestFinished.xml
trunk/projects/QTIEngine/docs_api/playTestPost.txt
trunk/projects/QTIEngine/docs_api/report.xml
trunk/projects/QTIEngine/docs_api/reportPost.txt
trunk/projects/QTIEngine/docs_api/upload.xml
trunk/projects/QTIEngine/docs_api/uploadPost.txt
trunk/projects/QTIEngine/docs_api/webFramwork.pdf
trunk/projects/QTIEngine/grails-app/controllers/RestController.groovy
trunk/projects/QTIEngine/grails-app/services/RestService.groovy
trunk/projects/QTIEngine/grails-app/views/rest/
trunk/projects/QTIEngine/src/groovy/org/qtitools/qtiengine/RestApiException.groovy
trunk/projects/QTIEngine/test/integration/RestControllerTests.groovy
trunk/projects/QTIEngine/test/integration/RestServiceTests.groovy
Added: trunk/projects/QTIEngine/docs_api/Deployment.pdf
===================================================================
(Binary files differ)
Property changes on: trunk/projects/QTIEngine/docs_api/Deployment.pdf
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/projects/QTIEngine/docs_api/Known_Issues.pdf
===================================================================
(Binary files differ)
Property changes on: trunk/projects/QTIEngine/docs_api/Known_Issues.pdf
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/projects/QTIEngine/docs_api/playItem.pdf
===================================================================
(Binary files differ)
Property changes on: trunk/projects/QTIEngine/docs_api/playItem.pdf
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/projects/QTIEngine/docs_api/playItem.xml
===================================================================
--- trunk/projects/QTIEngine/docs_api/playItem.xml (rev 0)
+++ trunk/projects/QTIEngine/docs_api/playItem.xml 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<root>
+ <status>0</status>
+ <page>
+ <html xmlns='http://www.w3.org/1999/xhtml'>
+ <head><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/content/internal//style/style.css' type='text/css' rel='stylesheet'></link><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/QTIV2JSCRIPT.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/prototype.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/builder.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/effects.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/dragdrop.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/controls.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/slider.js'> </script><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/css/r2q2.css' type='text/css' rel='stylesheet' media='screen'></link><title> :: Getting Started</title>
+ </head>
+ <body>
+ <div id='navbar'></div><h1>Getting Started</h1><div id='body'><div id='body-container'><form action='http://localhost:51237/Question/PlayItem/21' autocomplete='off' enctype='multipart/form-data' onreset='doReset();' onsubmit='return doSubmit();' name='QuestionForm' method='post' id='QuestionForm'><input value='1' type='hidden' name='questionId'></input><div class='outer-box'><span class='box-title'>Question</span><div class='inner-box'><p><b> Question 8</b><br clear='none'></br><br clear='none'></br> Identify the missing words in the following passage.</p><blockquote><p> In order to view your homepage in a web browser through the Internet, you need to upload the page into the folder on the web server that was distinguished in the previous question of this test. This folder needs to be situated in the home directory and has to be <select name='RESPONSE1'><option value='ChoiceC'></option><option value='ChoiceA'> in upper case</option><option value='ChoiceB' selected='selected'> in lower case</option></select>, with the words being separated by the <select name='RESPONSE2'><option value='Choice4'></option><option value='Choice1'> dash (-)</option><option value='Choice2' selected='selected'> underline (_)</option><option value='Choice3'> full stop (.)</option></select> symbol.</p></blockquote><table id='controls'><tr><td width='100%' align='center' colspan='1' rowspan='1'><input value='RESET' type='reset'></input><input value='SUBMIT ANSWER' type='submit' name='submit' id='submit_button'></input></td></tr></table></div></div><div class='spacer'> </div></form></div></div><hr></hr><h2>Internal State</h2><hr></hr><h3>Response vars</h3>numAttempts :
+ 1<br clear='none'></br>RESPONSE1 :
+ ChoiceB<br clear='none'></br>RESPONSE2 :
+ Choice2<br clear='none'></br>duration :
+ 373.327<br clear='none'></br><hr></hr><h3>Outcome vars</h3>completionStatus :
+ unknown<br clear='none'></br>SCORE :
+ 2<br clear='none'></br>
+ </body>
+ </html>
+ </page>
+ <vars>
+ <ResponseVars>
+ <param identifier='numAttempts'>1</param>
+ <param identifier='RESPONSE1'>ChoiceB</param>
+ <param identifier='RESPONSE2'>Choice2</param>
+ <param identifier='duration'>374.155</param>
+ </ResponseVars>
+ <OutcomeVars>
+ <param identifier='completionStatus'>unknown</param>
+ <param identifier='SCORE'>2</param>
+ </OutcomeVars>
+ </vars>
+</root>
\ No newline at end of file
Added: trunk/projects/QTIEngine/docs_api/playItemPost.txt
===================================================================
--- trunk/projects/QTIEngine/docs_api/playItemPost.txt (rev 0)
+++ trunk/projects/QTIEngine/docs_api/playItemPost.txt 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,24 @@
+Content-Type: multipart/form-data; boundary=--------------------------8cc5d9a0d600df8
+Content-Length: 619
+
+-----------------------------8cc5d9a0d600df8
+Content-Disposition: form-data; name="questionId"
+
+1
+-----------------------------8cc5d9a0d600df8
+Content-Disposition: form-data; name="RESPONSE1"
+
+ChoiceA
+-----------------------------8cc5d9a0d600df8
+Content-Disposition: form-data; name="RESPONSE2"
+
+Choice1
+-----------------------------8cc5d9a0d600df8
+Content-Disposition: form-data; name="submit"
+
+SUBMIT ANSWER
+-----------------------------8cc5d9a0d600df8
+Content-Disposition: form-data; name="actionUrl"
+
+http://localhost:51237/Question/PlayItem/21
+-----------------------------8cc5d9a0d600df8--
Added: trunk/projects/QTIEngine/docs_api/playTest.pdf
===================================================================
(Binary files differ)
Property changes on: trunk/projects/QTIEngine/docs_api/playTest.pdf
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/projects/QTIEngine/docs_api/playTest.xml
===================================================================
--- trunk/projects/QTIEngine/docs_api/playTest.xml (rev 0)
+++ trunk/projects/QTIEngine/docs_api/playTest.xml 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<root>
+ <status>0</status>
+ <page>
+ <html xmlns='http://www.w3.org/1999/xhtml'>
+ <head><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/content/uploads/11CEB576867F85AB13D7895E1589063F//style/style.css' type='text/css' rel='stylesheet'></link><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/QTIV2JSCRIPT.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/prototype.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/builder.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/effects.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/dragdrop.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/controls.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/slider.js'> </script><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/css/r2q2.css' type='text/css' rel='stylesheet' media='screen'></link><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/css/asdel.css' type='text/css' rel='stylesheet' media='screen'></link><title>Web Developer Website :: Getting Started</title>
+ </head>
+ <body><div id='navbar'></div><h1>Getting Started</h1><div id='body'><div id='body-container'><h1>Web Developer Website</h1><h2>Electronics and Computer Science<br></br></h2><form action='http://localhost:51237/Question/PlayTest/19' autocomplete='off' enctype='multipart/form-data' onreset='doReset();' onsubmit='return doSubmit();' name='QuestionForm' method='post' id='QuestionForm'><input value='question2' type='hidden' name='questionId'></input><div class='outer-box'><span class='box-title'>Question</span><div class='inner-box'><p><b> Question 2</b></p><table class='choice_interaction' id='choiceInteraction-RESPONSE'><tr class='prompt'><td colspan='2' rowspan='1'> What is the notation required to create a link to another page? <br clear='none'></br><br clear='none'></br></td></tr><tr class='choice_interaction'><td class='choice_interaction' colspan='1' rowspan='1'> <a = "myimage.html">Link to my page</a></td><td class='control' colspan='1' rowspan='1'><input value='ChoiceB' type='radio' name='RESPONSE'></input></td></tr><tr class='choice_interaction'><td class='choice_interaction' colspan='1' rowspan='1'> <a href = "myimage.html"></td><td class='control' colspan='1' rowspan='1'><input value='ChoiceC' type='radio' name='RESPONSE'></input></td></tr><tr class='choice_interaction'><td class='choice_interaction' colspan='1' rowspan='1'> <a href = Link to my page</a></td><td class='control' colspan='1' rowspan='1'><input value='ChoiceD' type='radio' name='RESPONSE'></input></td></tr><tr class='choice_interaction'><td class='choice_interaction' colspan='1' rowspan='1'> <a href = "myimage.html">Link to my page</a></td><td class='control' colspan='1' rowspan='1'><input value='ChoiceA' type='radio' name='RESPONSE'></input></td></tr></table></div></div><div class='spacer'> </div><div class='outer-box'><span class='box-title'>Controls</span><div class='inner-box'><table width='100%'><tr><td width='25%' align='left'></td><td width='50%' align='center'><input value='Clear' type='reset'></input><input value='Skip' type='submit' name='skip' id='Skip'></input><input value='Submit answer' type='submit' name='submit' id='submit_button'></input></td><td align='right'></td></tr><tr><td align='left'><input value='Backward' type='submit' name='backward' id='backward'></input></td><td align='center'><input value='Exit test' type='submit' onclick='return confirm('Are you sure you want to end this test? All progress will be lost.')' name='exit' id='exit'></input><input value='View report' type='button' onclick='window.open("?report", "report");'></input></td><td align='right'></td></tr></table></div></div></form></div></div>
+ </body>
+ </html>
+ </page>
+</root>
\ No newline at end of file
Added: trunk/projects/QTIEngine/docs_api/playTestFinished.xml
===================================================================
--- trunk/projects/QTIEngine/docs_api/playTestFinished.xml (rev 0)
+++ trunk/projects/QTIEngine/docs_api/playTestFinished.xml 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<root>
+ <status>1</status>
+ <finished>
+ <html xmlns='http://www.w3.org/1999/xhtml'>
+ <head><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/content/uploads/2EBCF34FFDB3C55EFBBD16DF58D618A1//style/style.css' type='text/css' rel='stylesheet'></link><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/QTIV2JSCRIPT.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/prototype.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/builder.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/effects.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/dragdrop.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/controls.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/slider.js'> </script><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/css/r2q2.css' type='text/css' rel='stylesheet' media='screen'></link><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/css/asdel.css' type='text/css' rel='stylesheet' media='screen'></link><title>Scenario :: </title>
+ </head>
+ <body><div id='navbar'></div><h1></h1><div id='body'><div id='body-container'><h1>Scenario</h1><div>This assessment is now complete.</div><br></br><div><a href='#' onclick='window.open('?report', 'report');'>Click here to view the test report</a></div><br></br><div><a href='?exit'>Click here to return to the main page</a></div></div></div>
+ </body>
+ </html>
+ </finished>
+ <report>
+ <assessmentResult xsi:schemaLocation='http://www.imsglobal.org/xsd/imsqti_v2p1 imsqti_v2p1.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://www.imsglobal.org/xsd/imsqti_v2p1'>
+ <testResult datestamp='2010-01-06T17:06:53' identifier='SCENARIO'>
+ <outcomeVariable cardinality='single' identifier='duration' baseType='duration'>
+ <value>23.001</value>
+ </outcomeVariable>
+ <outcomeVariable cardinality='single' identifier='part1.duration' baseType='duration'>
+ <value>23.001</value>
+ </outcomeVariable>
+ <outcomeVariable cardinality='single' identifier='sectionA.duration' baseType='duration'>
+ <value>23.001</value>
+ </outcomeVariable>
+ </testResult>
+ <itemResult sequenceIndex='1' datestamp='2010-01-06T17:06:53' identifier='item1'>
+ <outcomeVariable cardinality='single' identifier='outcome' baseType='identifier'>
+ <value>C</value>
+ </outcomeVariable>
+ <outcomeVariable cardinality='single' identifier='completionStatus' baseType='string'>
+ <value>unknown</value>
+ </outcomeVariable>
+ <responseVariable cardinality='single' identifier='RESPONSE' baseType='identifier'>
+ <correctResponse>
+ <value>C</value>
+ </correctResponse>
+ <candidateResponse>
+ <value>C</value>
+ </candidateResponse>
+ </responseVariable>
+ <responseVariable cardinality='single' identifier='numAttempts' baseType='integer'>
+ <candidateResponse>
+ <value>1</value>
+ </candidateResponse>
+ </responseVariable>
+ <responseVariable cardinality='single' identifier='duration' baseType='float'>
+ <candidateResponse>
+ <value>13.704</value>
+ </candidateResponse>
+ </responseVariable>
+ </itemResult>
+ <itemResult sequenceIndex='2' datestamp='2010-01-06T17:06:53' identifier='item2_1'>
+ <outcomeVariable cardinality='single' identifier='outcome' baseType='identifier'>
+ </outcomeVariable>
+ <outcomeVariable cardinality='single' identifier='completionStatus' baseType='identifier'><value>not_attempted</value></outcomeVariable><responseVariable cardinality='single' identifier='RESPONSE' baseType='identifier'><correctResponse><value>B</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>0</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>0.0</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='3' datestamp='2010-01-06T17:06:53' identifier='item2_2'><outcomeVariable cardinality='single' identifier='outcome' baseType='identifier'></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='string'><value>unknown</value></outcomeVariable><responseVariable cardinality='multiple' identifier='RESPONSE' baseType='identifier'><correctResponse><value>A</value><value>C</value></correctResponse><candidateResponse><value>A</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>1</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>9.297</value></candidateResponse></responseVariable>
+ </itemResult>
+ </assessmentResult>
+ </report>
+</root>
\ No newline at end of file
Added: trunk/projects/QTIEngine/docs_api/playTestPost.txt
===================================================================
--- trunk/projects/QTIEngine/docs_api/playTestPost.txt (rev 0)
+++ trunk/projects/QTIEngine/docs_api/playTestPost.txt 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,20 @@
+Content-Type: multipart/form-data; boundary=---------------------------8cc5d9700585e12
+Content-Length: 519
+
+-----------------------------8cc5d9700585e12
+Content-Disposition: form-data; name="questionId"
+
+question2
+-----------------------------8cc5d9700585e12
+Content-Disposition: form-data; name="RESPONSE"
+
+ChoiceD
+-----------------------------8cc5d9700585e12
+Content-Disposition: form-data; name="submit"
+
+Submit answer
+-----------------------------8cc5d9700585e12
+Content-Disposition: form-data; name="actionUrl"
+
+http://localhost:51237/Question/PlayTest/19
+-----------------------------8cc5d9700585e12--
Added: trunk/projects/QTIEngine/docs_api/report.xml
===================================================================
--- trunk/projects/QTIEngine/docs_api/report.xml (rev 0)
+++ trunk/projects/QTIEngine/docs_api/report.xml 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<root>
+ <status>3</status>
+ <report>
+ <assessmentResult xsi:schemaLocation='http://www.imsglobal.org/xsd/imsqti_v2p1 imsqti_v2p1.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://www.imsglobal.org/xsd/imsqti_v2p1'>
+ <testResult datestamp='2010-01-06T17:15:34' identifier='TEST'>
+ <outcomeVariable cardinality='single' identifier='SCORE' baseType='float'>
+ </outcomeVariable>
+ <outcomeVariable cardinality='single' identifier='outcomeIdentifier' baseType='identifier'>
+ </outcomeVariable>
+ <outcomeVariable cardinality='single' identifier='duration' baseType='duration'>
+ <value>21.391</value>
+ </outcomeVariable><outcomeVariable cardinality='single' identifier='part1.duration' baseType='duration'><value>21.391</value></outcomeVariable><outcomeVariable cardinality='single' identifier='sectionquestion1.duration' baseType='duration'><value>21.391</value></outcomeVariable></testResult><itemResult sequenceIndex='1' datestamp='2010-01-06T17:15:34' identifier='question1'><outcomeVariable cardinality='single' identifier='SCORE' baseType='integer'><value>0</value></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='string'><value>unknown</value></outcomeVariable><responseVariable choiceSequence='ChoiceA ChoiceB ChoiceC' cardinality='single' identifier='RESPONSE' baseType='identifier'><correctResponse><value>ChoiceC</value></correctResponse><candidateResponse><value>ChoiceB</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>1</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>10.36</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='2' datestamp='2010-01-06T17:15:34' identifier='question2'><outcomeVariable cardinality='single' identifier='SCORE' baseType='integer'><value>0</value></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='string'><value>unknown</value></outcomeVariable><responseVariable choiceSequence='ChoiceA ChoiceD ChoiceB ChoiceC' cardinality='single' identifier='RESPONSE' baseType='identifier'><correctResponse><value>ChoiceA</value></correctResponse><candidateResponse><value>ChoiceB</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>1</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>5.219</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='3' datestamp='2010-01-06T17:15:34' identifier='question3'><outcomeVariable cardinality='single' identifier='SCORE' baseType='integer'><value>0</value></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='string'><value>unknown</value></outcomeVariable><responseVariable choiceSequence='ChoiceB ChoiceD ChoiceC ChoiceA' cardinality='single' identifier='RESPONSE' baseType='identifier'><correctResponse><value>ChoiceC</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>0</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>5.781</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='4' datestamp='2010-01-06T17:15:34' identifier='question4'><outcomeVariable cardinality='single' identifier='SCORE' baseType='integer'><value>0</value></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='identifier'><value>not_attempted</value></outcomeVariable><responseVariable choiceSequence='ChoiceA ChoiceB ChoiceC ChoiceD' cardinality='single' identifier='RESPONSE' baseType='identifier'><correctResponse><value>ChoiceD</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>0</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>0.0</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='5' datestamp='2010-01-06T17:15:34' identifier='question5'><outcomeVariable cardinality='single' identifier='SCORE' baseType='float'><value>0.0</value></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='identifier'><value>not_attempted</value></outcomeVariable><responseVariable choiceSequence='ChoiceA ChoiceB ChoiceC ChoiceD ChoiceE' cardinality='multiple' identifier='RESPONSE' baseType='identifier'><correctResponse><value>ChoiceB</value><value>ChoiceE</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>0</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>0.0</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='6' datestamp='2010-01-06T17:15:34' identifier='question6'><outcomeVariable cardinality='single' identifier='SCORE' baseType='integer'><value>0</value></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='identifier'><value>not_attempted</value></outcomeVariable><responseVariable choiceSequence='ChoiceA ChoiceB ChoiceC ChoiceD' cardinality='single' identifier='RESPONSE' baseType='identifier'><correctResponse><value>ChoiceD</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>0</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>0.0</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='7' datestamp='2010-01-06T17:15:34' identifier='question7'><outcomeVariable cardinality='single' identifier='SCORE' baseType='integer'><value>0</value></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='identifier'><value>not_attempted</value></outcomeVariable><responseVariable choiceSequence='ChoiceA ChoiceB ChoiceC ChoiceD' cardinality='single' identifier='RESPONSE' baseType='identifier'><correctResponse><value>ChoiceA</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>0</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>0.0</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='8' datestamp='2010-01-06T17:15:34' identifier='question8'><outcomeVariable cardinality='single' identifier='SCORE' baseType='integer'></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='identifier'><value>not_attempted</value></outcomeVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>0</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='RESPONSE1' baseType='identifier'><correctResponse><value>ChoiceB</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='RESPONSE2' baseType='identifier'><correctResponse><value>Choice2</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>0.0</value></candidateResponse></responseVariable></itemResult><itemResult sequenceIndex='9' datestamp='2010-01-06T17:15:34' identifier='question9'><outcomeVariable cardinality='single' identifier='SCORE' baseType='float'><value>0.0</value></outcomeVariable><outcomeVariable cardinality='single' identifier='completionStatus' baseType='identifier'><value>not_attempted</value></outcomeVariable><responseVariable choiceSequence='ChoiceA ChoiceB ChoiceC ChoiceD' cardinality='multiple' identifier='RESPONSE' baseType='identifier'><correctResponse><value>ChoiceA</value><value>ChoiceB</value></correctResponse><candidateResponse></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='numAttempts' baseType='integer'><candidateResponse><value>0</value></candidateResponse></responseVariable><responseVariable cardinality='single' identifier='duration' baseType='float'><candidateResponse><value>0.0</value></candidateResponse></responseVariable>
+ </itemResult>
+ </assessmentResult>
+ </report>
+</root>
\ No newline at end of file
Added: trunk/projects/QTIEngine/docs_api/reportPost.txt
===================================================================
--- trunk/projects/QTIEngine/docs_api/reportPost.txt (rev 0)
+++ trunk/projects/QTIEngine/docs_api/reportPost.txt 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,13 @@
+Content-Type: multipart/form-data; boundary=---------------------------8cc5d988d97a322
+Content-Length: 293
+
+
+-----------------------------8cc5d988d97a322
+Content-Disposition: form-data; name="report"
+
+report
+-----------------------------8cc5d988d97a322
+Content-Disposition: form-data; name="actionUrl"
+
+http://localhost:51237/Question/PlayTest
+-----------------------------8cc5d988d97a322--
Added: trunk/projects/QTIEngine/docs_api/upload.xml
===================================================================
--- trunk/projects/QTIEngine/docs_api/upload.xml (rev 0)
+++ trunk/projects/QTIEngine/docs_api/upload.xml 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<root>
+ <status>0</status>
+ <page>
+ <html xmlns='http://www.w3.org/1999/xhtml'>
+ <head><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/content/internal//style/style.css' type='text/css' rel='stylesheet'></link><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/QTIV2JSCRIPT.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/prototype.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/builder.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/effects.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/dragdrop.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/controls.js'> </script><script type='text/javascript' src='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/Jscript/slider.js'> </script><link href='http://lslvm-pz3.ecs.soton.ac.uk:8080/QTIEngine/css/r2q2.css' type='text/css' rel='stylesheet' media='screen'></link><title> :: Getting Started</title></head>
+ <body><div id='navbar'></div><h1>Getting Started</h1><div id='body'><div id='body-container'><form action='http://localhost:51237/Question/PlayItem/21' autocomplete='off' enctype='multipart/form-data' onreset='doReset();' onsubmit='return doSubmit();' name='QuestionForm' method='post' id='QuestionForm'><input value='1' type='hidden' name='questionId'></input><div class='outer-box'><span class='box-title'>Question</span><div class='inner-box'><p><b> Question 8</b><br clear='none'></br><br clear='none'></br> Identify the missing words in the following passage.</p><blockquote><p> In order to view your homepage in a web browser through the Internet, you need to upload the page into the folder on the web server that was distinguished in the previous question of this test. This folder needs to be situated in the home directory and has to be <select name='RESPONSE1'><option value='ChoiceC'></option><option value='ChoiceA'> in upper case</option><option value='ChoiceB'> in lower case</option></select>, with the words being separated by the <select name='RESPONSE2'><option value='Choice4'></option><option value='Choice1'> dash (-)</option><option value='Choice2'> underline (_)</option><option value='Choice3'> full stop (.)</option></select> symbol.</p></blockquote><table id='controls'><tr><td width='100%' align='center' colspan='1' rowspan='1'><input value='RESET' type='reset'></input><input value='SUBMIT ANSWER' type='submit' name='submit' id='submit_button'></input></td></tr></table></div></div><div class='spacer'> </div></form></div></div><hr></hr><h2>Internal State</h2><hr></hr><h3>Response vars</h3>numAttempts :
+ 0<br clear='none'></br>RESPONSE1 :
+ <br clear='none'></br>RESPONSE2 :
+ <br clear='none'></br>duration :
+ 0.016<br clear='none'></br><hr></hr><h3>Outcome vars</h3>completionStatus :
+ unknown<br clear='none'></br>SCORE :
+ <br clear='none'></br>
+ </body>
+ </html>
+ </page>
+</root>
\ No newline at end of file
Added: trunk/projects/QTIEngine/docs_api/uploadPost.txt
===================================================================
--- trunk/projects/QTIEngine/docs_api/uploadPost.txt (rev 0)
+++ trunk/projects/QTIEngine/docs_api/uploadPost.txt 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,9 @@
+Content-Type: multipart/form-data; boundary=---------------------------41184676334
+Content-Length: 10088
+
+-----------------------------41184676334
+Content-Disposition: form-data; name="uploadedContent"; filename="devtest.zip"
+Content-Type: application/zip
+
+filecontent....
+-----------------------------41184676334--
Added: trunk/projects/QTIEngine/docs_api/webFramwork.pdf
===================================================================
(Binary files differ)
Property changes on: trunk/projects/QTIEngine/docs_api/webFramwork.pdf
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/projects/QTIEngine/grails-app/controllers/RestController.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/controllers/RestController.groovy (rev 0)
+++ trunk/projects/QTIEngine/grails-app/controllers/RestController.groovy 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,326 @@
+import org.qtitools.qti.node.XmlNode;
+import org.qtitools.qti.node.item.AssessmentItem;
+import org.qtitools.qti.node.test.*;
+import org.qtitools.qti.validation.ValidationResult;
+import org.qtitools.util.*;
+import org.qtitools.qti.rendering.Renderer;
+import org.qtitools.qti.rendering.utils.ExtensibleXSLTSource;
+import grails.converters.*;
+import groovy.xml.*;
+import org.qtitools.qtiengine.RestApiException;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.servlet.ServletContext;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.XMLConstants;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.qtitools.qti.controller.TestCoordinator;
+
+class RestController {
+
+ def applicationService
+ def testService
+ def utilitiesService
+ def restService
+
+ def index = { }
+
+ def newSession = {
+ render session.getId()
+ }
+ def upload= {
+ //What we need....
+ //<sessionId>
+ //<status>
+ //<message>
+ //<code>
+
+ println "sessionid:"+request.getSession().getId()
+ if (!params.uploadedContent)
+ {
+ render restService.createErrorResponse("44","uploadedContent failed!") //change it to xml later
+ return
+ }
+
+ if(!params.actionUrl)
+ {
+ render restService.createErrorResponse("44","Please specify your url to pass the request. For example, http://playr_server:playr_port/path_to_playr/api/play")
+ return
+ }
+ //println "actionUrl:"+params.actionUrl
+ if(params.imagesUrl)
+ println "imagesUrl:"+params.imagesUrl
+ //Pei: not support for google chrome, getContentType() may return something unexpected
+ def type = params.uploadedContent.getContentType()
+
+ if (type.contains("zip")) {
+ ContentPackage content = applicationService.handleZip(params.uploadedContent.getInputStream())
+ if (!content) {
+ render restService.createErrorResponse("44","Zip file is not valid!")
+ } else {
+ if (session.test) session.test = null
+ if (session?.tests?.containsKey("0")) session.tests.remove("0")
+ if (session?.renderer?.containsKey("internal")) session.renderer.remove("internal")
+ def assessmentTestPath
+ try
+ {
+ assessmentTestPath = content.getTest()
+ }
+ catch(ContentPackageException e)
+ {
+ File atfile = new File(content.getDestination(), "___assessmentTest___.xml")
+
+ AssessmentTest test = new AssessmentTest();
+ test.setIdentifier("default_test_identifier")
+ test.setTitle(" ")
+ TestPart tp = new TestPart(test);
+ tp.setIdentifier("default_part_identifier")
+ tp.setNavigationMode(NavigationMode.NONLINEAR)
+ tp.setSubmissionMode(SubmissionMode.SIMULTANEOUS)
+ test.getTestParts().add(tp);
+ AssessmentSection section = new AssessmentSection(tp);
+ section.setIdentifier("default_section_identifier")
+ section.setTitle("Section 1")
+ section.setVisible(false)
+ tp.getAssessmentSections().add(section);
+ content.getItems().eachWithIndex
+ {
+ item, i ->
+ AssessmentItemRef air = new AssessmentItemRef(section);
+ air.setIdentifier("item$i")
+ section.getChildren().add(air);
+
+ String itm = item.getAbsolutePath().substring(item.getAbsolutePath().lastIndexOf(File.separator)+1)
+
+ air.setHref(itm)
+ }
+ atfile << test.toXmlString()
+ //System.out.println(test.validate());
+ assessmentTestPath = atfile
+ }
+
+ params.remove("uploadedContent")
+ session.test = new Test(testFolderPath:"internal")
+ session.test.getAssessmentTestPath = {return assessmentTestPath}
+
+ redirect(action:"playTest", params:params, id:0)
+ }
+ } else if (type.contains("xml")) {
+ XmlNode node = applicationService.handleXml(params.uploadedContent.getInputStream())
+ if (!node) {
+ render restService.createErrorResponse("44","xmlNode failed!") //change it to xml later
+ return
+ } else {
+
+ ValidationResult report = node.validate()
+ boolean canContinue = false
+
+ if (node instanceof AssessmentItem && report.getErrors().size() == 0)
+ {
+ if (session.item) session.item = null
+ if (session?.items?.containsKey("0")) session.items.remove("0")
+ if (session?.renderer?.containsKey("internal")) session.renderer.remove("internal")
+
+ def assessmentItem = node
+
+ params.remove("uploadedContent")
+ session.item = new Item(itemFolderPath:"internal")
+ session.item.getAssessmentItem = {return assessmentItem}
+ redirect(action:"playItem", params:params,id:"0")
+ }
+ else
+ {
+ render restService.createErrorResponse("44","Some of the tags in xml is not valid!")
+ return
+ }
+ }
+ } else {
+ flash.message=g.message(code:"file.wrongtype", args:[type])
+ render(view:"uploadError")
+ }
+ }
+
+ def playItem = {
+
+ if (!params.id || params.id != "0")
+ {
+ render restService.createErrorResponse("44","Id is not correct")
+ return
+ }
+ def item = session.item
+ if (!session.renderer) session.renderer = [:];
+ if (!session.renderer[item.itemFolderPath]) {
+ ExtensibleXSLTSource assessmentSource = new ExtensibleXSLTSource();
+ if (request.getHeader('User-Agent').contains("Mozilla")
+ && !request.getHeader('User-Agent').contains("Safari")
+ && !request.getHeader('User-Agent').contains("MSIE")
+ && !request.getHeader('User-Agent').contains("Opera"))
+ {
+ assessmentSource.getExtensionIncludes().add("/org/qtitools/qti/rendering/mathml/mathmlc2p.xsl"); // for FF
+ }
+ assessmentSource.getExtensionIncludes().addAll(Renderer.DEFAULT_ASSESSMENT_XSLT_SOURCE.getExtensionIncludes());
+
+ ExtensibleXSLTSource itemSource = new ExtensibleXSLTSource();
+ itemSource.getExtensionIncludes().add("/org/qtitools/mathassess/MathInteraction.xsl");
+ itemSource.getExtensionIncludes().addAll(Renderer.DEFAULT_ITEM_XSLT_SOURCE.getExtensionIncludes());
+
+ session.renderer[item.itemFolderPath] = new Renderer("../../content/"+item.itemFolderPath+"/",
+ itemSource.getSource(),
+ assessmentSource.getSource()
+ );
+ }
+
+ if (!session.items) session.items = [:]
+
+ boolean isResponded = false
+ AssessmentItem assessmentItem
+ def validation = null;
+ if (!session.items[params.id]) {
+ assessmentItem = item.getAssessmentItem();
+ assessmentItem.initialize(null);
+
+ session.items[params.id] = assessmentItem
+
+ if(assessmentItem.validate().getAllItems().size() != 0) {
+ validation = assessmentItem.validate().toString()
+ }
+
+ assessmentItem.setTimeRecord(new SimpleItemTimeRecord());
+
+ session.rec = assessmentItem.getTimeRecord()
+ } else {
+ assessmentItem = session.items[params.id]
+
+ assessmentItem.setResponses(utilitiesService.convertMap(request.getParameterMap(), params));
+ assessmentItem.processResponses();
+ println "Response:"+assessmentItem.getResponseValues()
+ println "Outcome:"+assessmentItem.getOutcomeValues()
+ isResponded = true;
+
+ if(assessmentItem.validate().getAllItems().size() != 0) {
+ validation = assessmentItem.validate().toString()
+ }
+ }
+
+ Map itemParams = new HashMap();
+ itemParams.put("showInternalState", true);
+ itemParams.put("displayTitle", true);
+ itemParams.put("appletCodebase", grailsApplication.config.server.url.toString()+"/applets");
+ if (validation) itemParams.put("validation", validation)
+
+ Map assessmentParams = new HashMap();
+ assessmentParams.put("useAssessmentStylesheet", false)
+
+ String text = session.renderer[item.itemFolderPath].renderPage(assessmentItem, isResponded, assessmentItem.getResponseValues(), assessmentParams, itemParams)
+ try
+ {
+ String xml = restService.createNormalResponse(text, assessmentItem, isResponded, params)
+
+ render xml
+ }
+ catch(RestApiException raex)
+ {
+ render restService.createErrorResponse("44","I caught an error!")
+ }
+ }
+
+ def playTest = {
+
+ if (!params.id || params.id != "0")
+ {
+ render restService.createErrorResponse("44","Id is not correct")
+ return
+ }
+
+ if(!params.actionUrl)
+ {
+ render restService.createErrorResponse("44","actionUrl is missing!")
+ return
+ }
+ //no active test
+ if (params.containsKey("report"))
+ {
+ redirect(action:report, id:params.id) //show report
+ return
+ }
+
+ if (params.containsKey("exit"))
+ {
+ reset(params)
+ String xml = restService.createExitResponse("You exit.").toString()
+ println "exit:"+xml
+ render xml
+ return
+ }
+
+ String text = testService.getRenderedPage(params, request)//.getBytes("UTF-8");
+ TestCoordinator coordinator = session.tests[params.id]
+ if(coordinator != null)
+ {
+ if(coordinator.getTestController().isTestComplete())
+ {
+ def xml = restService.createFinishedResponse(text,session.tests[params.id].getReport(),params)
+ println "finish:"+xml.toString()
+ render xml.toString()
+ return
+ }
+ }
+
+ try
+ {
+ //String xml = restService.createResponse(text, assessmentItem, isResponded, params)
+ def xml = restService.createNormalResponse(text, null, false, params)
+ println "xml:"+xml.toString()
+ render xml.toString()
+ return
+ }
+ catch(RestApiException raex)
+ {
+ render restService.createErrorResponse("44","I caught an error!")
+ return
+ }
+ }
+
+ def report = {
+ if (session?.tests && session?.tests[params.id])
+ {
+ //render session.tests[params.id].getReport()
+ String xml = restService.createReportResponse(session.tests[params.id].getReport())
+ render xml
+ return
+ }
+ else
+ {
+ render restService.createErrorResponse("44","cannot view report of test that hasn't been taken")
+ return
+ }
+ }
+
+ def reset =
+ {
+ if (!params.id) {
+ if (session.renderer) session.renderer.clear()
+ if (session.tests) session.tests.clear()
+ } else {
+ def test = Test.get( params.id )
+ if (test)
+ {
+ if (session.tests) session.tests.remove(params.id)
+ if (session.renderer) session.renderer.remove(test.testFolderPath)
+ }
+ }
+ }
+}
Added: trunk/projects/QTIEngine/grails-app/services/RestService.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/services/RestService.groovy (rev 0)
+++ trunk/projects/QTIEngine/grails-app/services/RestService.groovy 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,236 @@
+import grails.converters.*;
+import groovy.xml.*;
+import org.qtitools.qtiengine.RestApiException;
+import org.qtitools.qti.node.item.AssessmentItem;
+
+import org.xml.sax.SAXException
+
+import javax.xml.parsers.ParserConfigurationException;
+
+class RestService {
+
+ boolean transactional = true
+ static scope = "session"
+
+ def grailsApplication
+
+ /*status:
+ * 0: test is on the run
+ * 1: test finished
+ * 2: text exit
+ * 44: something wrong
+ * <root>
+ * <status>0</status>
+ * <page>
+ * xhtml code
+ * </page>
+ * <vars>
+ * <ResponseVars>
+ * <param identifier="RESPONSE">ChoiceB</param>
+ * <param identifier="numAttempts">1</param>
+ * ...
+ * </ResponseVars>
+ * <OutcomeVars>
+ * <param identifier="SCORE">1.0</param>
+ * ....
+ * </OutcomeVars>
+ * </vars>
+ * <error>
+ * <message>some messages</message>
+ * </error>
+ * </root>
+ */
+ def createNormalResponse(String xhtml, AssessmentItem item, boolean isResponded, params)
+ {
+ def builder = new StreamingMarkupBuilder()
+ def xml = localize(xhtml, params.actionUrl, params.imagesUrl)
+
+ def response = builder.bind{
+ mkp.xmlDeclaration()
+ root{
+ status "0"
+ page{
+ mkp.declareNamespace("": "http://www.w3.org/1999/xhtml")
+ mkp.yield xml
+ }
+ if(isResponded && item!=null)
+ {
+ vars
+ {
+ ResponseVars
+ {
+ item.getResponseValues().each{k,v->
+ param identifier:k, v.toString()
+ }
+ }
+ OutcomeVars
+ {
+ item.getOutcomeValues().each{k,v ->
+ param identifier:k, v.toString()
+ }
+ }
+ }
+ }
+ }
+ }
+ println "isResponded:"+isResponded
+ println "response:"+response
+ return response
+ }
+
+ def localize(String xhtml, String actionUrl, String imagesUrl) throws RestApiException, ParserConfigurationException, SAXException
+ {
+ def xmlSlurper = new XmlSlurper()
+ xmlSlurper.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false)
+ def xml = xmlSlurper.parseText(xhtml)
+
+ //change script src
+ xml.head.script.each {
+ it.@src = it...@sr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.server.url.toString())
+ }
+
+ //change link href
+ xml.head.link.each {
+ it.@href = it...@hr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.server.url.toString())
+ }
+
+ //We may also need javascript later
+
+ //change image url
+ if(imagesUrl)
+ {
+ xml.body.'**'.findAll{it.name() == "img"}.each {
+ println "img"
+ String oldUrl = it...@sr...()
+ String[] paths = oldUrl.split("/")
+ String filename = paths[paths.length-1]
+ it.@src=imagesUrl+filename
+ }
+
+ //Images in java applet
+ xml.body.'**'.findAll{it.name()=="applet"}.each{applet->
+ applet.'**'.findAll{it.name() == "param"}.each{param->
+ //println "param.@value:"+pa...@va...()
+ if(pa...@va...().contains(".."))
+ {
+ String oldUrl = pa...@va...()
+ String[] paths = oldUrl.split("/")
+ String filename = paths[paths.length-1]
+ param.@value=imagesUrl+filename
+ println "applet img"
+ }
+ }
+ }
+ }
+ else
+ {
+ xml.body.'**'.findAll{it.name() == "img"}.each {
+ println "img"
+ it.@sr...@sr...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.server.url.toString())
+ }
+ }
+
+ //change form action
+ xml.body.'**'.findAll{it.name() == "form"}.each{
+ println "form:"+it.name
+ it.@action = actionUrl
+ }
+
+ //change java applet codedbase
+ xml.body.'**'.findAll{it.name() == "applet"}.each{ applet->
+ applet.@codebase = ap...@co...().replaceAll("\\.\\./\\.\\.", grailsApplication.config.server.url.toString())
+ applet.'**'.findAll{it.name() == "param"}.each{ param->
+ //replace .. with server url, this might now be correct in some cases
+ param.@value = pa...@va...().replaceAll("\\.\\.", grailsApplication.config.server.url.toString())
+ }
+ }
+ return xml
+ }
+
+ //status:
+ //0: test is on the run
+ //1: test finished
+ //2: text exit
+ //3: send report
+ //44: something wrong
+ def createErrorResponse(String code, String errMessage)
+ {
+ def builder = new StreamingMarkupBuilder()
+ def response = builder.bind{
+ mkp.xmlDeclaration()
+ root{
+ status code
+ error
+ {
+ message errMessage
+ }
+ }
+ }
+ return response
+ }
+
+ def createFinishedResponse(String finishMessage, String reportStr,params)
+ {
+ def builder = new StreamingMarkupBuilder()
+ def xml = localize(finishMessage, params.actionUrl, params.imagesUrl)
+
+ def xmlSlurper = new XmlSlurper()
+ def reportXml = xmlSlurper.parseText(reportStr)
+
+ def response = builder.bind{
+ mkp.xmlDeclaration()
+ root{
+ status "1"
+ finished
+ {
+ mkp.declareNamespace("": "http://www.w3.org/1999/xhtml")
+ mkp.yield xml
+ }
+ report
+ {
+ mkp.declareNamespace("": "http://www.imsglobal.org/xsd/imsqti_v2p1")
+ mkp.yield reportXml
+ }
+ }
+ }
+ return response
+ }
+
+ def createExitResponse(String exitMessage)
+ {
+ def builder = new StreamingMarkupBuilder()
+ def response = builder.bind{
+ mkp.xmlDeclaration()
+ root{
+ status "2"
+ exit
+ {
+ message exitMessage
+ }
+ }
+ }
+ return response
+ }
+
+ def createReportResponse(String reportStr)
+ {
+ println "report:"
+ def xmlSlurper = new XmlSlurper()
+ def xml = xmlSlurper.parseText(reportStr)
+
+ def builder = new StreamingMarkupBuilder()
+ def response = builder.bind{
+ mkp.xmlDeclaration()
+ root{
+ status "3"
+ report
+ {
+ mkp.declareNamespace("": "http://www.imsglobal.org/xsd/imsqti_v2p1")
+ mkp.yield xml
+ }
+ }
+ }
+ println "report:"+response.toString();
+ return response
+ }
+}
Added: trunk/projects/QTIEngine/src/groovy/org/qtitools/qtiengine/RestApiException.groovy
===================================================================
--- trunk/projects/QTIEngine/src/groovy/org/qtitools/qtiengine/RestApiException.groovy (rev 0)
+++ trunk/projects/QTIEngine/src/groovy/org/qtitools/qtiengine/RestApiException.groovy 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,16 @@
+/**
+ *
+ */
+package org.qtitools.qtiengine
+
+/**
+ * @author pei
+ *
+ */
+public class RestApiException extends RuntimeException
+{
+ public RestApiException(String message)
+ {
+ super(message);
+ }
+}
Added: trunk/projects/QTIEngine/test/integration/RestControllerTests.groovy
===================================================================
--- trunk/projects/QTIEngine/test/integration/RestControllerTests.groovy (rev 0)
+++ trunk/projects/QTIEngine/test/integration/RestControllerTests.groovy 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,6 @@
+class RestControllerTests extends GroovyTestCase {
+
+ void testSomething() {
+
+ }
+}
Added: trunk/projects/QTIEngine/test/integration/RestServiceTests.groovy
===================================================================
--- trunk/projects/QTIEngine/test/integration/RestServiceTests.groovy (rev 0)
+++ trunk/projects/QTIEngine/test/integration/RestServiceTests.groovy 2010-04-09 17:09:10 UTC (rev 2447)
@@ -0,0 +1,6 @@
+class RestServiceTests extends GroovyTestCase {
+
+ void testSomething() {
+
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-09 16:56:43
|
Revision: 2446
http://qtitools.svn.sourceforge.net/qtitools/?rev=2446&view=rev
Author: davemckain
Date: 2010-04-09 16:56:37 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MAE: Last commit wasn't effective. Think I've sussed it now!
Modified Paths:
--------------
branches/mathassess/QTIEngine/.settings/com.springsource.sts.grails.core.prefs
Modified: branches/mathassess/QTIEngine/.settings/com.springsource.sts.grails.core.prefs
===================================================================
--- branches/mathassess/QTIEngine/.settings/com.springsource.sts.grails.core.prefs 2010-04-09 16:42:56 UTC (rev 2445)
+++ branches/mathassess/QTIEngine/.settings/com.springsource.sts.grails.core.prefs 2010-04-09 16:56:37 UTC (rev 2446)
@@ -1,3 +1,4 @@
-#Fri Feb 12 11:58:38 GMT 2010
+#Fri Apr 09 17:55:21 BST 2010
com.springsource.sts.grails.core.com.springsource.sts.grails.core.install.name=Grails 1.2.2
+com.springsource.sts.grails.core.use.default.install=true
eclipse.preferences.version=1
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-09 16:43:02
|
Revision: 2445
http://qtitools.svn.sourceforge.net/qtitools/?rev=2445&view=rev
Author: davemckain
Date: 2010-04-09 16:42:56 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MAE: Fixed to be slightly less specific to my STS setup
Modified Paths:
--------------
branches/mathassess/QTIEngine/.settings/com.springsource.sts.grails.core.prefs
Modified: branches/mathassess/QTIEngine/.settings/com.springsource.sts.grails.core.prefs
===================================================================
--- branches/mathassess/QTIEngine/.settings/com.springsource.sts.grails.core.prefs 2010-04-09 15:55:55 UTC (rev 2444)
+++ branches/mathassess/QTIEngine/.settings/com.springsource.sts.grails.core.prefs 2010-04-09 16:42:56 UTC (rev 2445)
@@ -1,4 +1,3 @@
#Fri Feb 12 11:58:38 GMT 2010
-com.springsource.sts.grails.core.com.springsource.sts.grails.core.install.name=Grails 1.2.1
-com.springsource.sts.grails.core.use.default.install=true
+com.springsource.sts.grails.core.com.springsource.sts.grails.core.install.name=Grails 1.2.2
eclipse.preferences.version=1
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-09 15:56:05
|
Revision: 2444
http://qtitools.svn.sourceforge.net/qtitools/?rev=2444&view=rev
Author: davemckain
Date: 2010-04-09 15:55:55 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MAE: This is release 0.4.0, intended to be the final feature release for FETLAR.
The will probably be a couple of bug-fix releases in the next couple of weeks, though...
Modified Paths:
--------------
branches/mathassess/QTIEngine/application.properties
branches/mathassess/QTIEngine/web-app/release-notes.gsp
Modified: branches/mathassess/QTIEngine/application.properties
===================================================================
--- branches/mathassess/QTIEngine/application.properties 2010-04-09 15:09:44 UTC (rev 2443)
+++ branches/mathassess/QTIEngine/application.properties 2010-04-09 15:55:55 UTC (rev 2444)
@@ -3,6 +3,6 @@
app.grails.version=1.2.2
app.name=MathAssessEngine
app.servlet.version=2.4
-app.version=0.3.4-dev
+app.version=0.4.0
plugins.hibernate=1.2.2
plugins.tomcat=1.2.2
Modified: branches/mathassess/QTIEngine/web-app/release-notes.gsp
===================================================================
--- branches/mathassess/QTIEngine/web-app/release-notes.gsp 2010-04-09 15:09:44 UTC (rev 2443)
+++ branches/mathassess/QTIEngine/web-app/release-notes.gsp 2010-04-09 15:55:55 UTC (rev 2444)
@@ -9,6 +9,39 @@
</div>
<div class="body">
<h1>Release Notes</h1>
+ <h2>Release 0.4.0 (09/04/10)</h2>
+ <p>
+ This is the final release as part of the FETLAR project (modulo bug-fixes).
+ </p>
+ <ul>
+ <li>
+ Items are no longer reinitialised when revisited during a test, alllowing
+ randomised variables to be correctly preserved.
+ </li>
+ <li>
+ Fixed bug in JQTI concerning the management of the <tt>completionStatus</tt> variable.
+ </li>
+ <li>
+ Added some extra parameters to tweak the rendering process, which might be
+ useful for people looking to embed the engine in trivial ways.
+ </li>
+ <ii>
+ Fixed long-standing issue concerning storage of non-serializable Objects in
+ the HTTP session.
+ </li>
+ <li>
+ Error page now looks slightly less scary than before.
+ </li>
+ <li>
+ Temporarily removed 'Math Input Help' icon as we don't actually have any useful
+ text to use here yet...!
+ </li>
+ <li>
+ Minor tweaks and improvements to the WAR build process and logging configuration.
+ (NB: Rolling file appender added to 0.3.3 has been removed so as to ensure platform
+ independence.)
+ </li>
+ </ul>
<h2>Release 0.3.3 (31/03/10)</h2>
<ul>
<li>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-09 15:09:50
|
Revision: 2443
http://qtitools.svn.sourceforge.net/qtitools/?rev=2443&view=rev
Author: davemckain
Date: 2010-04-09 15:09:44 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MAE: Added explicit conf for the stacktrace log4j appender so as to avoid trying to
create stacktrace.log on production machines
Modified Paths:
--------------
branches/mathassess/QTIEngine/grails-app/conf/Config.groovy
Modified: branches/mathassess/QTIEngine/grails-app/conf/Config.groovy
===================================================================
--- branches/mathassess/QTIEngine/grails-app/conf/Config.groovy 2010-04-09 14:46:55 UTC (rev 2442)
+++ branches/mathassess/QTIEngine/grails-app/conf/Config.groovy 2010-04-09 15:09:44 UTC (rev 2443)
@@ -65,6 +65,7 @@
appenders {
console name:'stdout', layout:pattern(conversionPattern: '%-5p [%d{ISO8601}] (%t) [%c/%L#%M()] - %m%n')
+ console name:'stacktrace', layout:pattern(conversionPattern: '%-5p [%d{ISO8601}] (%t) [%c/%L#%M()] - %m%n')
}
root {
debug
@@ -86,7 +87,7 @@
'net.sf.ehcache.hibernate',
'uk.ac.ed.ph.jacomax',
'uk.ac.ed.ph.snuggletex'
-
+
info 'org.qtitools',
'grails.app'
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-09 14:47:01
|
Revision: 2442
http://qtitools.svn.sourceforge.net/qtitools/?rev=2442&view=rev
Author: davemckain
Date: 2010-04-09 14:46:55 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MAE: content/uploads is now left out of WAR files during build.
(Also got rid of comments about leaving out certain logging JARs.)
Modified Paths:
--------------
branches/mathassess/QTIEngine/grails-app/conf/BuildConfig.groovy
Modified: branches/mathassess/QTIEngine/grails-app/conf/BuildConfig.groovy
===================================================================
--- branches/mathassess/QTIEngine/grails-app/conf/BuildConfig.groovy 2010-04-09 14:01:22 UTC (rev 2441)
+++ branches/mathassess/QTIEngine/grails-app/conf/BuildConfig.groovy 2010-04-09 14:46:55 UTC (rev 2442)
@@ -42,12 +42,8 @@
}
}
-// NOTE: In some cases, you way want to exclude certain JARs from the WAR build.
-// If so, put something like the following code in $HOME/.grails/settings.groovy in order
-// to customise your local build:
-//
-//grails.war.resources = { stagingDir ->
-// delete {
-// fileset(dir: "${stagingDir}/WEB-INF/lib", includes: "slf4j-*.jar,jcl-over-slf4j*,log4j-*")
-// }
-//}
+grails.war.resources = { stagingDir ->
+ delete {
+ fileset(dir: "${stagingDir}/content/uploads", includes: "**")
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
Revision: 2440
http://qtitools.svn.sourceforge.net/qtitools/?rev=2440&view=rev
Author: davemckain
Date: 2010-04-09 13:58:38 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MAE: Temporarily commented out "Math Input Help" icon as we don't have any content to
put here!
Modified Paths:
--------------
branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/interactions/MathEntryInteraction.xsl
Modified: branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/interactions/MathEntryInteraction.xsl
===================================================================
--- branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/interactions/MathEntryInteraction.xsl 2010-04-09 08:26:26 UTC (rev 2439)
+++ branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/interactions/MathEntryInteraction.xsl 2010-04-09 13:58:38 UTC (rev 2440)
@@ -24,10 +24,12 @@
</xsl:attribute>
</xsl:if>
</input>
+ <!-- We don't have any math input help at the moment
<span class="math_input_help">
<img title="This will eventually launch pop-up help" alt="Help"
src="{$engineBasePath}/images/mathinputhelp.gif"/>
</span>
+ -->
</div>
<div class="math_preview">
<span class="math_preview_label">Preview:</span>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lo...@us...> - 2010-04-09 08:26:32
|
Revision: 2439
http://qtitools.svn.sourceforge.net/qtitools/?rev=2439&view=rev
Author: loccy
Date: 2010-04-09 08:26:26 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MQ: Update version number (I always forget to do this!)
Modified Paths:
--------------
Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/model/MQContentPackage.java
Modified: Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/model/MQContentPackage.java
===================================================================
--- Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/model/MQContentPackage.java 2010-04-09 08:00:17 UTC (rev 2438)
+++ Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/model/MQContentPackage.java 2010-04-09 08:26:26 UTC (rev 2439)
@@ -66,7 +66,7 @@
public MQContentPackage(AssessmentItemType assessmentItemType) {
assessmentItemType.setToolName("Mathqurate");
- assessmentItemType.setToolVersion("0.9.7b");
+ assessmentItemType.setToolVersion("0.9.9");
this.contentXML = MQModel.mathqurateObjectFactory.getTypeAsXML(assessmentItemType);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <lo...@us...> - 2010-04-09 08:00:24
|
Revision: 2438
http://qtitools.svn.sourceforge.net/qtitools/?rev=2438&view=rev
Author: loccy
Date: 2010-04-09 08:00:17 +0000 (Fri, 09 Apr 2010)
Log Message:
-----------
MQ: Migrating to latest version of SnuggleTex - thanks to Dave Mc for the patch.
Modified Paths:
--------------
Mathqurate/trunk/mathqurate/pom.xml
Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/view/SnuggleTeXView.java
Modified: Mathqurate/trunk/mathqurate/pom.xml
===================================================================
--- Mathqurate/trunk/mathqurate/pom.xml 2010-04-08 16:40:06 UTC (rev 2437)
+++ Mathqurate/trunk/mathqurate/pom.xml 2010-04-09 08:00:17 UTC (rev 2438)
@@ -388,23 +388,23 @@
<!-- snuggle -->
<dependency>
<groupId>org.qtitools.mathassess</groupId>
- <artifactId>MathAssessTools</artifactId>
- <version>1.1-RELEASE</version>
+ <artifactId>MathAssessTools-Authoring</artifactId>
+ <version>1.3.0</version>
</dependency>
<dependency>
<groupId>uk.ac.ed.ph.snuggletex</groupId>
<artifactId>snuggletex-core</artifactId>
- <version>1.1.0</version>
+ <version>1.2.1</version>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon9</artifactId>
- <version>9.1.0.6</version>
+ <version>9.1.0.8</version>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon9-dom</artifactId>
- <version>9.1.0.6</version>
+ <version>9.1.0.8</version>
</dependency>
<!-- mathqurate -->
<dependency>
Modified: Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/view/SnuggleTeXView.java
===================================================================
--- Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/view/SnuggleTeXView.java 2010-04-08 16:40:06 UTC (rev 2437)
+++ Mathqurate/trunk/mathqurate/src/main/java/org/qtitools/mathqurate/view/SnuggleTeXView.java 2010-04-09 08:00:17 UTC (rev 2438)
@@ -64,16 +64,16 @@
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
-import org.qtitools.mathassess.tools.authoring.AuthoringGlobals;
+import org.qtitools.mathassess.tools.authoring.MathAssessPackageDefinitions;
import org.qtitools.mathqurate.controller.DefaultController;
import org.qtitools.mathqurate.model.MQMath;
import org.w3._1998.math.mathml.MathType;
-import uk.ac.ed.ph.snuggletex.DOMOutputOptions;
import uk.ac.ed.ph.snuggletex.InputError;
import uk.ac.ed.ph.snuggletex.SnuggleEngine;
import uk.ac.ed.ph.snuggletex.SnuggleInput;
import uk.ac.ed.ph.snuggletex.SnuggleSession;
+import uk.ac.ed.ph.snuggletex.XMLStringOutputOptions;
import uk.ac.ed.ph.snuggletex.utilities.MessageFormatter;
/**
@@ -165,7 +165,7 @@
private SnuggleSession session1 = null;
/** The options. */
- private DOMOutputOptions options = null;
+ private XMLStringOutputOptions options = null;
/** The math helper. */
private MQMath mathHelper;
@@ -194,12 +194,11 @@
engine = new SnuggleEngine();
- options = new DOMOutputOptions();
+ options = new XMLStringOutputOptions();
options.setMathMLPrefix("m");
options.setPrefixingMathML(true);
- options.setAddingMathAnnotations(true);
- engine.registerDefinitions(AuthoringGlobals.getSnuggleTeXDefinitionMap());
-
+ options.setAddingMathSourceAnnotations(true);
+ MathAssessPackageDefinitions.addMathAssessSupport(engine);
}
/* (non-Javadoc)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-08 16:40:13
|
Revision: 2437
http://qtitools.svn.sourceforge.net/qtitools/?rev=2437&view=rev
Author: davemckain
Date: 2010-04-08 16:40:06 +0000 (Thu, 08 Apr 2010)
Log Message:
-----------
MAE: Updated to Grails 1.2.2 and resynced src/templates/war/web.xml
with that from a fresh new project, which fixed the issue I've been
having with log4j configuration not working when running as a WAR.
As a result, WARs now deploy nicely and I've removed the explcit
mathassessengine.log to make the WAR more portable.
Finally, tidied up BuildConfig.groovy to completely remove the
commented out deps for the previously external
JQTI-Controller, JQTI-Rendering and QTItoolsUtils modules.
Modified Paths:
--------------
branches/mathassess/QTIEngine/application.properties
branches/mathassess/QTIEngine/grails-app/conf/BuildConfig.groovy
branches/mathassess/QTIEngine/grails-app/conf/Config.groovy
branches/mathassess/QTIEngine/src/templates/war/web.xml
Modified: branches/mathassess/QTIEngine/application.properties
===================================================================
--- branches/mathassess/QTIEngine/application.properties 2010-04-08 16:35:28 UTC (rev 2436)
+++ branches/mathassess/QTIEngine/application.properties 2010-04-08 16:40:06 UTC (rev 2437)
@@ -1,8 +1,8 @@
#Grails Metadata file
-#Fri Feb 12 11:56:46 GMT 2010
-app.grails.version=1.2.1
+#Thu Apr 08 14:51:51 BST 2010
+app.grails.version=1.2.2
app.name=MathAssessEngine
app.servlet.version=2.4
-app.version=0.3.3
-plugins.hibernate=1.2.1
-plugins.tomcat=1.2.1
+app.version=0.3.4-dev
+plugins.hibernate=1.2.2
+plugins.tomcat=1.2.2
Modified: branches/mathassess/QTIEngine/grails-app/conf/BuildConfig.groovy
===================================================================
--- branches/mathassess/QTIEngine/grails-app/conf/BuildConfig.groovy 2010-04-08 16:35:28 UTC (rev 2436)
+++ branches/mathassess/QTIEngine/grails-app/conf/BuildConfig.groovy 2010-04-08 16:40:06 UTC (rev 2437)
@@ -26,22 +26,14 @@
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
- compile 'org.qtitools.qti:JQTI:MA2.0-SNAPSHOT'
compile 'javax.mail:mail:1.4'
- compile 'uk.ac.ed.ph.snuggletex:snuggletex-core:1.2.0'
-
- /* DM: The following modules have been "temporarily" merged into this project */
-// compile 'org.qtitools:QTItoolsUtils:MA1.0-SNAPSHOT'
-// compile 'org.qtitools:JQTI-Rendering:MA1.0-SNAPSHOT'
-// compile 'org.qtitools:JQTI-Controller:MA1.0-SNAPSHOT'
-// runtime 'org.qtitools.mathassess:MathAssessTools-JQTI-Glue:1.2-SNAPSHOT'
-
- /* DM: The following need to be temporarily included as transitive deps of the modules we've temporarily merged in */
- compile 'org.qtitools.mathassess:MathAssessTools-Glue:1.3-SNAPSHOT'
- compile 'org.qtitools.mathassess:MathAssessTools-Glue-Extras:1.3-SNAPSHOT'
+ compile 'uk.ac.ed.ph.snuggletex:snuggletex-core:1.2.1'
+ compile 'org.qtitools.qti:JQTI-MathAssess:2.0'
+ compile 'org.qtitools.mathassess:MathAssessTools-Glue:1.3.0'
+ compile 'org.qtitools.mathassess:MathAssessTools-Glue-Extras:1.3.0'
runtime 'net.sf.saxon:saxon9:9.1.0.8'
runtime 'net.sf.saxon:saxon9-dom:9.1.0.8'
-
+
/* Replace the rubbish XML parser that ships with the JDK with a real version of Xerces */
runtime('xerces:xercesImpl:2.9.1') {
/* (Exclude xml-apis as there's a conflict with the one in the boot ClassLoader for run-app.) */
@@ -51,7 +43,7 @@
}
// NOTE: In some cases, you way want to exclude certain JARs from the WAR build.
-// If so, put something like the following code in ~/.grails/settings.groovy in order
+// If so, put something like the following code in $HOME/.grails/settings.groovy in order
// to customise your local build:
//
//grails.war.resources = { stagingDir ->
Modified: branches/mathassess/QTIEngine/grails-app/conf/Config.groovy
===================================================================
--- branches/mathassess/QTIEngine/grails-app/conf/Config.groovy 2010-04-08 16:35:28 UTC (rev 2436)
+++ branches/mathassess/QTIEngine/grails-app/conf/Config.groovy 2010-04-08 16:40:06 UTC (rev 2437)
@@ -9,6 +9,8 @@
// if(System.properties["${appName}.config.location"]) {
// grails.config.locations << "file:" + System.properties["${appName}.config.location"]
// }
+
+grails.project.groupId = appName // change this to alter the default package name and Maven publishing destination
grails.mime.file.extensions = true // enables the parsing of file extensions from URLs into the request format
grails.mime.use.accept.header = false
grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
@@ -35,7 +37,6 @@
// Set to false to use the new Grails 1.2 JSONBuilder in the render method
grails.json.legacy.builder=false
-
// enabled native2ascii conversion of i18n properties files
grails.enable.native2ascii = true
// whether to install the java.util.logging bridge for sl4j. Disable fo AppEngine!
@@ -59,15 +60,14 @@
// log4j configuration
log4j = {
- // Example of changing the log pattern for the default console
- // appender:
- //
+// Example of changing the log pattern for the default console
+// appender:
+
appenders {
console name:'stdout', layout:pattern(conversionPattern: '%-5p [%d{ISO8601}] (%t) [%c/%L#%M()] - %m%n')
- rollingFile name:'file', maxFileSize:'1024KB', file:'mathassessengine.log', layout:pattern(conversionPattern: '%-5p [%d{ISO8601}] (%t) [%c/%L#%M()] - %m%n')
}
root {
- warn 'stdout', 'file'
+ debug
additivity = true
}
Modified: branches/mathassess/QTIEngine/src/templates/war/web.xml
===================================================================
--- branches/mathassess/QTIEngine/src/templates/war/web.xml 2010-04-08 16:35:28 UTC (rev 2436)
+++ branches/mathassess/QTIEngine/src/templates/war/web.xml 2010-04-08 16:40:06 UTC (rev 2437)
@@ -5,10 +5,6 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>/@grails.project.key@</display-name>
- <context-param>
- <param-name>log4jConfigLocation</param-name>
- <param-value>/WEB-INF/classes/log4j.xml</param-value>
- </context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
@@ -49,6 +45,10 @@
</filter-mapping>
<listener>
+ <listener-class>org.codehaus.groovy.grails.web.util.Log4jConfigListener</listener-class>
+ </listener>
+
+ <listener>
<listener-class>org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener</listener-class>
</listener>
@@ -73,7 +73,7 @@
<servlet-name>gsp</servlet-name>
<url-pattern>*.gsp</url-pattern>
</servlet-mapping>
-
+
<!--
(Upped the session timeout to 5 hours to help prevent timeouts occurring, especially
when running via the Moodle plugin.)
@@ -81,7 +81,7 @@
<session-config>
<session-timeout>300</session-timeout>
</session-config>
-
+
<welcome-file-list>
<!--
The order of the welcome pages is important. JBoss deployment will
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
Revision: 2436
http://qtitools.svn.sourceforge.net/qtitools/?rev=2436&view=rev
Author: davemckain
Date: 2010-04-08 16:35:28 +0000 (Thu, 08 Apr 2010)
Log Message:
-----------
MAE: Fixed typo in last commit.
Modified Paths:
--------------
branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/test-item.xsl
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-08 14:58:10 UTC (rev 2435)
+++ branches/mathassess/QTIEngine/web-app/WEB-INF/jqti-rendering-resources/org/qtitools/qti/rendering/mathassessengine/test-item.xsl 2010-04-08 16:35:28 UTC (rev 2436)
@@ -350,7 +350,7 @@
</xsl:if>
<input type="submit" name="submit" id="submit_button" value="Submit answer">
- <xsl:if test="not($submitEnabled">
+ <xsl:if test="not($submitEnabled)">
<xsl:attribute name="disabled" select="'disabled'"/>
</xsl:if>
</input>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <dav...@us...> - 2010-04-08 14:58:22
|
Revision: 2435
http://qtitools.svn.sourceforge.net/qtitools/?rev=2435&view=rev
Author: davemckain
Date: 2010-04-08 14:58:10 +0000 (Thu, 08 Apr 2010)
Log Message:
-----------
QTIEngine(trunk): Removed remaining links with the
old MathAssess extensions. MathAssess is now served via
the new MathAssessEngine fork of QTIEngine.
Modified Paths:
--------------
trunk/projects/QTIEngine/grails-app/conf/BootStrap.groovy
trunk/projects/QTIEngine/grails-app/conf/BuildConfig.groovy
trunk/projects/QTIEngine/grails-app/controllers/ItemController.groovy
trunk/projects/QTIEngine/grails-app/services/TestService.groovy
Removed Paths:
-------------
trunk/projects/QTIEngine/web-app/content/items-mathassess/MA-UT-01b-SR-Choice-arr.xml
trunk/projects/QTIEngine/web-app/content/items-mathassess/MA-UT-01d-SR-Num-arr.xml
trunk/projects/QTIEngine/web-app/content/items-mathassess/MAC02-SR-demo.xml
trunk/projects/QTIEngine/web-app/content/items-mathassess/MAD03a.xml
trunk/projects/QTIEngine/web-app/content/items-mathassess/MAD03b.xml
trunk/projects/QTIEngine/web-app/content/items-mathassess/MAD05-SRinCO.xml
trunk/projects/QTIEngine/web-app/content/items-mathassess/MANum01CP.xml
trunk/projects/QTIEngine/web-app/content/items-mathassess/MANum01SR.xml
trunk/projects/QTIEngine/web-app/content/items-testing/mathInteraction.xml
Modified: trunk/projects/QTIEngine/grails-app/conf/BootStrap.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/conf/BootStrap.groovy 2010-04-08 14:56:12 UTC (rev 2434)
+++ trunk/projects/QTIEngine/grails-app/conf/BootStrap.groovy 2010-04-08 14:58:10 UTC (rev 2435)
@@ -5,20 +5,11 @@
new Item(itemFolderPath: "items-testing", itemFilename:"templated-inlinechoice.xml").save();
new Item(itemFolderPath: "items-testing", itemFilename:"error.xml").save();
new Item(itemFolderPath: "items-testing", itemFilename:"math4.xml").save();
- new Item(itemFolderPath: "items-testing", itemFilename:"mathInteraction.xml").save();
new Item(itemFolderPath: "items-mathassess", itemFilename:"MA-UT-01a-NoTP-Choice.xml").save();
- new Item(itemFolderPath: "items-mathassess", itemFilename:"MA-UT-01b-SR-Choice-arr.xml").save();
new Item(itemFolderPath: "items-mathassess", itemFilename:"MA-UT-01c-NoTP-Num.xml").save();
- new Item(itemFolderPath: "items-mathassess", itemFilename:"MA-UT-01d-SR-Num-arr.xml").save();
new Item(itemFolderPath: "items-mathassess", itemFilename:"MAA01a.xml").save();
new Item(itemFolderPath: "items-mathassess", itemFilename:"MAB01a.xml").save();
- new Item(itemFolderPath: "items-mathassess", itemFilename:"MAC02-SR-demo.xml").save();
- new Item(itemFolderPath: "items-mathassess", itemFilename:"MAD03a.xml").save();
- new Item(itemFolderPath: "items-mathassess", itemFilename:"MAD03b.xml").save();
- new Item(itemFolderPath: "items-mathassess", itemFilename:"MAD05-SRinCO.xml").save();
- new Item(itemFolderPath: "items-mathassess", itemFilename:"MANum01CP.xml").save();
- new Item(itemFolderPath: "items-mathassess", itemFilename:"MANum01SR.xml").save();
new Item(itemFolderPath: "tests/onjira/FunctionPointAnalysis1", itemFilename:"question10.xml").save();
@@ -93,4 +84,4 @@
}
def destroy = {
}
-}
\ No newline at end of file
+}
Modified: trunk/projects/QTIEngine/grails-app/conf/BuildConfig.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/conf/BuildConfig.groovy 2010-04-08 14:56:12 UTC (rev 2434)
+++ trunk/projects/QTIEngine/grails-app/conf/BuildConfig.groovy 2010-04-08 14:58:10 UTC (rev 2435)
@@ -31,7 +31,6 @@
//runtime 'org.slf4j:slf4j-log4j12:1.4.2'
runtime 'javax.mail:mail:1.4'
compile 'org.qtitools:QTItoolsUtils:1.0-SNAPSHOT'
- //runtime 'org.qtitools:MathAssess:1.0-SNAPSHOT'
}
}
Modified: trunk/projects/QTIEngine/grails-app/controllers/ItemController.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/controllers/ItemController.groovy 2010-04-08 14:56:12 UTC (rev 2434)
+++ trunk/projects/QTIEngine/grails-app/controllers/ItemController.groovy 2010-04-08 14:58:10 UTC (rev 2435)
@@ -179,7 +179,6 @@
assessmentSource.getExtensionIncludes().addAll(Renderer.DEFAULT_ASSESSMENT_XSLT_SOURCE.getExtensionIncludes());
ExtensibleXSLTSource itemSource = new ExtensibleXSLTSource();
- itemSource.getExtensionIncludes().add("/org/qtitools/mathassess/MathInteraction.xsl");
itemSource.getExtensionIncludes().addAll(Renderer.DEFAULT_ITEM_XSLT_SOURCE.getExtensionIncludes());
session.renderer[item.itemFolderPath] = new Renderer("../../content/"+item.itemFolderPath+"/",
Modified: trunk/projects/QTIEngine/grails-app/services/TestService.groovy
===================================================================
--- trunk/projects/QTIEngine/grails-app/services/TestService.groovy 2010-04-08 14:56:12 UTC (rev 2434)
+++ trunk/projects/QTIEngine/grails-app/services/TestService.groovy 2010-04-08 14:58:10 UTC (rev 2435)
@@ -41,7 +41,6 @@
assessmentSource.getExtensionIncludes().addAll(Renderer.DEFAULT_ASSESSMENT_XSLT_SOURCE.getExtensionIncludes());
ExtensibleXSLTSource itemSource = new ExtensibleXSLTSource();
- itemSource.getExtensionIncludes().add("/org/qtitools/mathassess/MathInteraction.xsl");
itemSource.getExtensionIncludes().addAll(Renderer.DEFAULT_ITEM_XSLT_SOURCE.getExtensionIncludes());
def folder = test.testFolderPath
Deleted: trunk/projects/QTIEngine/web-app/content/items-mathassess/MA-UT-01b-SR-Choice-arr.xml
===================================================================
--- trunk/projects/QTIEngine/web-app/content/items-mathassess/MA-UT-01b-SR-Choice-arr.xml 2010-04-08 14:56:12 UTC (rev 2434)
+++ trunk/projects/QTIEngine/web-app/content/items-mathassess/MA-UT-01b-SR-Choice-arr.xml 2010-04-08 14:58:10 UTC (rev 2435)
@@ -1,329 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<assessmentItem
- xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:ma="http://mathassess.qtitools.org/xsd/mathassess"
- xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 imsqti_v2p1.xsd
- http://mathassess.qtitools.org/xsd/mathassess mathassess.xsd"
- xmlns:m="http://www.w3.org/1998/Math/MathML" adaptive="false"
- identifier="MA-UT-01b-SRP-Choice-arr" timeDependent="false" title="Algebraic Fractions - Is evaluation possible? (1b)">
-<!--
-Simple ScriptRule template processing, textEntryInteraction and numerical judging in response processing
--->
- <responseDeclaration identifier="RESPONSE" cardinality="single" baseType="identifier">
- <correctResponse>
- <value>ChoiceA</value>
- </correctResponse>
- </responseDeclaration>
- <responseDeclaration baseType="boolean" cardinality="single" identifier="HINTREQUEST" />
- <responseDeclaration baseType="boolean" cardinality="single" identifier="SOLREQUEST" />
- <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float">
- <defaultValue>
- <value>0.0</value>
- </defaultValue>
- </outcomeDeclaration>
- <outcomeDeclaration identifier="FEEDBACK" cardinality="single" baseType="identifier"/>
- <templateDeclaration baseType="boolean"
- cardinality="single" identifier="keepRandomSeed" mathVariable="false"
- paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iRandomSeed"
- mathVariable="false" paramVariable="false"/>
- <templateDeclaration baseType="boolean" cardinality="single" identifier="dummy" mathVariable="false" paramVariable="false"/>
- <templateDeclaration baseType="integer" cardinality="single" identifier="iA" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iAbsA" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iSignA" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iB" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iP" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iP2" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iQ" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mX" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mY" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mZ" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mNum" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mDen" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="string" cardinality="single" identifier="pNum" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="string" cardinality="single" identifier="pDen" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="string" cardinality="single" identifier="pX" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="string" cardinality="single" identifier="pZ" mathVariable="true" paramVariable="false" />
- <templateProcessing>
- <!-- simple randomisation begins -->
- <setTemplateValue identifier="dummy">
- <customOperator class="org.qtitools.mathassess.ScriptRule" ma:syntax="text/x-maxima">
- <baseValue baseType="string">
- <![CDATA[
- s1 : make_random_state(true)$ set_random_state(s1);
- simp:true;
- iAbsA : ev((random(9)+1),simp);
- iSignA : ev(random(3),simp);
- if iSignA>0 then iA : ev(iAbsA,simp) else iA : ev(-iAbsA,simp);
- iB: ev(((random(9)+1)*(random(2)*2-1)),simp);
- array(aarr,6);
- fillarray(aarr,[a,c,p,r,s,u,x]);
- mX:aarr[random(7)];
- fillarray(aarr,[b,h,j,t,v,y,z]);
- mY:aarr[random(7)];
- fillarray(aarr,[d,g,k,m,n,q,w]);
- mZ:aarr[random(7)];
- mNum:mX+iB;
- iP:ev(-iA,simp);
- iQ:ev(-iB,simp);
- iP2:ev(2*iP,simp);
- simp:false;
- if iSignA=0 then mDen: mZ + iAbsA else (if iSignA=1 then mDen: mZ-iAbsA else mDen:iAbsA-mZ );
- ]]>
- </baseValue>
- </customOperator>
- </setTemplateValue>
- <setTemplateValue identifier="pNum">
- <fieldValue fieldIdentifier="PMathML">
- <variable identifier="mNum"/>
- </fieldValue>
- </setTemplateValue>
- <setTemplateValue identifier="pDen">
- <fieldValue fieldIdentifier="PMathML">
- <variable identifier="mDen"/>
- </fieldValue>
- </setTemplateValue>
- <setTemplateValue identifier="pX">
- <fieldValue fieldIdentifier="PMathML">
- <variable identifier="mZ"/>
- </fieldValue>
- </setTemplateValue>
- <setTemplateValue identifier="pZ">
- <fieldValue fieldIdentifier="PMathML">
- <variable identifier="mZ"/>
- </fieldValue>
- </setTemplateValue>
- </templateProcessing>
- <itemBody><!-- contains MathML -->
- <p>For what value of  
- <m:math>
- <m:semantics>
- <m:mrow>
- <m:mi>iA</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{iA}\]</m:annotation>
- </m:semantics>
- </m:math>  will it not be possible to evaluate
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mfrac>
- <m:mrow>
- <m:mi>mNum</m:mi>
- </m:mrow>
- <m:mrow>
- <m:mi>mDen</m:mi>
- </m:mrow>
- </m:mfrac>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\frac{\qv{mNum}}{\qv{mDen}}\]</m:annotation>
- </m:semantics>
- </m:math>
- </p>
- <div>
- <table>
- <tbody>
- <tr>
- <td>
- <choiceInteraction responseIdentifier="RESPONSE" shuffle="true" maxChoices="1">
- <!--<prompt>Select one of these options:</prompt>-->
- <simpleChoice identifier="ChoiceA">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iA</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}=\qv{iA}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackInline outcomeIdentifier="FEEDBACK" identifier="ChoiceA" showHide="show">  Correct answer, 1 mark.</feedbackInline>
- </simpleChoice>
- <simpleChoice identifier="ChoiceB">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iP</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}=\qv{iP}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackBlock outcomeIdentifier="FEEDBACK" identifier="ChoiceB" showHide="show"><p>  The fraction cannot be evaluated when the denominator evaluates to zero.</p>
- <p>However, when  
- <m:math>
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iP</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}=\qv{iP}\]</m:annotation>
- </m:semantics>
- </m:math>  it evaluates to <printedVariable identifier="iP2"/>.
- </p>
- <p>You have the wrong sign, 0.5 marks.</p></feedbackBlock>
- </simpleChoice>
- <simpleChoice identifier="ChoiceC">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mX</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iB</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mX}=\qv{iB}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackInline outcomeIdentifier="FEEDBACK" identifier="ChoiceC" showHide="show">  The fraction cannot be evaluated when the denominator evaluates to zero; the value of the numerator does not affect this.</feedbackInline>
- </simpleChoice>
- <simpleChoice identifier="ChoiceD">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mX</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iQ</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mX}=\qv{iQ}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackInline outcomeIdentifier="FEEDBACK" identifier="ChoiceD" showHide="show">  The fraction cannot be evaluated when the denominator evaluates to zero; the value of the numerator does not affect this.</feedbackInline>
- </simpleChoice>
- </choiceInteraction>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <feedbackBlock identifier="SOLUTION" outcomeIdentifier="FEEDBACK" showHide="show">
- <div>
- <p>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mfrac>
- <m:mrow>
- <m:mi>mNum</m:mi>
- </m:mrow>
- <m:mrow>
- <m:mi>mDen</m:mi>
- </m:mrow>
- </m:mfrac>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\frac{\qv{mNum}}{\qv{mDen}}\]</m:annotation>
- </m:semantics>
- </m:math>
- </p>
- <p>cannot be evaluated when the denominator takes the value zero, since it is not possible to divide by zero.</p>
- <p>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mDen</m:mi>
- <m:mo>=</m:mo>
- <m:mn>0</m:mn>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mDen}=0\]</m:annotation>
- </m:semantics>
- </m:math>  when  
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iA</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}=\qv{iA}\]</m:annotation>
- </m:semantics>
- </m:math>
- </p>
- <p>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mfrac>
- <m:mrow>
- <m:mi>mNum</m:mi>
- </m:mrow>
- <m:mrow>
- <m:mi>mDen</m:mi>
- </m:mrow>
- </m:mfrac>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\frac{\qv{mNum}}{\qv{mDen}}\]</m:annotation>
- </m:semantics>
- </m:math>
- </p>
- <p>cannot be evaluated when  
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iA</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}=\qv{iA}\]</m:annotation>
- </m:semantics>
- </m:math>.
- </p>
- </div>
- </feedbackBlock>
- <feedbackBlock identifier="HINT" outcomeIdentifier="FEEDBACK" showHide="show" >
- <p>When is it impossible to evaluate a fraction?</p>
- </feedbackBlock>
- <p>
- <endAttemptInteraction responseIdentifier="HINTREQUEST" title="Show Hint" />
- <endAttemptInteraction responseIdentifier="SOLREQUEST" title="Show Solution" />
- </p>
- </itemBody>
- <responseProcessing><!-- basic string match, includes feedback on specific errors -->
- <responseCondition>
- <responseIf>
- <variable identifier="HINTREQUEST"/>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">HINT</baseValue>
- </setOutcomeValue>
- </responseIf>
- <responseElseIf>
- <variable identifier="SOLREQUEST"/>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">SOLUTION</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElse>
- <responseCondition>
- <responseIf>
- <match>
- <variable identifier="RESPONSE"/>
- <correct identifier="RESPONSE"/>
- </match>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">1</baseValue>
- </setOutcomeValue>
- </responseIf>
- <responseElseIf>
- <match>
- <variable identifier="RESPONSE"/>
- <baseValue baseType="identifier">ChoiceB</baseValue>
- </match>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">0.5</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElse>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">0</baseValue>
- </setOutcomeValue>
- </responseElse>
- </responseCondition>
- <setOutcomeValue identifier="FEEDBACK">
- <variable identifier="RESPONSE"/>
- </setOutcomeValue>
- </responseElse>
- </responseCondition>
- </responseProcessing>
-</assessmentItem>
Deleted: trunk/projects/QTIEngine/web-app/content/items-mathassess/MA-UT-01d-SR-Num-arr.xml
===================================================================
--- trunk/projects/QTIEngine/web-app/content/items-mathassess/MA-UT-01d-SR-Num-arr.xml 2010-04-08 14:56:12 UTC (rev 2434)
+++ trunk/projects/QTIEngine/web-app/content/items-mathassess/MA-UT-01d-SR-Num-arr.xml 2010-04-08 14:58:10 UTC (rev 2435)
@@ -1,286 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<assessmentItem
- xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:ma="http://mathassess.qtitools.org/xsd/mathassess"
- xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 imsqti_v2p1.xsd
- http://mathassess.qtitools.org/xsd/mathassess mathassess.xsd"
- xmlns:m="http://www.w3.org/1998/Math/MathML" adaptive="false"
- identifier="MA-UT-01d-SR-Num" timeDependent="false" title="Algebraic Fractions - Is evaluation possible? (1d)">
-<!--
-Simple ScriptRule template processing, textEntryInteraction and numerical judging in response processing
--->
- <responseDeclaration identifier="RESPONSE" cardinality="single" baseType="integer" />
- <responseDeclaration baseType="boolean" cardinality="single" identifier="HINTREQUEST" />
- <responseDeclaration baseType="boolean" cardinality="single" identifier="SOLREQUEST" />
- <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float">
- <defaultValue>
- <value>0.0</value>
- </defaultValue>
- </outcomeDeclaration>
- <outcomeDeclaration identifier="FEEDBACK" cardinality="single" baseType="identifier"/>
- <templateDeclaration baseType="boolean"
- cardinality="single" identifier="keepRandomSeed" mathVariable="false"
- paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iRandomSeed"
- mathVariable="false" paramVariable="false"/>
- <templateDeclaration baseType="boolean" cardinality="single" identifier="dummy" mathVariable="false" paramVariable="false"/>
- <templateDeclaration baseType="integer" cardinality="single" identifier="iA" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iAbsA" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iSignA" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iP" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iP2" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mX" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mY" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mZ" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mNum" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record" identifier="mDen" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="string" cardinality="single" identifier="pNum" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="string" cardinality="single" identifier="pDen" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="string" cardinality="single" identifier="pX" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="string" cardinality="single" identifier="pZ" mathVariable="true" paramVariable="false" />
- <templateProcessing>
- <!-- simple randomisation begins -->
- <setTemplateValue identifier="dummy">
- <customOperator class="org.qtitools.mathassess.ScriptRule" ma:syntax="text/x-maxima">
- <baseValue baseType="string">
- <![CDATA[
- s1 : make_random_state(true)$ set_random_state(s1);
- iAbsA : ev((random(9)+1),simp);
- iSignA : ev(random(3),simp);
- if iSignA>0 then ev(iAbsA,simp) else iA : ev(-iAbsA,simp);
- array(aarr,6);
- fillarray(aarr,[a,c,p,r,s,u,x]);
- mX:aarr[random(7)];
- fillarray(aarr,[b,h,j,t,v,y,z]);
- mY:aarr[random(7)];
- fillarray(aarr,[d,g,k,m,n,q,w]);
- mZ:aarr[random(7)];
- mNum:mX+mY;
- iP:ev(-iA,simp);
- iP2:ev(2*iP,simp);
- simp:false;
- if iSignA=0 then mDen: mZ + iAbsA else (if iSignA=1 then mDen: mZ-iAbsA else mDen:iAbsA-mZ );
- ]]>
- </baseValue>
- </customOperator>
- </setTemplateValue>
- <setTemplateValue identifier="pNum">
- <fieldValue fieldIdentifier="PMathML">
- <variable identifier="mNum"/>
- </fieldValue>
- </setTemplateValue>
- <setTemplateValue identifier="pDen">
- <fieldValue fieldIdentifier="PMathML">
- <variable identifier="mDen"/>
- </fieldValue>
- </setTemplateValue>
- <setTemplateValue identifier="pZ">
- <fieldValue fieldIdentifier="PMathML">
- <variable identifier="mZ"/>
- </fieldValue>
- </setTemplateValue>
- </templateProcessing>
- <itemBody><!-- contains MathML -->
- <p>For what value of  
- <m:math>
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}\]</m:annotation>
- </m:semantics>
- </m:math>  will it not be possible to evaluate
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mfrac>
- <m:mrow>
- <m:mi>mNum</m:mi>
- </m:mrow>
- <m:mrow>
- <m:mi>mDen</m:mi>
- </m:mrow>
- </m:mfrac>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\frac{\qv{mNum}}{\qv{mDen}}\]</m:annotation>
- </m:semantics>
- </m:math>
- </p>
- <div>
- <table>
- <tbody>
- <tr>
- <td>
- <textEntryInteraction expectedLength="10" responseIdentifier="RESPONSE" label="mathInput" />
- </td>
- <td>
- <feedbackInline identifier="CORRECT" outcomeIdentifier="FEEDBACK" showHide="show">
- Correct, 1 mark.
- </feedbackInline>
- <feedbackBlock identifier="INCORR-SIGN" outcomeIdentifier="FEEDBACK" showHide="show">
- <p>The fraction cannot be evaluated when the denominator evaluates to zero.</p>
- <p>However, when  
- <m:math>
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iP</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}=\qv{iP}\]</m:annotation>
- </m:semantics>
- </m:math>  it evaluates to <printedVariable identifier="iP2"/>.
- </p>
- <p>You have the wrong sign, 0.5 marks.</p>
- </feedbackBlock>
- <feedbackInline identifier="INCORRECT" outcomeIdentifier="FEEDBACK" showHide="show">
- You should ask for tutor help on this question.
- </feedbackInline>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <feedbackBlock identifier="SOLUTION" outcomeIdentifier="FEEDBACK" showHide="show">
- <div>
- <p>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mfrac>
- <m:mrow>
- <m:mi>mNum</m:mi>
- </m:mrow>
- <m:mrow>
- <m:mi>mDen</m:mi>
- </m:mrow>
- </m:mfrac>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\frac{\qv{mNum}}{\qv{mDen}}\]</m:annotation>
- </m:semantics>
- </m:math>
- </p>
- <p>cannot be evaluated when the denominator takes the value zero, since it is not possible to divide by zero.</p>
- <p>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mDen</m:mi>
- <m:mo>=</m:mo>
- <m:mn>0</m:mn>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mDen}=0\]</m:annotation>
- </m:semantics>
- </m:math>  when  
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iA</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}=\qv{iA}\]</m:annotation>
- </m:semantics>
- </m:math>
- </p>
- <p>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mfrac>
- <m:mrow>
- <m:mi>mNum</m:mi>
- </m:mrow>
- <m:mrow>
- <m:mi>mDen</m:mi>
- </m:mrow>
- </m:mfrac>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\frac{\qv{mNum}}{\qv{mDen}}\]</m:annotation>
- </m:semantics>
- </m:math>
- </p>
- <p>cannot be evaluated when  
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>mZ</m:mi>
- <m:mo>=</m:mo>
- <m:mi>iA</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{mZ}=\qv{iA}\]</m:annotation>
- </m:semantics>
- </m:math>.
- </p>
- </div>
- </feedbackBlock>
- <feedbackBlock identifier="HINT" outcomeIdentifier="FEEDBACK" showHide="show" >
- <p>When is it impossible to evaluate a fraction?</p>
- </feedbackBlock>
- <p>
- <endAttemptInteraction responseIdentifier="HINTREQUEST" title="Show Hint" />
- <endAttemptInteraction responseIdentifier="SOLREQUEST" title="Show Solution" />
- </p>
- </itemBody>
- <responseProcessing><!-- basic string match, includes feedback on specific errors -->
- <responseCondition>
- <responseIf>
- <variable identifier="HINTREQUEST"/>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">HINT</baseValue>
- </setOutcomeValue>
- </responseIf>
- <responseElseIf>
- <variable identifier="SOLREQUEST"/>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">SOLUTION</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElse>
- <responseCondition>
- <responseIf>
- <isNull>
- <variable identifier="RESPONSE"/>
- </isNull>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">0</baseValue>
- </setOutcomeValue>
- </responseIf>
- <responseElseIf>
- <match>
- <variable identifier="RESPONSE"/>
- <variable identifier="iA"/>
- </match>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">CORRECT</baseValue>
- </setOutcomeValue>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">1</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElseIf>
- <match>
- <variable identifier="RESPONSE"/>
- <variable identifier="iP"/>
- </match>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">INCORR-SIGN</baseValue>
- </setOutcomeValue>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">0.5</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElse>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">INCORRECT</baseValue>
- </setOutcomeValue>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">0</baseValue>
- </setOutcomeValue>
- </responseElse>
- </responseCondition>
- </responseElse>
- </responseCondition>
- </responseProcessing>
-</assessmentItem>
Deleted: trunk/projects/QTIEngine/web-app/content/items-mathassess/MAC02-SR-demo.xml
===================================================================
--- trunk/projects/QTIEngine/web-app/content/items-mathassess/MAC02-SR-demo.xml 2010-04-08 14:56:12 UTC (rev 2434)
+++ trunk/projects/QTIEngine/web-app/content/items-mathassess/MAC02-SR-demo.xml 2010-04-08 14:58:10 UTC (rev 2435)
@@ -1,411 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ma="http://mathassess.qtitools.org/xsd/mathassess"
- xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 imsqti_v2p1.xsd
- http://mathassess.qtitools.org/xsd/mathassess mathassess.xsd"
- xmlns:m="http://www.w3.org/1998/Math/MathML" adaptive="false"
- identifier="MAC02-SR" timeDependent="false"
- title="Expand brackets in a(x+b)+cx and simplify">
- <!--
- template processing with ScriptRule randomisation, ChoiceInteraction
- -->
- <responseDeclaration identifier="RESPONSE"
- cardinality="single" baseType="identifier">
- <correctResponse>
- <value>ChoiceA</value>
- </correctResponse>
- </responseDeclaration>
- <responseDeclaration baseType="boolean"
- cardinality="single" identifier="HINTREQUEST" />
- <responseDeclaration baseType="boolean"
- cardinality="single" identifier="SOLREQUEST" />
- <outcomeDeclaration identifier="SCORE" cardinality="single"
- baseType="float">
- <defaultValue>
- <value>0.0</value>
- </defaultValue>
- </outcomeDeclaration>
- <outcomeDeclaration identifier="FEEDBACK"
- cardinality="single" baseType="identifier" />
- <!-- add template processing, using QTIv2.1 native elements -->
- <templateDeclaration baseType="boolean"
- cardinality="single" identifier="keepRandomSeed" mathVariable="false"
- paramVariable="false" />
- <templateDeclaration baseType="integer" cardinality="single" identifier="iRandomSeed"
- mathVariable="false" paramVariable="false"/>
- <templateDeclaration baseType="boolean"
- cardinality="single" identifier="dummy" mathVariable="false"
- paramVariable="false" />
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iA" mathVariable="true"
- paramVariable="false">
- <defaultValue>
- <value>0</value>
- </defaultValue>
- </templateDeclaration>
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iAbsA" mathVariable="true"
- paramVariable="false" />
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iB" mathVariable="true"
- paramVariable="false">
- <defaultValue>
- <value>0</value>
- </defaultValue>
- </templateDeclaration>
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iAbsB" mathVariable="true"
- paramVariable="false" />
- <templateDeclaration cardinality="record"
- identifier="mSignB" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iC" mathVariable="true"
- paramVariable="false">
- <defaultValue>
- <value>0</value>
- </defaultValue>
- </templateDeclaration>
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iAbsC" mathVariable="true"
- paramVariable="false" />
- <templateDeclaration cardinality="record"
- identifier="mSignC" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iAB" mathVariable="true"
- paramVariable="false" />
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iAbsAB" mathVariable="true"
- paramVariable="false" />
- <templateDeclaration cardinality="record"
- identifier="mSignAB" mathVariable="true" paramVariable="false" />
- <templateDeclaration cardinality="record"
- identifier="mBadSignAB" mathVariable="true" paramVariable="false" />
- <templateDeclaration baseType="integer"
- cardinality="single" identifier="iApC" mathVariable="true"
- paramVariable="false" />
- <templateDeclaration cardinality="record"
- identifier="mX" mathVariable="true" paramVariable="false" />
- <templateProcessing>
- <!--
- now do the randomisation and mathematical calculations, using maxima
- -->
- <setTemplateValue identifier="dummy">
- <customOperator class="org.qtitools.mathassess.ScriptRule"
- ma:syntax="text/x-maxima">
- <baseValue baseType="string">
- <![CDATA[
- for iI:1 step 1 unless (not(abs(iA)=1) and not((iA+iC)=0) and not(abs(iA+iC)=1) and not(abs(iC)=0) and gcd(iA*iB,iA+iC)=1) do block(
- iA: ev((random(9)+1),simp),
- iB: ev((random(9)+1)*(-1),simp),
- iC: ev((random(9)+1),simp));
- iAbsA: ev(abs(iA),simp);
- iAbsB: ev(abs(iB),simp);
- iAbsC: ev(abs(iC),simp);
- iAB: ev(iA*iB,simp);
- iAbsAB: ev(abs(iAB),simp);
- iApC: ev(iA+iC,simp);
- array(aarr,19);
- fillarray(aarr,[a,b,c,d,g,h,k,m,n,p,q,r,s,t,u,v,w,x,y,z]);
- mX:aarr[random(19)];
- ]]>
- </baseValue>
- </customOperator>
- </setTemplateValue>
- </templateProcessing>
- <itemBody>
- <!--
- templateVariables are used in the question statement, choices and
- feedback, including some of type string with mathVariable set;
- printedVariable for these should produce MathML
- -->
- <p>
- Expand the brackets in
- <m:math>
- <m:semantics>
- <m:mrow>
- <m:mi>iA</m:mi>
- <m:mo>(</m:mo>
- <m:mi>mX</m:mi>
- <m:mo>-</m:mo>
- <!-- Using variable substitution in mo (QTI extension) -->
- <m:mi>iAbsB</m:mi>
- <m:mo>)</m:mo>
- <m:mo>+</m:mo>
- <!-- Using variable substitution in mo (QTI extension) -->
- <m:mi>iAbsC</m:mi>
- <m:mi>mX</m:mi>
- <!--
- Using variable substitution for our random letter (QTI
- extension)
- -->
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{iA}(\qv{mX}
- - \qv{iAbs}) + \qv{iAbsC} \qv{mX}\]
- </m:annotation>
- </m:semantics>
- </m:math>
- and simplify the result.
- </p>
- <choiceInteraction responseIdentifier="RESPONSE"
- shuffle="true" maxChoices="1">
- <!--<prompt>Select one of these options:</prompt>-->
- <simpleChoice identifier="ChoiceA">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>iApC</m:mi>
- <m:mi>mX</m:mi>
- <m:mo>-</m:mo>
- <m:mi>iAbsAB</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{iApC} \qv{mX}
- - \qv{iAbsAB}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackInline outcomeIdentifier="FEEDBACK"
- identifier="ChoiceA" showHide="show">Well done - you got the
- correct answer. Two marks.</feedbackInline>
- </simpleChoice>
- <simpleChoice identifier="ChoiceB">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>iApC</m:mi>
- <m:mi>mX</m:mi>
- <m:mo>-</m:mo>
- <m:mi>iAbsB</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{iApC} \qv{mX}
- - \qv{iAbsB}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackInline outcomeIdentifier="FEEDBACK"
- identifier="ChoiceB" showHide="show">Remember that, when
- expanding brackets, all terms inside must be multiplied by
- whatever is outside. However, you got one term in the answer correct, so 1
- mark.</feedbackInline>
- </simpleChoice>
- <simpleChoice identifier="ChoiceC">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>iApC</m:mi>
- <m:mi>mX</m:mi>
- <m:mo>+</m:mo>
- <m:mi>iAbsAB</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{iApC} \qv{mX}
- + \qv{iAbsAB}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackInline outcomeIdentifier="FEEDBACK"
- identifier="ChoiceC" showHide="show">
- When expanding the bracket the product of
- <printedVariable identifier="iA" />
- and
- <printedVariable identifier="iB" />
- is
- <printedVariable identifier="iAB" />
- .
- However, you got one term in the answer correct so 1 mark.
- </feedbackInline>
- </simpleChoice>
- <simpleChoice identifier="ChoiceD">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>iA</m:mi>
- <m:mi>mX</m:mi>
- <m:mo>-</m:mo>
- <m:mi>iAbsAB</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{iA} \qv{mX}
- - \qv{iAbsAB}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackInline outcomeIdentifier="FEEDBACK"
- identifier="ChoiceD" showHide="show">
- Remember to include both of the terms in
- <m:math>
- <m:semantics>
- <m:mrow>
- <m:mi>mX</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[mX\]</m:annotation>
- </m:semantics>
- </m:math>
- . However, you got one term in the answer correct so 1 mark.
- </feedbackInline>
- </simpleChoice>
- <simpleChoice identifier="ChoiceE">
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>iA</m:mi>
- <m:mi>mX</m:mi>
- <m:mo>-</m:mo>
- <m:mi>iAbsB</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[\qv{iA} \qv{mX}
- - \qv{iAbsB}\]</m:annotation>
- </m:semantics>
- </m:math>
- <feedbackInline outcomeIdentifier="FEEDBACK"
- identifier="ChoiceE" showHide="show">You should ask for tutor
- help on this question.</feedbackInline>
- </simpleChoice>
- </choiceInteraction>
- <feedbackBlock identifier="SOLUTION" outcomeIdentifier="FEEDBACK"
- showHide="show">
- <table>
- <tbody>
- <tr>
- <td>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>iA</m:mi>
- <m:mo>(</m:mo>
- <m:mi>mX</m:mi>
- <m:mo>-</m:mo>
- <m:mi>iAbsB</m:mi>
- <m:mo>)</m:mo>
- <m:mo>+</m:mo>
- <m:mi>iAbsC</m:mi>
- <m:mi>mX</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[= \qv{iA}(\qv{mX}
- - \qv{iAbsB}) + \qv{iAbsC} \qv{mX}\]
- </m:annotation>
- </m:semantics>
- </m:math>
- </td>
- <td>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mo>=</m:mo>
- <m:mrow>
- <m:mi>iA</m:mi>
- <m:mo>×</m:mo>
- <m:mi>mX</m:mi>
- </m:mrow>
- <m:mo>-</m:mo>
- <m:mrow>
- <m:mi>iAbsA</m:mi>
- <m:mo>×</m:mo>
- <m:mi>iAbsB</m:mi>
- </m:mrow>
- <m:mo>+</m:mo>
- <m:mrow>
- <m:mi>iAbsC</m:mi>
- <m:mo>×</m:mo>
- <m:mi>mX</m:mi>
- </m:mrow>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[= \qv{iA} \times
- \qv{mX} - \qv{iAbsA} \times \qv{iAbsB} +
- \qv{iAbsC} \times \qv{mX}\]</m:annotation>
- </m:semantics>
- </m:math>
- </td>
- </tr>
- <tr>
- <td> </td>
- <td>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mo>=</m:mo>
- <m:mi>iApC</m:mi>
- <m:mi>mX</m:mi>
- <m:mo>-</m:mo>
- <m:mi>iAbsAB</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[= \qv{iApC} \qv{mX}
- - \qv{iAbsAB}\]</m:annotation>
- </m:semantics>
- </m:math>
- </td>
- </tr>
- </tbody>
- </table>
- </feedbackBlock>
- <feedbackBlock identifier="HINT" outcomeIdentifier="FEEDBACK"
- showHide="show">
- <p>Expand the bracket and collect like terms.</p>
- </feedbackBlock>
- <p>
- <endAttemptInteraction responseIdentifier="HINTREQUEST"
- title="Show Hint" />
- <endAttemptInteraction responseIdentifier="SOLREQUEST"
- title="Show Solution" />
- </p>
- </itemBody>
- <responseProcessing>
- <!-- basic match, includes feedback on specific errors -->
- <responseCondition>
- <responseIf>
- <variable identifier="HINTREQUEST" />
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">HINT</baseValue>
- </setOutcomeValue>
- </responseIf>
- <responseElseIf>
- <variable identifier="SOLREQUEST" />
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">SOLUTION</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElse>
- <responseCondition>
- <responseIf>
- <match>
- <variable identifier="RESPONSE" />
- <correct identifier="RESPONSE" />
- </match>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">2</baseValue>
- </setOutcomeValue>
- </responseIf>
- <responseElseIf>
- <match>
- <variable identifier="RESPONSE" />
- <baseValue baseType="identifier">ChoiceB</baseValue>
- </match>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">1</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElseIf>
- <match>
- <variable identifier="RESPONSE" />
- <baseValue baseType="identifier">ChoiceC</baseValue>
- </match>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">1</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElseIf>
- <match>
- <variable identifier="RESPONSE" />
- <baseValue baseType="identifier">ChoiceD</baseValue>
- </match>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">1</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElse>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">0</baseValue>
- </setOutcomeValue>
- </responseElse>
- </responseCondition>
- <setOutcomeValue identifier="FEEDBACK">
- <variable identifier="RESPONSE" />
- </setOutcomeValue>
- </responseElse>
- </responseCondition>
- </responseProcessing>
-</assessmentItem>
-
Deleted: trunk/projects/QTIEngine/web-app/content/items-mathassess/MAD03a.xml
===================================================================
--- trunk/projects/QTIEngine/web-app/content/items-mathassess/MAD03a.xml 2010-04-08 14:56:12 UTC (rev 2434)
+++ trunk/projects/QTIEngine/web-app/content/items-mathassess/MAD03a.xml 2010-04-08 14:58:10 UTC (rev 2435)
@@ -1,339 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<assessmentItem
- xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:ma="http://mathassess.qtitools.org/xsd/mathassess"
- xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 imsqti_v2p1.xsd
- http://mathassess.qtitools.org/xsd/mathassess mathassess.xsd"
- xmlns:m="http://www.w3.org/1998/Math/MathML" adaptive="false"
- identifier="MAD03a" timeDependent="false" title="Nxpand brackets in a(x+b)+cx and simplify (4)">
-<!--
-No randomisation in template processing, CasProcess to set answer and buggy answers, MathEntryInteraction, casCompare in response processing
--->
-
- <responseDeclaration identifier="RESPONSE" cardinality="record" />
- <responseDeclaration baseType="string" cardinality="single" identifier="printMath" />
- <responseDeclaration baseType="boolean" cardinality="single" identifier="HINTREQUEST" />
- <responseDeclaration baseType="boolean" cardinality="single" identifier="SOLREQUEST" />
- <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float">
- <defaultValue>
- <value>0.0</value>
- </defaultValue>
- </outcomeDeclaration>
- <outcomeDeclaration identifier="FEEDBACK" cardinality="single" baseType="identifier"/>
- <templateDeclaration baseType="boolean" cardinality="single" identifier="dummy" mathVariable="false" paramVariable="false"/>
- <templateDeclaration cardinality="record" identifier="mAns" mathVariable="true" paramVariable="false"/>
- <templateDeclaration cardinality="record" identifier="mBad1" mathVariable="true" paramVariable="false"/>
- <templateDeclaration cardinality="record" identifier="mBad2" mathVariable="true" paramVariable="false"/>
- <templateDeclaration cardinality="record" identifier="mBad3" mathVariable="true" paramVariable="false"/>
- <templateDeclaration cardinality="record" identifier="mBad4" mathVariable="true" paramVariable="false"/>
- <templateDeclaration cardinality="record" identifier="mBad5" mathVariable="true" paramVariable="false"/>
- <templateDeclaration cardinality="record" identifier="mBad6" mathVariable="true" paramVariable="false"/>
- <templateDeclaration cardinality="record" identifier="mBad7" mathVariable="true" paramVariable="false"/>
- <templateProcessing>
-
- <setTemplateValue identifier="dummy">
- <customOperator class="org.qtitools.mathassess.ScriptRule" ma:syntax="text/x-maxima">
- <baseValue baseType="string">
- <![CDATA[
- simp:false;
- mAns:6*x-10;
- mBad1:-10+6*x;
- mBad2:2*x-10+4*x;
- mBad3:6*x-5;
- mBad4:5*x-10;
- mBad5:6*x+10;
- mBad6:2*(3*x-5);
- mBad7:2*(x-5)+4*x;
- ]]>
- </baseValue>
- </customOperator>
- </setTemplateValue>
-
- </templateProcessing>
- <itemBody><!-- contains MathML -->
- <p>Expand the brackets in   
- <m:math >
- <m:semantics>
- <m:mrow>
- <m:mn>2</m:mn>
- <m:mo>(</m:mo>
- <m:mi>x</m:mi>
- <m:mo>-</m:mo>
- <m:mn>5</m:mn>
- <m:mo>)</m:mo>
- <m:mo>+</m:mo>
- <m:mn>4</m:mn>
- <m:mi>x</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[ 2(x-5)+4x\]</m:annotation>
- </m:semantics>
- </m:math>   and simplify the result.
- </p>
- <div>
- <table>
- <tbody>
- <tr>
- <td>
- <customInteraction class="org.qtitools.mathassess.MathEntryInteraction" responseIdentifier="RESPONSE" ma:syntax="text/x-maxima" ma:expectedLength="20" ma:printIdentifier="printMath" />
- </td>
- <td>
- <feedbackInline identifier="CORRECT" outcomeIdentifier="FEEDBACK" showHide="show">
- Correct
- </feedbackInline>
- <feedbackInline identifier="CORRECT-ORD" outcomeIdentifier="FEEDBACK" showHide="show">
- Your answer is correct, so you gain two marks, but it would be more usual to write it in the form   
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mn>6</m:mn>
- <m:mi>x</m:mi>
- <m:mo>-</m:mo>
- <m:mn>10</m:mn>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[6x-10\]</m:annotation>
- </m:semantics>
- </m:math>.
- </feedbackInline>
- <feedbackInline identifier="NOT-SIMP" outcomeIdentifier="FEEDBACK" showHide="show">
- You have expanded the bracket correctly but failed to simplify as the question asks; 1 mark.
- </feedbackInline>
- <feedbackInline identifier="NOT-ALL-MULT" outcomeIdentifier="FEEDBACK" showHide="show">
- Remember that, when expanding brackets, all terms inside must be multiplied by whatever is outside.
- However, you got one term in the answer correct, so 1 mark.
- </feedbackInline>
- <feedbackInline identifier="WRONG-SIGN-CONSTANT" outcomeIdentifier="FEEDBACK" showHide="show">
- When expanding the bracket the product of 2 and -5 is -10.
- However, you got one term in the answer correct so 1 mark.
- </feedbackInline>
- <feedbackInline identifier="FACTOR-ALL" outcomeIdentifier="FEEDBACK" showHide="show">
- The question expects you to rewrite the expression without brackets.
- </feedbackInline>
- <feedbackInline identifier="ORIG-EXPR" outcomeIdentifier="FEEDBACK" showHide="show">
- Your input is equivalent to the expression we started with!
- </feedbackInline>
- <feedbackInline identifier="INCORRECT" outcomeIdentifier="FEEDBACK" showHide="show">
- You should ask for tutor help on this question.
- </feedbackInline>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <feedbackBlock identifier="SOLUTION" outcomeIdentifier="FEEDBACK" showHide="show">
- <div>
- <table>
- <tbody>
- <tr>
- <td>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mi>2</m:mi>
- <m:mo>(</m:mo>
- <m:mi>x</m:mi>
- <m:mo>-</m:mo>
- <m:mi>5</m:mi>
- <m:mo>)</m:mo>
- <m:mo>+</m:mo>
- <m:mi>4</m:mi>
- <m:mi>x</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[ 2(x-5)+4x\]</m:annotation>
- </m:semantics>
- </m:math>
- </td>
- <td>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mo> = </m:mo>
- <m:mrow>
- <m:mi>2</m:mi>
- <m:mo>×</m:mo>
- <m:mi>x</m:mi>
- </m:mrow>
- <m:mo>-</m:mo>
- <m:mrow>
- <m:mi>2</m:mi>
- <m:mo>×</m:mo>
- <m:mi>5</m:mi>
- </m:mrow>
- <m:mo>+</m:mo>
- <m:mrow>
- <m:mi>4</m:mi>
- <m:mo>×</m:mo>
- <m:mi>x</m:mi>
- </m:mrow>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[ = 2 \times x - 2 \times 5 + 4 \times x\]</m:annotation>
- </m:semantics>
- </m:math>
- </td>
- </tr>
- <tr>
- <td> </td>
- <td>
- <m:math display="block">
- <m:semantics>
- <m:mrow>
- <m:mo> = </m:mo>
- <m:mi>6</m:mi>
- <m:mi>x</m:mi>
- <m:mo>-</m:mo>
- <m:mi>10</m:mi>
- </m:mrow>
- <m:annotation encoding='LaTeX'>\[ = 6x - 10\]</m:annotation>
- </m:semantics>
- </m:math>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </feedbackBlock>
- <feedbackBlock identifier="HINT" outcomeIdentifier="FEEDBACK" showHide="show" >
- <p>Expand the bracket and collect like terms.</p>
- </feedbackBlock>
- <p>
- <endAttemptInteraction responseIdentifier="HINTREQUEST" title="Show Hint" />
- <endAttemptInteraction responseIdentifier="SOLREQUEST" title="Show Solution" />
- </p>
- </itemBody>
- <responseProcessing><!-- basic string match, includes feedback on specific errors -->
- <responseCondition>
- <responseIf>
- <variable identifier="HINTREQUEST"/>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">HINT</baseValue>
- </setOutcomeValue>
- </responseIf>
- <responseElseIf>
- <variable identifier="SOLREQUEST"/>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">SOLUTION</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElse>
- <responseCondition>
- <responseIf>
- <isNull>
- <variable identifier="RESPONSE"/>
- </isNull>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">0</baseValue>
- </setOutcomeValue>
- </responseIf>
- <responseElseIf>
- <customOperator class ="org.qtitools.mathassess.CasCompare" ma:syntax="text/x-maxima" ma:action="syntequal" ma:simplify="false">
- <variable identifier = "RESPONSE"/>
- <variable identifier = "mAns"/>
- </customOperator>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">CORRECT</baseValue>
- </setOutcomeValue>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">2</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElseIf>
- <customOperator class ="org.qtitools.mathassess.CasCompare" ma:syntax="text/x-maxima" ma:action="syntequal" ma:simplify="false">
- <variable identifier = "RESPONSE"/>
- <variable identifier = "mBad1"/>
- </customOperator>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">CORRECT-ORD</baseValue>
- </setOutcomeValue>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">2</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElseIf>
- <!--<customOperator class ="org.qtitools.mathassess.CasCompare" ma:syntax="text/x-maxima" ma:action="syntequal" ma:simplify="false">
- <variable identifier = "RESPONSE"/>
- <variable identifier = "mBad2"/>
- </customOperator>-->
- <customOperator class ="org.qtitools.mathassess.CasCondition" ma:syntax="text/x-maxima" ma:simplify="false" ma:code="is(polynomialp($1,[x])and(is(hipow(expand($1),x)=hipow(expand($2),x)))and(not(coeff($1,x,1)=coeff($2,x,1))or(not(coeff($1,x,0)=coeff($2,x,0))))and(is(ev($1-$2,simp)=0)));">
- <variable identifier = "RESPONSE"/>
- <variable identifier = "mAns"/>
- </customOperator>
- <setOutcomeValue identifier="FEEDBACK">
- <baseValue baseType="identifier">NOT-SIMP</baseValue>
- </setOutcomeValue>
- <setOutcomeValue identifier="SCORE">
- <baseValue baseType="float">1</baseValue>
- </setOutcomeValue>
- </responseElseIf>
- <responseElseIf>
- <customOperator class ="org.qtitools.mathassess.CasCompare" ma:syntax="text/x-maxima" ma:action="syntequal" ma:simplify="false">
- <variable identifier = "RESPONSE"/>
- <variable identifier = "mBad3"/>
- </customOperator>
- <...
[truncated message content] |