Index: lams_common/src/java/org/lamsfoundation/lams/etherpad/util/EtherpadUtil.java =================================================================== diff -u -r024f71c24280149ce16489cd0bca12fa127b17c9 -r2e61eefa786c0411376091c504812a8931395186 --- lams_common/src/java/org/lamsfoundation/lams/etherpad/util/EtherpadUtil.java (.../EtherpadUtil.java) (revision 024f71c24280149ce16489cd0bca12fa127b17c9) +++ lams_common/src/java/org/lamsfoundation/lams/etherpad/util/EtherpadUtil.java (.../EtherpadUtil.java) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -15,8 +15,8 @@ * If Etherpad intial content is not well formed, Etherpad server throws an exception. */ public static String preparePadContent(String rawContent) { - return rawContent == null ? null - : "" + rawContent.trim().replaceAll("[\n\r\f]", "").replaceAll(" ", "") - + ""; + String cleanContent = rawContent == null ? "" + : rawContent.trim().replaceAll("[\n\r\f]", "").replaceAll(" ", ""); + return "" + cleanContent + ""; } } Index: lams_tool_scratchie/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r3dee98435d9284b0993e2927ba9e5afadf894782 -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 3dee98435d9284b0993e2927ba9e5afadf894782) +++ lams_tool_scratchie/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -266,6 +266,7 @@ label.show.vsa.answers =Show VSA answers from the following activity label.type.your.group.answer =Type your group answer label.button.submit =Submit +label.authoring.advanced.question.etherpad = Show a discussion Etherpad after each question +label.etherpad.discussion = Discussion - #======= End labels: Exported 260 labels for en AU ===== Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java =================================================================== diff -u -r1268ec552ee72a22db3a5df680d46de7db79e0c0 -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision 1268ec552ee72a22db3a5df680d46de7db79e0c0) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java (.../ScratchieConstants.java) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -40,7 +40,7 @@ public static final String ERROR = "error"; public static final String DEFINE_LATER = "definelater"; - + public static final String WAIT_FOR_LEADER_TIME_LIMIT = "waitForLeaderTimeLimit"; // for parameters' name @@ -87,6 +87,8 @@ public static final String ATTR_GROUP_USERS = "groupUsers"; + public static final String ATTR_ALL_GROUP_USERS = "allGroupUsers"; + public static final String ATTR_DELETED_ITEM_LIST = "deleteItemList"; public static final String ATTR_DELETED_OPTION_LIST = "deleteOptionList"; @@ -97,6 +99,8 @@ public static final String ATTR_IS_WAITING_FOR_LEADER_TO_SUBMIT_NOTEBOOK = "isWaitingForLeaderToSubmitNotebook"; + public static final String ATTR_IS_QUESTION_ETHERPAD_ENABLED = "isQuestionEtherpadEnabled"; + public static final String ATTR_WAITING_MESSAGE_KEY = "waitingMessageKey"; public static final String ATTR_LEARNERS = "learners"; @@ -124,7 +128,7 @@ public static final String ATTR_ITEM = "item"; public static final String ATTR_SCORE = "score"; - + public static final String ATTR_SCORE_PERCENTAGE = "scorePercentage"; public static final String ATTR_MAX_SCORE = "maxScore"; @@ -136,9 +140,9 @@ public static final String ATTR_REFLECTION_ON = "reflectOn"; public static final String ATTR_IS_BURNING_QUESTIONS_ENABLED = "isBurningQuestionsEnabled"; - + public static final String ATTR_IS_PRESET_MARKS_OVERWRITTEN = "isPresetMarksOverwritten"; - + public static final String ATTR_DEFAULT_PRESET_MARKS = "defaultPresetMarks"; public static final String ATTR_REFLECTION_INSTRUCTION = "reflectInstructions"; @@ -160,27 +164,27 @@ public static final String ATTR_GROUP_LEADER_USER_ID = "groupLeaderUserId"; public static final String ATTR_IS_USER_LEADER = "isUserLeader"; - + public static final String ATTR_IS_TIME_LIMIT_ENABLED = "isTimeLimitEnabled"; - + public static final String ATTR_IS_TIME_LIMIT_NOT_LAUNCHED = "isTimeLimitNotLaunched"; - + public static final String ATTR_SECONDS_LEFT = "secondsLeft"; public static final String ATTR_SUBMISSION_DEADLINE = "submissionDeadline"; public static final String ATTR_SUBMISSION_DEADLINE_DATESTRING = "submissionDateString"; public static final String ATTR_IS_SUBMISSION_DEADLINE_PASSED = "isSubmissionDeadlinePassed"; public static final String ATTR_OPTION_UIDS = "optionUids"; - + public static final String ATTR_ACTIVITIES_PROVIDING_CONFIDENCE_LEVELS = "activitiesProvidingConfidenceLevels"; - + public static final String ATTR_ACTIVITIES_PROVIDING_VSA_ANSWERS = "activitiesProvidingVsaAnswers"; public static final String LEARNER_MARK = "learner.mark"; public static final String ERROR_MSG_REQUIRED_FIELDS_MISSING = "error.required.fields.missing"; public static final String ERROR_MSG_ENTERED_MARKS_NOT_COMMA_SEPARATED_INTEGERS = "error.entered.marks.not.comma.separates"; - + public static final String ATTR_SHOW_RESULTS = "showResults"; } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20200413.sql =================================================================== diff -u --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20200413.sql (revision 0) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/dbupdates/patch20200413.sql (revision 2e61eefa786c0411376091c504812a8931395186) @@ -0,0 +1,15 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +-- Put all sql statements below here + +--LDEV-5002 Add question Etherpads + +ALTER TABLE tl_lascrt11_scratchie ADD COLUMN question_etherpad_enabled TINYINT(1) DEFAULT 0 AFTER burning_questions_enabled; + +-- Put all sql statements above here + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java =================================================================== diff -u -rac33d20fb7883183fe443062a74f163abc98f012 -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java (.../Scratchie.java) (revision ac33d20fb7883183fe443062a74f163abc98f012) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/model/Scratchie.java (.../Scratchie.java) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -91,6 +91,9 @@ @Column(name = "burning_questions_enabled") private boolean burningQuestionsEnabled; + @Column(name = "question_etherpad_enabled") + private boolean questionEtherpadEnabled; + @Column(name = "shuffle_items") private boolean shuffleItems; @@ -337,6 +340,14 @@ this.burningQuestionsEnabled = burningQuestionsEnabled; } + public boolean isQuestionEtherpadEnabled() { + return questionEtherpadEnabled; + } + + public void setQuestionEtherpadEnabled(boolean questionEtherpadEnabled) { + this.questionEtherpadEnabled = questionEtherpadEnabled; + } + public boolean isShuffleItems() { return shuffleItems; } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java =================================================================== diff -u -r3a4e0fbc4b00ff567f1dc7561cf9596fedab7c8e -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 3a4e0fbc4b00ff567f1dc7561cf9596fedab7c8e) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -45,6 +45,7 @@ import org.lamsfoundation.lams.tool.scratchie.model.ScratchieSession; import org.lamsfoundation.lams.tool.scratchie.model.ScratchieUser; import org.lamsfoundation.lams.tool.service.ICommonToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.excel.ExcelSheet; import org.quartz.SchedulerException; @@ -308,9 +309,8 @@ ScratchieItem getScratchieItemByUid(Long itemUid); - /** - * @param contentId - */ + Collection getAllGroupUsers(Long toolSessionId); + List getMonitoringSummary(Long contentId); List getGroupSummariesByItem(Long contentId, Long itemUid); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -r3a4e0fbc4b00ff567f1dc7561cf9596fedab7c8e -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 3a4e0fbc4b00ff567f1dc7561cf9596fedab7c8e) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -694,6 +694,10 @@ scratchieUserDao.saveObject(user); } + public Collection getAllGroupUsers(Long toolSessionId) { + return toolService.getToolSession(toolSessionId).getLearners(); + } + @Override /* * If isIncludeOnlyLeaders then include the portrait ids needed for monitoring. If false then it @@ -707,7 +711,7 @@ Long sessionId = session.getSessionId(); - Collection groupUsers = toolService.getToolSession(sessionId).getLearners(); + Collection groupUsers = getAllGroupUsers(sessionId); // one new summary for one session. GroupSummary groupSummary = new GroupSummary(session); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/LearningController.java =================================================================== diff -u -r1268ec552ee72a22db3a5df680d46de7db79e0c0 -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/LearningController.java (.../LearningController.java) (revision 1268ec552ee72a22db3a5df680d46de7db79e0c0) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/controller/LearningController.java (.../LearningController.java) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -27,13 +27,15 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Random; import java.util.Set; import java.util.TimeZone; +import java.util.stream.Collectors; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -67,6 +69,8 @@ import org.lamsfoundation.lams.tool.scratchie.web.form.ReflectionForm; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; @@ -298,6 +302,19 @@ // make non-leaders wait for notebook to be submitted, if required sessionMap.put(ScratchieConstants.ATTR_IS_WAITING_FOR_LEADER_TO_SUBMIT_NOTEBOOK, isWaitingForLeaderToSubmitNotebook); + + boolean questionEtherpadEnabled = scratchie.isQuestionEtherpadEnabled() + && StringUtils.isNotBlank(Configuration.get(ConfigurationKeys.ETHERPAD_API_KEY)); + request.setAttribute(ScratchieConstants.ATTR_IS_QUESTION_ETHERPAD_ENABLED, questionEtherpadEnabled); + if (questionEtherpadEnabled) { + // get all users from the group, even if they did not reach the Scratchie yet + // order them by first and last name + Collection allGroupUsers = scratchieService.getAllGroupUsers(toolSessionID).stream() + .sorted(Comparator.comparing(u -> u.getFirstName() + u.getLastName())) + .collect(Collectors.toList()); + request.setAttribute(ScratchieConstants.ATTR_ALL_GROUP_USERS, allGroupUsers); + } + return "pages/learning/learning"; } } Index: lams_tool_scratchie/web/WEB-INF/tags/Etherpad.tag =================================================================== diff -u -r024f71c24280149ce16489cd0bca12fa127b17c9 -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/web/WEB-INF/tags/Etherpad.tag (.../Etherpad.tag) (revision 024f71c24280149ce16489cd0bca12fa127b17c9) +++ lams_tool_scratchie/web/WEB-INF/tags/Etherpad.tag (.../Etherpad.tag) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -13,6 +13,7 @@ <%@ attribute name="groupId" required="true" rtexprvalue="true" %> <%@ attribute name="showControls" required="false" rtexprvalue="true" %> <%@ attribute name="showChat" required="false" rtexprvalue="true" %> +<%@ attribute name="height" required="false" rtexprvalue="true" %> <%@ tag import="org.lamsfoundation.lams.util.Configuration"%> <%@ tag import="org.lamsfoundation.lams.util.ConfigurationKeys"%> @@ -58,9 +59,9 @@ 'padId': padId, 'host':'${etherpadServerUrl}', 'lang':'${fn:toLowerCase(localeLanguage)}', - 'showControls':'${empty showControls ? false : showControls}', - 'showChat':'${empty showChat ? false : showChat}', - 'height':'' + ($(window).height() - 200) + 'showControls':${empty showControls ? false : showControls}, + 'showChat': ${empty showChat ? false : showChat}, + 'height': ${empty height ? '+$(window).height() - 200' : height} ,'userName':' ' }); } @@ -76,6 +77,6 @@ <%-- If content was provided, put it into a hidden div so new lines will not break JavaScript --%> - + ${content} \ No newline at end of file Index: lams_tool_scratchie/web/includes/css/scratchie-learning.scss =================================================================== diff -u -r1268ec552ee72a22db3a5df680d46de7db79e0c0 -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/web/includes/css/scratchie-learning.scss (.../scratchie-learning.scss) (revision 1268ec552ee72a22db3a5df680d46de7db79e0c0) +++ lams_tool_scratchie/web/includes/css/scratchie-learning.scss (.../scratchie-learning.scss) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -89,4 +89,8 @@ .item-score { font-weight: bold; +} + +.question-etherpad .panel-body { + padding: 0; } \ No newline at end of file Index: lams_tool_scratchie/web/pages/authoring/advance.jsp =================================================================== diff -u -re8a7110708b15579af2c6b31ac52a6da427fef6d -r2e61eefa786c0411376091c504812a8931395186 --- lams_tool_scratchie/web/pages/authoring/advance.jsp (.../advance.jsp) (revision e8a7110708b15579af2c6b31ac52a6da427fef6d) +++ lams_tool_scratchie/web/pages/authoring/advance.jsp (.../advance.jsp) (revision 2e61eefa786c0411376091c504812a8931395186) @@ -50,6 +50,20 @@
+ +
+ +
+ +
+ +