Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java,v diff -u -r1.52 -r1.53 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java 27 Mar 2009 05:33:06 -0000 1.52 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java 14 Apr 2009 05:33:37 -0000 1.53 @@ -30,6 +30,7 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; +import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -335,9 +336,9 @@ */ private ActionForward newInstruction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - int count = NumberUtils.stringToInt(request.getParameter(AuthoringAction.INSTRUCTION_ITEM_COUNT), 0); - List instructionList = new ArrayList(++count); - for (int idx = 0; idx < count; idx++) { + int numberOfInstructions = getNumberOfInstructionsInRequest(request); + List instructionList = new ArrayList(++numberOfInstructions); + for (int idx = 0; idx < numberOfInstructions; idx++) { String item = request.getParameter(AuthoringAction.INSTRUCTION_ITEM_DESC_PREFIX + idx); if (item == null) { instructionList.add(""); @@ -360,10 +361,10 @@ */ private ActionForward removeInstruction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - int count = NumberUtils.stringToInt(request.getParameter(AuthoringAction.INSTRUCTION_ITEM_COUNT), 0); + int numberOfInstructions = getNumberOfInstructionsInRequest(request); int removeIdx = NumberUtils.stringToInt(request.getParameter("removeIdx"), -1); - List instructionList = new ArrayList(count - 1); - for (int idx = 0; idx < count; idx++) { + List instructionList = new ArrayList(numberOfInstructions - 1); + for (int idx = 0; idx < numberOfInstructions; idx++) { String item = request.getParameter(AuthoringAction.INSTRUCTION_ITEM_DESC_PREFIX + idx); if (idx == removeIdx) { continue; @@ -931,6 +932,22 @@ return instructionList; } + + /** + * Get number of instruction items in the HttpRequest + * + * @param request the HttpServletRequest + * @return numberOfInstruction the number of instructions in the request + */ + private int getNumberOfInstructionsInRequest(HttpServletRequest request) { + int numberOfInstructions = 0; + Enumeration e = request.getParameterNames(); + while (e.hasMoreElements()){ + if (e.nextElement().toString().indexOf(AuthoringAction.INSTRUCTION_ITEM_DESC_PREFIX) != -1) + numberOfInstructions++; + } + return numberOfInstructions; + } /** * Get back relative ActionForward from request. Index: lams_tool_larsrc/web/includes/javascript/rsrccommon.js =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/includes/javascript/rsrccommon.js,v diff -u -r1.2 -r1.3 --- lams_tool_larsrc/web/includes/javascript/rsrccommon.js 1 Oct 2006 22:34:10 -0000 1.2 +++ lams_tool_larsrc/web/includes/javascript/rsrccommon.js 14 Apr 2009 05:33:37 -0000 1.3 @@ -1,10 +1,10 @@ function showBusy(targetDiv){ if($(targetDiv+"_Busy") != null){ - Element.show(targetDiv+"_Busy"); + document.getElementById(targetDiv+"_Busy").style.display = ''; } } function hideBusy(targetDiv){ if($(targetDiv+"_Busy") != null){ - Element.hide(targetDiv+"_Busy"); + document.getElementById(targetDiv+"_Busy").style.display = 'none'; } } \ No newline at end of file Index: lams_tool_larsrc/web/includes/javascript/rsrcresourceitem.js =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/includes/javascript/rsrcresourceitem.js,v diff -u -r1.7 -r1.8 --- lams_tool_larsrc/web/includes/javascript/rsrcresourceitem.js 8 Apr 2009 06:45:32 -0000 1.7 +++ lams_tool_larsrc/web/includes/javascript/rsrcresourceitem.js 14 Apr 2009 05:33:37 -0000 1.8 @@ -3,36 +3,17 @@ */ var instructionTargetDiv = "instructionArea"; var itemAttachmentTargetDiv = "itemAttachmentArea"; -// Please set these 2 variables in JSP file for using tag reason: -// var removeInstructionUrl = ""; -// var addInstructionUrl = ""; + var singleInstructionHeight = 40; + function removeInstruction(idx){ - //var id = "instructionItem" + idx; - //Element.remove(id); - var url= removeInstructionUrl; - var reqIDVar = new Date(); - - var param = $("instructionForm").serialize(true); // Form.serialize('instructionForm'); - // param('instructionItemDesc' + idx) = - param.removeIdx = idx; - param.reqID = reqIDVar.getTime(); - + var param = $("#instructionForm").serialize() + "&removeIdx="+idx; removeInstructionLoading(); - var myAjax = new Ajax.Updater( - instructionTargetDiv, - url, - { - method:'post', - parameters:param, - onComplete:removeInstructionComplete, - evalScripts:true, - contentType: 'application/x-www-form-urlencoded; charset=UTF-8' - } - ); + $.get(removeInstructionUrl, param, function(xml) { + removeInstructionComplete(); + document.getElementById("instructionArea").innerHTML = xml; + }); } function removeItemAttachment(idx){ - //var id = "instructionItem" + idx; - //Element.remove(id); var url= removeItemAttachmentUrl; var reqIDVar = new Date(); var param = "reqID="+reqIDVar.getTime(); @@ -49,21 +30,19 @@ ); } function addInstruction(){ - var url= addInstructionUrl; - var reqIDVar = new Date(); - var param = Form.serialize("instructionForm")+"&reqID="+reqIDVar.getTime(); + var param = $("#instructionForm").serialize(); addInstructionLoading(); - var myAjax = new Ajax.Updater( - instructionTargetDiv, - url, - { - method:'post', - parameters:param, - onComplete:addInstructionComplete, - evalScripts:true - } - ); + $.get(addInstructionUrl, param, function(xml) { + addInstructionComplete(); + document.getElementById("instructionArea").innerHTML = xml; + }); + return false; + } + function adjustInstructionsDisplayAreaHeight(adjustAmount){ + var obj = window.top.document.getElementById('reourceInputArea'); + obj.style.height=obj.contentWindow.document.body.scrollHeight+adjustAmount+'px'; + } function upItem(itemIdx){ if(itemIdx == 0) return; @@ -88,6 +67,7 @@ } function removeInstructionComplete(){ hideBusy(instructionTargetDiv); + adjustInstructionsDisplayAreaHeight(-singleInstructionHeight); } function removeItemAttachmentLoading(){ showBusy(itemAttachmentTargetDiv); @@ -100,13 +80,11 @@ } function addInstructionComplete(){ hideBusy(instructionTargetDiv); - + adjustInstructionsDisplayAreaHeight(singleInstructionHeight); } function submitResourceItem(){ - //$("instructionList").value = Form.serialize("instructionForm"); document.getElementById("instructionList").value = $("#instructionForm").serialize(); - //$("#resourceItemForm").value = $("#instructionForm").serialize(); $("#resourceItemForm").submit(); // after submit, it direct to itemlist.jsp, // then refresh "basic tab" resourcelist and close this window. Index: lams_tool_larsrc/web/pages/authoring/parts/instructions.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/pages/authoring/parts/instructions.jsp,v diff -u -r1.10 -r1.11 --- lams_tool_larsrc/web/pages/authoring/parts/instructions.jsp 20 Oct 2006 09:26:35 -0000 1.10 +++ lams_tool_larsrc/web/pages/authoring/parts/instructions.jsp 14 Apr 2009 05:33:37 -0000 1.11 @@ -75,7 +75,7 @@ <%-- This script will adjust resource item input area height according to the new instruction item amount. --%>