Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McController.java =================================================================== diff -u -r9846a1d61f34b45ba6db0e6a7daf2a620e607c83 -rbb0f9854016a8e3380c17cbfed58cd6d02a8f54c --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McController.java (.../McController.java) (revision 9846a1d61f34b45ba6db0e6a7daf2a620e607c83) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McController.java (.../McController.java) (revision bb0f9854016a8e3380c17cbfed58cd6d02a8f54c) @@ -441,11 +441,13 @@ return tempQuestionDtos; } + /** + * Adds multiple QbQuestions, imported from QTI + */ @RequestMapping(value = "/importQbQuestions", method = RequestMethod.POST) private String importQbQuestions(HttpServletRequest request, @RequestParam String sessionMapId, @RequestParam String qbQuestionUids) { // get a list of QB question UIDs and add each of them to the activity - // this happens on QTI import for (String qbQuestionUid : qbQuestionUids.split(",")) { if (StringUtils.isNotBlank(qbQuestionUid)) { importQbQuestion(request, sessionMapId, Long.valueOf(qbQuestionUid)); Index: lams_tool_lamc/web/authoring/BasicContent.jsp =================================================================== diff -u -r9846a1d61f34b45ba6db0e6a7daf2a620e607c83 -rbb0f9854016a8e3380c17cbfed58cd6d02a8f54c --- lams_tool_lamc/web/authoring/BasicContent.jsp (.../BasicContent.jsp) (revision 9846a1d61f34b45ba6db0e6a7daf2a620e607c83) +++ lams_tool_lamc/web/authoring/BasicContent.jsp (.../BasicContent.jsp) (revision bb0f9854016a8e3380c17cbfed58cd6d02a8f54c) @@ -81,6 +81,7 @@ success: function(response) { // question list gets refreshed $('#itemArea').html(response); + refreshThickbox(); } }); } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/AuthoringController.java =================================================================== diff -u -r33aeeae9d9764b3411e04a48ee165e526c240f44 -rbb0f9854016a8e3380c17cbfed58cd6d02a8f54c --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 33aeeae9d9764b3411e04a48ee165e526c240f44) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/AuthoringController.java (.../AuthoringController.java) (revision bb0f9854016a8e3380c17cbfed58cd6d02a8f54c) @@ -381,6 +381,23 @@ } /** + * Adds multiple QbQuestions, imported from QTI + */ + @RequestMapping(value = "/importQbQuestions", method = RequestMethod.POST) + private String importQbQuestions(HttpServletRequest request, @RequestParam String sessionMapID, + @RequestParam String qbQuestionUids) { + // get a list of QB question UIDs and add each of them to the activity + for (String qbQuestionUid : qbQuestionUids.split(",")) { + if (StringUtils.isNotBlank(qbQuestionUid)) { + importQbQuestion(request, sessionMapID, Long.valueOf(qbQuestionUid)); + } + } + // set session map ID so that itemlist.jsp can get sessionMAP + request.setAttribute(ScratchieConstants.ATTR_SESSION_MAP_ID, sessionMapID); + return "pages/authoring/parts/itemlist"; + } + + /** * QB callback handler which adds selected QbQuestion into question list. */ @SuppressWarnings("unchecked") @@ -390,7 +407,7 @@ SessionMap sessionMap = (SessionMap) request.getSession() .getAttribute(sessionMapID); SortedSet itemList = getItemList(sessionMap); - + //check whether this QB question is a duplicate for (ScratchieItem item : itemList) { if (qbQuestionUid.equals(item.getQbQuestion().getUid())) { @@ -417,7 +434,7 @@ request.setAttribute(ScratchieConstants.ATTR_SESSION_MAP_ID, sessionMapID); return "pages/authoring/parts/itemlist"; } - + /** * Shows "This question has already been added" error message in a browser. */ Index: lams_tool_scratchie/web/pages/authoring/basic.jsp =================================================================== diff -u -re8a7110708b15579af2c6b31ac52a6da427fef6d -rbb0f9854016a8e3380c17cbfed58cd6d02a8f54c --- lams_tool_scratchie/web/pages/authoring/basic.jsp (.../basic.jsp) (revision e8a7110708b15579af2c6b31ac52a6da427fef6d) +++ lams_tool_scratchie/web/pages/authoring/basic.jsp (.../basic.jsp) (revision bb0f9854016a8e3380c17cbfed58cd6d02a8f54c) @@ -81,6 +81,41 @@ function refreshThickbox(){ tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox } + + function importQTI(){ + window.open('questions/questionFile.jsp?limitType=mc&collectionChoice=true', + 'QuestionFile','width=500,height=240,scrollbars=yes'); + } + + // this method is called by QTI questionChoice.jsp + function saveQTI(formHTML, formName) { + var form = $($.parseHTML(formHTML)); + // first, save questions in the QB + $.ajax({ + type: "POST", + url: 'imsqti/saveQTI.do', + data: form.serializeArray(), + dataType: 'text', + // the response is a comma-delimited list of QB question UIDs, for example 4,5,65 + success: function(qbQuestionUids) { + $.ajax({ + type: "POST", + url: 'authoring/importQbQuestions.do', + data: { + // send QB question uids to MCQ authoring controller + 'qbQuestionUids' : qbQuestionUids, + 'sessionMapID' : '${sessionMapID}' + }, + dataType: 'html', + success: function(response) { + // question list gets refreshed + $(itemTargetDiv).html(response); + refreshThickbox(); + } + }); + } + }); + } Index: lams_tool_scratchie/web/pages/authoring/parts/itemlist.jsp =================================================================== diff -u -re8a7110708b15579af2c6b31ac52a6da427fef6d -rbb0f9854016a8e3380c17cbfed58cd6d02a8f54c --- lams_tool_scratchie/web/pages/authoring/parts/itemlist.jsp (.../itemlist.jsp) (revision e8a7110708b15579af2c6b31ac52a6da427fef6d) +++ lams_tool_scratchie/web/pages/authoring/parts/itemlist.jsp (.../itemlist.jsp) (revision bb0f9854016a8e3380c17cbfed58cd6d02a8f54c) @@ -27,6 +27,11 @@
+
+ + + +